亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
欧美日韩dvd在线观看| 精品国产乱码91久久久久久网站| 日韩精品乱码免费| 国产欧美精品一区二区三区四区 | 欧美中文字幕一区二区三区亚洲| 琪琪一区二区三区| 一区二区三区国产豹纹内裤在线| 久久伊人中文字幕| 日韩西西人体444www| 日本乱码高清不卡字幕| 成人不卡免费av| 激情五月婷婷综合| 肉丝袜脚交视频一区二区| 亚洲欧美视频在线观看视频| 国产日韩精品一区二区三区 | 久久精品一区二区三区av| 欧美日韩国产另类不卡| 色综合一区二区三区| 国产成人精品亚洲午夜麻豆| 久久丁香综合五月国产三级网站| 亚洲国产精品一区二区www在线| 亚洲欧洲一区二区三区| 日本一区二区免费在线 | 精品精品国产高清一毛片一天堂| 欧美又粗又大又爽| 91在线观看免费视频| 粉嫩av一区二区三区| 国产一区二区伦理| 精油按摩中文字幕久久| 蜜桃视频一区二区| 久久不见久久见免费视频1| 日韩电影一区二区三区四区| 亚洲成人久久影院| 亚洲一卡二卡三卡四卡无卡久久| 亚洲欧洲中文日韩久久av乱码| 国产精品久久福利| 亚洲国产岛国毛片在线| 国产清纯白嫩初高生在线观看91 | 欧美老肥妇做.爰bbww视频| 在线观看日韩电影| 欧美亚洲国产一区在线观看网站| 99精品热视频| 色综合久久66| 在线亚洲高清视频| 欧美久久久久免费| 在线成人av网站| 日韩欧美一卡二卡| 亚洲精品一区在线观看| 国产日韩欧美制服另类| 中文字幕一区二区视频| 亚洲乱码中文字幕| 无码av中文一区二区三区桃花岛| 日本一区中文字幕| 精品无码三级在线观看视频| 国产精品综合视频| 播五月开心婷婷综合| 色综合激情五月| 717成人午夜免费福利电影| 日韩亚洲欧美中文三级| 国产午夜精品一区二区三区视频| 中文一区二区完整视频在线观看 | 国产美女在线观看一区| 国产丶欧美丶日本不卡视频| 99精品欧美一区| 欧美日韩中文字幕一区| 日韩欧美一区二区免费| 欧美激情资源网| 亚洲国产视频在线| 韩国理伦片一区二区三区在线播放| 国产在线精品免费| 99久久精品国产观看| 在线播放欧美女士性生活| 国产亚洲成aⅴ人片在线观看 | 国内精品久久久久影院色| 成人黄色av电影| 欧美人牲a欧美精品| 久久影音资源网| 一区二区三区四区av| 久久66热偷产精品| 91香蕉视频在线| 日韩欧美一区二区久久婷婷| 18成人在线视频| 奇米亚洲午夜久久精品| 不卡一卡二卡三乱码免费网站| 欧美美女直播网站| 国产精品久久久久久久岛一牛影视 | 99久久婷婷国产综合精品| 欧美高清视频不卡网| 亚洲国产精品成人综合| 三级精品在线观看| 91香蕉视频污在线| 2022国产精品视频| 首页欧美精品中文字幕| 懂色av一区二区三区免费看| 欧美一区二区三区的| 亚洲免费av高清| 国产成a人亚洲精品| 日韩一级欧美一级| 亚洲一区二区在线观看视频 | 91精品国产麻豆国产自产在线| 中文字幕一区二区三区乱码在线| 午夜不卡av在线| 99精品久久只有精品| 久久免费视频一区| 奇米精品一区二区三区在线观看一 | 黄页网站大全一区二区| 欧美日韩卡一卡二| 日韩一区在线免费观看| 国产精品 欧美精品| 日韩欧美一二三| 天天亚洲美女在线视频| 在线精品国精品国产尤物884a| 国产精品视频免费看| 免费成人结看片| 欧美日韩国产成人在线免费| 亚洲美女屁股眼交| av在线不卡免费看| 欧美国产国产综合| 国内精品不卡在线| 精品国产精品一区二区夜夜嗨| 丝袜亚洲另类丝袜在线| 欧美专区在线观看一区| 有坂深雪av一区二区精品| 91丨九色porny丨蝌蚪| 日韩一区日韩二区| www.欧美精品一二区| 国产精品入口麻豆原神| 国产不卡视频在线观看| 久久青草国产手机看片福利盒子 | 欧美性生活大片视频| 舔着乳尖日韩一区| 色婷婷一区二区三区四区| 亚洲视频在线观看三级| 99国产精品国产精品久久| 国产精品久线在线观看| 暴力调教一区二区三区| 自拍偷拍亚洲欧美日韩| 91丨九色丨国产丨porny| 亚洲色图欧美偷拍| 色噜噜狠狠色综合中国| 亚洲狠狠爱一区二区三区| 在线观看一区二区视频| 亚洲成人综合视频| 欧美一区永久视频免费观看| 久久久不卡网国产精品二区| 久久美女高清视频| 色噜噜狠狠色综合欧洲selulu| 自拍偷拍国产亚洲| 欧美大白屁股肥臀xxxxxx| 国产精品一区2区| 亚洲欧美在线视频| 久久久精品国产99久久精品芒果| 欧美综合亚洲图片综合区| 国产精品色在线| 精品国产99国产精品| 91麻豆国产精品久久| 久久精品国产网站| 欧美va日韩va| 国产成人精品一区二区三区四区| 国产精品短视频| 欧美在线视频全部完| 日韩成人一区二区三区在线观看| 欧美v亚洲v综合ⅴ国产v| 国产不卡一区视频| 亚洲免费观看在线视频| 欧美精品1区2区3区| 国产精品一区二区三区乱码| 亚洲美女视频在线| 日韩午夜在线观看| 99精品黄色片免费大全| 亚欧色一区w666天堂| www成人在线观看| 97精品久久久久中文字幕| 日本欧美久久久久免费播放网| 久久精品夜色噜噜亚洲aⅴ| 色香蕉成人二区免费| 免费一级片91| 1024成人网| 日韩视频不卡中文| 99视频精品在线| 另类专区欧美蜜桃臀第一页| 中文一区二区在线观看| 欧美精品色一区二区三区| 成人国产精品免费| 奇米精品一区二区三区四区| 亚洲色图色小说| 久久综合给合久久狠狠狠97色69| 色综合久久久久综合体桃花网| 精品亚洲成a人在线观看| 洋洋成人永久网站入口| 国产女人18毛片水真多成人如厕| 欧美伦理电影网| aaa亚洲精品一二三区| 精东粉嫩av免费一区二区三区| 亚洲美女屁股眼交3| 国产网红主播福利一区二区| 欧美猛男男办公室激情| 91免费小视频| 丁香一区二区三区| 精品夜夜嗨av一区二区三区|