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

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

?? skyeye_mach_s3c4510b.c

?? skyeye是一個可以模擬嵌入式硬件開發板的系統軟件
?? C
字號:
/*skyeye_mach_s3c4510b.c - define machine s3c4510b for skyeyeCopyright (C) 2003 Skyeye Develop Groupfor help please send mail to <skyeye-developer@lists.gro.clinux.org>This program is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe 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 ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program; if not, write to the Free SoftwareFoundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*//** 06/20/2005	move ethernet simulation to dev_net_s3c4510b.c* 		walimis <wlm@student.dlut.edu.cn>** 9/05/2004	add ethernet controller support.*		get patch from <telpro2003@yahoo.com.cn>* 		walimis <wlm@student.dlut.edu.cn>** 10/05/2003	correct interrupt support. now it can boot uclinux to invoke shell.* 		walimis <wlm@student.dlut.edu.cn>** 7/21/2003	correct timer support.* 		now it can boot uclinux.* 		walimis <wlm@student.dlut.edu.cn>** 7/17/2003	add interrupt, timer and uart support.* 		walimis <wlm@student.dlut.edu.cn>** 3/28/2003 	init this file.* 		add machine s3c4510b's function.Most taken from original armio.c* 		include: s3c4510b_mach_init, s3c4510b_io_do_cycle* 		s3c4510b_io_read_word, s3c4510b_io_write_word*		walimis <walimi@peoplemail.com.cn>** */#include "armdefs.h"#include "s3c4510b.h"//zzc:2005-1-1#ifdef __CYGWIN__//chy 2005-07-28#include <time.h>//teawater add DBCT_TEST_SPEED 2005.10.04---------------------------------------/*struct timeval{int tv_sec;int tv_usec;};*///AJ2D--------------------------------------------------------------------------#endif /*  *//* 2007-01-18 added by Anthony Lee : for new uart device frame */#include "skyeye_uart.h"ARMword s3c4510b_io_read_word (ARMul_State * state, ARMword addr);void s3c4510b_io_write_word (ARMul_State * state, ARMword addr, ARMword data);/* s3c4510b Internal IO Registers* */typedef struct s3c4510b_io{	/*System Manager control */	ARMword syscfg;	ARMword clkcon;	/*Interrupt Controller Registers */	ARMword intmod;	ARMword intpnd;	ARMword intmsk;	ARMword intoffset;	ARMword intpndtst;	ARMword intoset_fiq;	ARMword intoset_irq;	/*UART Registers */	ARMword ulcon0;	ARMword ulcon1;	ARMword ucon0;	ARMword ucon1;	ARMword ustat0;	ARMword ustat1;	ARMword utxbuf0;	ARMword utxbuf1;	ARMword urxbuf0;	ARMword urxbuf1;	ARMword ubrdiv0;	ARMword ubrdiv1;	/*Timers Registers */	ARMword tmod;	ARMword tdata0;	ARMword tdata1;	int tcnt0;	int tcnt1;} s3c4510b_io_t;static s3c4510b_io_t s3c4510b_io;#define io s3c4510b_io#define ENABLE_TIMER0 io.tmod & 0x1#define ENABLE_TIMER1 io.tmod & 0x8//extern int skyeye_net_on;static unsigned char mac_buf[4096];static voids3c4510b_update_int (ARMul_State * state){	ARMword requests = io.intpnd & (~io.intmsk & INT_MASK_INIT);	state->NfiqSig = (requests & io.intmod) ? LOW : HIGH;	state->NirqSig = (requests & ~io.intmod) ? LOW : HIGH;} static voids3c4510b_set_interrupt (unsigned int irq){	io.intpnd |= (1 << irq);} static ints3c4510b_pending_intr (u32 interrupt){	return ((io.intpnd & (1 << interrupt)));}static voids3c4510b_update_intr (void *mach){	struct machine_config *mc = (struct machine_config *) mach;	ARMul_State *state = (ARMul_State *) mc->state;	s3c4510b_update_int (state);} static voids3c4510b_io_reset (ARMul_State * state){	memset (&s3c4510b_io, 0, sizeof (s3c4510b_io));	io.syscfg = 0x37ffff91;	io.intmsk = INT_MASK_INIT;	io.intoffset = io.intoset_fiq = io.intoset_irq = 0x00000054;	io.ustat0 = io.ustat1 = 0xc0;	io.tcnt0 = io.tcnt1 = 0xffffffff;};						/*s3c4510b io_do_cycle */voids3c4510b_io_do_cycle (ARMul_State * state){	/*Timer */	if (ENABLE_TIMER0) {		io.tcnt0--;		if (io.tcnt0 < 0) {			io.tcnt0 = io.tdata0;			s3c4510b_set_interrupt (INT_TIMER0);			s3c4510b_update_int (state);			return;		}	}	if (ENABLE_TIMER1) {		if (--io.tcnt1 < 0) {			io.tcnt1 = io.tdata1;			s3c4510b_set_interrupt (INT_TIMER1);			s3c4510b_update_int (state);		}	}	 /*UART*/	{		/* 2007-01-18 modified by Anthony Lee : for new uart device frame */		struct timeval tv;		unsigned char buf;		tv.tv_sec = 0;		tv.tv_usec = 0;		if(skyeye_uart_read(-1, &buf, 1, &tv, NULL) > 0)		{			//ctrl_c support,replace by ctrl_a			if (buf == 1) buf = 3;			io.urxbuf0 = io.urxbuf1 = (int) buf;			io.ustat0 |= UART_LSR_DR;			io.ustat1 |= UART_LSR_DR;			if (!(io.intpnd & (1 << INT_UARTRX0))			    || !(io.intpnd & (1 << INT_UARTRX1))) {				if ((io.ucon0 & 0x3) == 0x1) {					s3c4510b_set_interrupt (INT_UARTRX0);					s3c4510b_update_int (state);					return;				}				if ((io.ucon1 & 0x3) == 0x1) {					s3c4510b_set_interrupt (INT_UARTRX1);					s3c4510b_update_int (state);					return;				}			}		}	}	s3c4510b_update_int (state);}								/* IO Read Routine								 * */ARMwords3c4510b_io_read_byte (ARMul_State * state, ARMword addr){	//printf("SKYEYE: s3c4510b_io_read_byte error\n");	s3c4510b_io_read_word (state, addr);}ARMwords3c4510b_io_read_halfword (ARMul_State * state, ARMword addr){	//printf("SKYEYE: s3c4510b_io_read_halfword error\n");	s3c4510b_io_read_word (state, addr);}ARMwords3c4510b_io_read_word (ARMul_State * state, ARMword addr){	ARMword data = -1;	switch (addr) {	case SYSCFG:		data = io.syscfg;		break;	case CLKCON:		data = io.clkcon;		break;	case INTMOD:		data = io.intmod;		break;	case INTPND:		data = io.intpnd;		break;	case INTMSK:		data = io.intmsk;		break;	case INTOFFSET:	case INTPNDTST:		data = io.intpndtst;		break;	case INTOSET_FIQ:		data = io.intoset_fiq;		break;	case INTOSET_IRQ:		{			/*find which interrupt is pending */			int i;			for (i = 0; i < 26; i++) {				if (io.intpnd & (1 << i))					break;			}			if (i < 26) {				data = (i << 2);			}			else				data = 0x54;	/*no interrupt is pending, 0x54 is init data. */		}		//data = io.intoset_irq;		break;	 /*UART*/ case ULCON0:		data = io.ulcon0;		break;	case ULCON1:		data = io.ulcon1;		break;	case UCON0:		data = io.ucon0;		break;	case UCON1:		data = io.ucon1;		break;	case USTAT0:		data = io.ustat0;		io.ustat0 &= ~0xf;		break;	case USTAT1:		data = io.ustat1;		io.ustat1 &= ~0xf;		break;		//case UTXBUF0:		//case UTXBUF1:	case URXBUF0:		data = io.urxbuf0;		io.ustat0 &= ~UART_LSR_DR;		break;	case URXBUF1:		data = io.urxbuf1;		io.ustat1 &= ~UART_LSR_DR;		break;	case UBRDIV0:		data = io.ubrdiv0;		break;	case UBRDIV1:		data = io.ubrdiv1;		break;		/*Timer */	case TMOD:		data = io.tmod;		break;	case TDATA0:		data = io.tdata0;		break;	case TDATA1:		data = io.tdata1;		break;	case TCNT0:		data = io.tcnt0;		break;	case TCNT1:		data = io.tcnt1;		break;	default:		SKYEYE_DBG ("%s (addr = 0x%08x)\n", __FUNCTION__, addr);		break;	}	return data;}																																			/* IO Write Routine																																			 * */voids3c4510b_io_write_byte (ARMul_State * state, ARMword addr, ARMword data){	//printf("SKYEYE: s3c4510b_io_write_byte error\n");	s3c4510b_io_write_word (state, addr, data);} voids3c4510b_io_write_halfword (ARMul_State * state, ARMword addr, ARMword data){	//printf("SKYEYE: s3c4510b_io_write_halfword error\n");	s3c4510b_io_write_word (state, addr, data);} voids3c4510b_io_write_word (ARMul_State * state, ARMword addr, ARMword data){	switch (addr) {	case SYSCFG:		io.syscfg = data;		break;	case CLKCON:		io.clkcon = data;		break;	case INTMOD:		io.intmod = data;		break;	case INTPND:		/*when write bit 1, we clear apropiate pendind bit.		 * */		io.intpnd &= (~data & INT_MASK_INIT);		break;	case INTMSK:		io.intmsk = data;		break;	case INTOFFSET:	case INTPNDTST:		io.intpndtst = io.intpnd = data;		break;	case INTOSET_FIQ:		io.intoset_fiq = data;		break;	case INTOSET_IRQ:		io.intoset_irq = data;		break;	 /*UART*/ case ULCON0:		io.ulcon0 = data;		break;	case ULCON1:		io.ulcon1 = data;		break;	case UCON0:		io.ucon0 = data;		break;	case UCON1:		io.ucon1 = data;		break;	case USTAT0:		io.ustat0 = data;		break;	case USTAT1:		io.ustat1 = data;		break;	case UTXBUF0:		{			char c = data;			/* 2007-01-18 modified by Anthony Lee : for new uart device frame */			skyeye_uart_write(-1, &c, 1, NULL);			io.ustat0 |= (UART_LSR_THRE | UART_LSR_TEMT);			if ((io.ucon0 & 0xc) == 0xc) {	/*enable interrupt */				s3c4510b_set_interrupt (INT_UARTTX0);				s3c4510b_update_int (state);			}		}		break;	case UTXBUF1:		break;	case UBRDIV0:		io.ubrdiv0 = data;		break;	case UBRDIV1:		io.ubrdiv1 = data;		break;		/*Timer */	case TMOD:		io.tmod = data;		if (ENABLE_TIMER0)			io.tcnt0 = io.tdata0;		if (ENABLE_TIMER1)			io.tcnt1 = io.tdata1;		break;	case TDATA0:		if (!ENABLE_TIMER0)			io.tdata0 = data;		/*we manually set tdata0 register,  uclinux's data is so big */		io.tdata0 = 0xfff;		break;	case TDATA1:		//if (!ENABLE_TIMER1)		io.tdata1 = data;		break;	case TCNT0:		io.tcnt0 = data;		break;	case TCNT1:		io.tcnt1 = data;		break;	default:		SKYEYE_DBG ("%s(0x%08x) = 0x%08x\n", __FUNCTION__, addr,			    data);		break;	}}voids3c4510b_mach_init (ARMul_State * state, machine_config_t * this_mach){	ARMul_SelectProcessor (state, ARM_v4_Prop);	state->lateabtSig = HIGH;	this_mach->mach_io_do_cycle = s3c4510b_io_do_cycle;	this_mach->mach_io_reset = s3c4510b_io_reset;	this_mach->mach_io_read_word = s3c4510b_io_read_word;	this_mach->mach_io_write_word = s3c4510b_io_write_word;	this_mach->mach_io_read_halfword = s3c4510b_io_read_halfword;	this_mach->mach_io_write_halfword = s3c4510b_io_write_halfword;	this_mach->mach_io_read_byte = s3c4510b_io_read_byte;	this_mach->mach_io_write_byte = s3c4510b_io_write_byte;	this_mach->mach_update_int = s3c4510b_update_int;	this_mach->mach_set_intr = s3c4510b_set_interrupt;	this_mach->mach_pending_intr = s3c4510b_pending_intr;	this_mach->mach_update_intr = s3c4510b_update_intr;	//this_mach->mach_mem_read_byte = s3c4510b_mem_read_byte;	//this_mach->mach_mem_write_byte = s3c4510b_mem_write_byte;	this_mach->state = (void *) state;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美夫妻性生活| 日韩欧美一级片| 欧美精品第1页| 日本一区二区免费在线| 午夜精品福利久久久| 国产一级精品在线| 欧美日韩精品一区二区天天拍小说| 久久免费精品国产久精品久久久久| 一区二区三区精品视频在线| 久久精工是国产品牌吗| 成年人午夜久久久| 精品av久久707| 天堂成人免费av电影一区| caoporm超碰国产精品| 久久久久国产成人精品亚洲午夜| 亚洲成人资源网| 色婷婷亚洲综合| 中文字幕不卡三区| 国产在线麻豆精品观看| 日韩丝袜情趣美女图片| 亚洲高清不卡在线| 色菇凉天天综合网| 亚洲天天做日日做天天谢日日欢| 国产一区久久久| 欧美变态tickle挠乳网站| 天堂成人国产精品一区| 欧美中文字幕亚洲一区二区va在线| 国产精品视频第一区| 国产精品综合在线视频| 精品捆绑美女sm三区| 免费av网站大全久久| 7777精品伊人久久久大香线蕉| 亚洲精品一二三| 色婷婷综合久久久中文字幕| 亚洲柠檬福利资源导航| 91首页免费视频| 亚洲女人小视频在线观看| 一本一本大道香蕉久在线精品| 国产精品免费丝袜| 色综合欧美在线| 一区二区三区欧美日韩| 欧美日韩久久不卡| 奇米精品一区二区三区四区| 日韩午夜激情视频| 精品亚洲国内自在自线福利| 26uuu色噜噜精品一区二区| 国产综合色精品一区二区三区| 精品国产精品网麻豆系列| 国模一区二区三区白浆| 国产欧美精品区一区二区三区 | www.欧美日韩| 精品国产一区久久| 国产一区二区精品久久91| 国产亚洲欧美在线| 99免费精品在线观看| 亚洲人吸女人奶水| 欧美另类一区二区三区| 蜜桃av一区二区三区| 久久―日本道色综合久久| 成人激情文学综合网| 一区二区三区精品| 日韩欧美在线一区二区三区| 国产成人超碰人人澡人人澡| 亚洲免费在线电影| 91精品国产综合久久小美女| 国产精品水嫩水嫩| 欧美精品一卡二卡| 人妖欧美一区二区| 久久亚洲精精品中文字幕早川悠里 | 亚洲美女免费视频| 欧美伊人精品成人久久综合97| 日韩高清一级片| 久久久国产精品午夜一区ai换脸| 91玉足脚交白嫩脚丫在线播放| 石原莉奈在线亚洲三区| 中国色在线观看另类| 欧美视频第二页| 国产成a人无v码亚洲福利| 亚洲国产你懂的| 久久精品视频一区二区| 欧美亚洲自拍偷拍| 国产成人免费视| 午夜伊人狠狠久久| 国产精品高潮呻吟| 日韩免费高清av| 色婷婷综合久色| 国产成人超碰人人澡人人澡| 日韩av二区在线播放| 自拍偷拍亚洲综合| 久久久午夜精品| 在线不卡中文字幕| 91久久精品一区二区| 丁香网亚洲国际| 久久成人免费网站| 五月天一区二区| 亚洲另类色综合网站| 国产亚洲视频系列| 精品人在线二区三区| 欧美日韩国产综合视频在线观看| fc2成人免费人成在线观看播放| 久久99深爱久久99精品| 亚洲福利一二三区| 亚洲激情成人在线| 亚洲色图在线播放| 国产精品国产自产拍高清av| 国产亚洲一区二区在线观看| 欧美大片顶级少妇| 91精品麻豆日日躁夜夜躁| 在线观看网站黄不卡| 色综合中文字幕| 成人午夜视频免费看| 国产成人夜色高潮福利影视| 国产乱理伦片在线观看夜一区| 免费日韩伦理电影| 免费在线观看一区| 免费视频最近日韩| 毛片不卡一区二区| 免费观看成人鲁鲁鲁鲁鲁视频| 日日夜夜一区二区| 日本aⅴ免费视频一区二区三区| 亚洲va欧美va天堂v国产综合| 亚洲一区av在线| 午夜激情一区二区三区| 视频一区在线播放| 美女精品一区二区| 激情久久久久久久久久久久久久久久| 日本不卡123| 国内国产精品久久| 国产成人aaa| 9色porny自拍视频一区二区| 91色porny在线视频| 日韩精品一区二区在线| 欧美一卡在线观看| 久久久久久免费网| 亚洲欧洲三级电影| 一区二区三区中文字幕在线观看| 一区二区三区精品久久久| 日本一不卡视频| 国产裸体歌舞团一区二区| 成人美女在线观看| 色94色欧美sute亚洲线路一久 | 成人av网址在线| 色综合视频在线观看| 在线91免费看| 国产午夜精品在线观看| 亚洲男人的天堂在线观看| 日韩高清在线观看| 国产精品一区二区视频| 一本久道中文字幕精品亚洲嫩| 欧美精选午夜久久久乱码6080| 精品捆绑美女sm三区| 亚洲欧洲国产日韩| 日韩国产一二三区| 国产99久久久国产精品| 欧美性大战久久| 亚洲精品一区二区在线观看| 1024成人网色www| 免费不卡在线视频| 色综合久久综合中文综合网| 欧美成人免费网站| 一区二区成人在线视频 | 久久在线免费观看| 亚洲嫩草精品久久| 精品一区二区在线看| 95精品视频在线| 欧美v国产在线一区二区三区| 亚洲欧美偷拍另类a∨色屁股| 日本不卡中文字幕| 色偷偷久久一区二区三区| 久久色.com| 婷婷丁香久久五月婷婷| av亚洲产国偷v产偷v自拍| 日韩欧美第一区| 亚洲欧美日韩中文播放| 国产一区日韩二区欧美三区| 欧美日韩国产综合一区二区三区| 中文字幕中文在线不卡住| 精品一二线国产| 欧美一区二区在线看| 一区二区在线观看不卡| 懂色av中文一区二区三区| 欧美大黄免费观看| 日日骚欧美日韩| 日本高清不卡在线观看| 中文成人综合网| 狠狠色丁香久久婷婷综合_中 | 亚洲a一区二区| 色综合久久99| 国产精品天干天干在观线| 国产精品一区二区无线| 日韩精品最新网址| 免费成人在线观看| 在线播放欧美女士性生活| 亚洲国产日日夜夜| 欧美无人高清视频在线观看| 成人欧美一区二区三区白人 | 99久久久久久| 欧美国产日韩一二三区| 国产成人午夜精品5599| 久久嫩草精品久久久精品一|