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

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

?? syslib.c.bak

?? miceteck_MPC860_BSP源碼,基于VXWORK
?? BAK
?? 第 1 頁 / 共 2 頁
字號:
/* sysLib.c - Motorola 860DAB board system-dependent library */

/* Copyright 1998 Teltec UCD-CS */
/* Copyright 1984-1996 Wind River Systems, Inc. */
#include "copyright_wrs.h"

/*
modification history
--------------------
01a,16sep98,rkh  started for DAB
01e,21feb97,mas  removed NOMANUAL, made sysHwInit2() visible to 'man' (SPR 7879)
01d,11nov96,tam  added power management mode initialization.
01c,06nov96,tpr  reworked sysHwInit().
01b,28may96,dzb  added Ethernet driver support routines.
		 added port initialization, and increased system to 24Mhz.
01a,19apr96,tpr  written.
*/

/*
DESCRIPTION
This library provides board-specific routines.  The chip drivers included are:

    ppcDecTimer.c	- PowerPC Decrementer Timer library

INCLUDE FILES: sysLib.h

SEE ALSO:
.pG "Configuration"
*/

/* includes */

#include "vxWorks.h"
#include "vme.h"
#include "memLib.h"
#include "cacheLib.h"
#include "sysLib.h"
#include "config.h"
#include "string.h"
#include "intLib.h"
#include "logLib.h"
#include "routeLib.h"
#include "stdio.h"
#include "taskLib.h"
#include "vxLib.h"
#include "tyLib.h"
#include "arch/ppc/vxPpcLib.h"
#include "private/vmLibP.h"

#include "drv/multi/ppc860Siu.h"
#include "860pc.h"

#ifdef INCLUDE_CPM
#include "drv/netif/if_cpm.h"
#endif

#define PLD_BASE 0x30000000  /* defined in ca6004.h */
#define PLD_SIZE 0x00008000  /* defined in ca6004.h */

PHYS_MEM_DESC sysPhysMemDesc [] =
    {
    {
    (void *) LOCAL_MEM_LOCAL_ADRS,
    (void *) LOCAL_MEM_LOCAL_ADRS,
    LOCAL_MEM_SIZE ,
    VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE | VM_STATE_MASK_CACHEABLE,
    VM_STATE_VALID      | VM_STATE_WRITABLE      | VM_STATE_CACHEABLE
    },

    {
    (void *) INTERNAL_MEM_MAP_ADDR,
    (void *) INTERNAL_MEM_MAP_ADDR,
    INTERNAL_MEM_MAP_SIZE,		/* 64 k - Internal Memory Map */	
    VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE | VM_STATE_MASK_CACHEABLE,
    VM_STATE_VALID      | VM_STATE_WRITABLE      | VM_STATE_CACHEABLE_NOT
    },

    {
    (void *) ROM_BASE_ADRS,
    (void *) ROM_BASE_ADRS,
    ROM_SIZE,				/* Flach memory */	
    VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE | VM_STATE_MASK_CACHEABLE,
    VM_STATE_VALID      | VM_STATE_WRITABLE      | VM_STATE_CACHEABLE_NOT
    },
    {
    (void *) FLASH_ADRS,
    (void *) FLASH_ADRS,
    FLASH_SIZE,
    VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE | VM_STATE_MASK_CACHEABLE,
    VM_STATE_VALID      | VM_STATE_WRITABLE      | VM_STATE_CACHEABLE_NOT
    },
/* CPLD memory (32k) */
    {
    (void *) PLD_BASE,
    (void *) PLD_BASE,
    PLD_SIZE,                 
    VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE | VM_STATE_MASK_CACHEABLE,
    VM_STATE_VALID      | VM_STATE_WRITABLE      | VM_STATE_CACHEABLE_NOT
    }
    /* *** */
    /* ,
    {
    (void *) 0x02100000,
    (void *) 0x02100000,
    4096,
    VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE  | VM_STATE_MASK_CACHEABLE,
    VM_STATE_VALID      | VM_STATE_WRITABLE       | VM_STATE_CACHEABLE_NOT
    } */
    };

int sysPhysMemDescNumEnt = NELEMENTS (sysPhysMemDesc);

