亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cs89x.c

?? This a naive implementation of BOOTP/TFTPBOOT, the protocols to use to bootstrap a computer through
?? C
字號:
/*	Copyright 2001, 2002 Georges Menie (www.menie.org)	This file is part of Tftpnaive.    Tftpnaive is free software; you can redistribute it and/or modify    it under the terms of the GNU Lesser General Public License as published by    the Free Software Foundation; either version 2 of the License, or    (at your option) any later version.    Tftpnaive is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    GNU Lesser General Public License for more details.    You should have received a copy of the GNU Lesser General Public License    along with Tftpnaive; if not, write to the Free Software    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*/#include "tftpnaive.h"#include "68vz328.h"#include "io.h"#include "net.h"#include "cs89x.h"#include "baselib.h"#include "timer.h"#ifdef CS89_HW_SWAP#define writew_reg(w,r) writew(swapw(w),r)#define readw_reg(r) swapw(readw(r))#define writew_data(w,r) writew(w,r)#define readw_data(r) readw(r)#else#define writew_reg(w,r) writew(w,r)#define readw_reg(r) readw(r)#define writew_data(w,r) writew(swapw(w),r)#define readw_data(r) swapw(readw(r))#endifunsigned short swapw (unsigned short x){	return ((((unsigned short) (x)) << 8) | (((unsigned short) (x)) >> 8));}int cs89xSend (void *pkt, unsigned short length){	register unsigned short *p = pkt;	register int i;	writew_reg (CS89xTxCMDStartAll, CS89xIOTransmitCommand);	writew_reg (length, CS89xIOTransmitLength);	writew_reg (CS89xBusStatus, CS89xIOPacketPagePointer);	for (i = 10; i >= 0; --i) {		if ((readw_reg (CS89xIOPacketpageDataPort0) & CS89xBusSTRdy4TxNOW))			break;		usleep (30);	}	if (i < 0)		return ERR_TIMEOUT;	for (i = 0; i < (length + 1) >> 1; ++i, ++p) {		writew_data (*p, CS89xIOReceiveTransmitDataPort0);	}	writew_reg (CS89xTransmitterEvent, CS89xIOPacketPagePointer);	for (i = 100; i >= 0; --i) {		if ((readw_reg (CS89xIOPacketpageDataPort0) & CS89xTxEventTxOK))			break;		usleep (30);	}	if (i < 0)		return ERR_TIMEOUT;	return 0;}static void RxEvent (short isq){	register int idxi, idxo;	register unsigned short i, length, word;	register unsigned short *p;	idxi = idxiPBuf;	idxo = idxoPBuf;	idxi = (++idxi) % MAXPACKETBUF;	writew_reg (CS89xReceiveLength, CS89xIOPacketPagePointer);	length = readw_reg (CS89xIOPacketpageDataPort0);	if (idxi != idxo && length < MAXPACKETLEN) {		p = (unsigned short *) &packetBuf[idxi][0];		for (i = 0; i < (length + 1) >> 1; ++i) {			word = readw_data (CS89xIOReceiveTransmitDataPort0);			*p++ = word;		}		packetBufLen[idxi] = length;		idxiPBuf = idxi;	}	else {		/* no more buffers or packet too big, discard new packet */		for (i = 0; i < (length + 1) >> 1; ++i) {			(void) readw (CS89xIOReceiveTransmitDataPort0);		}		++netif.RxQFull;	}}/* * CS89x Interrupt Service Routine * */void __attribute__ ((interrupt)) cs89xISR (void){	register unsigned short isq;	++netif.TotalIRQ;	if (readl (ISR) & (1 << IRQ_NUM)) {		for (;;) {			isq = readw_reg (CS89xIOInterruptStatusQueue);			if (isq == 0)				break;			++netif.TotalEvent;			switch (isq & 0x3f) {			case 0x4:			// RxEvent				RxEvent (isq >> 6);				++netif.RxEvent;				break;			case 0x8:			// TxEvent				++netif.TxEvent;				break;			case 0xC:			// BufEvent				++netif.BufEvent;				break;			case 0x10:			// RxMiss				netif.RxMiss += isq >> 6;				break;			case 0x12:			// TxColl				netif.TxColl += isq >> 6;				break;			default:				++netif.UnknownEvent;				break;			}		}		orl (1 << IRQ_NUM, ISR);	}}int cs89xReset (void){	unsigned short pic1, pic2;	int t;	/* software reset */	writew_reg (CS89xSelfControl, CS89xIOPacketPagePointer);	writew_reg (CS89xSelfCTLRESET, CS89xIOPacketpageDataPort0);	for (t = 20; t >= 0; --t) {		if (!(readw_reg (CS89xIOPacketpageDataPort0) & CS89xSelfCTLRESET))			break;		usleep (100);	}	if (t < 0)		return ERR_TIMEOUT;	/* dummy reads to go 16 bits */	readb (CS89xIOReceiveTransmitDataPort0);	readb (CS89xIOReceiveTransmitDataPort0 + 1);	readb (CS89xIOReceiveTransmitDataPort0);	readb (CS89xIOReceiveTransmitDataPort0 + 1);	/* signature check */	if (readw_reg (CS89xIOPacketPagePointer) != 0x3000)		return ERR_CHIPID;	/* wait on eeprom busy */	writew_reg (CS89xSelfStatus, CS89xIOPacketPagePointer);	for (t = 150; t >= 0; --t) {		if (!(readw_reg (CS89xIOPacketpageDataPort0) & CS89xSelfSTSIBUSY))			break;		usleep (100);	}	if (t < 0)		return ERR_TIMEOUT;	/* wait on init */	writew_reg (CS89xSelfStatus, CS89xIOPacketPagePointer);	for (t = 400; t >= 0; --t) {		if ((readw_reg (CS89xIOPacketpageDataPort0) & CS89xSelfSTINITD))			break;		usleep (100);	}	if (t < 0)		return ERR_TIMEOUT;	/* EISA code check */	writew_reg (CS89xProductIdentificationCode, CS89xIOPacketPagePointer);	pic1 = readw_reg (CS89xIOPacketpageDataPort0);	pic2 = readw_reg (CS89xIOPacketpageDataPort1);	if (pic1 != CS89xEISACODE)		return ERR_CHIPID;	/* Bus control, disable interrupts */	writew_reg (CS89xBusControl, CS89xIOPacketPagePointer);	writew_reg (0, CS89xIOPacketpageDataPort0);	/* Line control, disable Tx and Rx */	writew_reg (CS89xLineControl, CS89xIOPacketPagePointer);	writew_reg (0, CS89xIOPacketpageDataPort0);	/* Disable Receive interrupts */	writew_reg (CS89xReceiverConfiguration, CS89xIOPacketPagePointer);	writew_reg (0, CS89xIOPacketpageDataPort0);	/* Disable Transmit interrupts */	writew_reg (CS89xTransmitConfiguration, CS89xIOPacketPagePointer);	writew_reg (0, CS89xIOPacketpageDataPort0);	/* force the LEDs off */	writew_reg (CS89xSelfControl, CS89xIOPacketPagePointer);	writew_reg (CS89xSelfCTLHC0E | CS89xSelfCTLHC1E,				CS89xIOPacketpageDataPort0);	return 0;}#define STATUSLOOPCOUNT 20int cs89xStatus (void){	int i;	unsigned short lst;	for (i = 0; i < STATUSLOOPCOUNT; ++i) {		writew_reg (CS89xLineStatus, CS89xIOPacketPagePointer);		if ((lst =			 readw_reg (CS89xIOPacketpageDataPort0)) & CS89xLineSTLinkOK)			break;		usleep (100000);	}	if (i >= STATUSLOOPCOUNT)		return ERR_LINK;	if (lst & CS89xLineSTAUI)		printf ("AUI port, ");	if (lst & CS89xLineST10BT)		printf ("10BT port, ");	if (lst & CS89xLineSTPolarityOK)		printf ("normal polarity, ");	else		printf ("reverse polarity, ");	printf ("IEEEIA ");	for (i = 0; i < 6; i += 2) {		unsigned short w;		writew_reg (CS89xIndividualAddress + i, CS89xIOPacketPagePointer);		w = readw_data (CS89xIOPacketpageDataPort0);		printf ("%s%02x:%02x", i ? ":" : "", (w >> 8) & 0xff, w & 0xff);	}	printf ("\n");	return 0;}int cs89xSetup (void){	int i;	/* IEEE Individual Address */	for (i = 0; i < 6; i += 2) {		unsigned short w = (netif.IEEEIA[i] << 8) | netif.IEEEIA[i + 1];		writew_reg (CS89xIndividualAddress + i, CS89xIOPacketPagePointer);		writew_data (w, CS89xIOPacketpageDataPort0);	}	/* Receive Frame selection */	writew_reg (CS89xReceiverControl, CS89xIOPacketPagePointer);	writew_reg (CS89xRxCTLRxOKA | CS89xRxCTLIndividualA |				CS89xRxCTLBroadcastA, CS89xIOPacketpageDataPort0);	/* Enable Receive interrupts */	writew_reg (CS89xReceiverConfiguration, CS89xIOPacketPagePointer);	writew_reg (CS89xRxCFGRxOKiE, CS89xIOPacketpageDataPort0);	/* Enable Transmit interrupts */	writew_reg (CS89xTransmitConfiguration, CS89xIOPacketPagePointer);	writew_reg (CS89xTxCFGJaberiE | CS89xTxCFG16ColliE,				CS89xIOPacketpageDataPort0);	/* IRQ selection (INTRQ0) */	writew_reg (CS89xInterruptNumber, CS89xIOPacketPagePointer);	writew_reg (0, CS89xIOPacketpageDataPort0);	/* Line control, enable Tx and Rx */	writew_reg (CS89xLineControl, CS89xIOPacketPagePointer);	writew_reg (CS89xLineCTLSerRxOn | CS89xLineCTLSerTxOn,				CS89xIOPacketpageDataPort0);	/* allow status LEDs, disable sleep/standby mode */	writew_reg (CS89xSelfControl, CS89xIOPacketPagePointer);	writew_reg (0, CS89xIOPacketpageDataPort0);	/* Enable interrupts */	writew_reg (CS89xBusControl, CS89xIOPacketPagePointer);	writew_reg (CS89xBusCTLEnableIRQ, CS89xIOPacketpageDataPort0);	return cs89xStatus ();}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久一夜天堂av一区二区三区| 日本少妇一区二区| 高清不卡一区二区在线| 精品国产一区二区在线观看| 国产毛片精品视频| 久久女同互慰一区二区三区| 久久国产精品72免费观看| 26uuu久久天堂性欧美| 久久精品国产99国产精品| 欧美一级搡bbbb搡bbbb| 国产在线精品免费| 国产视频一区二区在线| 国产99一区视频免费| 成人欧美一区二区三区| 久久久噜噜噜久久人人看| 国产成人亚洲精品狼色在线 | 成人免费电影视频| 中文字幕电影一区| 在线观看中文字幕不卡| 性做久久久久久免费观看| 欧美肥妇bbw| 国产精品毛片久久久久久| 一本色道亚洲精品aⅴ| 亚洲一区二区三区美女| 欧美中文字幕一区二区三区亚洲| 日韩av一区二区在线影视| 精品国产欧美一区二区| 国产suv精品一区二区6| 亚洲欧美精品午睡沙发| 欧美顶级少妇做爰| 精品一区二区三区香蕉蜜桃 | 欧美另类高清zo欧美| 亚洲成人免费av| xnxx国产精品| 91蜜桃传媒精品久久久一区二区| 中文字幕一区二区三区在线不卡| 69成人精品免费视频| 精品一区二区综合| 亚洲免费高清视频在线| 欧美不卡激情三级在线观看| 成人av在线播放网址| 一区二区在线免费| 久久久五月婷婷| 日本黄色一区二区| 男人操女人的视频在线观看欧美| 国产精品丝袜黑色高跟| 欧美日韩国产123区| 精品一区二区三区影院在线午夜| 日韩一区有码在线| 精品国产百合女同互慰| 欧美日韩1234| caoporen国产精品视频| 蜜桃精品在线观看| 亚洲一二三四区不卡| 久久久国际精品| 欧美日韩一区二区不卡| 91美女精品福利| 黄色日韩网站视频| 午夜精品久久久久影视| 日韩毛片精品高清免费| 久久综合色综合88| 欧美精品第1页| 色综合色狠狠综合色| 国产91在线看| 欧美aaaaaa午夜精品| 日韩av一级片| 玉米视频成人免费看| 欧美激情综合在线| 久久久不卡网国产精品二区| 在线成人av网站| 91尤物视频在线观看| 成人午夜av在线| 久久99久久精品| 亚洲bt欧美bt精品777| 亚洲成人动漫在线免费观看| 国产精品久久久久久一区二区三区| 欧美不卡123| 精品国产在天天线2019| 91精品国产全国免费观看| 在线看一区二区| 欧美探花视频资源| 色婷婷国产精品| 成人免费视频免费观看| www.激情成人| 国产精品12区| 国产一区二区三区免费| 国产精品影音先锋| 国产伦精品一区二区三区免费迷| 亚洲国产精品久久人人爱蜜臀| 一区二区三区不卡视频 | 成人夜色视频网站在线观看| 日韩中文字幕1| 亚洲二区在线观看| 亚洲第一av色| 欧美国产丝袜视频| 国产欧美综合在线| 国产视频亚洲色图| 亚洲欧美日韩在线| 亚洲美女一区二区三区| 一区二区三区欧美久久| 综合自拍亚洲综合图不卡区| 综合色天天鬼久久鬼色| 国产精品久久久久9999吃药| 亚洲柠檬福利资源导航| 欧美视频三区在线播放| 亚洲欧美日韩系列| 视频精品一区二区| 蜜臀av性久久久久av蜜臀妖精| 亚洲自拍与偷拍| 日韩电影免费一区| 捆绑调教美女网站视频一区| 日本午夜精品视频在线观看| 成人高清视频免费观看| 日本道色综合久久| 91行情网站电视在线观看高清版| 欧美日本一道本在线视频| 日韩欧美国产一区二区三区| 欧美日韩一区三区四区| 欧美精品一区二区三区在线播放 | 日韩中文字幕av电影| 韩国女主播一区二区三区| 久久精品免费看| 国产乱子轮精品视频| 91麻豆国产自产在线观看| 欧美一区二区在线视频| 久久久99精品久久| 亚洲免费av在线| 轻轻草成人在线| 国产成人精品一区二区三区网站观看| 国产麻豆91精品| 色激情天天射综合网| 日韩女优av电影在线观看| 亚洲三级在线看| 久久草av在线| 一本色道a无线码一区v| 久久久亚洲高清| 亚洲成av人在线观看| 国产一区 二区 三区一级| 日本大香伊一区二区三区| 久久影院电视剧免费观看| 亚洲精品videosex极品| 久久99国产精品麻豆| 色先锋资源久久综合| 久久久不卡影院| 亚洲欧洲制服丝袜| 蜜桃视频在线一区| 欧美日韩精品欧美日韩精品一综合| 久久你懂得1024| 亚洲va国产va欧美va观看| 国产丶欧美丶日本不卡视频| 在线成人av网站| 一色屋精品亚洲香蕉网站| 玖玖九九国产精品| 欧洲精品中文字幕| 中文字幕欧美三区| 麻豆国产欧美一区二区三区| 欧美日韩免费观看一区二区三区 | 奇米888四色在线精品| 一本色道久久综合亚洲91| 久久久久99精品国产片| 国产一区视频在线看| 欧美精品一级二级三级| 国产精品理论在线观看| 久久99这里只有精品| 制服.丝袜.亚洲.中文.综合| 亚洲成人精品在线观看| 99麻豆久久久国产精品免费优播| 欧美一区二区精品| 午夜视频在线观看一区二区三区 | 精品久久久久久久久久久院品网 | 一本久久精品一区二区| 欧美国产激情一区二区三区蜜月| 国产一区999| 日韩精品一区二区三区中文精品| 日韩精品欧美成人高清一区二区| 欧美日韩精品福利| 亚洲国产人成综合网站| 欧美三级中文字幕| 午夜精品福利在线| 91精品久久久久久久久99蜜臂| 一个色妞综合视频在线观看| 色悠悠亚洲一区二区| 亚洲视频免费观看| 91福利国产精品| 一区二区三区.www| 在线观看日产精品| 美女一区二区在线观看| 91精品国产麻豆| 免费人成精品欧美精品| 日韩欧美国产成人一区二区| 久久精品国产亚洲5555| 国产视频在线观看一区二区三区 | 成人综合在线视频| 亚洲精品视频在线看| 欧美在线|欧美| 日韩激情中文字幕| 欧美成人性战久久| 国产成人亚洲综合a∨婷婷图片| 亚洲美腿欧美偷拍| 欧美精品九九99久久|