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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? i8259intrpep.c

?? 此文件是cp6000主板的bsp包
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/* i8259IntrPep.c - Intel 8259A PIC (Programmable Interrupt Controller) driver *//* Copyright 1984-2002 Wind River Systems, Inc. *//* Copyright 2002 Kontron Modular Computers GmbH */#include "copyright_wrs.h"/*modification history--------------------01r,12nov02,gko  IRQ15 bug has also been detected by support (PDR 02104174),         adapted to pep folder structure, version identifier01q,11nov02,hdn  fixed the IRQ15 spurious interrupt handling (spr 74209)01p,16apr02,hdn  added support for the Special Fully Nested Mode, IRQ0 Early		 EOI Mode, IRQ0 Special Mask Mode, AEOI Mode (spr 76411)01o,29mar02,hdn  added forgotten back slash to the optimized code01n,21mar02,hdn  fixed doc build by removing comments in the optimized code01m,25feb02,hdn  updated i8259Init() for HTT (spr 73738)		 added optimized version of EOI routines01l,11sep01,hdn  updated comment regarding the spr-28547 fix.01k,27aug99,hdn  fixed a bug for stray interrupt in i8259IntBoi(SPR 28547).01j,11oct98,ms   fixed compiler warning via typecast01i,04jun98,hdn  changed a method to exit i8259IntBoi().01h,25may98,hdn  changed function name starting from "i8259".		 added i8259IntEoiMaster(), i8259IntEoiSlave(), i8259IntBoi().		 removed sysIntEOI().01g,17mar97,hdn  added sysIntLock(), sysIntUnlock() for the system mode.01f,25jun96,hdn  added sysIntLevel() for windview.01e,23may96,wlf  doc: cleanup.01d,14jun95,hdn  renamed sysEndOfInt to sysIntEOI.		 moved global function prototypes to sysLib.h.01c,08aug94,hdn  stopped toggling IRQ9 in enabling and disabling.01b,22apr94,hdn  made IRQ9 off in the initialization.		 moved sysVectorIRQ0 to sysLib.c.01a,05sep93,hdn  written.*//*DESCRIPTIONThis module is a driver for the Intel 8259A PIC (Programmable InterruptController).  The Intel 8259A handles up to 8 vectored priority interruptsfor the CPU.  It is cascadable for up to 64 vectored priority interrupts,though this driver assumes two cascaded 8259A.  It is initialized for"Fully Nested Mode", "Non-Specific EOI" mode.Fully Nested Mode.In this mode, interrupt requests are ordered in priorityfrom 0 through 7 (0 is the highest priority).  When an interrupt isacknowledged, the highest priority request is determined and its vector isplaced on the bus.  Additionally, a bit of the Interrupt Service (IS)register is set.  This bit remains set until the microprocessor issues anEOI command immediately before returning from the service routine.  Whilethe IS bit is set, all further interrupts of the same or lower priorityare inhibited, while higher level interrupts are allowed.  Thei8259IntEoiSlaveNfnm() routine is used to issue the EOI command.  The PICsin a PC typically operate in this mode (normal nested mode).  In this mode,while the slave PIC is being serviced by the master PIC, the slave PIC blocksall higher priority interrupt requests.  Alternatively, to allow interrupts ofa higher priority, enable the Special Fully Nested Mode.Special Fully Nested Mode: I8259_SPECIAL_FULLY_NESTED_MODE.This mode is similar to the Fully Nested Mode with the following exceptions:1) When an interrupt request from a slave PIC is in service, the slave isnot locked out from the master's priority logic and further interruptrequests from higher priority IRs within the slave will be recognized bythe master and will initiate interrupts to the processor.  2) When exitingthe interrupt service routine, the software must check whether or not theinterrupt serviced was the only interrupt request from the slave.  If itwas the only interrupt request, a non-specific EOI is sent to the master.If not, no EOI is sent.  This is implemented by the i8259EoiSlaveSfnm()routine.Non-Specific EOI: When the 8259A is operated in the Fully Nested Mode, itcan determine which IS bit to reset on EOI.  When a non-specific EOIcommand is issued, the 8259A will automatically reset the highest IS bit ofthose that are set, since in the fully nested mode the highest IS level isthe last level acknowledged and serviced.Spurious/Phantom Interrupt: The IR inputs must remain high until after thefalling edge of the first INTA.  If the IR input goes low before this time,a DEFAULT(Spurious/Phantom) IR7 will occur when the CPU acknowledges theinterrupt.  The interrupt handler should simply return without sendingan EOI command.The PIC(8259A) IRQ0 is hard wired to the PIT(8253) channel 0 in a PCmotherboard.  IRQ0 is the highest priority in the 8259A interruptcontroller.  Thus, the system clock interrupt handler blocks all lowerlevel interrupts.  This may cause a delay of the lower level interrupts insome situations even though the system clock interrupt handler finishes itsjob without any delay.  This is quite natural from the hardware point ofview, but may not be ideal from the application software standpoint.  Thefollowing modes are supplied to mitigate this situation by providingcorresponding configuration macros in the BSP.  The three modes are mutuallyexclusive.Early EOI Issue in IRQ0 ISR.In this mode, the EOI command is issued before the IRQ0 system clock interruptservice routine starts the kernel work.  This lowers the IRQ0 ISR blockinglevel to the next lower level.  If no IRQs are in service, the next lowerlevel is the lowest level.  If IRQn is in service, the next lower levelcorresponds to the next lower priority.  As a result, the kernel work in thesystem clock interrupt service routine can be interrupted by an interruptwith a higher priority than the blocking level.  The i8259IntBoiEem() routine is called before the interrupt service routine, and no EOI is sent after the interrupt service routine.Special Mask Mode in IRQ0 ISR.In this mode, the Special Mask Mode is used in the IRQ0 system clockservice routine.  This lowers the blocking level to the specified level(currently hard coded to the lowest level).  The i8259IntBoiSmm() routineis called before the interrupt service routine, and the i8259IntEoiSmm()routine is called after the interrupt service routine.Automatic EOI Mode: I8259_AUTO_EOI.This mode provides no nested multi-level interrupt structure in PIC1.  TheEOI command is automatically sent to the master PIC at the end of theinterrupt acknowledge cycle.  Thus, no software intervention is needed.  Thei8259IntBoi() routine is called before the IRQ7 and IRQ15 interrupt serviceroutines.  Either the i8259IntEoiSlaveNfnm() routine or thei8259IntEoiSlaveSfnm() routine is called after the slave PIC's interruptservice routine.SEE ALSO: pc386/target.nr*/#include "drv/intrCtl/i8259Pep.h"#include "versionPep.h"/* version identifier */PEP_VERSION(i8259IntrPep_c,01r)/* externs */IMPORT void	intBoiExit ();IMPORT UINT32	sysStrayIntCount;IMPORT BOOL	sysBp;		/* TRUE(default) for BP, FALSE for AP *//* defines */#define	I8259_EOI_OPTIMIZED	/* use the optimized version *//* globals *//* local */#ifndef	SYMMETRIC_IO_MODELOCAL INT8	i8259IntMask1;		/* interrupt mask for PIC1 */LOCAL INT8	i8259IntMask2;		/* interrupt mask for PIC2 */LOCAL INT8	i8259Mask = 0;		/* interrupt mask for PIC1 */#endif	/* SYMMETRIC_IO_MODE *//* forward static functions *//********************************************************************************* i8259Init - initialize the PIC** This routine initializes the PIC.**/VOID i8259Init (void)    {    UINT8 icw4 = 0x01;    /* return if it is not the Boot Processor (BP) */    if (sysBp == FALSE)	return;    /* initialize the PIC (Programmable Interrupt Controller) */    sysOutByte (PIC_port1 (PIC1_BASE_ADR),0x11);        /* ICW1 */    sysOutByte (PIC_port2 (PIC1_BASE_ADR),INT_NUM_IRQ0); /* ICW2 */    sysOutByte (PIC_port2 (PIC1_BASE_ADR),0x04);        /* ICW3 */#ifdef	I8259_SPECIAL_FULLY_NESTED_MODE    icw4 |= 0x10;					/* SFNM */#endif	/* I8259_SPECIAL_FULLY_NESTED_MODE */#ifdef	I8259_AUTO_EOI    icw4 |= 0x02;					/* AEOI */#endif	/* I8259_AUTO_EOI */    sysOutByte (PIC_port2 (PIC1_BASE_ADR),icw4);        /* ICW4 */    sysOutByte (PIC_port1 (PIC2_BASE_ADR),0x11);        /* ICW1 */    sysOutByte (PIC_port2 (PIC2_BASE_ADR),INT_NUM_IRQ0+8); /* ICW2 */    sysOutByte (PIC_port2 (PIC2_BASE_ADR),0x02);        /* ICW3 */    sysOutByte (PIC_port2 (PIC2_BASE_ADR),0x01);        /* ICW4 */    /* disable interrupts */    sysOutByte (PIC_IMASK (PIC1_BASE_ADR),0xfb);    sysOutByte (PIC_IMASK (PIC2_BASE_ADR),0xff);    }#ifndef	SYMMETRIC_IO_MODE/********************************************************************************* i8259IntBoiEem - issue EOI before the IRQ0 interrupt handler** This routine is called before the IRQ0 interrupt handler that is PIT(8253)* channel 0 system clock interrupt handler in the Early EOI Mode.**/VOID i8259IntBoiEem    (    int irqNo		/* IRQ number of the interrupt */    )    {    INT32 oldLevel = intLock ();			/* LOCK INTERRUPT */    sysOutByte (PIC_IACK (PIC1_BASE_ADR), 0x20);	/* NS EOI to PIC1 */    intUnlock (oldLevel);				/* UNLOCK INTERRUPT */    }/********************************************************************************* i8259IntBoiSmm - enable Special Mask Mode before the IRQ0 interrupt handler** This routine is called before the IRQ0 interrupt handler that is PIT(8253)* channel 0 system clock interrupt handler, in the Special Mask Mode.**/VOID i8259IntBoiSmm    (    int irqNo		/* IRQ number of the interrupt */    )    {    INT32 oldLevel = intLock ();			/* LOCK INTERRUPT */    sysOutByte (PIC_port1 (PIC1_BASE_ADR), 0x68);	/* enable SMM PIC1 */    i8259Mask = sysInByte (PIC_IMASK (PIC1_BASE_ADR));	/* save int mask */    sysOutByte (PIC_IMASK (PIC1_BASE_ADR), 0x01);	/* unlock except IRQ0 */    intUnlock (oldLevel);				/* UNLOCK INTERRUPT */    }/********************************************************************************* i8259IntBoi - detect whether it is spurious interrupt or not** This routine is called before the user's interrupt handler to detect the* spurious interrupt.**/VOID i8259IntBoi    (    INT32 irqNo		/* IRQ number of the interrupt */    )    {    INT32 oldLevel;    INT8 inserviceReg;	INT8 inserviceRegTmp;    /* we are interested in IRQ7 and IRQ15 */    if ((irqNo != 7) && (irqNo != 15))		return;    /* if ISR bit is not set, we change the return address */    oldLevel = intLock ();		/* LOCK INTERRUPT */    if (irqNo == 7)	{        sysOutByte (PIC_port1 (PIC1_BASE_ADR), 0x0b);        inserviceReg = sysInByte (PIC_port1 (PIC1_BASE_ADR));	}    else	{        sysOutByte (PIC_port1 (PIC2_BASE_ADR), 0x0b);        inserviceReg = sysInByte (PIC_port1 (PIC2_BASE_ADR));        /* check bit7 for spurious interrupt from the slave PIC IRQ15 */        if ((inserviceReg & 0x80) == 0)        {            /* make sure no IRQs in the slave PIC are in service */            if (inserviceReg == 0)            {                /* check the master PIC's in-service register */                sysOutByte (PIC_port1 (PIC1_BASE_ADR), 0x0b);                inserviceRegTmp = sysInByte (PIC_port1 (PIC1_BASE_ADR));                /* send non-specific EOI to the master PIC IRQ2 */                if (inserviceRegTmp & 0x04)                    sysOutByte (PIC_IACK (PIC1_BASE_ADR), I8259_EOI);			}	    }	}        intUnlock (oldLevel);		/* UNLOCK INTERRUPT */    /*     * another implementation idea...     *     * *((UINT32 *)&irqNo - 1) = (UINT32)intBoiExit;     * This changes the return addr on the stack.  This is architecture     * specific and tricky.  Thus making following change may be good idea.     *      * - let this routine return OK or ERROR     * - let interrupt stub code check the ret value and jump to intExit.     *     * New code would be like this:     * :     * if ((irqNo != 7) && (irqNo != 15))     *	return (OK);     * :     * if ((inserviceReg & 0x80) == 0)	* check bit7 for IRQ7 and IRQ15 *     *	{     *	sysStrayIntCount++;		* increment the counter *     *  return (ERROR);     *	}     * }	     *     * 00  e8 kk kk kk kk           call    _intEnt         * tell kernel     * 05  50                       pushl   %eax            * save regs     * 06  52                       pushl   %edx     * 07  51                       pushl   %ecx     * 08  68 pp pp pp pp           pushl   $_parameterBoi  * push BOI param     * 13  e8 rr rr rr rr           call    _routineBoi     * call BOI routine     *                              addl    $4, %esp     *                              cmpl    $0, %eax     *                              jne     intConnectCode0     * 18  68 pp pp pp pp           pushl   $_parameter     * push param     * 23  e8 rr rr rr rr           call    _routine        * call C routine     *                              addl    $4, %esp     * 28  68 pp pp pp pp           pushl   $_parameterEoi  * push EOI param     * 33  e8 rr rr rr rr           call    _routineEoi     * call EOI routine

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合久久精品| 亚洲丝袜另类动漫二区| 69久久99精品久久久久婷婷| 在线观看日韩一区| 在线视频一区二区三区| 欧美偷拍一区二区| 91传媒视频在线播放| 欧美视频第二页| 欧美精品日韩一本| 日韩视频免费观看高清完整版| 91麻豆精品国产综合久久久久久| 欧美一区二区视频在线观看| 日韩欧美中文一区二区| 日韩美女天天操| 国产日韩欧美在线一区| 国产精品美女久久久久久久| 亚洲精品日韩专区silk| 一区二区三区**美女毛片| 亚洲电影一区二区三区| 日韩—二三区免费观看av| 日本中文字幕不卡| 国模套图日韩精品一区二区| 高清不卡一区二区在线| 国产大陆亚洲精品国产| 色一情一伦一子一伦一区| 欧美丰满少妇xxxxx高潮对白| 欧美一二三区精品| 久久久九九九九| 国产精品剧情在线亚洲| 亚洲综合一二三区| 精品一区二区三区av| 成人av在线播放网址| 欧美国产日韩a欧美在线观看| 中文字幕不卡在线播放| 亚洲另类春色国产| 久久精品国产亚洲一区二区三区| 国产成a人无v码亚洲福利| 在线欧美日韩国产| 欧美一卡在线观看| 国产精品色哟哟网站| 午夜视频一区二区三区| 精品一区二区三区免费视频| eeuss国产一区二区三区| 欧美色爱综合网| 久久精品夜色噜噜亚洲aⅴ| 亚洲蜜臀av乱码久久精品| 蜜臀久久99精品久久久久久9| 国产一区二区毛片| 欧美中文字幕一二三区视频| 精品国产青草久久久久福利| 亚洲视频一二三| 开心九九激情九九欧美日韩精美视频电影| 丰满少妇在线播放bd日韩电影| 欧美亚洲图片小说| 久久精品一区四区| 亚洲一区二区不卡免费| 国产自产视频一区二区三区| 色欧美乱欧美15图片| 精品国产制服丝袜高跟| 亚洲精品v日韩精品| 国内精品不卡在线| 欧美嫩在线观看| 成人免费小视频| 国产主播一区二区| 欧美日韩一区二区三区不卡| 亚洲国产精品精华液ab| 日日噜噜夜夜狠狠视频欧美人| 久久蜜桃香蕉精品一区二区三区| 亚洲成人综合视频| 91亚洲永久精品| 精品国产91久久久久久久妲己| 亚洲大片免费看| 91免费国产在线观看| 久久久久久9999| 免费成人av在线播放| 欧美性大战久久久| 亚洲欧美影音先锋| 国产成人在线电影| 欧美α欧美αv大片| 亚洲bt欧美bt精品777| 97成人超碰视| 国产精品免费久久| 国产成人免费视频一区| 日韩免费一区二区三区在线播放| 亚洲在线视频网站| 91免费版在线| **欧美大码日韩| 国产69精品久久久久毛片| 精品日韩在线观看| 免费欧美日韩国产三级电影| 欧美日韩视频在线观看一区二区三区 | 欧美剧情电影在线观看完整版免费励志电影| 国产午夜一区二区三区| 激情五月婷婷综合网| 7777精品久久久大香线蕉| 亚洲综合男人的天堂| 色欧美片视频在线观看| 亚洲精品国产精华液| 91麻豆福利精品推荐| 日韩美女啊v在线免费观看| www.久久精品| 国产精品 日产精品 欧美精品| 日韩精品最新网址| 久久精品国产**网站演员| 日韩免费观看2025年上映的电影| 日本伊人色综合网| 日韩欧美综合在线| 久久丁香综合五月国产三级网站| 欧美一区二区播放| 激情综合一区二区三区| 亚洲精品在线免费播放| 精品一区二区三区香蕉蜜桃| www久久久久| 成人涩涩免费视频| 中文字幕在线观看不卡| 色婷婷亚洲精品| 午夜在线电影亚洲一区| 日韩午夜激情免费电影| 久久99精品国产91久久来源| 2020国产精品自拍| 国产99一区视频免费| 亚洲欧洲成人av每日更新| 日本韩国欧美在线| 日韩精品国产精品| 26uuu国产一区二区三区| 国产成人精品免费在线| 最近日韩中文字幕| 欧美理论电影在线| 久草精品在线观看| 国产精品美女久久久久av爽李琼| 99riav一区二区三区| 偷拍与自拍一区| ww亚洲ww在线观看国产| 99视频一区二区| 香蕉av福利精品导航| 精品不卡在线视频| 91美女片黄在线观看91美女| 日本中文字幕一区二区视频| 久久电影网电视剧免费观看| 国产欧美日韩综合精品一区二区| 在线一区二区视频| 免费观看30秒视频久久| 国产精品少妇自拍| 欧美日韩免费不卡视频一区二区三区| 六月丁香婷婷久久| 亚洲国产成人自拍| 欧美日韩免费不卡视频一区二区三区| 国产在线一区二区综合免费视频| 亚洲图片你懂的| 精品久久久久香蕉网| 色哟哟国产精品免费观看| 久久精品国产亚洲一区二区三区| 中文字幕日本乱码精品影院| 91精品国产一区二区三区香蕉| 粉嫩绯色av一区二区在线观看| 亚洲线精品一区二区三区| 久久精子c满五个校花| 欧美色中文字幕| 国产福利一区在线观看| 亚洲成av人片一区二区梦乃| 国产精品私房写真福利视频| 制服丝袜国产精品| 91女神在线视频| 国产精品一区二区果冻传媒| 亚洲大片精品永久免费| 亚洲国产精品成人综合| 欧美一区二区三区在线看| 99re视频精品| 狠狠色丁香婷综合久久| 亚洲成av人影院| 亚洲免费观看高清完整版在线| 久久久精品国产免费观看同学| 4438x成人网最大色成网站| av成人老司机| 国产成人精品一区二区三区网站观看| 日韩在线a电影| 亚洲国产乱码最新视频| 国产精品久久久久一区二区三区 | 亚洲一区二区三区四区在线免费观看| 久久影院视频免费| 777亚洲妇女| 欧美三级午夜理伦三级中视频| 99精品久久久久久| 国产ts人妖一区二区| 精品午夜久久福利影院| 天天综合色天天综合| 亚洲一区二区av电影| 亚洲欧美综合色| 中文字幕中文字幕一区二区 | 国产在线不卡一卡二卡三卡四卡| 亚洲高清在线视频| 18欧美乱大交hd1984| 国产精品免费视频观看| 国产人久久人人人人爽| 久久久综合视频| 久久中文字幕电影| 精品国产一区二区三区不卡| 日韩欧美123| www国产精品av| 久久色.com|