int   sysBus      = BUS;                /* system bus type (VME_BUS, etc) */
int   sysCpu      = CPU;                /* system CPU type (PPC860) */
char *sysBootLine = BOOT_LINE_ADRS;	/* address of boot line */
char *sysExcMsg   = EXC_MSG_ADRS;	/* catastrophic message area */
int   sysProcNum;			/* processor number of this CPU */
int   sysFlags;				/* boot flags */
char  sysBootHost [BOOT_FIELD_LEN];	/* name of host from which we booted */
char  sysBootFile [BOOT_FIELD_LEN];	/* name of file from which we booted */
BOOL  sysVmeEnable = FALSE;		/* by default no VME */

#ifdef	INCLUDE_CPM
/* XXX set the following array to a unique Ethernet hardware address XXX */

/* last 5 nibbles are board specific, initialized in sysHwInit */

unsigned char sysCpmEnetAddr [6] = {0x08,0x00,0x3e,0x03,0x02,0x09};
unsigned char sysCpmEnetIp[16] = "192.168.0.42";

extern STATUS cpmattach();
#endif	/* INCLUDE_CPM */

/* locals */
void sysCpmEnetDisable (int unit);
void sysCpmEnetIntDisable (int unit);


#ifdef INCLUDE_MOT_FEC
unsigned char sysFecEnetAddr[6];

IMPORT STATUS sysFccEnetDisable(UINT32 motCpmaddr);

#endif/* INCLUDE_MOT_FEC */

#include "sysSerial.c"
#include "intrCtl/ppc860Intr.c"
#include "timer/ppcDecTimer.c"		/* PPC860 & 821 have on chip timers */
/* #include "mem/nullNvRam.c" */
#include "flashMem.c"
#include "bootLine.c"
#include "sysMotCpmEnd.c"
/* #include "motFecEnd.c" */

#include "ca6004.c"


/******************************************************************************
*
* sysModel - return the model name of the CPU board
*
* This routine returns the model name of the CPU board.
*
* RETURNS: A pointer to the string.
*/

char * sysModel (void)
    {
    return ("Motorola 860pc - PowerPC 860");
    }

/******************************************************************************
*
* sysBspRev - return the bsp version with the revision eg 1.0/<x>
*
* This function returns a pointer to a bsp version with the revision.
* for eg. 1.0/<x>. BSP_REV defined in config.h is concatanated to
* BSP_VERSION and returned.
*
* RETURNS: A pointer to the BSP version/revision string.
*/

char * sysBspRev (void)
    {
    return (BSP_VERSION BSP_REV);
    }

/******************************************************************************
*
* sysHwInit - initialize the system hardware
*
* This routine initializes various feature of the MPC860DAB boards. It sets up
* the control registers, initializes various devices if they are present.
*
* NOTE: This routine should not be called directly by the user.
*
* RETURNS: N/A
*/

