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

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

?? pervasive.c

?? linux2.6.16版本
?? C
字號:
/* * CBE Pervasive Monitor and Debug * * (C) Copyright IBM Corporation 2005 * * Authors: Maximino Aguilar (maguilar@us.ibm.com) *          Michael N. Day (mnday@us.ibm.com) * * 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, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */#undef DEBUG#include <linux/config.h>#include <linux/interrupt.h>#include <linux/irq.h>#include <linux/percpu.h>#include <linux/types.h>#include <linux/kallsyms.h>#include <asm/io.h>#include <asm/machdep.h>#include <asm/prom.h>#include <asm/pgtable.h>#include <asm/reg.h>#include "pervasive.h"static DEFINE_SPINLOCK(cbe_pervasive_lock);struct cbe_pervasive {	struct pmd_regs __iomem *regs;	unsigned int thread;};/* can't use per_cpu from setup_arch */static struct cbe_pervasive cbe_pervasive[NR_CPUS];static void __init cbe_enable_pause_zero(void){	unsigned long thread_switch_control;	unsigned long temp_register;	struct cbe_pervasive *p;	int thread;	spin_lock_irq(&cbe_pervasive_lock);	p = &cbe_pervasive[smp_processor_id()];	if (!cbe_pervasive->regs)		goto out;	pr_debug("Power Management: CPU %d\n", smp_processor_id());	 /* Enable Pause(0) control bit */	temp_register = in_be64(&p->regs->pm_control);	out_be64(&p->regs->pm_control,		 temp_register|PMD_PAUSE_ZERO_CONTROL);	/* Enable DEC and EE interrupt request */	thread_switch_control  = mfspr(SPRN_TSC_CELL);	thread_switch_control |= TSC_CELL_EE_ENABLE | TSC_CELL_EE_BOOST;	switch ((mfspr(SPRN_CTRLF) & CTRL_CT)) {	case CTRL_CT0:		thread_switch_control |= TSC_CELL_DEC_ENABLE_0;		thread = 0;		break;	case CTRL_CT1:		thread_switch_control |= TSC_CELL_DEC_ENABLE_1;		thread = 1;		break;	default:		printk(KERN_WARNING "%s: unknown configuration\n",			__FUNCTION__);		thread = -1;		break;	}	if (p->thread != thread)		printk(KERN_WARNING "%s: device tree inconsistant, "				     "cpu %i: %d/%d\n", __FUNCTION__,				     smp_processor_id(),				     p->thread, thread);	mtspr(SPRN_TSC_CELL, thread_switch_control);out:	spin_unlock_irq(&cbe_pervasive_lock);}static void cbe_idle(void){	unsigned long ctrl;	cbe_enable_pause_zero();	while (1) {		if (!need_resched()) {			local_irq_disable();			while (!need_resched()) {				/* go into low thread priority */				HMT_low();				/*				 * atomically disable thread execution				 * and runlatch.				 * External and Decrementer exceptions				 * are still handled when the thread				 * is disabled but now enter in				 * cbe_system_reset_exception()				 */				ctrl = mfspr(SPRN_CTRLF);				ctrl &= ~(CTRL_RUNLATCH | CTRL_TE);				mtspr(SPRN_CTRLT, ctrl);			}			/* restore thread prio */			HMT_medium();			local_irq_enable();		}		/*		 * turn runlatch on again before scheduling the		 * process we just woke up		 */		ppc64_runlatch_on();		preempt_enable_no_resched();		schedule();		preempt_disable();	}}static int cbe_system_reset_exception(struct pt_regs *regs){	switch (regs->msr & SRR1_WAKEMASK) {	case SRR1_WAKEEE:		do_IRQ(regs);		break;	case SRR1_WAKEDEC:		timer_interrupt(regs);		break;	case SRR1_WAKEMT:		/* no action required */		break;	default:		/* do system reset */		return 0;	}	/* everything handled */	return 1;}static int __init cbe_find_pmd_mmio(int cpu, struct cbe_pervasive *p){	struct device_node *node;	unsigned int *int_servers;	char *addr;	unsigned long real_address;	unsigned int size;	struct pmd_regs __iomem *pmd_mmio_area;	int hardid, thread;	int proplen;	pmd_mmio_area = NULL;	hardid = get_hard_smp_processor_id(cpu);	for (node = NULL; (node = of_find_node_by_type(node, "cpu"));) {		int_servers = (void *) get_property(node,				"ibm,ppc-interrupt-server#s", &proplen);		if (!int_servers) {			printk(KERN_WARNING "%s misses "				"ibm,ppc-interrupt-server#s property",				node->full_name);			continue;		}		for (thread = 0; thread < proplen / sizeof (int); thread++) {			if (hardid == int_servers[thread]) {				addr = get_property(node, "pervasive", NULL);				goto found;			}		}	}	printk(KERN_WARNING "%s: CPU %d not found\n", __FUNCTION__, cpu);	return -EINVAL;found:	real_address = *(unsigned long*) addr;	addr += sizeof (unsigned long);	size = *(unsigned int*) addr;	pr_debug("pervasive area for CPU %d at %lx, size %x\n",			cpu, real_address, size);	p->regs = __ioremap(real_address, size, _PAGE_NO_CACHE);	p->thread = thread;	return 0;}void __init cell_pervasive_init(void){	struct cbe_pervasive *p;	int cpu;	int ret;	if (!cpu_has_feature(CPU_FTR_PAUSE_ZERO))		return;	for_each_cpu(cpu) {		p = &cbe_pervasive[cpu];		ret = cbe_find_pmd_mmio(cpu, p);		if (ret)			return;	}	ppc_md.idle_loop = cbe_idle;	ppc_md.system_reset_exception = cbe_system_reset_exception;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区自拍偷拍| 国产精品灌醉下药二区| 91浏览器在线视频| 国产成人精品一区二区三区四区| 丝袜美腿亚洲综合| 性感美女久久精品| 亚洲成人av一区| 性欧美大战久久久久久久久| 午夜久久久影院| 偷窥国产亚洲免费视频| 亚洲风情在线资源站| 亚洲国产美国国产综合一区二区| 亚洲欧美日韩国产中文在线| 亚洲黄色小视频| 亚洲大片在线观看| 无吗不卡中文字幕| 美国av一区二区| 国内精品视频666| 懂色av中文字幕一区二区三区| 国产一区视频导航| 国产成人av一区| 91小宝寻花一区二区三区| 91亚洲国产成人精品一区二区三| 色婷婷国产精品| 欧美美女喷水视频| 精品福利一二区| 国产精品女上位| 亚洲综合偷拍欧美一区色| 亚洲国产日日夜夜| 麻豆91免费看| www.在线欧美| 欧美日韩国产高清一区二区| 欧美不卡一区二区三区| 久久久久88色偷偷免费| 欧美精品一区二| 一区视频在线播放| 日本午夜一本久久久综合| 狠狠狠色丁香婷婷综合久久五月| 成人永久aaa| 欧美老女人第四色| 久久久www成人免费毛片麻豆| 国产精品福利一区| 婷婷综合另类小说色区| 国产成人av资源| 制服丝袜在线91| 国产精品嫩草影院com| 午夜一区二区三区视频| 国产乱理伦片在线观看夜一区| 99国产精品久久久久久久久久久| 欧美精品久久久久久久多人混战| 国产视频一区在线播放| 亚洲电影视频在线| 成人黄色免费短视频| 欧美一区二区三区四区高清| 国产精品天美传媒| 美日韩一区二区三区| 91精品福利视频| 亚洲国产精品高清| 免费在线观看一区二区三区| 一本大道久久a久久综合婷婷| 精品国产伦一区二区三区观看体验| 亚洲精品成人在线| 成人av免费在线播放| 精品国产亚洲一区二区三区在线观看| 依依成人综合视频| 成人小视频在线观看| 精品免费视频.| 日韩电影在线一区二区| 欧美性大战久久久久久久蜜臀| 国产校园另类小说区| 韩国精品免费视频| 欧美日本韩国一区二区三区视频 | 久久99精品久久久久久国产越南| 成人免费看片app下载| 欧美精品一区二区三区久久久 | 日韩免费看网站| 午夜久久久久久| 欧美日韩你懂得| 亚洲一卡二卡三卡四卡五卡| 91搞黄在线观看| 亚洲永久免费av| 在线观看av一区| 亚洲午夜久久久久久久久电影院| 白白色亚洲国产精品| 久久婷婷国产综合国色天香| 激情综合色综合久久综合| 欧美岛国在线观看| 国产一区二区0| 国产女人aaa级久久久级| 国内精品久久久久影院薰衣草| 久久综合色鬼综合色| 国产毛片精品视频| 欧美高清在线视频| 成人av电影在线观看| 亚洲欧美日韩国产中文在线| 欧洲精品一区二区| 日日噜噜夜夜狠狠视频欧美人 | 美女性感视频久久| 欧美一级二级在线观看| 国产一区二区0| 亚洲视频网在线直播| 欧洲精品视频在线观看| 青娱乐精品视频| 国产三区在线成人av| 91美女精品福利| 亚洲风情在线资源站| 精品蜜桃在线看| av中文字幕不卡| 午夜视频一区在线观看| 亚洲精品一区二区三区四区高清| 国产成人aaa| 亚洲成av人片在线观看| 久久青草欧美一区二区三区| 91在线视频免费观看| 视频一区欧美精品| 中文子幕无线码一区tr| 欧美日韩中文精品| 国产91露脸合集magnet| 亚洲国产乱码最新视频 | 国产欧美日韩激情| 欧美最新大片在线看| 激情综合网天天干| 亚洲高清在线视频| 欧美激情一区二区三区| 91精品蜜臀在线一区尤物| aa级大片欧美| 国产综合色在线视频区| 一区二区三区日韩精品视频| 26uuu国产电影一区二区| 色狠狠色狠狠综合| 国产精品亚洲视频| 精品在线播放午夜| 一区二区三区自拍| 国产午夜亚洲精品午夜鲁丝片| 欧美日韩高清一区二区不卡| av电影在线观看不卡| 国产精品99精品久久免费| 午夜激情综合网| 亚洲狠狠丁香婷婷综合久久久| 日韩欧美美女一区二区三区| 欧美最猛性xxxxx直播| 成人av中文字幕| 国产精品一级黄| 久久99久久99精品免视看婷婷| 亚洲国产视频在线| 亚洲免费观看高清完整版在线| 久久精品这里都是精品| 日韩女优制服丝袜电影| 欧美欧美午夜aⅴ在线观看| 一本一道波多野结衣一区二区| 高清不卡一区二区| 国产一区二区三区av电影| 国产最新精品精品你懂的| 久久精品国产一区二区三| 亚洲成人福利片| 亚洲成人午夜电影| 亚洲一区免费在线观看| 亚洲免费在线视频| 亚洲丝袜自拍清纯另类| 中文字幕日韩一区| 国产精品成人一区二区三区夜夜夜 | 国产麻豆精品视频| 久久99精品久久久久婷婷| 国产综合成人久久大片91| 精品一区二区国语对白| 狠狠色综合日日| 国产精品99久久久久久久vr| 国产精品一区免费视频| 东方aⅴ免费观看久久av| 成人一区二区三区在线观看| 成人免费毛片嘿嘿连载视频| 成人白浆超碰人人人人| 99久久精品国产一区二区三区| 99国产精品一区| 欧美日韩三级在线| 欧美一区二区三区日韩视频| 欧美成人a∨高清免费观看| 久久久久久久免费视频了| 国产视频一区二区在线观看| 国产精品少妇自拍| 一区二区三区丝袜| 蜜臀av性久久久久蜜臀aⅴ流畅| 经典三级一区二区| av色综合久久天堂av综合| 欧美日韩精品一区二区天天拍小说| 欧美区一区二区三区| 久久午夜色播影院免费高清| 亚洲天天做日日做天天谢日日欢 | 欧美日本视频在线| 亚洲精品一区二区三区精华液 | 在线电影院国产精品| 欧美大胆人体bbbb| 亚洲欧美自拍偷拍色图| 免费欧美高清视频| av激情综合网| 日韩一区二区三| 亚洲女性喷水在线观看一区| 久久超碰97人人做人人爱| 99re成人精品视频| 精品久久久久久无|