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

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

?? syslib.c

?? miceteck_MPC860_BSP源碼,基于VXWORK
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/* 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();

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产宾馆实践打屁股91| 中文字幕在线不卡一区二区三区 | 国产成人综合在线播放| www.99精品| 欧美一区二区在线视频| 国产精品久久久久久妇女6080| 亚洲国产精品人人做人人爽| 国产高清在线精品| 欧美高清视频不卡网| 一区在线观看视频| 久久精品国产999大香线蕉| 91亚洲午夜精品久久久久久| 日韩欧美国产一区二区在线播放| 亚洲三级免费电影| 黑人巨大精品欧美一区| 在线精品视频一区二区| 欧美国产乱子伦| 久久精品噜噜噜成人av农村| 欧洲一区二区三区免费视频| 日本一区二区高清| 奇米色一区二区| 欧美性大战久久久久久久| 久久久精品中文字幕麻豆发布| 亚洲成人av一区二区| 99在线视频精品| 久久中文娱乐网| 日韩av成人高清| 欧美中文字幕一区| 国产精品欧美一区喷水| 久久超级碰视频| 欧美精品在线一区二区三区| 国产日韩综合av| 久久精品999| 91激情在线视频| 美女一区二区视频| 欧美一区二区三区在线观看 | 日韩欧美高清在线| 色偷偷一区二区三区| 日韩欧美一区二区视频| 午夜精品久久一牛影视| 欧美日韩国产小视频| 欧美日韩国产高清一区二区三区 | 91精品国产一区二区三区蜜臀| 亚洲色图在线看| 成人毛片在线观看| 国产视频在线观看一区二区三区| 久久精品99久久久| 欧美一区二区三区视频在线| 亚洲国产成人精品视频| 91在线高清观看| 国产精品久久一卡二卡| 国产伦理精品不卡| 2024国产精品| 国产精品中文欧美| 精品国产三级电影在线观看| 男女激情视频一区| 日韩欧美国产精品| 日韩av电影免费观看高清完整版在线观看| 在线精品国精品国产尤物884a| 亚洲桃色在线一区| 色又黄又爽网站www久久| 亚洲精品久久嫩草网站秘色| 一本大道久久精品懂色aⅴ| 亚洲美女淫视频| 欧美在线视频日韩| 亚洲国产一区二区三区青草影视 | 欧美美女视频在线观看| 亚洲国产一区二区a毛片| 欧美亚洲一区二区在线观看| 亚洲综合区在线| 欧美怡红院视频| 肉色丝袜一区二区| 日韩精品一区二区三区中文不卡 | 欧美成人欧美edvon| 美女mm1313爽爽久久久蜜臀| 日韩一级大片在线观看| 另类小说视频一区二区| 26uuu精品一区二区在线观看| 国产精一区二区三区| 2024国产精品视频| 欧美怡红院视频| 欧美日韩极品在线观看一区| 久久成人精品无人区| 国产日韩av一区| 欧美美女黄视频| 经典三级在线一区| 亚洲成人在线免费| 亚洲欧美另类久久久精品| 91麻豆精品国产自产在线观看一区 | 久久99热这里只有精品| 91精品国产综合久久久久久久久久| 日本欧美在线观看| xf在线a精品一区二区视频网站| 国产suv精品一区二区6| 亚洲激情av在线| 88在线观看91蜜桃国自产| 日韩**一区毛片| 精品久久久久久无| 福利一区二区在线观看| 亚洲激情自拍视频| 91精品国产色综合久久不卡蜜臀 | 图片区小说区区亚洲影院| 欧美精品久久一区| 国产精品一二三四五| 亚洲视频一区二区在线观看| 欧美精品1区2区| 韩国av一区二区三区四区| 成人欧美一区二区三区黑人麻豆 | 国产在线精品免费| 亚洲视频中文字幕| 91麻豆精品国产91久久久资源速度| 国内精品不卡在线| 怡红院av一区二区三区| 欧美大片在线观看| 91蜜桃免费观看视频| 日韩电影在线一区二区三区| 国产精品私人自拍| 欧美精品乱码久久久久久按摩| 国产精品一线二线三线精华| 一区二区三区免费观看| 久久亚洲精华国产精华液| 色妹子一区二区| 国产在线精品不卡| 亚洲伊人色欲综合网| 久久免费午夜影院| 欧美日韩久久久一区| 成人免费毛片片v| 美女久久久精品| 亚洲自拍另类综合| 国产视频一区在线播放| 欧美日本韩国一区二区三区视频| 国产福利91精品| 日韩电影免费一区| 亚洲少妇最新在线视频| 精品国产一区久久| 欧美日韩三级在线| 99久久精品国产精品久久| 久久精品国产亚洲高清剧情介绍| 亚洲欧美国产三级| 久久久久综合网| 制服.丝袜.亚洲.中文.综合| 波多野结衣中文字幕一区二区三区| 美女网站在线免费欧美精品| 亚洲综合av网| 国产精品国产a| 精品国产一区二区三区久久影院 | 成人av免费网站| 狠狠v欧美v日韩v亚洲ⅴ| 石原莉奈在线亚洲三区| 成人欧美一区二区三区| 国产女同互慰高潮91漫画| 欧美一区二区在线看| 色av成人天堂桃色av| 成年人国产精品| 国产麻豆精品95视频| 麻豆精品一区二区综合av| 亚洲在线视频网站| 国产精品视频一二| 国产欧美综合在线| 精品欧美一区二区三区精品久久 | 日韩一区在线免费观看| 久久日一线二线三线suv| 91精品国产综合久久久久| 色偷偷88欧美精品久久久| 成人av网站大全| 国产91丝袜在线观看| 国产精品88av| 经典三级一区二区| 久久国产精品一区二区| 琪琪久久久久日韩精品| 日韩激情一区二区| 亚洲成人av福利| 亚洲第一综合色| 亚洲午夜成aⅴ人片| 亚洲影视在线观看| 亚洲国产色一区| 亚洲国产精品尤物yw在线观看| 亚洲美女屁股眼交| 亚洲黄色免费网站| 亚洲一区二区三区爽爽爽爽爽| 一区二区免费看| 亚洲一区二区三区不卡国产欧美| 一区二区三区四区不卡在线| 亚洲欧美激情在线| 一区二区日韩电影| 亚洲图片欧美视频| 天天色天天操综合| 日本亚洲三级在线| 蜜桃视频第一区免费观看| 免费人成黄页网站在线一区二区| 日韩精品电影一区亚洲| 蜜桃精品视频在线观看| 久久电影国产免费久久电影| 精品一区二区三区视频在线观看| 麻豆精品久久久| 国产九色sp调教91| av资源站一区| 91官网在线免费观看| 欧美亚洲另类激情小说| 欧美久久婷婷综合色|