void sysHwInit (void)
    {
    char  initValue[NV_INIT_SIZE+1];
    UINT8 macAdrs[6];
    int	immrVal = vxImmrGet();

    /* set the SPLL to the value requested */

    * PLPRCR(immrVal) = (*PLPRCR(immrVal) & ~PLPRCR_MF_MSK) | 
				(SPLL_MUL_FACTOR << PLPRCR_MF_SHIFT);

    /* set the BRGCLK division factor */

    * SCCR(immrVal) = (* SCCR(immrVal) & ~SCCR_DFBRG_MSK) |
				(BRGCLK_DIV_FACTOR << SCCR_DFBRG_SHIFT);
     
    /* reset the port A */

    *PAPAR(immrVal) = 0x0000;
    *PADIR(immrVal) = 0x0000; /* *PADIR(immrVal) = 0x0008;*/
    *PAODR(immrVal) = 0x0000;
    *PADAT(immrVal) = 0x0000; /* *PADIR(immrVal) = 0x0008; */

    /* reset the port B */

    *PBPAR(immrVal) = 0x00000000;
    *PBDIR(immrVal) = 0x00000000;
    *PBODR(immrVal) = 0x00000000;

    /* reset the port C */

    *PCPAR(immrVal) = 0x0000;
    *PCDIR(immrVal) = 0x0000;
    *PCSO(immrVal)  = 0x0000;

    /* reset the port D */

    *PDPAR(immrVal) = 0x0000;
    *PDDIR(immrVal) = 0x0000;
    
    /* config private I2C channel */
    /* added by TANG 2003.6.16 */
/*    
    *PBPAR(immrVal) &= 0xfffe13ff;
    *PCPAR(immrVal) &= 0xfff0;
    *PBDIR(immrVal) |= 0x0001ec00;
    *PCDIR(immrVal) |= 0x000f;
    *PCSO(immrVal)  &= 0xfff0;
    *CIMR(immrVal)  &= 0x7a7fffff;  
*/       

    *SICR(immrVal) = 0x0;		/* initialize SI/NMSI connections */

    /* Initialize interrupts */

    ppc860IntrInit(IV_LEVEL4);	/* default vector level */

    /* Reset serial channels */

    sysSerialHwInit();

    /* make sure Ethernet is disabled */

    sysCpmEnetDisable (0);
    sysCpmEnetIntDisable (0);
    
#ifdef INCLUDE_MOT_FEC
    sysFecEnetDisable(immrVal);
#endif /*INCLUDE_MOT_FEC*/

    /* ensure bootline exist in NVRAM */
    if ((sysNvRamGet(&initValue[0],NV_INIT_SIZE+1,-NV_BOOT_OFFSET)) != ERROR)
	{
	  
	  if ( strcmp( initValue, NVRAM_INITIALIZED) != 0 ) 
	  {
	  	
	    (void)sysNvRamSet(DEFAULT_BOOT_LINE, strlen(DEFAULT_BOOT_LINE)+1,0);
			
	  }
	}
    if ((sysFlashGet(&initValue[0],NV_INIT_SIZE+1,MAC_ADRS-FLASH_ADRS)) != ERROR)
	{
	  
	  if ( strcmp( initValue, NVRAM_INITIALIZED) != 0 ) 
	    {
	     bcopy((UINT8*)DEFAULT_10M_MAC_ADRS,(UINT8*)macAdrs,6);
	     
	     #ifdef INCLUDE_MOT_FEC
	       bcopy((UINT8*)DEFAULT_100M_MAC_ADRS,(UINT8*)(macAdrs+6),6);
	       bcopy((UINT8*)DEFAULT_10M_IP,(UINT8*)(macAdrs+12),16);
	     #endif /* INCLUDE_MOT_FEC */
	     
	     macAdrsSet((UINT8*)macAdrs);
	   }
          else
             macAdrsGet((UINT8*)macAdrs);
        }
     bcopy((UINT8*)macAdrs,sysCpmEnetAddr,6);

#ifdef INCLUDE_MOT_FEC
     bcopy((UINT8*)(macAdrs+6),sysFecEnetAddr,6);
     bcopy((UINT8*)(macAdrs+12),sysCpmEnetIp,16);		
#endif /* INCLUDE_MOT_FEC */
    
    /*
     * The power management mode is initialized here. Reduced power mode
     * is activated only when the kernel is iddle (cf vxPowerDown).
     * Power management mode is selected via vxPowerModeSet().
     * DEFAULT_POWER_MGT_MODE is defined in config.h.
     */

    vxPowerModeSet (DEFAULT_POWER_MGT_MODE);
    }

/*******************************************************************************
*
* sysPhysMemTop - get the address of the top of physical memory
*
* This routine returns the address of the first missing byte of memory,
* which indicates the top of memory.
*
* RETURNS: The address of the top of physical memory.
*
* SEE ALSO: sysMemTop()
*/

char * sysPhysMemTop (void)
    {
    static char * physTop = NULL;

    if (physTop == NULL)
	{
	physTop = (char *)(LOCAL_MEM_LOCAL_ADRS + LOCAL_MEM_SIZE);
	}

    return (physTop) ;
    }

/*******************************************************************************
*
* sysMemTop - get the address of the top of VxWorks memory
*
* This routine returns a pointer to the first byte of memory not
* controlled or used by VxWorks.
*
* The user can reserve memory space by defining the macro USER_RESERVED_MEM
* in config.h.  This routine returns the address of the reserved memory
* area.  The value of USER_RESERVED_MEM is in bytes.
*
* RETURNS: The address of the top of VxWorks memory.
*/

