亚洲欧美第一页_禁久久精品乱码_粉嫩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 "pearpc/pearpc.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( video_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 );	console_draw_str( s );			free( s );	PUSH( len );}NODE_METHODS( video_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( video_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一区二区三区免费野_久草精品视频
青青草国产成人av片免费| 国产精品美女久久久久高潮| 五月天国产精品| 欧美三级视频在线观看| 一区二区三区中文字幕精品精品 | 国产精品―色哟哟| 成年人国产精品| 亚洲欧美日韩国产综合| 在线精品视频免费观看| 亚洲国产精品久久久久秋霞影院 | 国产精品传媒在线| 99久久99久久久精品齐齐| 亚洲欧美一区二区三区久本道91| 色狠狠综合天天综合综合| 亚洲va天堂va国产va久| 精品国产乱码久久久久久夜甘婷婷| 国内精品久久久久影院色| 中文字幕第一页久久| 色8久久人人97超碰香蕉987| 无码av免费一区二区三区试看| 日韩女优制服丝袜电影| 不卡一区中文字幕| 亚洲高清在线精品| 精品成人a区在线观看| 99精品热视频| 日韩国产在线观看| 国产精品欧美一区二区三区| 欧美三级电影网站| 国产精品自拍网站| 亚洲影视资源网| 26uuu另类欧美| 在线精品视频小说1| 精品在线视频一区| 18成人在线观看| 日韩欧美在线123| av男人天堂一区| 久久精品国产久精国产| 亚洲日本在线a| 久久久久久久久久久久久女国产乱| 色婷婷久久久亚洲一区二区三区 | 久草精品在线观看| 亚洲欧美电影一区二区| 久久久亚洲欧洲日产国码αv| 91蝌蚪porny成人天涯| 国产乱人伦精品一区二区在线观看| 国产精品视频yy9299一区| 久久精品国产亚洲a| 怡红院av一区二区三区| 久久网站最新地址| 欧美精品第1页| 99久久综合99久久综合网站| 国产在线麻豆精品观看| 亚洲午夜视频在线观看| 国产精品免费免费| 精品国产自在久精品国产| 欧美性猛交xxxx乱大交退制版| 高清shemale亚洲人妖| 久久er99精品| 青青草97国产精品免费观看无弹窗版| 亚洲欧美另类久久久精品| 国产女主播一区| 久久久久久97三级| 日韩免费视频线观看| 欧美精品久久99久久在免费线| 成人成人成人在线视频| 国产精品2024| 国产在线一区二区综合免费视频| 日韩精品免费视频人成| 亚洲成人自拍一区| 亚洲黄色小说网站| 亚洲三级免费观看| 中文字幕一区av| 国产精品福利一区二区三区| 欧美国产1区2区| 国产精品日日摸夜夜摸av| 久久精子c满五个校花| 精品播放一区二区| 久久久噜噜噜久久人人看| 欧美精品一区二区三区很污很色的| 日韩一二三四区| 日韩美女一区二区三区| 日韩免费看的电影| 久久在线观看免费| 精品播放一区二区| 欧美经典一区二区三区| 日本一区二区三级电影在线观看| 国产欧美一区二区精品性色超碰| 国产精品视频你懂的| 亚洲丝袜制服诱惑| 亚洲免费视频成人| 亚洲国产三级在线| 另类小说色综合网站| 精品亚洲成av人在线观看| 国产精品亚洲一区二区三区在线| 成人aaaa免费全部观看| 色综合久久88色综合天天免费| 在线观看成人免费视频| 欧美顶级少妇做爰| 精品嫩草影院久久| 国产精品久久久久久福利一牛影视 | 黄页视频在线91| 国产激情视频一区二区在线观看| 不卡的看片网站| 欧美日韩高清一区二区三区| 欧美本精品男人aⅴ天堂| 日本一二三不卡| 亚洲成av人在线观看| 精品亚洲porn| 色婷婷综合激情| 亚洲精品一区二区三区在线观看| 国产精品人成在线观看免费| 亚洲国产成人高清精品| 国内精品国产三级国产a久久| www.亚洲色图.com| 91精品国产麻豆国产自产在线 | 不卡一二三区首页| 欧美日韩亚洲综合一区| 精品国产乱码久久久久久1区2区 | 久久免费看少妇高潮| 亚洲欧美一区二区视频| 免费成人美女在线观看.| av亚洲精华国产精华| 日韩午夜在线观看视频| 中文字幕一区二区三区四区| 日本中文字幕一区二区有限公司| 99国产精品一区| 久久天堂av综合合色蜜桃网| 亚洲国产精品一区二区久久恐怖片| 国产乱码精品一区二区三区忘忧草 | 国产日韩欧美在线一区| 亚洲成精国产精品女| 成人视屏免费看| 日韩区在线观看| 亚洲午夜三级在线| av资源网一区| 亚洲精品在线免费播放| 舔着乳尖日韩一区| 99国产精品视频免费观看| 欧美成人精品福利| 性欧美大战久久久久久久久| 91免费看`日韩一区二区| 日本一区二区视频在线| 蜜臀久久久99精品久久久久久| 在线观看网站黄不卡| 中文在线资源观看网站视频免费不卡| 五月天国产精品| 欧美日韩一区二区在线视频| 1区2区3区精品视频| 成人黄色在线看| 中文字幕精品三区| 黄一区二区三区| 精品久久人人做人人爽| 亚洲成人免费影院| 欧美亚洲精品一区| 亚洲免费在线观看视频| 99久久综合99久久综合网站| 国产精品久久久一区麻豆最新章节| 国内成人免费视频| 久久在线观看免费| 国产伦精品一区二区三区免费 | 久久久99精品免费观看| 免费xxxx性欧美18vr| 在线不卡中文字幕播放| 亚洲第一搞黄网站| 欧美网站一区二区| 一区二区免费在线播放| 在线观看日韩av先锋影音电影院| 亚洲精品国产a久久久久久| 94色蜜桃网一区二区三区| 亚洲人成精品久久久久| 91视频一区二区三区| 亚洲日本va午夜在线影院| 91网站最新地址| 亚洲综合色自拍一区| 在线观看日韩精品| 亚洲一区二区三区免费视频| 欧美日韩国产成人在线免费| 偷窥少妇高潮呻吟av久久免费 | 久久综合久久鬼色| 国产伦精品一区二区三区免费 | 免费看欧美女人艹b| 69久久99精品久久久久婷婷| 美国十次综合导航| 国产欧美综合在线| 91蜜桃视频在线| 婷婷夜色潮精品综合在线| 国产精品视频观看| 91伊人久久大香线蕉| 亚洲资源中文字幕| 欧美一区二区三区在线| 精品伊人久久久久7777人| 国产三级一区二区三区| 一本久久综合亚洲鲁鲁五月天| 亚洲国产一区二区视频| 欧美videossexotv100| caoporen国产精品视频| 亚洲午夜一区二区| 久久综合999| 日本韩国欧美三级| 六月丁香婷婷久久|