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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ga.c

?? <B>Digital的Unix操作系統(tǒng)VAX 4.2源碼</B>
?? C
?? 第 1 頁 / 共 2 頁
字號:
/****************************************************************** ** gaintr()                                                     ** ** Interrupt from STIC						 ** **                                                              ** ******************************************************************/#ifdef notdef#define SUBMIT_PACKET(i) \	while (*pCom2d->intr_qpoll[i] == STAMP_BUSY) {}#else#define SUBMIT_PACKET(i) \	status = *pCom2d->intr_qpoll[i]#endif notdefgaintr(unit)    register int unit;{    GX_DEBUG(GX_NEVER,	     gx_puts("gaintr()\n");	     );    if (_gx_stic->ipdvint & STIC_INT_P) {		/* Packet Int */	register Com2dPtr pCom2d = (Com2dPtr) &gaComArea->SRV2DCom;	register int cp;	register ga_PacketPtr pPkt;	register int status;#ifdef notdef	gaPintr_count[unit]++;#endif notdef	/* clear *only* packet done interrupt */	_gx_stic->ipdvint = (_gx_stic->ipdvint | STIC_INT_P_WE) &			     ~(STIC_INT_E_WE | STIC_INT_V_WE | STIC_INT_P);	/* if were idle, dismiss this as a spurious interrupt */	if (pCom2d->lastRead == pCom2d->lastWritten ||	    !(pCom2d->intr_status & GA_INTR_ACTIVE)) return 1;	/*	 * If we are in the process of sending a packet through a cliplist,	 * fixup packet with next cliprect and resubmit.  If the last	 * cliprect just completed, clear the clipping status.	 */	if (pCom2d->intr_status & GA_INTR_CLIP) {	    if (pCom2d->numCliprect-- > 0) {		*pCom2d->fixCliprect = *pCom2d->pCliprect++;		SUBMIT_PACKET(pCom2d->lastRead);		return 1;	    } else {		pCom2d->intr_status &= ~GA_INTR_CLIP;	    }	}loop:	/* point past packet just completed */	cp = pCom2d->lastRead = NEXT_BUF(pCom2d, pCom2d->lastRead);	/* if no more packets to process, set idle status */	if (cp == pCom2d->lastWritten) {	    pCom2d->intr_status &= ~GA_INTR_ACTIVE;	    return 1;	}	pPkt = (ga_PacketPtr) gaComArea->IntrBuf[cp];	if (pPkt->un.un.opcode == N_PASSPACKET) {	    int clip_idx = (int) (unsigned short)		pPkt->un.PassPacket.cliplist_sync;	    if (clip_idx != N_NO_CLIPLIST) {		int nrects = gaComArea->ClipL[clip_idx].numClipRects;		int fix_off = DECODE_CLIP_INDEX(pPkt->un.PassPacket.data);		gaStampClipRect *pFixup =			(gaStampClipRect *) &pPkt->un.PassPacket.data[fix_off];		*pFixup = gaComArea->ClipL[clip_idx].clipRects[0];		if (nrects > 1) {		    pCom2d->pCliprect =				&gaComArea->ClipL[clip_idx].clipRects[1];		    pCom2d->numCliprect = nrects-1;		    pCom2d->fixCliprect = pFixup;		    pCom2d->intr_status |= GA_INTR_CLIP;		}	    }	    SUBMIT_PACKET(cp);	    return 1;	} else {			/* not a pass packet, skip it */	    goto loop;	} /* end if */    } else if (_gx_stic->ipdvint & STIC_INT_V) {	/* Vert Int */	gaVintr_count[unit]++;	_gx_stic->ipdvint = (_gx_stic->ipdvint | STIC_INT_V_WE) &			     ~(STIC_INT_E_WE | STIC_INT_P_WE | STIC_INT_V);    } else if (_gx_stic->ipdvint & STIC_INT_E) {	/* Error Int */	gaEintr_count[unit]++;	gx_init_stic();	cprintf("STIC intr 0x%x CSR 0x%x B:CSR 0x%x addr 0x%x dat 0x%x\n",		_gx_stic->ipdvint,		_gx_stic->sticsr, _gx_stic->buscsr,		_gx_stic->busadr, _gx_stic->busdat);    } else {						/* stray ??? */	gaSintr_count[unit]++;    }} /* end gaintr() */ga_config(qp, module_type)    register gxInfo *qp;    int module_type;{    qp->gxo = (char *)gao;    qp->stic_dma_rb = GA_POLL(gao);    if (module_type != STIC_OPT_2DA)	cprintf("ga_config: not 2DA, STIC modtype = %d\n", module_type);} /* end ga_config() *//****************************** * ga_getPacket(): *	We need to fix this so the console doesn't step on top of data *	structures used by the server. ??? XXX ******************************/int*ga_getPacket(){    static u_int i = 1;    register int *buf;    /* use nK buffers for now */    buf = gx_ringbuffer + ((GA_CONSIZ >> 2) * i) + 3;    i ^= 1;			/* toggle between buffers */    return (buf);} /* end ga_getPacket() *//****************************** * ga_sendPacket(): ******************************/intga_sendPacket(buf)                      /* -> # polls; 0 == timeout */    char *buf;                          /* virtual addr */{    register u_long i;    volatile u_long *poll;    register int save_ipdvint;    poll = (u_long *)((char *)GA_POLL(gao) + GX_SYS_TO_DMA((int)buf));    /* disable packet-done interrupts */    _gx_stic->ipdvint = ((save_ipdvint =_gx_stic->ipdvint) | STIC_INT_P_WE) &		       ~(STIC_INT_E_WE | STIC_INT_V_WE | STIC_INT_P_EN);    wbflush();                          /* make sure all writes completed */    /*     * wait for stic to be ready to accept next packet.  note that we never     * wait forever.  we'll time out and go ahead and see if the stic will     * accept a packet anyway.  if not, _then_ we complain...     */    for (i = 0; i < STAMP_RETRIES; i++) {	if (_gx_stic->ipdvint & STIC_INT_P)	    break;	DELAY(STAMP_DELAY);    }    /*     * Restore ipdvint state, clearing the STIC_INT_P bit.  If interrupts     * were enabled before, they will be re-enabled.  gaintr() is capable     * of dealing with spurious interrupts generated while the server is     * running.     */    _gx_stic->ipdvint = (save_ipdvint | STIC_INT_P_WE) &		       ~(STIC_INT_E_WE | STIC_INT_V_WE | STIC_INT_P);    wbflush();    if (*poll != STAMP_GOOD) {	printf("STIC dead?!\n ");	printf("CSR 0x%x Bus CSR 0x%x addr 0x%x dat 0x%x int 0x%x\n",		_gx_stic->sticsr, _gx_stic->buscsr,		_gx_stic->busadr, _gx_stic->busdat, _gx_stic->ipdvint);	_gx_stic->ipdvint = save_ipdvint | STIC_INT_WE;	wbflush();	return(-1);    }    return (i);} /* end ga_sendPacket() */#if 0#define GA_INTR_MASK	0xfffff000int ga_vm_cnt[3] = { 0 };ga_vm_hook(cmd, vpn)			/* alias p_dev_VM_maint */    int cmd, vpn;{    if (GX_HAVESERVER)    {	int va = (int)ptob(vpn) & GA_INTR_MASK; /* now va, page aligned */	switch (cmd)	{	 case PDEVCMD_ONE:	    GX_DEBUG(GX_GAB,		     gx_printf("ga_vm_hook(cmd=1,va=0x%x)\n", cmd, va);		     );	    (ga_vm_cnt[0])++;	    break;	 case PDEVCMD_ALL:	    GX_DEBUG(GX_GAB,		     gx_printf("ga_vm_hook(cmd=a,va=0x%x)\n", cmd, va);		     );	    (ga_vm_cnt[1])++;	    break;	 case PDEVCMD_TOP:	    GX_DEBUG(GX_GAB,		     gx_printf("ga_vm_hook(cmd=t,va=0x%x)\n", cmd, va);		     );	    (ga_vm_cnt[2])++;	    break;	 default:	    GX_DEBUG(GX_GAB,		     gx_printf("ga_vm_hook(cmd=? 0x%x)\n", cmd);		     );	    cprintf("ga_vm_hook: bad cmd 0x%x\n", cmd);	    panic("ga_vm_hook");	}    }    else	printf("ga_vm_hook: no server?\n");    return 0;}/* end ga_vm_hook. */ga_open(dev, flag){#   ifdef p_dev_VM_maint    /* express interest in server's vm activity... */    if (GX_IAMSERVER)    {	gx_serverp->p_dev_VM_maint = ga_vm_hook;	GX_DEBUG(GX_GAB,		 gx_printf("ga_open: pid=%d\n", gx_serverp->p_pid);		 );    }#   endif}/* end ga_open. */#endif 0/****************************************************************** ** ga_cons_init():                                              ** **    Graphic device console initialization.  This routine gets ** **    called before anything else, and is (among other things)  ** **    the only safe place to allocate physically contiguous     ** **    memory.                                                   ** **                                                              ** ******************************************************************/extern int console_magic;ga_cons_init(){    register int reg;    int tmp1,tmp2;      		/* ROM debug only */    extern int cpu;    if (cpu == DS_3100)  return (0);    reg = tc_where_option("ga");    if (reg == 0) return (0);    reg = PHYS_TO_K1(reg);    /*     * 3max console ROM changes for enhanced TURBOchannel support     * have eliminated the ability to have multiple outputs.  If     * new ROM is in place, use the output device specifiec by ROM.     */    if (console_magic != 0x30464354) {      tmp1 = atoi(prom_getenv("osconsole"));      if (tmp1 & 0x1) gx_console |= GRAPHIC_DEV;      if (tmp1 & 0x8) gx_console |= CONS_DEV;    }    else {      tmp1 = rex_getenv("osconsole");      if (strlen(tmp1) > 1) {	if (tmp1 & 0x1) gx_console = GRAPHIC_DEV;      }      else {	if (tmp1 & 0x8) gx_console = CONS_DEV;      }    }    GX_DEBUG(GX_GAB,	     gx_printf("ga_cons_init(reg=0x%x)\n", reg);	     );    gao = (gaMap *)reg;    /* begin required linkage */    _gx_vdac       = GA_VDAC(gao);    _gx_vdacReset  = GA_ROM(gao);	/* write-only */    _gx_stamp	   = reg + 0xc0000;	/* stic stamp space    @ 0x..0c0000 */    _gx_stic	   = GA_STIC(gao);	/* stic register space @ 0x..180000 */    _gx_modtype	   = ((_gx_stic->modcl & ~STIC_CF_CONFIG_OPTION)		      | STIC_OPT_2DA_SH);    _gx_config     = ga_config;    _gx_ioctl	   = ga_ioctl;    _gx_getPacket  = ga_getPacket;    _gx_sendPacket = ga_sendPacket;    /* begin optional linkage */#   if 0    _gx_open	   = ga_open;#   endif 0    _gx_close	   = ga_close;    /*     * The STIC DMA area for the 2D accelerator has unusual     * alignment requirements:  The physical starting address must be a     * 32K-aligned address.     * Because all the stamp packets have a 3-longword microcode header,     * the the ring buffer must start 12 bytes before that.     */    /*     * This is number of bytes to km_alloc().  128Kb + (1 page) extra     * are allocated, within which will be located a 32Kb-aligned     * STIC packet DMA area.     */    gx_priv_size = sizeof(gxPriv) + _128K + NBPG;#   ifdef GA_ALLOC_KM    KM_ALLOC(gx_priv, gxPriv *, gx_priv_size, KM_DEVBUF, KM_NOW_CL_CO_CA);    gx_priv = (gxPriv *) svtophy(gx_priv);    if ((u_long)gx_priv >= (0x800000-gx_priv_size)) {	printf("ga_cons_init: km_alloc out-of-bounds 0x%x\n", gx_priv);	panic("ga_cons_init");    }    gx_priv = (gxPriv *) (PHYS_TO_K1(gx_priv));#   endif#   ifdef GA_ALLOC_DT    gx_priv = (gxPriv *) (PHYS_TO_K1(Ring2da));#   endif#   ifdef GA_ALLOC_TX    gx_priv = (gxPriv *) PHYS_TO_K1(ga_dummy);#   endif    tmp1 = (int)&gx_priv->ringbufferoffset + 4;#   define TMPMASK ((1<<15) - 1)    gx_priv->ringbufferoffset =	( (tmp1 + TMPMASK & ~TMPMASK) - 12 - (int)gx_priv ) / 4;#   undef TMPMASK      /* if before the beginning, adjust upwards by 8K *longwords* */    if (gx_priv->ringbufferoffset < 0)	gx_priv->ringbufferoffset += (1 << 13);    {	register int i;	gaComArea = (ga_ComAreaPtr) gx_ringbuffer;	GX_DEBUG(GX_YAK,		 gx_printf("ga_cons_init: comarea=0x%x\n", gaComArea);		 );	for (i = 0; i < GA_QUEUE_PACKETS; i++)	{	    gaComArea->SRV2DCom.intr_qpoll[i] =		(long *)((char *)GA_POLL(gao) +			 GX_SYS_TO_DMA(&gaComArea->IntrBuf[i][3]));	    GX_DEBUG(GX_YAK,		     gx_printf("ga_cons_init: Q#%d qpoll=0x%x intrbuf=0x%x\n",			       i, gaComArea->SRV2DCom.intr_qpoll[i],			       gaComArea->IntrBuf[i]);		     );	}    }    gxp = &(gx_info);    GX_DEBUG(GX_GAB,	     int *pb1;	     int *pb2;	     gx_printf("ga_cons_init: priv=0x%x vdac=0x%x, rboff=%d\n",		       gx_priv, _gx_vdac, gx_priv->ringbufferoffset);	     pb1 = pb2 = ga_getPacket();	     gx_puts("ga_cons_init: buf        stic       dma        poll\n");	     do {		 u_long r1;		 u_long r2;		 r1 = GX_SYS_TO_STIC(pb2);		 r2 = GX_SYS_TO_DMA(pb2);		 gx_printf("              0x%8x 0x%8x 0x%8x 0x%8x\n",			   pb2, r1, r2, (char *)GA_POLL(gao) + r2 );		 pb2 = ga_getPacket();	     } while (pb1 != pb2);	     );    ga_init_cons();    return (1);} /* end ga_cons_init() */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91视频在线观看| 国产一区二区在线观看免费| 国产欧美日产一区| 久久综合九色综合欧美98| 欧美日韩激情一区| 欧美日韩免费一区二区三区| 91官网在线观看| 色www精品视频在线观看| 一本大道久久a久久综合| eeuss鲁一区二区三区| 成人av资源网站| voyeur盗摄精品| 91在线视频免费观看| 91视频在线观看| 欧美色视频在线观看| 在线观看国产精品网站| 92国产精品观看| 99久久婷婷国产精品综合| 亚洲桃色在线一区| 中文字幕一区二区5566日韩| 亚洲欧美日韩在线| 亚洲精品成a人| 国产精品久久久久久久久图文区 | 91福利视频在线| 91一区一区三区| 欧美图区在线视频| 欧美日韩国产成人在线91| 欧美精品成人一区二区三区四区| 欧美日韩一级二级三级| 欧美一卡2卡三卡4卡5免费| 欧美一级欧美三级在线观看| 日韩欧美国产wwwww| 日韩欧美国产1| 26uuu国产一区二区三区| 国产亚洲综合色| www国产精品av| 国产亚洲一区二区三区四区 | 精品亚洲国产成人av制服丝袜| 国产伦理精品不卡| 粉嫩嫩av羞羞动漫久久久| 狠狠色伊人亚洲综合成人| 国产传媒久久文化传媒| www.欧美色图| 欧美日韩专区在线| 欧美一区二区在线播放| 26uuu国产在线精品一区二区| 国产蜜臀av在线一区二区三区| 成人免费一区二区三区视频| 午夜久久久久久电影| 国产乱妇无码大片在线观看| av不卡免费电影| 大白屁股一区二区视频| 色中色一区二区| 欧美一区二区三区婷婷月色| 国产欧美日韩精品一区| 一个色在线综合| 国内精品久久久久影院薰衣草| fc2成人免费人成在线观看播放| 91精品麻豆日日躁夜夜躁| 久久久久国产精品免费免费搜索| 亚洲视频一区二区免费在线观看| 亚洲午夜免费视频| 青青草91视频| 成人午夜精品在线| 99re亚洲国产精品| 精品久久国产老人久久综合| 亚洲欧美日韩在线| 国产精品亚洲а∨天堂免在线| 久久精品视频一区| 亚洲成人福利片| 久久国产精品99久久久久久老狼 | 成人一区二区视频| www.成人网.com| 成人黄色小视频| 国产成人精品免费一区二区| 91精品国产色综合久久ai换脸| 国产亚洲综合在线| 免费观看一级欧美片| av中文一区二区三区| 精品欧美一区二区三区精品久久| 亚洲欧洲av色图| 日本午夜一本久久久综合| 99久久婷婷国产综合精品| 7799精品视频| 亚洲嫩草精品久久| 国产一区二区三区免费看| 欧美亚洲另类激情小说| 欧美韩国日本一区| 激情国产一区二区| 欧美日韩精品一区二区天天拍小说 | 欧美一级久久久| 亚洲黄色小说网站| 老司机午夜精品| 欧美在线免费观看亚洲| 久久精品视频免费| 日本女人一区二区三区| 成人免费黄色在线| 日韩视频一区在线观看| 亚洲精品ww久久久久久p站| 99视频有精品| 国产精品嫩草99a| 国产精品91一区二区| 日韩免费看的电影| 亚洲国产裸拍裸体视频在线观看乱了 | 国产校园另类小说区| 精品在线免费视频| 91国产免费观看| 亚洲午夜久久久久久久久久久| 成人动漫在线一区| 国产精品伦理在线| 不卡一区在线观看| 1024成人网| 99精品视频在线观看免费| 中文字幕一区视频| 99精品视频中文字幕| 一区二区三区丝袜| 国产电影一区在线| 亚洲三级久久久| av在线不卡免费看| 一区二区三区.www| 91国偷自产一区二区开放时间| 亚洲一区在线观看免费观看电影高清 | 国产夜色精品一区二区av| 成人中文字幕在线| 中文字幕+乱码+中文字幕一区| 久久成人免费日本黄色| 精品免费国产一区二区三区四区| 一区二区在线电影| 欧美区视频在线观看| 伊人婷婷欧美激情| 91精品久久久久久久99蜜桃| 日韩精品欧美成人高清一区二区| 欧美精品99久久久**| 日本女人一区二区三区| 国产日韩欧美精品电影三级在线| 天天av天天翘天天综合网| 91麻豆精品国产自产在线| 亚洲午夜激情av| 久久久午夜电影| 风间由美一区二区av101| 一区二区在线观看av| 在线不卡中文字幕| 日韩激情在线观看| 精品美女在线播放| 成人免费视频视频| 一区二区三区 在线观看视频| 色诱视频网站一区| 亚洲在线中文字幕| 日韩视频123| 国产成人亚洲综合色影视| 亚洲一区在线看| 2020日本不卡一区二区视频| 91视频在线看| 日本怡春院一区二区| 国产精品美女一区二区三区| 色88888久久久久久影院按摩| 久久99在线观看| 中文字幕在线观看一区二区| 日韩一区二区三区在线观看| 国产剧情一区在线| 亚洲高清不卡在线观看| 日韩视频在线观看一区二区| 色中色一区二区| 精品伊人久久久久7777人| 亚洲摸摸操操av| 日韩一区二区三区视频| 色综合久久中文字幕| 日本人妖一区二区| 成人免费一区二区三区视频| 欧美一级久久久久久久大片| 色又黄又爽网站www久久| 久久电影网站中文字幕| 亚洲国产毛片aaaaa无费看| 久久综合色综合88| 欧美裸体bbwbbwbbw| 国产福利不卡视频| 久久99精品久久久久婷婷| 亚洲欧美日韩小说| 国产精品久久久久影院| 91蜜桃传媒精品久久久一区二区| 国产综合久久久久久鬼色| 国产精品乱码人人做人人爱| 欧美v国产在线一区二区三区| 色婷婷国产精品综合在线观看| 韩国女主播一区| 国产精品九色蝌蚪自拍| 欧美一二三在线| 欧美色图片你懂的| 成人av在线播放网址| 国产麻豆精品在线| 日韩电影在线一区二区三区| 亚洲精品免费电影| 国产清纯白嫩初高生在线观看91| 精品日韩欧美在线| 欧美日韩中文精品| 欧美性受xxxx黑人xyx| 播五月开心婷婷综合| 高清国产一区二区| 另类小说一区二区三区| 首页欧美精品中文字幕|