char * sysMemTop (void)
    {
    static char * memTop = NULL;

    if (memTop == NULL)
	{
	memTop = sysPhysMemTop () - USER_RESERVED_MEM;
	}

    return memTop;
    }


/******************************************************************************
*
* sysToMonitor - transfer control to the ROM monitor
*
* This routine transfers control to the ROM monitor.  Normally, it is called
* only by reboot()--which services ^X--and bus errors at interrupt level.
* However, in some circumstances, the user may wish to introduce a
* <startType> to enable special boot ROM facilities.
*
* RETURNS: Does not return.
*/

STATUS sysToMonitor
    (
     int startType	/* parameter passed to ROM to tell it how to boot */
    )
    {
    FUNCPTR pRom = (FUNCPTR) (ROM_TEXT_ADRS + 4);	/* Warm reboot */

    sysCpmEnetDisable (0);	/* disable the ethernet device */
 
    sysCpmEnetIntDisable (0);	/* disable the ethernet device interrupt */

#ifdef INCLUDE_MOT_FEC
	sysFecEnetDisable(vxImmrGet() );
#endif/*INCLUDE_MOT_FEC*/	

    sysSerialReset();		/* reset the serail device */

    (*pRom) (startType);	/* jump to bootrom entry point */

    return (OK);	/* in case we ever continue from ROM monitor */
    }

/******************************************************************************
*
* sysHwInit2 - additional system configuration and initialization
*
* This routine connects system interrupts and does any additional
* configuration necessary.
*
* RETURNS: N/A
*/

