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

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

?? clgd546x.c

?? 這是一個同樣來自貝爾實驗室的和UNIX有著淵源的操作系統, 其簡潔的設計和實現易于我們學習和理解
?? C
字號:
#include <u.h>#include <libc.h>#include <bio.h>#include "pci.h"#include "vga.h"/* * Laguna Visual Media Accelerators Family CL-GD546x. */typedef struct {	Pcidev*	pci;	uchar*	mmio;	int	mem;	int	format;			/* graphics and video format */	int	threshold;		/* display threshold */	int	tilectrl;		/* tiling control */	int	vsc;			/* vendor specific control */	int	control;		/* control */	int	tilectrl2D3D;		/* tiling control 2D3D */} Laguna;enum {	Format		= 0xC0,		/* graphics and video format */	Threshold	= 0xEA,		/* Display Threshold */	TileCtrl	= 0x2C4,	Vsc		= 0x3FC,	/* Vendor Specific Control (32-bits) */	Control		= 0x402,	/* 2D Control */	TileCtrl2D3D	= 0x407,	/* (8-bits) */};static intmmio8r(Laguna* laguna, int offset){	return *(laguna->mmio+offset) & 0xFF;}static voidmmio8w(Laguna* laguna, int offset, int data){	*(laguna->mmio+offset) = data;}static intmmio16r(Laguna* laguna, int offset){	return *((ushort*)(laguna->mmio+offset)) & 0xFFFF;}static voidmmio16w(Laguna* laguna, int offset, int data){	*((ushort*)(laguna->mmio+offset)) = data;}static intmmio32r(Laguna* laguna, int offset){	return *((ulong*)(laguna->mmio+offset));}static voidmmio32w(Laguna* laguna, int offset, int data){	*((ulong*)(laguna->mmio+offset)) = data;}static voidsnarf(Vga* vga, Ctlr* ctlr){	int f, i;	uchar *mmio;	Pcidev *p;	Laguna *laguna;	/*	 * Save all the registers, even though we'll only	 * change a handful.	 */	for(i = 0x06; i < 0x20; i++)		vga->sequencer[i] = vgaxi(Seqx, i);	for(i = 0x09; i < 0x0C; i++)		vga->graphics[i] = vgaxi(Grx, i);	for(i = 0x19; i < 0x20; i++)		vga->crt[i] = vgaxi(Crtx, i);	if(vga->private == nil){		vga->private = alloc(sizeof(Laguna));		if((p = pcimatch(0, 0x1013, 0)) == nil)			error("%s: not found\n", ctlr->name);		switch(p->did){		case 0xD0:			/* CL-GD5462 */			vga->f[1] = 170000000;			break;		case 0xD4:			/* CL-GD5464 */		case 0xD6:			/* CL-GD5465 */			vga->f[1] = 230000000;			break;		default:			error("%s: not found\n", ctlr->name);		}		if((f = open("#v/vgactl", OWRITE)) < 0)			error("%s: can't open vgactl\n", ctlr->name);		if(write(f, "type clgd546x", 13) != 13)			error("%s: can't set type\n", ctlr->name);		close(f);			mmio = segattach(0, "clgd546xmmio", 0, p->mem[1].size);		if(mmio == (void*)-1)			error("%s: can't attach mmio segment\n", ctlr->name);		laguna = vga->private;		laguna->pci = p;		laguna->mmio = mmio;	}	laguna = vga->private;	laguna->mem = (vga->sequencer[0x14] & 0x07)+1;	laguna->format = mmio16r(laguna, Format);	laguna->threshold = mmio16r(laguna, Threshold);	laguna->tilectrl = mmio16r(laguna, TileCtrl);	laguna->vsc = mmio32r(laguna, Vsc);	laguna->control = mmio16r(laguna, Control);	laguna->tilectrl2D3D = mmio8r(laguna, TileCtrl2D3D);	vga->vma = vga->vmz = laguna->pci->mem[0].size;	ctlr->flag |= Hlinear;	ctlr->flag |= Fsnarf;}static voidinit(Vga* vga, Ctlr* ctlr){	Mode *mode;	ushort x;	int format, interleave, fetches, nointerleave, notile, pagesize, tiles;	Laguna *laguna;	nointerleave = 1;	notile = 1;	pagesize = 0;	mode = vga->mode;	if(vga->f[0] == 0)		vga->f[0] = vga->mode->frequency;	if(vga->f[0] > vga->f[1])		error("%s: invalid pclk - %lud\n", ctlr->name, vga->f[0]);	if(mode->z > 8)		error("%s: depth %d not supported\n", ctlr->name, mode->z);	/*	 * VCLK3	 */	clgd54xxclock(vga, ctlr);	vga->misc |= 0x0C;	vga->sequencer[0x1E] = vga->n[0];	vga->sequencer[0x0E] = (vga->d[0]<<1)|vga->p[0];	vga->sequencer[0x07] = 0x00;	if(mode->z == 8)		vga->sequencer[0x07] |= 0x01;	vga->crt[0x14] = 0;	vga->crt[0x17] = 0xC3;	/*	 * Overflow bits.	 */	vga->crt[0x1A] = 0x00;	x = mode->ehb>>3;	if(x & 0x40)		vga->crt[0x1A] |= 0x10;	if(x & 0x80)		vga->crt[0x1A] |= 0x20;	if(vga->crt[0x16] & 0x100)		vga->crt[0x1A] |= 0x40;	if(vga->crt[0x16] & 0x200)		vga->crt[0x1A] |= 0x80;	vga->crt[0x1B] = 0x22;	if(vga->crt[0x13] & 0x100)		vga->crt[0x1B] |= 0x10;	vga->crt[0x1D] = 0x00;	if(vga->crt[0x13] & 0x200)		vga->crt[0x1D] |= 0x01;	vga->crt[0x1E] = 0x00;	if(vga->crt[0x10] & 0x400)		vga->crt[0x1E] |= 0x01;	if(vga->crt[0x15] & 0x400)		vga->crt[0x1E] |= 0x02;	if(vga->crt[0x12] & 0x400)		vga->crt[0x1E] |= 0x04;	if(vga->crt[0x06] & 0x400)		vga->crt[0x1E] |= 0x08;	if(vga->crt[0x04] & 0x100)		vga->crt[0x1E] |= 0x10;	if(vga->crt[0x02] & 0x100)		vga->crt[0x1E] |= 0x20;	if(vga->crt[0x01] & 0x100)		vga->crt[0x1E] |= 0x40;	if(vga->crt[0x00] & 0x100)		vga->crt[0x1E] |= 0x80;	vga->graphics[0x0B] = 0x00;	if(vga->vmz > 1024*1024)		vga->graphics[0x0B] |= 0x20;	if(mode->interlace == 'v'){		vga->crt[0x19] = vga->crt[0x00]/2;		vga->crt[0x1A] |= 0x01;	}	if(vga->linear && (ctlr->flag & Hlinear))		ctlr->flag |= Ulinear;	laguna = vga->private;	/*	 * Ignore wide tiles for now, this simplifies things.	 */	if(mode->x <= 640)		tiles = 5;	else if(mode->x <= 1024)		tiles = 8;	else if(mode->x <= 1280)		tiles = 10;	else if(mode->x <= 1664)		tiles = 13;	else if(mode->x <= 2048)		tiles = 16;	else if(mode->x <= 2560)		tiles = 20;	else if(mode->x <= 3228)		tiles = 26;	else		tiles = 32;	fetches = tiles;		/* -1? */	if(nointerleave)		interleave = 0;	else switch(laguna->mem){	default:		interleave = 0;		break;	case 2:		interleave = 1;		break;	case 4:	case 8:		interleave = 2;		break;	}	if(mode->z == 8)		format = 0;	else if(mode->z == 16)		format = (1<<12)|(2<<9);	else if(mode->z == 24)		format = (2<<12)|(2<<9);	else		format = (2<<12)|(2<<9);	//if(ctlr->flag & Ulinear)	//	laguna->vsc |= 0x10000000;	//else		laguna->vsc &= ~0x10000000;	laguna->format = format;	laguna->threshold = (interleave<<14)|(fetches<<8)|0x14;	laguna->tilectrl &= 0x3F;	laguna->tilectrl |= (interleave<<14)|(tiles<<8);	if(!notile)		laguna->tilectrl |= 0x80;	if(pagesize == 1)		laguna->tilectrl |= 0x10;	laguna->tilectrl2D3D = (interleave<<6)|tiles;	laguna->control = 0;	if(notile)		laguna->control |= 0x1000;	if(pagesize == 1)		laguna->control |= 0x0200;}static voidload(Vga* vga, Ctlr*){	Laguna *laguna;	vgaxo(Seqx, 0x0E, vga->sequencer[0x0E]);	vgaxo(Seqx, 0x1E, vga->sequencer[0x1E]);	vgaxo(Seqx, 0x07, vga->sequencer[0x07]);	if(vga->mode->interlace == 'v')		vgaxo(Crtx, 0x19, vga->crt[0x19]);	vgaxo(Crtx, 0x1A, vga->crt[0x1A]);	vgaxo(Crtx, 0x1B, vga->crt[0x1B]);	vgaxo(Crtx, 0x1D, vga->crt[0x1D]);	vgaxo(Crtx, 0x1E, vga->crt[0x1E]);	vgaxo(Grx, 0x0B, vga->graphics[0x0B]);	laguna = vga->private;	mmio16w(laguna, Format, laguna->format);	mmio32w(laguna, Vsc, laguna->vsc);	mmio16w(laguna, Threshold, laguna->threshold);	mmio16w(laguna, TileCtrl, laguna->tilectrl);	mmio8w(laguna, TileCtrl2D3D, laguna->tilectrl2D3D);	mmio16w(laguna, Control, laguna->control);}static voiddump(Vga* vga, Ctlr* ctlr){	int i;	char *name;	Laguna *laguna;	name = ctlr->name;	printitem(name, "Seq06");	for(i = 0x06; i < 0x20; i++)		printreg(vga->sequencer[i]);	printitem(name, "Crt19");	for(i = 0x19; i < 0x20; i++)		printreg(vga->crt[i]);	printitem(name, "Gr09");	for(i = 0x09; i < 0x0C; i++)		printreg(vga->graphics[i]);	laguna = vga->private;	Bprint(&stdout, "\n");	Bprint(&stdout, "%s mem\t\t%d\n", ctlr->name, laguna->mem*1024*1024);	Bprint(&stdout, "%s Format\t\t%uX\n", ctlr->name, laguna->format);	Bprint(&stdout, "%s Threshold\t\t\t%uX\n",		ctlr->name, laguna->threshold);	Bprint(&stdout, "%s TileCtrl\t\t\t%uX\n", ctlr->name, laguna->tilectrl);	Bprint(&stdout, "%s Vsc\t\t%uX\n", ctlr->name, laguna->vsc);	Bprint(&stdout, "%s Control\t\t%uX\n", ctlr->name, laguna->control);	Bprint(&stdout, "%s TileCtrlC2D3D\t\t%uX\n",		ctlr->name, laguna->tilectrl2D3D);}Ctlr clgd546x = {	"clgd546x",			/* name */	snarf,				/* snarf */	0,				/* options */	init,				/* init */	load,				/* load */	dump,				/* dump */};Ctlr clgd546xhwgc = {	"clgd546xhwgc",			/* name */	0,				/* snarf */	0,				/* options */	0,				/* init */	0,				/* load */	0,				/* dump */};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美aaa在线| 成人手机电影网| 国产精品一级二级三级| 色综合中文字幕| 精品日韩av一区二区| 亚洲桃色在线一区| 韩国欧美国产1区| 在线亚洲一区二区| 国产亚洲一本大道中文在线| 亚洲第一电影网| 91在线视频官网| 国产亚洲午夜高清国产拍精品| 亚洲va韩国va欧美va精品| 波波电影院一区二区三区| 欧美一区二区三区在线观看视频 | 午夜av电影一区| 国产精品乡下勾搭老头1| 欧美日韩在线综合| 国产精品福利一区二区| 韩国成人福利片在线播放| 欧美丰满嫩嫩电影| 亚洲人成网站影音先锋播放| 国产不卡视频一区二区三区| 精品久久久久香蕉网| 日本在线观看不卡视频| 欧美日韩一区二区三区四区| 亚洲黄色性网站| caoporn国产精品| 国产精品色哟哟网站| 国产成人综合在线播放| 欧美成人三级电影在线| 午夜精品久久久| 在线观看日产精品| 亚洲欧美日韩国产手机在线| 不卡电影一区二区三区| 国产精品欧美极品| 国产99精品视频| 国产网站一区二区| 成人看片黄a免费看在线| 日本一区二区三区在线观看| 国产成人在线免费| 国产精品区一区二区三区| 国产精品自拍毛片| 中文字幕成人网| 成人免费看视频| 亚洲丝袜精品丝袜在线| 在线免费亚洲电影| 亚洲午夜成aⅴ人片| 欧美精品1区2区| 久久精品av麻豆的观看方式| 久久综合一区二区| 国产精品一区二区久久不卡| 国产欧美一区二区在线| 99精品视频一区二区| 亚洲国产精品麻豆| 日韩一区二区视频在线观看| 韩日av一区二区| 日韩一区在线播放| 欧美美女黄视频| 久久精品国产亚洲一区二区三区| 精品电影一区二区| 99re这里只有精品6| 午夜免费久久看| 精品国产91洋老外米糕| 波多野结衣中文一区| 亚洲国产美国国产综合一区二区| 日韩视频免费观看高清完整版 | 国产揄拍国内精品对白| 国产精品免费免费| 欧美视频在线不卡| 国产一区视频导航| 夜夜爽夜夜爽精品视频| 日韩欧美在线综合网| 成人av资源下载| 午夜久久久久久| 久久久精品人体av艺术| 欧美日韩五月天| 国产成人在线观看| 首页欧美精品中文字幕| 欧美国产综合一区二区| 制服丝袜在线91| 成人爱爱电影网址| 日本美女视频一区二区| 自拍偷拍欧美精品| 欧美不卡视频一区| 欧美日韩综合一区| 波多野结衣在线aⅴ中文字幕不卡| 亚洲v日本v欧美v久久精品| 久久精品视频一区二区三区| 欧美三级乱人伦电影| 成人国产精品免费| 麻豆成人久久精品二区三区小说| 亚洲天天做日日做天天谢日日欢 | 在线观看日韩毛片| 国产99精品国产| 久久激情五月婷婷| 五月综合激情婷婷六月色窝| 亚洲图片另类小说| 欧美国产日韩精品免费观看| 欧美va亚洲va在线观看蝴蝶网| 日本电影欧美片| 99久久综合狠狠综合久久| 国产一区二区三区免费观看| 欧美a级一区二区| 亚洲成人三级小说| 一区二区三区不卡视频在线观看| 国产精品丝袜在线| 国产清纯美女被跳蛋高潮一区二区久久w| 欧美一级欧美三级| 在线成人免费观看| 欧美色图激情小说| 欧美日精品一区视频| 欧美视频一区在线| 色呦呦日韩精品| 色综合欧美在线视频区| 色综合久久久久久久久久久| 9i在线看片成人免费| 99免费精品视频| 色婷婷av一区二区三区之一色屋| www.激情成人| 一本大道av伊人久久综合| 色综合色综合色综合色综合色综合| 91在线云播放| 99精品视频中文字幕| 色8久久人人97超碰香蕉987| 色婷婷精品大在线视频 | 91视频.com| 成人在线综合网| 国产成人精品亚洲午夜麻豆| 国产一区二区0| 国产成人99久久亚洲综合精品| 成人中文字幕在线| 色呦呦网站一区| 欧美在线啊v一区| 欧美日韩高清一区| 欧美电影精品一区二区| 精品99一区二区三区| 国产精品久久看| 亚洲欧美福利一区二区| 亚洲国产美国国产综合一区二区| 日韩电影网1区2区| 国产在线播精品第三| 波多野结衣91| 欧美高清视频不卡网| 欧美大肚乱孕交hd孕妇| 国产欧美日韩视频在线观看| 综合精品久久久| 日本va欧美va精品发布| 国产成a人亚洲精| 在线看国产一区二区| 欧美电影免费观看高清完整版在| 中文字幕av资源一区| 亚洲自拍欧美精品| 精品在线免费观看| 99re这里都是精品| 日韩一级成人av| 亚洲人精品午夜| 麻豆成人免费电影| 91毛片在线观看| 亚洲精品一线二线三线无人区| 中文字幕制服丝袜一区二区三区| 亚洲欧美一区二区三区国产精品 | 国产精品网曝门| 亚洲图片欧美一区| 国产suv一区二区三区88区| 色悠久久久久综合欧美99| 精品国产乱码久久久久久蜜臀| 国产精品麻豆欧美日韩ww| 日本亚洲免费观看| 色菇凉天天综合网| 国产日韩高清在线| 日韩影院在线观看| 一本大道久久a久久综合| 欧美精品一区男女天堂| 亚洲超碰精品一区二区| 成人app下载| 精品三级在线观看| 偷拍日韩校园综合在线| 91美女福利视频| 中文字幕av免费专区久久| 激情综合网激情| 日韩一区二区免费在线电影| 亚洲精品高清在线观看| 成人高清视频在线观看| 久久美女艺术照精彩视频福利播放| 亚洲成av人片在线观看无码| 91香蕉视频污| 国产精品美日韩| 国产精品影视在线| 精品美女在线观看| 青青草国产精品97视觉盛宴| 欧美影片第一页| 一区二区视频在线看| 成人黄色国产精品网站大全在线免费观看 | 麻豆精品一二三| 欧美日本视频在线| 亚洲va国产天堂va久久en| 日本久久电影网| 亚洲天堂2016| 色视频成人在线观看免|