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

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

?? bdcomm.c

?? 這是單板上DPRAM的驅動程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* @(#) pSOSystem PowerPC/V2.2.2*/
/***********************************************************************/
/*                                                                     */
/*   MODULE:  bsps/fuc8xx/src/board.c                                  */
/*   DATE:    98/07/02                                                 */
/*   AUTHOR:  Shan Zhengguang                                          */
/*   PURPOSE: Board-level code                                         */
/*                                                                     */
/*---------------------------------------------------------------------*/
/*                                                                     */
/*         Copyright 1998 - 1999, ZHONGXING TELECOM CO.,LTD.           */
/*                      ALL RIGHTS RESERVED                            */
/*                                                                     */
/*---------------------------------------------------------------------*/
/*                                                                     */
/*   The routines in this module performs board-level functions.       */
/*                                                                     */
/***********************************************************************/
#include "bsp.h"
#include <bspfuncs.h>
#include <configs.h>
#include <machine.h>
#include "board.h"
#include "bdcomm.h"

#define STATIC static

unsigned  long PBMap,PBMask;
unsigned short PAMap,PAMask;
unsigned short PCMap,PCMask;
unsigned short PDMap,PDMask;

/***********************************************************************/
/* Function Prototypes                                                 */
/***********************************************************************/
void        BspDisableDataCache(void);
void        BspDisableInstCache(void);
void        BspSyncUpCaches(void); 
ULONG   BspGetDramSpeed(void);
ULONG   BspGetDramSize(void);
void    BspPmontCallout(void (*)(), void (*)());
unsigned long ClrAbortInt (void);

/***********************************************************************/
/* External Declarations                                               */
/***********************************************************************/
extern void  SysDCacheFlush(void *, ULONG);
extern void  SysHandlerInit(void);
extern void  Sys_Cache_Init(void);
extern void  LanStop(void);
extern ULONG ppcPVRrd(void);
extern void  dpram_init(void);
extern ULONG Print(char *format, ...);
/***********************************************************************/
/* Global Variable Declarations                                        */
/***********************************************************************/
ULONG BoardDecClkRateHz;
/***********************************************************************/
/* The node anchor address is a pointer to the node configuration      */
/* table, which in turn points to the pSOS+ configuration table.  This */
/* driver will look in the pSOS+ configuration table to see how many   */
/* ticks per second are specified, and thus how many interrupts per    */
/* second to generate.                                                 */
/***********************************************************************/
extern NODE_CT    *anchor;

/* External Exception Store -- by chenjun*/
void (*ExceptionStore)();
ExcepRegInfoStruct ExcepRegInfo;
ULONG ExcepStack[60];

/***********************************************************************/
/*                       PowerQUICC mapping table.                     */
/*                                                                     */
/* This table maps the port number to the correct QUICC chip.          */
/* This table should be expanded by sets of four for each MPC8xx in    */
/* the system, this table is used in a Master, Slave configuration.    */
/***********************************************************************/
const ULONG   quicc_num[MAX_SCC] =
{
    0,          /*  MASTER SCC #1   */
    0,          /*  MASTER SCC #2   */
    0,          /*  MASTER SCC #3   */
    0           /*  MASTER SCC #3   */
};
 
/***********************************************************************/
/*                       SCC Identification table.                     */
/*                                                                     */
/* This table is used to map a port number to a PowerQUICC SCC number  */
/* When more than one PowerQUICC is used, the port number ranges       */
/* from 0 to MAX_SCC - 1 while the entries in this table can never be  */
/* higher than 3.                                                      */
/***********************************************************************/
const ULONG   scc_num[MAX_SCC] =
{
    0,          /*  MASTER SCC #1   */
    1,          /*  MASTER SCC #2   */
    2,          /*  MASTER SCC #3   */
    3           /*  MASTER SCC #4   */
};
 
/***********************************************************************/
/*                DPRAM base address mapping table.                    */
/*                                                                     */
/* This table is used to determine the DPRAM base address of a         */
/* given port.                                                         */
/***********************************************************************/
const ULONG   dpram_base[MAX_SCC] =
{
    M_DPRAM_BASE,       /*  MASTER SCC #1   */
    M_DPRAM_BASE,       /*  MASTER SCC #2   */
    M_DPRAM_BASE,       /*  MASTER SCC #3   */
    M_DPRAM_BASE        /*  MASTER SCC #4   */
};
 
/***********************************************************************/
/*               SMC port number mapping table                         */
/***********************************************************************/
const ULONG SmcNum[MAX_SMC] = {
        0,
        1
};
 
/***********************************************************************/
/*              Baud rate generator allocation table                   */
/***********************************************************************/
const ULONG AllocBrg[MAX_SMC] = {
        0,
        1
};
 
/***********************************************************************/
/*              IO Pins and IRQ Pins configuration                     */
/***********************************************************************/
/* TURE=1 is defined in MPC8XX.H */

void SetupIOI(void)
{
    int i;
    ULONG bit,dat;

	PAMap=S_PortADataReg; PAMask=0xFFFF;
	PBMap=S_PortBDataReg; PBMask=0xFFFFFFFF;
	PCMap=S_PortCDataReg; PCMask=0xFFFF;
	PDMap=S_PortDDataReg; PDMask=0xFFFF;

    for(i=0;i<MAX_IOI_ENTRIES;i++)
    {
        if(IOIPinMap[i].available!=TRUE)continue;
        bit=IOIPinMap[i].bit;
		dat=IOIPinMap[i].dat;
        switch(IOIPinMap[i].port)
        {
            case PORTA:
            if(bit>=0 && bit <=15)
            {
				if(dat==1 || dat==0) SET_PA_BIT(bit,dat);

                if(IOIPinMap[i].dir!=0) SET_BIT(S_PortADataDirReg,bit,16)
                else CLR_BIT(S_PortADataDirReg, bit,16)

                if((bit>=8 && bit<=12) || bit==14)
                {
                    if(IOIPinMap[i].odr==0) CLR_BIT(S_PortAOpenDrainReg,bit,16)
                    else SET_BIT(S_PortAOpenDrainReg,bit,16)
                }

                if(IOIPinMap[i].par!=0) SET_BIT(S_PortAPinAssgmntReg,bit,16)
                else CLR_BIT(S_PortAPinAssgmntReg, bit,16)

            }
            break;

            case PORTB:
            if(bit>=14 && bit <=31)
            {
				if(dat==1 || dat==0) SET_PB_BIT(bit,dat);

                if(IOIPinMap[i].dir!=0)SET_BIT(S_PortBDataDirReg,bit,32)
                else CLR_BIT(S_PortBDataDirReg, bit,32)

                if(bit>=16 && bit<=31)
                {
                    if(IOIPinMap[i].odr==0) CLR_BIT(S_PortBOpenDrainReg,bit,32)
                    else SET_BIT(S_PortBOpenDrainReg,bit,32)
                }

                if(IOIPinMap[i].par!=0) SET_BIT(S_PortBPinAssgmntReg,bit,32)
                else CLR_BIT(S_PortBPinAssgmntReg, bit,32)

            }
            break;

            case PORTC:
            if(bit>=4 && bit <=15)
            {
				if(dat==1 || dat==0) SET_PC_BIT(bit,dat);

                if(IOIPinMap[i].dir!=0)SET_BIT(S_PortCDataDirReg,bit,16)
                else CLR_BIT(S_PortCDataDirReg, bit,16)

                if(IOIPinMap[i].so !=0  ) SET_BIT(S_PortCSpecialOptsReg,bit,16)
                else CLR_BIT(S_PortCSpecialOptsReg, bit,16)

                if(IOIPinMap[i].inttype==IHL)SET_BIT(S_PortCIntCtrlReg,bit,16)
                else CLR_BIT(S_PortCIntCtrlReg, bit,16)

                if(IOIPinMap[i].par!=0) SET_BIT(S_PortCPinAssgmntReg,bit,16)
                else CLR_BIT(S_PortCPinAssgmntReg, bit,16)
                    
            }
            break;

            case PORTD:
            if(bit>=3 && bit <=15)
            {
				if(dat==1 || dat==0) SET_PD_BIT(bit,dat);

                if(IOIPinMap[i].dir!=0)SET_BIT(S_PortDDataDirReg,bit,16)
                else CLR_BIT(S_PortDDataDirReg, bit,16)

                if(bit==8)
                {
                    if(IOIPinMap[i].odr!=0 ) SET_BIT(S_PortDDataDirReg,0,16)
                    else CLR_BIT(S_PortDDataDirReg, 0,16)
                }
                else if(bit==10)
                {
                    if(IOIPinMap[i].odr!=0 ) SET_BIT(S_PortDDataDirReg,1,16)
                    else CLR_BIT(S_PortDDataDirReg, 1,16)
                }

                if(IOIPinMap[i].par!=0) SET_BIT(S_PortDPinAssgmntReg,bit,16)
                else CLR_BIT(S_PortDPinAssgmntReg, bit,16)

            }
            break;
        }/* end of switch(available) */
    }/* end of for(MAX_IOI_ENTRIES)*/

    PAMask=(~S_PortAPinAssgmntReg)&S_PortADataDirReg; 
    PBMask=(~S_PortBPinAssgmntReg)&S_PortBDataDirReg; 
    PCMask=(~S_PortCPinAssgmntReg)&S_PortCDataDirReg;
    PDMask=(~S_PortDPinAssgmntReg)&S_PortDDataDirReg;

}/* end of SetupIOI()
/***********************************************************************/
/* BspDisableDataCache: Flushes the Data cache and disables it, this   */
/*                      routine is called to flush and disable the data*/
/*                      cache, and to turn off the MMU                 */
/*                                                                     */
/* RETURNS: NONE                                                       */
/*                                                                     */
/***********************************************************************/
void    
BspDisableDataCache()
{

#if (BRD_DCACHE == YES) || (BSP_MMU == YES)
ULONG        OldIpl;
        OldIpl = splx(MAX_ILEV);
#if (BRD_DCACHE == YES)
        FlushDcache();
        SysDcacheInhibit();
#endif
#if (BSP_MMU == YES)
        BspMmuTransOff();
#endif
        splx(OldIpl);
#endif /* (BRD_DCACHE == YES) || (BSP_MMU == YES) */

}


/***********************************************************************/
/* BspDisableInstCache: Disables the Instruction cache                 */
/*                                                                     */
/* RETURNS: NONE                                                       */
/*                                                                     */
/***********************************************************************/
void    
BspDisableInstCache()
{

#if (BRD_ICACHE == YES)
        ULONG OldIpl;
        OldIpl = splx(MAX_ILEV);
        SysIcacheInhibit();
        splx(OldIpl);
#endif
}


/***********************************************************************/
/* BspSyncUpCaches: Flushes the Data cache and Invalidates the I-Cache */
/*                                                                     */
/* RETURNS: NONE                                                       */
/*                                                                     */
/***********************************************************************/
void    
BspSyncUpCaches()
{

#if (BRD_DCACHE == YES) || (BRD_ICACHE == YES)
ULONG        OldIpl;
        OldIpl = splx(MAX_ILEV);
#if (BRD_DCACHE == YES)
        FlushDcache();
        SysDcacheInv(0, BD_SIZE_OF_DCACHE);
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲妇女屁股眼交7| 成人毛片老司机大片| 精品在线视频一区| 一本大道av伊人久久综合| 日韩一区二区免费高清| 亚洲欧洲美洲综合色网| 麻豆国产91在线播放| 欧美这里有精品| 国产精品不卡在线| 国模娜娜一区二区三区| 欧美日韩免费视频| 亚洲欧美在线观看| 国产丶欧美丶日本不卡视频| 欧美一区二区三区视频在线| 亚洲欧美二区三区| thepron国产精品| 久久午夜老司机| 久久国产人妖系列| 555夜色666亚洲国产免| 亚洲制服丝袜av| 在线看一区二区| 亚洲欧美日韩一区二区 | 成人av网址在线| 欧美va亚洲va在线观看蝴蝶网| 亚洲午夜在线视频| 欧美日韩综合色| 亚洲国产日韩av| 欧美日韩一区二区三区四区五区 | 精品午夜一区二区三区在线观看| 在线视频国产一区| 亚洲精品日日夜夜| 在线欧美日韩国产| 一区二区三区日韩| 欧美日韩成人一区| 亚洲www啪成人一区二区麻豆| 色哟哟欧美精品| 亚洲伊人伊色伊影伊综合网| 91蝌蚪porny成人天涯| 亚洲视频在线观看三级| 99免费精品视频| 亚洲男人都懂的| 欧美色爱综合网| 视频一区二区三区在线| 日韩欧美在线影院| 国精品**一区二区三区在线蜜桃| 久久亚洲二区三区| 成人免费毛片高清视频| 亚洲美女屁股眼交3| 欧美日韩一区三区| 久久国产夜色精品鲁鲁99| 久久品道一品道久久精品| 波多野结衣在线一区| 一区二区国产盗摄色噜噜| 欧美日韩成人综合天天影院| 久久av老司机精品网站导航| 国产性做久久久久久| 色88888久久久久久影院按摩| 亚洲一卡二卡三卡四卡无卡久久| 欧美丰满少妇xxxxx高潮对白| 蜜桃av噜噜一区| 国产精品你懂的| 欧美日韩成人综合| 国产成人免费视频| 亚洲国产日韩a在线播放性色| 日韩免费看的电影| 成人av在线看| 免费不卡在线视频| 亚洲欧洲精品一区二区三区 | 一区二区三区在线视频观看58| 欧美绝品在线观看成人午夜影视| 另类小说图片综合网| 日韩毛片在线免费观看| 欧美一区二区三区的| 成人的网站免费观看| 日本不卡免费在线视频| 中文字幕一区三区| 欧美一级日韩一级| 91一区在线观看| 国产精品一区免费在线观看| 亚洲在线视频一区| 欧美激情一区三区| 日韩精品专区在线| 欧美无砖专区一中文字| 成人免费三级在线| 九九久久精品视频| 亚洲一区成人在线| 亚洲欧美日韩在线| 国产欧美综合色| 欧美大胆人体bbbb| 欧美久久一区二区| 色噜噜夜夜夜综合网| 国产精品亚洲第一| 久久97超碰色| 五月婷婷欧美视频| 亚洲午夜羞羞片| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美不卡一二三| 欧美顶级少妇做爰| 欧美私模裸体表演在线观看| 成人福利在线看| 国产成人精品影视| 国产综合色在线| 捆绑调教美女网站视频一区| 亚洲电影一区二区三区| 一区二区三区成人| 一区二区三区欧美日韩| 亚洲欧洲中文日韩久久av乱码| 国产调教视频一区| 久久这里只有精品首页| 久久嫩草精品久久久久| 精品粉嫩aⅴ一区二区三区四区| 欧美区一区二区三区| 在线观看免费视频综合| 色婷婷综合激情| 91久久奴性调教| 精品视频一区二区不卡| 欧美性高清videossexo| 欧美色偷偷大香| 欧美老女人第四色| 欧美一区二区三区免费| 亚洲精品一区二区三区在线观看 | 99re热这里只有精品视频| 国产福利一区二区| 成人一级黄色片| av电影在线观看完整版一区二区| eeuss鲁片一区二区三区在线观看| 从欧美一区二区三区| av中文字幕不卡| 色综合天天在线| 欧美日韩国产一级| 日韩精品一区二区三区视频| 欧美成人在线直播| 国产丝袜美腿一区二区三区| 国产精品国产a| 亚洲国产中文字幕在线视频综合| 午夜在线成人av| 激情综合五月婷婷| 99re6这里只有精品视频在线观看| 成人av网在线| 884aa四虎影成人精品一区| 日韩女优av电影| 亚洲私人黄色宅男| 奇米精品一区二区三区四区 | 92国产精品观看| 欧美日精品一区视频| 日韩午夜激情视频| 久久综合久久鬼色中文字| 国产欧美一区二区精品忘忧草| 亚洲欧美一区二区不卡| 天天操天天综合网| 粉嫩嫩av羞羞动漫久久久| 色88888久久久久久影院按摩 | 日韩精品免费视频人成| 国产一区二区女| 欧亚洲嫩模精品一区三区| 欧美电影免费观看高清完整版| 国产精品理论在线观看| 亚洲自拍偷拍网站| 国产激情偷乱视频一区二区三区| 日本韩国精品在线| 久久久久久久免费视频了| 亚洲综合在线免费观看| 国产精一区二区三区| 精品久久人人做人人爰| 亚洲色大成网站www久久九九| 奇米色一区二区三区四区| 97久久超碰精品国产| 2023国产精品| 亚洲h在线观看| 91一区二区在线观看| 久久亚洲捆绑美女| 日韩电影免费在线看| 91福利视频在线| √…a在线天堂一区| 精品一区二区在线看| 欧美色视频在线| 亚洲综合网站在线观看| 成人午夜碰碰视频| 久久久精品日韩欧美| 美女视频一区在线观看| 在线亚洲+欧美+日本专区| 国产精品成人一区二区艾草| 国产一区二区中文字幕| 欧美老年两性高潮| 一区二区视频在线| 成人黄页在线观看| 欧美国产日韩一二三区| 国产精品影视天天线| 精品久久人人做人人爽| 日韩国产一区二| 制服丝袜中文字幕亚洲| 亚洲成年人网站在线观看| 欧美写真视频网站| 一区二区三区不卡在线观看| 91蝌蚪porny九色| 亚洲欧美日韩系列| 91蝌蚪porny| 亚洲一区二区三区三| 欧美日韩视频一区二区| 亚洲国产aⅴ成人精品无吗|