void sysHwInit2 (void)
    {
    static BOOL configured = FALSE;
    int		immrVal;

    if (!configured)
	{

	immrVal = vxImmrGet();

	/* initialize serial interrupts */

	sysSerialHwInit2();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人手机在线| 国产精品久久久久一区| 日韩高清在线电影| 日韩免费视频一区二区| 狠狠色综合播放一区二区| 欧美精品一区二区三区在线播放| 国精品**一区二区三区在线蜜桃| 久久精品综合网| 91丨九色丨蝌蚪富婆spa| 亚洲成人高清在线| 精品国产电影一区二区| av电影一区二区| 亚洲狠狠爱一区二区三区| 欧美一区二区三区系列电影| 精品一区二区免费看| 中文字幕色av一区二区三区| 在线精品视频免费播放| 久久精品免费观看| 18欧美亚洲精品| 日韩一区二区三区三四区视频在线观看| 久久成人精品无人区| 亚洲丝袜自拍清纯另类| 日韩欧美一级特黄在线播放| 成人短视频下载| 日本中文字幕不卡| 国产精品美女久久久久久久久| 欧美无人高清视频在线观看| 国产精品资源在线观看| 亚洲成av人综合在线观看| 久久久精品综合| 欧美美女网站色| 不卡一卡二卡三乱码免费网站 | 久久精品男人天堂av| 91丝袜高跟美女视频| 经典三级在线一区| 亚洲影院久久精品| 亚洲国产成人午夜在线一区| 91麻豆精品国产91久久久 | 欧美va亚洲va香蕉在线| 91老师片黄在线观看| 久久国产视频网| 亚洲综合一区二区精品导航| 国产日韩欧美综合在线| 欧美一区二区精美| 91国产免费看| 91在线免费播放| 国产九色精品成人porny| 日韩高清不卡一区二区| 亚洲美女在线国产| 中文字幕av一区二区三区| 91精品国产综合久久精品| 欧美亚洲动漫精品| 91香蕉国产在线观看软件| 国产精品一线二线三线| 久久国产福利国产秒拍| 日本在线不卡一区| 亚洲成人精品在线观看| 一区二区三区中文字幕精品精品| 中文字幕精品在线不卡| 欧美精品一区二区三区在线播放| 日韩一级片网站| 91精品国产一区二区三区| 欧美麻豆精品久久久久久| 欧美午夜理伦三级在线观看| 色综合久久久网| 91久久免费观看| 91激情五月电影| 欧美在线制服丝袜| 欧美日韩黄视频| 51精品视频一区二区三区| 欧美日韩国产片| 欧美精品久久一区| 欧美狂野另类xxxxoooo| 欧美日韩成人在线| 日韩一级成人av| 日韩免费在线观看| 久久精品水蜜桃av综合天堂| 国产欧美日韩久久| 国产精品久久久久影院色老大| 亚洲国产精品传媒在线观看| 国产精品免费视频网站| 亚洲精品一二三四区| 一区二区三区四区高清精品免费观看 | 欧美韩国日本不卡| 国产精品国产a| 有码一区二区三区| 日日夜夜一区二区| 精品一区二区综合| 懂色av一区二区三区蜜臀| 99久久99久久综合| 欧美日韩精品一区二区在线播放| 亚洲国产高清在线观看视频| 国产精品女主播av| 一区二区三区中文在线观看| 日韩精品一二三| 国产精品一区二区久久不卡 | 国产老女人精品毛片久久| 成人免费福利片| 欧美中文字幕亚洲一区二区va在线| 欧美日本国产视频| 久久九九久精品国产免费直播| 成人欧美一区二区三区黑人麻豆| 亚洲精品ww久久久久久p站| 偷拍一区二区三区| 精品中文av资源站在线观看| 99精品黄色片免费大全| 欧美另类高清zo欧美| 国产无一区二区| 亚洲一区二区视频在线| 国产精品自拍三区| 欧美亚洲一区二区在线| 2021国产精品久久精品| 亚洲精品日产精品乱码不卡| 毛片av一区二区| 在线视频综合导航| 久久美女艺术照精彩视频福利播放 | 色噜噜狠狠成人中文综合 | 色噜噜偷拍精品综合在线| 欧美一区二区三区爱爱| 一区精品在线播放| 麻豆91在线播放免费| 色狠狠av一区二区三区| 精品国产亚洲一区二区三区在线观看| 成人免费一区二区三区视频| 久久爱www久久做| 欧美午夜片在线看| 中文成人av在线| 精品无码三级在线观看视频| 欧美性一级生活| 中文字幕在线观看一区| 精品在线视频一区| 欧美一区二区三区在线| 樱花草国产18久久久久| 国产suv精品一区二区883| 欧美一卡二卡在线观看| 亚洲美女屁股眼交3| 国产精品一区二区在线看| 欧美一区二区日韩一区二区| 亚洲精选一二三| 国产福利91精品一区| 精品国产免费久久| 奇米一区二区三区av| 欧美日韩久久久久久| 亚洲乱码国产乱码精品精的特点| 国产精品一区二区久久精品爱涩| 制服丝袜国产精品| 亚洲成人精品一区二区| 在线观看91精品国产入口| 亚洲男人电影天堂| 成人av资源网站| 国产精品短视频| 国产激情一区二区三区桃花岛亚洲| 日韩欧美第一区| 日本伊人精品一区二区三区观看方式| 在线观看日韩电影| 一区二区三区中文在线观看| 91视频你懂的| 亚洲另类中文字| 91国产视频在线观看| 一区二区三区不卡视频| 日本道在线观看一区二区| 一级日本不卡的影视| 91久久精品一区二区三| 亚洲在线视频网站| 欧美日韩激情一区| 麻豆国产一区二区| 337p日本欧洲亚洲大胆精品| 极品尤物av久久免费看| 久久久久久97三级| 成人黄页在线观看| 亚洲精品日日夜夜| 欧美在线999| 天天爽夜夜爽夜夜爽精品视频 | 欧美本精品男人aⅴ天堂| 美脚の诱脚舐め脚责91| 精品福利一区二区三区免费视频| 久国产精品韩国三级视频| 久久久噜噜噜久久人人看 | 美女视频第一区二区三区免费观看网站| 91麻豆精品国产91久久久更新时间| 日本中文字幕不卡| 欧美精品一区二区三区在线| 成人久久久精品乱码一区二区三区| 成人免费在线观看入口| 欧美视频日韩视频在线观看| 日本91福利区| 国产亚洲成av人在线观看导航| 91女神在线视频| 婷婷久久综合九色综合伊人色| 欧美一区二区三区四区在线观看 | 日日摸夜夜添夜夜添亚洲女人| 日韩一二在线观看| 国产凹凸在线观看一区二区| 一区二区三区av电影 | 2020国产成人综合网| 99在线热播精品免费| 亚洲电影一级黄| 久久精品视频一区| 欧美三级乱人伦电影| 国内一区二区视频|