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

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

?? methods.c

?? OpenBIOS是一個開源的BIOS實現
?? C
字號:
/*  *   Creation Date: <2004/08/28 18:38:22 greg> *   Time-stamp: <2004/08/28 18:38:22 greg> *    *	<methods.c> *	 *	Misc device node methods * *   Copyright (C) 2004 Greg Watson *    *   Based on MOL specific code which is *    *   Copyright (C) 2003, 2004 Samuel Rydh (samuel@ibrium.se) *    *   This program is free software; you can redistribute it and/or *   modify it under the terms of the GNU General Public License *   version 2 *    */#include "openbios/config.h"#include "openbios/bindings.h"#include "libc/string.h"#include "briq/briq.h"#include "ofmem.h"/************************************************************************//*	RTAS (run-time abstraction services)				*//************************************************************************/#ifdef USE_RTASDECLARE_NODE( rtas, INSTALL_OPEN, 0, "+/rtas" );/* ( physbase -- rtas_callback ) */static voidrtas_instantiate( void ){	int physbase = POP();	int s=0x1000, size = (int)of_rtas_end - (int)of_rtas_start;	ulong virt;		while( s < size )		s += 0x1000;	virt = ofmem_claim_virt( 0, s, 0x1000 );	ofmem_map( physbase, virt, s, -1 );	memcpy( (char*)virt, of_rtas_start, size );	printk("RTAS instantiated at %08x\n", physbase );	flush_icache_range( (char*)virt, (char*)virt + size );	PUSH( physbase );}NODE_METHODS( rtas ) = {	{ "instantiate",	rtas_instantiate },	{ "instantiate-rtas",	rtas_instantiate },};#endif/************************************************************************//*	stdout								*//************************************************************************/DECLARE_NODE( vfd_stdout, INSTALL_OPEN, 0, "Tdisplay" );/* ( addr len -- actual ) */static voidstdout_write( void ){	int len = POP();	char *addr = (char*)POP();	char *s = malloc( len + 1 );	strncpy_nopad( s, addr, len );	s[len]=0;		printk( "%s", s );	//vfd_draw_str( s );	free( s );	PUSH( len );}NODE_METHODS( vfd_stdout ) = {	{ "write",	stdout_write	},};/************************************************************************//*	tty								*//************************************************************************/DECLARE_NODE( tty, INSTALL_OPEN, 0, "/packages/terminal-emulator" );/* ( addr len -- actual ) */static voidtty_read( void ){	int ch, len = POP();	char *p = (char*)POP();	int ret=0;	if( len > 0 ) {		ret = 1;		ch = getchar();		if( ch >= 0 ) {			*p = ch;		} else {			ret = 0;		}	}	PUSH( ret );}/* ( addr len -- actual ) */static voidtty_write( void ){	int i, len = POP();	char *p = (char*)POP();	for( i=0; i<len; i++ )		putchar( *p++ );	RET( len );}NODE_METHODS( tty ) = {	{ "read",	tty_read	},	{ "write",	tty_write	},};/************************************************************************//*	client interface 'quiesce'					*//************************************************************************/DECLARE_NODE( ciface, 0, 0, "/packages/client-iface" );/* ( -- ) */static voidciface_quiesce( ulong args[], ulong ret[] ) {#if 0	ulong msr;	/* This seems to be the correct thing to do - but I'm not sure */	asm volatile("mfmsr %0" : "=r" (msr) : );	msr &= ~(MSR_IR | MSR_DR);	asm volatile("mtmsr %0" :: "r" (msr) );#endif	printk("=============================================================\n\n");}/* ( -- ms ) */static voidciface_milliseconds( ulong args[], ulong ret[] ) {	extern unsigned long get_timer_freq();	static ulong mticks=0, usecs=0;	ulong t;        	asm volatile("mftb %0" : "=r" (t) : );	if( mticks )		usecs += get_timer_freq() / 1000000 * ( t-mticks );	mticks = t;	PUSH( usecs/1000 );}NODE_METHODS( ciface ) = {	{ "quiesce",		ciface_quiesce		},	{ "milliseconds",	ciface_milliseconds	},};/************************************************************************//*	MMU/memory methods						*//************************************************************************/DECLARE_NODE( memory, INSTALL_OPEN, 0, "/memory" );DECLARE_NODE( mmu, INSTALL_OPEN, 0, "/cpu@0" );DECLARE_NODE( mmu_ciface, 0, 0, "/packages/client-iface" );/* ( phys size align --- base ) */static voidmem_claim( void ){	int align = POP();	int size = POP();	int phys = POP();	int ret = ofmem_claim_phys( phys, size, align );		if( ret == -1 ) {		printk("MEM: claim failure\n");		throw( -13 );		return;	}	PUSH( ret );}/* ( phys size --- ) */static voidmem_release( void ){	POP(); POP();}/* ( phys size align --- base ) */static voidmmu_claim( void ){	int align = POP();	int size = POP();	int phys = POP();	int ret = ofmem_claim_virt( phys, size, align );	if( ret == -1 ) {		printk("MMU: CLAIM failure\n");		throw( -13 );		return;	}	PUSH( ret );}/* ( phys size --- ) */static voidmmu_release( void ){	POP(); POP();}/* ( phys virt size mode -- [ret???] ) */static void mmu_map( void ){	int mode = POP();	int size = POP();	int virt = POP();	int phys = POP();	int ret;		/* printk("mmu_map: %x %x %x %x\n", phys, virt, size, mode ); */	ret = ofmem_map( phys, virt, size, mode );	if( ret ) {		printk("MMU: map failure\n");		throw( -13 );		return;	}}/* ( virt size -- ) */static voidmmu_unmap( void ){	POP(); POP();}/* ( virt -- false | phys mode true ) */static voidmmu_translate( void ){	ulong mode;	int virt = POP();	int phys = ofmem_translate( virt, &mode );	if( phys == -1 ) {		PUSH( 0 );	} else {		PUSH( phys );		PUSH( (int)mode );		PUSH( -1 );	}}/* ( virt size align -- baseaddr|-1 ) */static voidciface_claim( void ){	int align = POP();	int size = POP();	int virt = POP();	int ret = ofmem_claim( virt, size, align );	/* printk("ciface_claim: %08x %08x %x\n", virt, size, align ); */	PUSH( ret );}/* ( virt size -- ) */static voidciface_release( void ){	POP();	POP();}NODE_METHODS( memory ) = {	{ "claim",		mem_claim		},	{ "release",		mem_release		},};NODE_METHODS( mmu ) = {	{ "claim",		mmu_claim		},	{ "release",		mmu_release		},	{ "map",		mmu_map			},	{ "unmap",		mmu_unmap		},	{ "translate",		mmu_translate		},};NODE_METHODS( mmu_ciface ) = {	{ "claim",		ciface_claim		},	{ "release",		ciface_release		},};/************************************************************************//*	init								*//************************************************************************/voidnode_methods_init( void ){#ifdef USE_RTAS	REGISTER_NODE( rtas );#endif	REGISTER_NODE( vfd_stdout );	REGISTER_NODE( ciface );	REGISTER_NODE( memory );	REGISTER_NODE( mmu );	REGISTER_NODE( mmu_ciface );	REGISTER_NODE( tty );}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡电影一区二区三区| 亚洲v日本v欧美v久久精品| 欧美片网站yy| 欧美性生活影院| 在线视频观看一区| 在线免费观看成人短视频| 欧美性做爰猛烈叫床潮| 欧美吞精做爰啪啪高潮| 欧美日韩免费高清一区色橹橹| 欧美主播一区二区三区| 3atv在线一区二区三区| 日韩美一区二区三区| 久久精品视频免费| 亚洲天堂2014| 日韩在线卡一卡二| 精品一区二区av| 粉嫩绯色av一区二区在线观看| 成人免费看黄yyy456| 一本久久a久久免费精品不卡| 在线观看日韩高清av| 日韩视频一区二区在线观看| 精品久久久久久久久久久久久久久 | 午夜激情一区二区三区| 日韩国产精品91| 国产精品小仙女| 91久久久免费一区二区| 日韩一区二区电影在线| 国产精品久久久久久久久动漫| 一区二区国产视频| 久久精品国产精品亚洲综合| 成人av影视在线观看| 精品视频在线免费看| 久久综合资源网| 一区二区在线观看不卡| 日本sm残虐另类| 成人高清视频在线观看| 9191成人精品久久| 中文字幕日本乱码精品影院| 亚洲成人免费av| kk眼镜猥琐国模调教系列一区二区| 色嗨嗨av一区二区三区| 久久嫩草精品久久久精品| 樱桃视频在线观看一区| 国产一区999| 欧美一级精品在线| 一区二区三区在线观看国产| 国产综合色精品一区二区三区| 在线亚洲人成电影网站色www| 欧美不卡激情三级在线观看| 洋洋成人永久网站入口| 国产凹凸在线观看一区二区| 7777精品伊人久久久大香线蕉经典版下载 | 国产一区999| 91精品国产综合久久小美女| 亚洲欧美另类综合偷拍| 国产精品资源站在线| 3d成人动漫网站| 亚洲永久免费av| 99re6这里只有精品视频在线观看| 精品卡一卡二卡三卡四在线| 日韩电影免费一区| 欧美三级电影网站| 亚洲精品免费视频| 成人激情免费网站| 国产清纯在线一区二区www| 久久精品久久综合| 欧美一区二区三区在线看| 亚洲综合免费观看高清完整版在线| 成人午夜精品在线| 国产欧美精品在线观看| 国产一区二区在线观看视频| 日韩三级在线免费观看| 免费看精品久久片| 91精品欧美综合在线观看最新| 亚洲电影中文字幕在线观看| 色94色欧美sute亚洲线路一久| 最新国产成人在线观看| eeuss鲁片一区二区三区| 国产欧美精品区一区二区三区 | 久久精品无码一区二区三区| 麻豆91在线播放| 日韩欧美色电影| 国产一区二区在线免费观看| 久久男人中文字幕资源站| 国产成人免费在线| 国产精品理伦片| 在线免费观看日本欧美| 日韩二区三区在线观看| 日韩三级视频在线看| 国产伦精品一区二区三区免费迷 | 国产免费观看久久| caoporn国产一区二区| 最新不卡av在线| 91久久一区二区| 热久久免费视频| 亚洲国产高清在线观看视频| 99国产欧美另类久久久精品| 亚洲一级在线观看| 日韩精品中文字幕一区二区三区| 国内成人精品2018免费看| 国产精品久久久久aaaa樱花 | 一区二区三区在线影院| 91精品国产色综合久久不卡电影| 麻豆国产精品一区二区三区| 日本一区二区电影| 欧美日韩激情在线| 国产成a人亚洲| 亚洲一区二区三区在线| 26uuu亚洲综合色欧美| 91免费看`日韩一区二区| 青青草视频一区| 国产精品久久久久久久第一福利 | 欧美经典一区二区| 91成人国产精品| 国产一区二区久久| 亚瑟在线精品视频| 中文字幕成人av| 日韩一区二区在线观看视频播放| av在线播放不卡| 精品亚洲免费视频| 亚洲444eee在线观看| 国产精品国产三级国产普通话三级| 欧美军同video69gay| 成人一级视频在线观看| 免播放器亚洲一区| 亚洲成人午夜影院| 国产精品美女久久久久aⅴ | 久久久亚洲国产美女国产盗摄| 91丝袜美腿高跟国产极品老师| 久久精品国产精品青草| 亚洲午夜精品在线| 国产精品乱人伦| 精品av综合导航| 日韩欧美你懂的| 69堂精品视频| 欧美亚洲尤物久久| 色综合天天综合色综合av| 国产成人精品亚洲午夜麻豆| 老司机免费视频一区二区| 日韩中文字幕亚洲一区二区va在线| 亚洲精品日韩一| 亚洲日本成人在线观看| 亚洲国产精品精华液2区45| 久久美女艺术照精彩视频福利播放| 欧美日韩mp4| 欧美日韩久久久久久| 在线免费视频一区二区| 在线视频国内自拍亚洲视频| 91丝袜美女网| 欧美综合一区二区| 色域天天综合网| 色噜噜狠狠色综合中国| 91视视频在线观看入口直接观看www | 日韩国产在线一| 亚洲国产欧美一区二区三区丁香婷| 激情综合一区二区三区| 久久久久久**毛片大全| 日韩精品中文字幕在线一区| 欧美一卡二卡三卡| 日韩免费高清视频| 久久婷婷久久一区二区三区| 久久综合狠狠综合久久激情 | 色狠狠一区二区三区香蕉| 成人一区二区三区在线观看| aaa亚洲精品一二三区| 色综合色综合色综合色综合色综合| 91美女精品福利| 欧美视频一区在线| 欧美巨大另类极品videosbest | 成人理论电影网| 色婷婷综合久久久中文一区二区| 99久久精品免费| 欧洲国内综合视频| 欧美电视剧免费全集观看| 欧美国产精品中文字幕| 一区二区欧美视频| 青椒成人免费视频| 成人免费毛片app| 欧美日韩电影在线播放| 久久久久久麻豆| 亚洲一区二区av在线| 国产原创一区二区| 色综合夜色一区| 精品国产91乱码一区二区三区| 国产网站一区二区| 亚洲成人自拍偷拍| 国产91精品欧美| 欧美日韩三级一区二区| 国产日产亚洲精品系列| 一区二区三区日韩欧美精品 | 国产精品热久久久久夜色精品三区| 一区二区三区中文字幕精品精品| 老司机精品视频一区二区三区| av在线一区二区| 日韩免费视频线观看| 一区二区三区日韩精品| 国产jizzjizz一区二区| 精品视频在线免费观看| 亚洲欧洲日韩av| 国内不卡的二区三区中文字幕|