亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
一本久道久久综合中文字幕 | 中文字幕亚洲一区二区av在线 | 久久久久国产免费免费| 欧美不卡一区二区三区| 中文字幕巨乱亚洲| 亚洲一区二区视频| 美女任你摸久久| 成人av集中营| 日韩三区在线观看| 亚洲色图制服诱惑| 美女尤物国产一区| 不卡免费追剧大全电视剧网站| 在线视频一区二区免费| www激情久久| 国产精品不卡在线观看| 天天av天天翘天天综合网色鬼国产| 国内久久婷婷综合| 欧美色图免费看| 国产日本一区二区| 日韩一区欧美二区| 成人短视频下载| 日韩精品专区在线影院重磅| 亚洲视频在线观看一区| 韩国视频一区二区| 欧美日韩黄色一区二区| 国产精品情趣视频| 精品亚洲国内自在自线福利| 成人免费高清视频| 精品捆绑美女sm三区| 亚洲高清免费一级二级三级| 福利电影一区二区三区| 91精品中文字幕一区二区三区| 国产精品每日更新| 国产一区二区成人久久免费影院| 欧美三电影在线| 亚洲狠狠丁香婷婷综合久久久| 九九视频精品免费| 日韩精品一区二区三区三区免费| 亚洲成人综合视频| 欧美亚洲禁片免费| 亚洲欧洲av另类| 久久精品国产精品亚洲精品| 欧美精品乱码久久久久久按摩 | 精品一区二区三区不卡 | 26uuu亚洲综合色| 肉肉av福利一精品导航| 欧美视频完全免费看| 成人免费视频在线观看| 成人国产亚洲欧美成人综合网| 久久在线免费观看| 久久99久久99精品免视看婷婷| 欧美大片国产精品| 五月婷婷综合网| 欧美裸体一区二区三区| 亚洲免费观看在线观看| 色婷婷精品久久二区二区蜜臀av| 最新成人av在线| 成人a级免费电影| 亚洲三级小视频| 91国偷自产一区二区使用方法| 一区二区三区在线影院| 精品视频一区二区三区免费| 一二三四社区欧美黄| 欧美日韩一级黄| 免费在线观看精品| 久久精品亚洲国产奇米99| 国产精品一区专区| 精品久久人人做人人爱| 国产精品一区在线观看乱码 | 国产成人日日夜夜| 日本一区二区在线不卡| 91在线小视频| 午夜精品久久久久久久蜜桃app| 911国产精品| 国产精品一卡二卡| 亚洲欧美色图小说| 欧美高清视频www夜色资源网| 免费av网站大全久久| 久久精品亚洲乱码伦伦中文| 97久久超碰国产精品| 一区二区三区美女视频| 欧美一区午夜视频在线观看| 国模冰冰炮一区二区| 国产精品乱码人人做人人爱| 欧美高清视频在线高清观看mv色露露十八 | 色老汉av一区二区三区| 精品一区二区综合| 婷婷成人激情在线网| 国产精品久久久久久久久动漫| 欧美日韩在线播放三区四区| 成人午夜精品一区二区三区| 毛片av中文字幕一区二区| 亚洲成人福利片| 亚洲精品成人少妇| 国产精品视频观看| www久久精品| 日韩精品一区二区三区视频在线观看| 欧美性欧美巨大黑白大战| 91亚洲资源网| 不卡区在线中文字幕| 国产成人一级电影| 国产成人av在线影院| 免播放器亚洲一区| 青娱乐精品视频在线| 亚洲成a人片在线观看中文| 欧美国产欧美综合| 欧美va亚洲va| 日韩欧美国产综合在线一区二区三区 | 亚洲电影在线播放| 久久精品亚洲麻豆av一区二区 | 精品国产一区二区三区久久久蜜月 | 国产精品日日摸夜夜摸av| 欧美日韩国产免费| 成年人网站91| 精品伊人久久久久7777人| 久久狠狠亚洲综合| 男男成人高潮片免费网站| 亚洲一区二区在线观看视频 | 亚洲欧美激情一区二区| 中文字幕日韩一区| 欧美国产日韩a欧美在线观看| 欧美mv和日韩mv的网站| 欧美专区在线观看一区| 日本高清成人免费播放| 97久久超碰国产精品电影| 成人黄动漫网站免费app| 国产成人超碰人人澡人人澡| 国产一区二区三区最好精华液| 一区二区三区影院| 视频在线观看91| 丝袜亚洲另类欧美| 亚洲成人资源在线| 亚洲国产成人av网| 亚瑟在线精品视频| 日本亚洲一区二区| 日韩精品电影在线| 日韩二区三区在线观看| 偷拍与自拍一区| 日本不卡不码高清免费观看| 国产在线一区观看| 国产高清久久久| 国产69精品一区二区亚洲孕妇| 国产精品一区二区在线播放 | 精品乱码亚洲一区二区不卡| 91精品欧美福利在线观看| 欧美一级久久久久久久大片| 欧美一级片在线看| 日韩午夜精品视频| 久久精品亚洲精品国产欧美kt∨| 亚洲麻豆国产自偷在线| 亚洲一二三四在线观看| 日韩福利电影在线| 国产在线视频一区二区三区| 成人午夜短视频| 欧美高清你懂得| 久久久久久久电影| 中文字幕在线不卡国产视频| 一区二区三区自拍| 日韩成人dvd| 色av成人天堂桃色av| 欧美二区三区的天堂| 欧美精品在线观看播放| 欧美大片拔萝卜| 久久久美女毛片| 一区二区三区在线免费| 男男成人高潮片免费网站| 国产ts人妖一区二区| 99久久精品久久久久久清纯| 欧美日韩一区高清| 精品成人佐山爱一区二区| 国产精品久久久久久久久图文区| 日韩激情视频网站| 丝袜亚洲精品中文字幕一区| 国产毛片精品视频| 欧洲精品一区二区三区在线观看| 欧美一区二区三区免费视频 | 亚洲精品综合在线| 丝袜美腿亚洲综合| k8久久久一区二区三区| 欧美曰成人黄网| 日韩毛片视频在线看| 九一九一国产精品| 在线免费观看不卡av| 久久久高清一区二区三区| 久久精工是国产品牌吗| 在线视频欧美精品| 久久精品夜色噜噜亚洲a∨| 亚洲成人高清在线| 欧美日韩国产综合视频在线观看| 国产欧美日韩精品一区| 免费观看久久久4p| 欧美日韩一区二区三区在线| 亚洲精品在线一区二区| 久久国产生活片100| 欧美日韩一区二区三区免费看| 国产欧美一二三区| 国产一区二区看久久| 精品视频免费在线| 日韩国产精品久久久| 色88888久久久久久影院按摩|