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

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

?? ccio-rm-dma.c

?? 講述linux的初始化過程
?? C
字號:
/* * ccio-rm-dma.c: *	DMA management routines for first generation cache-coherent machines. *	"Real Mode" operation refers to U2/Uturn chip operation. The chip *      can perform coherency checks w/o using the I/O MMU. That's all we *      need until support for more than 4GB phys mem is needed. *  *	This is the trivial case - basically what x86 does. * *	Drawbacks of using Real Mode are: *	o outbound DMA is slower since one isn't using the prefetching *	  U2 can do for outbound DMA. *	o Ability to do scatter/gather in HW is also lost. *      o only known to work with PCX-W processor. (eg C360) *        (PCX-U/U+ are not coherent with U2 in real mode.) * * * This program 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. * * * Original version/author: *      CVSROOT=:pserver:anonymous@198.186.203.37:/cvsroot/linux-parisc *      cvs -z3 co linux/arch/parisc/kernel/dma-rm.c * *	(C) Copyright 2000 Philipp Rumpf <prumpf@tux.org> * * * Adopted for The Puffin Group's parisc-linux port by Grant Grundler. *	(C) Copyright 2000 Grant Grundler <grundler@puffin.external.hp.com> *	 */#include <linux/types.h>#include <linux/init.h>#include <linux/mm.h>#include <linux/string.h>#include <linux/pci.h>#include <asm/uaccess.h>#include <asm/pgalloc.h>#include <asm/io.h>#include <asm/hardware.h>#include <asm/page.h>/* Only chose "ccio" since that's what HP-UX calls it....** Make it easier for folks to migrate from one to the other :^)*/#define MODULE_NAME "ccio"#define U2_IOA_RUNWAY 0x580#define U2_BC_GSC     0x501#define UTURN_IOA_RUNWAY 0x581#define UTURN_BC_GSC     0x502static int ccio_driver_callback(struct hp_device *, struct pa_iodc_driver *);static struct pa_iodc_driver ccio_drivers_for[] = {   {HPHW_BCPORT, U2_BC_GSC, 0x0, 0xb, 0, 0x10,		DRIVER_CHECK_HVERSION +		DRIVER_CHECK_SVERSION + DRIVER_CHECK_HWTYPE,                MODULE_NAME, "U2 I/O MMU", (void *) ccio_driver_callback},   {HPHW_BCPORT, UTURN_BC_GSC, 0x0, 0xb, 0, 0x10,		DRIVER_CHECK_HVERSION +		DRIVER_CHECK_SVERSION + DRIVER_CHECK_HWTYPE,                MODULE_NAME, "Uturn I/O MMU", (void *) ccio_driver_callback},   {0,0,0,0,0,0,   0,   (char *) NULL, (char *) NULL, (void *) NULL }};#define IS_U2(id) ( \    (((id)->hw_type == HPHW_IOA) && ((id)->hversion == U2_IOA_RUNWAY)) || \    (((id)->hw_type == HPHW_BCPORT) && ((id)->hversion == U2_BC_GSC))  \)#define IS_UTURN(id) ( \    (((id)->hw_type == HPHW_IOA) && ((id)->hversion == UTURN_IOA_RUNWAY)) || \    (((id)->hw_type == HPHW_BCPORT) && ((id)->hversion == UTURN_BC_GSC))  \)void __init ccio_init(void){	register_driver(ccio_drivers_for);}static int ccio_dma_supported( struct pci_dev *dev, dma_addr_t mask)  {	if (dev == NULL) {		printk(MODULE_NAME ": EISA/ISA/et al not supported\n");		BUG();		return(0);	}	dev->dma_mask = mask;   /* save it */	/* only support 32-bit devices (ie PCI/GSC) */	return((int) (mask >= 0xffffffffUL));}static void *ccio_alloc_consistent(struct pci_dev *dev, size_t size,				 dma_addr_t *handle){	void *ret;		ret = (void *)__get_free_pages(GFP_ATOMIC, get_order(size));	if (ret != NULL) {		memset(ret, 0, size);		*handle = virt_to_phys(ret);	}	return ret;}	static void ccio_free_consistent(struct pci_dev *dev, size_t size,			       void *vaddr, dma_addr_t handle){	free_pages((unsigned long)vaddr, get_order(size));}static dma_addr_t ccio_map_single(struct pci_dev *dev, void *ptr, size_t size,			  int direction){	return virt_to_phys(ptr);}static void ccio_unmap_single(struct pci_dev *dev, dma_addr_t dma_addr,			    size_t size, int direction){	/* Nothing to do */}static int ccio_map_sg(struct pci_dev *dev, struct scatterlist *sglist, int nents, int direction){	int tmp = nents;        /* KISS: map each buffer seperately. */	while (nents) {		sg_dma_address(sglist) = ccio_map_single(dev, sglist->address, sglist->length, direction);		sg_dma_len(sglist) = sglist->length;		nents--;		sglist++;	}	return tmp;}static void ccio_unmap_sg(struct pci_dev *dev, struct scatterlist *sglist, int nents, int direction){#if 0	while (nents) {		ccio_unmap_single(dev, sg_dma_address(sglist), sg_dma_len(sglist), direction);		nents--;		sglist++;	}	return;#else	/* Do nothing (copied from current ccio_unmap_single()  :^) */#endif}static struct pci_dma_ops ccio_ops = {	ccio_dma_supported,	ccio_alloc_consistent,	ccio_free_consistent,	ccio_map_single,	ccio_unmap_single,	ccio_map_sg,	ccio_unmap_sg,	NULL,                   /* dma_sync_single : NOP for U2 */	NULL,                   /* dma_sync_sg     : ditto */};/*** Determine if u2 should claim this chip (return 0) or not (return 1).** If so, initialize the chip and tell other partners in crime they** have work to do.*/static intccio_driver_callback(struct hp_device *d, struct pa_iodc_driver *dri){	printk("%s found %s at 0x%p\n", dri->name, dri->version, d->hpa);/*** FIXME - should check U2 registers to verify it's really running** in "Real Mode".*/#if 0/* will need this for "Virtual Mode" operation */	ccio_hw_init(ccio_dev);	ccio_common_init(ccio_dev);#endif	hppa_dma_ops = &ccio_ops;	return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜亚洲国产au精品一区二区| 亚洲精品一区二区三区福利| 日韩中文字幕不卡| 久久久久久久久99精品| 欧美三级中文字幕| 美女视频网站黄色亚洲| 国产精品国产自产拍高清av王其| 欧美日韩一区中文字幕| 国产**成人网毛片九色| 欧美a级理论片| 亚洲一区二区欧美| 亚洲色图一区二区三区| 久久综合色之久久综合| 91麻豆精品国产91| 在线观看国产精品网站| 成人网在线免费视频| 精品亚洲免费视频| 久久国产生活片100| 视频一区国产视频| 亚洲电影视频在线| 亚洲图片欧美一区| 亚洲精品中文字幕乱码三区| 国产精品久久福利| 国产精品美女一区二区在线观看| 精品不卡在线视频| 亚洲精品一区在线观看| 久久奇米777| 国产精品视频一区二区三区不卡| 亚洲乱码国产乱码精品精可以看| 亚洲欧洲99久久| 亚洲欧美一区二区在线观看| 亚洲人被黑人高潮完整版| 一区二区三区欧美久久| 亚洲动漫第一页| 六月丁香综合在线视频| 国产一区二区导航在线播放| 国产黄色91视频| 91首页免费视频| 欧美影院一区二区三区| 日韩欧美自拍偷拍| 亚洲欧洲av一区二区三区久久| 亚洲免费av观看| 国内久久精品视频| 91福利精品第一导航| 欧美丰满一区二区免费视频| 国产日产欧美一区二区视频| 一区二区三区欧美| 国产福利精品一区| 欧美精品精品一区| 中文字幕一区三区| 精品一区二区三区免费| 91国偷自产一区二区三区观看| 欧美性猛交xxxx乱大交退制版 | 欧美在线视频全部完| 欧美一区二区三区人| 一区二区三区精密机械公司| 日韩在线一区二区| 91丨九色porny丨蝌蚪| 日韩欧美在线一区二区三区| 18成人在线视频| 国产高清亚洲一区| 欧美videofree性高清杂交| 亚洲日本丝袜连裤袜办公室| 国产一区在线精品| 日韩精品一区二区三区在线| 一区二区三区欧美日韩| 国产精品亚洲一区二区三区在线| 欧美美女网站色| 日本伊人精品一区二区三区观看方式| 成人综合婷婷国产精品久久| 日韩一区二区电影| 美腿丝袜亚洲一区| 欧美日韩国产一级| 亚洲国产视频一区二区| 色综合激情久久| 一区在线中文字幕| 91免费小视频| 性做久久久久久免费观看| 欧美午夜在线观看| 亚瑟在线精品视频| 久久精品人人做| 国产91丝袜在线18| 亚洲欧洲一区二区三区| 日本久久电影网| 日韩综合小视频| 精品日韩在线一区| 99re在线精品| 午夜影院在线观看欧美| 欧美一级国产精品| 高清免费成人av| 亚洲午夜一区二区三区| 精品国产三级a在线观看| jizzjizzjizz欧美| 亚洲一区二区中文在线| 日韩精品一区国产麻豆| 大美女一区二区三区| 午夜天堂影视香蕉久久| 久久久五月婷婷| 欧美中文字幕一区| 国产乱理伦片在线观看夜一区| 国产精品久久久久久久久果冻传媒| 在线亚洲一区二区| 国产999精品久久久久久| 国产激情一区二区三区四区 | 欧美一区二区美女| 亚洲午夜久久久久久久久久久| 91麻豆精品91久久久久久清纯 | 国产盗摄女厕一区二区三区| 国产精品狼人久久影院观看方式| 欧美日韩一区二区三区视频| 成人h动漫精品| 国产一区二区三区免费| 婷婷久久综合九色国产成人| 国产精品嫩草影院com| 亚洲精品一区在线观看| 日韩午夜在线播放| 欧美日韩国产综合一区二区三区| 国产麻豆91精品| 经典三级一区二区| 久久er精品视频| 经典一区二区三区| 精品无人码麻豆乱码1区2区| 偷拍亚洲欧洲综合| 日本伊人精品一区二区三区观看方式| 综合精品久久久| 色综合色综合色综合| 99精品久久久久久| 91免费版在线看| 91在线porny国产在线看| 成人av手机在线观看| 91香蕉视频在线| 在线看一区二区| 欧美美女一区二区| 欧美精品一区二区久久婷婷 | 日本sm残虐另类| 国产一区二区免费在线| 国产成人午夜视频| 色综合久久九月婷婷色综合| 欧美性色黄大片| 欧美成人国产一区二区| 中文字幕欧美三区| 一区二区久久久久久| 激情久久久久久久久久久久久久久久| 国产成人啪午夜精品网站男同| 风间由美一区二区三区在线观看| 99久久精品一区二区| 日韩一区二区视频在线观看| 国产网站一区二区三区| 亚洲综合久久久久| 国产成人精品一区二| 在线看国产日韩| 国产精品视频yy9299一区| 亚洲午夜电影网| 国产不卡视频在线播放| 制服丝袜国产精品| 中文字幕一区二区不卡| 蜜臀va亚洲va欧美va天堂| 91免费视频网址| 国产精品美女久久久久久久久久久| 偷拍日韩校园综合在线| 91麻豆自制传媒国产之光| 精品福利av导航| 美女www一区二区| 欧美三级一区二区| 亚洲天堂网中文字| 国产传媒欧美日韩成人| 亚洲精品一区二区三区影院| 亚洲成人av电影在线| 99精品久久99久久久久| 国产精品女人毛片| 成人网在线免费视频| 国产精品色哟哟网站| 成人性色生活片| 中日韩av电影| 成人手机电影网| 国产精品久久久久一区| av午夜一区麻豆| 亚洲视频 欧洲视频| 成人免费观看视频| 国产精品初高中害羞小美女文| 国产一级精品在线| 中文字幕第一区第二区| 成人av在线一区二区三区| 中文字幕一区二区不卡| 欧美性视频一区二区三区| 亚洲成人三级小说| 欧美xxxx在线观看| 国产成人福利片| 亚洲精品日日夜夜| 欧美视频完全免费看| 精品一区中文字幕| 中文字幕精品—区二区四季| 在线区一区二视频| 日韩av不卡在线观看| 日本一区二区三区久久久久久久久不 | 国产精品高潮呻吟| 欧美视频一区二区三区四区 | 91精品国产综合久久久蜜臀图片| 美国毛片一区二区三区| 国产精品嫩草99a|