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

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

?? rtl_time.c

?? fsmlabs的real time linux的內核
?? C
字號:
/* * MIPS-specific clock support * * Copyright (C) 2000 FSM Labs (http://www.fsmlabs.com/) *  Written by Cort Dougan <cort@fsmlabs.com> */#include <linux/module.h>#include <linux/kernel.h>#include <linux/errno.h>#include <linux/sched.h>#include <linux/timex.h>#include <asm/system.h>#include <asm/io.h>#include <asm/mipsregs.h>#include <rtl_core.h>#include <rtl_time.h>#include <rtl_sync.h>#include <rtl.h>MODULE_AUTHOR("Cort Dougan <cort@fsmlabs.com>");MODULE_DESCRIPTION("RTLinux MIPS Timer Module");static void _orion_uninit (clockid_t clock);static int _orion_init (clockid_t clock);static hrtime_t _orion_gettime (struct rtl_clock *);static int _orion_settimer (struct rtl_clock *, hrtime_t interval);static int _orion_settimermode (struct rtl_clock *, int mode);unsigned int orion_intercept(struct pt_regs *);void default_handler( struct pt_regs *regs);static unsigned long linux_decrs = 0, orion_tick_count = 0;static unsigned int timerhi = 0, timerlo = 0;struct rtl_clock orion_clock ={	_orion_init, _orion_uninit,	_orion_gettime,	NULL, /* sethrtime */	_orion_settimer,	_orion_settimermode,	default_handler, /* handler */	RTL_CLOCK_MODE_ONESHOT, /* mode */};static unsigned long gettimeoffset(void){	u32 count;	unsigned long res, tmp;	/* Last jiffy when do_fast_gettimeoffset() was called. */	static unsigned long last_jiffies=0;	unsigned long quotient;	/*	 * Cached "1/(clocks per usec)*2^32" value.	 * It has to be recalculated once each jiffy.	 */	static unsigned long cached_quotient=0;	tmp = jiffies;	quotient = cached_quotient;#define USECS_PER_JIFFY ((NSECS_PER_SEC/HZ)/1000)		if (tmp && last_jiffies != tmp) {		last_jiffies = tmp;		__asm__(".set\tnoreorder\n\t"			".set\tnoat\n\t"			".set\tmips3\n\t"			"lwu\t%0,%2\n\t"			"dsll32\t$1,%1,0\n\t"			"or\t$1,$1,%0\n\t"			"ddivu\t$0,$1,%3\n\t"			"mflo\t$1\n\t"			"dsll32\t%0,%4,0\n\t"			"nop\n\t"			"ddivu\t$0,%0,$1\n\t"			"mflo\t%0\n\t"			".set\tmips0\n\t"			".set\tat\n\t"			".set\treorder"			:"=&r" (quotient)			:"r" (timerhi),			 "m" (timerlo),			 "r" (tmp),			 "r" (USECS_PER_JIFFY)			:"$1");		cached_quotient = quotient;	}	/* Get last timer tick in absolute kernel time */	count = read_32bit_cp0_register(CP0_COUNT);	/* .. relative to previous jiffy (32 bits is enough) */	count -= timerlo;	__asm__("multu\t%1,%2\n\t"		"mfhi\t%0"		:"=r" (res)		:"r" (count),		 "r" (quotient));	/* 	 * Due to possible jiffies inconsistencies, we need to check 	 * the result so that we'll get a timer that is monotonic.	 */	if (res >= USECS_PER_JIFFY)		res = USECS_PER_JIFFY-1;	return res;}hrtime_t _orion_gettime (struct rtl_clock *clock){	hrtime_t ret;	ret = (orion_clock.arch.time*((NSECS_PER_SEC/HZ)/(50000000/HZ))) + (gettimeoffset()*1000);	return ret;}static int _orion_settimer (struct rtl_clock *clock, hrtime_t interval){	__u32 val;	/*	 * If we're going to lose precision we know that the # ticks	 * will be greater than a jiffy.	 *  -- Cort	 */	if ( (ulong)(interval>>32) )	{		val = 0xffffffff;	}	else	{		/* ns to ticks -- Cort */		val = (long)interval / ((NSECS_PER_SEC/HZ)/(50000000/HZ)) + 1;		if (orion_clock.mode == RTL_CLOCK_MODE_PERIODIC)			clock->resolution = interval;		else			clock->resolution = 1;	}		if ( val > (50000000/HZ) )	{		/* time was too high, set timer to hit when Linux wants its next tick */		if ( (50000000/HZ) > linux_decrs )			val = (50000000/HZ) - linux_decrs;		else			val = (50000000/HZ);	}	else if ( val < 50 )	{		val = 50;	}		/* so we know how many linux ticks have gone by */	orion_tick_count = val;		orion_clock.arch.istimerset = 1;	*((__u32 *) (((unsigned)(0x14000000)|0xA0000000) + 0x864)) =		cpu_to_le32(0);		*((__u32 *) (((unsigned)(0x14000000)|0xA0000000) + 0x850)) =		cpu_to_le32(0);	*((__u32 *) (((unsigned)(0x14000000)|0xA0000000) + 0x850)) =		cpu_to_le32(val);	*((__u32 *) (((unsigned)(0x14000000)|0xA0000000) + 0xC1C)) =		cpu_to_le32(0x100);     	*((__u32 *) (((unsigned)(0x14000000)|0xA0000000) + 0x864)) =		cpu_to_le32(0x03);     	*((__u32 *) (((unsigned)(0x14000000)|0xA0000000) + 0xC18)) =		cpu_to_le32(0);		return 0;}static int _orion_settimermode(struct rtl_clock *clock, int mode){	clock->mode = mode;	return 0;}clockid_t rtl_getbestclock (unsigned int cpu){        return &orion_clock;}hrtime_t gethrtime(void){	return _orion_gettime(&orion_clock);}hrtime_t gethrtimeres(void){	return (NSECS_PER_SEC/HZ)/(50000000/HZ);}static unsigned int _orion_timer_intercept( unsigned int irq,					    struct pt_regs *regs ){	void (*handler)( struct pt_regs *regs) = orion_clock.handler;	unsigned int count;	/* update the time in the clock */	orion_clock.arch.time += orion_tick_count;		count = read_32bit_cp0_register(CP0_COUNT);	timerhi += (count < timerlo);	/* Wrap around */	timerlo = count;	if ( (orion_clock.mode == RTL_CLOCK_MODE_ONESHOT) && orion_clock.arch.istimerset )		orion_clock.arch.istimerset = 0;		/* give the interrupt to Linux */	linux_decrs += orion_tick_count;	if ( linux_decrs >= (50000000/HZ) )	{		if ( !rtl_global_ispending_irq(2) )		{			rtl_global_pend_irq( 2 );			linux_decrs -= (50000000/HZ);		}	}	if ( handler != default_handler )		handler(regs);	orion_clock.arch.istimerset = 1; // what's this for? -- Michael	return 0;}static int _orion_init (clockid_t clock){	/* on next tick, how many have gone by */	orion_tick_count = (50000000/HZ);	rtl_request_global_irq( 2, _orion_timer_intercept );	return 0;}static void _orion_uninit (clockid_t clock){	clock->handler = RTL_CLOCK_DEFAULTS.handler;	rtl_free_global_irq( 2 );}int init_module (void){	rtl_init_standard_clocks();	return 0;}void cleanup_module(void){	rtl_cleanup_standard_clocks();	_orion_uninit(&orion_clock);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线精品视频小说1| 日韩欧美国产电影| 欧美一区二区三区免费视频| 日本一二三不卡| 亚洲第一成人在线| 国产91露脸合集magnet| 欧美日本在线观看| 国产精品久久久久精k8| 色综合久久久久综合99| 久久久久久综合| 日韩精品一二三区| 欧美这里有精品| 国产精品国产自产拍高清av| 狠狠色丁香婷综合久久| 欧美日韩国产免费一区二区| 国产精品电影一区二区| 国内精品免费**视频| 欧美美女网站色| 一区二区三区免费在线观看| 99久久精品情趣| 国产视频一区二区在线观看| 裸体歌舞表演一区二区| 欧美日韩国产美女| 亚洲国产另类精品专区| 欧美在线制服丝袜| 亚洲一二三四久久| 欧美做爰猛烈大尺度电影无法无天| 国产欧美精品国产国产专区| 韩国av一区二区三区| 精品国产乱码久久久久久久| 免费人成在线不卡| 日韩无一区二区| 免费人成网站在线观看欧美高清| 在线电影欧美成精品| 亚洲v中文字幕| 欧美另类videos死尸| 亚洲午夜久久久久中文字幕久| 欧美在线视频日韩| 亚洲国产一区二区在线播放| 在线观看日韩一区| 午夜精品爽啪视频| 9191成人精品久久| 青青国产91久久久久久| 精品国产麻豆免费人成网站| 国产一区二区电影| 国产精品伦理一区二区| 欧美激情一区二区三区在线| 高清国产午夜精品久久久久久| 国产日韩欧美亚洲| 91一区二区三区在线观看| 一区二区视频在线看| 欧美日韩在线亚洲一区蜜芽| 日韩一区精品字幕| 久久久久久夜精品精品免费| 国产99精品国产| 亚洲精品第一国产综合野| 欧美日韩国产色站一区二区三区| 麻豆一区二区三区| 中文字幕色av一区二区三区| 色哟哟日韩精品| 奇米色一区二区| 国产欧美精品一区| 欧美日韩1区2区| 国产乱码字幕精品高清av| 中文字幕日本不卡| 91精品国产一区二区人妖| 国产一区999| 香蕉久久夜色精品国产使用方法| 欧美电影免费观看高清完整版在| 成人v精品蜜桃久久一区| 日韩在线a电影| 国产精品久久99| 欧美一区三区四区| 成人av网在线| 蜜桃在线一区二区三区| 亚洲欧洲精品天堂一级| 精品久久一区二区| 色视频一区二区| 国产乱码精品一区二区三区忘忧草 | 国产欧美精品一区二区色综合朱莉| 成人h动漫精品一区二区| 日韩国产高清在线| 中文字幕制服丝袜一区二区三区 | 91亚洲国产成人精品一区二三| 五月综合激情网| 欧美激情一区二区三区蜜桃视频| 亚洲欧美日韩国产综合在线| 国产在线不卡一卡二卡三卡四卡| 国产91精品精华液一区二区三区| 欧美四级电影网| 亚洲不卡av一区二区三区| 久久久久国产精品麻豆| 欧美日韩一区二区欧美激情| 中文字幕 久热精品 视频在线| 99久久久久久| 婷婷夜色潮精品综合在线| 中文字幕在线不卡| 国产亚洲va综合人人澡精品| 在线精品视频免费观看| 丰满少妇久久久久久久| 激情国产一区二区| 蜜芽一区二区三区| 亚洲一卡二卡三卡四卡五卡| 中文字幕一区二区三区四区 | 亚洲一卡二卡三卡四卡无卡久久 | 欧美一激情一区二区三区| 99re这里都是精品| 成人性色生活片免费看爆迷你毛片| 日本va欧美va瓶| 丝袜亚洲精品中文字幕一区| 亚洲国产精品一区二区久久恐怖片| 亚洲欧美国产三级| 国产精品久久久久久久久快鸭| 久久日韩粉嫩一区二区三区| 精品第一国产综合精品aⅴ| 日韩视频在线一区二区| 欧美性xxxxxxxx| 欧美三级韩国三级日本一级| 在线观看视频一区| 欧美美女喷水视频| 在线播放日韩导航| 欧美一区二区黄| 日韩欧美国产wwwww| 精品久久国产97色综合| 日韩欧美国产三级| 久久精品视频网| 国产精品亲子伦对白| 综合在线观看色| 亚洲一区二区三区在线播放| 亚洲电影激情视频网站| 日本不卡123| 国产精品一卡二| 成人app在线| 欧美综合天天夜夜久久| 欧美一区二区成人| 欧美精品一区二区久久婷婷| 欧美国产亚洲另类动漫| 亚洲欧美视频在线观看| 午夜精品久久久久久久久久| 手机精品视频在线观看| 国产又粗又猛又爽又黄91精品| 国产成人av一区二区三区在线| 91在线视频18| 欧美精品 日韩| 久久久久9999亚洲精品| 久久久777精品电影网影网| 在线免费观看不卡av| 欧美日韩国产精品成人| 精品国产精品一区二区夜夜嗨| 久久精品亚洲国产奇米99| 亚洲精品视频在线看| 男人的j进女人的j一区| 成人性生交大片免费| 欧美日韩久久久一区| 久久久久久夜精品精品免费| 夜夜嗨av一区二区三区中文字幕| 日韩成人免费电影| av电影在线观看不卡 | 国产在线看一区| 91免费观看视频| 日韩一级大片在线| 中文字幕欧美一| 久久精品99国产国产精| 色88888久久久久久影院野外| 精品盗摄一区二区三区| 亚洲123区在线观看| 成人激情视频网站| 欧美一区二区不卡视频| 亚洲欧美日韩国产综合在线| 国产裸体歌舞团一区二区| 欧美日韩视频在线观看一区二区三区| 久久午夜国产精品| 丝袜美腿亚洲色图| 91热门视频在线观看| 精品国精品国产| 日韩精品亚洲一区二区三区免费| av成人老司机| 国产欧美精品国产国产专区| 九九精品视频在线看| 欧美日韩精品免费| 亚洲综合色婷婷| 99re视频精品| 国产精品看片你懂得 | 美国毛片一区二区| 7777女厕盗摄久久久| 亚洲一区二区三区四区在线免费观看| 国产成人在线免费观看| 久久精品一区二区三区不卡牛牛| 日韩激情一二三区| 欧美性感一区二区三区| 日韩伦理av电影| 99久久综合国产精品| 国产精品乱码一区二三区小蝌蚪| 国产成人精品免费网站| 国产日本一区二区| 成人激情午夜影院| 亚洲欧美日韩久久| 欧美三区在线观看| 日日夜夜一区二区| 91麻豆精品国产91久久久更新时间 |