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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? irq.c

?? 根據(jù)添加了fs2410平臺的arch目錄
?? C
字號:
/* *  linux/arch/mips/philips/nino/irq.c * *  Copyright (C) 1992 Linus Torvalds *  Copyright (C) 1999 Harald Koerfgen *  Copyright (C) 2000 Pavel Machek (pavel@suse.cz) *  Copyright (C) 2001 Steven J. Hill (sjhill@realitydiluted.com) *  * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. *   *  Generic interrupt handler for Philips Nino. */#include <linux/errno.h>#include <linux/init.h>#include <linux/kernel_stat.h>#include <linux/signal.h>#include <linux/sched.h>#include <linux/types.h>#include <linux/interrupt.h>#include <linux/ioport.h>#include <linux/timex.h>#include <linux/slab.h>#include <linux/random.h>#include <asm/bitops.h>#include <asm/bootinfo.h>#include <asm/io.h>#include <asm/irq.h>#include <asm/mipsregs.h>#include <asm/system.h>#include <asm/tx3912.h>unsigned long spurious_count = 0;irq_cpustat_t irq_stat [NR_CPUS];static inline void mask_irq(unsigned int irq_nr){	switch (irq_nr) {	case 0:  /* Periodic Timer Interrupt */ 		IntClear5 = INT5_PERIODICINT;		IntClear6 = INT6_PERIODICINT;		IntEnable6 &= ~INT6_PERIODICINT;		break;	case 3:		/* Serial port receive interrupt */		break;	case 2:		/* Serial port transmit interrupt */		break;	default:		printk( "Attempt to mask unknown IRQ %d?\n", irq_nr );	}}static inline void unmask_irq(unsigned int irq_nr){	switch (irq_nr) {	case 0:		IntEnable6 |= INT6_PERIODICINT;		break;	case 3:		/* Serial port receive interrupt */		break;	case 2:		/* Serial port transmit interrupt */		break;	default:		printk( "Attempt to unmask unknown IRQ %d?\n", irq_nr );	}}void disable_irq(unsigned int irq_nr){    unsigned long flags;    save_and_cli(flags);    mask_irq(irq_nr);    restore_flags(flags);}void enable_irq(unsigned int irq_nr){    unsigned long flags;    save_and_cli(flags);    unmask_irq(irq_nr);    restore_flags(flags);}/* * Pointers to the low-level handlers: first the general ones, then the * fast ones, then the bad ones. */extern void interrupt(void);static struct irqaction *irq_action[NR_IRQS] ={    NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,    NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,    NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,    NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,    NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,    NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,    NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,    NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL};int get_irq_list(char *buf){    int i, len = 0;    struct irqaction *action;    for (i = 0; i < NR_IRQS; i++) {	action = irq_action[i];	if (!action)	    continue;	len += sprintf(buf + len, "%2d: %8d %c %s",		       i, kstat.irqs[0][i],		       (action->flags & SA_INTERRUPT) ? '+' : ' ',		       action->name);	for (action = action->next; action; action = action->next) {	    len += sprintf(buf + len, ",%s %s",			   (action->flags & SA_INTERRUPT) ? " +" : "",			   action->name);	}	len += sprintf(buf + len, "\n");    }    return len;}atomic_t __mips_bh_counter;/* * do_IRQ handles IRQ's that have been installed without the * SA_INTERRUPT flag: it uses the full signal-handling return * and runs with other interrupts enabled. All relatively slow * IRQ's should use this format: notably the keyboard/timer * routines. */asmlinkage void do_IRQ(int irq, struct pt_regs *regs){    struct irqaction *action;    int do_random, cpu;    if (irq == 20) {        if (IntStatus2 & 0xfffff00) {		if (IntStatus2 & 0x0f000000)		return do_IRQ(2, regs);	}    }    cpu = smp_processor_id();    irq_enter(cpu, irq);    kstat.irqs[cpu][irq]++;    if (irq == 20) {            printk("20 %08lx %08lx\n   %08lx %08lx\n   %08lx\n",                   IntStatus1, IntStatus2, IntStatus3,                   IntStatus4, IntStatus5 );            printk("20 %08lx %08lx\n   %08lx %08lx\n   %08lx\n",                   IntEnable1, IntEnable2, IntEnable3,                   IntEnable4, IntEnable5 );    }    mask_irq(irq);    action = *(irq + irq_action);    if (action) {	if (!(action->flags & SA_INTERRUPT))	    __sti();	do_random = 0;	do {	    do_random |= action->flags;	    action->handler(irq, action->dev_id, regs);	    action = action->next;	} while (action);	if (do_random & SA_SAMPLE_RANDOM)	    add_interrupt_randomness(irq);	unmask_irq(irq);	__cli();    } else {            IntClear1 = ~0;            IntClear3 = ~0;	    IntClear4 = ~0;	    IntClear5 = ~0;	    unmask_irq(irq);    }    irq_exit(cpu, irq);    /* unmasking and bottom half handling is done magically for us. */}/* * Idea is to put all interrupts * in a single table and differenciate them just by number. */int setup_nino_irq(int irq, struct irqaction *new){    int shared = 0;    struct irqaction *old, **p;    unsigned long flags;    p = irq_action + irq;    if ((old = *p) != NULL) {	/* Can't share interrupts unless both agree to */	if (!(old->flags & new->flags & SA_SHIRQ))	    return -EBUSY;	/* Can't share interrupts unless both are same type */	if ((old->flags ^ new->flags) & SA_INTERRUPT)	    return -EBUSY;	/* add new interrupt at end of irq queue */	do {	    p = &old->next;	    old = *p;	} while (old);	shared = 1;    }    if (new->flags & SA_SAMPLE_RANDOM)	rand_initialize_irq(irq);    save_and_cli(flags);    *p = new;    if (!shared) {	unmask_irq(irq);    }    restore_flags(flags);    return 0;}int request_irq(unsigned int irq,		void (*handler) (int, void *, struct pt_regs *),		unsigned long irqflags,		const char *devname,		void *dev_id){    int retval;    struct irqaction *action;    if (irq >= NR_IRQS)	return -EINVAL;    if (!handler)	return -EINVAL;    action = (struct irqaction *) kmalloc(sizeof(struct irqaction), GFP_KERNEL);    if (!action)	return -ENOMEM;    action->handler = handler;    action->flags = irqflags;    action->mask = 0;    action->name = devname;    action->next = NULL;    action->dev_id = dev_id;    retval = setup_nino_irq(irq, action);    if (retval)	kfree(action);    return retval;}void free_irq(unsigned int irq, void *dev_id){    struct irqaction *action, **p;    unsigned long flags;    if (irq >= NR_IRQS) {	printk(KERN_CRIT __FUNCTION__ ": trying to free IRQ%d\n", irq);	return;    }    for (p = irq + irq_action; (action = *p) != NULL; p = &action->next) {	if (action->dev_id != dev_id)	    continue;	/* Found it - now free it */	save_and_cli(flags);	*p = action->next;	if (!irq[irq_action])	    mask_irq(irq);	restore_flags(flags);	kfree(action);	return;    }    printk(KERN_CRIT __FUNCTION__ ": trying to free free IRQ%d\n", irq);}unsigned long probe_irq_on(void){    /* TODO */    return 0;}int probe_irq_off(unsigned long irqs){    /* TODO */    return 0;}void __init init_IRQ(void){    irq_setup();}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品噜噜噜噜久久久久久久久试看 | 亚洲韩国一区二区三区| 国产白丝精品91爽爽久久| 2021久久国产精品不只是精品| 狠狠色丁香久久婷婷综| 国产日韩成人精品| jlzzjlzz亚洲日本少妇| 一区二区高清视频在线观看| 欧美三级电影在线观看| 久久精品国产第一区二区三区| 久久精品视频网| 91网站视频在线观看| 午夜精品免费在线| 26uuu欧美日本| 97se亚洲国产综合自在线| 亚洲国产另类av| 日韩免费高清视频| 高清免费成人av| 亚洲国产精品一区二区尤物区| 精品久久久久久最新网址| 国产福利一区二区| 怡红院av一区二区三区| 欧美一卡在线观看| 成人一区二区三区视频| 亚洲一级片在线观看| 久久久久久久综合日本| 91麻豆免费视频| 久久国产精品露脸对白| 亚洲色图第一区| 日韩欧美一二区| 91丝袜国产在线播放| 美日韩一区二区三区| 亚洲欧美日韩久久| 精品国产一区二区三区久久久蜜月| 国产精品丝袜一区| 91性感美女视频| 性做久久久久久久免费看| 精品奇米国产一区二区三区| 91麻豆国产福利在线观看| 蜜臀久久99精品久久久画质超高清 | 性久久久久久久久| 国产精品无码永久免费888| 91精品在线一区二区| 99精品久久只有精品| 免费不卡在线视频| 亚洲一区免费视频| 国产精品天美传媒沈樵| 欧美精品一区二区三区久久久| 欧洲精品在线观看| 成人av在线资源网站| 国产尤物一区二区在线| 石原莉奈在线亚洲二区| 亚洲狠狠丁香婷婷综合久久久| 国产调教视频一区| 精品粉嫩超白一线天av| 日韩一级精品视频在线观看| 欧美伊人久久大香线蕉综合69| 99re66热这里只有精品3直播| 国产一区二区三区免费| 日韩av不卡一区二区| 亚洲mv在线观看| 亚洲伦理在线免费看| 中文av一区特黄| 亚洲国产精品v| 亚洲综合自拍偷拍| 国产精品人妖ts系列视频| 久久欧美一区二区| 日韩免费看的电影| 91精品国产91久久久久久一区二区 | 视频一区二区三区中文字幕| 亚洲精品视频在线看| 亚洲男人的天堂一区二区| 国产精品每日更新| 国产精品国产自产拍高清av王其| 国产欧美日韩不卡| 国产色91在线| 国产精品久久毛片a| 中文字幕视频一区| 亚洲欧美日韩国产综合| 亚洲国产日韩a在线播放性色| 亚洲一区二区三区四区的| 亚洲成人激情社区| 图片区小说区区亚洲影院| 日本三级韩国三级欧美三级| 日韩av电影一区| 精一区二区三区| 国产精品综合网| 成人午夜电影小说| 91一区二区三区在线观看| 色综合色综合色综合色综合色综合| 99视频精品全部免费在线| 在线观看国产一区二区| 91精品国产综合久久精品图片| 欧美一区二区三区在线| 久久久久国产精品免费免费搜索| 久久九九99视频| 亚洲少妇最新在线视频| 亚洲国产sm捆绑调教视频 | 91在线视频免费91| 欧美午夜理伦三级在线观看| 337p亚洲精品色噜噜狠狠| 精品国产sm最大网站免费看| 国产精品污www在线观看| 一区二区三区影院| 麻豆91免费观看| heyzo一本久久综合| 欧美日韩亚洲丝袜制服| 久久久久久久综合日本| 亚洲免费在线电影| 日韩av一区二区三区四区| 国产福利一区二区三区视频| 91麻豆视频网站| 日韩女优电影在线观看| 亚洲欧美综合另类在线卡通| 青青草国产成人av片免费| 成人国产精品免费观看视频| 欧美日韩大陆在线| 中文字幕的久久| 另类调教123区| 在线视频一区二区三区| 久久婷婷色综合| 香港成人在线视频| av午夜一区麻豆| 精品国产三级a在线观看| 一区二区三区高清在线| 国产精品自拍一区| 91精品国产一区二区三区蜜臀| 国产精品免费观看视频| 男人的天堂久久精品| 91色porny蝌蚪| xfplay精品久久| 午夜激情久久久| 久久亚洲私人国产精品va媚药| 亚洲午夜免费电影| 不卡视频在线看| 久久久国产精品不卡| 日韩成人一级片| 欧洲精品一区二区三区在线观看| 中文字幕成人av| 国产麻豆欧美日韩一区| 日韩女优av电影在线观看| 亚洲国产精品一区二区www在线 | 一区二区三区四区视频精品免费| 国产一区二区美女诱惑| 欧美一区二区三区男人的天堂| 亚洲桃色在线一区| 成人免费看的视频| 国产亚洲一区字幕| 国产麻豆精品视频| 亚洲精品在线三区| 久久精品国产77777蜜臀| 在线观看91av| 日韩高清一区二区| 91精品国产色综合久久ai换脸 | 国产精品亚洲人在线观看| 日韩一区二区三区高清免费看看| 亚洲午夜羞羞片| 欧美午夜精品免费| 亚洲国产欧美一区二区三区丁香婷| 99久久婷婷国产精品综合| 中文字幕在线一区| 成人app软件下载大全免费| 国产女人18毛片水真多成人如厕 | 99九九99九九九视频精品| 久久亚洲春色中文字幕久久久| 激情五月播播久久久精品| 欧美电影免费观看高清完整版在线 | 国产一区在线不卡| 久久久电影一区二区三区| 国产一区二区三区视频在线播放| 精品国产亚洲在线| 国产福利91精品一区| 欧美国产精品一区二区| 99久久国产综合精品女不卡| 亚洲丝袜另类动漫二区| 在线看日本不卡| 日本欧美在线观看| 日韩欧美国产wwwww| 韩国三级在线一区| 午夜精品免费在线| 欧美网站一区二区| 日韩av一二三| 久久久美女毛片| jlzzjlzz国产精品久久| 夜夜精品浪潮av一区二区三区| 欧美日韩精品一区二区| 日本大胆欧美人术艺术动态| 久久蜜桃av一区精品变态类天堂| 国产69精品一区二区亚洲孕妇| 亚洲色图在线看| 欧美欧美欧美欧美| 国产一区二区剧情av在线| 国产精品久久久久aaaa| 欧美无人高清视频在线观看| 久久99久久精品| 亚洲欧美韩国综合色| 欧美大片在线观看一区| av成人动漫在线观看| 免费在线观看一区| 国产精品嫩草影院av蜜臀|