add initial support for the crisarchitecture used on foxboards to openwrt
SVN-Revision: 7439
This commit is contained in:
		
							
								
								
									
										44
									
								
								target/linux/etrax-2.6/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								target/linux/etrax-2.6/Makefile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,44 @@ | |||||||
|  | #  | ||||||
|  | # Copyright (C) 2006 OpenWrt.org | ||||||
|  | # | ||||||
|  | # This is free software, licensed under the GNU General Public License v2. | ||||||
|  | # See /LICENSE for more information. | ||||||
|  | # | ||||||
|  | include $(TOPDIR)/rules.mk | ||||||
|  |  | ||||||
|  | ARCH:=cris | ||||||
|  | BOARD:=etrax | ||||||
|  | BOARDNAME:=FOXBOARD (ETRAX 100LX) | ||||||
|  | FEATURES:=squashfs jffs2 | ||||||
|  | LINUX_VERSION:=2.6.19.2 | ||||||
|  |  | ||||||
|  | include $(INCLUDE_DIR)/kernel-build.mk | ||||||
|  |  | ||||||
|  | define Target/Description | ||||||
|  | 	Build fimware images for the FOXBOARD made by acmesystems.it | ||||||
|  | endef | ||||||
|  |  | ||||||
|  | define Kernel/Prepare/Fox | ||||||
|  | 	bzcat $(DL_DIR)/$(LINUX_SOURCE) | tar -C $(KERNEL_BUILD_DIR) $(TAR_OPTIONS) | ||||||
|  | 	if [ -d ./files ]; then $(CP) ./files/* $(LINUX_DIR)/; fi | ||||||
|  | 	if [ -d ./patches/generic_2.6 ]; then $(PATCH) $(LINUX_DIR) ./patches/generic_2.6; fi | ||||||
|  | 	if [ -d ./patches/cris ]; then $(PATCH) $(LINUX_DIR) ./patches/cris; fi | ||||||
|  | 	ln -sf $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION)/include/asm-cris/arch-v10 $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION)/include/asm-cris/arch | ||||||
|  | 	ln -sf $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION)/arch/cris/arch-v10 $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION)/arch/cris/arch | ||||||
|  | endef | ||||||
|  |  | ||||||
|  | define Kernel/Prepare | ||||||
|  | 	$(call Kernel/Prepare/Fox) | ||||||
|  | endef | ||||||
|  |  | ||||||
|  | include $(INCLUDE_DIR)/prereq.mk | ||||||
|  |  | ||||||
|  | $(eval $(call RequireCommand,/usr/local/cris/gcc-cris, \ | ||||||
|  | 	Please install the binary cris toolchain. \ | ||||||
|  | )) | ||||||
|  |  | ||||||
|  | #include the profiles | ||||||
|  | -include profiles/*.mk | ||||||
|  |  | ||||||
|  | KERNELNAME:="zImage" | ||||||
|  | $(eval $(call BuildKernel)) | ||||||
							
								
								
									
										5
									
								
								target/linux/etrax-2.6/base-files/default/etc/inittab
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								target/linux/etrax-2.6/base-files/default/etc/inittab
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | ::sysinit:/etc/init.d/rcS S boot | ||||||
|  | ::shutdown:/etc/init.d/rcS K stop | ||||||
|  | console::askfirst:/bin/ash --login | ||||||
|  | tts/0::askfirst:/bin/ash --login | ||||||
|  | tty1::askfirst:/bin/ash --login | ||||||
							
								
								
									
										214
									
								
								target/linux/etrax-2.6/config/default
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										214
									
								
								target/linux/etrax-2.6/config/default
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,214 @@ | |||||||
|  | CONFIG_BASE_SMALL=0 | ||||||
|  | # CONFIG_BLK_DEV_INITRD is not set | ||||||
|  | CONFIG_CRIS=y | ||||||
|  | # CONFIG_ETRAX100LX is not set | ||||||
|  | CONFIG_ETRAX100LX_V2=y | ||||||
|  | # CONFIG_ETRAXFS is not set | ||||||
|  | # CONFIG_ETRAXFS_SIM is not set | ||||||
|  | CONFIG_ETRAX_ARCH_V10=y | ||||||
|  | # CONFIG_ETRAX_ARCH_V32 is not set | ||||||
|  | CONFIG_ETRAX_AXISFLASHMAP=y | ||||||
|  | # CONFIG_ETRAX_AXISFLASHMAP_MTD0WHOLE is not set | ||||||
|  | CONFIG_ETRAX_CMDLINE="root=/dev/mtdblock1 rootfstype=squashfs,jffs2 init=/etc/preinit noinitrd console=ttyS0,115200" | ||||||
|  | # CONFIG_ETRAX_CSP0_LEDS is not set | ||||||
|  | # CONFIG_ETRAX_DEBUG_PORT0 is not set | ||||||
|  | # CONFIG_ETRAX_DEBUG_PORT1 is not set | ||||||
|  | # CONFIG_ETRAX_DEBUG_PORT2 is not set | ||||||
|  | # CONFIG_ETRAX_DEBUG_PORT3 is not set | ||||||
|  | CONFIG_ETRAX_DEBUG_PORT_NULL=y | ||||||
|  | CONFIG_ETRAX_DEF_R_BUS_CONFIG=0x4 | ||||||
|  | # CONFIG_ETRAX_DEF_R_PORT_G_DIR is not set | ||||||
|  | CONFIG_ETRAX_DEF_R_PORT_PA_DATA=0xf0 | ||||||
|  | CONFIG_ETRAX_DEF_R_PORT_PA_DIR=0x1c | ||||||
|  | CONFIG_ETRAX_DEF_R_PORT_PB_CONFIG=0x00 | ||||||
|  | CONFIG_ETRAX_DEF_R_PORT_PB_DATA=0x03 | ||||||
|  | CONFIG_ETRAX_DEF_R_PORT_PB_DIR=0xce | ||||||
|  | CONFIG_ETRAX_DEF_R_SDRAM_CONFIG=0x09603737 | ||||||
|  | CONFIG_ETRAX_DEF_R_SDRAM_TIMING=0x80008002 | ||||||
|  | CONFIG_ETRAX_DEF_R_WAITSTATES=0x95f8 | ||||||
|  | CONFIG_ETRAX_DRAM_SIZE=32 | ||||||
|  | CONFIG_ETRAX_DRAM_VIRTUAL_BASE=c0000000 | ||||||
|  | CONFIG_ETRAX_DS1302=y | ||||||
|  | CONFIG_ETRAX_DS1302_RSTBIT=2 | ||||||
|  | CONFIG_ETRAX_DS1302_RST_ON_GENERIC_PORT=y | ||||||
|  | CONFIG_ETRAX_DS1302_SCLBIT=1 | ||||||
|  | CONFIG_ETRAX_DS1302_SDABIT=0 | ||||||
|  | CONFIG_ETRAX_DS1302_TRICKLE_CHARGE=0 | ||||||
|  | CONFIG_ETRAX_ETHERNET=y | ||||||
|  | CONFIG_ETRAX_FAST_TIMER=y | ||||||
|  | CONFIG_ETRAX_FLASH1_SIZE=0 | ||||||
|  | CONFIG_ETRAX_FLASH_BUSWIDTH=2 | ||||||
|  | CONFIG_ETRAX_GPIO=y | ||||||
|  | CONFIG_ETRAX_I2C=y | ||||||
|  | CONFIG_ETRAX_I2C_CLK_PORT=1 | ||||||
|  | CONFIG_ETRAX_I2C_DATA_PORT=0 | ||||||
|  | # CONFIG_ETRAX_I2C_EEPROM is not set | ||||||
|  | CONFIG_ETRAX_I2C_USES_PB_NOT_PB_I2C=y | ||||||
|  | # CONFIG_ETRAX_IDE is not set | ||||||
|  | CONFIG_ETRAX_LED1G=2 | ||||||
|  | CONFIG_ETRAX_LED1R=2 | ||||||
|  | CONFIG_ETRAX_LED2G=3 | ||||||
|  | CONFIG_ETRAX_LED2R=3 | ||||||
|  | CONFIG_ETRAX_LED3G=2 | ||||||
|  | CONFIG_ETRAX_LED3R=2 | ||||||
|  | CONFIG_ETRAX_NANDFLASH_BUSWIDTH=1 | ||||||
|  | CONFIG_ETRAX_NETWORK_LED_ON_WHEN_ACTIVITY=y | ||||||
|  | # CONFIG_ETRAX_NETWORK_LED_ON_WHEN_LINK is not set | ||||||
|  | # CONFIG_ETRAX_NO_LEDS is not set | ||||||
|  | # CONFIG_ETRAX_NO_PHY is not set | ||||||
|  | CONFIG_ETRAX_PA_CHANGEABLE_BITS=0xFF | ||||||
|  | CONFIG_ETRAX_PA_CHANGEABLE_DIR=0xFF | ||||||
|  | CONFIG_ETRAX_PA_LEDS=y | ||||||
|  | CONFIG_ETRAX_PB_CHANGEABLE_BITS=0xFF | ||||||
|  | CONFIG_ETRAX_PB_CHANGEABLE_DIR=0xFF | ||||||
|  | # CONFIG_ETRAX_PB_LEDS is not set | ||||||
|  | # CONFIG_ETRAX_PCF8563 is not set | ||||||
|  | CONFIG_ETRAX_PTABLE_SECTOR=0 | ||||||
|  | CONFIG_ETRAX_RESCUE_SER0=y | ||||||
|  | # CONFIG_ETRAX_RESCUE_SER1 is not set | ||||||
|  | # CONFIG_ETRAX_RESCUE_SER2 is not set | ||||||
|  | # CONFIG_ETRAX_RESCUE_SER3 is not set | ||||||
|  | # CONFIG_ETRAX_RS485 is not set | ||||||
|  | CONFIG_ETRAX_RTC=y | ||||||
|  | CONFIG_ETRAX_SDRAM=y | ||||||
|  | CONFIG_ETRAX_SER0_CD_ON_PA_BIT=-1 | ||||||
|  | CONFIG_ETRAX_SER0_CD_ON_PB_BIT=-1 | ||||||
|  | CONFIG_ETRAX_SER0_DSR_ON_PA_BIT=-1 | ||||||
|  | CONFIG_ETRAX_SER0_DSR_ON_PB_BIT=-1 | ||||||
|  | CONFIG_ETRAX_SER0_DTR_ON_PA_BIT=-1 | ||||||
|  | CONFIG_ETRAX_SER0_DTR_ON_PB_BIT=-1 | ||||||
|  | # CONFIG_ETRAX_SER0_DTR_RI_DSR_CD_MIXED is not set | ||||||
|  | CONFIG_ETRAX_SER0_DTR_RI_DSR_CD_ON_NONE=y | ||||||
|  | # CONFIG_ETRAX_SER0_DTR_RI_DSR_CD_ON_PA is not set | ||||||
|  | # CONFIG_ETRAX_SER0_DTR_RI_DSR_CD_ON_PB is not set | ||||||
|  | CONFIG_ETRAX_SER0_RI_ON_PA_BIT=-1 | ||||||
|  | CONFIG_ETRAX_SER0_RI_ON_PB_BIT=-1 | ||||||
|  | CONFIG_ETRAX_SER2_CD_ON_PA_BIT=7 | ||||||
|  | CONFIG_ETRAX_SER2_CD_ON_PB_BIT=-1 | ||||||
|  | CONFIG_ETRAX_SER2_DSR_ON_PA_BIT=6 | ||||||
|  | CONFIG_ETRAX_SER2_DSR_ON_PB_BIT=-1 | ||||||
|  | CONFIG_ETRAX_SER2_DTR_ON_PA_BIT=4 | ||||||
|  | CONFIG_ETRAX_SER2_DTR_ON_PB_BIT=-1 | ||||||
|  | # CONFIG_ETRAX_SER2_DTR_RI_DSR_CD_MIXED is not set | ||||||
|  | # CONFIG_ETRAX_SER2_DTR_RI_DSR_CD_ON_NONE is not set | ||||||
|  | CONFIG_ETRAX_SER2_DTR_RI_DSR_CD_ON_PA=y | ||||||
|  | # CONFIG_ETRAX_SER2_DTR_RI_DSR_CD_ON_PB is not set | ||||||
|  | CONFIG_ETRAX_SER2_RI_ON_PA_BIT=5 | ||||||
|  | CONFIG_ETRAX_SER2_RI_ON_PB_BIT=-1 | ||||||
|  | CONFIG_ETRAX_SER3_CD_ON_PA_BIT=-1 | ||||||
|  | CONFIG_ETRAX_SER3_CD_ON_PB_BIT=-1 | ||||||
|  | CONFIG_ETRAX_SER3_DSR_ON_PA_BIT=-1 | ||||||
|  | CONFIG_ETRAX_SER3_DSR_ON_PB_BIT=-1 | ||||||
|  | CONFIG_ETRAX_SER3_DTR_ON_PA_BIT=-1 | ||||||
|  | CONFIG_ETRAX_SER3_DTR_ON_PB_BIT=-1 | ||||||
|  | # CONFIG_ETRAX_SER3_DTR_RI_DSR_CD_MIXED is not set | ||||||
|  | CONFIG_ETRAX_SER3_DTR_RI_DSR_CD_ON_NONE=y | ||||||
|  | # CONFIG_ETRAX_SER3_DTR_RI_DSR_CD_ON_PA is not set | ||||||
|  | # CONFIG_ETRAX_SER3_DTR_RI_DSR_CD_ON_PB is not set | ||||||
|  | CONFIG_ETRAX_SER3_RI_ON_PA_BIT=-1 | ||||||
|  | CONFIG_ETRAX_SER3_RI_ON_PB_BIT=-1 | ||||||
|  | CONFIG_ETRAX_SERIAL=y | ||||||
|  | # CONFIG_ETRAX_SERIAL_FAST_TIMER is not set | ||||||
|  | # CONFIG_ETRAX_SERIAL_FLUSH_DMA_FAST is not set | ||||||
|  | CONFIG_ETRAX_SERIAL_PORT0=y | ||||||
|  | # CONFIG_ETRAX_SERIAL_PORT0_DMA6_OUT is not set | ||||||
|  | # CONFIG_ETRAX_SERIAL_PORT0_DMA7_IN is not set | ||||||
|  | CONFIG_ETRAX_SERIAL_PORT0_NO_DMA_IN=y | ||||||
|  | CONFIG_ETRAX_SERIAL_PORT0_NO_DMA_OUT=y | ||||||
|  | # CONFIG_ETRAX_SERIAL_PORT1 is not set | ||||||
|  | CONFIG_ETRAX_SERIAL_PORT2=y | ||||||
|  | CONFIG_ETRAX_SERIAL_PORT2_DMA2_OUT=y | ||||||
|  | CONFIG_ETRAX_SERIAL_PORT2_DMA3_IN=y | ||||||
|  | # CONFIG_ETRAX_SERIAL_PORT2_NO_DMA_IN is not set | ||||||
|  | # CONFIG_ETRAX_SERIAL_PORT2_NO_DMA_OUT is not set | ||||||
|  | CONFIG_ETRAX_SERIAL_PORT3=y | ||||||
|  | CONFIG_ETRAX_SERIAL_PORT3_DMA4_OUT=y | ||||||
|  | CONFIG_ETRAX_SERIAL_PORT3_DMA5_IN=y | ||||||
|  | # CONFIG_ETRAX_SERIAL_PORT3_NO_DMA_IN is not set | ||||||
|  | # CONFIG_ETRAX_SERIAL_PORT3_NO_DMA_OUT is not set | ||||||
|  | CONFIG_ETRAX_SERIAL_RX_TIMEOUT_TICKS=5 | ||||||
|  | # CONFIG_ETRAX_SOFT_SHUTDOWN is not set | ||||||
|  | # CONFIG_ETRAX_SYNCHRONOUS_SERIAL is not set | ||||||
|  | CONFIG_ETRAX_SYSFS_NODES=y | ||||||
|  | CONFIG_ETRAX_USB_HOST=y | ||||||
|  | CONFIG_ETRAX_USB_HOST_PORT1=y | ||||||
|  | CONFIG_ETRAX_USB_HOST_PORT2=y | ||||||
|  | # CONFIG_ETRAX_WATCHDOG is not set | ||||||
|  | CONFIG_FS_POSIX_ACL=y | ||||||
|  | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||||||
|  | CONFIG_GENERIC_IOMAP=y | ||||||
|  | # CONFIG_GEN_RTC is not set | ||||||
|  | # CONFIG_HW_RANDOM is not set | ||||||
|  | # CONFIG_IDE is not set | ||||||
|  | CONFIG_INITRAMFS_SOURCE="" | ||||||
|  | CONFIG_IRQ_PER_CPU=y | ||||||
|  | CONFIG_JFFS2_FS_DEBUG=0 | ||||||
|  | CONFIG_MTD=y | ||||||
|  | CONFIG_MTDRAM_ABS_POS=0x0 | ||||||
|  | CONFIG_MTDRAM_ERASE_SIZE=128 | ||||||
|  | CONFIG_MTDRAM_TOTAL_SIZE=0 | ||||||
|  | # CONFIG_MTD_ABSENT is not set | ||||||
|  | CONFIG_MTD_BLOCK=y | ||||||
|  | # CONFIG_MTD_BLOCK2MTD is not set | ||||||
|  | CONFIG_MTD_CFI=y | ||||||
|  | CONFIG_MTD_CFI_ADV_OPTIONS=y | ||||||
|  | CONFIG_MTD_CFI_AMDSTD=y | ||||||
|  | # CONFIG_MTD_CFI_BE_BYTE_SWAP is not set | ||||||
|  | # CONFIG_MTD_CFI_GEOMETRY 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_LE_BYTE_SWAP is not set | ||||||
|  | CONFIG_MTD_CFI_NOSWAP=y | ||||||
|  | # CONFIG_MTD_CFI_STAA is not set | ||||||
|  | CONFIG_MTD_CFI_UTIL=y | ||||||
|  | CONFIG_MTD_CHAR=y | ||||||
|  | # CONFIG_MTD_CMDLINE_PARTS is not set | ||||||
|  | CONFIG_MTD_COMPLEX_MAPPINGS=y | ||||||
|  | CONFIG_MTD_CONCAT=y | ||||||
|  | # CONFIG_MTD_DEBUG is not set | ||||||
|  | # CONFIG_MTD_DOC2000 is not set | ||||||
|  | # CONFIG_MTD_DOC2001 is not set | ||||||
|  | # CONFIG_MTD_DOC2001PLUS is not set | ||||||
|  | CONFIG_MTD_GEN_PROBE=y | ||||||
|  | CONFIG_MTD_JEDECPROBE=y | ||||||
|  | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||||||
|  | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||||||
|  | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||||||
|  | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||||||
|  | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||||||
|  | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||||||
|  | CONFIG_MTD_MTDRAM=y | ||||||
|  | # CONFIG_MTD_OBSOLETE_CHIPS is not set | ||||||
|  | # CONFIG_MTD_ONENAND is not set | ||||||
|  | # CONFIG_MTD_OTP is not set | ||||||
|  | CONFIG_MTD_PARTITIONS=y | ||||||
|  | # CONFIG_MTD_PHRAM is not set | ||||||
|  | # CONFIG_MTD_PHYSMAP is not set | ||||||
|  | # CONFIG_MTD_PLATRAM is not set | ||||||
|  | # CONFIG_MTD_RAM is not set | ||||||
|  | # CONFIG_MTD_REDBOOT_PARTS is not set | ||||||
|  | # CONFIG_MTD_ROM is not set | ||||||
|  | # CONFIG_MTD_SLRAM is not set | ||||||
|  | # CONFIG_OOM_REBOOT is not set | ||||||
|  | # CONFIG_OVERRIDE_SCHED_STARVATION_LIMIT is not set | ||||||
|  | # CONFIG_RTC is not set | ||||||
|  | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||||||
|  | # CONFIG_SERIAL_8250 is not set | ||||||
|  | # CONFIG_SMP is not set | ||||||
|  | # CONFIG_SOFT_WATCHDOG is not set | ||||||
|  | # CONFIG_SPARSEMEM_STATIC is not set | ||||||
|  | # CONFIG_SVINTO_SIM is not set | ||||||
|  | # CONFIG_SYSTEM_PROFILER is not set | ||||||
|  | CONFIG_UID16=y | ||||||
|  | # CONFIG_UNUSED_SYMBOLS is not set | ||||||
|  | # CONFIG_UNWIND_INFO is not set | ||||||
|  | CONFIG_USB=y | ||||||
|  | # CONFIG_USBPCWATCHDOG is not set | ||||||
|  | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||||||
|  | # CONFIG_USB_ARCH_HAS_HCD is not set | ||||||
|  | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||||||
|  | # CONFIG_USB_SERIAL_IR is not set | ||||||
|  | # CONFIG_BLK_DEV_INITRD is not set | ||||||
							
								
								
									
										262
									
								
								target/linux/etrax-2.6/files/drivers/spi/spi_crisv32_gpio.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										262
									
								
								target/linux/etrax-2.6/files/drivers/spi/spi_crisv32_gpio.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,262 @@ | |||||||
|  | /* | ||||||
|  |  * Simple bitbanged-GPIO SPI driver for ETRAX FS et al. | ||||||
|  |  * | ||||||
|  |  * Copyright (c) 2007 Axis Communications AB | ||||||
|  |  * | ||||||
|  |  * Author: Hans-Peter Nilsson, inspired by earlier work by | ||||||
|  |  * Andre Spanberg but mostly by copying large parts of | ||||||
|  |  * spi_s3c24xx_gpio.c, hence also: | ||||||
|  |  * Copyright (c) 2006 Ben Dooks | ||||||
|  |  * Copyright (c) 2006 Simtec Electronics | ||||||
|  |  * | ||||||
|  |  * 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/types.h> | ||||||
|  | #include <linux/device.h> | ||||||
|  | #include <linux/spi/spi.h> | ||||||
|  | #include <linux/spi/spi_bitbang.h> | ||||||
|  | #include <linux/delay.h> | ||||||
|  | #include <linux/platform_device.h> | ||||||
|  | #include <asm/io.h> | ||||||
|  | #include <asm/arch/board.h> | ||||||
|  |  | ||||||
|  | /* Our main driver state.  */ | ||||||
|  |  | ||||||
|  | struct crisv32_spi_hw_info { | ||||||
|  | 	struct crisv32_iopin sclk; | ||||||
|  | 	struct crisv32_iopin mosi; | ||||||
|  | 	struct crisv32_iopin miso; | ||||||
|  | 	struct crisv32_iopin cs; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * The driver state hides behind the spi_bitbang state.  We're | ||||||
|  |  * responsible for allocating that, so we can get a little something | ||||||
|  |  * for ourselves. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | struct crisv32_spi_gpio_devdata { | ||||||
|  | 	struct spi_bitbang bitbang; | ||||||
|  | 	struct crisv32_spi_hw_info pins; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | /* Helper function getting the driver state from a spi_device.  */ | ||||||
|  |  | ||||||
|  | static inline struct crisv32_spi_hw_info *spidev_to_hw(struct spi_device *spi) | ||||||
|  | { | ||||||
|  | 	struct crisv32_spi_gpio_devdata *dd = spi_master_get_devdata(spi->master); | ||||||
|  | 	return &dd->pins; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* The SPI-bitbang functions: see spi_bitbang.h at EXPAND_BITBANG_TXRX.  */ | ||||||
|  |  | ||||||
|  | static inline void setsck(struct spi_device *spi, int is_on) | ||||||
|  | { | ||||||
|  | 	crisv32_io_set(&spidev_to_hw(spi)->sclk, is_on != 0); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | static inline void setmosi(struct spi_device *spi, int is_on) | ||||||
|  | { | ||||||
|  | 	crisv32_io_set(&spidev_to_hw(spi)->mosi, is_on != 0); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | static inline u32 getmiso(struct spi_device *spi) | ||||||
|  | { | ||||||
|  | 	return crisv32_io_rd(&spidev_to_hw(spi)->miso) != 0 ? 1 : 0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #define spidelay(x) ndelay(x) | ||||||
|  |  | ||||||
|  | #define	EXPAND_BITBANG_TXRX | ||||||
|  | #include <linux/spi/spi_bitbang.h> | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * SPI-bitbang word transmit-functions for the four SPI modes, | ||||||
|  |  * dispatching to the inlined functions we just included. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | static u32 crisv32_spi_gpio_txrx_mode0(struct spi_device *spi, | ||||||
|  | 				      unsigned nsecs, u32 word, u8 bits) | ||||||
|  | { | ||||||
|  | 	return bitbang_txrx_be_cpha0(spi, nsecs, 0, word, bits); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | static u32 crisv32_spi_gpio_txrx_mode1(struct spi_device *spi, | ||||||
|  | 				       unsigned nsecs, u32 word, u8 bits) | ||||||
|  | { | ||||||
|  | 	return bitbang_txrx_be_cpha1(spi, nsecs, 0, word, bits); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | static u32 crisv32_spi_gpio_txrx_mode2(struct spi_device *spi, | ||||||
|  | 				      unsigned nsecs, u32 word, u8 bits) | ||||||
|  | { | ||||||
|  | 	return bitbang_txrx_be_cpha0(spi, nsecs, 1, word, bits); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | static u32 crisv32_spi_gpio_txrx_mode3(struct spi_device *spi, | ||||||
|  | 				       unsigned nsecs, u32 word, u8 bits) | ||||||
|  | { | ||||||
|  | 	return bitbang_txrx_be_cpha1(spi, nsecs, 1, word, bits); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* SPI-bitbang chip-select function.  */ | ||||||
|  |  | ||||||
|  | static void crisv32_spi_gpio_chipselect(struct spi_device *spi, int value) | ||||||
|  | { | ||||||
|  | 	if (spi->mode & SPI_CS_HIGH) | ||||||
|  | 		crisv32_io_set(&spidev_to_hw(spi)->cs, | ||||||
|  | 			       value == BITBANG_CS_ACTIVE ? 1 : 0); | ||||||
|  | 	else | ||||||
|  | 		crisv32_io_set(&spidev_to_hw(spi)->cs, | ||||||
|  | 			       value == BITBANG_CS_ACTIVE ? 0 : 1); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* Platform-device probe function.  */ | ||||||
|  |  | ||||||
|  | static int __devinit crisv32_spi_gpio_probe(struct platform_device *dev) | ||||||
|  | { | ||||||
|  | 	struct spi_master *master; | ||||||
|  | 	struct crisv32_spi_gpio_devdata  *dd; | ||||||
|  | 	struct resource *res; | ||||||
|  | 	struct crisv32_spi_gpio_controller_data *gc; | ||||||
|  | 	int ret = 0; | ||||||
|  |  | ||||||
|  | 	/* | ||||||
|  | 	 * We need to get the controller data as a hardware resource, | ||||||
|  | 	 * or else it wouldn't be available until *after* the | ||||||
|  | 	 * spi_bitbang_start call! | ||||||
|  | 	 */ | ||||||
|  | 	res = platform_get_resource_byname(dev, 0, "controller_data_ptr"); | ||||||
|  | 	if (res == NULL) { | ||||||
|  | 		dev_err(&dev->dev, "can't get controller_data resource\n"); | ||||||
|  | 		return -EIO; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	gc = (struct crisv32_spi_gpio_controller_data *) res->start; | ||||||
|  |  | ||||||
|  | 	master = spi_alloc_master(&dev->dev, sizeof *dd); | ||||||
|  | 	if (master == NULL) { | ||||||
|  | 		dev_err(&dev->dev, "failed to allocate spi master\n"); | ||||||
|  | 		ret = -ENOMEM; | ||||||
|  | 		goto err; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	dd = spi_master_get_devdata(master); | ||||||
|  | 	platform_set_drvdata(dev, dd); | ||||||
|  |  | ||||||
|  | 	/* | ||||||
|  | 	 * The device data asks for this driver, and holds the id | ||||||
|  | 	 * number, which must be unique among the same-type devices. | ||||||
|  | 	 * We use this as the number of this SPI bus. | ||||||
|  | 	 */ | ||||||
|  | 	master->bus_num = dev->id; | ||||||
|  |  | ||||||
|  | 	/* | ||||||
|  | 	 * Allocate pins.  Note that thus being allocated as GPIO, we | ||||||
|  | 	 * don't have to deconfigure them at the end or if something | ||||||
|  | 	 * fails. | ||||||
|  | 	 */ | ||||||
|  | 	if ((ret = crisv32_io_get_name(&dd->pins.cs, gc->cs)) != 0 | ||||||
|  | 	    || (ret = crisv32_io_get_name(&dd->pins.miso, gc->miso)) != 0 | ||||||
|  | 	    || (ret = crisv32_io_get_name(&dd->pins.mosi, gc->mosi)) != 0 | ||||||
|  | 	    || (ret = crisv32_io_get_name(&dd->pins.sclk, gc->sclk)) != 0) | ||||||
|  | 		goto err_no_pins; | ||||||
|  |  | ||||||
|  | 	/* Set directions of the SPI pins.  */ | ||||||
|  | 	crisv32_io_set_dir(&dd->pins.cs, crisv32_io_dir_out); | ||||||
|  | 	crisv32_io_set_dir(&dd->pins.sclk, crisv32_io_dir_out); | ||||||
|  | 	crisv32_io_set_dir(&dd->pins.miso, crisv32_io_dir_in); | ||||||
|  | 	crisv32_io_set_dir(&dd->pins.mosi, crisv32_io_dir_out); | ||||||
|  |  | ||||||
|  | 	/* Set state of the SPI pins.  */ | ||||||
|  | 	dev_dbg(&dev->dev, "cs.port 0x%x, pin: %d\n" | ||||||
|  | 		dd->pins.cs.port, dd->pins.cs.bit); | ||||||
|  |  | ||||||
|  | 	/* | ||||||
|  | 	 * Can't use crisv32_spi_gpio_chipselect(spi, 1) here; we | ||||||
|  | 	 * don't have a proper "spi" until after spi_bitbang_start. | ||||||
|  | 	 */ | ||||||
|  | 	crisv32_io_set(&dd->pins.cs, 1); | ||||||
|  | 	crisv32_io_set(&dd->pins.sclk, 0); | ||||||
|  | 	crisv32_io_set(&dd->pins.mosi, 0); | ||||||
|  |  | ||||||
|  | 	/* Setup SPI bitbang adapter hooks.  */ | ||||||
|  | 	dd->bitbang.master = spi_master_get(master); | ||||||
|  | 	dd->bitbang.chipselect = crisv32_spi_gpio_chipselect; | ||||||
|  |  | ||||||
|  | 	dd->bitbang.txrx_word[SPI_MODE_0] = crisv32_spi_gpio_txrx_mode0; | ||||||
|  | 	dd->bitbang.txrx_word[SPI_MODE_1] = crisv32_spi_gpio_txrx_mode1; | ||||||
|  | 	dd->bitbang.txrx_word[SPI_MODE_2] = crisv32_spi_gpio_txrx_mode2; | ||||||
|  | 	dd->bitbang.txrx_word[SPI_MODE_3] = crisv32_spi_gpio_txrx_mode3; | ||||||
|  |  | ||||||
|  | 	ret = spi_bitbang_start(&dd->bitbang); | ||||||
|  | 	if (ret) | ||||||
|  | 		goto err_no_bitbang; | ||||||
|  |  | ||||||
|  | 	printk (KERN_INFO "CRIS v32 SPI driver for GPIO" | ||||||
|  | 		" (cs: %s, miso: %s, mosi: %s, sclk: %s)\n", | ||||||
|  | 		gc->cs, gc->miso, gc->mosi, gc->sclk); | ||||||
|  |  | ||||||
|  | 	return 0; | ||||||
|  |  | ||||||
|  |  err_no_bitbang: | ||||||
|  | 	spi_master_put(dd->bitbang.master); | ||||||
|  |  err_no_pins: | ||||||
|  | 	platform_set_drvdata(dev, NULL); | ||||||
|  |  err: | ||||||
|  | 	return ret; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* Platform-device remove-function.  */ | ||||||
|  |  | ||||||
|  | static int __devexit crisv32_spi_gpio_remove(struct platform_device *dev) | ||||||
|  | { | ||||||
|  | 	struct crisv32_spi_gpio_devdata *dd = platform_get_drvdata(dev); | ||||||
|  | 	int ret; | ||||||
|  |  | ||||||
|  | 	ret = spi_bitbang_stop(&dd->bitbang); | ||||||
|  | 	if (ret != 0) | ||||||
|  | 		return ret; | ||||||
|  |  | ||||||
|  | 	spi_master_put(dd->bitbang.master); | ||||||
|  | 	platform_set_drvdata(dev, NULL); | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * For the time being, there's no suspend/resume support to care | ||||||
|  |  * about, so we let those handlers default to NULL. | ||||||
|  |  */ | ||||||
|  | static struct platform_driver crisv32_spi_gpio_drv = { | ||||||
|  | 	.probe		= crisv32_spi_gpio_probe, | ||||||
|  | 	.remove		= __devexit_p(crisv32_spi_gpio_remove), | ||||||
|  | 	.driver		= { | ||||||
|  | 		.name	= "spi_crisv32_gpio", | ||||||
|  | 		.owner	= THIS_MODULE, | ||||||
|  | 	}, | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | /* Module init function.  */ | ||||||
|  |  | ||||||
|  | static int __devinit crisv32_spi_gpio_init(void) | ||||||
|  | { | ||||||
|  | 	return platform_driver_register(&crisv32_spi_gpio_drv); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* Module exit function.  */ | ||||||
|  |  | ||||||
|  | static void __devexit crisv32_spi_gpio_exit(void) | ||||||
|  | { | ||||||
|  | 	platform_driver_unregister(&crisv32_spi_gpio_drv); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | module_init(crisv32_spi_gpio_init); | ||||||
|  | module_exit(crisv32_spi_gpio_exit); | ||||||
|  |  | ||||||
|  | MODULE_DESCRIPTION("CRIS v32 SPI-GPIO Driver"); | ||||||
|  | MODULE_AUTHOR("Hans-Peter Nilsson, <hp@axis.com>"); | ||||||
|  | MODULE_LICENSE("GPL"); | ||||||
							
								
								
									
										1566
									
								
								target/linux/etrax-2.6/files/drivers/spi/spi_crisv32_sser.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1566
									
								
								target/linux/etrax-2.6/files/drivers/spi/spi_crisv32_sser.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										141
									
								
								target/linux/etrax-2.6/files/drivers/usb/host/hc-cris-dbg.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										141
									
								
								target/linux/etrax-2.6/files/drivers/usb/host/hc-cris-dbg.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,141 @@ | |||||||
|  |  | ||||||
|  | /* macros for debug output */ | ||||||
|  |  | ||||||
|  | #define hcd_dbg(hcd, fmt, args...) \ | ||||||
|  | 	dev_info(hcd->self.controller, fmt, ## args) | ||||||
|  | #define hcd_err(hcd, fmt, args...) \ | ||||||
|  | 	dev_err(hcd->self.controller, fmt, ## args) | ||||||
|  | #define hcd_info(hcd, fmt, args...) \ | ||||||
|  | 	dev_info(hcd->self.controller, fmt, ## args) | ||||||
|  | #define hcd_warn(hcd, fmt, args...) \ | ||||||
|  | 	dev_warn(hcd->self.controller, fmt, ## args) | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | #define devdrv_dbg(fmt, args...) \ | ||||||
|  |         printk(KERN_INFO "usb_devdrv dbg: ");printk(fmt, ## args) | ||||||
|  | */ | ||||||
|  | #define devdrv_dbg(fmt, args...) {} | ||||||
|  |  | ||||||
|  | #define devdrv_err(fmt, args...) \ | ||||||
|  |         printk(KERN_ERR "usb_devdrv error: ");printk(fmt, ## args) | ||||||
|  | #define devdrv_info(fmt, args...) \ | ||||||
|  |         printk(KERN_INFO "usb_devdrv: ");printk(fmt, ## args) | ||||||
|  |  | ||||||
|  | #define irq_dbg(fmt, args...) \ | ||||||
|  |         printk(KERN_INFO "crisv10_irq dbg: ");printk(fmt, ## args) | ||||||
|  | #define irq_err(fmt, args...) \ | ||||||
|  |         printk(KERN_ERR "crisv10_irq error: ");printk(fmt, ## args) | ||||||
|  | #define irq_warn(fmt, args...) \ | ||||||
|  |         printk(KERN_INFO "crisv10_irq warn: ");printk(fmt, ## args) | ||||||
|  | #define irq_info(fmt, args...) \ | ||||||
|  |         printk(KERN_INFO "crisv10_hcd: ");printk(fmt, ## args) | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | #define rh_dbg(fmt, args...) \ | ||||||
|  |   printk(KERN_DEBUG "crisv10_rh dbg: ");printk(fmt, ## args) | ||||||
|  | */ | ||||||
|  | #define rh_dbg(fmt, args...) {} | ||||||
|  |  | ||||||
|  | #define rh_err(fmt, args...) \ | ||||||
|  |         printk(KERN_ERR "crisv10_rh error: ");printk(fmt, ## args) | ||||||
|  | #define rh_warn(fmt, args...) \ | ||||||
|  |         printk(KERN_INFO "crisv10_rh warning: ");printk(fmt, ## args) | ||||||
|  | #define rh_info(fmt, args...) \ | ||||||
|  |         printk(KERN_INFO "crisv10_rh: ");printk(fmt, ## args) | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | #define tc_dbg(fmt, args...) \ | ||||||
|  |         printk(KERN_INFO "crisv10_tc dbg: ");printk(fmt, ## args) | ||||||
|  | */ | ||||||
|  | #define tc_dbg(fmt, args...) {while(0){}} | ||||||
|  |  | ||||||
|  | #define tc_err(fmt, args...) \ | ||||||
|  |         printk(KERN_ERR "crisv10_tc error: ");printk(fmt, ## args) | ||||||
|  | /* | ||||||
|  | #define tc_warn(fmt, args...) \ | ||||||
|  |         printk(KERN_INFO "crisv10_tc warning: ");printk(fmt, ## args) | ||||||
|  | */ | ||||||
|  | #define tc_warn(fmt, args...) {while(0){}} | ||||||
|  |  | ||||||
|  | #define tc_info(fmt, args...) \ | ||||||
|  |         printk(KERN_INFO "crisv10_tc: ");printk(fmt, ## args) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /* Debug print-outs for various traffic types */ | ||||||
|  |  | ||||||
|  | #define intr_warn(fmt, args...) \ | ||||||
|  |         printk(KERN_INFO "crisv10_intr warning: ");printk(fmt, ## args) | ||||||
|  | /* | ||||||
|  | #define intr_dbg(fmt, args...) \ | ||||||
|  |         printk(KERN_DEBUG "crisv10_intr dbg: ");printk(fmt, ## args) | ||||||
|  | */ | ||||||
|  | #define intr_dbg(fmt, args...) {while(0){}} | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #define isoc_err(fmt, args...) \ | ||||||
|  |         printk(KERN_ERR "crisv10_isoc error: ");printk(fmt, ## args) | ||||||
|  | /* | ||||||
|  | #define isoc_warn(fmt, args...) \ | ||||||
|  |         printk(KERN_INFO "crisv10_isoc warning: ");printk(fmt, ## args) | ||||||
|  | */ | ||||||
|  | #define isoc_warn(fmt, args...) {while(0){}} | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | #define isoc_dbg(fmt, args...) \ | ||||||
|  |         printk(KERN_INFO "crisv10_isoc dbg: ");printk(fmt, ## args) | ||||||
|  | */ | ||||||
|  | #define isoc_dbg(fmt, args...) {while(0){}} | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | #define timer_warn(fmt, args...) \ | ||||||
|  |         printk(KERN_INFO "crisv10_timer warning: ");printk(fmt, ## args) | ||||||
|  | */ | ||||||
|  | #define timer_warn(fmt, args...) {while(0){}} | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | #define timer_dbg(fmt, args...) \ | ||||||
|  |         printk(KERN_INFO "crisv10_timer dbg: ");printk(fmt, ## args) | ||||||
|  | */ | ||||||
|  | #define timer_dbg(fmt, args...) {while(0){}} | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /* Debug printouts for events related to late finishing of URBs */ | ||||||
|  | /* | ||||||
|  | #define late_dbg(fmt, args...) \ | ||||||
|  |         printk(KERN_INFO "crisv10_late dbg: ");printk(fmt, ## args) | ||||||
|  | */ | ||||||
|  | #define late_dbg(fmt, args...) {while(0){}} | ||||||
|  |  | ||||||
|  | #define late_warn(fmt, args...) \ | ||||||
|  |         printk(KERN_INFO "crisv10_late warning: ");printk(fmt, ## args) | ||||||
|  | /* | ||||||
|  | #define errno_dbg(fmt, args...) \ | ||||||
|  |         printk(KERN_INFO "crisv10_errno dbg: ");printk(fmt, ## args) | ||||||
|  | */ | ||||||
|  | #define errno_dbg(fmt, args...) {while(0){}} | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #define dma_dbg(fmt, args...) \ | ||||||
|  |         printk(KERN_INFO "crisv10_dma dbg: ");printk(fmt, ## args) | ||||||
|  | #define dma_err(fmt, args...) \ | ||||||
|  |         printk(KERN_ERR "crisv10_dma error: ");printk(fmt, ## args) | ||||||
|  | #define dma_warn(fmt, args...) \ | ||||||
|  |         printk(KERN_INFO "crisv10_dma warning: ");printk(fmt, ## args) | ||||||
|  | #define dma_info(fmt, args...) \ | ||||||
|  |         printk(KERN_INFO "crisv10_dma: ");printk(fmt, ## args) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #define str_dir(pipe) \ | ||||||
|  | 	(usb_pipeout(pipe) ? "out" : "in") | ||||||
|  | #define str_type(pipe) \ | ||||||
|  | 	({								\ | ||||||
|  | 		char *s = "?";						\ | ||||||
|  | 		switch (usb_pipetype(pipe)) {				\ | ||||||
|  | 		case PIPE_ISOCHRONOUS:	s = "iso";  break;		\ | ||||||
|  | 		case PIPE_INTERRUPT:	s = "intr"; break;		\ | ||||||
|  | 		case PIPE_CONTROL:	s = "ctrl"; break;		\ | ||||||
|  | 		case PIPE_BULK:		s = "bulk"; break;		\ | ||||||
|  | 		};							\ | ||||||
|  | 		s;							\ | ||||||
|  | 	}) | ||||||
							
								
								
									
										10
									
								
								target/linux/etrax-2.6/files/include/linux/mtd/mtdram.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								target/linux/etrax-2.6/files/include/linux/mtd/mtdram.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | |||||||
|  | #ifndef __MTD_MTDRAM_H__ | ||||||
|  | #define __MTD_MTDRAM_H__ | ||||||
|  |  | ||||||
|  | #ifdef __KERNEL__ | ||||||
|  | #include <linux/mtd/mtd.h> | ||||||
|  | int mtdram_init_device(struct mtd_info *mtd, void *mapped_address,  | ||||||
|  |                        unsigned long size, char *name); | ||||||
|  |  | ||||||
|  | #endif /* __KERNEL__ */ | ||||||
|  | #endif /* __MTD_MTDRAM_H__ */ | ||||||
							
								
								
									
										5
									
								
								target/linux/etrax-2.6/image/Config.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								target/linux/etrax-2.6/image/Config.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | config AXIS_FIMAGE | ||||||
|  | 	bool "Build fimage" | ||||||
|  | 	depends LINUX_2_6_ETRAX | ||||||
|  | 	default y | ||||||
|  |  | ||||||
							
								
								
									
										55
									
								
								target/linux/etrax-2.6/image/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								target/linux/etrax-2.6/image/Makefile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,55 @@ | |||||||
|  | #  | ||||||
|  | # Copyright (C) 2006 OpenWrt.org | ||||||
|  | # | ||||||
|  | # This is free software, licensed under the GNU General Public License v2. | ||||||
|  | # See /LICENSE for more information. | ||||||
|  | # | ||||||
|  |  | ||||||
|  | include $(TOPDIR)/rules.mk | ||||||
|  | include $(INCLUDE_DIR)/image.mk | ||||||
|  |  | ||||||
|  | FOXBOARD:=custom MCM 416 816 832 | ||||||
|  | FOXBOARD_4MB:=MCM 416  | ||||||
|  | FOXBOARD_8MB:=custom 816 832 | ||||||
|  |  | ||||||
|  | define Image/BuildKernel | ||||||
|  | 	for f in $(FOXBOARD); do \ | ||||||
|  | 		cp $(KDIR)/vmlinuz_$$$$f $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-zImage_$$$$f; \ | ||||||
|  | 	done | ||||||
|  | endef | ||||||
|  |  | ||||||
|  | define Image/Prepare | ||||||
|  | 	for f in $(FOXBOARD); do \ | ||||||
|  | 		cp $(LINUX_DIR)/arch/cris/boot/zImage_$$$$f $(KDIR)/vmlinuz_$$$$f; \ | ||||||
|  | 	done | ||||||
|  | 	$(MAKE) -C ./e100boot/ | ||||||
|  | 	$(MAKE) -C ./mkfimage/ | ||||||
|  | 	$(INSTALL_BIN) ./boot_linux $(BIN_DIR) | ||||||
|  | endef | ||||||
|  |  | ||||||
|  | define Image/Build/generic | ||||||
|  | 	for f in $(2); do \ | ||||||
|  | 		mkfimage $(KDIR)/vmlinuz_$$$$f $(KDIR)/vmlinuz_$$$$f.tmp ; \ | ||||||
|  | 		cat $(KDIR)/vmlinuz_$$$$f.tmp $(KDIR)/root.$(1) > $(KDIR)/fimage.$(1)_$$$$f.tmp; \ | ||||||
|  | 		dd if=$(KDIR)/fimage.$(1)_$$$$f.tmp of=$(KDIR)/fimage.$(1)_$$$$f bs=$(3) conv=sync; \ | ||||||
|  | 		cp $(KDIR)/fimage.$(1)_$$$$f $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(1)-fimage_$$$$f; \ | ||||||
|  | 	done	 | ||||||
|  | endef | ||||||
|  |  | ||||||
|  | define Image/Build/jffs2-64k | ||||||
|  | 	$(call prepare_generic_jffs-64k,$(KDIR)/root.jff2-64k) | ||||||
|  | 	$(call Image/Build/generic,$(1),$(FOXBOARD_4MB),4194304) | ||||||
|  | 	$(call Image/Build/generic,$(1),$(FOXBOARD_8MB),8388608)	 | ||||||
|  | endef | ||||||
|  |  | ||||||
|  | define Image/Build/squashfs | ||||||
|  | 	$(call prepare_generic_squashfs,$(KDIR)/root.squashfs) | ||||||
|  | 	$(call Image/Build/generic,$(1),$(FOXBOARD_4MB),4194304) | ||||||
|  | 	$(call Image/Build/generic,$(1),$(FOXBOARD_8MB),8388608)	 | ||||||
|  | endef | ||||||
|  |  | ||||||
|  | define Image/Build | ||||||
|  | 	$(call Image/Build/$(1),$(1)) | ||||||
|  | endef | ||||||
|  |  | ||||||
|  | $(eval $(call BuildImage)) | ||||||
							
								
								
									
										512
									
								
								target/linux/etrax-2.6/image/boot_linux
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										512
									
								
								target/linux/etrax-2.6/image/boot_linux
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,512 @@ | |||||||
|  | #!/usr/bin/perl -w | ||||||
|  |  | ||||||
|  | #***************************************************************************** | ||||||
|  | #! | ||||||
|  | #! FILE NAME  : boot_linux | ||||||
|  | #! | ||||||
|  | #! PARAMETERS : -b <bootimage>     the name of the boot image to use | ||||||
|  | #!              -d <device>        the interface to use, e.g., eth1 | ||||||
|  | #!                                 (defaults is eth0) | ||||||
|  | #!              -f                 save it in flash memory at address 0x10000 | ||||||
|  | #!              -F                 save it in flash memory at address 0 | ||||||
|  | #!              -h                 show some help | ||||||
|  | #!              -i <image>         name of the image to use (default is fimage) | ||||||
|  | #!              -o <offset>        the offset in the flash where the flashing | ||||||
|  | #!                                 starts | ||||||
|  | #!              -O <offset>        the offset in the image file where the | ||||||
|  | #!                                 flashing starts from | ||||||
|  | #!              -p                 print the resulting etrax100boot command | ||||||
|  | #!                                 instead of executing it | ||||||
|  | #!              -s <size>          how much to flash (default is the size of | ||||||
|  | #!                                 the flash minus the offset specified using | ||||||
|  | #!                                 -o or -f) | ||||||
|  | #!              -S <size>          the size of the flash | ||||||
|  | #! | ||||||
|  | #!              All sizes and offsets above can be specified as decimal | ||||||
|  | #!              numbers, or as hexadecimal numbers by prefixing them with 0x. | ||||||
|  | #!              It is also possible to use the suffixes k and M to specify | ||||||
|  | #!              kilo (1024) or mega (1048576). | ||||||
|  | #! | ||||||
|  | #! DESCRIPTION: Extract the start of the image and any registers that should | ||||||
|  | #!              be set from the kimage or fimage file, and then boot it. | ||||||
|  | #! | ||||||
|  | #! FUNCTIONS  : convert_size | ||||||
|  | #!              extract_hw_settings | ||||||
|  | #!              get_dword | ||||||
|  | #!              calculate_sdram_init | ||||||
|  | #!              sdram_command | ||||||
|  | #!              print_help | ||||||
|  | #! | ||||||
|  | #!---------------------------------------------------------------------------- | ||||||
|  | #! HISTORY | ||||||
|  | #! | ||||||
|  | #! $Log: boot_linux,v $ | ||||||
|  | #! Revision 1.16  2004/11/01 16:32:27  starvik | ||||||
|  | #! Corrected help text to avoid confusion | ||||||
|  | #! | ||||||
|  | #! Revision 1.15  2003/01/29 11:48:57  pkj | ||||||
|  | #! Calculate a flash size large enough for the given image if the | ||||||
|  | #! -S option is not specified. | ||||||
|  | #! | ||||||
|  | #! Revision 1.14  2002/11/18 14:40:09  pkj | ||||||
|  | #! Make use of the --loop option to etrax100boot when initialising | ||||||
|  | #! SDRAM memories. This requires a lot fewer options to be passed | ||||||
|  | #! to the boot loader. | ||||||
|  | #! | ||||||
|  | #! Revision 1.13  2002/08/15 16:29:02  pkj | ||||||
|  | #! * The -S option now accepts the size in bytes (just like the -s option). | ||||||
|  | #!   For backwards compatibility it still assumes sizes of 16 and less to | ||||||
|  | #!   be specified in MB. | ||||||
|  | #! * The suffixes k and M can now be used with all sizes and offsets to | ||||||
|  | #!   specify them in kilo or mega. | ||||||
|  | #! | ||||||
|  | #! Revision 1.12  2002/08/15 15:27:34  pkj | ||||||
|  | #! Use $opts{'x'} instead of $opt_x. | ||||||
|  | #! | ||||||
|  | #! Revision 1.11  2002/07/04 17:06:39  pkj | ||||||
|  | #! * No longer specifies a bootfile by default (not needed any longer). | ||||||
|  | #! * Implemented option -b to specify a bootfile. | ||||||
|  | #! * Removed references to option -l (it was never implemented). | ||||||
|  | #! | ||||||
|  | #! Revision 1.10  2002/06/04 11:50:23  starvik | ||||||
|  | #! Check if mrs_data is specified in kernelconfig (necessary for MCM) | ||||||
|  | #! | ||||||
|  | #! Revision 1.9  2002/01/29 10:38:26  pkj | ||||||
|  | #! Change illegal to invalid. | ||||||
|  | #! | ||||||
|  | #! Revision 1.8  2001/09/13 12:32:10  pkj | ||||||
|  | #! * Added option -S to specify the size of the flash (in MB),  as -s | ||||||
|  | #!   is used to specify how much to flash nowadays. | ||||||
|  | #! * Made the default size of the flash depend on the size of the image | ||||||
|  | #!   file. If it is bigger than 0x200100 then the flash is assumed to | ||||||
|  | #!   be 4 MB, otherwise it is assumed to be 2 MB. | ||||||
|  | #! * Added verification of various options. | ||||||
|  | #! | ||||||
|  | #! Revision 1.7  2001/09/13 10:25:11  pkj | ||||||
|  | #! Minor clean-up. | ||||||
|  | #! | ||||||
|  | #! Revision 1.6  2001/06/29 10:05:16  pkj | ||||||
|  | #! Corrected check for SDRAM. | ||||||
|  | #! | ||||||
|  | #! Revision 1.5  2001/06/29 09:11:55  pkj | ||||||
|  | #! Synchronised boot_elinux and boot_linux. | ||||||
|  | #! | ||||||
|  | #!---------------------------------------------------------------------------- | ||||||
|  | #! (C) Copyright 2001, Axis Communications AB, LUND, SWEDEN | ||||||
|  | #!**************************************************************************** | ||||||
|  | # $Id: boot_linux,v 1.16 2004/11/01 16:32:27 starvik Exp $ | ||||||
|  |  | ||||||
|  | #****************** INCLUDE FILES SECTION ************************************ | ||||||
|  |  | ||||||
|  | use strict; | ||||||
|  |  | ||||||
|  | use Getopt::Std; | ||||||
|  | use File::Basename; | ||||||
|  |  | ||||||
|  | #****************** VARIABLE DECLARATION SECTION ***************************** | ||||||
|  |  | ||||||
|  | use vars qw($my_name %opts); | ||||||
|  | use vars qw($text_start $cmd); | ||||||
|  | use vars qw($image_name $image_size); | ||||||
|  | use vars qw($offset $source_offset $flash_size $flashing_size); | ||||||
|  | use vars qw($sdram_timing_address $sdram_config_address); | ||||||
|  | use vars qw($sdram_precharge $sdram_nop $sdram_refresh $sdram_mrs); | ||||||
|  |  | ||||||
|  | #****************** CONSTANT SECTION ***************************************** | ||||||
|  |  | ||||||
|  | # Register addresses | ||||||
|  | $sdram_timing_address = "b0000008"; | ||||||
|  | $sdram_config_address = "b000000c"; | ||||||
|  |  | ||||||
|  | # SDRAM commands | ||||||
|  | $sdram_precharge = 3; | ||||||
|  | $sdram_nop = 0; | ||||||
|  | $sdram_refresh = 2; | ||||||
|  | $sdram_mrs = 1; | ||||||
|  |  | ||||||
|  | #****************** MAIN PROGRAM SECTION ************************************* | ||||||
|  |  | ||||||
|  | # The name of this program. | ||||||
|  | $my_name = basename($0); | ||||||
|  |  | ||||||
|  | # Get options | ||||||
|  | getopts('b:d:fFhi:o:O:ps:S:', \%opts); | ||||||
|  |  | ||||||
|  | &print_help if ($opts{'h'}); | ||||||
|  |  | ||||||
|  | # Name and existance of the image | ||||||
|  | $image_name = ($opts{'i'} ? $opts{'i'} : 'fimage'); | ||||||
|  | die "Could not find the image $image_name!\n" unless (-s $image_name); | ||||||
|  |  | ||||||
|  | if ($opts{'f'} || $opts{'F'}) | ||||||
|  | { | ||||||
|  |   $image_size = -s $image_name; | ||||||
|  |  | ||||||
|  |   $offset = ($opts{'f'} ? 0x10000 : 0); | ||||||
|  |  | ||||||
|  |   $offset = &convert_size($opts{'o'}) if (defined($opts{'o'})); | ||||||
|  |  | ||||||
|  |   die("$my_name: Invalid destination offset\n") if ($offset !~ /^\d+$/); | ||||||
|  |  | ||||||
|  |   my $base_name = basename($image_name); | ||||||
|  |   if ($base_name eq 'timage' || $base_name eq 'flash1.img') | ||||||
|  |   { | ||||||
|  |     $source_offset = 0; | ||||||
|  |   } | ||||||
|  |   else | ||||||
|  |   { | ||||||
|  |     $source_offset = $offset; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   $source_offset = &convert_size($opts{'O'}) if (defined($opts{'O'})); | ||||||
|  |  | ||||||
|  |   die("$my_name: Invalid source offset\n") if ($source_offset !~ /^\d+$/); | ||||||
|  |   die("$my_name: Source offset > image size\n") if ($source_offset > $image_size); | ||||||
|  |  | ||||||
|  |   if (defined($opts{'S'})) | ||||||
|  |   { | ||||||
|  |     # Backwards compatibility to allow specifying the flash size in MB | ||||||
|  |     # without using an M suffix | ||||||
|  |     $opts{'S'} .= 'M' if ($opts{'S'} =~ /^\d+$/ && $opts{'S'} <= 16); | ||||||
|  |  | ||||||
|  |     $flash_size = &convert_size($opts{'S'}); | ||||||
|  |   } | ||||||
|  |   else | ||||||
|  |   { | ||||||
|  |     # Calculate a flash size large enough for the image without the checksum | ||||||
|  |     # and HWID. | ||||||
|  |     $flash_size = ($image_size - $source_offset + $offset) & 0xFFFF0000; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   die("$my_name: Invalid flash size\n") if ($flash_size !~ /^\d+$/); | ||||||
|  |   die("$my_name: Destination offset > flash size\n") if ($offset > $flash_size); | ||||||
|  |   if (defined($opts{'s'})) | ||||||
|  |   { | ||||||
|  |     $flashing_size = &convert_size($opts{'s'}); | ||||||
|  |   } | ||||||
|  |   else | ||||||
|  |   { | ||||||
|  |     $flashing_size = $flash_size - $offset; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   die("$my_name: Invalid size to flash\n") if ($flashing_size !~ /^\d+$/); | ||||||
|  |  | ||||||
|  |   if ($flashing_size > $flash_size - $offset) | ||||||
|  |   { | ||||||
|  |     $flashing_size = $flash_size - $offset; | ||||||
|  |     printf("Warning: Flashing size limited to 0x%lx due to the offset (0x%lx) and flash size (0x%lx).\n", $flashing_size, $offset, $flash_size); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   if ($flashing_size > $image_size - $source_offset) | ||||||
|  |   { | ||||||
|  |     $flashing_size = $image_size - $source_offset; | ||||||
|  |     printf("Warning: Flashing size limited to 0x%lx due to the offset (0x%lx) and image size (0x%lx).\n", $flashing_size, $source_offset, $image_size); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # Create the command line to boot the image | ||||||
|  | if (system('./etrax100boot --help > /dev/null') == 0) | ||||||
|  | { | ||||||
|  |   $cmd = './etrax100boot'; | ||||||
|  | } | ||||||
|  | elsif (system('svinto_boot --help > /dev/null') == 0) | ||||||
|  | { | ||||||
|  |   $cmd = 'svinto_boot'; | ||||||
|  | } | ||||||
|  | else | ||||||
|  | { | ||||||
|  |   die("Cannot find e100boot program in your PATH!\n"); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | $cmd .= " --device $opts{'d'}" if ($opts{'d'}); | ||||||
|  |  | ||||||
|  | $cmd .= &extract_hw_settings; | ||||||
|  |  | ||||||
|  | $cmd .= " --bootfile $opts{'b'}" if ($opts{'b'}); | ||||||
|  | $cmd .= " --file $image_name $text_start"; | ||||||
|  |  | ||||||
|  | if ($opts{'f'} || $opts{'F'}) | ||||||
|  | { | ||||||
|  |   $cmd .= sprintf(" --flash %lx %lx %lx --jump 0", | ||||||
|  | 		  hex($text_start) + $source_offset, $offset, $flashing_size); | ||||||
|  | } | ||||||
|  | else | ||||||
|  | { | ||||||
|  |   $cmd .= " --jump $text_start"; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | if ($opts{'p'}) | ||||||
|  | { | ||||||
|  |   print "Command:\n$cmd\n"; | ||||||
|  | } | ||||||
|  | else | ||||||
|  | { | ||||||
|  |   system($cmd); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | exit 0; | ||||||
|  |  | ||||||
|  | #****************** FUNCTION DEFINITION SECTION ****************************** | ||||||
|  |  | ||||||
|  | #***************************************************************************** | ||||||
|  | ## | ||||||
|  | ## FUNCTION NAME: convert_size | ||||||
|  | ## | ||||||
|  | ##**************************************************************************** | ||||||
|  |  | ||||||
|  | sub convert_size | ||||||
|  | { | ||||||
|  |   my($arg) = @_; | ||||||
|  |   my $size; | ||||||
|  |  | ||||||
|  |   if ($arg =~ /^0x([\da-fA-F]+)([kM])?$/) | ||||||
|  |   { | ||||||
|  |     $size = hex($1); | ||||||
|  |   } | ||||||
|  |   elsif ($arg =~ /^(\d+)([kM])?$/) | ||||||
|  |   { | ||||||
|  |     $size = $1; | ||||||
|  |   } | ||||||
|  |   else | ||||||
|  |   { | ||||||
|  |     return -1; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   if (!defined($2)) | ||||||
|  |   { | ||||||
|  |     return $size; | ||||||
|  |   } | ||||||
|  |   elsif ($2 eq 'k') | ||||||
|  |   { | ||||||
|  |     return $size * 1024; | ||||||
|  |   } | ||||||
|  |   elsif ($2 eq 'M') | ||||||
|  |   { | ||||||
|  |     return $size * 1048576; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #***************************************************************************** | ||||||
|  | ## | ||||||
|  | ## FUNCTION NAME: extract_hw_settings | ||||||
|  | ## | ||||||
|  | ##**************************************************************************** | ||||||
|  |  | ||||||
|  | sub extract_hw_settings | ||||||
|  | { | ||||||
|  |   my $data; | ||||||
|  |   my $dbg_port; | ||||||
|  |   my $sdram_enabled; | ||||||
|  |   my $return_value = ""; | ||||||
|  |   my $sdram_config; | ||||||
|  |  | ||||||
|  |   # The hw information table has the following format | ||||||
|  |   # | ||||||
|  |   # "HW_PARAM_MAGIC" | ||||||
|  |   # text_start (dword) | ||||||
|  |   # serial debg port (dword) | ||||||
|  |   # sdram enabled (dword) | ||||||
|  |   # register address (dword) | ||||||
|  |   # register value (dword) | ||||||
|  |   # ... | ||||||
|  |   # 0 | ||||||
|  |  | ||||||
|  |   open(FILE, "$image_name") || die("Could not open '$image_name'"); | ||||||
|  |  | ||||||
|  |   while (<FILE>) | ||||||
|  |   { | ||||||
|  |     if (m/HW_PARAM_MAGIC/g) | ||||||
|  |     { | ||||||
|  |       # Seek to first byte after magic | ||||||
|  |       seek(FILE, -length($_) + pos($_), 1); | ||||||
|  |       last; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   $text_start = &get_dword; | ||||||
|  |   $dbg_port = &get_dword; | ||||||
|  |   $sdram_enabled = int(&get_dword); | ||||||
|  |  | ||||||
|  |   while (1) | ||||||
|  |   { | ||||||
|  |     my $register = &get_dword; | ||||||
|  |     my $value = &get_dword; | ||||||
|  |  | ||||||
|  |     last if ($register eq "00000000"); | ||||||
|  |  | ||||||
|  |     if ($sdram_enabled) | ||||||
|  |     { | ||||||
|  |       if ($register eq $sdram_config_address) | ||||||
|  |       { | ||||||
|  | 	$sdram_config = $value; | ||||||
|  |       } | ||||||
|  |       elsif ($register eq $sdram_timing_address) | ||||||
|  |       { | ||||||
|  | 	$return_value .= &calculate_sdram_init($value, $sdram_config); | ||||||
|  | 	next; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     $return_value .= " --setreg $register $value"; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   close(FILE); | ||||||
|  |  | ||||||
|  |   return $return_value; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #***************************************************************************** | ||||||
|  | ## | ||||||
|  | ## FUNCTION NAME: get_dword | ||||||
|  | ## | ||||||
|  | ##**************************************************************************** | ||||||
|  |  | ||||||
|  | sub get_dword | ||||||
|  | { | ||||||
|  |   my $data; | ||||||
|  |  | ||||||
|  |   read(FILE, $data, 4); | ||||||
|  |   return unpack("H8", pack("V", unpack("N", $data))); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #***************************************************************************** | ||||||
|  | ## | ||||||
|  | ## FUNCTION NAME: calculate_sdram_init | ||||||
|  | ## | ||||||
|  | ##**************************************************************************** | ||||||
|  |  | ||||||
|  | sub calculate_sdram_init | ||||||
|  | { | ||||||
|  |   # Refer to ETRAX 100LX Designers Reference for a description of SDRAM | ||||||
|  |   # initialization | ||||||
|  |   my $sdram_init_val = hex($_[0]); | ||||||
|  |   my $sdram_config_val = hex($_[1]); | ||||||
|  |   my $bus_width = $sdram_config_val & 0x00800000; | ||||||
|  |   my $speed; | ||||||
|  |   my $cas_latency; | ||||||
|  |   my $mrs_data; | ||||||
|  |   my $temp; | ||||||
|  |   my $return_value; | ||||||
|  |   my $value; | ||||||
|  |  | ||||||
|  |   $mrs_data = ($sdram_init_val & 0x00ff0000) >> 16; | ||||||
|  |   $sdram_init_val &= 0x8000ffff; # Make sure mrs data is 0 | ||||||
|  |   $sdram_init_val |= 0x80000000; # Make sure sdram is enabled | ||||||
|  |   $speed = $sdram_init_val & 0x1000; | ||||||
|  |   $cas_latency = $sdram_init_val & 0x3; | ||||||
|  |   if ($speed) # 100 MHz | ||||||
|  |   { | ||||||
|  |     $cas_latency += 2; | ||||||
|  |   } | ||||||
|  |   else # 50 MHz | ||||||
|  |   { | ||||||
|  |     $cas_latency += 1; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   # Calculate value of mrs_data | ||||||
|  |   # CAS latency = 2 && bus_width = 32 => 0x40 | ||||||
|  |   # CAS latency = 3 && bus_width = 32 => 0x60 | ||||||
|  |   # CAS latency = 2 && bus_width = 16 => 0x20 | ||||||
|  |   # CAS latency = 3 && bus_width = 16 => 0x30 | ||||||
|  |   if ($mrs_data == 0) | ||||||
|  |   { | ||||||
|  |     if ($bus_width == 0) # 16 bits | ||||||
|  |     { | ||||||
|  |       $mrs_data = $cas_latency == 2 ? 0x20 : 0x30; | ||||||
|  |     } | ||||||
|  |     else # 32 bits | ||||||
|  |     { | ||||||
|  |       $mrs_data = $cas_latency == 2 ? 0x40 : 0x60; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   $temp = $sdram_init_val | 0x0000c000; # Disable refresh | ||||||
|  |   $return_value .= &sdram_command($temp); | ||||||
|  |   $return_value .= " --pause 20000"; | ||||||
|  |  | ||||||
|  |   $return_value .= &sdram_command($temp, $sdram_precharge); | ||||||
|  |   $return_value .= &sdram_command($temp, $sdram_nop); | ||||||
|  |  | ||||||
|  |   $return_value .= " --setreg +0 7"; | ||||||
|  |   $return_value .= " --label label1"; | ||||||
|  |   $return_value .= &sdram_command($temp, $sdram_refresh); | ||||||
|  |   $return_value .= &sdram_command($temp, $sdram_nop); | ||||||
|  |   $return_value .= " --loop +0 label1"; | ||||||
|  |  | ||||||
|  |   $return_value .= &sdram_command($temp, $sdram_mrs, $mrs_data); | ||||||
|  |   $return_value .= &sdram_command($temp, $sdram_nop); | ||||||
|  |  | ||||||
|  |   $return_value .= &sdram_command($sdram_init_val); | ||||||
|  |  | ||||||
|  |   return $return_value; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #***************************************************************************** | ||||||
|  | ## | ||||||
|  | ## FUNCTION NAME: sdram_command | ||||||
|  | ## | ||||||
|  | ##**************************************************************************** | ||||||
|  |  | ||||||
|  | sub sdram_command | ||||||
|  | { | ||||||
|  |   my($temp, $value, $mrs_data) = @_; | ||||||
|  |  | ||||||
|  |   $value ||= 0; | ||||||
|  |   if ($value == $sdram_mrs) | ||||||
|  |   { | ||||||
|  |     $value = sprintf("%lx", $temp | ($value << 9) | ($mrs_data << 16)); | ||||||
|  |   } | ||||||
|  |   else | ||||||
|  |   { | ||||||
|  |     $value = sprintf("%lx", $temp | ($value << 9)); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   return " --setreg $sdram_timing_address $value"; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #***************************************************************************** | ||||||
|  | ## | ||||||
|  | ## FUNCTION NAME: print_help | ||||||
|  | ## | ||||||
|  | ##**************************************************************************** | ||||||
|  |  | ||||||
|  | sub print_help | ||||||
|  | { | ||||||
|  |   print "\nAXIS $my_name, ", '$Revision: 1.16 $ $Date: 2004/11/01 16:32:27 $ ', "\n"; | ||||||
|  |   die <<EOT; | ||||||
|  | Copyright (C) 2001-2002 Axis Communications AB | ||||||
|  |  | ||||||
|  | DESCRIPTION: | ||||||
|  |   This program is used to boot (and flash) a linux image to a box. | ||||||
|  |   It tries to extract the required ETRAX 100 settings from the image file. | ||||||
|  |  | ||||||
|  | SYNTAX: | ||||||
|  |   $my_name [options] | ||||||
|  |  | ||||||
|  | OPTIONS: | ||||||
|  |   -b <bootfile>           : The boot image to use. | ||||||
|  |   -d <device>             : The network interface to use, default is eth0. | ||||||
|  |   -f                      : Save the image in the flash memory starting at | ||||||
|  |                             address 0x10000. | ||||||
|  |   -F                      : Save the image in the flash memory starting at | ||||||
|  |                             address 0. | ||||||
|  |   -h                      : Print this help text. | ||||||
|  |   -i <image>              : The path and name of the image to use, default | ||||||
|  |                             is fimage. | ||||||
|  |   -o <offset>             : The offset in the flash where the flashing starts. | ||||||
|  |   -O <offset>             : The offset in the image file where the flashing | ||||||
|  |                             starts from. | ||||||
|  |   -p                      : Print the resulting etrax100boot command instead | ||||||
|  |                             of executing it. | ||||||
|  |   -s <size>               : How much to flash (default is the size of the | ||||||
|  | 			    flash minus the offset specified using -o or -f). | ||||||
|  |   -S <size>               : The size of the flash. | ||||||
|  |  | ||||||
|  |   All sizes and offsets above can be specified as decimal numbers, or as | ||||||
|  |   hexadecimal numbers by prefixing them with 0x. It is also possible to use | ||||||
|  |   the suffixes k and M to specify kilo (1024) or mega (1048576). | ||||||
|  |  | ||||||
|  | EOT | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #****************** END OF FILE boot_linux *********************************** | ||||||
							
								
								
									
										32
									
								
								target/linux/etrax-2.6/image/e100boot/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								target/linux/etrax-2.6/image/e100boot/Makefile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | |||||||
|  | # | ||||||
|  | # Copyright (C) 2006 OpenWrt.org | ||||||
|  | # | ||||||
|  | # This is free software, licensed under the GNU General Public License v2. | ||||||
|  | # See /LICENSE for more information. | ||||||
|  | # | ||||||
|  | # $Id$ | ||||||
|  |  | ||||||
|  | include $(TOPDIR)/rules.mk | ||||||
|  | include $(INCLUDE_DIR)/kernel.mk | ||||||
|  |  | ||||||
|  | PKG_NAME:=e100boot | ||||||
|  | PKG_VERSION:=0.1 | ||||||
|  | PKG_RELEASE:=1 | ||||||
|  |  | ||||||
|  | PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME) | ||||||
|  |  | ||||||
|  | CRLF_WORKAROUND=1 | ||||||
|  |  | ||||||
|  | include $(INCLUDE_DIR)/package.mk | ||||||
|  |  | ||||||
|  | define Build/Compile | ||||||
|  | 	mkdir -p $(PKG_BUILD_DIR) | ||||||
|  | 	cp -r ./src/* $(PKG_BUILD_DIR) | ||||||
|  | 	make -C $(PKG_BUILD_DIR) | ||||||
|  | endef | ||||||
|  |  | ||||||
|  | define Build/InstallDev | ||||||
|  | 	$(INSTALL_BIN) $(PKG_BUILD_DIR)/sbl/e100boot $(BIN_DIR)/etrax100boot | ||||||
|  | endef | ||||||
|  |  | ||||||
|  | $(eval $(call Build/DefaultTargets)) | ||||||
							
								
								
									
										26
									
								
								target/linux/etrax-2.6/image/e100boot/src/LICENSE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								target/linux/etrax-2.6/image/e100boot/src/LICENSE
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | |||||||
|  | Copyright (c) 2004, 2005 Axis Communications AB.  All rights reserved. | ||||||
|  |  | ||||||
|  | Redistribution and use in source and binary forms, with or without | ||||||
|  | modification, are permitted provided that the following conditions | ||||||
|  | are met: | ||||||
|  |  | ||||||
|  | 1. Redistributions of source code must retain the above copyright | ||||||
|  |    notice, this list of conditions and the following disclaimer. | ||||||
|  | 2. Redistributions in binary form must reproduce the above copyright | ||||||
|  |    notice, this list of conditions and the following disclaimer in the | ||||||
|  |    documentation and/or other materials provided with the distribution. | ||||||
|  | 3. Neither the name of Axis Communications AB 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 AXIS COMMUNCATIONS AB ``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. | ||||||
							
								
								
									
										70
									
								
								target/linux/etrax-2.6/image/e100boot/src/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								target/linux/etrax-2.6/image/e100boot/src/Makefile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,70 @@ | |||||||
|  | # | ||||||
|  | # Top Makefile for e100boot | ||||||
|  | # $Id: Makefile,v 1.20 2003/06/04 12:22:23 pkj Exp $ | ||||||
|  | # | ||||||
|  |  | ||||||
|  | # Change these paths if necessary. Can also be specified on cmdline as | ||||||
|  | # 'make INSTALL_PATH=/foo/bar/'. | ||||||
|  |  | ||||||
|  | INSTALL_NAME     = e100boot | ||||||
|  | INSTALL_PATH     = /usr/local | ||||||
|  | INSTALL_PATH_BIN = $(INSTALL_PATH)/bin | ||||||
|  | INSTALL_PATH_DOC = $(INSTALL_PATH)/man/man1 | ||||||
|  |  | ||||||
|  | DIRS = libpcap-0.4 sbl doc | ||||||
|  |  | ||||||
|  | -include $(AXIS_TOP_DIR)/tools/build/Rules.axis | ||||||
|  | ifdef prefix | ||||||
|  | INSTALL_PATH = $(prefix) | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | INSTALL ?= install | ||||||
|  |  | ||||||
|  | all: conf $(DIRS) | ||||||
|  | 	@for d in $(DIRS); do \ | ||||||
|  | 	  echo -e "\n### Making $$d"; \ | ||||||
|  | 	  $(MAKE) -C $$d || exit; \ | ||||||
|  | 	done | ||||||
|  |  | ||||||
|  | conf: $(DIRS) | ||||||
|  | 	@for d in $(DIRS); do \ | ||||||
|  | 	  if [ -x $$d/configure ] && [ ! -e $$d/Makefile ]; then \ | ||||||
|  | 	    echo -e "\n### Configuring $$d"; \ | ||||||
|  | 	    cd $$d; ./configure ||<EFBFBD>exit; cd ..; \ | ||||||
|  |           fi; \ | ||||||
|  | 	done | ||||||
|  |  | ||||||
|  | tar: clean | ||||||
|  | 	@echo -e "\n### Making tarball." | ||||||
|  | 	tar -C ../ -zcf e100boot.tgz --exclude e100boot.tgz --exclude RCS --exclude CVS e100boot | ||||||
|  |  | ||||||
|  |  | ||||||
|  | install: all | ||||||
|  | 	$(INSTALL) -d $(INSTALL_PATH_BIN) $(INSTALL_PATH_DOC) | ||||||
|  | 	$(INSTALL) sbl/e100boot.stripped $(INSTALL_PATH_BIN)/$(INSTALL_NAME) | ||||||
|  | 	$(INSTALL) -m 0644 doc/e100boot.1 $(INSTALL_PATH_DOC)/$(INSTALL_NAME).1 | ||||||
|  |  | ||||||
|  | install.setuid: | ||||||
|  | 	@echo -e "\n### Make install.setuid"; \ | ||||||
|  | 	if ! [ -e $(INSTALL_PATH_BIN)/$(INSTALL_NAME) ]; then \ | ||||||
|  | 	  echo -e "\n### Binary $(INSTALL_PATH_BIN)/$(INSTALL_NAME) does not exist! Make install first."; \ | ||||||
|  | 	elif [ `id -u` = 0 ]; then \ | ||||||
|  | 	  chown root.root $(INSTALL_PATH_BIN)/$(INSTALL_NAME); \ | ||||||
|  | 	  chmod +s $(INSTALL_PATH_BIN)/$(INSTALL_NAME); \ | ||||||
|  | 	else \ | ||||||
|  | 	  echo "### You must do this as root!"; \ | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | clean: | ||||||
|  | 	@for d in $(DIRS); do \ | ||||||
|  | 	if [ -e $$d/Makefile ]; then \ | ||||||
|  | 	  echo -e "\n### Cleaning $$d"; \ | ||||||
|  | 	  $(MAKE) -C $$d clean || exit; \ | ||||||
|  | 	fi; \ | ||||||
|  | 	done | ||||||
|  |  | ||||||
|  | configsubs:	conf configsubs-dirs | ||||||
|  |  | ||||||
|  | configsubs-dirs: | ||||||
|  | 	$(MAKE) -C libpcap-0.4 configsubs | ||||||
|  | 	$(MAKE) -C sbl configsubs | ||||||
							
								
								
									
										25
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/Makefile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | |||||||
|  | # | ||||||
|  | # Makefile to generate .ima files for e100boot | ||||||
|  | # | ||||||
|  | # Hacked by ronny, rehacked by ronny | ||||||
|  | # | ||||||
|  | # $Id: Makefile,v 1.26 2003/03/13 14:18:31 cii Exp $ | ||||||
|  | # | ||||||
|  |  | ||||||
|  | DIRS	:= net net_noleds ser ser_noleds | ||||||
|  |  | ||||||
|  | all:	$(DIRS) | ||||||
|  | 	@for d in $(DIRS); do \ | ||||||
|  | 	  echo -e "\n### Making $$d"; \ | ||||||
|  | 	  make -C $$d || exit; \ | ||||||
|  | 	done | ||||||
|  | 	@echo "***************************************************************" | ||||||
|  | 	@./free_size | ||||||
|  | 	@echo "***************************************************************" | ||||||
|  |  | ||||||
|  | clean: | ||||||
|  | 	rm -f *.ima | ||||||
|  | 	@for d in $(DIRS); do \ | ||||||
|  | 	  echo -e "\n### Cleaning $$d"; \ | ||||||
|  | 	  make -C $$d clean || exit; \ | ||||||
|  | 	done; | ||||||
							
								
								
									
										42
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/free_size
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										42
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/free_size
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,42 @@ | |||||||
|  | #!/bin/sh | ||||||
|  | # | ||||||
|  | # Calculates the size left in ETRAX cache when bootloader is loaded. | ||||||
|  | # | ||||||
|  |  | ||||||
|  | BOOT_FILE=`dirname $0`/net/net.out | ||||||
|  | HEADER_FILE=`dirname $0`/src/e100boot.h | ||||||
|  |  | ||||||
|  | for FILE in $BOOT_FILE $HEADER_FILE; do | ||||||
|  | 	if [ ! -f $FILE ]; then | ||||||
|  | 		echo "Could not find the file \"$FILE\"!" | ||||||
|  | 		exit 1 | ||||||
|  | 	fi | ||||||
|  | done | ||||||
|  |  | ||||||
|  | # The cache size is given in hex | ||||||
|  | CACHE_SIZE=2000 | ||||||
|  |  | ||||||
|  | BSS_SIZE=`nm-cris $BOOT_FILE | grep Ebss | cut -d ' ' -f 1 | tr a-f A-F` | ||||||
|  |  | ||||||
|  | TEXT_SIZE=`nm-cris $BOOT_FILE | grep Stext | cut -d ' ' -f 1 | tr a-f A-F` | ||||||
|  |  | ||||||
|  | IO_BUF_END=`grep IO_BUF_END $HEADER_FILE | awk '{ print $3 }' | \ | ||||||
|  | 	    cut -d x -f 2 | tr a-f A-F` | ||||||
|  |  | ||||||
|  | IO_BUF_START=`grep IO_BUF_START $HEADER_FILE | awk '{ print $3 }' | \ | ||||||
|  | 	      cut -d x -f 2 | tr a-f A-F` | ||||||
|  |  | ||||||
|  | FREE_SIZE=`echo "ibase=16 ; \ | ||||||
|  | 		 $CACHE_SIZE - \ | ||||||
|  | 		 ($BSS_SIZE - $TEXT_SIZE + $IO_BUF_END - $IO_BUF_START)" | \ | ||||||
|  | 	   bc` | ||||||
|  |  | ||||||
|  | echo "Free cache size when cbl is loaded will be:" | ||||||
|  | echo -e "\t$FREE_SIZE bytes - size of stack" | ||||||
|  |  | ||||||
|  | if [ $FREE_SIZE -lt 0 ]; then | ||||||
|  | 	echo "Bootloader is too large! You will have to do some optimizing..." | ||||||
|  | 	exit 1 | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | exit 0 | ||||||
| @@ -0,0 +1,6 @@ | |||||||
|  | # | ||||||
|  | # $Id: Makefile,v 1.1 2002/07/01 14:36:40 pkj Exp $ | ||||||
|  | # | ||||||
|  |  | ||||||
|  | IMAGE := net.ima | ||||||
|  | include ../rules.cbl | ||||||
| @@ -0,0 +1,3 @@ | |||||||
|  | common.o: ../src/common.c ../src/hwregs.h ../src/compiler.h \ | ||||||
|  |   ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h \ | ||||||
|  |   ../src/e100boot.h | ||||||
| @@ -0,0 +1,3 @@ | |||||||
|  | common_init.o: ../src/common_init.c ../src/hwregs.h ../src/compiler.h \ | ||||||
|  |   ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h \ | ||||||
|  |   ../src/e100boot.h | ||||||
							
								
								
									
										1
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/net/crt0.d
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/net/crt0.d
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | crt0.o: ../src/crt0.S | ||||||
| @@ -0,0 +1 @@ | |||||||
|  | char e100boot_version[] = "This bootloader was built by root on Wed May 16 21:31:41 CEST 2007.\r\n"; | ||||||
| @@ -0,0 +1 @@ | |||||||
|  | e100boot_version.o: e100boot_version.c | ||||||
| @@ -0,0 +1 @@ | |||||||
|  | flash.o: ../src/flash.c ../src/e100boot.h ../src/compiler.h | ||||||
| @@ -0,0 +1,2 @@ | |||||||
|  | hwregs.o: ../src/hwregs.c ../src/compiler.h ../src/hwregs.h \ | ||||||
|  |   ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h | ||||||
| @@ -0,0 +1,2 @@ | |||||||
|  | net_init.o: ../src/net_init.c ../src/sv_addr_ag.h ../src/sv_addr.agh \ | ||||||
|  |   ../src/e100boot.h ../src/compiler.h | ||||||
| @@ -0,0 +1,6 @@ | |||||||
|  | # | ||||||
|  | # $Id: Makefile,v 1.1 2002/07/01 14:36:51 pkj Exp $ | ||||||
|  | # | ||||||
|  |  | ||||||
|  | IMAGE := net_noleds.ima | ||||||
|  | include ../rules.cbl | ||||||
| @@ -0,0 +1,3 @@ | |||||||
|  | common.o: ../src/common.c ../src/hwregs.h ../src/compiler.h \ | ||||||
|  |   ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h \ | ||||||
|  |   ../src/e100boot.h | ||||||
| @@ -0,0 +1,3 @@ | |||||||
|  | common_init.o: ../src/common_init.c ../src/hwregs.h ../src/compiler.h \ | ||||||
|  |   ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h \ | ||||||
|  |   ../src/e100boot.h | ||||||
| @@ -0,0 +1 @@ | |||||||
|  | crt0.o: ../src/crt0.S | ||||||
| @@ -0,0 +1 @@ | |||||||
|  | char e100boot_version[] = "This bootloader was built by root on Wed May 16 21:31:43 CEST 2007.\r\n"; | ||||||
| @@ -0,0 +1 @@ | |||||||
|  | e100boot_version.o: e100boot_version.c | ||||||
| @@ -0,0 +1 @@ | |||||||
|  | flash.o: ../src/flash.c ../src/e100boot.h ../src/compiler.h | ||||||
| @@ -0,0 +1,2 @@ | |||||||
|  | hwregs.o: ../src/hwregs.c ../src/compiler.h ../src/hwregs.h \ | ||||||
|  |   ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h | ||||||
| @@ -0,0 +1,2 @@ | |||||||
|  | net_init.o: ../src/net_init.c ../src/sv_addr_ag.h ../src/sv_addr.agh \ | ||||||
|  |   ../src/e100boot.h ../src/compiler.h | ||||||
							
								
								
									
										55
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/rules.cbl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/rules.cbl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,55 @@ | |||||||
|  | # | ||||||
|  | # $Id: rules.cbl,v 1.4 2005/04/20 11:18:54 starvik Exp $ | ||||||
|  | # | ||||||
|  |  | ||||||
|  | VPATH     := .:../src | ||||||
|  |  | ||||||
|  | ifeq ($(findstring _noleds,$(IMAGE)),_noleds) | ||||||
|  | USE_LEDS := 0 | ||||||
|  | else | ||||||
|  | USE_LEDS := 1 | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | MAKEFLAGS := r | ||||||
|  | INCS      := -I. | ||||||
|  | DEFS      := -DUSE_LEDS=$(USE_LEDS) | ||||||
|  | CFLAGS    := -Os -Wall -Wmissing-prototypes -W -Wa,-N -nostdinc $(INCS) $(DEFS) -MMD | ||||||
|  | ASFLAGS   := $(CFLAGS) | ||||||
|  | LNFLAGS   := -Wl,--section-start,.startup=0x380000f0 -nostdlib -Os -Wl,-T../src/ldscript | ||||||
|  | CC        := cris-axis-elf-gcc  | ||||||
|  |  | ||||||
|  | OUT := $(patsubst %.ima,%.out,$(IMAGE)) | ||||||
|  |  | ||||||
|  | OBJS  = crt0.o common_init.o | ||||||
|  | ifeq ($(findstring net,$(IMAGE)),net) | ||||||
|  | OBJS += net_init.o | ||||||
|  | else | ||||||
|  | OBJS += ser_init.o | ||||||
|  | endif | ||||||
|  | OBJS += common.o flash.o hwregs.o e100boot_version.o | ||||||
|  |  | ||||||
|  | all:	../$(IMAGE) | ||||||
|  |  | ||||||
|  | $(OUT):	$(OBJS) ldscript | ||||||
|  | 	$(CC) -o $@ $(LNFLAGS) $(OBJS) | ||||||
|  |  | ||||||
|  | ../%.ima: %.out | ||||||
|  | 	bin-cris -o $@ $< | ||||||
|  | 	@find $@ -printf '# Size of image $@ is %s bytes.\n\n' | ||||||
|  |  | ||||||
|  | $(OBJS):	../rules.cbl Makefile | ||||||
|  |  | ||||||
|  | # We don't want this to be a dummy and be recreated every time we build, | ||||||
|  | # only after a make clean | ||||||
|  | e100boot_version.c: | ||||||
|  | 	@echo "Generating version file....." | ||||||
|  | 	@echo 'char e100boot_version[] = "This bootloader was built by '`id -u -n`' on '`date`'.\r\n";' > $@ | ||||||
|  |  | ||||||
|  | dummy: | ||||||
|  |  | ||||||
|  | clean: | ||||||
|  | 	rm -rf *.o *.d *.out *.ima deps e100boot_version.c | ||||||
|  |  | ||||||
|  | ifneq ($(MAKECMDGOALS),clean) | ||||||
|  | -include *.d | ||||||
|  | endif | ||||||
							
								
								
									
										
											BIN
										
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/ser.ima
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/ser.ima
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | # | ||||||
|  | # $Id: Makefile,v 1.1 2002/07/01 14:37:01 pkj Exp $ | ||||||
|  | # | ||||||
|  |  | ||||||
|  | IMAGE := ser.ima | ||||||
|  | include ../rules.cbl | ||||||
| @@ -0,0 +1,3 @@ | |||||||
|  | common.o: ../src/common.c ../src/hwregs.h ../src/compiler.h \ | ||||||
|  |   ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h \ | ||||||
|  |   ../src/e100boot.h | ||||||
| @@ -0,0 +1,3 @@ | |||||||
|  | common_init.o: ../src/common_init.c ../src/hwregs.h ../src/compiler.h \ | ||||||
|  |   ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h \ | ||||||
|  |   ../src/e100boot.h | ||||||
							
								
								
									
										1
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/ser/crt0.d
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/ser/crt0.d
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | crt0.o: ../src/crt0.S | ||||||
| @@ -0,0 +1 @@ | |||||||
|  | char e100boot_version[] = "This bootloader was built by root on Wed May 16 21:31:44 CEST 2007.\r\n"; | ||||||
| @@ -0,0 +1 @@ | |||||||
|  | e100boot_version.o: e100boot_version.c | ||||||
| @@ -0,0 +1 @@ | |||||||
|  | flash.o: ../src/flash.c ../src/e100boot.h ../src/compiler.h | ||||||
| @@ -0,0 +1,2 @@ | |||||||
|  | hwregs.o: ../src/hwregs.c ../src/compiler.h ../src/hwregs.h \ | ||||||
|  |   ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h | ||||||
							
								
								
									
										
											BIN
										
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/ser/ser.out
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/ser/ser.out
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | ser_init.o: ../src/ser_init.c ../src/hwregs.h ../src/compiler.h \ | ||||||
|  |   ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h \ | ||||||
|  |   ../src/sv_addr_ag.h ../src/sv_addr.agh ../src/e100boot.h | ||||||
| @@ -0,0 +1,6 @@ | |||||||
|  | # | ||||||
|  | # $Id: Makefile,v 1.1 2002/07/01 14:37:10 pkj Exp $ | ||||||
|  | # | ||||||
|  |  | ||||||
|  | IMAGE := ser_noleds.ima | ||||||
|  | include ../rules.cbl | ||||||
| @@ -0,0 +1,3 @@ | |||||||
|  | common.o: ../src/common.c ../src/hwregs.h ../src/compiler.h \ | ||||||
|  |   ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h \ | ||||||
|  |   ../src/e100boot.h | ||||||
| @@ -0,0 +1,3 @@ | |||||||
|  | common_init.o: ../src/common_init.c ../src/hwregs.h ../src/compiler.h \ | ||||||
|  |   ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h \ | ||||||
|  |   ../src/e100boot.h | ||||||
| @@ -0,0 +1 @@ | |||||||
|  | crt0.o: ../src/crt0.S | ||||||
| @@ -0,0 +1 @@ | |||||||
|  | char e100boot_version[] = "This bootloader was built by root on Wed May 16 21:31:46 CEST 2007.\r\n"; | ||||||
| @@ -0,0 +1 @@ | |||||||
|  | e100boot_version.o: e100boot_version.c | ||||||
| @@ -0,0 +1 @@ | |||||||
|  | flash.o: ../src/flash.c ../src/e100boot.h ../src/compiler.h | ||||||
| @@ -0,0 +1,2 @@ | |||||||
|  | hwregs.o: ../src/hwregs.c ../src/compiler.h ../src/hwregs.h \ | ||||||
|  |   ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h | ||||||
| @@ -0,0 +1,3 @@ | |||||||
|  | ser_init.o: ../src/ser_init.c ../src/hwregs.h ../src/compiler.h \ | ||||||
|  |   ../src/debug.h ../src/project.h ../src/hwregs_def.h ../src/hwregs_int.h \ | ||||||
|  |   ../src/sv_addr_ag.h ../src/sv_addr.agh ../src/e100boot.h | ||||||
							
								
								
									
										486
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/common.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										486
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/common.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,486 @@ | |||||||
|  | #include "hwregs.h" | ||||||
|  | #include "e100boot.h" | ||||||
|  |  | ||||||
|  | static void toggle_led(void); | ||||||
|  |  | ||||||
|  | static void read_load_info(void); | ||||||
|  | static void decode_load_info(void); | ||||||
|  |  | ||||||
|  | static void read_file(byte* addr, udword size); | ||||||
|  |  | ||||||
|  | #if USE_PRINT_DESCR | ||||||
|  | static void print_descr(dma_descr_T *d); | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | static int  memory_test(udword addr, udword size, udword *failed_address); | ||||||
|  | static void memory_dump(udword *from, udword *to); | ||||||
|  |  | ||||||
|  | extern byte _Stext[]; | ||||||
|  | extern byte _Edata[]; | ||||||
|  |  | ||||||
|  | #ifdef USE_BAUDRATE_CHANGING | ||||||
|  | byte change_baudrate; | ||||||
|  | udword new_baudrate; | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | void | ||||||
|  | level2_boot(void) | ||||||
|  | { | ||||||
|  | #if USE_LEDS | ||||||
|  |   REG_SET(R_PORT_PA_DATA, data_out, 0xaa); | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if 0 | ||||||
|  |   io_buf_next    = (byte*)IO_BUF_START; | ||||||
|  |   io_buf_cur     = (byte*)IO_BUF_START; | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if 1 | ||||||
|  |   send_string("\r\n\r\nDevice ID = "); | ||||||
|  |   send_hex(ntohl(tx_header.id), NL); | ||||||
|  |   send_string(e100boot_version); | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if 1 | ||||||
|  |   { | ||||||
|  |     udword sum = 0; | ||||||
|  |     byte *b; | ||||||
|  |  | ||||||
|  |     for (b = (byte*)_Stext; b != (byte*)_Edata; b++) { | ||||||
|  |       sum += *b; | ||||||
|  |     } | ||||||
|  |     send_string("Checksum of bootloader is "); | ||||||
|  |     send_hex(sum, NL); | ||||||
|  |   } | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  |   read_load_info(); | ||||||
|  |  | ||||||
|  |   __asm__ volatile ("jump _start"); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void  | ||||||
|  | toggle_led(void) | ||||||
|  | { | ||||||
|  | #if USE_LEDS | ||||||
|  |   REG_SET(R_PORT_PA_DATA, data_out, 0x55); | ||||||
|  |  | ||||||
|  |   while (1) { | ||||||
|  |     REG_SET(R_PORT_PA_DATA, data_out, ~REG_GET(R_PORT_PA_READ, data_in)); | ||||||
|  |     { | ||||||
|  |       volatile udword i; | ||||||
|  |        | ||||||
|  |       for (i = 0; i != 2000000; i++) | ||||||
|  |         ; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | #else | ||||||
|  |   while (1) { | ||||||
|  |   } | ||||||
|  | #endif | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void | ||||||
|  | read_load_info(void) | ||||||
|  | { | ||||||
|  | #ifdef USE_BAUDRATE_CHANGING | ||||||
|  |   change_baudrate = 0; | ||||||
|  | #endif | ||||||
|  |    | ||||||
|  |   send_string("Waiting for load info.\r\n"); | ||||||
|  |  | ||||||
|  |   send_ack(); | ||||||
|  |    | ||||||
|  |   read_file((byte*)IO_BUF_START, IO_BUF_END - IO_BUF_START - CRC_LEN); | ||||||
|  |   send_string("Got load info.\r\n"); | ||||||
|  |   decode_load_info(); | ||||||
|  |    | ||||||
|  | #ifdef USE_BAUDRATE_CHANGING | ||||||
|  |   if (change_baudrate) { | ||||||
|  |     REG_WR(R_SERIAL0_BAUD, new_baudrate); | ||||||
|  |     { | ||||||
|  |       udword i = 0; | ||||||
|  |        | ||||||
|  |       while (i++ < 1000000) | ||||||
|  |         ; | ||||||
|  |     } | ||||||
|  |     send_ack(); | ||||||
|  |   } | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  |   toggle_led(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void  | ||||||
|  | decode_load_info(void) | ||||||
|  | { | ||||||
|  |   udword         *type_p = (udword*)IO_BUF_START; | ||||||
|  |   udword          failed_address; | ||||||
|  |   udword          i; | ||||||
|  |   command_T      *cmd; | ||||||
|  |  | ||||||
|  |   while (type_p != (udword*)(IO_BUF_END - CRC_LEN)) { /* !!! */ | ||||||
|  | //    send_hex(type_p, NL); | ||||||
|  |     *type_p = ntohl(*type_p); | ||||||
|  | //    send_hex(*type_p, NL); | ||||||
|  |     type_p++; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  | //  memory_dump(IO_BUF_START, IO_BUF_END); | ||||||
|  |  | ||||||
|  |   cmd = (command_T*)IO_BUF_START; | ||||||
|  |   while (cmd->type) { | ||||||
|  |     switch (cmd->type) { | ||||||
|  |     case PACKET_INFO: | ||||||
|  |       send_string("PACKET_INFO\r\n"); | ||||||
|  |       send_hex(cmd->args.packet_info.addr, NL); | ||||||
|  |       send_hex(cmd->args.packet_info.size, NL); | ||||||
|  |  | ||||||
|  |       seq--; | ||||||
|  |       send_ack(); | ||||||
|  |       seq++; | ||||||
|  |  | ||||||
|  |       read_file((byte*)cmd->args.packet_info.addr, cmd->args.packet_info.size); | ||||||
|  |  | ||||||
|  |       (byte*)cmd += sizeof cmd->type + sizeof cmd->args.packet_info; | ||||||
|  |       break; | ||||||
|  |  | ||||||
|  |     case SET_REGISTER: | ||||||
|  |       send_string("SET_REGISTER\r\n"); | ||||||
|  |       send_hex(cmd->args.set_register.addr, NL); | ||||||
|  |       send_hex(cmd->args.set_register.val, NL); | ||||||
|  |  | ||||||
|  |       *(udword*)cmd->args.set_register.addr = cmd->args.set_register.val; | ||||||
|  |  | ||||||
|  |       (byte*)cmd += sizeof cmd->type + sizeof cmd->args.set_register; | ||||||
|  |       break; | ||||||
|  |  | ||||||
|  |     case GET_REGISTER: | ||||||
|  |       send_string("GET_REGISTER\r\n"); | ||||||
|  |       send_hex(cmd->args.get_register.addr, NL); | ||||||
|  |       send_hex(*(udword*)cmd->args.get_register.addr, NL); | ||||||
|  |  | ||||||
|  |       (byte*)cmd += sizeof cmd->type + sizeof cmd->args.get_register; | ||||||
|  |       break; | ||||||
|  |  | ||||||
|  |     case PAUSE_LOOP: | ||||||
|  |       send_string("PAUSE_LOOP\r\n"); | ||||||
|  |       send_hex(cmd->args.pause_loop.pause, NL); | ||||||
|  |  | ||||||
|  |       for (i = cmd->args.pause_loop.pause; i; i--) | ||||||
|  |         ; | ||||||
|  |  | ||||||
|  |       (byte*)cmd += sizeof cmd->type + sizeof cmd->args.pause_loop; | ||||||
|  |       break; | ||||||
|  |  | ||||||
|  |     case MEM_VERIFY: | ||||||
|  |       send_string("MEM_VERIFY\r\n"); | ||||||
|  |       send_hex(cmd->args.mem_verify.addr, NL); | ||||||
|  |       send_hex(cmd->args.mem_verify.val, NL); | ||||||
|  |  | ||||||
|  |       if (*(udword*)cmd->args.mem_verify.addr != cmd->args.mem_verify.val) { | ||||||
|  |         send_string("verify failed\r\n"); | ||||||
|  |         goto decode_failed; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       (byte*)cmd += sizeof cmd->type + sizeof cmd->args.mem_verify; | ||||||
|  |       break; | ||||||
|  |  | ||||||
|  |     case MEM_TEST: | ||||||
|  |       send_string("MEM_TEST\r\n"); | ||||||
|  |       send_hex(cmd->args.mem_test.from, NL); | ||||||
|  |       send_hex(cmd->args.mem_test.to, NL); | ||||||
|  |  | ||||||
|  |       if (!memory_test(cmd->args.mem_test.from, | ||||||
|  |                        cmd->args.mem_test.to, | ||||||
|  |                        &failed_address)) { | ||||||
|  |         send_string("### Memory test failed at "); | ||||||
|  |         send_hex(failed_address, NL); | ||||||
|  |         memory_dump((udword*)DWORD_ALIGN(failed_address - 64), | ||||||
|  |                     (udword*)DWORD_ALIGN(failed_address + 64)); | ||||||
|  |         goto decode_failed; | ||||||
|  |       } | ||||||
|  |       send_string("Passed memory test.\r\n"); | ||||||
|  |  | ||||||
|  |       (byte*)cmd += sizeof cmd->type + sizeof cmd->args.mem_test; | ||||||
|  |       break; | ||||||
|  |  | ||||||
|  |     case MEM_DUMP: | ||||||
|  |       send_string("MEM_DUMP\r\n"); | ||||||
|  |       send_hex(cmd->args.mem_dump.from_addr, NL); | ||||||
|  |       send_hex(cmd->args.mem_dump.to_addr, NL); | ||||||
|  |  | ||||||
|  |       memory_dump((udword*)cmd->args.mem_dump.from_addr, | ||||||
|  |                   (udword*)cmd->args.mem_dump.to_addr); | ||||||
|  |  | ||||||
|  |       (byte*)cmd += sizeof cmd->type + sizeof cmd->args.mem_dump; | ||||||
|  |       break; | ||||||
|  |  | ||||||
|  |     case MEM_CLEAR: | ||||||
|  |       send_string("MEM_CLEAR\r\n"); | ||||||
|  |       send_hex(cmd->args.mem_clear.from_addr, NL); | ||||||
|  |       send_hex(cmd->args.mem_clear.to_addr, NL); | ||||||
|  |  | ||||||
|  |       for (i = cmd->args.mem_clear.from_addr; | ||||||
|  |            i <= cmd->args.mem_clear.to_addr; | ||||||
|  |            i++) { | ||||||
|  |         *(byte*)i = 0x00; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       (byte*)cmd += sizeof cmd->type + sizeof cmd->args.mem_clear; | ||||||
|  |       break; | ||||||
|  |  | ||||||
|  |     case FLASH: | ||||||
|  |       send_string("FLASH\r\n"); | ||||||
|  |       send_hex((udword)cmd->args.flash.source, NL); | ||||||
|  |       send_hex(cmd->args.flash.offset, NL); | ||||||
|  |       send_hex(cmd->args.flash.size, NL); | ||||||
|  |  | ||||||
|  |       if ((i = flash_write(cmd->args.flash.source, | ||||||
|  |                            cmd->args.flash.offset, | ||||||
|  |                            cmd->args.flash.size)) != ERR_FLASH_OK) { | ||||||
|  |         if (i == ERR_FLASH_VERIFY) { | ||||||
|  |           udword size = | ||||||
|  |             (cmd->args.flash.size < 65536 ? cmd->args.flash.size : 65536); | ||||||
|  |  | ||||||
|  |           /* Try to erase the first block(s) we tried to flash to prevent a | ||||||
|  |              unit which failed to flash correctly from booting */ | ||||||
|  |           flash_write(NULL, cmd->args.flash.offset, size); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         goto decode_failed; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       (byte*)cmd += sizeof cmd->type + sizeof cmd->args.flash; | ||||||
|  |       break; | ||||||
|  |  | ||||||
|  |     case JUMP: | ||||||
|  | #if 1 | ||||||
|  |       /* for the printf function in our libc */ | ||||||
|  |       REG_WR(R_DMA_CH8_FIRST, *(udword*)&tx_header.dest[0]); | ||||||
|  |       REG_WR(R_DMA_CH9_FIRST, *(uword*)&tx_header.dest[4]); | ||||||
|  | //      REG_WR(R_NETWORK_SA_1, &tx_header.dest[4]); | ||||||
|  | //      REG_WR(R_NETWORK_SA_2, tx_header.id); | ||||||
|  | #endif | ||||||
|  |       send_string("JUMP\r\n"); | ||||||
|  |       send_hex(cmd->args.jump.addr, NL); | ||||||
|  |       send_string("END\r\n"); | ||||||
|  |  | ||||||
|  |       __asm__ volatile ("jump %0" :: "r" (cmd->args.jump.addr));     | ||||||
|  |  | ||||||
|  |       (byte*)cmd += sizeof cmd->type + sizeof cmd->args.jump; | ||||||
|  |       break; | ||||||
|  |  | ||||||
|  |     case LOOP: | ||||||
|  |       send_string("LOOP\r\n"); | ||||||
|  |       send_hex(cmd->args.bne.addr, NL); | ||||||
|  |       send_hex(cmd->args.bne.target, NL); | ||||||
|  |  | ||||||
|  |       if (*(udword*)cmd->args.bne.addr) { | ||||||
|  |         (*(udword*)cmd->args.bne.addr)--; | ||||||
|  |         (byte*)cmd = cmd->args.bne.target; | ||||||
|  |       } | ||||||
|  |       else { | ||||||
|  |         (byte*)cmd += sizeof cmd->type + sizeof cmd->args.bne; | ||||||
|  |       } | ||||||
|  |       break; | ||||||
|  |  | ||||||
|  | #ifdef USE_BAUDRATE_CHANGING | ||||||
|  |     case BAUDRATE: | ||||||
|  |       send_string("BAUDRATE\r\n"); | ||||||
|  |       send_hex(cmd->args.br.baudrate, NL); | ||||||
|  |  | ||||||
|  |       new_baudrate = cmd->args.br.baudrate; | ||||||
|  |  | ||||||
|  |       (byte*)cmd += sizeof cmd->type + sizeof cmd->args.br; | ||||||
|  |       break; | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  |     default: | ||||||
|  |       send_string("### Unknown type: "); | ||||||
|  |       send_hex(cmd->type, NL); | ||||||
|  |  | ||||||
|  |       goto decode_failed; | ||||||
|  |       break; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  | decode_failed: | ||||||
|  |   send_string("END\r\n"); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void  | ||||||
|  | read_file(byte* addr, udword size) | ||||||
|  | { | ||||||
|  |   udword nbr_read_last; | ||||||
|  |   udword sum; | ||||||
|  |   byte *b; | ||||||
|  |   byte *from; | ||||||
|  |    | ||||||
|  | /* send_string(">read_file\r\n"); */ | ||||||
|  |    | ||||||
|  |   nbr_read = 0; | ||||||
|  |   nbr_read_last = 0; | ||||||
|  |   target_address = (udword)addr; | ||||||
|  |    | ||||||
|  |   if (interface == NETWORK) { | ||||||
|  |     rx_descr2.buf    = (udword)addr; | ||||||
|  |     bytes_to_read    = size; | ||||||
|  |     rx_descr2.sw_len = size + CRC_LEN > 1500 ? 1500 : size + CRC_LEN; | ||||||
|  | /*  rx_descr2.sw_len = 1500; */ | ||||||
|  |  | ||||||
|  |     REG_SET(R_DMA_CH1_FIRST, first, (udword)&rx_descr); | ||||||
|  |      | ||||||
|  |     /* Restart receiver so descriptor is re-read. */ | ||||||
|  |     REG_SET(R_DMA_CH1_CMD, cmd, reset); | ||||||
|  |     while (REG_EQL(R_DMA_CH1_CMD, cmd, reset)) { | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     REG_SET(R_DMA_CH1_CMD, cmd, start); | ||||||
|  |  | ||||||
|  |     while (1) { | ||||||
|  | /*    send_hex(rx_descr2.hw_len, NL); */ | ||||||
|  |       from = (byte*)rx_descr2.buf; | ||||||
|  |       if (read_data()) { | ||||||
|  |         if (nbr_read < size) { | ||||||
|  |           REG_SET(R_DMA_CH1_CMD, cmd, start); | ||||||
|  |         } | ||||||
|  |          | ||||||
|  | #if USE_PRINT_DESCR | ||||||
|  |         print_descr(&rx_descr); | ||||||
|  |         print_descr(&rx_descr2); | ||||||
|  | #endif | ||||||
|  |          | ||||||
|  | #if 0 | ||||||
|  |         send_string("Read "); | ||||||
|  |         send_hex(rx_descr2.hw_len - CRC_LEN, NO_NL); | ||||||
|  |         send_string(" bytes. "); | ||||||
|  |         send_hex((udword)from, NO_NL); | ||||||
|  |         send_string(" - "); | ||||||
|  |         send_hex(rx_descr2.buf-1, NO_NL); | ||||||
|  |         send_string(" ("); | ||||||
|  |         send_hex(nbr_read, NO_NL); | ||||||
|  |         send_string("/"); | ||||||
|  |         send_hex(size, NO_NL); | ||||||
|  |         send_string(")\r\n"); | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  |         nbr_read_last = nbr_read; | ||||||
|  | /*      from = (byte*)rx_descr2.buf; */ | ||||||
|  |  | ||||||
|  |         if (nbr_read >= size) { | ||||||
|  |           break; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |   else  {  /* interface != NETWORK */ | ||||||
|  |     while (nbr_read < size) { | ||||||
|  |       read_data(); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   sum = 0; | ||||||
|  |   for (b = addr; b != (byte*)(addr+size); b++) { | ||||||
|  |     sum += *b; | ||||||
|  |   } | ||||||
|  |   send_string("Checksum of file is "); | ||||||
|  |   send_hex(sum, NL); | ||||||
|  |  | ||||||
|  | /*  memory_dump((udword*)addr, (udword*)addr+size); */ | ||||||
|  | /*  send_string("<read_file\r\n"); */ | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #if USE_PRINT_DESCR | ||||||
|  | void | ||||||
|  | print_descr(dma_descr_T *d) | ||||||
|  | { | ||||||
|  |   send_string("Descriptor at "); | ||||||
|  |   send_hex((udword)d, NL); | ||||||
|  |    | ||||||
|  |   send_string("ctrl   : "); | ||||||
|  |   send_hex(d->ctrl, NL); | ||||||
|  |    | ||||||
|  |   send_string("sw_len : "); | ||||||
|  |   send_hex(d->sw_len, NL); | ||||||
|  |    | ||||||
|  |   send_string("next   : "); | ||||||
|  |   send_hex(d->next, NL); | ||||||
|  |    | ||||||
|  |   send_string("buf    : "); | ||||||
|  |   send_hex(d->buf, NL); | ||||||
|  |    | ||||||
|  |   send_string("status : "); | ||||||
|  |   send_hex(d->status, NL); | ||||||
|  |    | ||||||
|  |   send_string("hw_len : "); | ||||||
|  |   send_hex(d->hw_len, NL); | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | int | ||||||
|  | memory_test(udword from, udword to, udword *failed_address) | ||||||
|  | { | ||||||
|  |   udword i; | ||||||
|  |   udword j; | ||||||
|  |   byte b; | ||||||
|  |  | ||||||
|  |   /* At each dword (but bytewise) write the inverse of the adress, | ||||||
|  |      check that it worked, then write the inverse of the last byte | ||||||
|  |      written. Exit on fail. The memory after a successfull test will | ||||||
|  |      be:  | ||||||
|  |  | ||||||
|  |      0xC0000000 : 0xC0000000 0xC0000004 0xC0000008 0xC000000C | ||||||
|  |      0xC0000010 : 0xC0000010 0xC0000014 0xC0000018 0xC000001C | ||||||
|  |      */ | ||||||
|  |  | ||||||
|  |   for (i = from; i < to; i += 4) { | ||||||
|  |     for (j = 0; (j != sizeof(udword)) && (i+j < to); j++) { | ||||||
|  |       b = ((~i) >> (j*8)) & 0xff; | ||||||
|  |       *(volatile byte*)(i+j) = b; | ||||||
|  |       if (*(volatile byte*)(i+j) == b) { | ||||||
|  |         *(volatile byte*)(i+j) = ~b; | ||||||
|  |       } | ||||||
|  |       else { | ||||||
|  |         *failed_address = i+j; | ||||||
|  |         send_string("### Memory test 1 failed at "); | ||||||
|  |         send_hex(*failed_address, NL); | ||||||
|  |         return FALSE; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /* Run through entire region, check bytewise that the dwords contain | ||||||
|  |      the address to the dword. Exit on fail. */ | ||||||
|  |  | ||||||
|  |   for (i = from; i < to; i += 4) { | ||||||
|  |     for (j = 0; (j != sizeof(udword)) && (i+j < to); j++) { | ||||||
|  |       b = (i >> (j*8)) & 0xff; | ||||||
|  |       if (*(volatile byte*)(i+j) != b) { | ||||||
|  |         *failed_address = i+j; | ||||||
|  |         send_string("### Memory test 2 failed at "); | ||||||
|  |         send_hex(*failed_address, NL); | ||||||
|  |         return FALSE; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   return TRUE; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void | ||||||
|  | memory_dump(udword *from, udword *to) | ||||||
|  | { | ||||||
|  |   udword *i = from; | ||||||
|  |   int j; | ||||||
|  |    | ||||||
|  |   for (; i <= to; i += 4) { | ||||||
|  |     send_hex((udword)i, NO_NL); | ||||||
|  |     send_string(" :"); | ||||||
|  |     for(j = 0; j != 4 && (i+j <= to); j++) { | ||||||
|  |       send_string(" "); | ||||||
|  |       send_hex(*(udword*)(i+j), NO_NL); | ||||||
|  |     } | ||||||
|  |     send_string("\r\n"); | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										209
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/common_init.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										209
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/common_init.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,209 @@ | |||||||
|  | /***************************************************************************** | ||||||
|  | *! | ||||||
|  | *! FILE NAME  : common_init.c | ||||||
|  | *! | ||||||
|  | *! DESCRIPTION: This piece of code is loaded at bootstrap and is put in the | ||||||
|  | *!              cache at 0x380000F0.  Depending of how R_BUS_STATUS<2:1> is | ||||||
|  | *!              set different kinds of bootstrap is performed. | ||||||
|  | *! | ||||||
|  | *!              00 - Normal boot. No bootstrap is performed and this code | ||||||
|  | *!                   is never loaded. | ||||||
|  | *!              01 - Serial boot. 784 bytes is loaded and execution starts | ||||||
|  | *!                   at 0x380000F0. | ||||||
|  | *!              11 - Parallel boot. 784 bytes is loaded and execution starts | ||||||
|  | *!                   at 0x380000F0. | ||||||
|  | *!              10 - Network boot. 1484 bytes is loaded and execution start | ||||||
|  | *!                   at 0x380000F4. | ||||||
|  | *! | ||||||
|  | *! --------------------------------------------------------------------------- | ||||||
|  | *! HISTORY | ||||||
|  | *! | ||||||
|  | *! DATE         NAME               CHANGES | ||||||
|  | *! ----         ----               ------- | ||||||
|  | *! 980326       Ronny Ranerup      Initial version | ||||||
|  | *! Sep 20 1999  Jonas Dellenvall   Added port3 debug support | ||||||
|  | *! 20020206     ronny              Yeah, and I removed it again... | ||||||
|  | *! | ||||||
|  | *! --------------------------------------------------------------------------- | ||||||
|  | *! (C) Copyright 1998-2002, Axis Communications AB, LUND, SWEDEN | ||||||
|  | *!***************************************************************************/ | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  | ||||||
|  |    Misc notes: | ||||||
|  |  | ||||||
|  |    It is very important to keep this file short. This and the boot | ||||||
|  |    interface specific parts must fit into the first boot packet. | ||||||
|  |  | ||||||
|  | */ | ||||||
|  |  | ||||||
|  | /****************** INCLUDE FILES SECTION ***********************************/ | ||||||
|  |  | ||||||
|  | #include "hwregs.h" | ||||||
|  | #include "e100boot.h" | ||||||
|  |  | ||||||
|  | /****************** CONSTANT AND MACRO SECTION ******************************/ | ||||||
|  |  | ||||||
|  | /****************** TYPE DEFINITION SECTION *********************************/ | ||||||
|  |  | ||||||
|  | /****************** LOCAL FUNCTION DECLARATION SECTION **********************/ | ||||||
|  |  | ||||||
|  | static int timeout(void); | ||||||
|  |  | ||||||
|  | /****************** GLOBAL VARIABLE DECLARATION SECTION *********************/ | ||||||
|  |  | ||||||
|  | udword	nbr_read;	/* How many bytes has been read from current file */ | ||||||
|  | byte    interface;	/* Which I/O interface is the current one */ | ||||||
|  | byte    set_dest;	/* Have we set the destination address in tx_header */ | ||||||
|  | udword  last_timeout; | ||||||
|  |  | ||||||
|  | struct packet_header_T tx_header; | ||||||
|  | dma_descr_T tx_descr;	/* For packet header */ | ||||||
|  | dma_descr_T tx_descr2;	/* packet data */ | ||||||
|  |  | ||||||
|  | struct packet_header_T rx_header; | ||||||
|  | dma_descr_T rx_descr;	/* For packet header */ | ||||||
|  | dma_descr_T rx_descr2;	/* packet data */ | ||||||
|  |  | ||||||
|  | udword seq;		/* Sequence number of next wanted packet */ | ||||||
|  | byte serial_up; | ||||||
|  |  | ||||||
|  | /****************** LOCAL VARIABLE DECLARATION SECTION **********************/ | ||||||
|  |  | ||||||
|  | /****************** FUNCTION DEFINITION SECTION *****************************/ | ||||||
|  |  | ||||||
|  | void  | ||||||
|  | crt1(void) | ||||||
|  | { | ||||||
|  |   /* Do this only once so we don't reset the timers and destroy the 32 | ||||||
|  |      bit timer-register used as random number generator */ | ||||||
|  |  | ||||||
|  |   REG_SET__R_TIMER_CTRL(  | ||||||
|  | 			timerdiv1, 0, | ||||||
|  | 			timerdiv0, 0, | ||||||
|  | 			presc_timer1, normal,  | ||||||
|  | 			i1,        clr, | ||||||
|  | 			tm1,       run, | ||||||
|  | 			clksel1,   cascade0, | ||||||
|  | 			presc_ext, prescale, | ||||||
|  | 			i0,        clr, | ||||||
|  | 			tm0,       run, | ||||||
|  | 			clksel0,   c9600Hz); | ||||||
|  |    | ||||||
|  |   REG_SET__R_TIMER_CTRL( | ||||||
|  | 			timerdiv1, 0, | ||||||
|  | 			timerdiv0, 0, | ||||||
|  | 			presc_timer1, normal,  | ||||||
|  | 			i1,        nop, | ||||||
|  | 			tm1,       run, | ||||||
|  | 			clksel1,   cascade0, | ||||||
|  | 			presc_ext, prescale, | ||||||
|  | 			i0,        nop, | ||||||
|  | 			tm0,       run, | ||||||
|  | 			clksel0,   c9600Hz); | ||||||
|  |    | ||||||
|  |   start(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void | ||||||
|  | start(void) | ||||||
|  | { | ||||||
|  | #if USE_LEDS | ||||||
|  |   REG_SET__R_PORT_PA_DIR(  | ||||||
|  | 			 dir7, output, | ||||||
|  | 			 dir6, output, | ||||||
|  | 			 dir5, output, | ||||||
|  | 			 dir4, output, | ||||||
|  | 			 dir3, output, | ||||||
|  | 			 dir2, output, | ||||||
|  | 			 dir1, output, | ||||||
|  | 			 dir0, input);	/* not for prodtest */ | ||||||
|  |    | ||||||
|  |   REG_SET__R_PORT_PA_DATA(data_out, 0); | ||||||
|  |  | ||||||
|  |   REG_SET__R_PORT_PB_DIR(  | ||||||
|  | 			 dir7, output, | ||||||
|  | 			 dir6, output, | ||||||
|  | 			 dir5, output, | ||||||
|  | 			 dir4, output, | ||||||
|  | 			 dir3, output, | ||||||
|  | 			 dir2, output, | ||||||
|  | 			 dir1, output, | ||||||
|  | 			 dir0, output); | ||||||
|  |    | ||||||
|  |   REG_SET__R_PORT_PB_DATA(data_out, 0xff); | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  |   /* We must initialize all (global) variables here, since the .data | ||||||
|  |      and .bss area are used before they are loaded. */ | ||||||
|  |  | ||||||
|  |   //serial_up        = FALSE; | ||||||
|  |   nbr_read         = 0; | ||||||
|  |  | ||||||
|  |   /* Get a random value to use as id. */ | ||||||
|  |   tx_header.id     = htonl(REG_RD(R_TIMER_DATA)); | ||||||
|  |    | ||||||
|  |   /* timer01 is used as timer. */ | ||||||
|  |   last_timeout     = REG_GET(R_TIMER01_DATA, count); | ||||||
|  |    | ||||||
|  |   interface        = REG_GET(R_BUS_STATUS, boot) - 1; /* 0,1,2 */ | ||||||
|  |   rx_descr2.status = 0;	 | ||||||
|  |  | ||||||
|  |   /* Initialize the boot interface */ | ||||||
|  |   init_interface(); | ||||||
|  |   send_ack();	/* Ack the first bootpacket, i.e. this code. seq 0. */ | ||||||
|  |  | ||||||
|  |   while (1) { | ||||||
|  |     if (read_data()) { | ||||||
|  |       if (nbr_read >= (udword)bytes_to_read) { | ||||||
|  | 	break; | ||||||
|  |       } | ||||||
|  |       else if (interface == NETWORK) { | ||||||
|  | 	REG_SET(R_DMA_CH1_CMD, cmd, start); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  | #if USE_LEDS | ||||||
|  |   REG_SET(R_PORT_PA_DATA, data_out, 0x55); | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  |   level2_boot(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | int | ||||||
|  | read_data(void) | ||||||
|  | { | ||||||
|  |   if (handle_read()) { | ||||||
|  |     return TRUE; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   if (timeout()) { | ||||||
|  |     send_ack(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   return FALSE; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | int | ||||||
|  | timeout(void) | ||||||
|  | { | ||||||
|  |   volatile int now = REG_GET(R_TIMER01_DATA, count); | ||||||
|  |   int elapsed; | ||||||
|  |   int wait_time = 9600; | ||||||
|  |  | ||||||
|  |   elapsed = last_timeout - now; | ||||||
|  |  | ||||||
|  |   if (elapsed < 0) { | ||||||
|  |     elapsed = -elapsed; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   if (elapsed > wait_time) { | ||||||
|  |     last_timeout = now; | ||||||
|  |     return TRUE; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   return FALSE; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /****************** END OF FILE common_init.c *******************************/ | ||||||
							
								
								
									
										10
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/compiler.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/compiler.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | |||||||
|  | #ifndef _COMPILER_H | ||||||
|  | #define _COMPILER_H | ||||||
|  |  | ||||||
|  | typedef int dword; | ||||||
|  | typedef unsigned int udword; | ||||||
|  | typedef signed short word; | ||||||
|  | typedef unsigned short uword; | ||||||
|  | typedef unsigned char byte; | ||||||
|  |  | ||||||
|  | #endif | ||||||
							
								
								
									
										17
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/crt0.S
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/crt0.S
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | |||||||
|  | 	.global crt0    ; Needed because of a bug in binutils | ||||||
|  | 	.global _target_address  | ||||||
|  | 	.global _bytes_to_read | ||||||
|  |  | ||||||
|  | 	.section .startup, "ax" | ||||||
|  |  | ||||||
|  | 	nop | ||||||
|  | 	nop | ||||||
|  |  | ||||||
|  | 	 | ||||||
|  | crt0: | ||||||
|  | 	move.d 0x38001f00, sp | ||||||
|  | 	jump _crt1 | ||||||
|  | 	 | ||||||
|  | _bytes_to_read:	 .dword 0x12345678 | ||||||
|  | _target_address: .dword 0x87654321 | ||||||
|  |  | ||||||
							
								
								
									
										332
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/e100boot.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										332
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/e100boot.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,332 @@ | |||||||
|  | /* $Id: e100boot.h,v 1.9 2003/12/16 09:04:07 magnusmn Exp $ */ | ||||||
|  |  | ||||||
|  | #include "compiler.h" | ||||||
|  |  | ||||||
|  | #define DMA_DESCR__out_priority__BITNR  5 | ||||||
|  | #define DMA_DESCR__out_priority__WIDTH  1 | ||||||
|  | #define DMA_DESCR__out_priority__normal 0 | ||||||
|  | #define DMA_DESCR__out_priority__high   1 | ||||||
|  |  | ||||||
|  | #define DMA_DESCR__ecp_cmd__BITNR  4 | ||||||
|  | #define DMA_DESCR__ecp_cmd__WIDTH  1 | ||||||
|  | #define DMA_DESCR__ecp_cmd__normal 0 | ||||||
|  | #define DMA_DESCR__ecp_cmd__high   1 | ||||||
|  |  | ||||||
|  | #define DMA_DESCR__tx_err__BITNR 4 | ||||||
|  | #define DMA_DESCR__tx_err__WIDTH 1 | ||||||
|  | #define DMA_DESCR__tx_err__enable 1 | ||||||
|  | #define DMA_DESCR__tx_err__disable 0 | ||||||
|  |  | ||||||
|  | #define DMA_DESCR__intr__BITNR  3 | ||||||
|  | #define DMA_DESCR__intr__WIDTH  1 | ||||||
|  | #define DMA_DESCR__intr__enable 1 | ||||||
|  | #define DMA_DESCR__intr__disable 0 | ||||||
|  |  | ||||||
|  | #define DMA_DESCR__wait__BITNR 2 | ||||||
|  | #define DMA_DESCR__wait__WIDTH 1 | ||||||
|  | #define DMA_DESCR__wait__enable 1 | ||||||
|  | #define DMA_DESCR__wait__disable 0 | ||||||
|  |  | ||||||
|  | #define DMA_DESCR__eop__BITNR 1 | ||||||
|  | #define DMA_DESCR__eop__WIDTH 1 | ||||||
|  | #define DMA_DESCR__eop__enable 1 | ||||||
|  | #define DMA_DESCR__eop__disable 0 | ||||||
|  |  | ||||||
|  | #define DMA_DESCR__eol__BITNR 0 | ||||||
|  | #define DMA_DESCR__eol__WIDTH 1 | ||||||
|  | #define DMA_DESCR__eol__enable 1 | ||||||
|  | #define DMA_DESCR__eol__disable 0 | ||||||
|  |  | ||||||
|  | #define DMA_DESCR__sw_len__BITNR 0 | ||||||
|  | #define DMA_DESCR__sw_len__WIDTH 16 | ||||||
|  |  | ||||||
|  | #define DMA_DESCR__next__BITNR 0 | ||||||
|  | #define DMA_DESCR__next__WIDTH 32 | ||||||
|  |  | ||||||
|  | #define DMA_DESCR__buf__BITNR 0 | ||||||
|  | #define DMA_DESCR__buf__WIDTH 32 | ||||||
|  |  | ||||||
|  | #define DMA_DESCR__fifo_len__BITNR 8 | ||||||
|  | #define DMA_DESCR__fifo_len__WIDTH 7 | ||||||
|  |  | ||||||
|  | #define DMA_DESCR__crc_err__BITNR 7 | ||||||
|  | #define DMA_DESCR__crc_err__WIDTH 1 | ||||||
|  | #define DMA_DESCR__crc_err__enable 1 | ||||||
|  | #define DMA_DESCR__crc_err__disable 0 | ||||||
|  |  | ||||||
|  | #define DMA_DESCR__align_err__BITNR 6 | ||||||
|  | #define DMA_DESCR__align_err__WIDTH 1 | ||||||
|  | #define DMA_DESCR__align_err__enable 1 | ||||||
|  | #define DMA_DESCR__align_err__disable 0 | ||||||
|  |  | ||||||
|  | #define DMA_DESCR__in_priority__BITNR 5 | ||||||
|  | #define DMA_DESCR__in_priority__WIDTH 1 | ||||||
|  | #define DMA_DESCR__in_priority__high 1 | ||||||
|  | #define DMA_DESCR__in_priority__normal 0 | ||||||
|  |  | ||||||
|  | #define DMA_DESCR__stop__BITNR 4 | ||||||
|  | #define DMA_DESCR__stop__WIDTH 1 | ||||||
|  |  | ||||||
|  | #define DMA_DESCR__rd_eop__BITNR 1 | ||||||
|  | #define DMA_DESCR__rd_eop__WIDTH 1 | ||||||
|  |  | ||||||
|  | #define DMA_DESCR__hw_len__BITNR 0 | ||||||
|  | #define DMA_DESCR__hw_len__WIDTH 16 | ||||||
|  |  | ||||||
|  | #define SET_ETHER_ADDR(a0_0,a0_1,a0_2,a0_3,a0_4,a0_5,a1_0,a1_1,a1_2,a1_3,a1_4,a1_5) \ | ||||||
|  |   *R_NETWORK_SA_0 = a0_0 | (a0_1 << 8) | (a0_2 << 16) | (a0_3 << 24); \ | ||||||
|  |   *R_NETWORK_SA_1 = a0_4 | (a0_5 << 8) | (a1_0 << 16) | (a1_1 << 24); \ | ||||||
|  |   *R_NETWORK_SA_2 = a1_2 | (a1_3 << 8) | (a1_4 << 16) | (a1_5 << 24); | ||||||
|  |  | ||||||
|  | #define DWORD_ALIGN(x) ((x) & 0xfffffffc) | ||||||
|  |  | ||||||
|  | #define CRC_LEN 4 | ||||||
|  |  | ||||||
|  | #define TRUE  1 | ||||||
|  | #define FALSE 0 | ||||||
|  |  | ||||||
|  | #define NL 1 | ||||||
|  | #define NO_NL 0 | ||||||
|  |  | ||||||
|  | #define SERIAL   0 | ||||||
|  | #define NETWORK  1 | ||||||
|  | #define PARALLEL 2 | ||||||
|  |  | ||||||
|  | #define STRING      0 | ||||||
|  | #define INT         1 | ||||||
|  | #define ACK         2 | ||||||
|  | #define BOOT_PACKET 3 | ||||||
|  | #define BOOT_CMDS   4 | ||||||
|  | #define NET_INT     5 | ||||||
|  | #define NET_INT_NL  6 | ||||||
|  |  | ||||||
|  | #define JUMP           1 | ||||||
|  | #define MEM_TEST       2 | ||||||
|  | #define PACKET_INFO    3 | ||||||
|  | #define SET_REGISTER   4 | ||||||
|  | #define GET_REGISTER   5 | ||||||
|  | #define MEM_DUMP       6 | ||||||
|  | #define MEM_CLEAR      7 | ||||||
|  | #define MEM_VERIFY     8 | ||||||
|  | #define FLASH          9 | ||||||
|  | #define PAUSE_LOOP     10 | ||||||
|  | #define LOOP           11 | ||||||
|  | #define BAUDRATE       12 | ||||||
|  |  | ||||||
|  | #define ERR_FLASH_OK        0 | ||||||
|  | #define ERR_FLASH_NONE      1 | ||||||
|  | #define ERR_FLASH_TOO_SMALL 2 | ||||||
|  | #define ERR_FLASH_VERIFY    3 | ||||||
|  | #define ERR_FLASH_ERASE     4 | ||||||
|  |  | ||||||
|  | #define TIMEOUT_LIMIT ( ((6250 * 1000) / 0xffff) / 2) | ||||||
|  |  | ||||||
|  | #define TX_CTRL_EOP \ | ||||||
|  | (IO_STATE(DMA_DESCR, intr, disable) |\ | ||||||
|  |  IO_STATE(DMA_DESCR, wait, enable)  |\ | ||||||
|  |  IO_STATE(DMA_DESCR, eop,  enable)  |\ | ||||||
|  |  IO_STATE(DMA_DESCR, eol,  enable)) | ||||||
|  |       | ||||||
|  | #define TX_CTRL \ | ||||||
|  |      (IO_STATE(DMA_DESCR, intr, disable) |\ | ||||||
|  |       IO_STATE(DMA_DESCR, wait, disable) |\ | ||||||
|  |       IO_STATE(DMA_DESCR, eop,  disable) |\ | ||||||
|  |       IO_STATE(DMA_DESCR, eol,  disable)) | ||||||
|  |      | ||||||
|  | #define LOAD_ADDRESS 0x38001000     | ||||||
|  | #define SIZEOF_BOOT_LEVEL_1 2048 | ||||||
|  |  | ||||||
|  | /* This is where the commands are transfered to. */ | ||||||
|  | #define IO_BUF_START	0x38001f00 | ||||||
|  | #define IO_BUF_END	0x380020f0 /* bootcode start + cache size */ | ||||||
|  |  | ||||||
|  | /* This should only be used in the cbl, but if we compile the sbl for  | ||||||
|  |  * elinux then __CRIS__ will be defined, and these are already defined | ||||||
|  |  * in uC-libc. Check that __linux__ is not defined as well! | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | #if defined(__CRIS__) && !defined(__linux__) | ||||||
|  | #define NULL ((void*)0) | ||||||
|  |  | ||||||
|  | static inline udword | ||||||
|  | htonl(udword x) | ||||||
|  | { | ||||||
|  |   __asm__ ("swapwb %0" : "=r" (x) : "0" (x)); | ||||||
|  |    | ||||||
|  |   return(x); | ||||||
|  | } | ||||||
|  | #ifndef ntohl      | ||||||
|  | #define ntohl(x) htonl(x) | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | static inline uword | ||||||
|  | htons(uword x) | ||||||
|  | { | ||||||
|  |   __asm__ ("swapb %0" : "=r" (x) : "0" (x)); | ||||||
|  |    | ||||||
|  |   return(x); | ||||||
|  | } | ||||||
|  | #ifndef ntohs | ||||||
|  | #define ntohs(x) htons(x) | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | /*#define ntohs(x) \*/ | ||||||
|  | /*((unsigned short)((((unsigned short)(x) & 0x00ffU) << 8) | \*/ | ||||||
|  | /*		     (((unsigned short)(x) & 0xff00U) >>  8)))*/ | ||||||
|  | /*     */ | ||||||
|  |  | ||||||
|  | /*#define ntohl(x) \*/ | ||||||
|  | /*((unsigned long int)((((unsigned long int)(x) & 0x000000ffU) << 24) | \*/ | ||||||
|  | /*		     (((unsigned long int)(x) & 0x0000ff00U) <<  8) | \*/ | ||||||
|  | /*		     (((unsigned long int)(x) & 0x00ff0000U) >>  8) | \*/ | ||||||
|  | /*		     (((unsigned long int)(x) & 0xff000000U) >> 24)))*/ | ||||||
|  |  | ||||||
|  | struct packet_header_T	/* Size = 38 */ | ||||||
|  | {   | ||||||
|  |   byte      dest[6]; | ||||||
|  |   byte      src[6]; | ||||||
|  |   uword     length; | ||||||
|  |   udword    snap1; | ||||||
|  |   udword    snap2; | ||||||
|  |   udword    tag;		 | ||||||
|  |   udword    seq; | ||||||
|  |   udword    type; | ||||||
|  |   udword    id;     | ||||||
|  | } __attribute__ ((packed)); | ||||||
|  |  | ||||||
|  | typedef struct dma_descr_T { | ||||||
|  |   uword  sw_len;                /* 0-1 */ | ||||||
|  |   uword  ctrl;                  /* 2-3 */ | ||||||
|  |   udword next;                  /* 4-7 */ | ||||||
|  |   udword buf;                   /* 8-11 */ | ||||||
|  |   uword  hw_len;                /* 12-13 */ | ||||||
|  |   uword  status;                /* 14-15 */ | ||||||
|  | } dma_descr_T; | ||||||
|  |  | ||||||
|  | typedef struct packet_info_T { | ||||||
|  |   udword addr; | ||||||
|  |   udword size; | ||||||
|  | } packet_info_T; | ||||||
|  |  | ||||||
|  | typedef struct set_register_T { | ||||||
|  |   udword addr; | ||||||
|  |   udword val; | ||||||
|  | } set_register_T; | ||||||
|  |  | ||||||
|  | typedef struct get_register_T { | ||||||
|  |   udword addr; | ||||||
|  | } get_register_T; | ||||||
|  |  | ||||||
|  | typedef struct pause_loop_T { | ||||||
|  |   udword pause; | ||||||
|  | } pause_loop_T; | ||||||
|  |  | ||||||
|  | typedef struct mem_verify_T { | ||||||
|  |   udword addr; | ||||||
|  |   udword val; | ||||||
|  | } mem_verify_T; | ||||||
|  |  | ||||||
|  | typedef struct mem_test_T { | ||||||
|  |   udword from; | ||||||
|  |   udword to; | ||||||
|  | } mem_test_T; | ||||||
|  |  | ||||||
|  | typedef struct mem_dump_T { | ||||||
|  |   udword from_addr; | ||||||
|  |   udword to_addr; | ||||||
|  | } mem_dump_T; | ||||||
|  |  | ||||||
|  | typedef struct mem_clear_T { | ||||||
|  |   udword from_addr; | ||||||
|  |   udword to_addr; | ||||||
|  | } mem_clear_T; | ||||||
|  |  | ||||||
|  | typedef struct flash_T { | ||||||
|  |   unsigned char *source; | ||||||
|  |   udword offset; | ||||||
|  |   udword size; | ||||||
|  | } flash_T; | ||||||
|  |  | ||||||
|  | typedef struct jump_T { | ||||||
|  |   udword addr; | ||||||
|  | } jump_T; | ||||||
|  |  | ||||||
|  | typedef struct bne_T { | ||||||
|  |   udword addr; | ||||||
|  |   udword target; | ||||||
|  | } bne_T; | ||||||
|  |  | ||||||
|  | typedef struct br_T { | ||||||
|  |   udword baudrate; | ||||||
|  | } br_T; | ||||||
|  |  | ||||||
|  | typedef struct command_T { | ||||||
|  |   udword type; | ||||||
|  |   union { | ||||||
|  |     packet_info_T  packet_info; | ||||||
|  |     set_register_T set_register; | ||||||
|  |     get_register_T get_register; | ||||||
|  |     pause_loop_T   pause_loop; | ||||||
|  |     mem_verify_T   mem_verify; | ||||||
|  |     mem_test_T     mem_test; | ||||||
|  |     mem_dump_T     mem_dump; | ||||||
|  |     mem_clear_T    mem_clear; | ||||||
|  |     flash_T        flash; | ||||||
|  |     jump_T         jump; | ||||||
|  |     bne_T          bne; | ||||||
|  |     br_T           br; | ||||||
|  |   } args; | ||||||
|  | } command_T; | ||||||
|  |  | ||||||
|  | #define NETWORK_HEADER_LENGTH sizeof(struct packet_header_T) | ||||||
|  |  | ||||||
|  | void crt1(void); | ||||||
|  | void start(void); | ||||||
|  | void level2_boot(void); | ||||||
|  | int  read_data(void); | ||||||
|  | int  handle_network_read(void); | ||||||
|  | int  flash_write(const unsigned char *source, unsigned int offset, unsigned int size); | ||||||
|  |  | ||||||
|  | void init_interface(void); | ||||||
|  | int handle_read(void); | ||||||
|  | void send_ack(void); | ||||||
|  | void send_string(char *str); | ||||||
|  | void send_hex(udword v, byte nl); | ||||||
|  |  | ||||||
|  | extern char e100boot_version[]; | ||||||
|  |  | ||||||
|  | extern volatile udword bytes_to_read; | ||||||
|  | extern volatile udword target_address; | ||||||
|  |  | ||||||
|  | extern udword  nbr_read; | ||||||
|  | extern byte    interface; | ||||||
|  | extern byte    set_dest; | ||||||
|  | extern udword  last_timeout; | ||||||
|  | extern byte   *io_buf_next; | ||||||
|  | extern byte   *io_buf_cur; | ||||||
|  |  | ||||||
|  | extern struct packet_header_T tx_header; | ||||||
|  | extern dma_descr_T tx_descr; | ||||||
|  | extern dma_descr_T tx_descr2; | ||||||
|  |  | ||||||
|  | extern struct packet_header_T rx_header; | ||||||
|  | extern dma_descr_T rx_descr; | ||||||
|  | extern dma_descr_T rx_descr2; | ||||||
|  |  | ||||||
|  | extern uword timeout_limit;   | ||||||
|  | extern udword seq; | ||||||
|  | extern byte serial_up; | ||||||
|  |  | ||||||
|  | enum {                    /* Available in:  */ | ||||||
|  |   d_eol      = (1 << 0),  /* flags          */ | ||||||
|  |   d_eop      = (1 << 1),  /* flags & status */ | ||||||
|  |   d_wait     = (1 << 2),  /* flags          */ | ||||||
|  |   d_int      = (1 << 3),  /* flags          */ | ||||||
|  |   d_txerr    = (1 << 4),  /* flags          */ | ||||||
|  |   d_stop     = (1 << 4),  /*         status */ | ||||||
|  |   d_ecp      = (1 << 4),  /* flags & status */ | ||||||
|  |   d_pri      = (1 << 5),  /* flags & status */ | ||||||
|  |   d_alignerr = (1 << 6),  /*         status */ | ||||||
|  |   d_crcerr   = (1 << 7)   /*         status */ | ||||||
|  | }; | ||||||
							
								
								
									
										1125
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/flash.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1125
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/flash.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1713
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/hwregs.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1713
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/hwregs.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										44822
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/hwregs.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44822
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/hwregs.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										5435
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/hwregs_def.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5435
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/hwregs_def.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										25386
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/hwregs_int.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25386
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/hwregs_int.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										38
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/ldscript
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/ldscript
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | |||||||
|  | SECTIONS | ||||||
|  | { | ||||||
|  |   . = 0x380000f0; | ||||||
|  |   __Stext = .; | ||||||
|  |  | ||||||
|  |   .text : | ||||||
|  |   { | ||||||
|  |     KEEP (*(.startup)) | ||||||
|  |     KEEP (*(.text)) | ||||||
|  |     *(.text.*) | ||||||
|  |     KEEP (*(.rodata)) | ||||||
|  |     *(.rodata.*) | ||||||
|  |   } =0 | ||||||
|  |  | ||||||
|  |   __Etext = .; | ||||||
|  |  | ||||||
|  |   .data : | ||||||
|  |   { | ||||||
|  |     __Sdata = .; | ||||||
|  |     KEEP (*(.data)) | ||||||
|  |     *(.data.*) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |     __Edata = .; | ||||||
|  |   . = ALIGN (4); | ||||||
|  |    __Sbss = .; | ||||||
|  |   .bss : | ||||||
|  |   { | ||||||
|  |    /* The network crc will land in the first four bytes of the | ||||||
|  | 	bss. Move the variables out of the way. */ | ||||||
|  |    . = . + 12; | ||||||
|  |    *(.bss.*) | ||||||
|  |    *(COMMON) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   __Ebss = .; | ||||||
|  |  | ||||||
|  | } | ||||||
							
								
								
									
										218
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/net_init.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										218
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/net_init.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,218 @@ | |||||||
|  | #define net_init            init_interface | ||||||
|  | #define handle_network_read handle_read | ||||||
|  | #define send_network_ack    send_ack | ||||||
|  | #define send_network_string send_string | ||||||
|  | #define send_network_hex    send_hex | ||||||
|  |  | ||||||
|  | #include "sv_addr_ag.h" | ||||||
|  | #include "e100boot.h" | ||||||
|  |  | ||||||
|  | static void start_network_trans(void); | ||||||
|  |  | ||||||
|  | void  | ||||||
|  | net_init(void) | ||||||
|  | { | ||||||
|  |   *R_NETWORK_GA_1 = *R_NETWORK_GA_0 = 0; | ||||||
|  |    | ||||||
|  |   SET_ETHER_ADDR(0x01,0x40,0x8c,0x00,0x01,0x00, | ||||||
|  |                  0x01,0x40,0x8c,0x00,0x01,0x00); | ||||||
|  |  | ||||||
|  |   *R_NETWORK_REC_CONFIG =   | ||||||
|  |     IO_STATE (R_NETWORK_REC_CONFIG, duplex,     half)    | | ||||||
|  |     IO_STATE (R_NETWORK_REC_CONFIG, bad_crc,    discard) | | ||||||
|  |     IO_STATE (R_NETWORK_REC_CONFIG, oversize,   discard) | | ||||||
|  |     IO_STATE (R_NETWORK_REC_CONFIG, undersize,  discard) | | ||||||
|  |     IO_STATE (R_NETWORK_REC_CONFIG, all_roots,  discard) | | ||||||
|  |     IO_STATE (R_NETWORK_REC_CONFIG, broadcast,  discard) | | ||||||
|  |     IO_STATE (R_NETWORK_REC_CONFIG, individual, discard) | | ||||||
|  |     IO_STATE (R_NETWORK_REC_CONFIG, ma1,        disable) | | ||||||
|  |     IO_STATE (R_NETWORK_REC_CONFIG, ma0,        enable); | ||||||
|  |  | ||||||
|  |   *R_NETWORK_MGM_CTRL =   | ||||||
|  |     IO_FIELD(R_NETWORK_MGM_CTRL, txd_pins, 0)       | | ||||||
|  |     IO_FIELD(R_NETWORK_MGM_CTRL, txer_pin, 0)       | | ||||||
|  |     IO_FIELD(R_NETWORK_MGM_CTRL, mdck,     0)       | | ||||||
|  |     IO_STATE(R_NETWORK_MGM_CTRL, mdoe,     disable) | | ||||||
|  |     IO_FIELD(R_NETWORK_MGM_CTRL, mdio,     0); | ||||||
|  |    | ||||||
|  |   *R_NETWORK_TR_CTRL =  | ||||||
|  |     (IO_STATE (R_NETWORK_TR_CTRL, clr_error, clr)     | | ||||||
|  |      IO_STATE (R_NETWORK_TR_CTRL, delay,     none)    | | ||||||
|  |      IO_STATE (R_NETWORK_TR_CTRL, cancel,    dont)    | | ||||||
|  |      IO_STATE (R_NETWORK_TR_CTRL, cd,        enable)  | | ||||||
|  |      IO_STATE (R_NETWORK_TR_CTRL, pad,       enable) | | ||||||
|  |      IO_STATE (R_NETWORK_TR_CTRL, crc,       enable)  | | ||||||
|  |      IO_STATE (R_NETWORK_TR_CTRL, retry,     enable)); | ||||||
|  |       | ||||||
|  |   *R_NETWORK_GEN_CONFIG =   | ||||||
|  |     IO_STATE (R_NETWORK_GEN_CONFIG, loopback, off)   | | ||||||
|  |     IO_STATE (R_NETWORK_GEN_CONFIG, frame,    ether) | | ||||||
|  |     IO_STATE (R_NETWORK_GEN_CONFIG, vg,       off)   | | ||||||
|  |     IO_STATE (R_NETWORK_GEN_CONFIG, phy,      mii_clk)   | | ||||||
|  |     IO_STATE (R_NETWORK_GEN_CONFIG, enable,   on); | ||||||
|  |  | ||||||
|  |   *R_DMA_CH0_CMD = IO_STATE(R_DMA_CH0_CMD, cmd, reset); | ||||||
|  |   *R_DMA_CH1_CMD = IO_STATE(R_DMA_CH1_CMD, cmd, reset); | ||||||
|  |  | ||||||
|  |   rx_descr.sw_len = NETWORK_HEADER_LENGTH; | ||||||
|  |   rx_descr.ctrl   = TX_CTRL; | ||||||
|  |   rx_descr.next   = (udword)&rx_descr2; | ||||||
|  |   rx_descr.buf    = (udword)&rx_header; | ||||||
|  |  | ||||||
|  |   rx_descr2.sw_len = 1500; | ||||||
|  |   rx_descr2.ctrl   = TX_CTRL_EOP; | ||||||
|  |   rx_descr2.buf    = target_address; | ||||||
|  |  | ||||||
|  |   /* Endian dependent, but saves a few bytes... */ | ||||||
|  |   *(udword*)&tx_header.src[0] = htonl(0x02408c00);  | ||||||
|  |   *(uword*)&tx_header.src[4]  = htons(0x0100);  | ||||||
|  |   tx_header.length = htons(64); | ||||||
|  |   tx_header.snap1  = htonl(0xaaaa0300); | ||||||
|  |   tx_header.snap2  = htonl(0x408c8856); | ||||||
|  |   tx_header.tag    = htonl(0xfffffffe); | ||||||
|  |   tx_header.seq    = 0; | ||||||
|  |   tx_header.type   = 0; | ||||||
|  |  | ||||||
|  |   tx_descr.sw_len = NETWORK_HEADER_LENGTH; | ||||||
|  |   tx_descr.ctrl   = TX_CTRL_EOP; | ||||||
|  |   tx_descr.buf    = (udword)&tx_header; | ||||||
|  |    | ||||||
|  |   set_dest        = FALSE; | ||||||
|  |   seq = 0; | ||||||
|  |  | ||||||
|  |   *R_DMA_CH1_FIRST = (udword)&rx_descr; | ||||||
|  |   *R_DMA_CH1_CMD   = IO_STATE(R_DMA_CH1_CMD, cmd, start); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | int | ||||||
|  | handle_network_read(void) | ||||||
|  | { | ||||||
|  |   if (!(rx_descr2.status & d_eop)) { | ||||||
|  |     return FALSE; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /* Even if wasn't to us, we must do this... */ | ||||||
|  |   rx_descr2.status = 0; | ||||||
|  |   *R_DMA_CH1_FIRST = (udword)&rx_descr; | ||||||
|  |  | ||||||
|  |   /* Was it to me? */ | ||||||
|  |   if (ntohl(rx_header.seq) == (seq+1)) {  | ||||||
|  |     interface        = NETWORK; | ||||||
|  |     last_timeout     = *R_TIMER_DATA >> IO_BITNR(R_TIMER_DATA, timer0); | ||||||
|  |     nbr_read        += rx_descr2.hw_len - CRC_LEN; | ||||||
|  |     rx_descr2.buf   += rx_descr2.hw_len - CRC_LEN; | ||||||
|  |     rx_descr2.sw_len = bytes_to_read - nbr_read - CRC_LEN < 1500 ? | ||||||
|  |       bytes_to_read - nbr_read + CRC_LEN: 1500;  /* FIX!!!!! */ | ||||||
|  |     rx_descr2.sw_len = rx_descr2.sw_len + NETWORK_HEADER_LENGTH < 64 | ||||||
|  |       ? 64 - NETWORK_HEADER_LENGTH : rx_descr2.sw_len; /* Less than minimum eth packet? */ | ||||||
|  |  | ||||||
|  |     seq++; | ||||||
|  |     send_network_ack(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   return TRUE; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void | ||||||
|  | send_network_ack(void) | ||||||
|  | { | ||||||
|  | /*  send_serial_string(">send_network_ack.\r\n"); */ | ||||||
|  |    | ||||||
|  |   if (!set_dest) {    /* Copy destination address from first received packet */ | ||||||
|  |     set_dest = TRUE; | ||||||
|  |     /* If we have done a bootrom network boot, source address is in a different | ||||||
|  |        place... */ | ||||||
|  |     if (((*R_BUS_STATUS & IO_MASK(R_BUS_STATUS, boot)) | ||||||
|  |          >> IO_BITNR(R_BUS_STATUS, boot)) - 1 == NETWORK) { | ||||||
|  |       *(udword*)&tx_header.dest[0] = *(udword*)0x380000dc; | ||||||
|  |       *(uword*)&tx_header.dest[4]  = *(uword*)0x380000e0; | ||||||
|  |     } | ||||||
|  |     else { | ||||||
|  |       *(udword*)&tx_header.dest[0] = *(udword*)&rx_header.src[0]; | ||||||
|  |       *(uword*)&tx_header.dest[4]  = *(uword*)&rx_header.src[4]; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  | #if 1 | ||||||
|  |   tx_header.seq   = htonl(seq); | ||||||
|  |   tx_header.type  = htonl(ACK); | ||||||
|  | #else | ||||||
|  |   tx_header.seq   = htonl(seq); | ||||||
|  |   tx_header.type  = htonl(bytes_to_read); | ||||||
|  |   tx_header.id    = htonl(target_address); | ||||||
|  |   /* tx_header.id already set in start(). */ | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  |   tx_descr.ctrl   = TX_CTRL_EOP; | ||||||
|  |   tx_descr.sw_len = NETWORK_HEADER_LENGTH; | ||||||
|  |  | ||||||
|  |   start_network_trans(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void | ||||||
|  | start_network_trans(void) | ||||||
|  | { | ||||||
|  | /*  send_serial_string(">start_network_trans\r\n"); */ | ||||||
|  |    | ||||||
|  |   /* Clear possible underrun or excessive retry errors */ | ||||||
|  | /*  *R_NETWORK_TR_CTRL = */ | ||||||
|  | /*    (IO_STATE (R_NETWORK_TR_CTRL, clr_error, clr)     | */ | ||||||
|  | /*     IO_STATE (R_NETWORK_TR_CTRL, delay,     none)    | */ | ||||||
|  | /*     IO_STATE (R_NETWORK_TR_CTRL, cancel,    dont)    | */ | ||||||
|  | /*     IO_STATE (R_NETWORK_TR_CTRL, cd,        enable)  | */ | ||||||
|  | /*     IO_STATE (R_NETWORK_TR_CTRL, pad,       enable)  | */ | ||||||
|  | /*     IO_STATE (R_NETWORK_TR_CTRL, crc,       enable)  | */ | ||||||
|  | /*     IO_STATE (R_NETWORK_TR_CTRL, retry,     enable)); */ | ||||||
|  |    | ||||||
|  |   *R_DMA_CH0_FIRST = (udword)&tx_descr; | ||||||
|  |   *R_DMA_CH0_CMD = IO_STATE(R_DMA_CH0_CMD, cmd, start); | ||||||
|  |   while(*R_DMA_CH0_FIRST) | ||||||
|  |     ; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void  | ||||||
|  | send_network_string(char *str) | ||||||
|  | { | ||||||
|  |   int i; | ||||||
|  |  | ||||||
|  |   tx_descr.next   = (udword)&tx_descr2; | ||||||
|  |   tx_descr.ctrl   = TX_CTRL; | ||||||
|  |   for (i = 0; str[i]; i++)      /* strlen */ | ||||||
|  |     ; | ||||||
|  |  | ||||||
|  |   tx_header.type   = STRING; | ||||||
|  |  | ||||||
|  |   tx_descr2.ctrl   = TX_CTRL_EOP; | ||||||
|  |   tx_descr2.buf    = (udword)str; | ||||||
|  |   tx_descr2.sw_len = i+1; | ||||||
|  |  | ||||||
|  |   start_network_trans(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void  | ||||||
|  | send_network_hex(udword v, byte nl) | ||||||
|  | { | ||||||
|  |   tx_descr.next   = (udword)&tx_descr2; | ||||||
|  |   tx_descr.ctrl   = TX_CTRL; | ||||||
|  |  | ||||||
|  |   tx_header.type  = nl ? htonl(NET_INT_NL) : htonl(NET_INT); | ||||||
|  |  | ||||||
|  |   /* Pause so we don't saturate network. */ | ||||||
|  |   /* Hehe, the asm will fool gcc to not remove the loop even though it | ||||||
|  |      probably should. If we volatile i the code will be a few bytes | ||||||
|  |      longer than this version. Well I really did it like this just | ||||||
|  |      because it is possible... */ | ||||||
|  |   { | ||||||
|  |     udword i; | ||||||
|  |      | ||||||
|  |     for(i = 0; i != 16384; i++) | ||||||
|  |       __asm__ ("");              | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   v = htonl(v); | ||||||
|  |   tx_descr2.ctrl   = TX_CTRL_EOP; | ||||||
|  |   tx_descr2.buf    = (udword)&v; | ||||||
|  |   tx_descr2.sw_len = (uword)sizeof(udword); | ||||||
|  |  | ||||||
|  |   start_network_trans(); | ||||||
|  | } | ||||||
							
								
								
									
										10
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/project.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/project.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | |||||||
|  | #define REG_NO_SHADOW 1 | ||||||
|  | #define REG_NO_INIT_SHADOW 1 | ||||||
|  |  | ||||||
|  | #define USE_GROUP__Serial_port_registers 1 | ||||||
|  | #define USE_GROUP__Network_interface_registers 1 | ||||||
|  | #define USE_GROUP__Parallel_printer_port_registers 1 | ||||||
|  | #define USE_GROUP__Timer_registers 1 | ||||||
|  | #define USE_GROUP__General_port_configuration_registers 1 | ||||||
|  | #define USE_GROUP__Bus_interface_configuration_registers 1 | ||||||
|  | #define USE_GROUP__DMA_registers 1 | ||||||
							
								
								
									
										117
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/ser_init.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/ser_init.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,117 @@ | |||||||
|  | #define ser_init           init_interface | ||||||
|  | #define handle_serial_read handle_read | ||||||
|  | #define send_serial_ack    send_ack | ||||||
|  | #define send_serial_string send_string | ||||||
|  | #define send_serial_hex    send_hex | ||||||
|  |  | ||||||
|  | #include "hwregs.h" | ||||||
|  | #include "sv_addr_ag.h" | ||||||
|  | #include "e100boot.h" | ||||||
|  |  | ||||||
|  | void  | ||||||
|  | ser_init(void) | ||||||
|  | { | ||||||
|  |   REG_SET__R_SERIAL0_XOFF | ||||||
|  |     ( | ||||||
|  |      tx_stop,   enable, | ||||||
|  |      auto_xoff, disable, | ||||||
|  |      xoff_char, 0 | ||||||
|  |      ); | ||||||
|  |    | ||||||
|  |   REG_SET__R_SERIAL0_BAUD | ||||||
|  |     ( | ||||||
|  |      tr_baud,            c9600Hz, | ||||||
|  |      rec_baud,           c9600Hz | ||||||
|  |      ); | ||||||
|  |  | ||||||
|  |   REG_SET__R_SERIAL0_REC_CTRL | ||||||
|  |     ( | ||||||
|  |      dma_err,            stop, | ||||||
|  |      rec_enable,         enable, | ||||||
|  |      rts_,               inactive, | ||||||
|  |      sampling,           middle, | ||||||
|  |      rec_stick_par,      normal, | ||||||
|  |      rec_par,            even, | ||||||
|  |      rec_par_en,         disable, | ||||||
|  |      rec_bitnr,          rec_8bit | ||||||
|  |      ); | ||||||
|  |    | ||||||
|  |   REG_SET__R_SERIAL0_TR_CTRL  | ||||||
|  |     ( | ||||||
|  |      txd,                0, | ||||||
|  |      tr_enable,          enable, | ||||||
|  |      auto_cts,           disabled, | ||||||
|  |      stop_bits,          one_bit, | ||||||
|  |      tr_stick_par,       normal, | ||||||
|  |      tr_par,             even, | ||||||
|  |      tr_par_en,          disable, | ||||||
|  |      tr_bitnr,           tr_8bit | ||||||
|  |      ); | ||||||
|  |  | ||||||
|  |   serial_up = TRUE; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #define SER_MASK (IO_MASK(R_SERIAL0_READ, data_avail) | IO_MASK(R_SERIAL0_READ, data_in)) | ||||||
|  |  | ||||||
|  | int | ||||||
|  | handle_serial_read(void) | ||||||
|  | { | ||||||
|  |   udword status_and_data_in = *R_SERIAL0_READ & SER_MASK; | ||||||
|  |  | ||||||
|  |   if (status_and_data_in & IO_STATE(R_SERIAL0_READ, data_avail, yes)) { | ||||||
|  |     *(char*)(target_address + nbr_read++) = status_and_data_in & 0xff; /* ugly mask */ | ||||||
|  |     last_timeout = REG_GET(R_TIMER0_DATA, count); | ||||||
|  |     return TRUE; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   return FALSE; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void | ||||||
|  | send_serial_ack(void) | ||||||
|  | { | ||||||
|  |   while (!REG_EQL(R_SERIAL0_STATUS, tr_ready, ready)) | ||||||
|  |     ; | ||||||
|  |  | ||||||
|  |   REG_ISET(0, R_SERIAL0_TR_DATA, data_out, '+'); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void  | ||||||
|  | send_serial_string(char *str) | ||||||
|  | { | ||||||
|  |   int i; | ||||||
|  |  | ||||||
|  |   for (i = 0; str[i];) { | ||||||
|  |     if (REG_IEQL(0, R_SERIAL0_STATUS, tr_ready, ready)) { | ||||||
|  |       REG_ISET(0, R_SERIAL0_TR_DATA, data_out, str[i]);  | ||||||
|  |       i++; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void  | ||||||
|  | send_serial_hex(udword v, byte nl) | ||||||
|  | { | ||||||
|  |   int i; | ||||||
|  |   byte buf[13]; | ||||||
|  |   byte nybble; | ||||||
|  |  | ||||||
|  |   buf[0] = '0'; | ||||||
|  |   buf[1] = 'x'; | ||||||
|  |   buf[10] = '\r'; | ||||||
|  |   buf[11] = '\n'; | ||||||
|  |   buf[12] = '\0'; | ||||||
|  |  | ||||||
|  |   if (nl == FALSE) { | ||||||
|  |     buf[10] = '\0'; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   for (i = 0; i != 8; i++) { | ||||||
|  |     nybble = (v >> (i*4)) & 0xf; | ||||||
|  |     if (nybble > 9) { | ||||||
|  |       nybble += 7; | ||||||
|  |     } | ||||||
|  |     buf[7-i+2] = nybble + '0'; | ||||||
|  |   } | ||||||
|  |   send_serial_string(buf); | ||||||
|  | } | ||||||
							
								
								
									
										7323
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/sv_addr.agh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7323
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/sv_addr.agh
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										137
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/sv_addr_ag.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										137
									
								
								target/linux/etrax-2.6/image/e100boot/src/cbl/src/sv_addr_ag.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,137 @@ | |||||||
|  | /*!************************************************************************** | ||||||
|  | *!                                                             | ||||||
|  | *! MACROS: | ||||||
|  | *!   IO_MASK(reg,field) | ||||||
|  | *!   IO_STATE(reg,field,state) | ||||||
|  | *!   IO_EXTRACT(reg,field,val) | ||||||
|  | *!   IO_STATE_VALUE(reg,field,state) | ||||||
|  | *!   IO_BITNR(reg,field) | ||||||
|  | *!   IO_WIDTH(reg,field) | ||||||
|  | *!   IO_FIELD(reg,field,val) | ||||||
|  | *!   IO_RD(reg) | ||||||
|  | *!   All moderegister addresses and fields of these. | ||||||
|  | *! | ||||||
|  | *!**************************************************************************/ | ||||||
|  |  | ||||||
|  | #ifndef __sv_addr_ag_h__ | ||||||
|  | #define __sv_addr_ag_h__ | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #define __test_sv_addr__ 0 | ||||||
|  |  | ||||||
|  | /*------------------------------------------------------------ | ||||||
|  | !* General macros to manipulate moderegisters. | ||||||
|  | !*-----------------------------------------------------------*/ | ||||||
|  |  | ||||||
|  | /* IO_MASK returns a mask for a specified bitfield in a register. | ||||||
|  |    Note that this macro doesn't work when field width is 32 bits. */ | ||||||
|  | #define IO_MASK(reg, field) IO_MASK_ (reg##_, field##_) | ||||||
|  | #define IO_MASK_(reg_, field_) \ | ||||||
|  |     ( ( ( 1 << reg_##_##field_##_WIDTH ) - 1 ) << reg_##_##field_##_BITNR ) | ||||||
|  |  | ||||||
|  | /* IO_STATE returns a constant corresponding to a one of the symbolic | ||||||
|  |    states that the bitfield can have. (Shifted to correct position)  */ | ||||||
|  | #define IO_STATE(reg, field, state) IO_STATE_ (reg##_, field##_, _##state) | ||||||
|  | #define IO_STATE_(reg_, field_, _state) \ | ||||||
|  |     ( reg_##_##field_##_state << reg_##_##field_##_BITNR ) | ||||||
|  |  | ||||||
|  | /* IO_EXTRACT returns the masked and shifted value corresponding to the | ||||||
|  |    bitfield can have. */ | ||||||
|  | #define IO_EXTRACT(reg, field, val) IO_EXTRACT_ (reg##_, field##_, val) | ||||||
|  | #define IO_EXTRACT_(reg_, field_, val) ( (( ( ( 1 << reg_##_##field_##_WIDTH ) \ | ||||||
|  |      - 1 ) << reg_##_##field_##_BITNR ) & (val)) >> reg_##_##field_##_BITNR ) | ||||||
|  |  | ||||||
|  | /* IO_STATE_VALUE returns a constant corresponding to a one of the symbolic | ||||||
|  |    states that the bitfield can have. (Not shifted)  */ | ||||||
|  | #define IO_STATE_VALUE(reg, field, state) \ | ||||||
|  |     IO_STATE_VALUE_ (reg##_, field##_, _##state) | ||||||
|  | #define IO_STATE_VALUE_(reg_, field_, _state) ( reg_##_##field_##_state ) | ||||||
|  |  | ||||||
|  | /* IO_FIELD shifts the val parameter to be aligned with the bitfield | ||||||
|  |    specified. */ | ||||||
|  | #define IO_FIELD(reg, field, val) IO_FIELD_ (reg##_, field##_, val) | ||||||
|  | #define IO_FIELD_(reg_, field_, val) ((val) << reg_##_##field_##_BITNR) | ||||||
|  |  | ||||||
|  | /* IO_BITNR returns the starting bitnumber of a bitfield. Bit 0 is | ||||||
|  |    LSB and the returned bitnumber is LSB of the field. */ | ||||||
|  | #define IO_BITNR(reg, field) IO_BITNR_ (reg##_, field##_) | ||||||
|  | #define IO_BITNR_(reg_, field_) (reg_##_##field_##_BITNR) | ||||||
|  |  | ||||||
|  | /* IO_WIDTH returns the width, in bits, of a bitfield. */ | ||||||
|  | #define IO_WIDTH(reg, field) IO_WIDTH_ (reg##_, field##_) | ||||||
|  | #define IO_WIDTH_(reg_, field_) (reg_##_##field_##_WIDTH) | ||||||
|  |  | ||||||
|  | /*--- Obsolete. Kept for backw compatibility. ---*/ | ||||||
|  | /* Reads (or writes) a byte/uword/udword from the specified mode | ||||||
|  |    register. */ | ||||||
|  | #define IO_RD(reg) (*(volatile udword*)(reg)) | ||||||
|  | #define IO_RD_B(reg) (*(volatile byte*)(reg)) | ||||||
|  | #define IO_RD_W(reg) (*(volatile uword*)(reg)) | ||||||
|  | #define IO_RD_D(reg) (*(volatile udword*)(reg)) | ||||||
|  |  | ||||||
|  | /*------------------------------------------------------------ | ||||||
|  | !* Start addresses of the different memory areas. | ||||||
|  | !*-----------------------------------------------------------*/ | ||||||
|  |  | ||||||
|  | #define MEM_CSE0_START (0x00000000) | ||||||
|  | #define MEM_CSE1_START (0x04000000) | ||||||
|  | #define MEM_CSR0_START (0x08000000) | ||||||
|  | #define MEM_CSR1_START (0x0c000000) | ||||||
|  | #define MEM_CSP0_START (0x10000000) | ||||||
|  | #define MEM_CSP1_START (0x14000000) | ||||||
|  | #define MEM_CSP2_START (0x18000000) | ||||||
|  | #define MEM_CSP3_START (0x1c000000) | ||||||
|  | #define MEM_CSP4_START (0x20000000) | ||||||
|  | #define MEM_CSP5_START (0x24000000) | ||||||
|  | #define MEM_CSP6_START (0x28000000) | ||||||
|  | #define MEM_CSP7_START (0x2c000000) | ||||||
|  | #define MEM_DRAM_START (0x40000000) | ||||||
|  |  | ||||||
|  | #define MEM_NON_CACHEABLE (0x80000000) | ||||||
|  |  | ||||||
|  | /*------------------------------------------------------------ | ||||||
|  | !* Type casts used in mode register macros, making pointer | ||||||
|  | !* dereferencing possible. Empty in assembler. | ||||||
|  | !*-----------------------------------------------------------*/ | ||||||
|  |  | ||||||
|  | #ifndef __ASSEMBLER__ | ||||||
|  | # define  IO_TYPECAST_UDWORD  (volatile udword*) | ||||||
|  | # define  IO_TYPECAST_RO_UDWORD  (const volatile udword*) | ||||||
|  | # define  IO_TYPECAST_UWORD  (volatile uword*) | ||||||
|  | # define  IO_TYPECAST_RO_UWORD  (const volatile uword*) | ||||||
|  | # define  IO_TYPECAST_BYTE  (volatile byte*) | ||||||
|  | # define  IO_TYPECAST_RO_BYTE  (const volatile byte*) | ||||||
|  | #else | ||||||
|  | # define  IO_TYPECAST_UDWORD | ||||||
|  | # define  IO_TYPECAST_RO_UDWORD | ||||||
|  | # define  IO_TYPECAST_UWORD | ||||||
|  | # define  IO_TYPECAST_RO_UWORD | ||||||
|  | # define  IO_TYPECAST_BYTE | ||||||
|  | # define  IO_TYPECAST_RO_BYTE | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | /*------------------------------------------------------------*/ | ||||||
|  |  | ||||||
|  | #include "sv_addr.agh" | ||||||
|  |  | ||||||
|  | #if __test_sv_addr__ | ||||||
|  | /* IO_MASK( R_BUS_CONFIG , CE ) */ | ||||||
|  | IO_MASK( R_WAITSTATES , SRAM_WS ) | ||||||
|  | IO_MASK( R_TEST , W32 ) | ||||||
|  |  | ||||||
|  | IO_STATE( R_BUS_CONFIG, CE, DISABLE ) | ||||||
|  | IO_STATE( R_BUS_CONFIG, CE, ENABLE ) | ||||||
|  |  | ||||||
|  | IO_STATE( R_DRAM_TIMING, REF, IVAL2 ) | ||||||
|  |  | ||||||
|  | IO_MASK( R_DRAM_TIMING, REF ) | ||||||
|  |  | ||||||
|  | IO_MASK( R_EXT_DMA_0_STAT, TFR_COUNT ) >> IO_BITNR( R_EXT_DMA_0_STAT, TFR_COUNT ) | ||||||
|  |  | ||||||
|  | IO_RD(R_EXT_DMA_0_STAT) & IO_MASK( R_EXT_DMA_0_STAT, S )  | ||||||
|  |    == IO_STATE( R_EXT_DMA_0_STAT, S, STARTED ) | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif  /* ifndef __sv_addr_ag_h__ */ | ||||||
|  |  | ||||||
							
								
								
									
										17
									
								
								target/linux/etrax-2.6/image/e100boot/src/doc/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								target/linux/etrax-2.6/image/e100boot/src/doc/Makefile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | |||||||
|  | OBJS=e100boot.1 e100boot.html | ||||||
|  |  | ||||||
|  | all: $(OBJS) | ||||||
|  |  | ||||||
|  | %.1: %.pod | ||||||
|  | 	pod2man $< > $@ | ||||||
|  |  | ||||||
|  | %.html: %.pod | ||||||
|  | 	pod2html $< > $@ | ||||||
|  | 	@rm -f pod2htmd.x~~ pod2htmi.x~~ | ||||||
|  |  | ||||||
|  | clean:  | ||||||
|  | 	rm -f *cache *~ | ||||||
|  |  | ||||||
|  | # The 'clean' doesn't remove the generated documentation as we want | ||||||
|  | # them in the distribution. | ||||||
|  |  | ||||||
							
								
								
									
										401
									
								
								target/linux/etrax-2.6/image/e100boot/src/doc/e100boot.1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										401
									
								
								target/linux/etrax-2.6/image/e100boot/src/doc/e100boot.1
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,401 @@ | |||||||
|  | .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 | ||||||
|  | .\" | ||||||
|  | .\" Standard preamble: | ||||||
|  | .\" ======================================================================== | ||||||
|  | .de Sh \" Subsection heading | ||||||
|  | .br | ||||||
|  | .if t .Sp | ||||||
|  | .ne 5 | ||||||
|  | .PP | ||||||
|  | \fB\\$1\fR | ||||||
|  | .PP | ||||||
|  | .. | ||||||
|  | .de Sp \" Vertical space (when we can't use .PP) | ||||||
|  | .if t .sp .5v | ||||||
|  | .if n .sp | ||||||
|  | .. | ||||||
|  | .de Vb \" Begin verbatim text | ||||||
|  | .ft CW | ||||||
|  | .nf | ||||||
|  | .ne \\$1 | ||||||
|  | .. | ||||||
|  | .de Ve \" End verbatim text | ||||||
|  | .ft R | ||||||
|  | .fi | ||||||
|  | .. | ||||||
|  | .\" Set up some character translations and predefined strings.  \*(-- will | ||||||
|  | .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left | ||||||
|  | .\" double quote, and \*(R" will give a right double quote.  \*(C+ will | ||||||
|  | .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and | ||||||
|  | .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff, | ||||||
|  | .\" nothing in troff, for use with C<>. | ||||||
|  | .tr \(*W- | ||||||
|  | .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' | ||||||
|  | .ie n \{\ | ||||||
|  | .    ds -- \(*W- | ||||||
|  | .    ds PI pi | ||||||
|  | .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch | ||||||
|  | .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch | ||||||
|  | .    ds L" "" | ||||||
|  | .    ds R" "" | ||||||
|  | .    ds C` "" | ||||||
|  | .    ds C' "" | ||||||
|  | 'br\} | ||||||
|  | .el\{\ | ||||||
|  | .    ds -- \|\(em\| | ||||||
|  | .    ds PI \(*p | ||||||
|  | .    ds L" `` | ||||||
|  | .    ds R" '' | ||||||
|  | 'br\} | ||||||
|  | .\" | ||||||
|  | .\" If the F register is turned on, we'll generate index entries on stderr for | ||||||
|  | .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index | ||||||
|  | .\" entries marked with X<> in POD.  Of course, you'll have to process the | ||||||
|  | .\" output yourself in some meaningful fashion. | ||||||
|  | .if \nF \{\ | ||||||
|  | .    de IX | ||||||
|  | .    tm Index:\\$1\t\\n%\t"\\$2" | ||||||
|  | .. | ||||||
|  | .    nr % 0 | ||||||
|  | .    rr F | ||||||
|  | .\} | ||||||
|  | .\" | ||||||
|  | .\" For nroff, turn off justification.  Always turn off hyphenation; it makes | ||||||
|  | .\" way too many mistakes in technical documents. | ||||||
|  | .hy 0 | ||||||
|  | .if n .na | ||||||
|  | .\" | ||||||
|  | .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). | ||||||
|  | .\" Fear.  Run.  Save yourself.  No user-serviceable parts. | ||||||
|  | .    \" fudge factors for nroff and troff | ||||||
|  | .if n \{\ | ||||||
|  | .    ds #H 0 | ||||||
|  | .    ds #V .8m | ||||||
|  | .    ds #F .3m | ||||||
|  | .    ds #[ \f1 | ||||||
|  | .    ds #] \fP | ||||||
|  | .\} | ||||||
|  | .if t \{\ | ||||||
|  | .    ds #H ((1u-(\\\\n(.fu%2u))*.13m) | ||||||
|  | .    ds #V .6m | ||||||
|  | .    ds #F 0 | ||||||
|  | .    ds #[ \& | ||||||
|  | .    ds #] \& | ||||||
|  | .\} | ||||||
|  | .    \" simple accents for nroff and troff | ||||||
|  | .if n \{\ | ||||||
|  | .    ds ' \& | ||||||
|  | .    ds ` \& | ||||||
|  | .    ds ^ \& | ||||||
|  | .    ds , \& | ||||||
|  | .    ds ~ ~ | ||||||
|  | .    ds / | ||||||
|  | .\} | ||||||
|  | .if t \{\ | ||||||
|  | .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" | ||||||
|  | .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' | ||||||
|  | .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' | ||||||
|  | .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' | ||||||
|  | .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' | ||||||
|  | .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' | ||||||
|  | .\} | ||||||
|  | .    \" troff and (daisy-wheel) nroff accents | ||||||
|  | .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' | ||||||
|  | .ds 8 \h'\*(#H'\(*b\h'-\*(#H' | ||||||
|  | .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] | ||||||
|  | .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' | ||||||
|  | .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' | ||||||
|  | .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] | ||||||
|  | .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] | ||||||
|  | .ds ae a\h'-(\w'a'u*4/10)'e | ||||||
|  | .ds Ae A\h'-(\w'A'u*4/10)'E | ||||||
|  | .    \" corrections for vroff | ||||||
|  | .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' | ||||||
|  | .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' | ||||||
|  | .    \" for low resolution devices (crt and lpr) | ||||||
|  | .if \n(.H>23 .if \n(.V>19 \ | ||||||
|  | \{\ | ||||||
|  | .    ds : e | ||||||
|  | .    ds 8 ss | ||||||
|  | .    ds o a | ||||||
|  | .    ds d- d\h'-1'\(ga | ||||||
|  | .    ds D- D\h'-1'\(hy | ||||||
|  | .    ds th \o'bp' | ||||||
|  | .    ds Th \o'LP' | ||||||
|  | .    ds ae ae | ||||||
|  | .    ds Ae AE | ||||||
|  | .\} | ||||||
|  | .rm #[ #] #H #V #F C | ||||||
|  | .\" ======================================================================== | ||||||
|  | .\" | ||||||
|  | .IX Title "E100BOOT 1" | ||||||
|  | .TH E100BOOT 1 "2003-12-16" "perl v5.8.8" "User Contributed Perl Documentation" | ||||||
|  | .SH "NAME" | ||||||
|  | e100boot \- Network and serial port bootloader for the ETRAX100 CPU. | ||||||
|  | .SH "SYNOPSIS" | ||||||
|  | .IX Header "SYNOPSIS" | ||||||
|  | \&\fBe100boot\fR [\fB\-\-device\fR \fIdevicename\fR] | ||||||
|  | [\fB\-\-file\fR \fIfilename\fR|\- \fIaddr\fR [\fIsize\fR]] | ||||||
|  | [\fB\-\-flash\fR \fIram-source\fR \fIflash-offset\fR \fIsize\fR] [\fB\-\-pause\fR \fIiter\fR] | ||||||
|  | [\fB\-\-memtest\fR \fIaddr\fR \fIaddr\fR] [\fB\-\-memclear\fR \fIaddr\fR \fIaddr\fR] | ||||||
|  | [\fB\-\-memdump\fR \fIaddr\fR \fIaddr\fR] [\fB\-\-setreg\fR \fIaddr\fR|\fIregname\fR \fIval\fR] | ||||||
|  | [\fB\-\-getreg\fR \fIaddr\fR|\fIregname\fR] [\fB\-\-verify\fR \fIaddr\fR \fIval\fR] | ||||||
|  | [\fB\-\-label\fR \fIlabel\fR] [\fB\-\-loop\fR \fIaddr\fR \fIlabel\fR] [\fB\-\-5400\fR] [\fB\-\-5600\fR] | ||||||
|  | [\fB\-\-testcard\fR] [\fB\-\-devboard\fR] [\fB\-\-testcardlx\fR] [\fB\-\-network\fR] [\fB\-\-serial\fR] | ||||||
|  | [\fB\-\-baudrate\fR \fIbaudrate\fR] [\fB\-\-bootfile\fR \fIfile\fR] [\fB\-\-jump\fR \fIaddr\fR] | ||||||
|  | [\fB\-\-tofiles\fR] [\fB\-\-cmdsonly\fR] [\fB\-\-images\fR] [\fB\-\-noleds\fR] [\fB\-\-help\fR] | ||||||
|  | .SH "DESCRIPTION" | ||||||
|  | .IX Header "DESCRIPTION" | ||||||
|  | This boot loader facilitates loading of files over the network or a | ||||||
|  | serial port to an \s-1ETRAX100\s0. It can also be used for fairly extensive | ||||||
|  | hardware debugging as you can read and write to any memory addresses, | ||||||
|  | including the \s-1ETRAX100\s0 registers. You can also perform memory checks | ||||||
|  | and dumps and copy data to flash memories. | ||||||
|  | .PP | ||||||
|  | The first packet (or the first 784 bytes in the case of serial boot) | ||||||
|  | sent to Etrax100 is loaded into the cache. The code in this packet is | ||||||
|  | executed and loads the rest of the boot loader into the cache. The | ||||||
|  | cache is the only thing we can be sure of exists on all \s-1ETRAX100\s0 | ||||||
|  | products, so the boot loader is limited to the size of the cache, | ||||||
|  | 8KB. If further boot loading code is needed you have to set up | ||||||
|  | external memory and load another boot loader into it, but this is | ||||||
|  | rarely needed. | ||||||
|  | .PP | ||||||
|  | Two programs are involved in this boot loading, one is the program on | ||||||
|  | your workstation that sends the packets to \s-1ETRAX100\s0, this is called | ||||||
|  | the server boot loader or \s-1SBL\s0. The other program is the one in | ||||||
|  | \&\s-1ETRAX100\s0 that receives packets from the \s-1SBL\s0 and acts upon the data | ||||||
|  | therein, this is called the client boot loader or \s-1CBL\s0. | ||||||
|  | .PP | ||||||
|  | We don't want to edit and recompile the \s-1CBL\s0 each time we want to load | ||||||
|  | level two to different parts of memory, like we do on different | ||||||
|  | products. We also want to change things like the setup of external | ||||||
|  | memory before we load data into it. To make the boot loading as | ||||||
|  | flexible as possible and separate the \s-1CBL\s0 from level two we send a | ||||||
|  | configuration packet to it. After this packet we load other files, if | ||||||
|  | we want to. | ||||||
|  | .PP | ||||||
|  | The configuration packet can contain information to the \s-1CBL\s0 which lets | ||||||
|  | you: initialize external memory, read and write to all \s-1ETRAX100\s0 | ||||||
|  | registers, read and write to any part of memory, load as many other | ||||||
|  | files as you like to any part of memory you like, etc. The | ||||||
|  | configuration packet is generated on the fly by the \s-1SBL\s0. | ||||||
|  | .PP | ||||||
|  | Since the \s-1CBL\s0 is unaware of which product it will be loaded on, it | ||||||
|  | doesn't do product specific initialization like setting up the | ||||||
|  | memory. This must be done with the configuration packet. | ||||||
|  | .Sh "Debugging printout" | ||||||
|  | .IX Subsection "Debugging printout" | ||||||
|  | When doing network boot the debugging printout from the \s-1CBL\s0 in \s-1ETRAX\s0 | ||||||
|  | is transmitted back over the network and printed by e100boot. When | ||||||
|  | doing serial boot that interface will be used. So in either case you | ||||||
|  | will not need any other software or hardware to receive the debugging | ||||||
|  | printout. | ||||||
|  | .Sh "Creating binaries" | ||||||
|  | .IX Subsection "Creating binaries" | ||||||
|  | The files containing code to be loaded on the \s-1ETRAX100\s0 must be | ||||||
|  | stripped using the standard \s-1GCC\s0 binutils. | ||||||
|  | .Sh "How it works, things you don't want to know." | ||||||
|  | .IX Subsection "How it works, things you don't want to know." | ||||||
|  | ack, timeout bla, bla... \s-1RTFS\s0. | ||||||
|  | .Sh "Compilation and code" | ||||||
|  | .IX Subsection "Compilation and code" | ||||||
|  | Noteworthy is that two separate \s-1ETRAX100\s0 binaries are created, one for | ||||||
|  | network boot and one for serial boot. They actually contain exactly | ||||||
|  | the same code, but linked in different order. This is because the code | ||||||
|  | to load the rest of the bootloader over a specific interface must be | ||||||
|  | contained in the first data sent to the \s-1ETRAX100\s0 and it is too | ||||||
|  | difficult to cram the code for both interfaces in the beginning of the | ||||||
|  | same binary. Hence two files. | ||||||
|  | .PP | ||||||
|  | Other stuff you don't want to know is that the cache is mapped from | ||||||
|  | 0x380000f0 to 0x380020f0. Code starts at the first address followed by | ||||||
|  | data up to the symbol \fIEbss\fR. At the other end is the buffer for boot | ||||||
|  | commands (addresses defined by \fI\s-1IO_BUF_START\s0\fR and \fI\s-1IO_BUF_END\s0\fR below | ||||||
|  | which the stack lies and hopefully the stack and \fIEbss\fR will never | ||||||
|  | meet... | ||||||
|  | .PP | ||||||
|  | The serial data is loaded from 0x380000f0 to 0x380003ff before | ||||||
|  | execution starts. | ||||||
|  | .SH "OPTIONS" | ||||||
|  | .IX Header "OPTIONS" | ||||||
|  | The options are done in the order specified on the command line, so | ||||||
|  | you probably want to do any memory setup before loading a file to the | ||||||
|  | memory, and you probably do not want to perform a memory test after | ||||||
|  | you have loaded a file to that memory. | ||||||
|  | .PP | ||||||
|  | All addresses and sizes must be in hex with optional '0x' prefix, or a | ||||||
|  | \&\s-1ETRAX100\s0 register name. Since the \fB\-\-setreg\fR and \fB\-\-getreg\fR options | ||||||
|  | only can be performed on dword aligned dwords only the registers that | ||||||
|  | conform to this can be named. | ||||||
|  | .PP | ||||||
|  | Note also that all addresses must be in uncached memory (bit 31 set), | ||||||
|  | as the bootloader lies in the cache. If you access any uncached | ||||||
|  | address during boot, the bootloader will be destroyed without warning. | ||||||
|  | .PP | ||||||
|  | It is also possible to specify an address as \fI+address\fR, in which | ||||||
|  | case it is considered to be relative to \fI\s-1IO_BUF_START\s0\fR. This is | ||||||
|  | especially useful in combination with the \fB\-\-loop\fR option below. | ||||||
|  | .IP "\fB\-\-baudrate\fR \fIbaudrate\fR" 4 | ||||||
|  | .IX Item "--baudrate baudrate" | ||||||
|  | Set baudrate for files loaded after the boot loader. | ||||||
|  | .IP "\fB\-\-bootfile\fR \fIfilename\fR" 4 | ||||||
|  | .IX Item "--bootfile filename" | ||||||
|  | Which boot image to send to \s-1ETRAX\s0 instead of the default ones. | ||||||
|  | .IP "\fB\-\-cmdsonly\fR" 4 | ||||||
|  | .IX Item "--cmdsonly" | ||||||
|  | Write the commands to file e100boot.cmds. | ||||||
|  | .IP "\fB\-\-devboard\fR" 4 | ||||||
|  | .IX Item "--devboard" | ||||||
|  | Sets registers for the developer board. | ||||||
|  | .IP "\fB\-\-device\fR \fIdevicename\fR" 4 | ||||||
|  | .IX Item "--device devicename" | ||||||
|  | Which device to send packets on. For network boot the default is | ||||||
|  | eth0. For serial boot it is ttyS0. | ||||||
|  | .IP "\fB\-\-file\fR \fIfilename\fR|\- \fIaddress\fR [\fIsize\fR]" 4 | ||||||
|  | .IX Item "--file filename|- address [size]" | ||||||
|  | The file to load and the address to load it to. If file is loaded on | ||||||
|  | stdin, specify filename '\-' followed by a size. Size need only be | ||||||
|  | given in this case. You can load as many files as you want, each | ||||||
|  | specified with a \fB\-\-file\fR. | ||||||
|  | .IP "\fB\-\-flash\fR \fIram-source flash-offset size\fR" 4 | ||||||
|  | .IX Item "--flash ram-source flash-offset size" | ||||||
|  | Copies the specified \s-1RAM\s0 area to the flash. | ||||||
|  | .IP "\fB\-\-getreg\fR \fIaddress\fR|\fIregname\fR" 4 | ||||||
|  | .IX Item "--getreg address|regname" | ||||||
|  | Print value of memory location. Must be uncached address. | ||||||
|  | .IP "\fB\-\-help\fR" 4 | ||||||
|  | .IX Item "--help" | ||||||
|  | Print the help information. | ||||||
|  | .IP "\fB\-\-images\fR" 4 | ||||||
|  | .IX Item "--images" | ||||||
|  | Print information about the internal boot images, then exit. | ||||||
|  | .IP "\fB\-\-jump\fR \fIaddress\fR" 4 | ||||||
|  | .IX Item "--jump address" | ||||||
|  | Jump to specified address. | ||||||
|  | .IP "\fB\-\-label\fR \fIlabel\fR" 4 | ||||||
|  | .IX Item "--label label" | ||||||
|  | Define a label to be used as target by the \fB\-\-loop\fR command. This | ||||||
|  | command is only used by the \s-1SBL\s0 to calculate the address for the | ||||||
|  | \&\fB\-\-loop\fR and does not take up any space in the configuration packet. | ||||||
|  | .IP "\fB\-\-loop\fR \fIcheck-address label\fR" 4 | ||||||
|  | .IX Item "--loop check-address label" | ||||||
|  | If the contents of check-address is nonzero it is decremented and the | ||||||
|  | command parser continues parsing at the label. | ||||||
|  | .Sp | ||||||
|  | If no external memory is initialized yet it can be convenient to use | ||||||
|  | an address in the area occupied by the configuration packet. Run | ||||||
|  | e100boot with \fB\-\-help\fR to see which addresses the commands are stored | ||||||
|  | at. The size of the commands are four bytes for each command plus four | ||||||
|  | bytes per argument to the command. | ||||||
|  | .IP "\fB\-\-memclear\fR \fIstart-address end-address\fR" 4 | ||||||
|  | .IX Item "--memclear start-address end-address" | ||||||
|  | Clears the specified memory area. | ||||||
|  | .IP "\fB\-\-memdump\fR \fIstart-address end-address\fR" 4 | ||||||
|  | .IX Item "--memdump start-address end-address" | ||||||
|  | Prints the contents of the specified memory area. | ||||||
|  | .IP "\fB\-\-memtest\fR \fIstart-address end-address\fR" 4 | ||||||
|  | .IX Item "--memtest start-address end-address" | ||||||
|  | Does a fairly extensive test of the specified memory area. Not only | ||||||
|  | catches defect memories but also catches things like wrong memory | ||||||
|  | setups where memory addresses are mirrored onto each other. | ||||||
|  | .IP "\fB\-\-network\fR" 4 | ||||||
|  | .IX Item "--network" | ||||||
|  | Perform a network boot. | ||||||
|  | .IP "\fB\-\-noleds\fR" 4 | ||||||
|  | .IX Item "--noleds" | ||||||
|  | When using the internal images use a version that does not toggle | ||||||
|  | general port \s-1PA\s0 or \s-1PB\s0 in \s-1ETRAX\s0 during the boot procedure. | ||||||
|  | .IP "\fB\-\-pause\fR \fIiterations\fR" 4 | ||||||
|  | .IX Item "--pause iterations" | ||||||
|  | How many \fIiterations\fR to do of an empty loop. | ||||||
|  | .IP "\fB\-\-serial\fR" 4 | ||||||
|  | .IX Item "--serial" | ||||||
|  | Do a serial boot. | ||||||
|  | .IP "\fB\-\-setreg\fR \fIaddress\fR|\fIregname\fR \fIvalue\fR" 4 | ||||||
|  | .IX Item "--setreg address|regname value" | ||||||
|  | Load dword to dword aligned memory location. | ||||||
|  | .IP "\fB\-\-testcard\fR" 4 | ||||||
|  | .IX Item "--testcard" | ||||||
|  | Configures the memories for the \s-1ETRAX\s0 100 testcard. | ||||||
|  | .IP "\fB\-\-testcardlx\fR" 4 | ||||||
|  | .IX Item "--testcardlx" | ||||||
|  | Configures the memories for the \s-1ETRAX100\s0 \s-1LX\s0 testcard. | ||||||
|  | .IP "\fB\-\-tofiles\fR" 4 | ||||||
|  | .IX Item "--tofiles" | ||||||
|  | Write packets to files e100boot.seq[0..]. Does not transmit the data. | ||||||
|  | .IP "\fB\-\-verify\fR \fIaddress value\fR" 4 | ||||||
|  | .IX Item "--verify address value" | ||||||
|  | Verify that memory contains dword. If not loader will stop. This is to | ||||||
|  | avoid booting the wrong unit. If you have the units ethernet address | ||||||
|  | in the flash memory you can check for that. | ||||||
|  | .IP "\fB\-\-5400\fR" 4 | ||||||
|  | .IX Item "--5400" | ||||||
|  | Sets R_WAITSTATES, R_DRAM_TIMING and R_DRAM_CONFIG for the 5400 | ||||||
|  | printserver. | ||||||
|  | .IP "\fB\-\-5600\fR" 4 | ||||||
|  | .IX Item "--5600" | ||||||
|  | Sets R_WAITSTATES, R_DRAM_TIMING and R_DRAM_CONFIG for the 5600 | ||||||
|  | printserver. | ||||||
|  | .SH "EXAMPLES" | ||||||
|  | .IX Header "EXAMPLES" | ||||||
|  | If you have a stripped binary (file.ima) linked to 0x08000000 that you want | ||||||
|  | to boot via the network, do this: | ||||||
|  | .PP | ||||||
|  | \&\fBe100boot \-\-file file.ima 88000000 \-\-jump 08000000\fR | ||||||
|  | .PP | ||||||
|  | Or something like this. Sets waitstates to zero and loads two files, | ||||||
|  | the first from stdin: | ||||||
|  | .PP | ||||||
|  | \&\fBcat file.ima | e100boot \-\-memtest 88000000 8801ffff \-\-memclear | ||||||
|  | 88000000 8801ffff \-\-setreg b0000000 0 \-\-getreg b0000000 \-\-file \- | ||||||
|  | 88000000 a000 \-\-file file2.ima 88010000 \-\-memdump 88000000 880000ff | ||||||
|  | \&\-\-jump 08000000\fR | ||||||
|  | .PP | ||||||
|  | Or this, enables 16 bit parallel port and flashes the led on \s-1PA0:\s0 | ||||||
|  | .PP | ||||||
|  | \&\fBe100boot \-\-testcardlx \-\-setreg R_PORT_PA_SET 0x00000000 \-\-setreg | ||||||
|  | R_GEN_CONFIG 0x80000004 \-\-setreg R_PAR0_CONFIG 0x00000200 \-\-setreg | ||||||
|  | R_PORT_G_DATA 0x00000000 \-\-pause 0x02000000 \-\-setreg R_PORT_G_DATA | ||||||
|  | 0xffffffff \-\-pause 0x02000000 \-\-setreg R_PORT_G_DATA 0x00000000 \-\-loop | ||||||
|  | 0x38001e0b 0x38001e60\fR | ||||||
|  | .PP | ||||||
|  | Setup the memory, test the \s-1SRAM\s0, print the contents of the first 256 | ||||||
|  | bytes of \s-1SRAM\s0, clear \s-1SRAM\s0, test the \s-1DRAM\s0, print R_DMA_CH0_CMD, load a | ||||||
|  | file to \s-1SRAM\s0, load another file to \s-1SRAM\s0, load file to \s-1DRAM\s0, jump to | ||||||
|  | code in \s-1SRAM\s0. | ||||||
|  | .PP | ||||||
|  | \&\fBe100boot \-\-setreg b0000000 1000 \-\-setreg b0000008 00006543 \-\-setreg | ||||||
|  | b000000c 12966060 \-\-memtest 88000000 80000 \-\-memdump 88000000 880000ff | ||||||
|  | \&\-\-memclear 88000000 80000 \-\-memtest c0000000 400000 \-\-getreg b00001d0 | ||||||
|  | \&\-\-file file1.ima 88000000 \-\-file file2.ima 88010000 \-\-file file3.ima | ||||||
|  | c0000000 \-\-jump 88000000\fR | ||||||
|  | .PP | ||||||
|  | Boot Linux on the testcard. | ||||||
|  | .PP | ||||||
|  | \&\fBe100boot \-\-setreg b0000000 1000 \-\-setreg b0000008 6557 \-\-setreg | ||||||
|  | b000000c 1b988080 \-\-file timage c0000500 \-\-jump 40000500\fR | ||||||
|  | .PP | ||||||
|  | Booting over serial port and using labels to flash the leds on port | ||||||
|  | \&\s-1PA\s0. | ||||||
|  | .PP | ||||||
|  | \&\fBe100boot \-\-serial \-\-device /dev/ttyS1 \-\-baudrate 9600 \-\-label first | ||||||
|  | \&\-\-setreg 0x380020e0 00000001 \-\-setreg R_PORT_PA_SET 0x0000ff00 \-\-pause | ||||||
|  | 0x02000000 \-\-setreg R_PORT_PA_SET 0x0000ffff \-\-pause 0x02000000 \-\-loop | ||||||
|  | 0x380020e0 first\fR | ||||||
|  | .SH "BUGS" | ||||||
|  | .IX Header "BUGS" | ||||||
|  | You're kidding, right? Check \s-1AUTHOR\s0 below. The only thing | ||||||
|  | would be the hubris of the author, but that I consider a feature. If | ||||||
|  | you find any other 'features' report them to | ||||||
|  | technology@axis.com. Don't bother the author directly, he is busy | ||||||
|  | playing PlayStation2. | ||||||
|  | .SH "COPYING" | ||||||
|  | .IX Header "COPYING" | ||||||
|  | Copyright <20> 1996\-2002 Axis Communications \s-1AB\s0. | ||||||
|  | .SH "AUTHOR" | ||||||
|  | .IX Header "AUTHOR" | ||||||
|  | Written by Ronny Ranerup. | ||||||
|  | .SH "SEE ALSO" | ||||||
|  | .IX Header "SEE ALSO" | ||||||
|  | The fine source, which you can get at http://developer.axis.com. | ||||||
							
								
								
									
										395
									
								
								target/linux/etrax-2.6/image/e100boot/src/doc/e100boot.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										395
									
								
								target/linux/etrax-2.6/image/e100boot/src/doc/e100boot.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,395 @@ | |||||||
|  | <?xml version="1.0" ?> | ||||||
|  | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | ||||||
|  | <html xmlns="http://www.w3.org/1999/xhtml"> | ||||||
|  | <head> | ||||||
|  | <title>e100boot - Network and serial port bootloader for the ETRAX100 CPU.</title> | ||||||
|  | <meta http-equiv="content-type" content="text/html; charset=utf-8" /> | ||||||
|  | <link rev="made" href="mailto:root@localhost" /> | ||||||
|  | </head> | ||||||
|  |  | ||||||
|  | <body style="background-color: white"> | ||||||
|  |  | ||||||
|  | <p><a name="__index__"></a></p> | ||||||
|  | <!-- INDEX BEGIN --> | ||||||
|  |  | ||||||
|  | <ul> | ||||||
|  |  | ||||||
|  | 	<li><a href="#name">NAME</a></li> | ||||||
|  | 	<li><a href="#synopsis">SYNOPSIS</a></li> | ||||||
|  | 	<li><a href="#description">DESCRIPTION</a></li> | ||||||
|  | 	<ul> | ||||||
|  |  | ||||||
|  | 		<li><a href="#debugging_printout">Debugging printout</a></li> | ||||||
|  | 		<li><a href="#creating_binaries">Creating binaries</a></li> | ||||||
|  | 		<li><a href="#how_it_works__things_you_don_t_want_to_know_">How it works, things you don't want to know.</a></li> | ||||||
|  | 		<li><a href="#compilation_and_code">Compilation and code</a></li> | ||||||
|  | 	</ul> | ||||||
|  |  | ||||||
|  | 	<li><a href="#options">OPTIONS</a></li> | ||||||
|  | 	<li><a href="#examples">EXAMPLES</a></li> | ||||||
|  | 	<li><a href="#bugs">BUGS</a></li> | ||||||
|  | 	<li><a href="#copying">COPYING</a></li> | ||||||
|  | 	<li><a href="#author">AUTHOR</a></li> | ||||||
|  | 	<li><a href="#see_also">SEE ALSO</a></li> | ||||||
|  | </ul> | ||||||
|  | <!-- INDEX END --> | ||||||
|  |  | ||||||
|  | <hr /> | ||||||
|  | <p> | ||||||
|  | </p> | ||||||
|  | <h1><a name="name">NAME</a></h1> | ||||||
|  | <p>e100boot - Network and serial port bootloader for the ETRAX100 CPU.</p> | ||||||
|  | <p> | ||||||
|  | </p> | ||||||
|  | <hr /> | ||||||
|  | <h1><a name="synopsis">SYNOPSIS</a></h1> | ||||||
|  | <p><strong>e100boot</strong> [<strong>--device</strong> <em>devicename</em>] | ||||||
|  | [<strong>--file</strong> <em>filename</em>|- <em>addr</em> [<em>size</em>]] | ||||||
|  | [<strong>--flash</strong> <em>ram-source</em> <em>flash-offset</em> <em>size</em>] [<strong>--pause</strong> <em>iter</em>] | ||||||
|  | [<strong>--memtest</strong> <em>addr</em> <em>addr</em>] [<strong>--memclear</strong> <em>addr</em> <em>addr</em>] | ||||||
|  | [<strong>--memdump</strong> <em>addr</em> <em>addr</em>] [<strong>--setreg</strong> <em>addr</em>|<em>regname</em> <em>val</em>] | ||||||
|  | [<strong>--getreg</strong> <em>addr</em>|<em>regname</em>] [<strong>--verify</strong> <em>addr</em> <em>val</em>] | ||||||
|  | [<strong>--label</strong> <em>label</em>] [<strong>--loop</strong> <em>addr</em> <em>label</em>] [<strong>--5400</strong>] [<strong>--5600</strong>] | ||||||
|  | [<strong>--testcard</strong>] [<strong>--devboard</strong>] [<strong>--testcardlx</strong>] [<strong>--network</strong>] [<strong>--serial</strong>] | ||||||
|  | [<strong>--baudrate</strong> <em>baudrate</em>] [<strong>--bootfile</strong> <em>file</em>] [<strong>--jump</strong> <em>addr</em>] | ||||||
|  | [<strong>--tofiles</strong>] [<strong>--cmdsonly</strong>] [<strong>--images</strong>] [<strong>--noleds</strong>] [<strong>--help</strong>]</p> | ||||||
|  | <p> | ||||||
|  | </p> | ||||||
|  | <hr /> | ||||||
|  | <h1><a name="description">DESCRIPTION</a></h1> | ||||||
|  | <p>This boot loader facilitates loading of files over the network or a | ||||||
|  | serial port to an ETRAX100. It can also be used for fairly extensive | ||||||
|  | hardware debugging as you can read and write to any memory addresses, | ||||||
|  | including the ETRAX100 registers. You can also perform memory checks | ||||||
|  | and dumps and copy data to flash memories.</p> | ||||||
|  | <p>The first packet (or the first 784 bytes in the case of serial boot) | ||||||
|  | sent to Etrax100 is loaded into the cache. The code in this packet is | ||||||
|  | executed and loads the rest of the boot loader into the cache. The | ||||||
|  | cache is the only thing we can be sure of exists on all ETRAX100 | ||||||
|  | products, so the boot loader is limited to the size of the cache, | ||||||
|  | 8KB. If further boot loading code is needed you have to set up | ||||||
|  | external memory and load another boot loader into it, but this is | ||||||
|  | rarely needed.</p> | ||||||
|  | <p>Two programs are involved in this boot loading, one is the program on | ||||||
|  | your workstation that sends the packets to ETRAX100, this is called | ||||||
|  | the server boot loader or SBL. The other program is the one in | ||||||
|  | ETRAX100 that receives packets from the SBL and acts upon the data | ||||||
|  | therein, this is called the client boot loader or CBL.</p> | ||||||
|  | <p>We don't want to edit and recompile the CBL each time we want to load | ||||||
|  | level two to different parts of memory, like we do on different | ||||||
|  | products. We also want to change things like the setup of external | ||||||
|  | memory before we load data into it. To make the boot loading as | ||||||
|  | flexible as possible and separate the CBL from level two we send a | ||||||
|  | configuration packet to it. After this packet we load other files, if | ||||||
|  | we want to.</p> | ||||||
|  | <p>The configuration packet can contain information to the CBL which lets | ||||||
|  | you: initialize external memory, read and write to all ETRAX100 | ||||||
|  | registers, read and write to any part of memory, load as many other | ||||||
|  | files as you like to any part of memory you like, etc. The | ||||||
|  | configuration packet is generated on the fly by the SBL.</p> | ||||||
|  | <p>Since the CBL is unaware of which product it will be loaded on, it | ||||||
|  | doesn't do product specific initialization like setting up the | ||||||
|  | memory. This must be done with the configuration packet.</p> | ||||||
|  | <p> | ||||||
|  | </p> | ||||||
|  | <h2><a name="debugging_printout">Debugging printout</a></h2> | ||||||
|  | <p>When doing network boot the debugging printout from the CBL in ETRAX | ||||||
|  | is transmitted back over the network and printed by e100boot. When | ||||||
|  | doing serial boot that interface will be used. So in either case you | ||||||
|  | will not need any other software or hardware to receive the debugging | ||||||
|  | printout.</p> | ||||||
|  | <p> | ||||||
|  | </p> | ||||||
|  | <h2><a name="creating_binaries">Creating binaries</a></h2> | ||||||
|  | <p>The files containing code to be loaded on the ETRAX100 must be | ||||||
|  | stripped using the standard GCC binutils.</p> | ||||||
|  | <p> | ||||||
|  | </p> | ||||||
|  | <h2><a name="how_it_works__things_you_don_t_want_to_know_">How it works, things you don't want to know.</a></h2> | ||||||
|  | <p>ack, timeout bla, bla... RTFS.</p> | ||||||
|  | <p> | ||||||
|  | </p> | ||||||
|  | <h2><a name="compilation_and_code">Compilation and code</a></h2> | ||||||
|  | <p>Noteworthy is that two separate ETRAX100 binaries are created, one for | ||||||
|  | network boot and one for serial boot. They actually contain exactly | ||||||
|  | the same code, but linked in different order. This is because the code | ||||||
|  | to load the rest of the bootloader over a specific interface must be | ||||||
|  | contained in the first data sent to the ETRAX100 and it is too | ||||||
|  | difficult to cram the code for both interfaces in the beginning of the | ||||||
|  | same binary. Hence two files.</p> | ||||||
|  | <p>Other stuff you don't want to know is that the cache is mapped from | ||||||
|  | 0x380000f0 to 0x380020f0. Code starts at the first address followed by | ||||||
|  | data up to the symbol <em>Ebss</em>. At the other end is the buffer for boot | ||||||
|  | commands (addresses defined by <em>IO_BUF_START</em> and <em>IO_BUF_END</em> below | ||||||
|  | which the stack lies and hopefully the stack and <em>Ebss</em> will never | ||||||
|  | meet...</p> | ||||||
|  | <p>The serial data is loaded from 0x380000f0 to 0x380003ff before | ||||||
|  | execution starts.</p> | ||||||
|  | <p> | ||||||
|  | </p> | ||||||
|  | <hr /> | ||||||
|  | <h1><a name="options">OPTIONS</a></h1> | ||||||
|  | <p>The options are done in the order specified on the command line, so | ||||||
|  | you probably want to do any memory setup before loading a file to the | ||||||
|  | memory, and you probably do not want to perform a memory test after | ||||||
|  | you have loaded a file to that memory.</p> | ||||||
|  | <p>All addresses and sizes must be in hex with optional '0x' prefix, or a | ||||||
|  | ETRAX100 register name. Since the <strong>--setreg</strong> and <strong>--getreg</strong> options | ||||||
|  | only can be performed on dword aligned dwords only the registers that | ||||||
|  | conform to this can be named.</p> | ||||||
|  | <p>Note also that all addresses must be in uncached memory (bit 31 set), | ||||||
|  | as the bootloader lies in the cache. If you access any uncached | ||||||
|  | address during boot, the bootloader will be destroyed without warning.</p> | ||||||
|  | <p>It is also possible to specify an address as <em>+address</em>, in which | ||||||
|  | case it is considered to be relative to <em>IO_BUF_START</em>. This is | ||||||
|  | especially useful in combination with the <strong>--loop</strong> option below.</p> | ||||||
|  | <dl> | ||||||
|  | <dt><strong><a name="item__2d_2dbaudrate_baudrate"><strong>--baudrate</strong> <em>baudrate</em></a></strong> | ||||||
|  |  | ||||||
|  | <dd> | ||||||
|  | <p>Set baudrate for files loaded after the boot loader.</p> | ||||||
|  | </dd> | ||||||
|  | </li> | ||||||
|  | <dt><strong><a name="item__2d_2dbootfile_filename"><strong>--bootfile</strong> <em>filename</em></a></strong> | ||||||
|  |  | ||||||
|  | <dd> | ||||||
|  | <p>Which boot image to send to ETRAX instead of the default ones.</p> | ||||||
|  | </dd> | ||||||
|  | </li> | ||||||
|  | <dt><strong><a name="item__2d_2dcmdsonly"><strong>--cmdsonly</strong></a></strong> | ||||||
|  |  | ||||||
|  | <dd> | ||||||
|  | <p>Write the commands to file e100boot.cmds.</p> | ||||||
|  | </dd> | ||||||
|  | </li> | ||||||
|  | <dt><strong><a name="item__2d_2ddevboard"><strong>--devboard</strong></a></strong> | ||||||
|  |  | ||||||
|  | <dd> | ||||||
|  | <p>Sets registers for the developer board.</p> | ||||||
|  | </dd> | ||||||
|  | </li> | ||||||
|  | <dt><strong><a name="item__2d_2ddevice_devicename"><strong>--device</strong> <em>devicename</em></a></strong> | ||||||
|  |  | ||||||
|  | <dd> | ||||||
|  | <p>Which device to send packets on. For network boot the default is | ||||||
|  | eth0. For serial boot it is ttyS0.</p> | ||||||
|  | </dd> | ||||||
|  | </li> | ||||||
|  | <dt><strong><a name="item__2d_2dfile_filename_7c_2d_address__5bsize_5d"><strong>--file</strong> <em>filename</em>|- <em>address</em> [<em>size</em>]</a></strong> | ||||||
|  |  | ||||||
|  | <dd> | ||||||
|  | <p>The file to load and the address to load it to. If file is loaded on | ||||||
|  | stdin, specify filename '-' followed by a size. Size need only be | ||||||
|  | given in this case. You can load as many files as you want, each | ||||||
|  | specified with a <strong>--file</strong>.</p> | ||||||
|  | </dd> | ||||||
|  | </li> | ||||||
|  | <dt><strong><a name="item__2d_2dflash_ram_2dsource_flash_2doffset_size"><strong>--flash</strong> <em>ram-source flash-offset size</em></a></strong> | ||||||
|  |  | ||||||
|  | <dd> | ||||||
|  | <p>Copies the specified RAM area to the flash.</p> | ||||||
|  | </dd> | ||||||
|  | </li> | ||||||
|  | <dt><strong><a name="item__2d_2dgetreg_address_7cregname"><strong>--getreg</strong> <em>address</em>|<em>regname</em></a></strong> | ||||||
|  |  | ||||||
|  | <dd> | ||||||
|  | <p>Print value of memory location. Must be uncached address.</p> | ||||||
|  | </dd> | ||||||
|  | </li> | ||||||
|  | <dt><strong><a name="item__2d_2dhelp"><strong>--help</strong></a></strong> | ||||||
|  |  | ||||||
|  | <dd> | ||||||
|  | <p>Print the help information.</p> | ||||||
|  | </dd> | ||||||
|  | </li> | ||||||
|  | <dt><strong><a name="item__2d_2dimages"><strong>--images</strong></a></strong> | ||||||
|  |  | ||||||
|  | <dd> | ||||||
|  | <p>Print information about the internal boot images, then exit.</p> | ||||||
|  | </dd> | ||||||
|  | </li> | ||||||
|  | <dt><strong><a name="item__2d_2djump_address"><strong>--jump</strong> <em>address</em></a></strong> | ||||||
|  |  | ||||||
|  | <dd> | ||||||
|  | <p>Jump to specified address.</p> | ||||||
|  | </dd> | ||||||
|  | </li> | ||||||
|  | <dt><strong><a name="item__2d_2dlabel_label"><strong>--label</strong> <em>label</em></a></strong> | ||||||
|  |  | ||||||
|  | <dd> | ||||||
|  | <p>Define a label to be used as target by the <strong>--loop</strong> command. This | ||||||
|  | command is only used by the SBL to calculate the address for the | ||||||
|  | <strong>--loop</strong> and does not take up any space in the configuration packet.</p> | ||||||
|  | </dd> | ||||||
|  | </li> | ||||||
|  | <dt><strong><a name="item__2d_2dloop_check_2daddress_label"><strong>--loop</strong> <em>check-address label</em></a></strong> | ||||||
|  |  | ||||||
|  | <dd> | ||||||
|  | <p>If the contents of check-address is nonzero it is decremented and the | ||||||
|  | command parser continues parsing at the label.</p> | ||||||
|  | </dd> | ||||||
|  | <dd> | ||||||
|  | <p>If no external memory is initialized yet it can be convenient to use | ||||||
|  | an address in the area occupied by the configuration packet. Run | ||||||
|  | e100boot with <strong>--help</strong> to see which addresses the commands are stored | ||||||
|  | at. The size of the commands are four bytes for each command plus four | ||||||
|  | bytes per argument to the command.</p> | ||||||
|  | </dd> | ||||||
|  | </li> | ||||||
|  | <dt><strong><a name="item__2d_2dmemclear_start_2daddress_end_2daddress"><strong>--memclear</strong> <em>start-address end-address</em></a></strong> | ||||||
|  |  | ||||||
|  | <dd> | ||||||
|  | <p>Clears the specified memory area.</p> | ||||||
|  | </dd> | ||||||
|  | </li> | ||||||
|  | <dt><strong><a name="item__2d_2dmemdump_start_2daddress_end_2daddress"><strong>--memdump</strong> <em>start-address end-address</em></a></strong> | ||||||
|  |  | ||||||
|  | <dd> | ||||||
|  | <p>Prints the contents of the specified memory area.</p> | ||||||
|  | </dd> | ||||||
|  | </li> | ||||||
|  | <dt><strong><a name="item__2d_2dmemtest_start_2daddress_end_2daddress"><strong>--memtest</strong> <em>start-address end-address</em></a></strong> | ||||||
|  |  | ||||||
|  | <dd> | ||||||
|  | <p>Does a fairly extensive test of the specified memory area. Not only | ||||||
|  | catches defect memories but also catches things like wrong memory | ||||||
|  | setups where memory addresses are mirrored onto each other.</p> | ||||||
|  | </dd> | ||||||
|  | </li> | ||||||
|  | <dt><strong><a name="item__2d_2dnetwork"><strong>--network</strong></a></strong> | ||||||
|  |  | ||||||
|  | <dd> | ||||||
|  | <p>Perform a network boot.</p> | ||||||
|  | </dd> | ||||||
|  | </li> | ||||||
|  | <dt><strong><a name="item__2d_2dnoleds"><strong>--noleds</strong></a></strong> | ||||||
|  |  | ||||||
|  | <dd> | ||||||
|  | <p>When using the internal images use a version that does not toggle | ||||||
|  | general port PA or PB in ETRAX during the boot procedure.</p> | ||||||
|  | </dd> | ||||||
|  | </li> | ||||||
|  | <dt><strong><a name="item__2d_2dpause_iterations"><strong>--pause</strong> <em>iterations</em></a></strong> | ||||||
|  |  | ||||||
|  | <dd> | ||||||
|  | <p>How many <em>iterations</em> to do of an empty loop.</p> | ||||||
|  | </dd> | ||||||
|  | </li> | ||||||
|  | <dt><strong><a name="item__2d_2dserial"><strong>--serial</strong></a></strong> | ||||||
|  |  | ||||||
|  | <dd> | ||||||
|  | <p>Do a serial boot.</p> | ||||||
|  | </dd> | ||||||
|  | </li> | ||||||
|  | <dt><strong><a name="item__2d_2dsetreg_address_7cregname_value"><strong>--setreg</strong> <em>address</em>|<em>regname</em> <em>value</em></a></strong> | ||||||
|  |  | ||||||
|  | <dd> | ||||||
|  | <p>Load dword to dword aligned memory location.</p> | ||||||
|  | </dd> | ||||||
|  | </li> | ||||||
|  | <dt><strong><a name="item__2d_2dtestcard"><strong>--testcard</strong></a></strong> | ||||||
|  |  | ||||||
|  | <dd> | ||||||
|  | <p>Configures the memories for the ETRAX 100 testcard.</p> | ||||||
|  | </dd> | ||||||
|  | </li> | ||||||
|  | <dt><strong><a name="item__2d_2dtestcardlx"><strong>--testcardlx</strong></a></strong> | ||||||
|  |  | ||||||
|  | <dd> | ||||||
|  | <p>Configures the memories for the ETRAX100 LX testcard.</p> | ||||||
|  | </dd> | ||||||
|  | </li> | ||||||
|  | <dt><strong><a name="item__2d_2dtofiles"><strong>--tofiles</strong></a></strong> | ||||||
|  |  | ||||||
|  | <dd> | ||||||
|  | <p>Write packets to files e100boot.seq[0..]. Does not transmit the data.</p> | ||||||
|  | </dd> | ||||||
|  | </li> | ||||||
|  | <dt><strong><a name="item__2d_2dverify_address_value"><strong>--verify</strong> <em>address value</em></a></strong> | ||||||
|  |  | ||||||
|  | <dd> | ||||||
|  | <p>Verify that memory contains dword. If not loader will stop. This is to | ||||||
|  | avoid booting the wrong unit. If you have the units ethernet address | ||||||
|  | in the flash memory you can check for that.</p> | ||||||
|  | </dd> | ||||||
|  | </li> | ||||||
|  | <dt><strong><a name="item__2d_2d5400"><strong>--5400</strong></a></strong> | ||||||
|  |  | ||||||
|  | <dd> | ||||||
|  | <p>Sets R_WAITSTATES, R_DRAM_TIMING and R_DRAM_CONFIG for the 5400 | ||||||
|  | printserver.</p> | ||||||
|  | </dd> | ||||||
|  | </li> | ||||||
|  | <dt><strong><a name="item__2d_2d5600"><strong>--5600</strong></a></strong> | ||||||
|  |  | ||||||
|  | <dd> | ||||||
|  | <p>Sets R_WAITSTATES, R_DRAM_TIMING and R_DRAM_CONFIG for the 5600 | ||||||
|  | printserver.</p> | ||||||
|  | </dd> | ||||||
|  | </li> | ||||||
|  | </dl> | ||||||
|  | <p> | ||||||
|  | </p> | ||||||
|  | <hr /> | ||||||
|  | <h1><a name="examples">EXAMPLES</a></h1> | ||||||
|  | <p>If you have a stripped binary (file.ima) linked to 0x08000000 that you want | ||||||
|  | to boot via the network, do this:</p> | ||||||
|  | <p><strong>e100boot --file file.ima 88000000 --jump 08000000</strong></p> | ||||||
|  | <p>Or something like this. Sets waitstates to zero and loads two files, | ||||||
|  | the first from stdin:</p> | ||||||
|  | <p><strong>cat file.ima | e100boot --memtest 88000000 8801ffff --memclear | ||||||
|  | 88000000 8801ffff --setreg b0000000 0 --getreg b0000000 --file - | ||||||
|  | 88000000 a000 --file file2.ima 88010000 --memdump 88000000 880000ff | ||||||
|  | --jump 08000000</strong></p> | ||||||
|  | <p>Or this, enables 16 bit parallel port and flashes the led on PA0:</p> | ||||||
|  | <p><strong>e100boot --testcardlx --setreg R_PORT_PA_SET 0x00000000 --setreg | ||||||
|  | R_GEN_CONFIG 0x80000004 --setreg R_PAR0_CONFIG 0x00000200 --setreg | ||||||
|  | R_PORT_G_DATA 0x00000000 --pause 0x02000000 --setreg R_PORT_G_DATA | ||||||
|  | 0xffffffff --pause 0x02000000 --setreg R_PORT_G_DATA 0x00000000 --loop | ||||||
|  | 0x38001e0b 0x38001e60</strong></p> | ||||||
|  | <p>Setup the memory, test the SRAM, print the contents of the first 256 | ||||||
|  | bytes of SRAM, clear SRAM, test the DRAM, print R_DMA_CH0_CMD, load a | ||||||
|  | file to SRAM, load another file to SRAM, load file to DRAM, jump to | ||||||
|  | code in SRAM.</p> | ||||||
|  | <p><strong>e100boot --setreg b0000000 1000 --setreg b0000008 00006543 --setreg | ||||||
|  | b000000c 12966060 --memtest 88000000 80000 --memdump 88000000 880000ff | ||||||
|  | --memclear 88000000 80000 --memtest c0000000 400000 --getreg b00001d0 | ||||||
|  | --file file1.ima 88000000 --file file2.ima 88010000 --file file3.ima | ||||||
|  | c0000000 --jump 88000000</strong></p> | ||||||
|  | <p>Boot Linux on the testcard.</p> | ||||||
|  | <p><strong>e100boot --setreg b0000000 1000 --setreg b0000008 6557 --setreg | ||||||
|  | b000000c 1b988080 --file timage c0000500 --jump 40000500</strong></p> | ||||||
|  | <p>Booting over serial port and using labels to flash the leds on port | ||||||
|  | PA.</p> | ||||||
|  | <p><strong>e100boot --serial --device /dev/ttyS1 --baudrate 9600 --label first | ||||||
|  | --setreg 0x380020e0 00000001 --setreg R_PORT_PA_SET 0x0000ff00 --pause | ||||||
|  | 0x02000000 --setreg R_PORT_PA_SET 0x0000ffff --pause 0x02000000 --loop | ||||||
|  | 0x380020e0 first</strong></p> | ||||||
|  | <p> | ||||||
|  | </p> | ||||||
|  | <hr /> | ||||||
|  | <h1><a name="bugs">BUGS</a></h1> | ||||||
|  | <p>You're kidding, right? Check <a href="#author">AUTHOR</a> below. The only thing | ||||||
|  | would be the hubris of the author, but that I consider a feature. If | ||||||
|  | you find any other 'features' report them to | ||||||
|  | <a href="mailto:technology@axis.com.">technology@axis.com.</a> Don't bother the author directly, he is busy | ||||||
|  | playing PlayStation2.</p> | ||||||
|  | <p> | ||||||
|  | </p> | ||||||
|  | <hr /> | ||||||
|  | <h1><a name="copying">COPYING</a></h1> | ||||||
|  | <p>Copyright <20> 1996-2002 Axis Communications AB.</p> | ||||||
|  | <p> | ||||||
|  | </p> | ||||||
|  | <hr /> | ||||||
|  | <h1><a name="author">AUTHOR</a></h1> | ||||||
|  | <p>Written by Ronny Ranerup.</p> | ||||||
|  | <p> | ||||||
|  | </p> | ||||||
|  | <hr /> | ||||||
|  | <h1><a name="see_also">SEE ALSO</a></h1> | ||||||
|  | <p>The fine source, which you can get at <a href="http://developer.axis.com.">http://developer.axis.com.</a></p> | ||||||
|  |  | ||||||
|  | </body> | ||||||
|  |  | ||||||
|  | </html> | ||||||
							
								
								
									
										314
									
								
								target/linux/etrax-2.6/image/e100boot/src/doc/e100boot.pod
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										314
									
								
								target/linux/etrax-2.6/image/e100boot/src/doc/e100boot.pod
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,314 @@ | |||||||
|  | =head1 NAME | ||||||
|  |  | ||||||
|  | e100boot - Network and serial port bootloader for the ETRAX100 CPU. | ||||||
|  |  | ||||||
|  | =head1 SYNOPSIS | ||||||
|  |  | ||||||
|  | B<e100boot> [B<--device> I<devicename>] | ||||||
|  | [B<--file> I<filename>|- I<addr> [I<size>]] | ||||||
|  | [B<--flash> I<ram-source> I<flash-offset> I<size>] [B<--pause> I<iter>] | ||||||
|  | [B<--memtest> I<addr> I<addr>] [B<--memclear> I<addr> I<addr>] | ||||||
|  | [B<--memdump> I<addr> I<addr>] [B<--setreg> I<addr>|I<regname> I<val>] | ||||||
|  | [B<--getreg> I<addr>|I<regname>] [B<--verify> I<addr> I<val>] | ||||||
|  | [B<--label> I<label>] [B<--loop> I<addr> I<label>] [B<--5400>] [B<--5600>] | ||||||
|  | [B<--testcard>] [B<--devboard>] [B<--testcardlx>] [B<--network>] [B<--serial>] | ||||||
|  | [B<--baudrate> I<baudrate>] [B<--bootfile> I<file>] [B<--jump> I<addr>] | ||||||
|  | [B<--tofiles>] [B<--cmdsonly>] [B<--images>] [B<--noleds>] [B<--help>] | ||||||
|  |  | ||||||
|  | =head1 DESCRIPTION | ||||||
|  |  | ||||||
|  | This boot loader facilitates loading of files over the network or a | ||||||
|  | serial port to an ETRAX100. It can also be used for fairly extensive | ||||||
|  | hardware debugging as you can read and write to any memory addresses, | ||||||
|  | including the ETRAX100 registers. You can also perform memory checks | ||||||
|  | and dumps and copy data to flash memories. | ||||||
|  |  | ||||||
|  | The first packet (or the first 784 bytes in the case of serial boot) | ||||||
|  | sent to Etrax100 is loaded into the cache. The code in this packet is | ||||||
|  | executed and loads the rest of the boot loader into the cache. The | ||||||
|  | cache is the only thing we can be sure of exists on all ETRAX100 | ||||||
|  | products, so the boot loader is limited to the size of the cache, | ||||||
|  | 8KB. If further boot loading code is needed you have to set up | ||||||
|  | external memory and load another boot loader into it, but this is | ||||||
|  | rarely needed. | ||||||
|  |  | ||||||
|  | Two programs are involved in this boot loading, one is the program on | ||||||
|  | your workstation that sends the packets to ETRAX100, this is called | ||||||
|  | the server boot loader or SBL. The other program is the one in | ||||||
|  | ETRAX100 that receives packets from the SBL and acts upon the data | ||||||
|  | therein, this is called the client boot loader or CBL. | ||||||
|  |  | ||||||
|  | We don't want to edit and recompile the CBL each time we want to load | ||||||
|  | level two to different parts of memory, like we do on different | ||||||
|  | products. We also want to change things like the setup of external | ||||||
|  | memory before we load data into it. To make the boot loading as | ||||||
|  | flexible as possible and separate the CBL from level two we send a | ||||||
|  | configuration packet to it. After this packet we load other files, if | ||||||
|  | we want to. | ||||||
|  |  | ||||||
|  | The configuration packet can contain information to the CBL which lets | ||||||
|  | you: initialize external memory, read and write to all ETRAX100 | ||||||
|  | registers, read and write to any part of memory, load as many other | ||||||
|  | files as you like to any part of memory you like, etc. The | ||||||
|  | configuration packet is generated on the fly by the SBL. | ||||||
|  |  | ||||||
|  | Since the CBL is unaware of which product it will be loaded on, it | ||||||
|  | doesn't do product specific initialization like setting up the | ||||||
|  | memory. This must be done with the configuration packet. | ||||||
|  |  | ||||||
|  | =head2 Debugging printout | ||||||
|  |  | ||||||
|  | When doing network boot the debugging printout from the CBL in ETRAX | ||||||
|  | is transmitted back over the network and printed by e100boot. When | ||||||
|  | doing serial boot that interface will be used. So in either case you | ||||||
|  | will not need any other software or hardware to receive the debugging | ||||||
|  | printout. | ||||||
|  |  | ||||||
|  | =head2 Creating binaries | ||||||
|  |  | ||||||
|  | The files containing code to be loaded on the ETRAX100 must be | ||||||
|  | stripped using the standard GCC binutils. | ||||||
|  |  | ||||||
|  | =head2 How it works, things you don't want to know. | ||||||
|  |  | ||||||
|  | ack, timeout bla, bla... RTFS. | ||||||
|  |  | ||||||
|  | =head2 Compilation and code | ||||||
|  |  | ||||||
|  | Noteworthy is that two separate ETRAX100 binaries are created, one for | ||||||
|  | network boot and one for serial boot. They actually contain exactly | ||||||
|  | the same code, but linked in different order. This is because the code | ||||||
|  | to load the rest of the bootloader over a specific interface must be | ||||||
|  | contained in the first data sent to the ETRAX100 and it is too | ||||||
|  | difficult to cram the code for both interfaces in the beginning of the | ||||||
|  | same binary. Hence two files. | ||||||
|  |  | ||||||
|  | Other stuff you don't want to know is that the cache is mapped from | ||||||
|  | 0x380000f0 to 0x380020f0. Code starts at the first address followed by | ||||||
|  | data up to the symbol I<Ebss>. At the other end is the buffer for boot | ||||||
|  | commands (addresses defined by I<IO_BUF_START> and I<IO_BUF_END> below | ||||||
|  | which the stack lies and hopefully the stack and I<Ebss> will never | ||||||
|  | meet... | ||||||
|  |  | ||||||
|  | The serial data is loaded from 0x380000f0 to 0x380003ff before | ||||||
|  | execution starts. | ||||||
|  |  | ||||||
|  | =head1 OPTIONS | ||||||
|  |  | ||||||
|  | The options are done in the order specified on the command line, so | ||||||
|  | you probably want to do any memory setup before loading a file to the | ||||||
|  | memory, and you probably do not want to perform a memory test after | ||||||
|  | you have loaded a file to that memory. | ||||||
|  |  | ||||||
|  | All addresses and sizes must be in hex with optional '0x' prefix, or a | ||||||
|  | ETRAX100 register name. Since the B<--setreg> and B<--getreg> options | ||||||
|  | only can be performed on dword aligned dwords only the registers that | ||||||
|  | conform to this can be named. | ||||||
|  |  | ||||||
|  | Note also that all addresses must be in uncached memory (bit 31 set), | ||||||
|  | as the bootloader lies in the cache. If you access any uncached | ||||||
|  | address during boot, the bootloader will be destroyed without warning. | ||||||
|  |  | ||||||
|  | It is also possible to specify an address as I<+address>, in which | ||||||
|  | case it is considered to be relative to I<IO_BUF_START>. This is | ||||||
|  | especially useful in combination with the B<--loop> option below. | ||||||
|  |  | ||||||
|  | =over 4 | ||||||
|  |  | ||||||
|  | =item B<--baudrate> I<baudrate> | ||||||
|  |  | ||||||
|  | Set baudrate for files loaded after the boot loader. | ||||||
|  |  | ||||||
|  | =item B<--bootfile> I<filename> | ||||||
|  |  | ||||||
|  | Which boot image to send to ETRAX instead of the default ones. | ||||||
|  |  | ||||||
|  | =item B<--cmdsonly> | ||||||
|  |  | ||||||
|  | Write the commands to file e100boot.cmds. | ||||||
|  |  | ||||||
|  | =item B<--devboard> | ||||||
|  |  | ||||||
|  | Sets registers for the developer board. | ||||||
|  |  | ||||||
|  | =item B<--device> I<devicename> | ||||||
|  |  | ||||||
|  | Which device to send packets on. For network boot the default is | ||||||
|  | eth0. For serial boot it is ttyS0. | ||||||
|  |  | ||||||
|  | =item B<--file> I<filename>|- I<address> [I<size>] | ||||||
|  |  | ||||||
|  | The file to load and the address to load it to. If file is loaded on | ||||||
|  | stdin, specify filename '-' followed by a size. Size need only be | ||||||
|  | given in this case. You can load as many files as you want, each | ||||||
|  | specified with a B<--file>. | ||||||
|  |  | ||||||
|  | =item B<--flash> I<ram-source flash-offset size> | ||||||
|  |  | ||||||
|  | Copies the specified RAM area to the flash. | ||||||
|  |  | ||||||
|  | =item B<--getreg> I<address>|I<regname> | ||||||
|  |  | ||||||
|  | Print value of memory location. Must be uncached address. | ||||||
|  |  | ||||||
|  | =item B<--help> | ||||||
|  |  | ||||||
|  | Print the help information. | ||||||
|  |  | ||||||
|  | =item B<--images> | ||||||
|  |  | ||||||
|  | Print information about the internal boot images, then exit. | ||||||
|  |  | ||||||
|  | =item B<--jump> I<address> | ||||||
|  |  | ||||||
|  | Jump to specified address. | ||||||
|  |  | ||||||
|  | =item B<--label> I<label> | ||||||
|  |  | ||||||
|  | Define a label to be used as target by the B<--loop> command. This | ||||||
|  | command is only used by the SBL to calculate the address for the | ||||||
|  | B<--loop> and does not take up any space in the configuration packet. | ||||||
|  |  | ||||||
|  | =item B<--loop> I<check-address label> | ||||||
|  |  | ||||||
|  | If the contents of check-address is nonzero it is decremented and the | ||||||
|  | command parser continues parsing at the label. | ||||||
|  |  | ||||||
|  | If no external memory is initialized yet it can be convenient to use | ||||||
|  | an address in the area occupied by the configuration packet. Run | ||||||
|  | e100boot with B<--help> to see which addresses the commands are stored | ||||||
|  | at. The size of the commands are four bytes for each command plus four | ||||||
|  | bytes per argument to the command. | ||||||
|  |  | ||||||
|  | =item B<--memclear> I<start-address end-address> | ||||||
|  |  | ||||||
|  | Clears the specified memory area. | ||||||
|  |  | ||||||
|  | =item B<--memdump> I<start-address end-address> | ||||||
|  |  | ||||||
|  | Prints the contents of the specified memory area. | ||||||
|  |  | ||||||
|  | =item B<--memtest> I<start-address end-address> | ||||||
|  |  | ||||||
|  | Does a fairly extensive test of the specified memory area. Not only | ||||||
|  | catches defect memories but also catches things like wrong memory | ||||||
|  | setups where memory addresses are mirrored onto each other. | ||||||
|  |  | ||||||
|  | =item B<--network> | ||||||
|  |  | ||||||
|  | Perform a network boot. | ||||||
|  |  | ||||||
|  | =item B<--noleds> | ||||||
|  |  | ||||||
|  | When using the internal images use a version that does not toggle | ||||||
|  | general port PA or PB in ETRAX during the boot procedure. | ||||||
|  |  | ||||||
|  | =item B<--pause> I<iterations> | ||||||
|  |  | ||||||
|  | How many I<iterations> to do of an empty loop. | ||||||
|  |  | ||||||
|  | =item B<--serial> | ||||||
|  |  | ||||||
|  | Do a serial boot. | ||||||
|  |  | ||||||
|  | =item B<--setreg> I<address>|I<regname> I<value> | ||||||
|  |  | ||||||
|  | Load dword to dword aligned memory location. | ||||||
|  |  | ||||||
|  | =item B<--testcard> | ||||||
|  |  | ||||||
|  | Configures the memories for the ETRAX 100 testcard. | ||||||
|  |  | ||||||
|  | =item B<--testcardlx> | ||||||
|  |  | ||||||
|  | Configures the memories for the ETRAX100 LX testcard. | ||||||
|  |  | ||||||
|  | =item B<--tofiles> | ||||||
|  |  | ||||||
|  | Write packets to files e100boot.seq[0..]. Does not transmit the data. | ||||||
|  |  | ||||||
|  | =item B<--verify> I<address value> | ||||||
|  |  | ||||||
|  | Verify that memory contains dword. If not loader will stop. This is to | ||||||
|  | avoid booting the wrong unit. If you have the units ethernet address | ||||||
|  | in the flash memory you can check for that. | ||||||
|  |  | ||||||
|  | =item B<--5400> | ||||||
|  |  | ||||||
|  | Sets R_WAITSTATES, R_DRAM_TIMING and R_DRAM_CONFIG for the 5400 | ||||||
|  | printserver. | ||||||
|  |  | ||||||
|  | =item B<--5600> | ||||||
|  |  | ||||||
|  | Sets R_WAITSTATES, R_DRAM_TIMING and R_DRAM_CONFIG for the 5600 | ||||||
|  | printserver. | ||||||
|  |  | ||||||
|  | =back | ||||||
|  |  | ||||||
|  | =head1 EXAMPLES | ||||||
|  |  | ||||||
|  | If you have a stripped binary (file.ima) linked to 0x08000000 that you want | ||||||
|  | to boot via the network, do this: | ||||||
|  |  | ||||||
|  | B<e100boot --file file.ima 88000000 --jump 08000000> | ||||||
|  |  | ||||||
|  | Or something like this. Sets waitstates to zero and loads two files, | ||||||
|  | the first from stdin: | ||||||
|  |  | ||||||
|  | B<cat file.ima | e100boot --memtest 88000000 8801ffff --memclear | ||||||
|  | 88000000 8801ffff --setreg b0000000 0 --getreg b0000000 --file - | ||||||
|  | 88000000 a000 --file file2.ima 88010000 --memdump 88000000 880000ff | ||||||
|  | --jump 08000000> | ||||||
|  |  | ||||||
|  | Or this, enables 16 bit parallel port and flashes the led on PA0: | ||||||
|  |  | ||||||
|  | B<e100boot --testcardlx --setreg R_PORT_PA_SET 0x00000000 --setreg | ||||||
|  | R_GEN_CONFIG 0x80000004 --setreg R_PAR0_CONFIG 0x00000200 --setreg | ||||||
|  | R_PORT_G_DATA 0x00000000 --pause 0x02000000 --setreg R_PORT_G_DATA | ||||||
|  | 0xffffffff --pause 0x02000000 --setreg R_PORT_G_DATA 0x00000000 --loop | ||||||
|  | 0x38001e0b 0x38001e60> | ||||||
|  |  | ||||||
|  | Setup the memory, test the SRAM, print the contents of the first 256 | ||||||
|  | bytes of SRAM, clear SRAM, test the DRAM, print R_DMA_CH0_CMD, load a | ||||||
|  | file to SRAM, load another file to SRAM, load file to DRAM, jump to | ||||||
|  | code in SRAM. | ||||||
|  |  | ||||||
|  | B<e100boot --setreg b0000000 1000 --setreg b0000008 00006543 --setreg | ||||||
|  | b000000c 12966060 --memtest 88000000 80000 --memdump 88000000 880000ff | ||||||
|  | --memclear 88000000 80000 --memtest c0000000 400000 --getreg b00001d0 | ||||||
|  | --file file1.ima 88000000 --file file2.ima 88010000 --file file3.ima | ||||||
|  | c0000000 --jump 88000000> | ||||||
|  |  | ||||||
|  | Boot Linux on the testcard. | ||||||
|  |  | ||||||
|  | B<e100boot --setreg b0000000 1000 --setreg b0000008 6557 --setreg | ||||||
|  | b000000c 1b988080 --file timage c0000500 --jump 40000500> | ||||||
|  |  | ||||||
|  | Booting over serial port and using labels to flash the leds on port | ||||||
|  | PA. | ||||||
|  |  | ||||||
|  | B<e100boot --serial --device /dev/ttyS1 --baudrate 9600 --label first | ||||||
|  | --setreg 0x380020e0 00000001 --setreg R_PORT_PA_SET 0x0000ff00 --pause | ||||||
|  | 0x02000000 --setreg R_PORT_PA_SET 0x0000ffff --pause 0x02000000 --loop | ||||||
|  | 0x380020e0 first> | ||||||
|  |  | ||||||
|  | =head1 BUGS | ||||||
|  |  | ||||||
|  | You're kidding, right? Check L<AUTHOR|"AUTHOR"> below. The only thing | ||||||
|  | would be the hubris of the author, but that I consider a feature. If | ||||||
|  | you find any other 'features' report them to | ||||||
|  | technology@axis.com. Don't bother the author directly, he is busy | ||||||
|  | playing PlayStation2. | ||||||
|  |  | ||||||
|  | =head1 COPYING | ||||||
|  |  | ||||||
|  | Copyright <20> 1996-2002 Axis Communications AB. | ||||||
|  |  | ||||||
|  | =head1 AUTHOR | ||||||
|  |  | ||||||
|  | Written by Ronny Ranerup. | ||||||
|  |  | ||||||
|  | =head1 SEE ALSO | ||||||
|  |  | ||||||
|  | The fine source, which you can get at http://developer.axis.com. | ||||||
|  |  | ||||||
| @@ -0,0 +1,2 @@ | |||||||
|  |  | ||||||
|  | . | ||||||
| @@ -0,0 +1,2 @@ | |||||||
|  |  | ||||||
|  | . | ||||||
							
								
								
									
										267
									
								
								target/linux/etrax-2.6/image/e100boot/src/libpcap-0.4/CHANGES
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										267
									
								
								target/linux/etrax-2.6/image/e100boot/src/libpcap-0.4/CHANGES
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,267 @@ | |||||||
|  | @(#) $Header: /usr/local/cvs/linux/tools/build/e100boot/libpcap-0.4/CHANGES,v 1.1 1999/08/26 10:05:17 johana Exp $ (LBL) | ||||||
|  |  | ||||||
|  | v0.4 Sat Jul 25 12:40:09 PDT 1998 | ||||||
|  |  | ||||||
|  | - Fix endian problem with DLT_NULL devices. From FreeBSD via Bill | ||||||
|  |   Fenner (fenner@parc.xerox.com) | ||||||
|  |  | ||||||
|  | - Fix alignment problem with FDDI under DLPI. This was causing core | ||||||
|  |   dumps under Solaris. | ||||||
|  |  | ||||||
|  | - Added configure options to disable flex and bison. Resulted from a | ||||||
|  |   bug report by barnett@grymoire.crd.ge.com (Bruce Barnett). Also added | ||||||
|  |   options to disable gcc and to force a particular packet capture type. | ||||||
|  |  | ||||||
|  | - Added support for Fore ATM interfaces (qaa and fa) under IRIX. Thanks | ||||||
|  |   to John Hawkinson (jhawk@mit.edu) | ||||||
|  |  | ||||||
|  | - Change Linux PPP and SLIP to use DLT_RAW since the kernel does not | ||||||
|  |   supply any "link layer" data. | ||||||
|  |  | ||||||
|  | - Change Linux to use SIOCGIFHWADDR ioctl to determine link layer type. | ||||||
|  |   Thanks to Thomas Sailer (sailer@ife.ee.ethz.ch) | ||||||
|  |  | ||||||
|  | - Change IRIX PPP to use DLT_RAW since the kernel does not supply any | ||||||
|  |   "link layer" data. | ||||||
|  |  | ||||||
|  | - Modified to support the new BSD/OS 2.1 PPP and SLIP link layer header | ||||||
|  |   formats. | ||||||
|  |  | ||||||
|  | - Added some new SGI snoop interface types. Thanks to Steve Alexander | ||||||
|  |   (sca@refugee.engr.sgi.com) | ||||||
|  |  | ||||||
|  | - Fixes for HP-UX 10.20 (which is similar to HP-UX 9). Thanks to | ||||||
|  |   Richard Allen (ra@hp.is) and Steinar Haug (sthaug@nethelp.no) | ||||||
|  |  | ||||||
|  | - Fddi supports broadcast as reported by Jeff Macdonald | ||||||
|  |   (jeff@iacnet.com). Also correct ieee802 and arcnet. | ||||||
|  |  | ||||||
|  | - Determine Linux pcap buffer size at run time or else it might not be | ||||||
|  |   big enough for some interface types (e.g. FDDI). Thanks to Jes | ||||||
|  |   Sorensen (Jes.Sorensen@cern.ch) | ||||||
|  |  | ||||||
|  | - Fix some linux alignment problems. | ||||||
|  |  | ||||||
|  | - Document promisc argument to pcap_open_live(). Reported by Ian Marsh | ||||||
|  |   (ianm@sics.se) | ||||||
|  |  | ||||||
|  | - Support Metricom radio packets under Linux. Thanks to Kevin Lai | ||||||
|  |   (laik@gunpowder.stanford.edu) | ||||||
|  |  | ||||||
|  | - Bind to interface name under Linux to avoid packets from multiple | ||||||
|  |   interfaces on multi-homed hosts. Thanks to Kevin Lai | ||||||
|  |   (laik@gunpowder.stanford.edu) | ||||||
|  |  | ||||||
|  | - Change L_SET to SEEK_SET for HP-UX. Thanks to Roland Roberts | ||||||
|  |   (rroberts@muller.com) | ||||||
|  |  | ||||||
|  | - Fixed an uninitialized memory reference found by Kent Vander Velden | ||||||
|  |   (graphix@iastate.edu) | ||||||
|  |  | ||||||
|  | - Fixed lex pattern for IDs to allow leading digits. As reported by | ||||||
|  |   Theo de Raadt (deraadt@cvs.openbsd.org) | ||||||
|  |  | ||||||
|  | - Fixed Linux include file problems when using GNU libc. | ||||||
|  |  | ||||||
|  | - Ifdef ARPHRD_FDDI since not all versions of the Linux kernel have it. | ||||||
|  |   Reported reported by Eric Jacksch (jacksch@tenebris.ca) | ||||||
|  |  | ||||||
|  | - Fixed bug in pcap_dispatch() that kept it from returning on packet | ||||||
|  |   timeouts. | ||||||
|  |  | ||||||
|  | - Changed ISLOOPBACK() macro when IFF_LOOPBACK isn't available to check | ||||||
|  |   for "lo" followed by an eos or digit (newer versions of Linux | ||||||
|  |   apparently call the loopback "lo" instead of "lo0"). | ||||||
|  |  | ||||||
|  | - Fixed Linux networking include files to use ints instead of longs to | ||||||
|  |   avoid problems with 64 bit longs on the alpha. Thanks to Cristian | ||||||
|  |   Gafton (gafton@redhat.com) | ||||||
|  |  | ||||||
|  | v0.3 Sat Nov 30 20:56:27 PST 1996 | ||||||
|  |  | ||||||
|  | - Added Linux support. | ||||||
|  |  | ||||||
|  | - Fixed savefile bugs. | ||||||
|  |  | ||||||
|  | - Solaris x86 fix from Tim Rylance (t.rylance@elsevier.nl) | ||||||
|  |  | ||||||
|  | - Add support for bpf kernel port filters. | ||||||
|  |  | ||||||
|  | - Remove duplicate atalk protocol table entry. Thanks to Christian | ||||||
|  |   Hopps (chopps@water.emich.edu) | ||||||
|  |  | ||||||
|  | - Fixed pcap_lookupdev() to ignore nonexistent devices. This was | ||||||
|  |   reported to happen under BSD/OS by David Vincenzetti | ||||||
|  |   (vince@cryptonet.it) | ||||||
|  |  | ||||||
|  | - Avoid solaris compiler warnings. Thanks to Bruce Barnett | ||||||
|  |   (barnett@grymoire.crd.ge.com) | ||||||
|  |  | ||||||
|  | v0.2.1 Sun Jul 14 03:02:26 PDT 1996 | ||||||
|  |  | ||||||
|  | - Fixes for HP-UX 10. Thanks in part to to Thomas Wolfram | ||||||
|  |   (wolf@prz.tu-berlin.de) and Rick Jones (raj@hpisrdq.cup.hp.com) | ||||||
|  |  | ||||||
|  | - Added support for SINIX. Thanks to Andrej Borsenkow | ||||||
|  |   (borsenkow.msk@sni.de) | ||||||
|  |  | ||||||
|  | - Fixes for AIX (although this system is not yet supported). Thanks to | ||||||
|  |   John Hawkinson (jhawk@mit.edu) | ||||||
|  |  | ||||||
|  | - Use autoconf's idea of the top level directory in install targets. | ||||||
|  |   Thanks to John Hawkinson. | ||||||
|  |  | ||||||
|  | - Add missing autoconf packet capture result message. Thanks to Bill | ||||||
|  |   Fenner (fenner@parc.xerox.com) | ||||||
|  |  | ||||||
|  | - Fixed padding problems in the pf module. | ||||||
|  |  | ||||||
|  | - Fixed some more alignment problems on the alpha. | ||||||
|  |  | ||||||
|  | - Added explicit netmask support. Thanks to Steve Nuchia | ||||||
|  |   (steve@research.oknet.com) | ||||||
|  |  | ||||||
|  | - Fixed to handle raw ip addresses such as 0.0.0.1 without "left | ||||||
|  |   justifing" | ||||||
|  |  | ||||||
|  | - Add "sca" keyword (for DEC cluster services) as suggested by Terry | ||||||
|  |   Kennedy (terry@spcvxa.spc.edu) | ||||||
|  |  | ||||||
|  | - Add "atalk" keyword as suggested by John Hawkinson. | ||||||
|  |  | ||||||
|  | - Add "igrp" keyword. | ||||||
|  |  | ||||||
|  | - Fixed HID definition in grammar.y to be a string, not a value. | ||||||
|  |  | ||||||
|  | - Use $CC when checking gcc version. Thanks to Carl Lindberg | ||||||
|  |   (carl_lindberg@blacksmith.com) | ||||||
|  |  | ||||||
|  | - Removed obsolete reference to pcap_immediate() from the man page. | ||||||
|  |   Michael Stolarchuk (mts@terminator.rs.itd.umich.edu) | ||||||
|  |  | ||||||
|  | - DLT_NULL has a 4 byte family header. Thanks to Jeffrey Honig | ||||||
|  |   (jch@bsdi.com) | ||||||
|  |  | ||||||
|  | v0.2 Sun Jun 23 02:28:42 PDT 1996 | ||||||
|  |  | ||||||
|  | - Add support for HP-UX. Resulted from code contributed by Tom Murray | ||||||
|  |   (tmurray@hpindck.cup.hp.com) and Philippe-Andri Prindeville | ||||||
|  |   (philipp@res.enst.fr) | ||||||
|  |  | ||||||
|  | - Update INSTALL with a reminder to install include files. Thanks to | ||||||
|  |   Mark Andrews (mandrews@aw.sgi.com) | ||||||
|  |  | ||||||
|  | - Fix bpf compiler alignment bug on the alpha. | ||||||
|  |  | ||||||
|  | - Use autoconf to detect architectures that can't handle misaligned | ||||||
|  |   accesses. | ||||||
|  |  | ||||||
|  | - Added loopback support for snoop. Resulted from report Steve | ||||||
|  |   Alexander (sca@engr.sgi.com) | ||||||
|  |  | ||||||
|  | v0.1 Fri Apr 28 18:11:03 PDT 1995 | ||||||
|  |  | ||||||
|  | - Fixed compiler and optimizer bugs.  The BPF filter engine uses unsigned | ||||||
|  |   comparison operators, while the code generator and optimizer assumed | ||||||
|  |   signed semantics in several places.  Thanks to Charlie Slater | ||||||
|  |   (cslater@imatek.com) for pointing this out. | ||||||
|  |  | ||||||
|  | - Removed FDDI ifdef's, they aren't really needed. Resulted from report | ||||||
|  |   by Gary Veum (veum@boa.gsfc.nasa.gov). | ||||||
|  |  | ||||||
|  | - Add pcap-null.c which allows offline use of libpcap on systems that | ||||||
|  |   don't support live package capture. This feature resulting from a | ||||||
|  |   request from Jan van Oorschot (j.p.m.voorschot@et.tudelft.nl). | ||||||
|  |  | ||||||
|  | - Make bpf_compile() reentrant. Fix thanks to Pascal Hennequin | ||||||
|  |   (Pascal.Hennequin@hugo.int-evry.fr). | ||||||
|  |  | ||||||
|  | - Port to GNU autoconf. | ||||||
|  |  | ||||||
|  | - Fix pcap-dlpi.c to work with isdn. Resulted from report by Flemming | ||||||
|  |   Johansen (fsj@csd.cri.dk). | ||||||
|  |  | ||||||
|  | - Handle multi-digit interface unit numbers (aka ppa's) under dlpi. | ||||||
|  |   Resulted from report by Daniel Ehrlich (ehrlich@cse.psu.edu). | ||||||
|  |  | ||||||
|  | - Fix pcap-dlpi.c to work in non-promiscuous mode. Resulted from report | ||||||
|  |   by Jeff Murphy (jcmurphy@acsu.buffalo.edu). | ||||||
|  |  | ||||||
|  | - Add support for "long jumps". Thanks to Jeffrey Mogul | ||||||
|  |   (mogul@pa.dec.com). | ||||||
|  |  | ||||||
|  | - Fix minor problems when compiling with BDEBUG as noticed by Scott | ||||||
|  |   Bertilson (scott@unet.umn.edu). | ||||||
|  |  | ||||||
|  | - Declare sys_errlist "const char *const" to avoid problems under | ||||||
|  |   FreeBSD. Resulted from report by jher@eden.com. | ||||||
|  |  | ||||||
|  | v0.0.6 Fri Apr 28 04:07:13 PDT 1995 | ||||||
|  |  | ||||||
|  | - Add missing variable declaration missing from 0.0.6 | ||||||
|  |  | ||||||
|  | v0.0.5 Fri Apr 28 00:22:21 PDT 1995 | ||||||
|  |  | ||||||
|  | - Workaround for problems when pcap_read() returns 0 due to the timeout | ||||||
|  |   expiring. | ||||||
|  |  | ||||||
|  | v0.0.4 Thu Apr 20 20:41:48 PDT 1995 | ||||||
|  |  | ||||||
|  | - Change configuration to not use gcc v2 flags with gcc v1. | ||||||
|  |  | ||||||
|  | - Fixed a bug in pcap_next(); if pcap_dispatch() returns 0, pcap_next() | ||||||
|  |   should also return 0. Thanks to Richard Stevens (rstevens@noao.edu). | ||||||
|  |  | ||||||
|  | - Fixed configure to test for snoop before dlpi to avoid problems under | ||||||
|  |   IRIX 5. Thanks to J. Eric Townsend (jet@abulafia.genmagic.com). | ||||||
|  |  | ||||||
|  | - Hack around deficiency in Ultrix's make. | ||||||
|  |  | ||||||
|  | - Fix two bugs related to the Solaris pre-5.3.2 bufmod bug; handle | ||||||
|  |   savefiles that have more than snapshot bytes of data in them (so we | ||||||
|  |   can read old savefiles) and avoid writing such files. | ||||||
|  |  | ||||||
|  | - Added checkioctl which is used with gcc to check that the | ||||||
|  |   "fixincludes" script has been run. | ||||||
|  |  | ||||||
|  | v0.0.3 Tue Oct 18 18:13:46 PDT 1994 | ||||||
|  |  | ||||||
|  | - Fixed configure to test for snoop before dlpi to avoid problems under | ||||||
|  |   IRIX 5. Thanks to J. Eric Townsend (jet@abulafia.genmagic.com). | ||||||
|  |  | ||||||
|  | v0.0.2 Wed Oct 12 20:56:37 PDT 1994 | ||||||
|  |  | ||||||
|  | - Implement timeout in the dlpi pcap_open_live(). Thanks to Richard | ||||||
|  |   Stevens. | ||||||
|  |  | ||||||
|  | - Determine pcap link type from dlpi media type. Resulted from report | ||||||
|  |   by Mahesh Jethanandani (mahesh@npix.com). | ||||||
|  |  | ||||||
|  | v0.0.1 Fri Jun 24 14:50:57 PDT 1994 | ||||||
|  |  | ||||||
|  | - Fixed bug in nit_setflags() in pcap-snit.c. The streams ioctl timeout | ||||||
|  |   wasn't being initialized sometimes resulting in an "NIOCSFLAGS: | ||||||
|  |   Invalid argument" error under OSF/1. Reported by Matt Day | ||||||
|  |   (mday@artisoft.com) and Danny Mitzel (dmitzel@whitney.hitc.com). | ||||||
|  |  | ||||||
|  | - Turn on FDDI support by default. | ||||||
|  |  | ||||||
|  | v0.0 Mon Jun 20 19:20:16 PDT 1994 | ||||||
|  |  | ||||||
|  | - Initial release. | ||||||
|  |  | ||||||
|  | - Fixed bug with greater/less keywords, reported by Mark Andrews | ||||||
|  |   (mandrews@alias.com). | ||||||
|  |  | ||||||
|  | - Fix bug where '|' was defined as BPF_AND instead of BPF_OR, reported | ||||||
|  |   by Elan Amir (elan@leeb.cs.berkeley.edu). | ||||||
|  |  | ||||||
|  | - Machines with little-endian byte ordering are supported thanks to | ||||||
|  |   Jeff Mogul. | ||||||
|  |  | ||||||
|  | - Add hack for version 2.3 savefiles which don't have caplen and len | ||||||
|  |   swapped thanks to Vern Paxson. | ||||||
|  |  | ||||||
|  | - Added "&&" and "||" aliases for "and" and "or" thanks to Vern Paxson. | ||||||
|  |  | ||||||
|  | - Added length, inbound and outbound keywords. | ||||||
							
								
								
									
										50
									
								
								target/linux/etrax-2.6/image/e100boot/src/libpcap-0.4/FILES
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								target/linux/etrax-2.6/image/e100boot/src/libpcap-0.4/FILES
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | |||||||
|  | CHANGES | ||||||
|  | FILES | ||||||
|  | INSTALL | ||||||
|  | Makefile.in | ||||||
|  | README | ||||||
|  | SUNOS4 | ||||||
|  | VERSION | ||||||
|  | aclocal.m4 | ||||||
|  | bpf/net/bpf.h | ||||||
|  | bpf/net/bpf_filter.c | ||||||
|  | bpf_image.c | ||||||
|  | config.guess | ||||||
|  | config.sub | ||||||
|  | configure | ||||||
|  | configure.in | ||||||
|  | etherent.c | ||||||
|  | ethertype.h | ||||||
|  | gencode.c | ||||||
|  | gencode.h | ||||||
|  | grammar.y | ||||||
|  | inet.c | ||||||
|  | install-sh | ||||||
|  | lbl/gnuc.h | ||||||
|  | lbl/os-solaris2.h | ||||||
|  | lbl/os-sunos4.h | ||||||
|  | lbl/os-ultrix4.h | ||||||
|  | linux-include/netinet/if_ether.h | ||||||
|  | linux-include/netinet/ip_var.h | ||||||
|  | mkdep | ||||||
|  | nametoaddr.c | ||||||
|  | optimize.c | ||||||
|  | pcap-bpf.c | ||||||
|  | pcap-dlpi.c | ||||||
|  | pcap-enet.c | ||||||
|  | pcap-int.h | ||||||
|  | pcap-linux.c | ||||||
|  | pcap-namedb.h | ||||||
|  | pcap-nit.c | ||||||
|  | pcap-nit.h | ||||||
|  | pcap-null.c | ||||||
|  | pcap-pf.c | ||||||
|  | pcap-pf.h | ||||||
|  | pcap-snit.c | ||||||
|  | pcap-snoop.c | ||||||
|  | pcap.3 | ||||||
|  | pcap.c | ||||||
|  | pcap.h | ||||||
|  | ppp.h | ||||||
|  | savefile.c | ||||||
|  | scanner.l | ||||||
							
								
								
									
										328
									
								
								target/linux/etrax-2.6/image/e100boot/src/libpcap-0.4/INSTALL
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										328
									
								
								target/linux/etrax-2.6/image/e100boot/src/libpcap-0.4/INSTALL
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,328 @@ | |||||||
|  | @(#) $Header: /usr/local/cvs/linux/tools/build/e100boot/libpcap-0.4/INSTALL,v 1.1 1999/08/26 10:05:18 johana Exp $ (LBL) | ||||||
|  |  | ||||||
|  | To build libpcap, first customize any paths in Makefile.in, then run | ||||||
|  | "./configure" (a shell script). The configure script will determine | ||||||
|  | your system attributes and generate an appropriate Makefile from | ||||||
|  | Makefile.in. Next run "make". If everything goes well you can su to | ||||||
|  | root and run "make install", "make install-incl" and "make | ||||||
|  | install-man". However, you need not install libpcap if you just want to | ||||||
|  | build tcpdump; just make sure the tcpdump and libpcap directory trees | ||||||
|  | have the same parent directory. | ||||||
|  |  | ||||||
|  | If configure says: | ||||||
|  |  | ||||||
|  |     configure: warning: cannot determine packet capture interface | ||||||
|  |     configure: warning: (see INSTALL for more info) | ||||||
|  |  | ||||||
|  | then your system either does not support packet capture or your system | ||||||
|  | does support packet capture but libpcap does not support that | ||||||
|  | particular type. (If you have HP-UX, see below.) If your system uses a | ||||||
|  | packet capture not supported by libpcap, please send us patches; don't | ||||||
|  | forget to include an autoconf fragment suitable for use in | ||||||
|  | configure.in. | ||||||
|  |  | ||||||
|  | It is possible to override the default packet capture type, although | ||||||
|  | the circumstance where this works are limited. For example if you have | ||||||
|  | installed bpf under SunOS 4 and wish to build a snit libpcap: | ||||||
|  |  | ||||||
|  |     ./configure --with-pcap=snit | ||||||
|  |  | ||||||
|  | Another example is to force a supported packet capture type in the case | ||||||
|  | where the configure scripts fails to detect it. | ||||||
|  |  | ||||||
|  | You will need an ANSI C compiler to build libpcap. The configure script | ||||||
|  | will abort if your compiler is not ANSI compliant. If this happens, use | ||||||
|  | the GNU C compiler, available via anonymous ftp: | ||||||
|  |  | ||||||
|  | 	ftp://prep.ai.mit.edu/pub/gnu/gcc-*.tar.gz | ||||||
|  |  | ||||||
|  | Note well: If you use gcc, you may need to run its "fixincludes" | ||||||
|  | script. Running fixincludes is not required with later versions of gcc | ||||||
|  | and in some cases (e.g. Solaris 2.5) causes problems when run. The | ||||||
|  | configure script will abort with: | ||||||
|  |  | ||||||
|  |     checking for ANSI ioctl definitions... yes | ||||||
|  |     configure: error: see the INSTALL for more info | ||||||
|  |  | ||||||
|  | if it detects if the fixincludes needs to be run. If the fixincludes | ||||||
|  | test in configure passes, you're probably ok. | ||||||
|  |  | ||||||
|  | If you use flex, you must use version 2.4.6 or higher. The configure | ||||||
|  | script automatically detects the version of flex and will not use it | ||||||
|  | unless it is new enough. You can use "flex -V" to see what version you | ||||||
|  | have (unless it's really old). The current version of flex is available | ||||||
|  | via anonymous ftp: | ||||||
|  |  | ||||||
|  | 	ftp://ftp.ee.lbl.gov/flex-*.tar.Z | ||||||
|  |  | ||||||
|  | As of this writing, the current version is 2.5.4. | ||||||
|  |  | ||||||
|  | If you use bison, you must use flex (and visa versa). The configure | ||||||
|  | script automatically falls back to lex and yacc if both flex and bison | ||||||
|  | are not found. | ||||||
|  |  | ||||||
|  | Sometimes the stock C compiler does not interact well with flex and | ||||||
|  | bison. The list of problems includes undefined references for alloca. | ||||||
|  | You can get around this by installing gcc or manually disabling flex | ||||||
|  | and bison with: | ||||||
|  |  | ||||||
|  |     ./configure --without-flex --without-bison | ||||||
|  |  | ||||||
|  | If your system only has AT&T lex, this is okay unless your libpcap | ||||||
|  | program uses other lex/yacc generated code. (Although it's possible to | ||||||
|  | map the yy* identifiers with a script, we use flex and bison so we | ||||||
|  | don't feel this is necessary.) | ||||||
|  |  | ||||||
|  | Some systems support the Berkeley Packet Filter natively; for example | ||||||
|  | out of the box OSF and BSD/OS have bpf. If your system does not support | ||||||
|  | bpf, you will need to pick up: | ||||||
|  |  | ||||||
|  | 	ftp://ftp.ee.lbl.gov/bpf-*.tar.Z | ||||||
|  |  | ||||||
|  | Note well: you MUST have kernel source for your operating system in | ||||||
|  | order to install bpf. An exception is SunOS 4; the bpf distribution | ||||||
|  | includes replacement kernel objects for some of the standard SunOS 4 | ||||||
|  | network device drivers. See the bpf INSTALL document for more | ||||||
|  | information. | ||||||
|  |  | ||||||
|  | If you use Solaris, there is a bug with bufmod(7) that is fixed in | ||||||
|  | Solaris 2.3.2 (aka SunOS 5.3.2). Setting a snapshot length with the | ||||||
|  | broken bufmod(7) results in data be truncated from the FRONT of the | ||||||
|  | packet instead of the end.  The work around is to not set a snapshot | ||||||
|  | length but this results in performance problems since the entire packet | ||||||
|  | is copied to user space. If you must run an older version of Solaris, | ||||||
|  | there is a patch available from Sun; ask for bugid 1149065. After | ||||||
|  | installing the patch, use "setenv BUFMOD_FIXED" to enable use of | ||||||
|  | bufmod(7). However, we recommend you run a more current release of | ||||||
|  | Solaris. | ||||||
|  |  | ||||||
|  | If you use the SPARCompiler, you must be careful to not use the | ||||||
|  | /usr/ucb/cc interface. If you do, you will get bogus warnings and | ||||||
|  | perhaps errors. Either make sure your path has /opt/SUNWspro/bin | ||||||
|  | before /usr/ucb or else: | ||||||
|  |  | ||||||
|  |     setenv CC /opt/SUNWspro/bin/cc | ||||||
|  |  | ||||||
|  | before running configure. (You might have to do a "make distclean" | ||||||
|  | if you already ran configure once). | ||||||
|  |  | ||||||
|  | Also note that "make depend" won't work; while all of the known | ||||||
|  | universe uses -M, the SPARCompiler uses -xM to generate makefile | ||||||
|  | dependencies. | ||||||
|  |  | ||||||
|  | If you are trying to do packet capture with a FORE ATM card, you may or | ||||||
|  | may not be able to. They usually only release their driver in object | ||||||
|  | code so unless their driver supports packet capture, there's not much | ||||||
|  | libpcap can do. | ||||||
|  |  | ||||||
|  | If you get an error like: | ||||||
|  |  | ||||||
|  |     tcpdump: recv_ack: bind error 0x??? | ||||||
|  |  | ||||||
|  | when using DLPI, look for the DL_ERROR_ACK error return values, usually | ||||||
|  | in /usr/include/sys/dlpi.h, and find the corresponding value. | ||||||
|  |  | ||||||
|  | Under OSF, packet capture must be enabled before it can be used. For | ||||||
|  | instructions on how to enable packet filter support, see: | ||||||
|  |  | ||||||
|  | 	ftp://ftp.digital.com/pub/Digital/dec-faq/Digital-UNIX | ||||||
|  |  | ||||||
|  | Once you enable packet filter support, your OSF system will support bpf | ||||||
|  | natively. | ||||||
|  |  | ||||||
|  | Under Ultrix, packet capture must be enabled before it can be used. For | ||||||
|  | instructions on how to enable packet filter support, see: | ||||||
|  |  | ||||||
|  | 	ftp://ftp.digital.com/pub/Digital/dec-faq/ultrix | ||||||
|  |  | ||||||
|  | If you use HP-UX, you must have at least version 9 and either the | ||||||
|  | version of cc that supports ANSI C (cc -Aa) or else use the GNU C | ||||||
|  | compiler. You must also buy the optional streams package. If you don't | ||||||
|  | have: | ||||||
|  |  | ||||||
|  |     /usr/include/sys/dlpi.h | ||||||
|  |     /usr/include/sys/dlpi_ext.h | ||||||
|  |  | ||||||
|  | then you don't have the streams package. In addition, we believe you | ||||||
|  | need to install the "9.X LAN and DLPI drivers cumulative" patch | ||||||
|  | (PHNE_6855) to make the version 9 DLPI work with libpcap. | ||||||
|  |  | ||||||
|  | It's been reported that the DLPI streams package is standard starting | ||||||
|  | with HP-UX 10. | ||||||
|  |  | ||||||
|  | The HP implementation of DLPI is a little bit eccentric. Unlike | ||||||
|  | Solaris, you must attach /dev/dlpi instead of the specific /dev/* | ||||||
|  | network pseudo device entry in order to capture packets. The ppa is | ||||||
|  | based on the ifnet "index" number. Under HP-UX 9, it is necessary to | ||||||
|  | read /dev/kmem and the kernel symbol file (/hp-ux). Under HP-UX 10, | ||||||
|  | dlpi can provide information for determining the ppa. It does not seem | ||||||
|  | to be possible to trace the loopback interface. Unlike other DLPI | ||||||
|  | implementations, PHYS implies MULTI and SAP and you get an error if you | ||||||
|  | try to enable more than one promiscous more than one promiscuous mode | ||||||
|  | at a time. Finally, testing shows that there can't be more than one | ||||||
|  | simultaneous dlpi user per network interface and you cannot capture | ||||||
|  | outbound packets. | ||||||
|  |  | ||||||
|  | If you use Linux, this version of libpcap is known to compile and run | ||||||
|  | under Red Hat 4.0 with the 2.0.25 kernel. It may work with earlier 2.X | ||||||
|  | versions but is guaranteed not to work with 1.X kernels. Running more | ||||||
|  | than one libpcap program at a time can cause problems since promiscuous | ||||||
|  | mode is implemented by twiddlin the interface flags from the libpcap | ||||||
|  | application. Also, packet timestamps aren't very good. This appears to | ||||||
|  | be due to haphazard handling of the timestamp in the kernel. | ||||||
|  |  | ||||||
|  | Note well: there is rumoured to be a version of tcpdump floating around | ||||||
|  | called 3.0.3 that includes libpcap and is supposed to support Linux. | ||||||
|  | You should be advised that the Network Research Group at LBNL never | ||||||
|  | generated a release with this version number. We note with interest | ||||||
|  | that a standard cracker trick to get people to install trojans is to | ||||||
|  | distribute bogus packages that have a version number higher than the | ||||||
|  | current release. We also note with annoyance that 90% of the Linux | ||||||
|  | related bug reports we get are due to changes made to unofficial | ||||||
|  | versions of our page. If you are having trouble but aren't using a | ||||||
|  | version that came from ftp.ee.lbl.gov, please try that before | ||||||
|  | submitting a bug report! | ||||||
|  |  | ||||||
|  | If you use AIX, you may not be able to build libpcap from this release. | ||||||
|  | Although AIX 4 ships with tcpdump, it is an old version that predates | ||||||
|  | libpcap. We do not have an AIX system in house so it's impossible for | ||||||
|  | us to test AIX patches submitted to us. We are told that you must link | ||||||
|  | against /lib/pse.exp, that you must use AIX cc or a GNU C compiler | ||||||
|  | newer than 2.7.2 and that you may need to run strload before running a | ||||||
|  | libpcap application. Also, it may be necessary to run the configure | ||||||
|  | script as root in order for it to detect that bpf is available. Another | ||||||
|  | workaround is to use: | ||||||
|  |  | ||||||
|  |     ./configure --with-pcap=bpf | ||||||
|  |  | ||||||
|  | If you use NeXTSTEP, you will not be able to build libpcap from this | ||||||
|  | release. We hope to support this operating system in some future | ||||||
|  | release of libpcap. | ||||||
|  |  | ||||||
|  | If you use SINIX, you should be able to build libpcap from this | ||||||
|  | release. It is known to compile and run on SINIX-Y/N 5.42 with the C-DS | ||||||
|  | V1.0 or V1.1 compiler. But note that in some releases of SINIX, yacc | ||||||
|  | emits incorrect code; if grammar.y fails to compile, change every | ||||||
|  | occurence of: | ||||||
|  |  | ||||||
|  | 	#ifdef YYDEBUG | ||||||
|  |  | ||||||
|  | to: | ||||||
|  | 	#if YYDEBUG | ||||||
|  |  | ||||||
|  | Another workaround is to use flex and bison. | ||||||
|  |  | ||||||
|  | If you use SCO, you might have trouble building libpcap from this | ||||||
|  | release. We do not have a machine running SCO and have not had reports | ||||||
|  | of anyone successfully building on it. Since SCO apparently supports | ||||||
|  | dlpi, it's possible the current version works. Meanwhile, sco provides | ||||||
|  | a tcpdump binary as part of their "Network/Security Tools" package: | ||||||
|  |  | ||||||
|  |     http://www.sco.com/technology/internet/goodies/#SECURITY | ||||||
|  |  | ||||||
|  | There is also a README that explains how to enable packet capture. | ||||||
|  |  | ||||||
|  | If you use UnixWare, you will not be able to build libpcap from this | ||||||
|  | release. We hope to support this operating system in some future | ||||||
|  | release of libpcap. Meanwhile, there appears to be an UnixWare port of | ||||||
|  | libpcap 0.0 (and tcpdump 3.0) in: | ||||||
|  |  | ||||||
|  |     ftp://ftp1.freebird.org/pub/mirror/freebird/internet/systools/ | ||||||
|  |  | ||||||
|  | UnixWare appears to use a hacked version of DLPI. | ||||||
|  |  | ||||||
|  | If linking tcpdump fails with "Undefined: _alloca" when using bison on | ||||||
|  | a Sun4, your version of bison is broken. In any case version 1.16 or | ||||||
|  | higher is recommended (1.14 is known to cause problems 1.16 is known to | ||||||
|  | work). Either pick up a current version from: | ||||||
|  |  | ||||||
|  | 	ftp://prep.ai.mit.edu/pub/gnu/bison.tar.gz | ||||||
|  |  | ||||||
|  | or hack around it by inserting the lines: | ||||||
|  |  | ||||||
|  | 	#ifdef __GNUC__ | ||||||
|  | 	#define alloca __builtin_alloca | ||||||
|  | 	#else | ||||||
|  | 	#ifdef sparc | ||||||
|  | 	#include <alloca.h> | ||||||
|  | 	#else | ||||||
|  | 	char *alloca (); | ||||||
|  | 	#endif | ||||||
|  | 	#endif | ||||||
|  |  | ||||||
|  | right after the (100 line!) GNU license comment in bison.simple, remove | ||||||
|  | grammar.[co] and fire up make again. | ||||||
|  |  | ||||||
|  | If you use SunOS 4, your kernel must support streams NIT. If you run a | ||||||
|  | libpcap program and it dies with: | ||||||
|  |  | ||||||
|  |     /dev/nit: No such device | ||||||
|  |  | ||||||
|  | You must add streams NIT support to your kernel configuration, run | ||||||
|  | config and boot the new kernel. | ||||||
|  |  | ||||||
|  | If you are running a version of SunOS earlier than 4.1, you will need | ||||||
|  | to replace the Sun supplied /sys/sun{3,4,4c}/OBJ/nit_if.o with the | ||||||
|  | appropriate version from this distribution's SUNOS4 subdirectory and | ||||||
|  | build a new kernel: | ||||||
|  |  | ||||||
|  | 	nit_if.o.sun3-sunos4		(any flavor of sun3) | ||||||
|  | 	nit_if.o.sun4c-sunos4.0.3c	(SS1, SS1+, IPC, SLC, etc.) | ||||||
|  | 	nit_if.o.sun4-sunos4		(Sun4's not covered by | ||||||
|  | 					    nit_if.o.sun4c-sunos4.0.3c) | ||||||
|  |  | ||||||
|  | These nit replacements fix a bug that makes nit essentially unusable in | ||||||
|  | pre-SunOS 4.1.  In addition, our sun4c-sunos4.0.3c nit gives you | ||||||
|  | timestamps to the resolution of the SS-1 clock (1 us) rather than the | ||||||
|  | lousy 20ms timestamps Sun gives you  (tcpdump will print out the full | ||||||
|  | timestamp resolution if it finds it's running on a SS-1). | ||||||
|  |  | ||||||
|  | FILES | ||||||
|  | ----- | ||||||
|  | CHANGES		- description of differences between releases | ||||||
|  | FILES		- list of files exported as part of the distribution | ||||||
|  | INSTALL		- this file | ||||||
|  | Makefile.in	- compilation rules (input to the configure script) | ||||||
|  | README		- description of distribution | ||||||
|  | SUNOS4		- pre-SunOS 4.1 replacement kernel nit modules | ||||||
|  | VERSION		- version of this release | ||||||
|  | aclocal.m4	- autoconf macros | ||||||
|  | bpf/net		- copies of bpf_filter.c and bpf.h | ||||||
|  | bpf_filter.c	- symlink to bpf/net/bpf_filter.c | ||||||
|  | bpf_image.c	- bpf disassembly routine | ||||||
|  | config.guess	- autoconf support | ||||||
|  | config.sub	- autoconf support | ||||||
|  | configure	- configure script (run this first) | ||||||
|  | configure.in	- configure script source | ||||||
|  | etherent.c	- /etc/ethers support routines | ||||||
|  | ethertype.h	- ethernet protocol types and names definitions | ||||||
|  | gencode.c	- bpf code generation routines | ||||||
|  | gencode.h	- bpf code generation definitions | ||||||
|  | grammar.y	- filter string grammar | ||||||
|  | inet.c		- network routines | ||||||
|  | install-sh	- BSD style install script | ||||||
|  | lbl/gnuc.h	- gcc macros and defines | ||||||
|  | lbl/os-*.h	- os dependent defines and prototypes | ||||||
|  | linux-include/*	- network include files missing on Linux | ||||||
|  | mkdep		- construct Makefile dependency list | ||||||
|  | nametoaddr.c	- hostname to address routines | ||||||
|  | net		- symlink to bpf/net | ||||||
|  | optimize.c	- bpf optimization routines | ||||||
|  | pcap-bpf.c	- BSD Packet Filter support | ||||||
|  | pcap-dlpi.c	- Data Link Provider Interface support | ||||||
|  | pcap-enet.c	- enet support | ||||||
|  | pcap-int.h	- internal libpcap definitions | ||||||
|  | pcap-namedb.h	- public libpcap name database definitions | ||||||
|  | pcap-nit.c	- Network Interface Tap support | ||||||
|  | pcap-nit.h	- Network Interface Tap definitions | ||||||
|  | pcap-null.c	- dummy monitor support (allows offline use of libpcap) | ||||||
|  | pcap-pf.c	- Packet Filter support | ||||||
|  | pcap-pf.h	- Packet Filter definitions | ||||||
|  | pcap-snit.c	- Streams based Network Interface Tap support | ||||||
|  | pcap-snoop.c	- Snoop network monitoring support | ||||||
|  | pcap.3		- manual entry | ||||||
|  | pcap.c		- pcap utility routines | ||||||
|  | pcap.h		- public libpcap definitions | ||||||
|  | ppp.h		- Point to Point Protocol definitions | ||||||
|  | savefile.c	- offline support | ||||||
|  | scanner.l	- filter string scanner | ||||||
							
								
								
									
										173
									
								
								target/linux/etrax-2.6/image/e100boot/src/libpcap-0.4/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										173
									
								
								target/linux/etrax-2.6/image/e100boot/src/libpcap-0.4/Makefile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,173 @@ | |||||||
|  | # Generated automatically from Makefile.in by configure. | ||||||
|  | # $Id: Makefile.in,v 1.7 2002/09/18 15:29:46 pkj Exp $ | ||||||
|  | #  Copyright (c) 1993, 1994, 1995, 1996 | ||||||
|  | # 	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: (1) source code distributions | ||||||
|  | #  retain the above copyright notice and this paragraph in its entirety, (2) | ||||||
|  | #  distributions including binary code include the above copyright notice and | ||||||
|  | #  this paragraph in its entirety in the documentation or other materials | ||||||
|  | #  provided with the distribution, and (3) all advertising materials mentioning | ||||||
|  | #  features or use of this software display the following acknowledgement: | ||||||
|  | #  ``This product includes software developed by the University of California, | ||||||
|  | #  Lawrence Berkeley Laboratory and its contributors.'' 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 ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED | ||||||
|  | #  WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF | ||||||
|  | #  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | ||||||
|  | # | ||||||
|  | # @(#) $Header: /usr/local/cvs/linux/tools/build/e100boot/libpcap-0.4/Makefile.in,v 1.7 2002/09/18 15:29:46 pkj Exp $ (LBL) | ||||||
|  |  | ||||||
|  | # | ||||||
|  | # Various configurable paths (remember to edit Makefile.in, not Makefile) | ||||||
|  | # | ||||||
|  |  | ||||||
|  | # Top level hierarchy | ||||||
|  | prefix = /usr/local | ||||||
|  | exec_prefix = ${prefix} | ||||||
|  | # Pathname of directory to install the include files | ||||||
|  | INCLDEST = ${prefix}/include | ||||||
|  | # Pathname of directory to install the library | ||||||
|  | LIBDEST =  ${exec_prefix}/lib | ||||||
|  | # Pathname of directory to install the man page | ||||||
|  | MANDEST = ${prefix}/man | ||||||
|  |  | ||||||
|  | # VPATH | ||||||
|  | srcdir = . | ||||||
|  |  | ||||||
|  | # | ||||||
|  | # You shouldn't need to edit anything below. | ||||||
|  | # | ||||||
|  | CFLAGS = | ||||||
|  | CC = gcc | ||||||
|  | AR = ar | ||||||
|  | INSTALL =  install_elinux -p | ||||||
|  | RANLIB = ranlib | ||||||
|  |  | ||||||
|  | prefix = | ||||||
|  | AXIS_USABLE_LIBS = UCLIBC GLIBC | ||||||
|  | -include $(AXIS_TOP_DIR)/tools/build/Rules.axis | ||||||
|  | ifndef AXIS_BUILDTYPE | ||||||
|  | prefix = /usr/local | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | CCOPT = -O2 | ||||||
|  | INCLS = -I.  -Ilinux-include | ||||||
|  | DEFS =  -DHAVE_MALLOC_H=1 -DHAVE_ETHER_HOSTTON=1 -DHAVE_STRERROR=1 -DHAVE_NET_IF_ARP_H=1  | ||||||
|  |  | ||||||
|  | # Standard CFLAGS | ||||||
|  | CFLAGS += $(CCOPT) $(INCLS) $(DEFS) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # | ||||||
|  | # Flex and bison allow you to specify the prefixes of the global symbols | ||||||
|  | # used by the generated parser.  This allows programs to use lex/yacc | ||||||
|  | # and link against libpcap.  If you don't have flex or bison, get them. | ||||||
|  | # | ||||||
|  | LEX = flex -Ppcap_ | ||||||
|  | YACC = bison -y -p pcap_ | ||||||
|  |  | ||||||
|  | # Explicitly define compilation rule since SunOS 4's make doesn't like gcc. | ||||||
|  | # Also, gcc does not remove the .o before forking 'as', which can be a | ||||||
|  | # problem if you don't own the file but can write to the directory. | ||||||
|  | .c.o: | ||||||
|  | 	@rm -f $@ | ||||||
|  | 	$(CC) $(CFLAGS) -c $(srcdir)/$*.c | ||||||
|  |  | ||||||
|  | PSRC =	pcap-linux.c | ||||||
|  | CSRC =	pcap.c inet.c gencode.c optimize.c nametoaddr.c \ | ||||||
|  | 	etherent.c savefile.c bpf_filter.c bpf_image.c | ||||||
|  | GENSRC = scanner.c grammar.c version.c | ||||||
|  |  | ||||||
|  | SRC =	$(PSRC) $(CSRC) $(GENSRC) | ||||||
|  |  | ||||||
|  | # We would like to say "OBJ = $(SRC:.c=.o)" but Ultrix's make cannot | ||||||
|  | # hack the extra indirection | ||||||
|  | OBJ =	$(PSRC:.c=.o) $(CSRC:.c=.o) $(GENSRC:.c=.o) | ||||||
|  | HDR =	pcap.h pcap-int.h pcap-namedb.h pcap-nit.h pcap-pf.h \ | ||||||
|  | 	ethertype.h gencode.h gnuc.h | ||||||
|  | GENHDR = \ | ||||||
|  | 	tokdefs.h | ||||||
|  |  | ||||||
|  | TAGHDR = \ | ||||||
|  | 	bpf/net/bpf.h | ||||||
|  |  | ||||||
|  | TAGFILES = \ | ||||||
|  | 	$(SRC) $(HDR) $(TAGHDR) | ||||||
|  |  | ||||||
|  | CLEANFILES = $(OBJ) libpcap.a $(GENSRC) $(GENHDR) lex.yy.c | ||||||
|  |  | ||||||
|  | all: libpcap.a | ||||||
|  |  | ||||||
|  | libpcap.a: $(OBJ) | ||||||
|  | 	@rm -f $@ | ||||||
|  | 	$(AR) rc $@ $(OBJ) | ||||||
|  | 	$(RANLIB) $@ | ||||||
|  |  | ||||||
|  | scanner.c: $(srcdir)/scanner.l | ||||||
|  | 	@rm -f $@ | ||||||
|  | 	$(LEX) -t $< > $$$$.$@; mv $$$$.$@ $@ | ||||||
|  |  | ||||||
|  | scanner.o: scanner.c tokdefs.h | ||||||
|  | tokdefs.h: grammar.c | ||||||
|  | grammar.c: $(srcdir)/grammar.y | ||||||
|  | 	@rm -f grammar.c tokdefs.h | ||||||
|  | 	$(YACC) -d $< | ||||||
|  | 	mv y.tab.c grammar.c | ||||||
|  | 	mv y.tab.h tokdefs.h | ||||||
|  |  | ||||||
|  | grammar.o: grammar.c | ||||||
|  | 	@rm -f $@ | ||||||
|  | 	$(CC) $(CFLAGS) -Dyylval=pcap_lval -c grammar.c | ||||||
|  |  | ||||||
|  | version.o: version.c | ||||||
|  | version.c: $(srcdir)/VERSION | ||||||
|  | 	@rm -f $@ | ||||||
|  | 	sed -e 's/.*/char pcap_version[] = "&";/' $(srcdir)/VERSION > $@ | ||||||
|  |  | ||||||
|  | install: force | ||||||
|  | 	$(INSTALL) -m 444 -o bin -g bin libpcap.a $(DESTDIR)$(LIBDEST)/libpcap.a | ||||||
|  | 	$(RANLIB) $(DESTDIR)$(LIBDEST)/libpcap.a | ||||||
|  |  | ||||||
|  | install-incl: force | ||||||
|  | 	$(INSTALL) -m 444 -o bin -g bin $(srcdir)/pcap.h \ | ||||||
|  | 	    $(DESTDIR)$(INCLDEST)/pcap.h | ||||||
|  | 	$(INSTALL) -m 444 -o bin -g bin $(srcdir)/pcap-namedb.h \ | ||||||
|  | 	    $(DESTDIR)$(INCLDEST)/pcap-namedb.h | ||||||
|  | 	$(INSTALL) -m 444 -o bin -g bin $(srcdir)/net/bpf.h \ | ||||||
|  | 	    $(DESTDIR)$(INCLDEST)/net/bpf.h | ||||||
|  |  | ||||||
|  | install-man: force | ||||||
|  | 	$(INSTALL) -m 444 -o bin -g bin $(srcdir)/pcap.3 \ | ||||||
|  | 	    $(DESTDIR)$(MANDEST)/man3/pcap.3 | ||||||
|  |  | ||||||
|  | clean: | ||||||
|  | 	rm -f $(CLEANFILES) | ||||||
|  |  | ||||||
|  | distclean: | ||||||
|  | 	rm -f $(CLEANFILES) Makefile config.cache config.log config.status \ | ||||||
|  | 	    gnuc.h os-proto.h bpf_filter.c net | ||||||
|  |  | ||||||
|  | tags: $(TAGFILES) | ||||||
|  | 	ctags -wtd $(TAGFILES) | ||||||
|  |  | ||||||
|  | tar:	force | ||||||
|  | 	@cwd=`pwd` ; dir=`basename $$cwd` ; name=libpcap-`cat VERSION` ; \ | ||||||
|  | 	    list="" ; tar="tar chFFf" ; \ | ||||||
|  | 	    for i in `cat FILES` ; do list="$$list $$name/$$i" ; done; \ | ||||||
|  | 	    echo \ | ||||||
|  | 	    "rm -f ../$$name; ln -s $$dir ../$$name" ; \ | ||||||
|  | 	     rm -f ../$$name; ln -s $$dir ../$$name ; \ | ||||||
|  | 	    echo \ | ||||||
|  | 	    "(cd .. ; $$tar - [lots of files]) | compress > /tmp/$$name.tar.Z" ; \ | ||||||
|  | 	     (cd .. ; $$tar - $$list) | compress > /tmp/$$name.tar.Z ; \ | ||||||
|  | 	    echo \ | ||||||
|  | 	    "rm -f ../$$name" ; \ | ||||||
|  | 	     rm -f ../$$name | ||||||
|  |  | ||||||
|  | force:	/tmp | ||||||
|  | depend:	$(GENSRC) force | ||||||
|  | 	./mkdep -c $(CC) $(DEFS) $(INCLS) $(SRC) | ||||||
| @@ -0,0 +1,2 @@ | |||||||
|  | conf: | ||||||
|  | 	./configure | ||||||
| @@ -0,0 +1,173 @@ | |||||||
|  | # $Id: Makefile.in,v 1.7 2002/09/18 15:29:46 pkj Exp $ | ||||||
|  | #  Copyright (c) 1993, 1994, 1995, 1996 | ||||||
|  | # 	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: (1) source code distributions | ||||||
|  | #  retain the above copyright notice and this paragraph in its entirety, (2) | ||||||
|  | #  distributions including binary code include the above copyright notice and | ||||||
|  | #  this paragraph in its entirety in the documentation or other materials | ||||||
|  | #  provided with the distribution, and (3) all advertising materials mentioning | ||||||
|  | #  features or use of this software display the following acknowledgement: | ||||||
|  | #  ``This product includes software developed by the University of California, | ||||||
|  | #  Lawrence Berkeley Laboratory and its contributors.'' 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 ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED | ||||||
|  | #  WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF | ||||||
|  | #  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | ||||||
|  | # | ||||||
|  | # @(#) $Header: /usr/local/cvs/linux/tools/build/e100boot/libpcap-0.4/Makefile.in,v 1.7 2002/09/18 15:29:46 pkj Exp $ (LBL) | ||||||
|  |  | ||||||
|  | # | ||||||
|  | # Various configurable paths (remember to edit Makefile.in, not Makefile) | ||||||
|  | # | ||||||
|  |  | ||||||
|  | # Top level hierarchy | ||||||
|  | prefix = @prefix@ | ||||||
|  | exec_prefix = @exec_prefix@ | ||||||
|  | # Pathname of directory to install the include files | ||||||
|  | INCLDEST = @includedir@ | ||||||
|  | # Pathname of directory to install the library | ||||||
|  | LIBDEST =  @libdir@ | ||||||
|  | # Pathname of directory to install the man page | ||||||
|  | MANDEST = @mandir@ | ||||||
|  |  | ||||||
|  | # VPATH | ||||||
|  | srcdir = @srcdir@ | ||||||
|  | VPATH = @srcdir@ | ||||||
|  |  | ||||||
|  | # | ||||||
|  | # You shouldn't need to edit anything below. | ||||||
|  | # | ||||||
|  | CFLAGS = | ||||||
|  | CC = @CC@ | ||||||
|  | AR = ar | ||||||
|  | INSTALL = @INSTALL@ | ||||||
|  | RANLIB = @V_RANLIB@ | ||||||
|  |  | ||||||
|  | prefix = | ||||||
|  | AXIS_USABLE_LIBS = UCLIBC GLIBC | ||||||
|  | -include $(AXIS_TOP_DIR)/tools/build/Rules.axis | ||||||
|  | ifndef AXIS_BUILDTYPE | ||||||
|  | prefix = @prefix@ | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | CCOPT = @V_CCOPT@ | ||||||
|  | INCLS = -I. @V_INCLS@ | ||||||
|  | DEFS = @DEFS@ | ||||||
|  |  | ||||||
|  | # Standard CFLAGS | ||||||
|  | CFLAGS += $(CCOPT) $(INCLS) $(DEFS) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # | ||||||
|  | # Flex and bison allow you to specify the prefixes of the global symbols | ||||||
|  | # used by the generated parser.  This allows programs to use lex/yacc | ||||||
|  | # and link against libpcap.  If you don't have flex or bison, get them. | ||||||
|  | # | ||||||
|  | LEX = @V_LEX@ | ||||||
|  | YACC = @V_YACC@ | ||||||
|  |  | ||||||
|  | # Explicitly define compilation rule since SunOS 4's make doesn't like gcc. | ||||||
|  | # Also, gcc does not remove the .o before forking 'as', which can be a | ||||||
|  | # problem if you don't own the file but can write to the directory. | ||||||
|  | .c.o: | ||||||
|  | 	@rm -f $@ | ||||||
|  | 	$(CC) $(CFLAGS) -c $(srcdir)/$*.c | ||||||
|  |  | ||||||
|  | PSRC =	pcap-@V_PCAP@.c | ||||||
|  | CSRC =	pcap.c inet.c gencode.c optimize.c nametoaddr.c \ | ||||||
|  | 	etherent.c savefile.c bpf_filter.c bpf_image.c | ||||||
|  | GENSRC = scanner.c grammar.c version.c | ||||||
|  |  | ||||||
|  | SRC =	$(PSRC) $(CSRC) $(GENSRC) | ||||||
|  |  | ||||||
|  | # We would like to say "OBJ = $(SRC:.c=.o)" but Ultrix's make cannot | ||||||
|  | # hack the extra indirection | ||||||
|  | OBJ =	$(PSRC:.c=.o) $(CSRC:.c=.o) $(GENSRC:.c=.o) | ||||||
|  | HDR =	pcap.h pcap-int.h pcap-namedb.h pcap-nit.h pcap-pf.h \ | ||||||
|  | 	ethertype.h gencode.h gnuc.h | ||||||
|  | GENHDR = \ | ||||||
|  | 	tokdefs.h | ||||||
|  |  | ||||||
|  | TAGHDR = \ | ||||||
|  | 	bpf/net/bpf.h | ||||||
|  |  | ||||||
|  | TAGFILES = \ | ||||||
|  | 	$(SRC) $(HDR) $(TAGHDR) | ||||||
|  |  | ||||||
|  | CLEANFILES = $(OBJ) libpcap.a $(GENSRC) $(GENHDR) lex.yy.c | ||||||
|  |  | ||||||
|  | all: libpcap.a | ||||||
|  |  | ||||||
|  | libpcap.a: $(OBJ) | ||||||
|  | 	@rm -f $@ | ||||||
|  | 	$(AR) rc $@ $(OBJ) | ||||||
|  | 	$(RANLIB) $@ | ||||||
|  |  | ||||||
|  | scanner.c: $(srcdir)/scanner.l | ||||||
|  | 	@rm -f $@ | ||||||
|  | 	$(LEX) -t $< > $$$$.$@; mv $$$$.$@ $@ | ||||||
|  |  | ||||||
|  | scanner.o: scanner.c tokdefs.h | ||||||
|  | tokdefs.h: grammar.c | ||||||
|  | grammar.c: $(srcdir)/grammar.y | ||||||
|  | 	@rm -f grammar.c tokdefs.h | ||||||
|  | 	$(YACC) -d $< | ||||||
|  | 	mv y.tab.c grammar.c | ||||||
|  | 	mv y.tab.h tokdefs.h | ||||||
|  |  | ||||||
|  | grammar.o: grammar.c | ||||||
|  | 	@rm -f $@ | ||||||
|  | 	$(CC) $(CFLAGS) -Dyylval=pcap_lval -c grammar.c | ||||||
|  |  | ||||||
|  | version.o: version.c | ||||||
|  | version.c: $(srcdir)/VERSION | ||||||
|  | 	@rm -f $@ | ||||||
|  | 	sed -e 's/.*/char pcap_version[] = "&";/' $(srcdir)/VERSION > $@ | ||||||
|  |  | ||||||
|  | install: force | ||||||
|  | 	$(INSTALL) -m 444 -o bin -g bin libpcap.a $(DESTDIR)$(LIBDEST)/libpcap.a | ||||||
|  | 	$(RANLIB) $(DESTDIR)$(LIBDEST)/libpcap.a | ||||||
|  |  | ||||||
|  | install-incl: force | ||||||
|  | 	$(INSTALL) -m 444 -o bin -g bin $(srcdir)/pcap.h \ | ||||||
|  | 	    $(DESTDIR)$(INCLDEST)/pcap.h | ||||||
|  | 	$(INSTALL) -m 444 -o bin -g bin $(srcdir)/pcap-namedb.h \ | ||||||
|  | 	    $(DESTDIR)$(INCLDEST)/pcap-namedb.h | ||||||
|  | 	$(INSTALL) -m 444 -o bin -g bin $(srcdir)/net/bpf.h \ | ||||||
|  | 	    $(DESTDIR)$(INCLDEST)/net/bpf.h | ||||||
|  |  | ||||||
|  | install-man: force | ||||||
|  | 	$(INSTALL) -m 444 -o bin -g bin $(srcdir)/pcap.3 \ | ||||||
|  | 	    $(DESTDIR)$(MANDEST)/man3/pcap.3 | ||||||
|  |  | ||||||
|  | clean: | ||||||
|  | 	rm -f $(CLEANFILES) | ||||||
|  |  | ||||||
|  | distclean: | ||||||
|  | 	rm -f $(CLEANFILES) Makefile config.cache config.log config.status \ | ||||||
|  | 	    gnuc.h os-proto.h bpf_filter.c net | ||||||
|  |  | ||||||
|  | tags: $(TAGFILES) | ||||||
|  | 	ctags -wtd $(TAGFILES) | ||||||
|  |  | ||||||
|  | tar:	force | ||||||
|  | 	@cwd=`pwd` ; dir=`basename $$cwd` ; name=libpcap-`cat VERSION` ; \ | ||||||
|  | 	    list="" ; tar="tar chFFf" ; \ | ||||||
|  | 	    for i in `cat FILES` ; do list="$$list $$name/$$i" ; done; \ | ||||||
|  | 	    echo \ | ||||||
|  | 	    "rm -f ../$$name; ln -s $$dir ../$$name" ; \ | ||||||
|  | 	     rm -f ../$$name; ln -s $$dir ../$$name ; \ | ||||||
|  | 	    echo \ | ||||||
|  | 	    "(cd .. ; $$tar - [lots of files]) | compress > /tmp/$$name.tar.Z" ; \ | ||||||
|  | 	     (cd .. ; $$tar - $$list) | compress > /tmp/$$name.tar.Z ; \ | ||||||
|  | 	    echo \ | ||||||
|  | 	    "rm -f ../$$name" ; \ | ||||||
|  | 	     rm -f ../$$name | ||||||
|  |  | ||||||
|  | force:	/tmp | ||||||
|  | depend:	$(GENSRC) force | ||||||
|  | 	./mkdep -c $(CC) $(DEFS) $(INCLS) $(SRC) | ||||||
							
								
								
									
										49
									
								
								target/linux/etrax-2.6/image/e100boot/src/libpcap-0.4/README
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								target/linux/etrax-2.6/image/e100boot/src/libpcap-0.4/README
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,49 @@ | |||||||
|  | @(#) $Header: /usr/local/cvs/linux/tools/build/e100boot/libpcap-0.4/README,v 1.1 1999/08/26 10:05:19 johana Exp $ (LBL) | ||||||
|  |  | ||||||
|  | LIBPCAP 0.4 | ||||||
|  | Lawrence Berkeley National Laboratory | ||||||
|  | Network Research Group | ||||||
|  | libpcap@ee.lbl.gov | ||||||
|  | ftp://ftp.ee.lbl.gov/libpcap.tar.Z | ||||||
|  |  | ||||||
|  | This directory contains source code for libpcap, a system-independent | ||||||
|  | interface for user-level packet capture.  libpcap provides a portable | ||||||
|  | framework for low-level network monitoring.  Applications include | ||||||
|  | network statistics collection, security monitoring, network debugging, | ||||||
|  | etc.  Since almost every system vendor provides a different interface | ||||||
|  | for packet capture, and since we've developed several tools that | ||||||
|  | require this functionality, we've created this system-independent API | ||||||
|  | to ease in porting and to alleviate the need for several | ||||||
|  | system-dependent packet capture modules in each application. | ||||||
|  |  | ||||||
|  | Note well: this interface is new and is likely to change. | ||||||
|  |  | ||||||
|  | The libpcap interface supports a filtering mechanism based on the | ||||||
|  | architecture in the BSD packet filter.  BPF is described in the 1993 | ||||||
|  | Winter Usenix paper ``The BSD Packet Filter: A New Architecture for | ||||||
|  | User-level Packet Capture''.  A compressed postscript version is in: | ||||||
|  |  | ||||||
|  | 	ftp://ftp.ee.lbl.gov/papers/bpf-usenix93.ps.Z. | ||||||
|  |  | ||||||
|  | Although most packet capture interfaces support in-kernel filtering, | ||||||
|  | libpcap utilizes in-kernel filtering only for the BPF interface. | ||||||
|  | On systems that don't have BPF, all packets are read into user-space | ||||||
|  | and the BPF filters are evaluated in the libpcap library, incurring | ||||||
|  | added overhead (especially, for selective filters).  Ideally, libpcap | ||||||
|  | would translate BPF filters into a filter program that is compatible | ||||||
|  | with the underlying kernel subsystem, but this is not yet implemented. | ||||||
|  |  | ||||||
|  | BPF is standard in 4.4BSD, BSD/386, NetBSD, and FreeBSD.  DEC OSF/1 | ||||||
|  | uses the packetfilter interface but has been extended to accept BPF | ||||||
|  | filters (which libpcap utilizes).  Also, you can add BPF filter support | ||||||
|  | to Ultrix using the kernel source and/or object patches available in: | ||||||
|  |  | ||||||
|  | 	ftp://gatekeeper.dec.com/pub/DEC/net/bpfext42.tar.Z. | ||||||
|  |  | ||||||
|  | Problems, bugs, questions, desirable enhancements, source code | ||||||
|  | contributions, etc., should be sent to the email address | ||||||
|  | "libpcap@ee.lbl.gov". | ||||||
|  |  | ||||||
|  |  - Steve McCanne | ||||||
|  |    Craig Leres | ||||||
|  |    Van Jacobson | ||||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | 0.4 | ||||||
							
								
								
									
										706
									
								
								target/linux/etrax-2.6/image/e100boot/src/libpcap-0.4/aclocal.m4
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										706
									
								
								target/linux/etrax-2.6/image/e100boot/src/libpcap-0.4/aclocal.m4
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,706 @@ | |||||||
|  | dnl @(#) $Header: /usr/local/cvs/linux/tools/build/e100boot/libpcap-0.4/aclocal.m4,v 1.1 1999/08/26 10:05:19 johana Exp $ (LBL) | ||||||
|  | dnl | ||||||
|  | dnl Copyright (c) 1995, 1996, 1997, 1998 | ||||||
|  | dnl	The Regents of the University of California.  All rights reserved. | ||||||
|  | dnl | ||||||
|  | dnl Redistribution and use in source and binary forms, with or without | ||||||
|  | dnl modification, are permitted provided that: (1) source code distributions | ||||||
|  | dnl retain the above copyright notice and this paragraph in its entirety, (2) | ||||||
|  | dnl distributions including binary code include the above copyright notice and | ||||||
|  | dnl this paragraph in its entirety in the documentation or other materials | ||||||
|  | dnl provided with the distribution, and (3) all advertising materials mentioning | ||||||
|  | dnl features or use of this software display the following acknowledgement: | ||||||
|  | dnl ``This product includes software developed by the University of California, | ||||||
|  | dnl Lawrence Berkeley Laboratory and its contributors.'' Neither the name of | ||||||
|  | dnl the University nor the names of its contributors may be used to endorse | ||||||
|  | dnl or promote products derived from this software without specific prior | ||||||
|  | dnl written permission. | ||||||
|  | dnl THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED | ||||||
|  | dnl WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF | ||||||
|  | dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | ||||||
|  | dnl | ||||||
|  | dnl LBL autoconf macros | ||||||
|  | dnl | ||||||
|  |  | ||||||
|  | dnl | ||||||
|  | dnl Determine which compiler we're using (cc or gcc) | ||||||
|  | dnl If using gcc, determine the version number | ||||||
|  | dnl If using cc, require that it support ansi prototypes | ||||||
|  | dnl If using gcc, use -O2 (otherwise use -O) | ||||||
|  | dnl If using cc, explicitly specify /usr/local/include | ||||||
|  | dnl | ||||||
|  | dnl usage: | ||||||
|  | dnl | ||||||
|  | dnl	AC_LBL_C_INIT(copt, incls) | ||||||
|  | dnl | ||||||
|  | dnl results: | ||||||
|  | dnl | ||||||
|  | dnl	$1 (copt set) | ||||||
|  | dnl	$2 (incls set) | ||||||
|  | dnl	CC | ||||||
|  | dnl	LDFLAGS | ||||||
|  | dnl	ac_cv_lbl_gcc_vers | ||||||
|  | dnl	LBL_CFLAGS | ||||||
|  | dnl | ||||||
|  | AC_DEFUN(AC_LBL_C_INIT, | ||||||
|  |     [AC_PREREQ(2.12) | ||||||
|  |     AC_BEFORE([$0], [AC_PROG_CC]) | ||||||
|  |     AC_BEFORE([$0], [AC_LBL_FIXINCLUDES]) | ||||||
|  |     AC_BEFORE([$0], [AC_LBL_DEVEL]) | ||||||
|  |     AC_ARG_WITH(gcc, [  --without-gcc           don't use gcc]) | ||||||
|  |     $1="-O" | ||||||
|  |     $2="" | ||||||
|  |     if test "${srcdir}" != "." ; then | ||||||
|  | 	    $2="-I\$\(srcdir\)" | ||||||
|  |     fi | ||||||
|  |     if test "${CFLAGS+set}" = set; then | ||||||
|  | 	    LBL_CFLAGS="$CFLAGS" | ||||||
|  |     fi | ||||||
|  |     if test -z "$CC" ; then | ||||||
|  | 	    case "$target_os" in | ||||||
|  |  | ||||||
|  | 	    bsdi*) | ||||||
|  | 		    AC_CHECK_PROG(SHLICC2, shlicc2, yes, no) | ||||||
|  | 		    if test $SHLICC2 = yes ; then | ||||||
|  | 			    CC=shlicc2 | ||||||
|  | 			    export CC | ||||||
|  | 		    fi | ||||||
|  | 		    ;; | ||||||
|  | 	    esac | ||||||
|  |     fi | ||||||
|  |     if test -z "$CC" -a "$with_gcc" = no ; then | ||||||
|  | 	    CC=cc | ||||||
|  | 	    export CC | ||||||
|  |     fi | ||||||
|  |     AC_PROG_CC | ||||||
|  |     if test "$GCC" = yes ; then | ||||||
|  | 	    if test "$SHLICC2" = yes ; then | ||||||
|  | 		    ac_cv_lbl_gcc_vers=2 | ||||||
|  | 		    $1="-O2" | ||||||
|  | 	    else | ||||||
|  | 		    AC_MSG_CHECKING(gcc version) | ||||||
|  | 		    AC_CACHE_VAL(ac_cv_lbl_gcc_vers, | ||||||
|  | 			ac_cv_lbl_gcc_vers=`$CC -v 2>&1 | \ | ||||||
|  | 			    sed -e '/^gcc version /!d' \ | ||||||
|  | 				-e 's/^gcc version //' \ | ||||||
|  | 				-e 's/ .*//' -e 's/^[[[^0-9]]]*//' \ | ||||||
|  | 				-e 's/\..*//'`) | ||||||
|  | 		    AC_MSG_RESULT($ac_cv_lbl_gcc_vers) | ||||||
|  | 		    if test $ac_cv_lbl_gcc_vers -gt 1 ; then | ||||||
|  | 			    $1="-O2" | ||||||
|  | 		    fi | ||||||
|  | 	    fi | ||||||
|  |     else | ||||||
|  | 	    AC_MSG_CHECKING(that $CC handles ansi prototypes) | ||||||
|  | 	    AC_CACHE_VAL(ac_cv_lbl_cc_ansi_prototypes, | ||||||
|  | 		AC_TRY_COMPILE( | ||||||
|  | 		    [#include <sys/types.h>], | ||||||
|  | 		    [int frob(int, char *)], | ||||||
|  | 		    ac_cv_lbl_cc_ansi_prototypes=yes, | ||||||
|  | 		    ac_cv_lbl_cc_ansi_prototypes=no)) | ||||||
|  | 	    AC_MSG_RESULT($ac_cv_lbl_cc_ansi_prototypes) | ||||||
|  | 	    if test $ac_cv_lbl_cc_ansi_prototypes = no ; then | ||||||
|  | 		    case "$target_os" in | ||||||
|  |  | ||||||
|  | 		    hpux*) | ||||||
|  | 			    AC_MSG_CHECKING(for HP-UX ansi compiler ($CC -Aa -D_HPUX_SOURCE)) | ||||||
|  | 			    savedcflags="$CFLAGS" | ||||||
|  | 			    CFLAGS="-Aa -D_HPUX_SOURCE $CFLAGS" | ||||||
|  | 			    AC_CACHE_VAL(ac_cv_lbl_cc_hpux_cc_aa, | ||||||
|  | 				AC_TRY_COMPILE( | ||||||
|  | 				    [#include <sys/types.h>], | ||||||
|  | 				    [int frob(int, char *)], | ||||||
|  | 				    ac_cv_lbl_cc_hpux_cc_aa=yes, | ||||||
|  | 				    ac_cv_lbl_cc_hpux_cc_aa=no)) | ||||||
|  | 			    AC_MSG_RESULT($ac_cv_lbl_cc_hpux_cc_aa) | ||||||
|  | 			    if test $ac_cv_lbl_cc_hpux_cc_aa = no ; then | ||||||
|  | 				    AC_MSG_ERROR(see the INSTALL doc for more info) | ||||||
|  | 			    fi | ||||||
|  | 			    CFLAGS="$savedcflags" | ||||||
|  | 			    V_CCOPT="-Aa $V_CCOPT" | ||||||
|  | 			    AC_DEFINE(_HPUX_SOURCE) | ||||||
|  | 			    ;; | ||||||
|  |  | ||||||
|  | 		    *) | ||||||
|  | 			    AC_MSG_ERROR(see the INSTALL doc for more info) | ||||||
|  | 			    ;; | ||||||
|  | 		    esac | ||||||
|  | 	    fi | ||||||
|  | 	    $2="$$2 -I/usr/local/include" | ||||||
|  | 	    LDFLAGS="$LDFLAGS -L/usr/local/lib" | ||||||
|  |  | ||||||
|  | 	    case "$target_os" in | ||||||
|  |  | ||||||
|  | 	    irix*) | ||||||
|  | 		    V_CCOPT="$V_CCOPT -xansi -signed -g3" | ||||||
|  | 		    ;; | ||||||
|  |  | ||||||
|  | 	    osf*) | ||||||
|  | 		    V_CCOPT="$V_CCOPT -std1 -g3" | ||||||
|  | 		    ;; | ||||||
|  |  | ||||||
|  | 	    ultrix*) | ||||||
|  | 		    AC_MSG_CHECKING(that Ultrix $CC hacks const in prototypes) | ||||||
|  | 		    AC_CACHE_VAL(ac_cv_lbl_cc_const_proto, | ||||||
|  | 			AC_TRY_COMPILE( | ||||||
|  | 			    [#include <sys/types.h>], | ||||||
|  | 			    [struct a { int b; }; | ||||||
|  | 			    void c(const struct a *)], | ||||||
|  | 			    ac_cv_lbl_cc_const_proto=yes, | ||||||
|  | 			    ac_cv_lbl_cc_const_proto=no)) | ||||||
|  | 		    AC_MSG_RESULT($ac_cv_lbl_cc_const_proto) | ||||||
|  | 		    if test $ac_cv_lbl_cc_const_proto = no ; then | ||||||
|  | 			    AC_DEFINE(const,) | ||||||
|  | 		    fi | ||||||
|  | 		    ;; | ||||||
|  | 	    esac | ||||||
|  |     fi | ||||||
|  | ]) | ||||||
|  |  | ||||||
|  | dnl | ||||||
|  | dnl Use pfopen.c if available and pfopen() not in standard libraries | ||||||
|  | dnl Require libpcap | ||||||
|  | dnl Look for libpcap in .. | ||||||
|  | dnl Use the installed libpcap if there is no local version | ||||||
|  | dnl | ||||||
|  | dnl usage: | ||||||
|  | dnl | ||||||
|  | dnl	AC_LBL_LIBPCAP(pcapdep, incls) | ||||||
|  | dnl | ||||||
|  | dnl results: | ||||||
|  | dnl | ||||||
|  | dnl	$1 (pcapdep set) | ||||||
|  | dnl	$2 (incls appended) | ||||||
|  | dnl	LIBS | ||||||
|  | dnl	LBL_LIBS | ||||||
|  | dnl | ||||||
|  | AC_DEFUN(AC_LBL_LIBPCAP, | ||||||
|  |     [AC_REQUIRE([AC_LBL_LIBRARY_NET]) | ||||||
|  |     dnl | ||||||
|  |     dnl save a copy before locating libpcap.a | ||||||
|  |     dnl | ||||||
|  |     LBL_LIBS="$LIBS" | ||||||
|  |     pfopen=/usr/examples/packetfilter/pfopen.c | ||||||
|  |     if test -f $pfopen ; then | ||||||
|  | 	    AC_CHECK_FUNCS(pfopen) | ||||||
|  | 	    if test $ac_cv_func_pfopen = "no" ; then | ||||||
|  | 		    AC_MSG_RESULT(Using $pfopen) | ||||||
|  | 		    LIBS="$LIBS $pfopen" | ||||||
|  | 	    fi | ||||||
|  |     fi | ||||||
|  |     AC_MSG_CHECKING(for local pcap library) | ||||||
|  |     libpcap=FAIL | ||||||
|  |     lastdir=FAIL | ||||||
|  |     places=`ls .. | sed -e 's,/$,,' -e 's,^,../,' | \ | ||||||
|  | 	egrep '/libpcap-[[0-9]]*\.[[0-9]]*(\.[[0-9]]*)?([[ab]][[0-9]]*)?$'` | ||||||
|  |     for dir in $places ../libpcap libpcap ; do | ||||||
|  | 	    basedir=`echo $dir | sed -e 's/[[ab]][[0-9]]*$//'` | ||||||
|  | 	    if test $lastdir = $basedir ; then | ||||||
|  | 		    dnl skip alphas when an actual release is present | ||||||
|  | 		    continue; | ||||||
|  | 	    fi | ||||||
|  | 	    lastdir=$dir | ||||||
|  | 	    if test -r $dir/pcap.c ; then | ||||||
|  | 		    libpcap=$dir/libpcap.a | ||||||
|  | 		    d=$dir | ||||||
|  | 		    dnl continue and select the last one that exists | ||||||
|  | 	    fi | ||||||
|  |     done | ||||||
|  |     if test $libpcap = FAIL ; then | ||||||
|  | 	    AC_MSG_RESULT(not found) | ||||||
|  | 	    AC_CHECK_LIB(pcap, main, libpcap="-lpcap") | ||||||
|  | 	    if test $libpcap = FAIL ; then | ||||||
|  | 		    AC_MSG_ERROR(see the INSTALL doc for more info) | ||||||
|  | 	    fi | ||||||
|  |     else | ||||||
|  | 	    $1=$libpcap | ||||||
|  | 	    $2="-I$d $$2" | ||||||
|  | 	    AC_MSG_RESULT($libpcap) | ||||||
|  |     fi | ||||||
|  |     LIBS="$libpcap $LIBS" | ||||||
|  |     case "$target_os" in | ||||||
|  |  | ||||||
|  |     aix*) | ||||||
|  | 	    pseexe="/lib/pse.exp" | ||||||
|  | 	    AC_MSG_CHECKING(for $pseexe) | ||||||
|  | 	    if test -f $pseexe ; then | ||||||
|  | 		    AC_MSG_RESULT(yes) | ||||||
|  | 		    LIBS="$LIBS -I:$pseexe" | ||||||
|  | 	    fi | ||||||
|  | 	    ;; | ||||||
|  |     esac]) | ||||||
|  |  | ||||||
|  | dnl | ||||||
|  | dnl Define RETSIGTYPE and RETSIGVAL | ||||||
|  | dnl | ||||||
|  | dnl usage: | ||||||
|  | dnl | ||||||
|  | dnl	AC_LBL_TYPE_SIGNAL | ||||||
|  | dnl | ||||||
|  | dnl results: | ||||||
|  | dnl | ||||||
|  | dnl	RETSIGTYPE (defined) | ||||||
|  | dnl	RETSIGVAL (defined) | ||||||
|  | dnl | ||||||
|  | AC_DEFUN(AC_LBL_TYPE_SIGNAL, | ||||||
|  |     [AC_BEFORE([$0], [AC_LBL_LIBPCAP]) | ||||||
|  |     AC_TYPE_SIGNAL | ||||||
|  |     if test "$ac_cv_type_signal" = void ; then | ||||||
|  | 	    AC_DEFINE(RETSIGVAL,) | ||||||
|  |     else | ||||||
|  | 	    AC_DEFINE(RETSIGVAL,(0)) | ||||||
|  |     fi | ||||||
|  |     case "$target_os" in | ||||||
|  |  | ||||||
|  |     irix*) | ||||||
|  | 	    AC_DEFINE(_BSD_SIGNALS) | ||||||
|  | 	    ;; | ||||||
|  |  | ||||||
|  |     *) | ||||||
|  | 	    dnl prefer sigset() to sigaction() | ||||||
|  | 	    AC_CHECK_FUNCS(sigset) | ||||||
|  | 	    if test $ac_cv_func_sigset = no ; then | ||||||
|  | 		    AC_CHECK_FUNCS(sigaction) | ||||||
|  | 	    fi | ||||||
|  | 	    ;; | ||||||
|  |     esac]) | ||||||
|  |  | ||||||
|  | dnl | ||||||
|  | dnl If using gcc, make sure we have ANSI ioctl definitions | ||||||
|  | dnl | ||||||
|  | dnl usage: | ||||||
|  | dnl | ||||||
|  | dnl	AC_LBL_FIXINCLUDES | ||||||
|  | dnl | ||||||
|  | AC_DEFUN(AC_LBL_FIXINCLUDES, | ||||||
|  |     [if test "$GCC" = yes ; then | ||||||
|  | 	    AC_MSG_CHECKING(for ANSI ioctl definitions) | ||||||
|  | 	    AC_CACHE_VAL(ac_cv_lbl_gcc_fixincludes, | ||||||
|  | 		AC_TRY_COMPILE( | ||||||
|  | 		    [/* | ||||||
|  | 		     * This generates a "duplicate case value" when fixincludes | ||||||
|  | 		     * has not be run. | ||||||
|  | 		     */ | ||||||
|  | #		include <sys/types.h> | ||||||
|  | #		include <sys/time.h> | ||||||
|  | #		include <sys/ioctl.h> | ||||||
|  | #		ifdef HAVE_SYS_IOCCOM_H | ||||||
|  | #		include <sys/ioccom.h> | ||||||
|  | #		endif], | ||||||
|  | 		    [switch (0) { | ||||||
|  | 		    case _IO('A', 1):; | ||||||
|  | 		    case _IO('B', 1):; | ||||||
|  | 		    }], | ||||||
|  | 		    ac_cv_lbl_gcc_fixincludes=yes, | ||||||
|  | 		    ac_cv_lbl_gcc_fixincludes=no)) | ||||||
|  | 	    AC_MSG_RESULT($ac_cv_lbl_gcc_fixincludes) | ||||||
|  | 	    if test $ac_cv_lbl_gcc_fixincludes = no ; then | ||||||
|  | 		    # Don't cache failure | ||||||
|  | 		    unset ac_cv_lbl_gcc_fixincludes | ||||||
|  | 		    AC_MSG_ERROR(see the INSTALL for more info) | ||||||
|  | 	    fi | ||||||
|  |     fi]) | ||||||
|  |  | ||||||
|  | dnl | ||||||
|  | dnl Check for flex, default to lex | ||||||
|  | dnl Require flex 2.4 or higher | ||||||
|  | dnl Check for bison, default to yacc | ||||||
|  | dnl Default to lex/yacc if both flex and bison are not available | ||||||
|  | dnl Define the yy prefix string if using flex and bison | ||||||
|  | dnl | ||||||
|  | dnl usage: | ||||||
|  | dnl | ||||||
|  | dnl	AC_LBL_LEX_AND_YACC(lex, yacc, yyprefix) | ||||||
|  | dnl | ||||||
|  | dnl results: | ||||||
|  | dnl | ||||||
|  | dnl	$1 (lex set) | ||||||
|  | dnl	$2 (yacc appended) | ||||||
|  | dnl	$3 (optional flex and bison -P prefix) | ||||||
|  | dnl | ||||||
|  | AC_DEFUN(AC_LBL_LEX_AND_YACC, | ||||||
|  |     [AC_ARG_WITH(flex, [  --without-flex          don't use flex]) | ||||||
|  |     AC_ARG_WITH(bison, [  --without-bison         don't use bison]) | ||||||
|  |     if test "$with_flex" = no ; then | ||||||
|  | 	    $1=lex | ||||||
|  |     else | ||||||
|  | 	    AC_CHECK_PROGS($1, flex, lex) | ||||||
|  |     fi | ||||||
|  |     if test "$$1" = flex ; then | ||||||
|  | 	    # The -V flag was added in 2.4 | ||||||
|  | 	    AC_MSG_CHECKING(for flex 2.4 or higher) | ||||||
|  | 	    AC_CACHE_VAL(ac_cv_lbl_flex_v24, | ||||||
|  | 		if flex -V >/dev/null 2>&1; then | ||||||
|  | 			ac_cv_lbl_flex_v24=yes | ||||||
|  | 		else | ||||||
|  | 			ac_cv_lbl_flex_v24=no | ||||||
|  | 		fi) | ||||||
|  | 	    AC_MSG_RESULT($ac_cv_lbl_flex_v24) | ||||||
|  | 	    if test $ac_cv_lbl_flex_v24 = no ; then | ||||||
|  | 		    s="2.4 or higher required" | ||||||
|  | 		    AC_MSG_WARN(ignoring obsolete flex executable ($s)) | ||||||
|  | 		    $1=lex | ||||||
|  | 	    fi | ||||||
|  |     fi | ||||||
|  |     if test "$with_bison" = no ; then | ||||||
|  | 	    $2=yacc | ||||||
|  |     else | ||||||
|  | 	    AC_CHECK_PROGS($2, bison, yacc) | ||||||
|  |     fi | ||||||
|  |     if test "$$2" = bison ; then | ||||||
|  | 	    $2="$$2 -y" | ||||||
|  |     fi | ||||||
|  |     if test "$$1" != lex -a "$$2" = yacc -o "$$1" = lex -a "$$2" != yacc ; then | ||||||
|  | 	    AC_MSG_WARN(don't have both flex and bison; reverting to lex/yacc) | ||||||
|  | 	    $1=lex | ||||||
|  | 	    $2=yacc | ||||||
|  |     fi | ||||||
|  |     if test "$$1" = flex -a -n "$3" ; then | ||||||
|  | 	    $1="$$1 -P$3" | ||||||
|  | 	    $2="$$2 -p $3" | ||||||
|  |     fi]) | ||||||
|  |  | ||||||
|  | dnl | ||||||
|  | dnl Checks to see if union wait is used with WEXITSTATUS() | ||||||
|  | dnl | ||||||
|  | dnl usage: | ||||||
|  | dnl | ||||||
|  | dnl	AC_LBL_UNION_WAIT | ||||||
|  | dnl | ||||||
|  | dnl results: | ||||||
|  | dnl | ||||||
|  | dnl	DECLWAITSTATUS (defined) | ||||||
|  | dnl | ||||||
|  | AC_DEFUN(AC_LBL_UNION_WAIT, | ||||||
|  |     [AC_MSG_CHECKING(if union wait is used) | ||||||
|  |     AC_CACHE_VAL(ac_cv_lbl_union_wait, | ||||||
|  | 	AC_TRY_COMPILE([ | ||||||
|  | #	include <sys/types.h> | ||||||
|  | #	include <sys/wait.h>], | ||||||
|  | 	    [int status; | ||||||
|  | 	    u_int i = WEXITSTATUS(status); | ||||||
|  | 	    u_int j = waitpid(0, &status, 0);], | ||||||
|  | 	    ac_cv_lbl_union_wait=no, | ||||||
|  | 	    ac_cv_lbl_union_wait=yes)) | ||||||
|  |     AC_MSG_RESULT($ac_cv_lbl_union_wait) | ||||||
|  |     if test $ac_cv_lbl_union_wait = yes ; then | ||||||
|  | 	    AC_DEFINE(DECLWAITSTATUS,union wait) | ||||||
|  |     else | ||||||
|  | 	    AC_DEFINE(DECLWAITSTATUS,int) | ||||||
|  |     fi]) | ||||||
|  |  | ||||||
|  | dnl | ||||||
|  | dnl Checks to see if the sockaddr struct has the 4.4 BSD sa_len member | ||||||
|  | dnl | ||||||
|  | dnl usage: | ||||||
|  | dnl | ||||||
|  | dnl	AC_LBL_SOCKADDR_SA_LEN | ||||||
|  | dnl | ||||||
|  | dnl results: | ||||||
|  | dnl | ||||||
|  | dnl	HAVE_SOCKADDR_SA_LEN (defined) | ||||||
|  | dnl | ||||||
|  | AC_DEFUN(AC_LBL_SOCKADDR_SA_LEN, | ||||||
|  |     [AC_MSG_CHECKING(if sockaddr struct has sa_len member) | ||||||
|  |     AC_CACHE_VAL(ac_cv_lbl_sockaddr_has_sa_len, | ||||||
|  | 	AC_TRY_COMPILE([ | ||||||
|  | #	include <sys/types.h> | ||||||
|  | #	include <sys/socket.h>], | ||||||
|  | 	[u_int i = sizeof(((struct sockaddr *)0)->sa_len)], | ||||||
|  | 	ac_cv_lbl_sockaddr_has_sa_len=yes, | ||||||
|  | 	ac_cv_lbl_sockaddr_has_sa_len=no)) | ||||||
|  |     AC_MSG_RESULT($ac_cv_lbl_sockaddr_has_sa_len) | ||||||
|  |     if test $ac_cv_lbl_sockaddr_has_sa_len = yes ; then | ||||||
|  | 	    AC_DEFINE(HAVE_SOCKADDR_SA_LEN) | ||||||
|  |     fi]) | ||||||
|  |  | ||||||
|  | dnl | ||||||
|  | dnl Checks to see if -R is used | ||||||
|  | dnl | ||||||
|  | dnl usage: | ||||||
|  | dnl | ||||||
|  | dnl	AC_LBL_HAVE_RUN_PATH | ||||||
|  | dnl | ||||||
|  | dnl results: | ||||||
|  | dnl | ||||||
|  | dnl	ac_cv_lbl_have_run_path (yes or no) | ||||||
|  | dnl | ||||||
|  | AC_DEFUN(AC_LBL_HAVE_RUN_PATH, | ||||||
|  |     [AC_MSG_CHECKING(for ${CC-cc} -R) | ||||||
|  |     AC_CACHE_VAL(ac_cv_lbl_have_run_path, | ||||||
|  | 	[echo 'main(){}' > conftest.c | ||||||
|  | 	${CC-cc} -o conftest conftest.c -R/a1/b2/c3 >conftest.out 2>&1 | ||||||
|  | 	if test ! -s conftest.out ; then | ||||||
|  | 		ac_cv_lbl_have_run_path=yes | ||||||
|  | 	else | ||||||
|  | 		ac_cv_lbl_have_run_path=no | ||||||
|  | 	fi | ||||||
|  | 	rm -f conftest*]) | ||||||
|  |     AC_MSG_RESULT($ac_cv_lbl_have_run_path) | ||||||
|  |     ]) | ||||||
|  |  | ||||||
|  | dnl | ||||||
|  | dnl Due to the stupid way it's implemented, AC_CHECK_TYPE is nearly useless. | ||||||
|  | dnl | ||||||
|  | dnl usage: | ||||||
|  | dnl | ||||||
|  | dnl	AC_LBL_CHECK_TYPE | ||||||
|  | dnl | ||||||
|  | dnl results: | ||||||
|  | dnl | ||||||
|  | dnl	int32_t (defined) | ||||||
|  | dnl	u_int32_t (defined) | ||||||
|  | dnl | ||||||
|  | AC_DEFUN(AC_LBL_CHECK_TYPE, | ||||||
|  |     [AC_MSG_CHECKING(for $1 using $CC) | ||||||
|  |     AC_CACHE_VAL(ac_cv_lbl_have_$1, | ||||||
|  | 	AC_TRY_COMPILE([ | ||||||
|  | #	include "confdefs.h" | ||||||
|  | #	include <sys/types.h> | ||||||
|  | #	if STDC_HEADERS | ||||||
|  | #	include <stdlib.h> | ||||||
|  | #	include <stddef.h> | ||||||
|  | #	endif], | ||||||
|  | 	[$1 i], | ||||||
|  | 	ac_cv_lbl_have_$1=yes, | ||||||
|  | 	ac_cv_lbl_have_$1=no)) | ||||||
|  |     AC_MSG_RESULT($ac_cv_lbl_have_$1) | ||||||
|  |     if test $ac_cv_lbl_have_$1 = no ; then | ||||||
|  | 	    AC_DEFINE($1, $2) | ||||||
|  |     fi]) | ||||||
|  |  | ||||||
|  | dnl | ||||||
|  | dnl Checks to see if unaligned memory accesses fail | ||||||
|  | dnl | ||||||
|  | dnl usage: | ||||||
|  | dnl | ||||||
|  | dnl	AC_LBL_UNALIGNED_ACCESS | ||||||
|  | dnl | ||||||
|  | dnl results: | ||||||
|  | dnl | ||||||
|  | dnl	LBL_ALIGN (DEFINED) | ||||||
|  | dnl | ||||||
|  | AC_DEFUN(AC_LBL_UNALIGNED_ACCESS, | ||||||
|  |     [AC_MSG_CHECKING(if unaligned accesses fail) | ||||||
|  |     AC_CACHE_VAL(ac_cv_lbl_unaligned_fail, | ||||||
|  | 	[case "$target_cpu" in | ||||||
|  |  | ||||||
|  | 	alpha|hp*|mips|sparc) | ||||||
|  | 		ac_cv_lbl_unaligned_fail=yes | ||||||
|  | 		;; | ||||||
|  |  | ||||||
|  | 	*) | ||||||
|  | 		cat >conftest.c <<EOF | ||||||
|  | #		include <sys/types.h> | ||||||
|  | #		include <sys/wait.h> | ||||||
|  | #		include <stdio.h> | ||||||
|  | 		unsigned char a[[5]] = { 1, 2, 3, 4, 5 }; | ||||||
|  | 		main() { | ||||||
|  | 		unsigned int i; | ||||||
|  | 		pid_t pid; | ||||||
|  | 		int status; | ||||||
|  | 		/* avoid "core dumped" message */ | ||||||
|  | 		pid = fork(); | ||||||
|  | 		if (pid <  0) | ||||||
|  | 			exit(2); | ||||||
|  | 		if (pid > 0) { | ||||||
|  | 			/* parent */ | ||||||
|  | 			pid = waitpid(pid, &status, 0); | ||||||
|  | 			if (pid < 0) | ||||||
|  | 				exit(3); | ||||||
|  | 			exit(!WIFEXITED(status)); | ||||||
|  | 		} | ||||||
|  | 		/* child */ | ||||||
|  | 		i = *(unsigned int *)&a[[1]]; | ||||||
|  | 		printf("%d\n", i); | ||||||
|  | 		exit(0); | ||||||
|  | 		} | ||||||
|  | EOF | ||||||
|  | 		${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS \ | ||||||
|  | 		    conftest.c $LIBS >/dev/null 2>&1 | ||||||
|  | 		if test ! -x conftest ; then | ||||||
|  | 			dnl failed to compile for some reason | ||||||
|  | 			ac_cv_lbl_unaligned_fail=yes | ||||||
|  | 		else | ||||||
|  | 			./conftest >conftest.out | ||||||
|  | 			if test ! -s conftest.out ; then | ||||||
|  | 				ac_cv_lbl_unaligned_fail=yes | ||||||
|  | 			else | ||||||
|  | 				ac_cv_lbl_unaligned_fail=no | ||||||
|  | 			fi | ||||||
|  | 		fi | ||||||
|  | 		rm -f conftest* core core.conftest | ||||||
|  | 		;; | ||||||
|  | 	esac]) | ||||||
|  |     AC_MSG_RESULT($ac_cv_lbl_unaligned_fail) | ||||||
|  |     if test $ac_cv_lbl_unaligned_fail = yes ; then | ||||||
|  | 	    AC_DEFINE(LBL_ALIGN) | ||||||
|  |     fi]) | ||||||
|  |  | ||||||
|  | dnl | ||||||
|  | dnl If using gcc and the file .devel exists: | ||||||
|  | dnl	Compile with -g (if supported) and -Wall | ||||||
|  | dnl	If using gcc 2, do extra prototype checking | ||||||
|  | dnl	If an os prototype include exists, symlink os-proto.h to it | ||||||
|  | dnl | ||||||
|  | dnl usage: | ||||||
|  | dnl | ||||||
|  | dnl	AC_LBL_DEVEL(copt) | ||||||
|  | dnl | ||||||
|  | dnl results: | ||||||
|  | dnl | ||||||
|  | dnl	$1 (copt appended) | ||||||
|  | dnl	HAVE_OS_PROTO_H (defined) | ||||||
|  | dnl	os-proto.h (symlinked) | ||||||
|  | dnl | ||||||
|  | AC_DEFUN(AC_LBL_DEVEL, | ||||||
|  |     [rm -f os-proto.h | ||||||
|  |     if test "${LBL_CFLAGS+set}" = set; then | ||||||
|  | 	    $1="$$1 ${LBL_CFLAGS}" | ||||||
|  |     fi | ||||||
|  |     if test -f .devel ; then | ||||||
|  | 	    if test "$GCC" = yes ; then | ||||||
|  | 		    if test "${LBL_CFLAGS+set}" != set; then | ||||||
|  | 			    if test "$ac_cv_prog_cc_g" = yes ; then | ||||||
|  | 				    $1="-g $$1" | ||||||
|  | 			    fi | ||||||
|  | 			    $1="$$1 -Wall" | ||||||
|  | 			    if test $ac_cv_lbl_gcc_vers -gt 1 ; then | ||||||
|  | 				    $1="$$1 -Wmissing-prototypes -Wstrict-prototypes" | ||||||
|  | 			    fi | ||||||
|  | 		    fi | ||||||
|  | 	    else | ||||||
|  | 		    case "$target_os" in | ||||||
|  |  | ||||||
|  | 		    irix6*) | ||||||
|  | 			    V_CCOPT="$V_CCOPT -n32" | ||||||
|  | 			    ;; | ||||||
|  |  | ||||||
|  | 		    *) | ||||||
|  | 			    ;; | ||||||
|  | 		    esac | ||||||
|  | 	    fi | ||||||
|  | 	    os=`echo $target_os | sed -e 's/\([[0-9]][[0-9]]*\)[[^0-9]].*$/\1/'` | ||||||
|  | 	    name="lbl/os-$os.h" | ||||||
|  | 	    if test -f $name ; then | ||||||
|  | 		    ln -s $name os-proto.h | ||||||
|  | 		    AC_DEFINE(HAVE_OS_PROTO_H) | ||||||
|  | 	    else | ||||||
|  | 		    AC_MSG_WARN(can't find $name) | ||||||
|  | 	    fi | ||||||
|  |     fi]) | ||||||
|  |  | ||||||
|  | dnl | ||||||
|  | dnl Improved version of AC_CHECK_LIB | ||||||
|  | dnl | ||||||
|  | dnl Thanks to John Hawkinson (jhawk@mit.edu) | ||||||
|  | dnl | ||||||
|  | dnl usage: | ||||||
|  | dnl | ||||||
|  | dnl	AC_LBL_CHECK_LIB(LIBRARY, FUNCTION [, ACTION-IF-FOUND [, | ||||||
|  | dnl	    ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]]) | ||||||
|  | dnl | ||||||
|  | dnl results: | ||||||
|  | dnl | ||||||
|  | dnl	LIBS | ||||||
|  | dnl | ||||||
|  |  | ||||||
|  | define(AC_LBL_CHECK_LIB, | ||||||
|  | [AC_MSG_CHECKING([for $2 in -l$1]) | ||||||
|  | dnl Use a cache variable name containing both the library and function name, | ||||||
|  | dnl because the test really is for library $1 defining function $2, not | ||||||
|  | dnl just for library $1.  Separate tests with the same $1 and different $2's | ||||||
|  | dnl may have different results. | ||||||
|  | ac_lib_var=`echo $1['_']$2['_']$5 | sed 'y%./+- %__p__%'` | ||||||
|  | AC_CACHE_VAL(ac_cv_lbl_lib_$ac_lib_var, | ||||||
|  | [ac_save_LIBS="$LIBS" | ||||||
|  | LIBS="-l$1 $5 $LIBS" | ||||||
|  | AC_TRY_LINK(dnl | ||||||
|  | ifelse([$2], [main], , dnl Avoid conflicting decl of main. | ||||||
|  | [/* Override any gcc2 internal prototype to avoid an error.  */ | ||||||
|  | ]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus | ||||||
|  | extern "C" | ||||||
|  | #endif | ||||||
|  | ])dnl | ||||||
|  | [/* We use char because int might match the return type of a gcc2 | ||||||
|  |     builtin and then its argument prototype would still apply.  */ | ||||||
|  | char $2(); | ||||||
|  | ]), | ||||||
|  | 	    [$2()], | ||||||
|  | 	    eval "ac_cv_lbl_lib_$ac_lib_var=yes", | ||||||
|  | 	    eval "ac_cv_lbl_lib_$ac_lib_var=no") | ||||||
|  | LIBS="$ac_save_LIBS" | ||||||
|  | ])dnl | ||||||
|  | if eval "test \"`echo '$ac_cv_lbl_lib_'$ac_lib_var`\" = yes"; then | ||||||
|  |   AC_MSG_RESULT(yes) | ||||||
|  |   ifelse([$3], , | ||||||
|  | [changequote(, )dnl | ||||||
|  |   ac_tr_lib=HAVE_LIB`echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g' \ | ||||||
|  |     -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` | ||||||
|  | changequote([, ])dnl | ||||||
|  |   AC_DEFINE_UNQUOTED($ac_tr_lib) | ||||||
|  |   LIBS="-l$1 $LIBS" | ||||||
|  | ], [$3]) | ||||||
|  | else | ||||||
|  |   AC_MSG_RESULT(no) | ||||||
|  | ifelse([$4], , , [$4 | ||||||
|  | ])dnl | ||||||
|  | fi | ||||||
|  | ]) | ||||||
|  |  | ||||||
|  | dnl | ||||||
|  | dnl AC_LBL_LIBRARY_NET | ||||||
|  | dnl | ||||||
|  | dnl This test is for network applications that need socket() and | ||||||
|  | dnl gethostbyname() -ish functions.  Under Solaris, those applications | ||||||
|  | dnl need to link with "-lsocket -lnsl".  Under IRIX, they need to link | ||||||
|  | dnl with "-lnsl" but should *not* link with "-lsocket" because | ||||||
|  | dnl libsocket.a breaks a number of things (for instance: | ||||||
|  | dnl gethostbyname() under IRIX 5.2, and snoop sockets under most | ||||||
|  | dnl versions of IRIX). | ||||||
|  | dnl | ||||||
|  | dnl Unfortunately, many application developers are not aware of this, | ||||||
|  | dnl and mistakenly write tests that cause -lsocket to be used under | ||||||
|  | dnl IRIX.  It is also easy to write tests that cause -lnsl to be used | ||||||
|  | dnl under operating systems where neither are necessary (or useful), | ||||||
|  | dnl such as SunOS 4.1.4, which uses -lnsl for TLI. | ||||||
|  | dnl | ||||||
|  | dnl This test exists so that every application developer does not test | ||||||
|  | dnl this in a different, and subtly broken fashion. | ||||||
|  |  | ||||||
|  | dnl It has been argued that this test should be broken up into two | ||||||
|  | dnl seperate tests, one for the resolver libraries, and one for the | ||||||
|  | dnl libraries necessary for using Sockets API. Unfortunately, the two | ||||||
|  | dnl are carefully intertwined and allowing the autoconf user to use | ||||||
|  | dnl them independantly potentially results in unfortunate ordering | ||||||
|  | dnl dependancies -- as such, such component macros would have to | ||||||
|  | dnl carefully use indirection and be aware if the other components were | ||||||
|  | dnl executed. Since other autoconf macros do not go to this trouble, | ||||||
|  | dnl and almost no applications use sockets without the resolver, this | ||||||
|  | dnl complexity has not been implemented. | ||||||
|  | dnl | ||||||
|  | dnl The check for libresolv is in case you are attempting to link | ||||||
|  | dnl statically and happen to have a libresolv.a lying around (and no | ||||||
|  | dnl libnsl.a). | ||||||
|  | dnl | ||||||
|  | AC_DEFUN(AC_LBL_LIBRARY_NET, [ | ||||||
|  |     # Most operating systems have gethostbyname() in the default searched | ||||||
|  |     # libraries (i.e. libc): | ||||||
|  |     AC_CHECK_FUNC(gethostbyname, , | ||||||
|  | 	# Some OSes (eg. Solaris) place it in libnsl: | ||||||
|  | 	AC_LBL_CHECK_LIB(nsl, gethostbyname, ,  | ||||||
|  | 	    # Some strange OSes (SINIX) have it in libsocket: | ||||||
|  | 	    AC_LBL_CHECK_LIB(socket, gethostbyname, , | ||||||
|  | 		# Unfortunately libsocket sometimes depends on libnsl. | ||||||
|  | 		# AC_CHECK_LIB's API is essentially broken so the | ||||||
|  | 		# following ugliness is necessary: | ||||||
|  | 		AC_LBL_CHECK_LIB(socket, gethostbyname, | ||||||
|  | 		    LIBS="-lsocket -lnsl $LIBS", | ||||||
|  | 		    AC_CHECK_LIB(resolv, gethostbyname), | ||||||
|  | 		    -lnsl)))) | ||||||
|  |     AC_CHECK_FUNC(socket, , AC_CHECK_LIB(socket, socket, , | ||||||
|  | 	AC_LBL_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", , | ||||||
|  | 	    -lnsl))) | ||||||
|  |     # DLPI needs putmsg under HPUX so test for -lstr while we're at it | ||||||
|  |     AC_CHECK_LIB(str, putmsg) | ||||||
|  |     ]) | ||||||
| @@ -0,0 +1,264 @@ | |||||||
|  | /*- | ||||||
|  |  * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 | ||||||
|  |  *	The Regents of the University of California.  All rights reserved. | ||||||
|  |  * | ||||||
|  |  * This code is derived from the Stanford/CMU enet packet filter, | ||||||
|  |  * (net/enet.c) distributed as part of 4.3BSD, and code contributed | ||||||
|  |  * to Berkeley by Steven McCanne and Van Jacobson both of Lawrence  | ||||||
|  |  * Berkeley Laboratory. | ||||||
|  |  * | ||||||
|  |  * Redistribution and use in source and binary forms, with or without | ||||||
|  |  * modification, are permitted provided that the following conditions | ||||||
|  |  * are met: | ||||||
|  |  * 1. Redistributions of source code must retain the above copyright | ||||||
|  |  *    notice, this list of conditions and the following disclaimer. | ||||||
|  |  * 2. Redistributions in binary form must reproduce the above copyright | ||||||
|  |  *    notice, this list of conditions and the following disclaimer in the | ||||||
|  |  *    documentation and/or other materials provided with the distribution. | ||||||
|  |  * 3. All advertising materials mentioning features or use of this software | ||||||
|  |  *    must display the following acknowledgement: | ||||||
|  |  *      This product includes software developed by the University of | ||||||
|  |  *      California, Berkeley and its contributors. | ||||||
|  |  * 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. | ||||||
|  |  * | ||||||
|  |  *      @(#)bpf.h       7.1 (Berkeley) 5/7/91 | ||||||
|  |  * | ||||||
|  |  * @(#) $Header: /usr/local/cvs/linux/tools/build/e100boot/libpcap-0.4/bpf/net/bpf.h,v 1.1 1999/08/26 10:07:57 johana Exp $ (LBL) | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | #ifndef BPF_MAJOR_VERSION | ||||||
|  |  | ||||||
|  | /* BSD style release date */ | ||||||
|  | #define BPF_RELEASE 199606 | ||||||
|  |  | ||||||
|  | typedef	int bpf_int32; | ||||||
|  | typedef	u_int bpf_u_int32; | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * Alignment macros.  BPF_WORDALIGN rounds up to the next  | ||||||
|  |  * even multiple of BPF_ALIGNMENT.  | ||||||
|  |  */ | ||||||
|  | #define BPF_ALIGNMENT sizeof(bpf_int32) | ||||||
|  | #define BPF_WORDALIGN(x) (((x)+(BPF_ALIGNMENT-1))&~(BPF_ALIGNMENT-1)) | ||||||
|  |  | ||||||
|  | #define BPF_MAXINSNS 512 | ||||||
|  | #define BPF_MAXBUFSIZE 0x8000 | ||||||
|  | #define BPF_MINBUFSIZE 32 | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  *  Structure for BIOCSETF. | ||||||
|  |  */ | ||||||
|  | struct bpf_program { | ||||||
|  | 	u_int bf_len; | ||||||
|  | 	struct bpf_insn *bf_insns; | ||||||
|  | }; | ||||||
|  |   | ||||||
|  | /* | ||||||
|  |  * Struct returned by BIOCGSTATS. | ||||||
|  |  */ | ||||||
|  | struct bpf_stat { | ||||||
|  | 	u_int bs_recv;		/* number of packets received */ | ||||||
|  | 	u_int bs_drop;		/* number of packets dropped */ | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * Struct return by BIOCVERSION.  This represents the version number of  | ||||||
|  |  * the filter language described by the instruction encodings below. | ||||||
|  |  * bpf understands a program iff kernel_major == filter_major && | ||||||
|  |  * kernel_minor >= filter_minor, that is, if the value returned by the | ||||||
|  |  * running kernel has the same major number and a minor number equal | ||||||
|  |  * equal to or less than the filter being downloaded.  Otherwise, the | ||||||
|  |  * results are undefined, meaning an error may be returned or packets | ||||||
|  |  * may be accepted haphazardly. | ||||||
|  |  * It has nothing to do with the source code version. | ||||||
|  |  */ | ||||||
|  | struct bpf_version { | ||||||
|  | 	u_short bv_major; | ||||||
|  | 	u_short bv_minor; | ||||||
|  | }; | ||||||
|  | /* Current version number of filter architecture. */ | ||||||
|  | #define BPF_MAJOR_VERSION 1 | ||||||
|  | #define BPF_MINOR_VERSION 1 | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * BPF ioctls | ||||||
|  |  * | ||||||
|  |  * The first set is for compatibility with Sun's pcc style | ||||||
|  |  * header files.  If your using gcc, we assume that you | ||||||
|  |  * have run fixincludes so the latter set should work. | ||||||
|  |  */ | ||||||
|  | #if (defined(sun) || defined(ibm032)) && !defined(__GNUC__) | ||||||
|  | #define	BIOCGBLEN	_IOR(B,102, u_int) | ||||||
|  | #define	BIOCSBLEN	_IOWR(B,102, u_int) | ||||||
|  | #define	BIOCSETF	_IOW(B,103, struct bpf_program) | ||||||
|  | #define	BIOCFLUSH	_IO(B,104) | ||||||
|  | #define BIOCPROMISC	_IO(B,105) | ||||||
|  | #define	BIOCGDLT	_IOR(B,106, u_int) | ||||||
|  | #define BIOCGETIF	_IOR(B,107, struct ifreq) | ||||||
|  | #define BIOCSETIF	_IOW(B,108, struct ifreq) | ||||||
|  | #define BIOCSRTIMEOUT	_IOW(B,109, struct timeval) | ||||||
|  | #define BIOCGRTIMEOUT	_IOR(B,110, struct timeval) | ||||||
|  | #define BIOCGSTATS	_IOR(B,111, struct bpf_stat) | ||||||
|  | #define BIOCIMMEDIATE	_IOW(B,112, u_int) | ||||||
|  | #define BIOCVERSION	_IOR(B,113, struct bpf_version) | ||||||
|  | #define BIOCSTCPF	_IOW(B,114, struct bpf_program) | ||||||
|  | #define BIOCSUDPF	_IOW(B,115, struct bpf_program) | ||||||
|  | #else | ||||||
|  | #define	BIOCGBLEN	_IOR('B',102, u_int) | ||||||
|  | #define	BIOCSBLEN	_IOWR('B',102, u_int) | ||||||
|  | #define	BIOCSETF	_IOW('B',103, struct bpf_program) | ||||||
|  | #define	BIOCFLUSH	_IO('B',104) | ||||||
|  | #define BIOCPROMISC	_IO('B',105) | ||||||
|  | #define	BIOCGDLT	_IOR('B',106, u_int) | ||||||
|  | #define BIOCGETIF	_IOR('B',107, struct ifreq) | ||||||
|  | #define BIOCSETIF	_IOW('B',108, struct ifreq) | ||||||
|  | #define BIOCSRTIMEOUT	_IOW('B',109, struct timeval) | ||||||
|  | #define BIOCGRTIMEOUT	_IOR('B',110, struct timeval) | ||||||
|  | #define BIOCGSTATS	_IOR('B',111, struct bpf_stat) | ||||||
|  | #define BIOCIMMEDIATE	_IOW('B',112, u_int) | ||||||
|  | #define BIOCVERSION	_IOR('B',113, struct bpf_version) | ||||||
|  | #define BIOCSTCPF	_IOW('B',114, struct bpf_program) | ||||||
|  | #define BIOCSUDPF	_IOW('B',115, struct bpf_program) | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * Structure prepended to each packet. | ||||||
|  |  */ | ||||||
|  | struct bpf_hdr { | ||||||
|  | 	struct timeval	bh_tstamp;	/* time stamp */ | ||||||
|  | 	bpf_u_int32	bh_caplen;	/* length of captured portion */ | ||||||
|  | 	bpf_u_int32	bh_datalen;	/* original length of packet */ | ||||||
|  | 	u_short		bh_hdrlen;	/* length of bpf header (this struct | ||||||
|  | 					   plus alignment padding) */ | ||||||
|  | }; | ||||||
|  | /* | ||||||
|  |  * Because the structure above is not a multiple of 4 bytes, some compilers | ||||||
|  |  * will insist on inserting padding; hence, sizeof(struct bpf_hdr) won't work. | ||||||
|  |  * Only the kernel needs to know about it; applications use bh_hdrlen. | ||||||
|  |  */ | ||||||
|  | #ifdef KERNEL | ||||||
|  | #define SIZEOF_BPF_HDR 18 | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * Data-link level type codes. | ||||||
|  |  */ | ||||||
|  | #define DLT_NULL	0	/* no link-layer encapsulation */ | ||||||
|  | #define DLT_EN10MB	1	/* Ethernet (10Mb) */ | ||||||
|  | #define DLT_EN3MB	2	/* Experimental Ethernet (3Mb) */ | ||||||
|  | #define DLT_AX25	3	/* Amateur Radio AX.25 */ | ||||||
|  | #define DLT_PRONET	4	/* Proteon ProNET Token Ring */ | ||||||
|  | #define DLT_CHAOS	5	/* Chaos */ | ||||||
|  | #define DLT_IEEE802	6	/* IEEE 802 Networks */ | ||||||
|  | #define DLT_ARCNET	7	/* ARCNET */ | ||||||
|  | #define DLT_SLIP	8	/* Serial Line IP */ | ||||||
|  | #define DLT_PPP		9	/* Point-to-point Protocol */ | ||||||
|  | #define DLT_FDDI	10	/* FDDI */ | ||||||
|  | #define DLT_ATM_RFC1483	11	/* LLC/SNAP encapsulated atm */ | ||||||
|  | #define DLT_RAW		12	/* raw IP */ | ||||||
|  | #define DLT_SLIP_BSDOS	13	/* BSD/OS Serial Line IP */ | ||||||
|  | #define DLT_PPP_BSDOS	14	/* BSD/OS Point-to-point Protocol */ | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * The instruction encondings. | ||||||
|  |  */ | ||||||
|  | /* instruction classes */ | ||||||
|  | #define BPF_CLASS(code) ((code) & 0x07) | ||||||
|  | #define		BPF_LD		0x00 | ||||||
|  | #define		BPF_LDX		0x01 | ||||||
|  | #define		BPF_ST		0x02 | ||||||
|  | #define		BPF_STX		0x03 | ||||||
|  | #define		BPF_ALU		0x04 | ||||||
|  | #define		BPF_JMP		0x05 | ||||||
|  | #define		BPF_RET		0x06 | ||||||
|  | #define		BPF_MISC	0x07 | ||||||
|  |  | ||||||
|  | /* ld/ldx fields */ | ||||||
|  | #define BPF_SIZE(code)	((code) & 0x18) | ||||||
|  | #define		BPF_W		0x00 | ||||||
|  | #define		BPF_H		0x08 | ||||||
|  | #define		BPF_B		0x10 | ||||||
|  | #define BPF_MODE(code)	((code) & 0xe0) | ||||||
|  | #define		BPF_IMM 	0x00 | ||||||
|  | #define		BPF_ABS		0x20 | ||||||
|  | #define		BPF_IND		0x40 | ||||||
|  | #define		BPF_MEM		0x60 | ||||||
|  | #define		BPF_LEN		0x80 | ||||||
|  | #define		BPF_MSH		0xa0 | ||||||
|  |  | ||||||
|  | /* alu/jmp fields */ | ||||||
|  | #define BPF_OP(code)	((code) & 0xf0) | ||||||
|  | #define		BPF_ADD		0x00 | ||||||
|  | #define		BPF_SUB		0x10 | ||||||
|  | #define		BPF_MUL		0x20 | ||||||
|  | #define		BPF_DIV		0x30 | ||||||
|  | #define		BPF_OR		0x40 | ||||||
|  | #define		BPF_AND		0x50 | ||||||
|  | #define		BPF_LSH		0x60 | ||||||
|  | #define		BPF_RSH		0x70 | ||||||
|  | #define		BPF_NEG		0x80 | ||||||
|  | #define		BPF_JA		0x00 | ||||||
|  | #define		BPF_JEQ		0x10 | ||||||
|  | #define		BPF_JGT		0x20 | ||||||
|  | #define		BPF_JGE		0x30 | ||||||
|  | #define		BPF_JSET	0x40 | ||||||
|  | #define BPF_SRC(code)	((code) & 0x08) | ||||||
|  | #define		BPF_K		0x00 | ||||||
|  | #define		BPF_X		0x08 | ||||||
|  |  | ||||||
|  | /* ret - BPF_K and BPF_X also apply */ | ||||||
|  | #define BPF_RVAL(code)	((code) & 0x18) | ||||||
|  | #define		BPF_A		0x10 | ||||||
|  |  | ||||||
|  | /* misc */ | ||||||
|  | #define BPF_MISCOP(code) ((code) & 0xf8) | ||||||
|  | #define		BPF_TAX		0x00 | ||||||
|  | #define		BPF_TXA		0x80 | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * The instruction data structure. | ||||||
|  |  */ | ||||||
|  | struct bpf_insn { | ||||||
|  | 	u_short	code; | ||||||
|  | 	u_char 	jt; | ||||||
|  | 	u_char 	jf; | ||||||
|  | 	bpf_int32 k; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * Macros for insn array initializers. | ||||||
|  |  */ | ||||||
|  | #define BPF_STMT(code, k) { (u_short)(code), 0, 0, k } | ||||||
|  | #define BPF_JUMP(code, k, jt, jf) { (u_short)(code), jt, jf, k } | ||||||
|  |  | ||||||
|  | #ifdef KERNEL | ||||||
|  | extern u_int bpf_filter(); | ||||||
|  | extern void bpfattach(); | ||||||
|  | extern void bpf_tap(); | ||||||
|  | extern void bpf_mtap(); | ||||||
|  | #else | ||||||
|  | #if __STDC__ | ||||||
|  | extern u_int bpf_filter(struct bpf_insn *, u_char *, u_int, u_int); | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * Number of scratch memory words (for BPF_LD|BPF_MEM and BPF_ST). | ||||||
|  |  */ | ||||||
|  | #define BPF_MEMWORDS 16 | ||||||
|  |  | ||||||
|  | #endif | ||||||
| @@ -0,0 +1,532 @@ | |||||||
|  | /*- | ||||||
|  |  * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 | ||||||
|  |  *	The Regents of the University of California.  All rights reserved. | ||||||
|  |  * | ||||||
|  |  * This code is derived from the Stanford/CMU enet packet filter, | ||||||
|  |  * (net/enet.c) distributed as part of 4.3BSD, and code contributed | ||||||
|  |  * to Berkeley by Steven McCanne and Van Jacobson both of Lawrence  | ||||||
|  |  * Berkeley Laboratory. | ||||||
|  |  * | ||||||
|  |  * Redistribution and use in source and binary forms, with or without | ||||||
|  |  * modification, are permitted provided that the following conditions | ||||||
|  |  * are met: | ||||||
|  |  * 1. Redistributions of source code must retain the above copyright | ||||||
|  |  *    notice, this list of conditions and the following disclaimer. | ||||||
|  |  * 2. Redistributions in binary form must reproduce the above copyright | ||||||
|  |  *    notice, this list of conditions and the following disclaimer in the | ||||||
|  |  *    documentation and/or other materials provided with the distribution. | ||||||
|  |  * 3. All advertising materials mentioning features or use of this software | ||||||
|  |  *    must display the following acknowledgement: | ||||||
|  |  *	This product includes software developed by the University of | ||||||
|  |  *	California, Berkeley and its contributors. | ||||||
|  |  * 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. | ||||||
|  |  * | ||||||
|  |  *	@(#)bpf.c	7.5 (Berkeley) 7/15/91 | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | #if !(defined(lint) || defined(KERNEL)) | ||||||
|  | static const char rcsid[] = | ||||||
|  |     "@(#) $Header: /usr/local/cvs/linux/tools/build/e100boot/libpcap-0.4/bpf/net/bpf_filter.c,v 1.1 1999/08/26 10:07:57 johana Exp $ (LBL)"; | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #include <sys/param.h> | ||||||
|  | #include <sys/types.h> | ||||||
|  | #include <sys/time.h> | ||||||
|  | #include <net/bpf.h> | ||||||
|  |  | ||||||
|  | #ifndef KERNEL | ||||||
|  | #include <stdlib.h> | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #define int32 bpf_int32 | ||||||
|  | #define u_int32 bpf_u_int32 | ||||||
|  |  | ||||||
|  | #ifndef LBL_ALIGN | ||||||
|  | #if defined(sparc) || defined(mips) || defined(ibm032) || \ | ||||||
|  |     defined(__alpha) || defined(__hpux) | ||||||
|  | #define LBL_ALIGN | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #ifndef LBL_ALIGN | ||||||
|  | #include <netinet/in.h> | ||||||
|  |  | ||||||
|  | #define EXTRACT_SHORT(p)	((u_short)ntohs(*(u_short *)p)) | ||||||
|  | #define EXTRACT_LONG(p)		(ntohl(*(u_int32 *)p)) | ||||||
|  | #else | ||||||
|  | #define EXTRACT_SHORT(p)\ | ||||||
|  | 	((u_short)\ | ||||||
|  | 		((u_short)*((u_char *)p+0)<<8|\ | ||||||
|  | 		 (u_short)*((u_char *)p+1)<<0)) | ||||||
|  | #define EXTRACT_LONG(p)\ | ||||||
|  | 		((u_int32)*((u_char *)p+0)<<24|\ | ||||||
|  | 		 (u_int32)*((u_char *)p+1)<<16|\ | ||||||
|  | 		 (u_int32)*((u_char *)p+2)<<8|\ | ||||||
|  | 		 (u_int32)*((u_char *)p+3)<<0) | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #ifdef KERNEL | ||||||
|  | #include <sys/mbuf.h> | ||||||
|  | #define MINDEX(len, m, k) \ | ||||||
|  | { \ | ||||||
|  | 	len = m->m_len; \ | ||||||
|  | 	while (k >= len) { \ | ||||||
|  | 		k -= len; \ | ||||||
|  | 		m = m->m_next; \ | ||||||
|  | 		if (m == 0) \ | ||||||
|  | 			return 0; \ | ||||||
|  | 		len = m->m_len; \ | ||||||
|  | 	} \ | ||||||
|  | } | ||||||
|  |  | ||||||
|  | static int | ||||||
|  | m_xword(m, k, err) | ||||||
|  | 	register struct mbuf *m; | ||||||
|  | 	register int k, *err; | ||||||
|  | { | ||||||
|  | 	register int len; | ||||||
|  | 	register u_char *cp, *np; | ||||||
|  | 	register struct mbuf *m0; | ||||||
|  |  | ||||||
|  | 	MINDEX(len, m, k); | ||||||
|  | 	cp = mtod(m, u_char *) + k; | ||||||
|  | 	if (len - k >= 4) { | ||||||
|  | 		*err = 0; | ||||||
|  | 		return EXTRACT_LONG(cp); | ||||||
|  | 	} | ||||||
|  | 	m0 = m->m_next; | ||||||
|  | 	if (m0 == 0 || m0->m_len + len - k < 4) | ||||||
|  | 		goto bad; | ||||||
|  | 	*err = 0; | ||||||
|  | 	np = mtod(m0, u_char *); | ||||||
|  | 	switch (len - k) { | ||||||
|  |  | ||||||
|  | 	case 1: | ||||||
|  | 		return (cp[0] << 24) | (np[0] << 16) | (np[1] << 8) | np[2]; | ||||||
|  |  | ||||||
|  | 	case 2: | ||||||
|  | 		return (cp[0] << 24) | (cp[1] << 16) | (np[0] << 8) | np[1]; | ||||||
|  |  | ||||||
|  | 	default: | ||||||
|  | 		return (cp[0] << 24) | (cp[1] << 16) | (cp[2] << 8) | np[0]; | ||||||
|  | 	} | ||||||
|  |     bad: | ||||||
|  | 	*err = 1; | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | static int | ||||||
|  | m_xhalf(m, k, err) | ||||||
|  | 	register struct mbuf *m; | ||||||
|  | 	register int k, *err; | ||||||
|  | { | ||||||
|  | 	register int len; | ||||||
|  | 	register u_char *cp; | ||||||
|  | 	register struct mbuf *m0; | ||||||
|  |  | ||||||
|  | 	MINDEX(len, m, k); | ||||||
|  | 	cp = mtod(m, u_char *) + k; | ||||||
|  | 	if (len - k >= 2) { | ||||||
|  | 		*err = 0; | ||||||
|  | 		return EXTRACT_SHORT(cp); | ||||||
|  | 	} | ||||||
|  | 	m0 = m->m_next; | ||||||
|  | 	if (m0 == 0) | ||||||
|  | 		goto bad; | ||||||
|  | 	*err = 0; | ||||||
|  | 	return (cp[0] << 8) | mtod(m0, u_char *)[0]; | ||||||
|  |  bad: | ||||||
|  | 	*err = 1; | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * Execute the filter program starting at pc on the packet p | ||||||
|  |  * wirelen is the length of the original packet | ||||||
|  |  * buflen is the amount of data present | ||||||
|  |  */ | ||||||
|  | u_int | ||||||
|  | bpf_filter(pc, p, wirelen, buflen) | ||||||
|  | 	register struct bpf_insn *pc; | ||||||
|  | 	register u_char *p; | ||||||
|  | 	u_int wirelen; | ||||||
|  | 	register u_int buflen; | ||||||
|  | { | ||||||
|  | 	register u_int32 A, X; | ||||||
|  | 	register int k; | ||||||
|  | 	int32 mem[BPF_MEMWORDS]; | ||||||
|  |  | ||||||
|  | 	if (pc == 0) | ||||||
|  | 		/* | ||||||
|  | 		 * No filter means accept all. | ||||||
|  | 		 */ | ||||||
|  | 		return (u_int)-1; | ||||||
|  | 	A = 0; | ||||||
|  | 	X = 0; | ||||||
|  | 	--pc; | ||||||
|  | 	while (1) { | ||||||
|  | 		++pc; | ||||||
|  | 		switch (pc->code) { | ||||||
|  |  | ||||||
|  | 		default: | ||||||
|  | #ifdef KERNEL | ||||||
|  | 			return 0; | ||||||
|  | #else | ||||||
|  | 			abort(); | ||||||
|  | #endif			 | ||||||
|  | 		case BPF_RET|BPF_K: | ||||||
|  | 			return (u_int)pc->k; | ||||||
|  |  | ||||||
|  | 		case BPF_RET|BPF_A: | ||||||
|  | 			return (u_int)A; | ||||||
|  |  | ||||||
|  | 		case BPF_LD|BPF_W|BPF_ABS: | ||||||
|  | 			k = pc->k; | ||||||
|  | 			if (k + sizeof(int32) > buflen) { | ||||||
|  | #ifdef KERNEL | ||||||
|  | 				int merr; | ||||||
|  |  | ||||||
|  | 				if (buflen != 0) | ||||||
|  | 					return 0; | ||||||
|  | 				A = m_xword((struct mbuf *)p, k, &merr); | ||||||
|  | 				if (merr != 0) | ||||||
|  | 					return 0; | ||||||
|  | 				continue; | ||||||
|  | #else | ||||||
|  | 				return 0; | ||||||
|  | #endif | ||||||
|  | 			} | ||||||
|  | 			A = EXTRACT_LONG(&p[k]); | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_LD|BPF_H|BPF_ABS: | ||||||
|  | 			k = pc->k; | ||||||
|  | 			if (k + sizeof(short) > buflen) { | ||||||
|  | #ifdef KERNEL | ||||||
|  | 				int merr; | ||||||
|  |  | ||||||
|  | 				if (buflen != 0) | ||||||
|  | 					return 0; | ||||||
|  | 				A = m_xhalf((struct mbuf *)p, k, &merr); | ||||||
|  | 				continue; | ||||||
|  | #else | ||||||
|  | 				return 0; | ||||||
|  | #endif | ||||||
|  | 			} | ||||||
|  | 			A = EXTRACT_SHORT(&p[k]); | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_LD|BPF_B|BPF_ABS: | ||||||
|  | 			k = pc->k; | ||||||
|  | 			if (k >= buflen) { | ||||||
|  | #ifdef KERNEL | ||||||
|  | 				register struct mbuf *m; | ||||||
|  | 				register int len; | ||||||
|  |  | ||||||
|  | 				if (buflen != 0) | ||||||
|  | 					return 0; | ||||||
|  | 				m = (struct mbuf *)p; | ||||||
|  | 				MINDEX(len, m, k); | ||||||
|  | 				A = mtod(m, u_char *)[k]; | ||||||
|  | 				continue; | ||||||
|  | #else | ||||||
|  | 				return 0; | ||||||
|  | #endif | ||||||
|  | 			} | ||||||
|  | 			A = p[k]; | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_LD|BPF_W|BPF_LEN: | ||||||
|  | 			A = wirelen; | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_LDX|BPF_W|BPF_LEN: | ||||||
|  | 			X = wirelen; | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_LD|BPF_W|BPF_IND: | ||||||
|  | 			k = X + pc->k; | ||||||
|  | 			if (k + sizeof(int32) > buflen) { | ||||||
|  | #ifdef KERNEL | ||||||
|  | 				int merr; | ||||||
|  |  | ||||||
|  | 				if (buflen != 0) | ||||||
|  | 					return 0; | ||||||
|  | 				A = m_xword((struct mbuf *)p, k, &merr); | ||||||
|  | 				if (merr != 0) | ||||||
|  | 					return 0; | ||||||
|  | 				continue; | ||||||
|  | #else | ||||||
|  | 				return 0; | ||||||
|  | #endif | ||||||
|  | 			} | ||||||
|  | 			A = EXTRACT_LONG(&p[k]); | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_LD|BPF_H|BPF_IND: | ||||||
|  | 			k = X + pc->k; | ||||||
|  | 			if (k + sizeof(short) > buflen) { | ||||||
|  | #ifdef KERNEL | ||||||
|  | 				int merr; | ||||||
|  |  | ||||||
|  | 				if (buflen != 0) | ||||||
|  | 					return 0; | ||||||
|  | 				A = m_xhalf((struct mbuf *)p, k, &merr); | ||||||
|  | 				if (merr != 0) | ||||||
|  | 					return 0; | ||||||
|  | 				continue; | ||||||
|  | #else | ||||||
|  | 				return 0; | ||||||
|  | #endif | ||||||
|  | 			} | ||||||
|  | 			A = EXTRACT_SHORT(&p[k]); | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_LD|BPF_B|BPF_IND: | ||||||
|  | 			k = X + pc->k; | ||||||
|  | 			if (k >= buflen) { | ||||||
|  | #ifdef KERNEL | ||||||
|  | 				register struct mbuf *m; | ||||||
|  | 				register int len; | ||||||
|  |  | ||||||
|  | 				if (buflen != 0) | ||||||
|  | 					return 0; | ||||||
|  | 				m = (struct mbuf *)p; | ||||||
|  | 				MINDEX(len, m, k); | ||||||
|  | 				A = mtod(m, u_char *)[k]; | ||||||
|  | 				continue; | ||||||
|  | #else | ||||||
|  | 				return 0; | ||||||
|  | #endif | ||||||
|  | 			} | ||||||
|  | 			A = p[k]; | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_LDX|BPF_MSH|BPF_B: | ||||||
|  | 			k = pc->k; | ||||||
|  | 			if (k >= buflen) { | ||||||
|  | #ifdef KERNEL | ||||||
|  | 				register struct mbuf *m; | ||||||
|  | 				register int len; | ||||||
|  |  | ||||||
|  | 				if (buflen != 0) | ||||||
|  | 					return 0; | ||||||
|  | 				m = (struct mbuf *)p; | ||||||
|  | 				MINDEX(len, m, k); | ||||||
|  | 				X = (mtod(m, char *)[k] & 0xf) << 2; | ||||||
|  | 				continue; | ||||||
|  | #else | ||||||
|  | 				return 0; | ||||||
|  | #endif | ||||||
|  | 			} | ||||||
|  | 			X = (p[pc->k] & 0xf) << 2; | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_LD|BPF_IMM: | ||||||
|  | 			A = pc->k; | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_LDX|BPF_IMM: | ||||||
|  | 			X = pc->k; | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_LD|BPF_MEM: | ||||||
|  | 			A = mem[pc->k]; | ||||||
|  | 			continue; | ||||||
|  | 			 | ||||||
|  | 		case BPF_LDX|BPF_MEM: | ||||||
|  | 			X = mem[pc->k]; | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_ST: | ||||||
|  | 			mem[pc->k] = A; | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_STX: | ||||||
|  | 			mem[pc->k] = X; | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_JMP|BPF_JA: | ||||||
|  | 			pc += pc->k; | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_JMP|BPF_JGT|BPF_K: | ||||||
|  | 			pc += (A > pc->k) ? pc->jt : pc->jf; | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_JMP|BPF_JGE|BPF_K: | ||||||
|  | 			pc += (A >= pc->k) ? pc->jt : pc->jf; | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_JMP|BPF_JEQ|BPF_K: | ||||||
|  | 			pc += (A == pc->k) ? pc->jt : pc->jf; | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_JMP|BPF_JSET|BPF_K: | ||||||
|  | 			pc += (A & pc->k) ? pc->jt : pc->jf; | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_JMP|BPF_JGT|BPF_X: | ||||||
|  | 			pc += (A > X) ? pc->jt : pc->jf; | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_JMP|BPF_JGE|BPF_X: | ||||||
|  | 			pc += (A >= X) ? pc->jt : pc->jf; | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_JMP|BPF_JEQ|BPF_X: | ||||||
|  | 			pc += (A == X) ? pc->jt : pc->jf; | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_JMP|BPF_JSET|BPF_X: | ||||||
|  | 			pc += (A & X) ? pc->jt : pc->jf; | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_ALU|BPF_ADD|BPF_X: | ||||||
|  | 			A += X; | ||||||
|  | 			continue; | ||||||
|  | 			 | ||||||
|  | 		case BPF_ALU|BPF_SUB|BPF_X: | ||||||
|  | 			A -= X; | ||||||
|  | 			continue; | ||||||
|  | 			 | ||||||
|  | 		case BPF_ALU|BPF_MUL|BPF_X: | ||||||
|  | 			A *= X; | ||||||
|  | 			continue; | ||||||
|  | 			 | ||||||
|  | 		case BPF_ALU|BPF_DIV|BPF_X: | ||||||
|  | 			if (X == 0) | ||||||
|  | 				return 0; | ||||||
|  | 			A /= X; | ||||||
|  | 			continue; | ||||||
|  | 			 | ||||||
|  | 		case BPF_ALU|BPF_AND|BPF_X: | ||||||
|  | 			A &= X; | ||||||
|  | 			continue; | ||||||
|  | 			 | ||||||
|  | 		case BPF_ALU|BPF_OR|BPF_X: | ||||||
|  | 			A |= X; | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_ALU|BPF_LSH|BPF_X: | ||||||
|  | 			A <<= X; | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_ALU|BPF_RSH|BPF_X: | ||||||
|  | 			A >>= X; | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_ALU|BPF_ADD|BPF_K: | ||||||
|  | 			A += pc->k; | ||||||
|  | 			continue; | ||||||
|  | 			 | ||||||
|  | 		case BPF_ALU|BPF_SUB|BPF_K: | ||||||
|  | 			A -= pc->k; | ||||||
|  | 			continue; | ||||||
|  | 			 | ||||||
|  | 		case BPF_ALU|BPF_MUL|BPF_K: | ||||||
|  | 			A *= pc->k; | ||||||
|  | 			continue; | ||||||
|  | 			 | ||||||
|  | 		case BPF_ALU|BPF_DIV|BPF_K: | ||||||
|  | 			A /= pc->k; | ||||||
|  | 			continue; | ||||||
|  | 			 | ||||||
|  | 		case BPF_ALU|BPF_AND|BPF_K: | ||||||
|  | 			A &= pc->k; | ||||||
|  | 			continue; | ||||||
|  | 			 | ||||||
|  | 		case BPF_ALU|BPF_OR|BPF_K: | ||||||
|  | 			A |= pc->k; | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_ALU|BPF_LSH|BPF_K: | ||||||
|  | 			A <<= pc->k; | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_ALU|BPF_RSH|BPF_K: | ||||||
|  | 			A >>= pc->k; | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_ALU|BPF_NEG: | ||||||
|  | 			A = -A; | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_MISC|BPF_TAX: | ||||||
|  | 			X = A; | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		case BPF_MISC|BPF_TXA: | ||||||
|  | 			A = X; | ||||||
|  | 			continue; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #ifdef KERNEL | ||||||
|  | /* | ||||||
|  |  * Return true if the 'fcode' is a valid filter program. | ||||||
|  |  * The constraints are that each jump be forward and to a valid | ||||||
|  |  * code.  The code must terminate with either an accept or reject.  | ||||||
|  |  * 'valid' is an array for use by the routine (it must be at least | ||||||
|  |  * 'len' bytes long).   | ||||||
|  |  * | ||||||
|  |  * The kernel needs to be able to verify an application's filter code. | ||||||
|  |  * Otherwise, a bogus program could easily crash the system. | ||||||
|  |  */ | ||||||
|  | int | ||||||
|  | bpf_validate(f, len) | ||||||
|  | 	struct bpf_insn *f; | ||||||
|  | 	int len; | ||||||
|  | { | ||||||
|  | 	register int i; | ||||||
|  | 	register struct bpf_insn *p; | ||||||
|  |  | ||||||
|  | 	for (i = 0; i < len; ++i) { | ||||||
|  | 		/* | ||||||
|  | 		 * Check that that jumps are forward, and within  | ||||||
|  | 		 * the code block. | ||||||
|  | 		 */ | ||||||
|  | 		p = &f[i]; | ||||||
|  | 		if (BPF_CLASS(p->code) == BPF_JMP) { | ||||||
|  | 			register int from = i + 1; | ||||||
|  |  | ||||||
|  | 			if (BPF_OP(p->code) == BPF_JA) { | ||||||
|  | 				if (from + p->k >= (unsigned)len) | ||||||
|  | 					return 0; | ||||||
|  | 			} | ||||||
|  | 			else if (from + p->jt >= len || from + p->jf >= len) | ||||||
|  | 				return 0; | ||||||
|  | 		} | ||||||
|  | 		/* | ||||||
|  | 		 * Check that memory operations use valid addresses. | ||||||
|  | 		 */ | ||||||
|  | 		if ((BPF_CLASS(p->code) == BPF_ST || | ||||||
|  | 		     (BPF_CLASS(p->code) == BPF_LD &&  | ||||||
|  | 		      (p->code & 0xe0) == BPF_MEM)) && | ||||||
|  | 		    (p->k >= BPF_MEMWORDS || p->k < 0)) | ||||||
|  | 			return 0; | ||||||
|  | 		/* | ||||||
|  | 		 * Check for constant division by 0. | ||||||
|  | 		 */ | ||||||
|  | 		if (p->code == (BPF_ALU|BPF_DIV|BPF_K) && p->k == 0) | ||||||
|  | 			return 0; | ||||||
|  | 	} | ||||||
|  | 	return BPF_CLASS(f[len - 1].code) == BPF_RET; | ||||||
|  | } | ||||||
|  | #endif | ||||||
| @@ -0,0 +1 @@ | |||||||
|  | bpf/net/bpf_filter.c | ||||||
| @@ -0,0 +1,288 @@ | |||||||
|  | /* | ||||||
|  |  * Copyright (c) 1990, 1991, 1992, 1994, 1995, 1996 | ||||||
|  |  *	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: (1) source code distributions | ||||||
|  |  * retain the above copyright notice and this paragraph in its entirety, (2) | ||||||
|  |  * distributions including binary code include the above copyright notice and | ||||||
|  |  * this paragraph in its entirety in the documentation or other materials | ||||||
|  |  * provided with the distribution, and (3) all advertising materials mentioning | ||||||
|  |  * features or use of this software display the following acknowledgement: | ||||||
|  |  * ``This product includes software developed by the University of California, | ||||||
|  |  * Lawrence Berkeley Laboratory and its contributors.'' 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 ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED | ||||||
|  |  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF | ||||||
|  |  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | #ifndef lint | ||||||
|  | static const char rcsid[] = | ||||||
|  |     "@(#) $Header: /usr/local/cvs/linux/tools/build/e100boot/libpcap-0.4/bpf_image.c,v 1.1 1999/08/26 10:05:20 johana Exp $ (LBL)"; | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #include <sys/types.h> | ||||||
|  | #include <sys/time.h> | ||||||
|  |  | ||||||
|  | #include <stdio.h> | ||||||
|  | #include <string.h> | ||||||
|  |  | ||||||
|  | #include "pcap-int.h" | ||||||
|  |  | ||||||
|  | #include "gnuc.h" | ||||||
|  | #ifdef HAVE_OS_PROTO_H | ||||||
|  | #include "os-proto.h" | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | char * | ||||||
|  | bpf_image(p, n) | ||||||
|  | 	struct bpf_insn *p; | ||||||
|  | 	int n; | ||||||
|  | { | ||||||
|  | 	int v; | ||||||
|  | 	char *fmt, *op; | ||||||
|  | 	static char image[256]; | ||||||
|  | 	char operand[64]; | ||||||
|  |  | ||||||
|  | 	v = p->k; | ||||||
|  | 	switch (p->code) { | ||||||
|  |  | ||||||
|  | 	default: | ||||||
|  | 		op = "unimp"; | ||||||
|  | 		fmt = "0x%x"; | ||||||
|  | 		v = p->code; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_RET|BPF_K: | ||||||
|  | 		op = "ret"; | ||||||
|  | 		fmt = "#%d"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_RET|BPF_A: | ||||||
|  | 		op = "ret"; | ||||||
|  | 		fmt = ""; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_LD|BPF_W|BPF_ABS: | ||||||
|  | 		op = "ld"; | ||||||
|  | 		fmt = "[%d]"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_LD|BPF_H|BPF_ABS: | ||||||
|  | 		op = "ldh"; | ||||||
|  | 		fmt = "[%d]"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_LD|BPF_B|BPF_ABS: | ||||||
|  | 		op = "ldb"; | ||||||
|  | 		fmt = "[%d]"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_LD|BPF_W|BPF_LEN: | ||||||
|  | 		op = "ld"; | ||||||
|  | 		fmt = "#pktlen"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_LD|BPF_W|BPF_IND: | ||||||
|  | 		op = "ld"; | ||||||
|  | 		fmt = "[x + %d]"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_LD|BPF_H|BPF_IND: | ||||||
|  | 		op = "ldh"; | ||||||
|  | 		fmt = "[x + %d]"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_LD|BPF_B|BPF_IND: | ||||||
|  | 		op = "ldb"; | ||||||
|  | 		fmt = "[x + %d]"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_LD|BPF_IMM: | ||||||
|  | 		op = "ld"; | ||||||
|  | 		fmt = "#0x%x"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_LDX|BPF_IMM: | ||||||
|  | 		op = "ldx"; | ||||||
|  | 		fmt = "#0x%x"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_LDX|BPF_MSH|BPF_B: | ||||||
|  | 		op = "ldxb"; | ||||||
|  | 		fmt = "4*([%d]&0xf)"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_LD|BPF_MEM: | ||||||
|  | 		op = "ld"; | ||||||
|  | 		fmt = "M[%d]"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_LDX|BPF_MEM: | ||||||
|  | 		op = "ldx"; | ||||||
|  | 		fmt = "M[%d]"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_ST: | ||||||
|  | 		op = "st"; | ||||||
|  | 		fmt = "M[%d]"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_STX: | ||||||
|  | 		op = "stx"; | ||||||
|  | 		fmt = "M[%d]"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_JMP|BPF_JA: | ||||||
|  | 		op = "ja"; | ||||||
|  | 		fmt = "%d"; | ||||||
|  | 		v = n + 1 + p->k; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_JMP|BPF_JGT|BPF_K: | ||||||
|  | 		op = "jgt"; | ||||||
|  | 		fmt = "#0x%x"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_JMP|BPF_JGE|BPF_K: | ||||||
|  | 		op = "jge"; | ||||||
|  | 		fmt = "#0x%x"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_JMP|BPF_JEQ|BPF_K: | ||||||
|  | 		op = "jeq"; | ||||||
|  | 		fmt = "#0x%x"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_JMP|BPF_JSET|BPF_K: | ||||||
|  | 		op = "jset"; | ||||||
|  | 		fmt = "#0x%x"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_JMP|BPF_JGT|BPF_X: | ||||||
|  | 		op = "jgt"; | ||||||
|  | 		fmt = "x"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_JMP|BPF_JGE|BPF_X: | ||||||
|  | 		op = "jge"; | ||||||
|  | 		fmt = "x"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_JMP|BPF_JEQ|BPF_X: | ||||||
|  | 		op = "jeq"; | ||||||
|  | 		fmt = "x"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_JMP|BPF_JSET|BPF_X: | ||||||
|  | 		op = "jset"; | ||||||
|  | 		fmt = "x"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_ALU|BPF_ADD|BPF_X: | ||||||
|  | 		op = "add"; | ||||||
|  | 		fmt = "x"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_ALU|BPF_SUB|BPF_X: | ||||||
|  | 		op = "sub"; | ||||||
|  | 		fmt = "x"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_ALU|BPF_MUL|BPF_X: | ||||||
|  | 		op = "mul"; | ||||||
|  | 		fmt = "x"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_ALU|BPF_DIV|BPF_X: | ||||||
|  | 		op = "div"; | ||||||
|  | 		fmt = "x"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_ALU|BPF_AND|BPF_X: | ||||||
|  | 		op = "and"; | ||||||
|  | 		fmt = "x"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_ALU|BPF_OR|BPF_X: | ||||||
|  | 		op = "or"; | ||||||
|  | 		fmt = "x"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_ALU|BPF_LSH|BPF_X: | ||||||
|  | 		op = "lsh"; | ||||||
|  | 		fmt = "x"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_ALU|BPF_RSH|BPF_X: | ||||||
|  | 		op = "rsh"; | ||||||
|  | 		fmt = "x"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_ALU|BPF_ADD|BPF_K: | ||||||
|  | 		op = "add"; | ||||||
|  | 		fmt = "#%d"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_ALU|BPF_SUB|BPF_K: | ||||||
|  | 		op = "sub"; | ||||||
|  | 		fmt = "#%d"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_ALU|BPF_MUL|BPF_K: | ||||||
|  | 		op = "mul"; | ||||||
|  | 		fmt = "#%d"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_ALU|BPF_DIV|BPF_K: | ||||||
|  | 		op = "div"; | ||||||
|  | 		fmt = "#%d"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_ALU|BPF_AND|BPF_K: | ||||||
|  | 		op = "and"; | ||||||
|  | 		fmt = "#0x%x"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_ALU|BPF_OR|BPF_K: | ||||||
|  | 		op = "or"; | ||||||
|  | 		fmt = "#0x%x"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_ALU|BPF_LSH|BPF_K: | ||||||
|  | 		op = "lsh"; | ||||||
|  | 		fmt = "#%d"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_ALU|BPF_RSH|BPF_K: | ||||||
|  | 		op = "rsh"; | ||||||
|  | 		fmt = "#%d"; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_ALU|BPF_NEG: | ||||||
|  | 		op = "neg"; | ||||||
|  | 		fmt = ""; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_MISC|BPF_TAX: | ||||||
|  | 		op = "tax"; | ||||||
|  | 		fmt = ""; | ||||||
|  | 		break; | ||||||
|  |  | ||||||
|  | 	case BPF_MISC|BPF_TXA: | ||||||
|  | 		op = "txa"; | ||||||
|  | 		fmt = ""; | ||||||
|  | 		break; | ||||||
|  | 	} | ||||||
|  | 	(void)sprintf(operand, fmt, v); | ||||||
|  | 	(void)sprintf(image, | ||||||
|  | 		      (BPF_CLASS(p->code) == BPF_JMP && | ||||||
|  | 		       BPF_OP(p->code) != BPF_JA) ? | ||||||
|  | 		      "(%03d) %-8s %-16s jt %d\tjf %d" | ||||||
|  | 		      : "(%03d) %-8s %s", | ||||||
|  | 		      n, op, operand, n + 1 + p->jt, n + 1 + p->jf); | ||||||
|  | 	return image; | ||||||
|  | } | ||||||
| @@ -0,0 +1,35 @@ | |||||||
|  | # 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. | ||||||
|  | # | ||||||
|  | # 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. | ||||||
|  | # | ||||||
|  | ac_cv_func_ether_hostton=${ac_cv_func_ether_hostton=yes} | ||||||
|  | ac_cv_func_strerror=${ac_cv_func_strerror=yes} | ||||||
|  | ac_cv_header_malloc_h=${ac_cv_header_malloc_h=yes} | ||||||
|  | ac_cv_header_net_if_arp_h=${ac_cv_header_net_if_arp_h=yes} | ||||||
|  | ac_cv_header_sys_ioccom_h=${ac_cv_header_sys_ioccom_h=no} | ||||||
|  | ac_cv_header_sys_sockio_h=${ac_cv_header_sys_sockio_h=no} | ||||||
|  | ac_cv_lbl_flex_v24=${ac_cv_lbl_flex_v24=yes} | ||||||
|  | ac_cv_lbl_gcc_fixincludes=${ac_cv_lbl_gcc_fixincludes=yes} | ||||||
|  | ac_cv_lbl_gcc_vers=${ac_cv_lbl_gcc_vers=4} | ||||||
|  | ac_cv_lbl_sockaddr_has_sa_len=${ac_cv_lbl_sockaddr_has_sa_len=no} | ||||||
|  | ac_cv_lbl_unaligned_fail=${ac_cv_lbl_unaligned_fail=no} | ||||||
|  | ac_cv_linux_vers=${ac_cv_linux_vers=2} | ||||||
|  | ac_cv_prog_CC=${ac_cv_prog_CC=gcc} | ||||||
|  | ac_cv_prog_CPP=${ac_cv_prog_CPP='gcc -E'} | ||||||
|  | ac_cv_prog_V_LEX=${ac_cv_prog_V_LEX=flex} | ||||||
|  | ac_cv_prog_V_RANLIB=${ac_cv_prog_V_RANLIB=ranlib} | ||||||
|  | ac_cv_prog_V_YACC=${ac_cv_prog_V_YACC=bison} | ||||||
|  | ac_cv_prog_cc_cross=${ac_cv_prog_cc_cross=no} | ||||||
|  | ac_cv_prog_cc_g=${ac_cv_prog_cc_g=yes} | ||||||
|  | ac_cv_prog_cc_works=${ac_cv_prog_cc_works=yes} | ||||||
|  | ac_cv_prog_gcc=${ac_cv_prog_gcc=yes} | ||||||
							
								
								
									
										693
									
								
								target/linux/etrax-2.6/image/e100boot/src/libpcap-0.4/config.guess
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										693
									
								
								target/linux/etrax-2.6/image/e100boot/src/libpcap-0.4/config.guess
									
									
									
									
										vendored
									
									
										Executable file
									
								
							| @@ -0,0 +1,693 @@ | |||||||
|  | #! /bin/sh | ||||||
|  | # Attempt to guess a canonical system name. | ||||||
|  | #   Copyright (C) 1992, 93, 94, 95, 1996 Free Software Foundation, Inc. | ||||||
|  | # | ||||||
|  | # This file is free software; you can redistribute it and/or modify it | ||||||
|  | # under the terms of the GNU General Public License as published by | ||||||
|  | # the Free Software Foundation; either version 2 of the License, or | ||||||
|  | # (at your option) any later version. | ||||||
|  | # | ||||||
|  | # This program is distributed in the hope that it will be useful, but | ||||||
|  | # WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||||
|  | # General Public License for more details. | ||||||
|  | # | ||||||
|  | # You should have received a copy of the GNU General Public License | ||||||
|  | # along with this program; if not, write to the Free Software | ||||||
|  | # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||||||
|  | # | ||||||
|  | # 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. | ||||||
|  |  | ||||||
|  | # Written by Per Bothner <bothner@cygnus.com>. | ||||||
|  | # The master version of this file is at the FSF in /home/gd/gnu/lib. | ||||||
|  | # | ||||||
|  | # 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). | ||||||
|  | # | ||||||
|  |  | ||||||
|  | # This is needed to find uname on a Pyramid OSx when run in the BSD universe. | ||||||
|  | # (ghazi@noc.rutgers.edu 8/24/94.) | ||||||
|  | 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_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 | ||||||
|  |     alpha:OSF1:*:*) | ||||||
|  | 	# 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. | ||||||
|  | 	echo alpha-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//'` | ||||||
|  | 	exit 0 ;; | ||||||
|  |     21064:Windows_NT:50:3) | ||||||
|  | 	echo alpha-dec-winnt3.5 | ||||||
|  | 	exit 0 ;; | ||||||
|  |     Amiga*:UNIX_System_V:4.0:*) | ||||||
|  | 	echo m68k-cbm-sysv4 | ||||||
|  | 	exit 0;; | ||||||
|  |     amiga:NetBSD:*:*) | ||||||
|  |       echo m68k-cbm-netbsd${UNAME_RELEASE} | ||||||
|  |       exit 0 ;; | ||||||
|  |     amiga:OpenBSD:*:*) | ||||||
|  |       echo m68k-cbm-openbsd${UNAME_RELEASE} | ||||||
|  |       exit 0 ;; | ||||||
|  |     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) | ||||||
|  | 	echo arm-acorn-riscix${UNAME_RELEASE} | ||||||
|  | 	exit 0;; | ||||||
|  |     Pyramid*:OSx*:*:*|MIS*: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 | ||||||
|  | 	else | ||||||
|  | 		echo pyramid-pyramid-bsd | ||||||
|  | 	fi | ||||||
|  | 	exit 0 ;; | ||||||
|  |     NILE:*:*:dcosx) | ||||||
|  | 	echo pyramid-pyramid-svr4 | ||||||
|  | 	exit 0 ;; | ||||||
|  |     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) | ||||||
|  | 	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` | ||||||
|  | 	exit 0 ;; | ||||||
|  |     i86pc:SunOS:5.*:*) | ||||||
|  | 	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` | ||||||
|  | 	exit 0 ;; | ||||||
|  |     sun4*:SunOS:6*:*) | ||||||
|  | 	# According to config.sub, this is the proper way to canonicalize | ||||||
|  | 	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but | ||||||
|  | 	# it's likely to be more like Solaris than SunOS4. | ||||||
|  | 	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` | ||||||
|  | 	exit 0 ;; | ||||||
|  |     sun4*:SunOS:*:*) | ||||||
|  | 	case "`/usr/bin/arch -k`" in | ||||||
|  | 	    Series*|S4*) | ||||||
|  | 		UNAME_RELEASE=`uname -v` | ||||||
|  | 		;; | ||||||
|  | 	esac | ||||||
|  | 	# Japanese Language versions have a version number like `4.1.3-JL'. | ||||||
|  | 	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` | ||||||
|  | 	exit 0 ;; | ||||||
|  |     sun3*:SunOS:*:*) | ||||||
|  | 	echo m68k-sun-sunos${UNAME_RELEASE} | ||||||
|  | 	exit 0 ;; | ||||||
|  |     aushp:SunOS:*:*) | ||||||
|  | 	echo sparc-auspex-sunos${UNAME_RELEASE} | ||||||
|  | 	exit 0 ;; | ||||||
|  |     atari*:NetBSD:*:*) | ||||||
|  | 	echo m68k-atari-netbsd${UNAME_RELEASE} | ||||||
|  | 	exit 0 ;; | ||||||
|  |     atari*:OpenBSD:*:*) | ||||||
|  | 	echo m68k-atari-openbsd${UNAME_RELEASE} | ||||||
|  | 	exit 0 ;; | ||||||
|  |     sun3*:NetBSD:*:*) | ||||||
|  | 	echo m68k-sun-netbsd${UNAME_RELEASE} | ||||||
|  | 	exit 0 ;; | ||||||
|  |     sun3*:OpenBSD:*:*) | ||||||
|  | 	echo m68k-sun-openbsd${UNAME_RELEASE} | ||||||
|  | 	exit 0 ;; | ||||||
|  |     mac68k:NetBSD:*:*) | ||||||
|  | 	echo m68k-apple-netbsd${UNAME_RELEASE} | ||||||
|  | 	exit 0 ;; | ||||||
|  |     mac68k:OpenBSD:*:*) | ||||||
|  | 	echo m68k-apple-openbsd${UNAME_RELEASE} | ||||||
|  | 	exit 0 ;; | ||||||
|  |     powerpc:machten:*:*) | ||||||
|  | 	echo powerpc-apple-machten${UNAME_RELEASE} | ||||||
|  | 	exit 0 ;; | ||||||
|  |     RISC*:Mach:*:*) | ||||||
|  | 	echo mips-dec-mach_bsd4.3 | ||||||
|  | 	exit 0 ;; | ||||||
|  |     RISC*:ULTRIX:*:*) | ||||||
|  | 	echo mips-dec-ultrix${UNAME_RELEASE} | ||||||
|  | 	exit 0 ;; | ||||||
|  |     VAX*:ULTRIX*:*:*) | ||||||
|  | 	echo vax-dec-ultrix${UNAME_RELEASE} | ||||||
|  | 	exit 0 ;; | ||||||
|  |     mips:*:*:UMIPS | mips:*:*:RISCos) | ||||||
|  | 	sed 's/^	//' << EOF >dummy.c | ||||||
|  | 	int main (argc, argv) int argc; char **argv; { | ||||||
|  | 	#if defined (host_mips) && defined (MIPSEB) | ||||||
|  | 	#if defined (SYSTYPE_SYSV) | ||||||
|  | 	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); | ||||||
|  | 	#endif | ||||||
|  | 	#if defined (SYSTYPE_SVR4) | ||||||
|  | 	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); | ||||||
|  | 	#endif | ||||||
|  | 	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) | ||||||
|  | 	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); | ||||||
|  | 	#endif | ||||||
|  | 	#endif | ||||||
|  | 	  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 | ||||||
|  | 	echo mips-mips-riscos${UNAME_RELEASE} | ||||||
|  | 	exit 0 ;; | ||||||
|  |     Night_Hawk:Power_UNIX:*:*) | ||||||
|  | 	echo powerpc-harris-powerunix | ||||||
|  | 	exit 0 ;; | ||||||
|  |     m88k:CX/UX:7*:*) | ||||||
|  | 	echo m88k-harris-cxux7 | ||||||
|  | 	exit 0 ;; | ||||||
|  |     m88k:*:4*:R4*) | ||||||
|  | 	echo m88k-motorola-sysv4 | ||||||
|  | 	exit 0 ;; | ||||||
|  |     m88k:*:3*:R3*) | ||||||
|  | 	echo m88k-motorola-sysv3 | ||||||
|  | 	exit 0 ;; | ||||||
|  |     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 | ||||||
|  | 		echo m88k-dg-dgux${UNAME_RELEASE} | ||||||
|  | 	else | ||||||
|  | 		echo m88k-dg-dguxbcs${UNAME_RELEASE} | ||||||
|  | 	fi | ||||||
|  |         else echo i586-dg-dgux${UNAME_RELEASE} | ||||||
|  |         fi | ||||||
|  |  	exit 0 ;; | ||||||
|  |     M88*:DolphinOS:*:*)	# DolphinOS (SVR3) | ||||||
|  | 	echo m88k-dolphin-sysv3 | ||||||
|  | 	exit 0 ;; | ||||||
|  |     M88*:*:R3*:*) | ||||||
|  | 	# Delta 88k system running SVR3 | ||||||
|  | 	echo m88k-motorola-sysv3 | ||||||
|  | 	exit 0 ;; | ||||||
|  |     XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) | ||||||
|  | 	echo m88k-tektronix-sysv3 | ||||||
|  | 	exit 0 ;; | ||||||
|  |     Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) | ||||||
|  | 	echo m68k-tektronix-bsd | ||||||
|  | 	exit 0 ;; | ||||||
|  |     *:IRIX*:*:*) | ||||||
|  | 	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` | ||||||
|  | 	exit 0 ;; | ||||||
|  |     ????????: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:*:*) | ||||||
|  | 	echo i386-ibm-aix | ||||||
|  | 	exit 0 ;; | ||||||
|  |     *:AIX:2:3) | ||||||
|  | 	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then | ||||||
|  | 		sed 's/^		//' << EOF >dummy.c | ||||||
|  | 		#include <sys/systemcfg.h> | ||||||
|  |  | ||||||
|  | 		main() | ||||||
|  | 			{ | ||||||
|  | 			if (!__power_pc()) | ||||||
|  | 				exit(1); | ||||||
|  | 			puts("powerpc-ibm-aix3.2.5"); | ||||||
|  | 			exit(0); | ||||||
|  | 			} | ||||||
|  | EOF | ||||||
|  | 		${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 | ||||||
|  | 		rm -f dummy.c dummy | ||||||
|  | 		echo rs6000-ibm-aix3.2.5 | ||||||
|  | 	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then | ||||||
|  | 		echo rs6000-ibm-aix3.2.4 | ||||||
|  | 	else | ||||||
|  | 		echo rs6000-ibm-aix3.2 | ||||||
|  | 	fi | ||||||
|  | 	exit 0 ;; | ||||||
|  |     *:AIX:*:4) | ||||||
|  | 	if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then | ||||||
|  | 		IBM_ARCH=rs6000 | ||||||
|  | 	else | ||||||
|  | 		IBM_ARCH=powerpc | ||||||
|  | 	fi | ||||||
|  | 	if [ -x /usr/bin/oslevel ] ; then | ||||||
|  | 		IBM_REV=`/usr/bin/oslevel` | ||||||
|  | 	else | ||||||
|  | 		IBM_REV=4.${UNAME_RELEASE} | ||||||
|  | 	fi | ||||||
|  | 	echo ${IBM_ARCH}-ibm-aix${IBM_REV} | ||||||
|  | 	exit 0 ;; | ||||||
|  |     *:AIX:*:*) | ||||||
|  | 	echo rs6000-ibm-aix | ||||||
|  | 	exit 0 ;; | ||||||
|  |     ibmrt:4.4BSD:*|romp-ibm:BSD:*) | ||||||
|  | 	echo romp-ibm-bsd4.4 | ||||||
|  | 	exit 0 ;; | ||||||
|  |     ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC NetBSD and | ||||||
|  | 	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to | ||||||
|  | 	exit 0 ;;                           # report: romp-ibm BSD 4.3 | ||||||
|  |     *:BOSX:*:*) | ||||||
|  | 	echo rs6000-bull-bosx | ||||||
|  | 	exit 0 ;; | ||||||
|  |     DPX/2?00:B.O.S.:*:*) | ||||||
|  | 	echo m68k-bull-sysv3 | ||||||
|  | 	exit 0 ;; | ||||||
|  |     9000/[34]??:4.3bsd:1.*:*) | ||||||
|  | 	echo m68k-hp-bsd | ||||||
|  | 	exit 0 ;; | ||||||
|  |     hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) | ||||||
|  | 	echo m68k-hp-bsd4.4 | ||||||
|  | 	exit 0 ;; | ||||||
|  |     9000/[3478]??:HP-UX:*:*) | ||||||
|  | 	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 ;; | ||||||
|  | 	esac | ||||||
|  | 	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` | ||||||
|  | 	echo ${HP_ARCH}-hp-hpux${HPUX_REV} | ||||||
|  | 	exit 0 ;; | ||||||
|  |     3050*:HI-UX:*:*) | ||||||
|  | 	sed 's/^	//' << EOF >dummy.c | ||||||
|  | 	#include <unistd.h> | ||||||
|  | 	int | ||||||
|  | 	main () | ||||||
|  | 	{ | ||||||
|  | 	  long cpu = sysconf (_SC_CPU_VERSION); | ||||||
|  | 	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns | ||||||
|  | 	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct | ||||||
|  | 	     results, however.  */ | ||||||
|  | 	  if (CPU_IS_PA_RISC (cpu)) | ||||||
|  | 	    { | ||||||
|  | 	      switch (cpu) | ||||||
|  | 		{ | ||||||
|  | 		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; | ||||||
|  | 		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; | ||||||
|  | 		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; | ||||||
|  | 		  default: puts ("hppa-hitachi-hiuxwe2"); break; | ||||||
|  | 		} | ||||||
|  | 	    } | ||||||
|  | 	  else if (CPU_IS_HP_MC68K (cpu)) | ||||||
|  | 	    puts ("m68k-hitachi-hiuxwe2"); | ||||||
|  | 	  else puts ("unknown-hitachi-hiuxwe2"); | ||||||
|  | 	  exit (0); | ||||||
|  | 	} | ||||||
|  | EOF | ||||||
|  | 	${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 | ||||||
|  | 	rm -f dummy.c dummy | ||||||
|  | 	echo unknown-hitachi-hiuxwe2 | ||||||
|  | 	exit 0 ;; | ||||||
|  |     9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) | ||||||
|  | 	echo hppa1.1-hp-bsd | ||||||
|  | 	exit 0 ;; | ||||||
|  |     9000/8??:4.3bsd:*:*) | ||||||
|  | 	echo hppa1.0-hp-bsd | ||||||
|  | 	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:*:*) | ||||||
|  | 	if [ -x /usr/sbin/sysversion ] ; then | ||||||
|  | 	    echo ${UNAME_MACHINE}-unknown-osf1mk | ||||||
|  | 	else | ||||||
|  | 	    echo ${UNAME_MACHINE}-unknown-osf1 | ||||||
|  | 	fi | ||||||
|  | 	exit 0 ;; | ||||||
|  |     parisc*:Lites*:*:*) | ||||||
|  | 	echo hppa1.1-hp-lites | ||||||
|  | 	exit 0 ;; | ||||||
|  |     C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) | ||||||
|  | 	echo c1-convex-bsd | ||||||
|  |         exit 0 ;; | ||||||
|  |     C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) | ||||||
|  | 	if getsysinfo -f scalar_acc | ||||||
|  | 	then echo c32-convex-bsd | ||||||
|  | 	else echo c2-convex-bsd | ||||||
|  | 	fi | ||||||
|  |         exit 0 ;; | ||||||
|  |     C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) | ||||||
|  | 	echo c34-convex-bsd | ||||||
|  |         exit 0 ;; | ||||||
|  |     C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) | ||||||
|  | 	echo c38-convex-bsd | ||||||
|  |         exit 0 ;; | ||||||
|  |     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} | ||||||
|  | 	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/ | ||||||
|  | 	exit 0 ;; | ||||||
|  |     CRAY*TS:*:*:*) | ||||||
|  | 	echo t90-cray-unicos${UNAME_RELEASE} | ||||||
|  | 	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/\///'` | ||||||
|  |         FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` | ||||||
|  |         echo "f300-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 ;; | ||||||
|  |     hp3[0-9][05]:OpenBSD:*:*) | ||||||
|  | 	echo m68k-hp-openbsd${UNAME_RELEASE} | ||||||
|  | 	exit 0 ;; | ||||||
|  |     i?86:BSD/386:*:* | *:BSD/OS:*:*) | ||||||
|  | 	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} | ||||||
|  | 	exit 0 ;; | ||||||
|  |     *:FreeBSD:*:*) | ||||||
|  | 	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/[-_].*/\./'` | ||||||
|  | 	exit 0 ;; | ||||||
|  |     i*:CYGWIN*:*) | ||||||
|  | 	echo i386-pc-cygwin32 | ||||||
|  | 	exit 0 ;; | ||||||
|  |     p*:CYGWIN*:*) | ||||||
|  | 	echo powerpcle-unknown-cygwin32 | ||||||
|  | 	exit 0 ;; | ||||||
|  |     prep*:SunOS:5.*:*) | ||||||
|  | 	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` | ||||||
|  | 	exit 0 ;; | ||||||
|  |     *:GNU:*:*) | ||||||
|  | 	echo `echo ${UNAME_MACHINE}|sed -e 's,/.*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` | ||||||
|  | 	exit 0 ;; | ||||||
|  |     *: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` | ||||||
|  | 	if echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf_i.86"; then | ||||||
|  | 	  echo "${UNAME_MACHINE}-pc-linux-gnu" ; exit 0 | ||||||
|  | 	elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i.86linux"; then | ||||||
|  | 	  echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 | ||||||
|  | 	elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i.86coff"; then | ||||||
|  | 	  echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 | ||||||
|  | 	elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68kelf"; then | ||||||
|  | 	  echo "${UNAME_MACHINE}-unknown-linux-gnu" ; exit 0 | ||||||
|  | 	elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68klinux"; then | ||||||
|  | 	  echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 | ||||||
|  | 	elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf32ppc"; then | ||||||
|  | 	  echo "powerpc-unknown-linux-gnu" ; exit 0 | ||||||
|  | 	elif test "${UNAME_MACHINE}" = "alpha" ; then | ||||||
|  | 	  echo alpha-unknown-linux-gnu ; exit 0 | ||||||
|  | 	elif test "${UNAME_MACHINE}" = "sparc" ; then | ||||||
|  | 	  echo sparc-unknown-linux-gnu ; exit 0 | ||||||
|  | 	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. | ||||||
|  | 	  test ! -d /usr/lib/ldscripts/. \ | ||||||
|  | 	    && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0 | ||||||
|  | 	  # Determine whether the default compiler is a.out or elf | ||||||
|  | 	  cat >dummy.c <<EOF | ||||||
|  | main(argc, argv) | ||||||
|  | int argc; | ||||||
|  | char *argv[]; | ||||||
|  | { | ||||||
|  | #ifdef __ELF__ | ||||||
|  |   printf ("%s-pc-linux-gnu\n", argv[1]); | ||||||
|  | #else | ||||||
|  |   printf ("%s-pc-linux-gnuaout\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 | ||||||
|  | 	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*:*) | ||||||
|  | 	echo i386-sequent-sysv4 | ||||||
|  | 	exit 0 ;; | ||||||
|  |     i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*) | ||||||
|  | 	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then | ||||||
|  | 		echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE} | ||||||
|  | 	else | ||||||
|  | 		echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} | ||||||
|  | 	fi | ||||||
|  | 	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_MACHINE=i586 | ||||||
|  | 		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL | ||||||
|  | 	else | ||||||
|  | 		echo ${UNAME_MACHINE}-pc-sysv32 | ||||||
|  | 	fi | ||||||
|  | 	exit 0 ;; | ||||||
|  |     Intel:Mach:3*:*) | ||||||
|  | 	echo i386-pc-mach3 | ||||||
|  | 	exit 0 ;; | ||||||
|  |     paragon:*:*:*) | ||||||
|  | 	echo i860-intel-osf1 | ||||||
|  | 	exit 0 ;; | ||||||
|  |     i860:*:4.*:*) # i860-SVR4 | ||||||
|  | 	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then | ||||||
|  | 	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 | ||||||
|  | 	else # Add other i860-SVR4 vendors below as they are discovered. | ||||||
|  | 	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4 | ||||||
|  | 	fi | ||||||
|  | 	exit 0 ;; | ||||||
|  |     mini*:CTIX:SYS*5:*) | ||||||
|  | 	# "miniframe" | ||||||
|  | 	echo m68010-convergent-sysv | ||||||
|  | 	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) | ||||||
|  | 	OS_REL='' | ||||||
|  | 	test -r /etc/.relid \ | ||||||
|  | 	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` | ||||||
|  | 	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \ | ||||||
|  | 	  && echo i486-ncr-sysv4.3${OS_REL} && exit 0 | ||||||
|  | 	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ | ||||||
|  | 	  && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; | ||||||
|  |     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.*:*) | ||||||
|  | 	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.*:*) | ||||||
|  | 	echo rs6000-unknown-lynxos${UNAME_RELEASE} | ||||||
|  | 	exit 0 ;; | ||||||
|  |     SM[BE]S:UNIX_SV:*:*) | ||||||
|  | 	echo mips-dde-sysv${UNAME_RELEASE} | ||||||
|  | 	exit 0 ;; | ||||||
|  |     RM*:SINIX-*:*:*) | ||||||
|  | 	echo mips-sni-sysv4 | ||||||
|  | 	exit 0 ;; | ||||||
|  |     *:SINIX-*:*:*) | ||||||
|  | 	if uname -p 2>/dev/null >/dev/null ; then | ||||||
|  | 		UNAME_MACHINE=`(uname -p) 2>/dev/null` | ||||||
|  | 		echo ${UNAME_MACHINE}-sni-sysv4 | ||||||
|  | 	else | ||||||
|  | 		echo ns32k-sni-sysv | ||||||
|  | 	fi | ||||||
|  | 	exit 0 ;; | ||||||
|  |     *:UNIX_System_V:4*:FTX*) | ||||||
|  | 	# From Gerald Hewes <hewes@openmarket.com>. | ||||||
|  | 	# How about differentiating between stratus architectures? -djm | ||||||
|  | 	echo hppa1.1-stratus-sysv4 | ||||||
|  | 	exit 0 ;; | ||||||
|  |     *:*:*:FTX*) | ||||||
|  | 	# From seanf@swdc.stratus.com. | ||||||
|  | 	echo i860-stratus-sysv4 | ||||||
|  | 	exit 0 ;; | ||||||
|  |     mc68*:A/UX:*:*) | ||||||
|  | 	echo m68k-apple-aux${UNAME_RELEASE} | ||||||
|  | 	exit 0 ;; | ||||||
|  |     R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:*) | ||||||
|  | 	if [ -d /usr/nec ]; then | ||||||
|  | 	        echo mips-nec-sysv${UNAME_RELEASE} | ||||||
|  | 	else | ||||||
|  | 	        echo mips-unknown-sysv${UNAME_RELEASE} | ||||||
|  | 	fi | ||||||
|  |         exit 0 ;; | ||||||
|  |     PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort | ||||||
|  |                            # says <Richard.M.Bartel@ccMail.Census.GOV> | ||||||
|  |         echo i586-unisys-sysv4 | ||||||
|  |         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 | ||||||
|  | #ifdef _SEQUENT_ | ||||||
|  | # include <sys/types.h> | ||||||
|  | # include <sys/utsname.h> | ||||||
|  | #endif | ||||||
|  | main () | ||||||
|  | { | ||||||
|  | #if defined (sony) | ||||||
|  | #if defined (MIPSEB) | ||||||
|  |   /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed, | ||||||
|  |      I don't know....  */ | ||||||
|  |   printf ("mips-sony-bsd\n"); exit (0); | ||||||
|  | #else | ||||||
|  | #include <sys/param.h> | ||||||
|  |   printf ("m68k-sony-newsos%s\n", | ||||||
|  | #ifdef NEWSOS4 | ||||||
|  |           "4" | ||||||
|  | #else | ||||||
|  | 	  "" | ||||||
|  | #endif | ||||||
|  |          ); exit (0); | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if defined (__arm) && defined (__acorn) && defined (__unix) | ||||||
|  |   printf ("arm-acorn-riscix"); exit (0); | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if defined (hp300) && !defined (hpux) | ||||||
|  |   printf ("m68k-hp-bsd\n"); exit (0); | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if defined (NeXT) | ||||||
|  | #if !defined (__ARCHITECTURE__) | ||||||
|  | #define __ARCHITECTURE__ "m68k" | ||||||
|  | #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); | ||||||
|  |   exit (0); | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if defined (MULTIMAX) || defined (n16) | ||||||
|  | #if defined (UMAXV) | ||||||
|  |   printf ("ns32k-encore-sysv\n"); exit (0); | ||||||
|  | #else | ||||||
|  | #if defined (CMU) | ||||||
|  |   printf ("ns32k-encore-mach\n"); exit (0); | ||||||
|  | #else | ||||||
|  |   printf ("ns32k-encore-bsd\n"); exit (0); | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if defined (__386BSD__) | ||||||
|  |   printf ("i386-pc-bsd\n"); exit (0); | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if defined (sequent) | ||||||
|  | #if defined (i386) | ||||||
|  |   printf ("i386-sequent-dynix\n"); exit (0); | ||||||
|  | #endif | ||||||
|  | #if defined (ns32000) | ||||||
|  |   printf ("ns32k-sequent-dynix\n"); exit (0); | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if defined (_SEQUENT_) | ||||||
|  |     struct utsname un; | ||||||
|  |  | ||||||
|  |     uname(&un); | ||||||
|  |  | ||||||
|  |     if (strncmp(un.version, "V2", 2) == 0) { | ||||||
|  | 	printf ("i386-sequent-ptx2\n"); exit (0); | ||||||
|  |     } | ||||||
|  |     if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ | ||||||
|  | 	printf ("i386-sequent-ptx1\n"); exit (0); | ||||||
|  |     } | ||||||
|  |     printf ("i386-sequent-ptx\n"); exit (0); | ||||||
|  |  | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if defined (vax) | ||||||
|  | #if !defined (ultrix) | ||||||
|  |   printf ("vax-dec-bsd\n"); exit (0); | ||||||
|  | #else | ||||||
|  |   printf ("vax-dec-ultrix\n"); exit (0); | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if defined (alliant) && defined (i860) | ||||||
|  |   printf ("i860-alliant-bsd\n"); exit (0); | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  |   exit (1); | ||||||
|  | } | ||||||
|  | EOF | ||||||
|  |  | ||||||
|  | ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0 | ||||||
|  | rm -f dummy.c dummy | ||||||
|  |  | ||||||
|  | # Apollos put the system type in the environment. | ||||||
|  |  | ||||||
|  | test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } | ||||||
|  |  | ||||||
|  | # Convex versions that predate uname can use getsysinfo(1) | ||||||
|  |  | ||||||
|  | if [ -x /usr/convex/getsysinfo ] | ||||||
|  | then | ||||||
|  |     case `getsysinfo -f cpu_type` in | ||||||
|  |     c1*) | ||||||
|  | 	echo c1-convex-bsd | ||||||
|  | 	exit 0 ;; | ||||||
|  |     c2*) | ||||||
|  | 	if getsysinfo -f scalar_acc | ||||||
|  | 	then echo c32-convex-bsd | ||||||
|  | 	else echo c2-convex-bsd | ||||||
|  | 	fi | ||||||
|  | 	exit 0 ;; | ||||||
|  |     c34*) | ||||||
|  | 	echo c34-convex-bsd | ||||||
|  | 	exit 0 ;; | ||||||
|  |     c38*) | ||||||
|  | 	echo c38-convex-bsd | ||||||
|  | 	exit 0 ;; | ||||||
|  |     c4*) | ||||||
|  | 	echo c4-convex-bsd | ||||||
|  | 	exit 0 ;; | ||||||
|  |     esac | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | #echo '(Unable to guess system type)' 1>&2 | ||||||
|  |  | ||||||
|  | exit 1 | ||||||
| @@ -0,0 +1,61 @@ | |||||||
|  | This file contains any messages produced by compilers while | ||||||
|  | running configure, to aid debugging if configure makes a mistake. | ||||||
|  |  | ||||||
|  | configure:578: checking host system type | ||||||
|  | configure:599: checking target system type | ||||||
|  | configure:617: checking build system type | ||||||
|  | configure:711: checking for gcc | ||||||
|  | configure:788: checking whether the C compiler (gcc  ) works | ||||||
|  | configure:802: gcc -o conftest    conftest.c  1>&5 | ||||||
|  | configure:822: checking whether the C compiler (gcc  ) is a cross-compiler | ||||||
|  | configure:827: checking whether we are using GNU C | ||||||
|  | configure:836: gcc -E conftest.c | ||||||
|  | configure:851: checking whether gcc accepts -g | ||||||
|  | configure:884: checking gcc version | ||||||
|  | configure:1028: checking how to run the C preprocessor | ||||||
|  | configure:1049: gcc -E  conftest.c >/dev/null 2>conftest.out | ||||||
|  | configure:1092: checking for malloc.h | ||||||
|  | configure:1102: gcc -E  conftest.c >/dev/null 2>conftest.out | ||||||
|  | configure:1092: checking for sys/ioccom.h | ||||||
|  | configure:1102: gcc -E  conftest.c >/dev/null 2>conftest.out | ||||||
|  | configure:1098:24: error: sys/ioccom.h: No such file or directory | ||||||
|  | configure: failed program was: | ||||||
|  | #line 1097 "configure" | ||||||
|  | #include "confdefs.h" | ||||||
|  | #include <sys/ioccom.h> | ||||||
|  | configure:1092: checking for sys/sockio.h | ||||||
|  | configure:1102: gcc -E  conftest.c >/dev/null 2>conftest.out | ||||||
|  | configure:1098:24: error: sys/sockio.h: No such file or directory | ||||||
|  | configure: failed program was: | ||||||
|  | #line 1097 "configure" | ||||||
|  | #include "confdefs.h" | ||||||
|  | #include <sys/sockio.h> | ||||||
|  | configure:1131: checking for ANSI ioctl definitions | ||||||
|  | configure:1155: gcc -c -g -O2  conftest.c 1>&5 | ||||||
|  | configure:1178: checking for ether_hostton | ||||||
|  | configure:1206: gcc -o conftest -g -O2   conftest.c  1>&5 | ||||||
|  | configure:1178: checking for strerror | ||||||
|  | configure:1206: gcc -o conftest -g -O2   conftest.c  1>&5 | ||||||
|  | configure:1238: checking packet capture type | ||||||
|  | configure:1341: checking for net/if_arp.h | ||||||
|  | configure:1351: gcc -E  conftest.c >/dev/null 2>conftest.out | ||||||
|  | configure:1378: checking Linux kernel version | ||||||
|  | configure:1419: checking for flex | ||||||
|  | configure:1452: checking for flex 2.4 or higher | ||||||
|  | configure:1478: checking for bison | ||||||
|  | configure:1602: checking for ranlib | ||||||
|  | configure:1672: checking if sockaddr struct has sa_len member | ||||||
|  | configure:1686: gcc -c -g -O2  conftest.c 1>&5 | ||||||
|  | configure: In function 'main': | ||||||
|  | configure:1682: error: 'struct sockaddr' has no member named 'sa_len' | ||||||
|  | configure: failed program was: | ||||||
|  | #line 1677 "configure" | ||||||
|  | #include "confdefs.h" | ||||||
|  |  | ||||||
|  | #	include <sys/types.h> | ||||||
|  | #	include <sys/socket.h> | ||||||
|  | int main() { | ||||||
|  | u_int i = sizeof(((struct sockaddr *)0)->sa_len) | ||||||
|  | ; return 0; } | ||||||
|  | configure:1707: checking if unaligned accesses fail | ||||||
|  | configure:1803: checking for a BSD compatible install | ||||||
							
								
								
									
										179
									
								
								target/linux/etrax-2.6/image/e100boot/src/libpcap-0.4/config.status
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										179
									
								
								target/linux/etrax-2.6/image/e100boot/src/libpcap-0.4/config.status
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,179 @@ | |||||||
|  | #! /bin/sh | ||||||
|  | # Generated automatically by configure. | ||||||
|  | # Run this file to recreate the current configuration. | ||||||
|  | # This directory was configured as follows, | ||||||
|  | # on host bertha: | ||||||
|  | # | ||||||
|  | # ./configure  | ||||||
|  | # | ||||||
|  | # Compiler output produced by configure, useful for debugging | ||||||
|  | # configure, is in ./config.log if it exists. | ||||||
|  |  | ||||||
|  | ac_cs_usage="Usage: ./config.status [--recheck] [--version] [--help]" | ||||||
|  | for ac_option | ||||||
|  | do | ||||||
|  |   case "$ac_option" in | ||||||
|  |   -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) | ||||||
|  |     echo "running ${CONFIG_SHELL-/bin/sh} ./configure  --no-create --no-recursion" | ||||||
|  |     exec ${CONFIG_SHELL-/bin/sh} ./configure  --no-create --no-recursion ;; | ||||||
|  |   -version | --version | --versio | --versi | --vers | --ver | --ve | --v) | ||||||
|  |     echo "./config.status generated by autoconf version 2.12" | ||||||
|  |     exit 0 ;; | ||||||
|  |   -help | --help | --hel | --he | --h) | ||||||
|  |     echo "$ac_cs_usage"; exit 0 ;; | ||||||
|  |   *) echo "$ac_cs_usage"; exit 1 ;; | ||||||
|  |   esac | ||||||
|  | done | ||||||
|  |  | ||||||
|  | ac_given_srcdir=. | ||||||
|  | ac_given_INSTALL=" install_elinux -p" | ||||||
|  |  | ||||||
|  | trap 'rm -fr Makefile conftest*; exit 1' 1 2 15 | ||||||
|  |  | ||||||
|  | # 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 | ||||||
|  | /^[ 	]*VPATH[ 	]*=[^:]*$/d | ||||||
|  |  | ||||||
|  | s%@CFLAGS@%-g -O2%g | ||||||
|  | s%@CPPFLAGS@%%g | ||||||
|  | s%@CXXFLAGS@%%g | ||||||
|  | s%@DEFS@% -DHAVE_MALLOC_H=1 -DHAVE_ETHER_HOSTTON=1 -DHAVE_STRERROR=1 -DHAVE_NET_IF_ARP_H=1 %g | ||||||
|  | s%@LDFLAGS@%%g | ||||||
|  | s%@LIBS@%%g | ||||||
|  | s%@exec_prefix@%${prefix}%g | ||||||
|  | s%@prefix@%/usr/local%g | ||||||
|  | s%@program_transform_name@%s,x,x,%g | ||||||
|  | s%@bindir@%${exec_prefix}/bin%g | ||||||
|  | s%@sbindir@%${exec_prefix}/sbin%g | ||||||
|  | s%@libexecdir@%${exec_prefix}/libexec%g | ||||||
|  | s%@datadir@%${prefix}/share%g | ||||||
|  | s%@sysconfdir@%${prefix}/etc%g | ||||||
|  | s%@sharedstatedir@%${prefix}/com%g | ||||||
|  | s%@localstatedir@%${prefix}/var%g | ||||||
|  | s%@libdir@%${exec_prefix}/lib%g | ||||||
|  | s%@includedir@%${prefix}/include%g | ||||||
|  | s%@oldincludedir@%/usr/include%g | ||||||
|  | s%@infodir@%${prefix}/info%g | ||||||
|  | s%@mandir@%${prefix}/man%g | ||||||
|  | s%@host@%i686-pc-linux-gnu%g | ||||||
|  | s%@host_alias@%i686-pc-linux-gnu%g | ||||||
|  | s%@host_cpu@%i686%g | ||||||
|  | s%@host_vendor@%pc%g | ||||||
|  | s%@host_os@%linux-gnu%g | ||||||
|  | s%@target@%i686-pc-linux-gnu%g | ||||||
|  | s%@target_alias@%i686-pc-linux-gnu%g | ||||||
|  | s%@target_cpu@%i686%g | ||||||
|  | s%@target_vendor@%pc%g | ||||||
|  | s%@target_os@%linux-gnu%g | ||||||
|  | s%@build@%i686-pc-linux-gnu%g | ||||||
|  | s%@build_alias@%i686-pc-linux-gnu%g | ||||||
|  | s%@build_cpu@%i686%g | ||||||
|  | s%@build_vendor@%pc%g | ||||||
|  | s%@build_os@%linux-gnu%g | ||||||
|  | s%@SHLICC2@%%g | ||||||
|  | s%@CC@%gcc%g | ||||||
|  | s%@CPP@%gcc -E%g | ||||||
|  | s%@V_LEX@%flex -Ppcap_%g | ||||||
|  | s%@V_YACC@%bison -y -p pcap_%g | ||||||
|  | s%@V_RANLIB@%ranlib%g | ||||||
|  | s%@V_CCOPT@%-O2%g | ||||||
|  | s%@V_INCLS@% -Ilinux-include%g | ||||||
|  | s%@V_PCAP@%linux%g | ||||||
|  | s%@INSTALL_PROGRAM@%${INSTALL}%g | ||||||
|  | s%@INSTALL_DATA@%${INSTALL} -m 644%g | ||||||
|  |  | ||||||
|  | CEOF | ||||||
|  |  | ||||||
|  | # 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 | ||||||
|  |   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` | ||||||
|  |   fi | ||||||
|  | done | ||||||
|  | if test -z "$ac_sed_cmds"; then | ||||||
|  |   ac_sed_cmds=cat | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | CONFIG_FILES=${CONFIG_FILES-"Makefile"} | ||||||
|  | for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then | ||||||
|  |   # 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" ;; | ||||||
|  |   *) # Relative path. | ||||||
|  |     srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" | ||||||
|  |     top_srcdir="$ac_dots$ac_given_srcdir" ;; | ||||||
|  |   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* | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | exit 0 | ||||||
							
								
								
									
										927
									
								
								target/linux/etrax-2.6/image/e100boot/src/libpcap-0.4/config.sub
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										927
									
								
								target/linux/etrax-2.6/image/e100boot/src/libpcap-0.4/config.sub
									
									
									
									
										vendored
									
									
										Executable file
									
								
							| @@ -0,0 +1,927 @@ | |||||||
|  | #! /bin/sh | ||||||
|  | # Configuration validation subroutine script, version 1.1. | ||||||
|  | #   Copyright (C) 1991, 92, 93, 94, 95, 1996 Free Software Foundation, Inc. | ||||||
|  | # 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. | ||||||
|  | # | ||||||
|  | # This file is free software; you can redistribute it and/or modify | ||||||
|  | # it under the terms of the GNU General Public License as published by | ||||||
|  | # the Free Software Foundation; either version 2 of the License, or | ||||||
|  | # (at your option) any later version. | ||||||
|  | # | ||||||
|  | # This program is distributed in the hope that it will be useful, | ||||||
|  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  | # GNU General Public License for more details. | ||||||
|  | # | ||||||
|  | # You should have received a copy of the GNU General Public License | ||||||
|  | # along with this program; if not, write to the Free Software | ||||||
|  | # Foundation, Inc., 59 Temple Place - Suite 330, | ||||||
|  | # Boston, MA 02111-1307, USA. | ||||||
|  |  | ||||||
|  | # 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. | ||||||
|  |  | ||||||
|  | # 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. | ||||||
|  | # Otherwise, we print the canonical config type on stdout and succeed. | ||||||
|  |  | ||||||
|  | # This file is supposed to be the same for all GNU packages | ||||||
|  | # and recognize all the CPU types, system types and aliases | ||||||
|  | # that are meaningful with *any* GNU software. | ||||||
|  | # Each package is responsible for reporting which valid configurations | ||||||
|  | # it does not support.  The user should be able to distinguish | ||||||
|  | # a failure to support a valid configuration from a meaningless | ||||||
|  | # configuration. | ||||||
|  |  | ||||||
|  | # The goal of this file is to map all the various variations of a given | ||||||
|  | # machine specification into a single specification in the form: | ||||||
|  | #	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM | ||||||
|  | # or in some cases, the newer four-part form: | ||||||
|  | #	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 | ||||||
|  |  | ||||||
|  | # First pass through any local machine types. | ||||||
|  | case $1 in | ||||||
|  | 	*local*) | ||||||
|  | 		echo $1 | ||||||
|  | 		exit 0 | ||||||
|  | 		;; | ||||||
|  | 	*) | ||||||
|  | 	;; | ||||||
|  | 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*) | ||||||
|  |     os=-$maybe_os | ||||||
|  |     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` | ||||||
|  |     ;; | ||||||
|  |   *) | ||||||
|  |     basic_machine=`echo $1 | sed 's/-[^-]*$//'` | ||||||
|  |     if [ $basic_machine != $1 ] | ||||||
|  |     then os=`echo $1 | sed 's/.*-/-/'` | ||||||
|  |     else os=; fi | ||||||
|  |     ;; | ||||||
|  | esac | ||||||
|  |  | ||||||
|  | ### Let's recognize common machines as not being operating systems so | ||||||
|  | ### that things like config.sub decstation-3100 work.  We also | ||||||
|  | ### recognize some manufacturers as not being operating systems, so we | ||||||
|  | ### can provide default operating systems below. | ||||||
|  | case $os in | ||||||
|  | 	-sun*os*) | ||||||
|  | 		# Prevent following clause from handling this invalid input. | ||||||
|  | 		;; | ||||||
|  | 	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ | ||||||
|  | 	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ | ||||||
|  | 	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ | ||||||
|  | 	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ | ||||||
|  | 	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ | ||||||
|  | 	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ | ||||||
|  | 	-apple) | ||||||
|  | 		os= | ||||||
|  | 		basic_machine=$1 | ||||||
|  | 		;; | ||||||
|  | 	-hiux*) | ||||||
|  | 		os=-hiuxwe2 | ||||||
|  | 		;; | ||||||
|  | 	-sco5) | ||||||
|  | 		os=sco3.2v5 | ||||||
|  | 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` | ||||||
|  | 		;; | ||||||
|  | 	-sco4) | ||||||
|  | 		os=-sco3.2v4 | ||||||
|  | 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` | ||||||
|  | 		;; | ||||||
|  | 	-sco3.2.[4-9]*) | ||||||
|  | 		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` | ||||||
|  | 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` | ||||||
|  | 		;; | ||||||
|  | 	-sco3.2v[4-9]*) | ||||||
|  | 		# Don't forget version if it is 3.2v4 or newer. | ||||||
|  | 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` | ||||||
|  | 		;; | ||||||
|  | 	-sco*) | ||||||
|  | 		os=-sco3.2v2 | ||||||
|  | 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` | ||||||
|  | 		;; | ||||||
|  | 	-isc) | ||||||
|  | 		os=-isc2.2 | ||||||
|  | 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` | ||||||
|  | 		;; | ||||||
|  | 	-clix*) | ||||||
|  | 		basic_machine=clipper-intergraph | ||||||
|  | 		;; | ||||||
|  | 	-isc*) | ||||||
|  | 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` | ||||||
|  | 		;; | ||||||
|  | 	-lynx*) | ||||||
|  | 		os=-lynxos | ||||||
|  | 		;; | ||||||
|  | 	-ptx*) | ||||||
|  | 		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` | ||||||
|  | 		;; | ||||||
|  | 	-windowsnt*) | ||||||
|  | 		os=`echo $os | sed -e 's/windowsnt/winnt/'` | ||||||
|  | 		;; | ||||||
|  | 	-psos*) | ||||||
|  | 		os=-psos | ||||||
|  | 		;; | ||||||
|  | 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 | m68k | m68000 | m88k | ns32k | arm \ | ||||||
|  | 		| arme[lb] | pyramid \ | ||||||
|  | 		| tron | a29k | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 \ | ||||||
|  | 		| alpha | we32k | ns16k | clipper | i370 | sh \ | ||||||
|  | 		| powerpc | powerpcle | 1750a | dsp16xx | mips64 | mipsel \ | ||||||
|  | 		| pdp11 | mips64el | mips64orion | mips64orionel \ | ||||||
|  | 		| sparc | sparclet | sparclite | sparc64) | ||||||
|  | 		basic_machine=$basic_machine-unknown | ||||||
|  | 		;; | ||||||
|  | 	# 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) | ||||||
|  | 	  basic_machine=$basic_machine-pc | ||||||
|  | 	  ;; | ||||||
|  | 	# Object if more than one company name word. | ||||||
|  | 	*-*-*) | ||||||
|  | 		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 | ||||||
|  | 		exit 1 | ||||||
|  | 		;; | ||||||
|  | 	# Recognize the basic CPU types with company name. | ||||||
|  | 	vax-* | tahoe-* | i[3456]86-* | i860-* | m68k-* | m68000-* | m88k-* \ | ||||||
|  | 	      | sparc-* | ns32k-* | fx80-* | arm-* | c[123]* \ | ||||||
|  | 	      | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* | power-* \ | ||||||
|  | 	      | none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \ | ||||||
|  | 	      | hppa-* | hppa1.0-* | hppa1.1-* | alpha-* | we32k-* | cydra-* | ns16k-* \ | ||||||
|  | 	      | pn-* | np1-* | xps100-* | clipper-* | orion-* | sparclite-* \ | ||||||
|  | 	      | pdp11-* | sh-* | powerpc-* | powerpcle-* | sparc64-* | mips64-* | mipsel-* \ | ||||||
|  | 	      | mips64el-* | mips64orion-* | mips64orionel-* | f301-*) | ||||||
|  | 		;; | ||||||
|  | 	# Recognize the various machine names and aliases which stand | ||||||
|  | 	# for a CPU type and a company and sometimes even an OS. | ||||||
|  | 	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) | ||||||
|  | 		basic_machine=m68000-att | ||||||
|  | 		;; | ||||||
|  | 	3b*) | ||||||
|  | 		basic_machine=we32k-att | ||||||
|  | 		;; | ||||||
|  | 	alliant | fx80) | ||||||
|  | 		basic_machine=fx80-alliant | ||||||
|  | 		;; | ||||||
|  | 	altos | altos3068) | ||||||
|  | 		basic_machine=m68k-altos | ||||||
|  | 		;; | ||||||
|  | 	am29k) | ||||||
|  | 		basic_machine=a29k-none | ||||||
|  | 		os=-bsd | ||||||
|  | 		;; | ||||||
|  | 	amdahl) | ||||||
|  | 		basic_machine=580-amdahl | ||||||
|  | 		os=-sysv | ||||||
|  | 		;; | ||||||
|  | 	amiga | amiga-*) | ||||||
|  | 		basic_machine=m68k-cbm | ||||||
|  | 		;; | ||||||
|  | 	amigados) | ||||||
|  | 		basic_machine=m68k-cbm | ||||||
|  | 		os=-amigados | ||||||
|  | 		;; | ||||||
|  | 	amigaunix | amix) | ||||||
|  | 		basic_machine=m68k-cbm | ||||||
|  | 		os=-sysv4 | ||||||
|  | 		;; | ||||||
|  | 	apollo68) | ||||||
|  | 		basic_machine=m68k-apollo | ||||||
|  | 		os=-sysv | ||||||
|  | 		;; | ||||||
|  | 	aux) | ||||||
|  | 		basic_machine=m68k-apple | ||||||
|  | 		os=-aux | ||||||
|  | 		;; | ||||||
|  | 	balance) | ||||||
|  | 		basic_machine=ns32k-sequent | ||||||
|  | 		os=-dynix | ||||||
|  | 		;; | ||||||
|  | 	convex-c1) | ||||||
|  | 		basic_machine=c1-convex | ||||||
|  | 		os=-bsd | ||||||
|  | 		;; | ||||||
|  | 	convex-c2) | ||||||
|  | 		basic_machine=c2-convex | ||||||
|  | 		os=-bsd | ||||||
|  | 		;; | ||||||
|  | 	convex-c32) | ||||||
|  | 		basic_machine=c32-convex | ||||||
|  | 		os=-bsd | ||||||
|  | 		;; | ||||||
|  | 	convex-c34) | ||||||
|  | 		basic_machine=c34-convex | ||||||
|  | 		os=-bsd | ||||||
|  | 		;; | ||||||
|  | 	convex-c38) | ||||||
|  | 		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 | ||||||
|  | 		os=-unicos | ||||||
|  | 		;; | ||||||
|  | 	crds | unos) | ||||||
|  | 		basic_machine=m68k-crds | ||||||
|  | 		;; | ||||||
|  | 	da30 | da30-*) | ||||||
|  | 		basic_machine=m68k-da30 | ||||||
|  | 		;; | ||||||
|  | 	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) | ||||||
|  | 		basic_machine=mips-dec | ||||||
|  | 		;; | ||||||
|  | 	delta | 3300 | motorola-3300 | motorola-delta \ | ||||||
|  | 	      | 3300-motorola | delta-motorola) | ||||||
|  | 		basic_machine=m68k-motorola | ||||||
|  | 		;; | ||||||
|  | 	delta88) | ||||||
|  | 		basic_machine=m88k-motorola | ||||||
|  | 		os=-sysv3 | ||||||
|  | 		;; | ||||||
|  | 	dpx20 | dpx20-*) | ||||||
|  | 		basic_machine=rs6000-bull | ||||||
|  | 		os=-bosx | ||||||
|  | 		;; | ||||||
|  | 	dpx2* | dpx2*-bull) | ||||||
|  | 		basic_machine=m68k-bull | ||||||
|  | 		os=-sysv3 | ||||||
|  | 		;; | ||||||
|  | 	ebmon29k) | ||||||
|  | 		basic_machine=a29k-amd | ||||||
|  | 		os=-ebmon | ||||||
|  | 		;; | ||||||
|  | 	elxsi) | ||||||
|  | 		basic_machine=elxsi-elxsi | ||||||
|  | 		os=-bsd | ||||||
|  | 		;; | ||||||
|  | 	encore | umax | mmax) | ||||||
|  | 		basic_machine=ns32k-encore | ||||||
|  | 		;; | ||||||
|  | 	fx2800) | ||||||
|  | 		basic_machine=i860-alliant | ||||||
|  | 		;; | ||||||
|  | 	genix) | ||||||
|  | 		basic_machine=ns32k-ns | ||||||
|  | 		;; | ||||||
|  | 	gmicro) | ||||||
|  | 		basic_machine=tron-gmicro | ||||||
|  | 		os=-sysv | ||||||
|  | 		;; | ||||||
|  | 	h3050r* | hiux*) | ||||||
|  | 		basic_machine=hppa1.1-hitachi | ||||||
|  | 		os=-hiuxwe2 | ||||||
|  | 		;; | ||||||
|  | 	h8300hms) | ||||||
|  | 		basic_machine=h8300-hitachi | ||||||
|  | 		os=-hms | ||||||
|  | 		;; | ||||||
|  | 	harris) | ||||||
|  | 		basic_machine=m88k-harris | ||||||
|  | 		os=-sysv3 | ||||||
|  | 		;; | ||||||
|  | 	hp300-*) | ||||||
|  | 		basic_machine=m68k-hp | ||||||
|  | 		;; | ||||||
|  | 	hp300bsd) | ||||||
|  | 		basic_machine=m68k-hp | ||||||
|  | 		os=-bsd | ||||||
|  | 		;; | ||||||
|  | 	hp300hpux) | ||||||
|  | 		basic_machine=m68k-hp | ||||||
|  | 		os=-hpux | ||||||
|  | 		;; | ||||||
|  | 	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) | ||||||
|  | 		basic_machine=hppa1.1-hp | ||||||
|  | 		;; | ||||||
|  | 	hp9k8[0-9][0-9] | hp8[0-9][0-9]) | ||||||
|  | 		basic_machine=hppa1.0-hp | ||||||
|  | 		;; | ||||||
|  | 	hppa-next) | ||||||
|  | 		os=-nextstep3 | ||||||
|  | 		;; | ||||||
|  | 	i370-ibm* | ibm*) | ||||||
|  | 		basic_machine=i370-ibm | ||||||
|  | 		os=-mvs | ||||||
|  | 		;; | ||||||
|  | # I'm not sure what "Sysv32" means.  Should this be sysv3.2? | ||||||
|  | 	i[3456]86v32) | ||||||
|  | 		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` | ||||||
|  | 		os=-sysv32 | ||||||
|  | 		;; | ||||||
|  | 	i[3456]86v4*) | ||||||
|  | 		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` | ||||||
|  | 		os=-sysv4 | ||||||
|  | 		;; | ||||||
|  | 	i[3456]86v) | ||||||
|  | 		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` | ||||||
|  | 		os=-sysv | ||||||
|  | 		;; | ||||||
|  | 	i[3456]86sol2) | ||||||
|  | 		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` | ||||||
|  | 		os=-solaris2 | ||||||
|  | 		;; | ||||||
|  | 	iris | iris4d) | ||||||
|  | 		basic_machine=mips-sgi | ||||||
|  | 		case $os in | ||||||
|  | 		    -irix*) | ||||||
|  | 			;; | ||||||
|  | 		    *) | ||||||
|  | 			os=-irix4 | ||||||
|  | 			;; | ||||||
|  | 		esac | ||||||
|  | 		;; | ||||||
|  | 	isi68 | isi) | ||||||
|  | 		basic_machine=m68k-isi | ||||||
|  | 		os=-sysv | ||||||
|  | 		;; | ||||||
|  | 	m88k-omron*) | ||||||
|  | 		basic_machine=m88k-omron | ||||||
|  | 		;; | ||||||
|  | 	magnum | m3230) | ||||||
|  | 		basic_machine=mips-mips | ||||||
|  | 		os=-sysv | ||||||
|  | 		;; | ||||||
|  | 	merlin) | ||||||
|  | 		basic_machine=ns32k-utek | ||||||
|  | 		os=-sysv | ||||||
|  | 		;; | ||||||
|  | 	miniframe) | ||||||
|  | 		basic_machine=m68000-convergent | ||||||
|  | 		;; | ||||||
|  | 	mips3*-*) | ||||||
|  | 		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` | ||||||
|  | 		;; | ||||||
|  | 	mips3*) | ||||||
|  | 		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown | ||||||
|  | 		;; | ||||||
|  | 	ncr3000) | ||||||
|  | 		basic_machine=i486-ncr | ||||||
|  | 		os=-sysv4 | ||||||
|  | 		;; | ||||||
|  | 	news | news700 | news800 | news900) | ||||||
|  | 		basic_machine=m68k-sony | ||||||
|  | 		os=-newsos | ||||||
|  | 		;; | ||||||
|  | 	news1000) | ||||||
|  | 		basic_machine=m68030-sony | ||||||
|  | 		os=-newsos | ||||||
|  | 		;; | ||||||
|  | 	news-3600 | risc-news) | ||||||
|  | 		basic_machine=mips-sony | ||||||
|  | 		os=-newsos | ||||||
|  | 		;; | ||||||
|  | 	next | m*-next ) | ||||||
|  | 		basic_machine=m68k-next | ||||||
|  | 		case $os in | ||||||
|  | 		    -nextstep* ) | ||||||
|  | 			;; | ||||||
|  | 		    -ns2*) | ||||||
|  | 		      os=-nextstep2 | ||||||
|  | 			;; | ||||||
|  | 		    *) | ||||||
|  | 		      os=-nextstep3 | ||||||
|  | 			;; | ||||||
|  | 		esac | ||||||
|  | 		;; | ||||||
|  | 	nh3000) | ||||||
|  | 		basic_machine=m68k-harris | ||||||
|  | 		os=-cxux | ||||||
|  | 		;; | ||||||
|  | 	nh[45]000) | ||||||
|  | 		basic_machine=m88k-harris | ||||||
|  | 		os=-cxux | ||||||
|  | 		;; | ||||||
|  | 	nindy960) | ||||||
|  | 		basic_machine=i960-intel | ||||||
|  | 		os=-nindy | ||||||
|  | 		;; | ||||||
|  | 	np1) | ||||||
|  | 		basic_machine=np1-gould | ||||||
|  | 		;; | ||||||
|  | 	pa-hitachi) | ||||||
|  | 		basic_machine=hppa1.1-hitachi | ||||||
|  | 		os=-hiuxwe2 | ||||||
|  | 		;; | ||||||
|  | 	paragon) | ||||||
|  | 		basic_machine=i860-intel | ||||||
|  | 		os=-osf | ||||||
|  | 		;; | ||||||
|  | 	pbd) | ||||||
|  | 		basic_machine=sparc-tti | ||||||
|  | 		;; | ||||||
|  | 	pbb) | ||||||
|  | 		basic_machine=m68k-tti | ||||||
|  | 		;; | ||||||
|  |         pc532 | pc532-*) | ||||||
|  | 		basic_machine=ns32k-pc532 | ||||||
|  | 		;; | ||||||
|  | 	pentium | p5) | ||||||
|  | 		basic_machine=i586-intel | ||||||
|  | 		;; | ||||||
|  | 	pentiumpro | p6) | ||||||
|  | 		basic_machine=i686-intel | ||||||
|  | 		;; | ||||||
|  | 	pentium-* | p5-*) | ||||||
|  | 		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` | ||||||
|  | 		;; | ||||||
|  | 	pentiumpro-* | p6-*) | ||||||
|  | 		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 | ||||||
|  | 		;; | ||||||
|  | 	pn) | ||||||
|  | 		basic_machine=pn-gould | ||||||
|  | 		;; | ||||||
|  | 	power)	basic_machine=rs6000-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/^[^-]*-//'` | ||||||
|  | 		;; | ||||||
|  | 	ps2) | ||||||
|  | 		basic_machine=i386-ibm | ||||||
|  | 		;; | ||||||
|  | 	rm[46]00) | ||||||
|  | 		basic_machine=mips-siemens | ||||||
|  | 		;; | ||||||
|  | 	rtpc | rtpc-*) | ||||||
|  | 		basic_machine=romp-ibm | ||||||
|  | 		;; | ||||||
|  | 	sequent) | ||||||
|  | 		basic_machine=i386-sequent | ||||||
|  | 		;; | ||||||
|  | 	sh) | ||||||
|  | 		basic_machine=sh-hitachi | ||||||
|  | 		os=-hms | ||||||
|  | 		;; | ||||||
|  | 	sps7) | ||||||
|  | 		basic_machine=m68k-bull | ||||||
|  | 		os=-sysv2 | ||||||
|  | 		;; | ||||||
|  | 	spur) | ||||||
|  | 		basic_machine=spur-unknown | ||||||
|  | 		;; | ||||||
|  | 	sun2) | ||||||
|  | 		basic_machine=m68000-sun | ||||||
|  | 		;; | ||||||
|  | 	sun2os3) | ||||||
|  | 		basic_machine=m68000-sun | ||||||
|  | 		os=-sunos3 | ||||||
|  | 		;; | ||||||
|  | 	sun2os4) | ||||||
|  | 		basic_machine=m68000-sun | ||||||
|  | 		os=-sunos4 | ||||||
|  | 		;; | ||||||
|  | 	sun3os3) | ||||||
|  | 		basic_machine=m68k-sun | ||||||
|  | 		os=-sunos3 | ||||||
|  | 		;; | ||||||
|  | 	sun3os4) | ||||||
|  | 		basic_machine=m68k-sun | ||||||
|  | 		os=-sunos4 | ||||||
|  | 		;; | ||||||
|  | 	sun4os3) | ||||||
|  | 		basic_machine=sparc-sun | ||||||
|  | 		os=-sunos3 | ||||||
|  | 		;; | ||||||
|  | 	sun4os4) | ||||||
|  | 		basic_machine=sparc-sun | ||||||
|  | 		os=-sunos4 | ||||||
|  | 		;; | ||||||
|  | 	sun4sol2) | ||||||
|  | 		basic_machine=sparc-sun | ||||||
|  | 		os=-solaris2 | ||||||
|  | 		;; | ||||||
|  | 	sun3 | sun3-*) | ||||||
|  | 		basic_machine=m68k-sun | ||||||
|  | 		;; | ||||||
|  | 	sun4) | ||||||
|  | 		basic_machine=sparc-sun | ||||||
|  | 		;; | ||||||
|  | 	sun386 | sun386i | roadrunner) | ||||||
|  | 		basic_machine=i386-sun | ||||||
|  | 		;; | ||||||
|  | 	symmetry) | ||||||
|  | 		basic_machine=i386-sequent | ||||||
|  | 		os=-dynix | ||||||
|  | 		;; | ||||||
|  | 	tower | tower-32) | ||||||
|  | 		basic_machine=m68k-ncr | ||||||
|  | 		;; | ||||||
|  | 	udi29k) | ||||||
|  | 		basic_machine=a29k-amd | ||||||
|  | 		os=-udi | ||||||
|  | 		;; | ||||||
|  | 	ultra3) | ||||||
|  | 		basic_machine=a29k-nyu | ||||||
|  | 		os=-sym1 | ||||||
|  | 		;; | ||||||
|  | 	vaxv) | ||||||
|  | 		basic_machine=vax-dec | ||||||
|  | 		os=-sysv | ||||||
|  | 		;; | ||||||
|  | 	vms) | ||||||
|  | 		basic_machine=vax-dec | ||||||
|  | 		os=-vms | ||||||
|  | 		;; | ||||||
|  |        vpp*|vx|vx-*) | ||||||
|  |                basic_machine=f301-fujitsu | ||||||
|  |                ;; | ||||||
|  | 	vxworks960) | ||||||
|  | 		basic_machine=i960-wrs | ||||||
|  | 		os=-vxworks | ||||||
|  | 		;; | ||||||
|  | 	vxworks68) | ||||||
|  | 		basic_machine=m68k-wrs | ||||||
|  | 		os=-vxworks | ||||||
|  | 		;; | ||||||
|  | 	vxworks29k) | ||||||
|  | 		basic_machine=a29k-wrs | ||||||
|  | 		os=-vxworks | ||||||
|  | 		;; | ||||||
|  | 	xmp) | ||||||
|  | 		basic_machine=xmp-cray | ||||||
|  | 		os=-unicos | ||||||
|  | 		;; | ||||||
|  |         xps | xps100) | ||||||
|  | 		basic_machine=xps100-honeywell | ||||||
|  | 		;; | ||||||
|  | 	none) | ||||||
|  | 		basic_machine=none-none | ||||||
|  | 		os=-none | ||||||
|  | 		;; | ||||||
|  |  | ||||||
|  | # 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) | ||||||
|  | 		basic_machine=mips-mips | ||||||
|  | 		;; | ||||||
|  | 	romp) | ||||||
|  | 		basic_machine=romp-ibm | ||||||
|  | 		;; | ||||||
|  | 	rs6000) | ||||||
|  | 		basic_machine=rs6000-ibm | ||||||
|  | 		;; | ||||||
|  | 	vax) | ||||||
|  | 		basic_machine=vax-dec | ||||||
|  | 		;; | ||||||
|  | 	pdp11) | ||||||
|  | 		basic_machine=pdp11-dec | ||||||
|  | 		;; | ||||||
|  | 	we32k) | ||||||
|  | 		basic_machine=we32k-att | ||||||
|  | 		;; | ||||||
|  | 	sparc) | ||||||
|  | 		basic_machine=sparc-sun | ||||||
|  | 		;; | ||||||
|  |         cydra) | ||||||
|  | 		basic_machine=cydra-cydrome | ||||||
|  | 		;; | ||||||
|  | 	orion) | ||||||
|  | 		basic_machine=orion-highlevel | ||||||
|  | 		;; | ||||||
|  | 	orion105) | ||||||
|  | 		basic_machine=clipper-highlevel | ||||||
|  | 		;; | ||||||
|  | 	*) | ||||||
|  | 		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 | ||||||
|  | 		exit 1 | ||||||
|  | 		;; | ||||||
|  | esac | ||||||
|  |  | ||||||
|  | # Here we canonicalize certain aliases for manufacturers. | ||||||
|  | case $basic_machine in | ||||||
|  | 	*-digital*) | ||||||
|  | 		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` | ||||||
|  | 		;; | ||||||
|  | 	*-commodore*) | ||||||
|  | 		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` | ||||||
|  | 		;; | ||||||
|  | 	*) | ||||||
|  | 		;; | ||||||
|  | esac | ||||||
|  |  | ||||||
|  | # Decode manufacturer-specific aliases for certain operating systems. | ||||||
|  |  | ||||||
|  | if [ x"$os" != x"" ] | ||||||
|  | then | ||||||
|  | case $os in | ||||||
|  |         # First match some system type aliases | ||||||
|  |         # that might get confused with valid system types. | ||||||
|  | 	# -solaris* is a basic system type, with this one exception. | ||||||
|  | 	-solaris1 | -solaris1.*) | ||||||
|  | 		os=`echo $os | sed -e 's|solaris1|sunos4|'` | ||||||
|  | 		;; | ||||||
|  | 	-solaris) | ||||||
|  | 		os=-solaris2 | ||||||
|  | 		;; | ||||||
|  | 	-unixware* | svr4*) | ||||||
|  | 		os=-sysv4 | ||||||
|  | 		;; | ||||||
|  | 	-gnu/linux*) | ||||||
|  | 		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` | ||||||
|  | 		;; | ||||||
|  | 	# First accept the basic system types. | ||||||
|  | 	# The portable systems comes first. | ||||||
|  | 	# Each alternative MUST END IN A *, to match a version number. | ||||||
|  | 	# -sysv* is not here because it comes later, after sysvr4. | ||||||
|  | 	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | ||||||
|  | 	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | ||||||
|  | 	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | ||||||
|  | 	      | -amigados* | -msdos* | -newsos* | -unicos* | -aof* | -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* \ | ||||||
|  | 	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | ||||||
|  | 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | ||||||
|  | 	      | -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | ||||||
|  | 	      | -linux-gnu* | -uxpv*) | ||||||
|  | 	# Remember, each alternative MUST END IN *, to match a version number. | ||||||
|  | 		;; | ||||||
|  | 	-linux*) | ||||||
|  | 		os=`echo $os | sed -e 's|linux|linux-gnu|'` | ||||||
|  | 		;; | ||||||
|  | 	-sunos5*) | ||||||
|  | 		os=`echo $os | sed -e 's|sunos5|solaris2|'` | ||||||
|  | 		;; | ||||||
|  | 	-sunos6*) | ||||||
|  | 		os=`echo $os | sed -e 's|sunos6|solaris3|'` | ||||||
|  | 		;; | ||||||
|  | 	-osfrose*) | ||||||
|  | 		os=-osfrose | ||||||
|  | 		;; | ||||||
|  | 	-osf*) | ||||||
|  | 		os=-osf | ||||||
|  | 		;; | ||||||
|  | 	-utek*) | ||||||
|  | 		os=-bsd | ||||||
|  | 		;; | ||||||
|  | 	-dynix*) | ||||||
|  | 		os=-bsd | ||||||
|  | 		;; | ||||||
|  | 	-acis*) | ||||||
|  | 		os=-aos | ||||||
|  | 		;; | ||||||
|  | 	-ctix* | -uts*) | ||||||
|  | 		os=-sysv | ||||||
|  | 		;; | ||||||
|  | 	-ns2 ) | ||||||
|  | 	        os=-nextstep2 | ||||||
|  | 		;; | ||||||
|  | 	# Preserve the version number of sinix5. | ||||||
|  | 	-sinix5.*) | ||||||
|  | 		os=`echo $os | sed -e 's|sinix|sysv|'` | ||||||
|  | 		;; | ||||||
|  | 	-sinix*) | ||||||
|  | 		os=-sysv4 | ||||||
|  | 		;; | ||||||
|  | 	-triton*) | ||||||
|  | 		os=-sysv3 | ||||||
|  | 		;; | ||||||
|  | 	-oss*) | ||||||
|  | 		os=-sysv3 | ||||||
|  | 		;; | ||||||
|  | 	-svr4) | ||||||
|  | 		os=-sysv4 | ||||||
|  | 		;; | ||||||
|  | 	-svr3) | ||||||
|  | 		os=-sysv3 | ||||||
|  | 		;; | ||||||
|  | 	-sysvr4) | ||||||
|  | 		os=-sysv4 | ||||||
|  | 		;; | ||||||
|  | 	# This must come after -sysvr4. | ||||||
|  | 	-sysv*) | ||||||
|  | 		;; | ||||||
|  | 	-xenix) | ||||||
|  | 		os=-xenix | ||||||
|  | 		;; | ||||||
|  | 	-none) | ||||||
|  | 		;; | ||||||
|  | 	*) | ||||||
|  | 		# Get rid of the `-' at the beginning of $os. | ||||||
|  | 		os=`echo $os | sed 's/[^-]*-//'` | ||||||
|  | 		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 | ||||||
|  | 		exit 1 | ||||||
|  | 		;; | ||||||
|  | esac | ||||||
|  | else | ||||||
|  |  | ||||||
|  | # Here we handle the default operating systems that come with various machines. | ||||||
|  | # The value should be what the vendor currently ships out the door with their | ||||||
|  | # machine or put another way, the most popular os provided with the machine. | ||||||
|  |  | ||||||
|  | # Note that if you're going to try to match "-MANUFACTURER" here (say, | ||||||
|  | # "-sun"), then you have to tell the case statement up towards the top | ||||||
|  | # that MANUFACTURER isn't an operating system.  Otherwise, code above | ||||||
|  | # will signal an error saying that MANUFACTURER isn't an operating | ||||||
|  | # system, and we'll never get to this point. | ||||||
|  |  | ||||||
|  | case $basic_machine in | ||||||
|  | 	*-acorn) | ||||||
|  | 		os=-riscix1.2 | ||||||
|  | 		;; | ||||||
|  | 	arm*-semi) | ||||||
|  | 		os=-aout | ||||||
|  | 		;; | ||||||
|  |         pdp11-*) | ||||||
|  | 		os=-none | ||||||
|  | 		;; | ||||||
|  | 	*-dec | vax-*) | ||||||
|  | 		os=-ultrix4.2 | ||||||
|  | 		;; | ||||||
|  | 	m68*-apollo) | ||||||
|  | 		os=-domain | ||||||
|  | 		;; | ||||||
|  | 	i386-sun) | ||||||
|  | 		os=-sunos4.0.2 | ||||||
|  | 		;; | ||||||
|  | 	m68000-sun) | ||||||
|  | 		os=-sunos3 | ||||||
|  | 		# This also exists in the configure program, but was not the | ||||||
|  | 		# default. | ||||||
|  | 		# os=-sunos4 | ||||||
|  | 		;; | ||||||
|  | 	*-tti)	# must be before sparc entry or we get the wrong os. | ||||||
|  | 		os=-sysv3 | ||||||
|  | 		;; | ||||||
|  | 	sparc-* | *-sun) | ||||||
|  | 		os=-sunos4.1.1 | ||||||
|  | 		;; | ||||||
|  | 	*-ibm) | ||||||
|  | 		os=-aix | ||||||
|  | 		;; | ||||||
|  | 	*-hp) | ||||||
|  | 		os=-hpux | ||||||
|  | 		;; | ||||||
|  | 	*-hitachi) | ||||||
|  | 		os=-hiux | ||||||
|  | 		;; | ||||||
|  | 	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) | ||||||
|  | 		os=-sysv | ||||||
|  | 		;; | ||||||
|  | 	*-cbm) | ||||||
|  | 		os=-amigados | ||||||
|  | 		;; | ||||||
|  | 	*-dg) | ||||||
|  | 		os=-dgux | ||||||
|  | 		;; | ||||||
|  | 	*-dolphin) | ||||||
|  | 		os=-sysv3 | ||||||
|  | 		;; | ||||||
|  | 	m68k-ccur) | ||||||
|  | 		os=-rtu | ||||||
|  | 		;; | ||||||
|  | 	m88k-omron*) | ||||||
|  | 		os=-luna | ||||||
|  | 		;; | ||||||
|  | 	*-next ) | ||||||
|  | 		os=-nextstep | ||||||
|  | 		;; | ||||||
|  | 	*-sequent) | ||||||
|  | 		os=-ptx | ||||||
|  | 		;; | ||||||
|  | 	*-crds) | ||||||
|  | 		os=-unos | ||||||
|  | 		;; | ||||||
|  | 	*-ns) | ||||||
|  | 		os=-genix | ||||||
|  | 		;; | ||||||
|  | 	i370-*) | ||||||
|  | 		os=-mvs | ||||||
|  | 		;; | ||||||
|  | 	*-next) | ||||||
|  | 		os=-nextstep3 | ||||||
|  | 		;; | ||||||
|  |         *-gould) | ||||||
|  | 		os=-sysv | ||||||
|  | 		;; | ||||||
|  |         *-highlevel) | ||||||
|  | 		os=-bsd | ||||||
|  | 		;; | ||||||
|  | 	*-encore) | ||||||
|  | 		os=-bsd | ||||||
|  | 		;; | ||||||
|  |         *-sgi) | ||||||
|  | 		os=-irix | ||||||
|  | 		;; | ||||||
|  |         *-siemens) | ||||||
|  | 		os=-sysv4 | ||||||
|  | 		;; | ||||||
|  | 	*-masscomp) | ||||||
|  | 		os=-rtu | ||||||
|  | 		;; | ||||||
|  | 	f301-fujitsu) | ||||||
|  | 		os=-uxpv | ||||||
|  | 		;; | ||||||
|  | 	*) | ||||||
|  | 		os=-none | ||||||
|  | 		;; | ||||||
|  | esac | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | # Here we handle the case where we know the os, and the CPU type, but not the | ||||||
|  | # manufacturer.  We pick the logical manufacturer. | ||||||
|  | vendor=unknown | ||||||
|  | case $basic_machine in | ||||||
|  | 	*-unknown) | ||||||
|  | 		case $os in | ||||||
|  | 			-riscix*) | ||||||
|  | 				vendor=acorn | ||||||
|  | 				;; | ||||||
|  | 			-sunos*) | ||||||
|  | 				vendor=sun | ||||||
|  | 				;; | ||||||
|  | 			-aix*) | ||||||
|  | 				vendor=ibm | ||||||
|  | 				;; | ||||||
|  | 			-hpux*) | ||||||
|  | 				vendor=hp | ||||||
|  | 				;; | ||||||
|  | 			-hiux*) | ||||||
|  | 				vendor=hitachi | ||||||
|  | 				;; | ||||||
|  | 			-unos*) | ||||||
|  | 				vendor=crds | ||||||
|  | 				;; | ||||||
|  | 			-dgux*) | ||||||
|  | 				vendor=dg | ||||||
|  | 				;; | ||||||
|  | 			-luna*) | ||||||
|  | 				vendor=omron | ||||||
|  | 				;; | ||||||
|  | 			-genix*) | ||||||
|  | 				vendor=ns | ||||||
|  | 				;; | ||||||
|  | 			-mvs*) | ||||||
|  | 				vendor=ibm | ||||||
|  | 				;; | ||||||
|  | 			-ptx*) | ||||||
|  | 				vendor=sequent | ||||||
|  | 				;; | ||||||
|  | 			-vxsim* | -vxworks*) | ||||||
|  | 				vendor=wrs | ||||||
|  | 				;; | ||||||
|  | 			-aux*) | ||||||
|  | 				vendor=apple | ||||||
|  | 				;; | ||||||
|  | 		esac | ||||||
|  | 		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` | ||||||
|  | 		;; | ||||||
|  | esac | ||||||
|  |  | ||||||
|  | echo $basic_machine$os | ||||||
							
								
								
									
										2137
									
								
								target/linux/etrax-2.6/image/e100boot/src/libpcap-0.4/configure
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										2137
									
								
								target/linux/etrax-2.6/image/e100boot/src/libpcap-0.4/configure
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										189
									
								
								target/linux/etrax-2.6/image/e100boot/src/libpcap-0.4/configure.in
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										189
									
								
								target/linux/etrax-2.6/image/e100boot/src/libpcap-0.4/configure.in
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,189 @@ | |||||||
|  | dnl @(#) $Header: /usr/local/cvs/linux/tools/build/e100boot/libpcap-0.4/configure.in,v 1.1 1999/08/26 10:05:21 johana Exp $ (LBL) | ||||||
|  | dnl | ||||||
|  | dnl Copyright (c) 1994, 1995, 1996, 1997 | ||||||
|  | dnl	The Regents of the University of California.  All rights reserved. | ||||||
|  | dnl | ||||||
|  | dnl Process this file with autoconf to produce a configure script. | ||||||
|  | dnl | ||||||
|  |  | ||||||
|  | AC_INIT(pcap.c) | ||||||
|  |  | ||||||
|  | AC_CANONICAL_SYSTEM | ||||||
|  |  | ||||||
|  | umask 002 | ||||||
|  |  | ||||||
|  | if test -z "$PWD" ; then | ||||||
|  | 	PWD=`pwd` | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | AC_LBL_C_INIT(V_CCOPT, V_INCLS) | ||||||
|  |  | ||||||
|  | AC_CHECK_HEADERS(malloc.h sys/ioccom.h sys/sockio.h) | ||||||
|  |  | ||||||
|  | AC_LBL_FIXINCLUDES | ||||||
|  |  | ||||||
|  | AC_CHECK_FUNCS(ether_hostton strerror) | ||||||
|  |  | ||||||
|  | dnl | ||||||
|  | dnl Not all versions of test support -c (character special) but it's a | ||||||
|  | dnl better way of testing since the device might be protected. So we | ||||||
|  | dnl check in our normal order using -r and then check the for the /dev | ||||||
|  | dnl guys again using -c. | ||||||
|  | dnl | ||||||
|  | AC_ARG_WITH(pcap, [  --with-pcap=TYPE        use packet capture TYPE]) | ||||||
|  | AC_MSG_CHECKING(packet capture type) | ||||||
|  | if test ! -z "$with_pcap" ; then | ||||||
|  | 	V_PCAP="$withval" | ||||||
|  | elif test -r /dev/bpf0 ; then | ||||||
|  | 	V_PCAP=bpf | ||||||
|  | elif test -r /usr/include/net/pfilt.h ; then | ||||||
|  | 	V_PCAP=pf | ||||||
|  | elif test -r /dev/enet ; then | ||||||
|  | 	V_PCAP=enet | ||||||
|  | elif test -r /dev/nit ; then | ||||||
|  | 	V_PCAP=snit | ||||||
|  | elif test -r /usr/include/sys/net/nit.h ; then | ||||||
|  | 	V_PCAP=nit | ||||||
|  | elif test -r /usr/include/net/raw.h ; then | ||||||
|  | 	V_PCAP=snoop | ||||||
|  | elif test -r /usr/include/sys/dlpi.h ; then | ||||||
|  | 	V_PCAP=dlpi | ||||||
|  | elif test -r /usr/include/linux/socket.h ; then | ||||||
|  | 	V_PCAP=linux | ||||||
|  | elif test -c /dev/bpf0 ; then		# check again in case not readable | ||||||
|  | 	V_PCAP=bpf | ||||||
|  | elif test -c /dev/enet ; then		# check again in case not readable | ||||||
|  | 	V_PCAP=enet | ||||||
|  | elif test -c /dev/nit ; then		# check again in case not readable | ||||||
|  | 	V_PCAP=snit | ||||||
|  | else | ||||||
|  | 	V_PCAP=null | ||||||
|  | fi | ||||||
|  | AC_MSG_RESULT($V_PCAP) | ||||||
|  |  | ||||||
|  | case "$V_PCAP" in | ||||||
|  |  | ||||||
|  | dlpi) | ||||||
|  | 	AC_CHECK_HEADERS(sys/bufmod.h sys/dlpi_ext.h) | ||||||
|  | 	AC_MSG_CHECKING(for /dev/dlpi device) | ||||||
|  | 	if test -c /dev/dlpi ; then | ||||||
|  | 		AC_MSG_RESULT(yes) | ||||||
|  | 		AC_DEFINE(HAVE_DEV_DLPI) | ||||||
|  | 	else | ||||||
|  | 		AC_MSG_RESULT(no) | ||||||
|  | 		dir="/dev/dlpi" | ||||||
|  | 		AC_MSG_CHECKING(for $dir directory) | ||||||
|  | 		if test -d $dir ; then | ||||||
|  | 			AC_MSG_RESULT(yes) | ||||||
|  | 			AC_DEFINE_UNQUOTED(PCAP_DEV_PREFIX, "$dir") | ||||||
|  | 		else | ||||||
|  | 			AC_MSG_RESULT(no) | ||||||
|  | 		fi | ||||||
|  | 	fi | ||||||
|  | 	;; | ||||||
|  |  | ||||||
|  | linux) | ||||||
|  | 	AC_CHECK_HEADERS(net/if_arp.h) | ||||||
|  | 	AC_MSG_CHECKING(Linux kernel version) | ||||||
|  | 	AC_CACHE_VAL(ac_cv_linux_vers, | ||||||
|  | 	    ac_cv_linux_vers=`uname -r 2>&1 | \ | ||||||
|  | 		sed -n -e '$s/.* //' -e '$s/\..*//p'`) | ||||||
|  | 	AC_MSG_RESULT($ac_cv_linux_vers) | ||||||
|  | 	if test $ac_cv_linux_vers -lt 2 ; then | ||||||
|  | 		AC_MSG_ERROR(version 2 or higher required; see the INSTALL doc for more info) | ||||||
|  | 	fi | ||||||
|  | 	;; | ||||||
|  |  | ||||||
|  | null) | ||||||
|  | 	AC_MSG_WARN(cannot determine packet capture interface) | ||||||
|  | 	AC_MSG_WARN((see the INSTALL doc for more info)) | ||||||
|  | 	;; | ||||||
|  |  | ||||||
|  | esac | ||||||
|  |  | ||||||
|  | AC_LBL_LEX_AND_YACC(V_LEX, V_YACC, pcap_) | ||||||
|  |  | ||||||
|  | case "$target_os" in | ||||||
|  |  | ||||||
|  | aix*) | ||||||
|  | 	dnl Workaround to enable certain features | ||||||
|  | 	AC_DEFINE(_SUN) | ||||||
|  | 	;; | ||||||
|  |  | ||||||
|  | hpux9*) | ||||||
|  | 	AC_DEFINE(HAVE_HPUX9) | ||||||
|  | 	;; | ||||||
|  |  | ||||||
|  | hpux10.0*) | ||||||
|  | 	;; | ||||||
|  |  | ||||||
|  | hpux10.1*) | ||||||
|  | 	;; | ||||||
|  |  | ||||||
|  | hpux*) | ||||||
|  | 	dnl HPUX 10.20 and above is similar to HPUX 9... | ||||||
|  | 	AC_DEFINE(HAVE_HPUX10_20) | ||||||
|  | 	;; | ||||||
|  |  | ||||||
|  | sinix*) | ||||||
|  | 	AC_MSG_CHECKING(if SINIX compiler defines sinix) | ||||||
|  | 	AC_CACHE_VAL(ac_cv_cc_sinix_defined, | ||||||
|  | 		AC_TRY_COMPILE( | ||||||
|  | 		    [], | ||||||
|  | 		    [int i = sinix;], | ||||||
|  | 		    ac_cv_cc_sinix_defined=yes, | ||||||
|  | 		    ac_cv_cc_sinix_defined=no)) | ||||||
|  | 	    AC_MSG_RESULT($ac_cv_cc_sinix_defined) | ||||||
|  | 	    if test $ac_cv_cc_sinix_defined = no ; then | ||||||
|  | 		    AC_DEFINE(sinix) | ||||||
|  | 	    fi | ||||||
|  | 	;; | ||||||
|  |  | ||||||
|  | solaris*) | ||||||
|  | 	AC_DEFINE(HAVE_SOLARIS) | ||||||
|  | 	;; | ||||||
|  |  | ||||||
|  | linux*) | ||||||
|  | 	V_INCLS="$V_INCLS -Ilinux-include" | ||||||
|  | 	;; | ||||||
|  | esac | ||||||
|  |  | ||||||
|  | AC_CHECK_PROGS(V_RANLIB, ranlib, @true) | ||||||
|  |  | ||||||
|  | AC_LBL_DEVEL(V_CCOPT) | ||||||
|  |  | ||||||
|  | AC_LBL_SOCKADDR_SA_LEN | ||||||
|  |  | ||||||
|  | AC_LBL_UNALIGNED_ACCESS | ||||||
|  |  | ||||||
|  | if test "${srcdir}" = "." ; then | ||||||
|  | 	srcdirprefix="" | ||||||
|  | else | ||||||
|  | 	srcdirprefix="./" | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | if test -r ${srcdirprefix}lbl/gnuc.h ; then | ||||||
|  | 	rm -f gnuc.h | ||||||
|  | 	ln -s ${srcdirprefix}lbl/gnuc.h gnuc.h | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | rm -f bpf_filter.c | ||||||
|  | ln -s ${srcdirprefix}bpf/net/bpf_filter.c bpf_filter.c | ||||||
|  | rm -f net | ||||||
|  | ln -s ${srcdirprefix}bpf/net net | ||||||
|  |  | ||||||
|  | AC_SUBST(V_CCOPT) | ||||||
|  | AC_SUBST(V_INCLS) | ||||||
|  | AC_SUBST(V_LEX) | ||||||
|  | AC_SUBST(V_PCAP) | ||||||
|  | AC_SUBST(V_RANLIB) | ||||||
|  | AC_SUBST(V_YACC) | ||||||
|  |  | ||||||
|  | AC_PROG_INSTALL | ||||||
|  |  | ||||||
|  | AC_OUTPUT(Makefile) | ||||||
|  |  | ||||||
|  | if test -f .devel ; then | ||||||
|  | 	make depend | ||||||
|  | fi | ||||||
|  | exit 0 | ||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user
	 John Crispin
					John Crispin