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

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

?? bootinit.c

?? 嵌入式開發的源碼資料
?? C
字號:
/* bootInit.c - ROM initialization module *//* Copyright 1989-1998 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------04w,10feb99,db   Fix to ensure that default bootline gets copied for		 standalone and rom-resident images(SPR #21763).04v,05oct98,jmp  doc: cleanup.04u,17apr98,cdp  backed out 04t and made absEntry volatile for ARM.04t,16apr98,cdp  for ARM, make UNCOMPRESS entry point in RAM.04s,20mar98,cdp  make ROM_COPY_SIZE subject to #ifndef.04r,11nov97,cdp  ARM7TDMI_T: force romStart to call entry point in Thumb state.		 (SPR# 9716)04q,14jul97,tam  changed remaining references to bfillLong to fillLong. 04p,12feb97,dat  Added USER_RESERVED_MEM, SYS_MEM_TOP, SYS_MEM_BOTTOM, SPR 803004o,04feb97,ms   fixed compiler warning about protoype for bcopyLongs.04o,28nov96,cdp  added ARM support.04n,03sep96,hdn  added the compression support for pc[34]86 BSP.04m,19aug96,ms   added UNCMP_RTN macro to use inflate instead of uncompress04l,21jun96,jmb  long modhist -- deleted entries prior to 1994.  SPR #652803k,10jun96,tam  added rom resident support for PPC architecture. 03j,14may96,dat  fixed compiler warnings for copyLongs, fillLongs. SPR #653603i,06mar96,tpr  changed absEntry to be volatile for PowerPC.03h,22aug95,hdn  added support for I80X86.03g,14mar95,caf  restored mips resident rom support (SPR #3856).03f,16feb95,jdi  doc format change.03f,23may95,yao  define binArrayStart and binArrayEnd for PowerPC		 because tools don't prepend "_".03e,09dec94,caf  undid mod 03a, use sdata for resident roms (SPR #3856).03d,22jun94,caf  undid 16-byte alignment portion of mod 03c, below.03c,14jun94,cd   corrected definitions of etext, edata and end.	   +caf  for R4000 resident ROMs: data starts on 16-byte boundary.		 for R4000 uncompressed ROMs: added volatile to absEntry type.*//*DESCRIPTIONThis module provides a generic boot ROM facility.  The target-specificromInit.s module performs the minimal preliminary board initialization andthen jumps to the C routine romStart().  This routine, still executing outof ROM, copies the first stage of the startup code to a RAM address andjumps to it.  The next stage clears memory and then uncompresses theremainder of ROM into the final VxWorks ROM image in RAM.A modified version of the Public Domain \f3zlib\fP library is used touncompress the VxWorks boot ROM executable linked with it.  Compressingobject code typically achieves over 55% compression, permitting muchlarger systems to be burned into ROM.  The only expense is the added fewseconds delay while the first two stages complete.ROM AND RAM MEMORY LAYOUTExample memory layout for a 1-megabyte board:.CS    --------------  0x00100000 = LOCAL_MEM_SIZE = sysMemTop()    |            |    |    RAM     |    |  0 filled  |    |            |    |------------| = (romInit+ROM_COPY_SIZE) or binArrayStart    | ROM image  |    |----------- |  0x00090000  = RAM_HIGH_ADRS    | STACK_SAVE |    |------------|    |            |  0x00080000  = 0.5 Megabytes    |            |    |            |    | 0 filled   |    |            |    |            |  0x00001000  = RAM_ADRS & RAM_LOW_ADRS    |            |    |            |  exc vectors, bp anchor, exc msg, bootline    |            |    |            |    --------------  0x00000000  = LOCAL_MEM_LOCAL_ADRS.CE.CS    --------------    |    ROM     |    |            |  0xff8xxxxx  = binArrayStart    |            |    |            |  0xff800008  = ROM_TEXT_ADRS    --------------  0xff800000  = ROM_BASE_ADRS.CESEE ALSO:inflate(), romInit(), and deflateAUTHORThe original compression software for zlib was written by Jean-loup Gaillyand Mark Adler. See the manual pages of inflate and deflate formore information on their freely available compression software.*/#include "vxWorks.h"#include "sysLib.h"#include "config.h"#include "errno.h"#include "sioLib.h"#define	UNCMP_RTN	inflate#ifndef USER_RESERVED_MEM#   define USER_RESERVED_MEM 0#endif/* * If memory is to be cleared, it will be cleared from SYS_MEM_BOTTOM * up to (but not including) SYS_MEM_TOP, except for text and data segments. * The user reserved area is not cleared. */#define	SYS_MEM_TOP \	(LOCAL_MEM_LOCAL_ADRS + LOCAL_MEM_SIZE - USER_RESERVED_MEM)#define SYS_MEM_BOTTOM \	(LOCAL_MEM_LOCAL_ADRS + RESERVED)IMPORT void	romInit ();IMPORT STATUS	UNCMP_RTN ();IMPORT void	usrInit ();IMPORT void	sysInitAlt ();IMPORT void	start ();#if	((CPU_FAMILY == MIPS) || (CPU_FAMILY==PPC))#define	binArrayStart	_binArrayStart#define	binArrayEnd	_binArrayEnd#define	RESIDENT_DATA	RAM_DST_ADRS#else#define	RESIDENT_DATA	(&sdata)IMPORT char	sdata;			/* defined in romInit.s */#endifIMPORT UCHAR	binArrayStart [];	/* compressed binary image */IMPORT UCHAR	binArrayEnd;		/* end of compressed binary image */IMPORT char	etext [];		/* defined by the loader */IMPORT char	edata [];		/* defined by the loader */IMPORT char	end [];			/* defined by the loader */#ifndef RAM_DST_ADRS                	/* default uncompress dest. */#define RAM_DST_ADRS        RAM_HIGH_ADRS#endif/* If the boot code is in RAM and the RAM is already initialized, * clearing the RAM is not necessary.  Macro BOOTCODE_IN_RAM is * used not to clear the RAM. */#ifdef	BOOTCODE_IN_RAM			/* not to clear RAM */#undef	ROM_TEXT_ADRS#undef	ROM_BASE_ADRS#define	ROM_TEXT_ADRS	((UINT)romInit)#define	ROM_BASE_ADRS	((UINT)romInit)#endif	/* BOOTCODE_IN_RAM */#if	defined (UNCOMPRESS) || defined (ROM_RESIDENT)#ifndef ROM_COPY_SIZE#define	ROM_COPY_SIZE	(ROM_SIZE - (ROM_TEXT_ADRS - ROM_BASE_ADRS))#endif#endif	/* UNCOMPRESS */#define ROM_OFFSET(adr)	(((UINT)adr - (UINT)romInit) + ROM_TEXT_ADRS)/* forward declarations */LOCAL void copyLongs (FAST UINT *source, FAST UINT *destination, UINT nlongs);#ifndef	BOOTCODE_IN_RAMLOCAL void fillLongs (FAST UINT *buf, UINT nlongs, FAST UINT val);#endif	/* BOOTCODE_IN_RAM *//********************************************************************************* romStart - generic ROM initialization** This is the first C code executed after reset.** This routine is called by the assembly start-up code in romInit().* It clears memory, copies ROM to RAM, and possibly invokes the uncompressor.* It then jumps to the entry point of the uncompressed object code.** RETURNS: N/A*/void romStart    (    FAST int startType		/* start type */    )    {#if ((CPU_FAMILY==SPARC) || (CPU_FAMILY==MIPS) || (CPU_FAMILY==I80X86) || \     (CPU_FAMILY==PPC) || (CPU_FAMILY==ARM))    volatile			/* to force absolute adressing //(::volatile) FUNCPTR absEntry; */#endif /* (CPU_FAMILY==SPARC) */    FUNCPTR absEntry;		/* to avoid PC Relative Jump Subroutine */    #if     (CPU_FAMILY==ARM) && (!defined(ROM_RESIDENT))    VOIDFUNCPTR ramfillLongs = fillLongs;     /* force call to RAM */    #define fillLongs(a,b,c) ramfillLongs(a,b,c)#endif  /* (CPU_FAMILY==ARM) */    /*     * Copy from ROM to RAM, minus the compressed image     * if compressed boot ROM which relies on binArray     * appearing last in DATA segment.     */#ifdef ROM_RESIDENT    /* If ROM resident code, then copy only data segment     * from ROM to RAM, initialize memory and jump     * to usrInit.     */    #if  (CPU_FAMILY == SPARC)    copyLongs ((UINT *)(etext + 8), (UINT *) RESIDENT_DATA,#elif	((CPU_FAMILY == MIPS) || (CPU_FAMILY == PPC))    copyLongs ((UINT *)(etext + 0), (UINT *) RESIDENT_DATA,#else    copyLongs ((UINT *)(etext + 4), (UINT *) RESIDENT_DATA,#endif		 ((UINT) edata - (UINT) RESIDENT_DATA) / sizeof (long));#else	/* ROM_RESIDENT */#ifdef UNCOMPRESS#if	(CPU_FAMILY == MIPS)    /*     * copy text to uncached locations to avoid problems with     * copy back caches     */    ((FUNCPTR)ROM_OFFSET(copyLongs)) (ROM_TEXT_ADRS, (UINT)K0_TO_K1(romInit),		ROM_COPY_SIZE / sizeof (long));#else	/* CPU_FAMILY == MIPS */    ((FUNCPTR)ROM_OFFSET(copyLongs)) (ROM_TEXT_ADRS, (UINT)romInit,		ROM_COPY_SIZE / sizeof (long));#endif	/* CPU_FAMILY == MIPS */#else	/* UNCOMPRESS */#if	(CPU_FAMILY == MIPS)    /*     * copy text to uncached locations to avoid problems with     * copy back caches     * copy the entire data segment because there is no way to ensure that     * binArray is the last thing in the data segment because of GP relative     * addressing     */    ((FUNCPTR)ROM_OFFSET(copyLongs)) (ROM_TEXT_ADRS, (UINT)K0_TO_K1(romInit),		((UINT)edata - (UINT)romInit) / sizeof (long));#else	/* CPU_FAMILY == MIPS */    ((FUNCPTR)ROM_OFFSET(copyLongs)) (ROM_TEXT_ADRS, (UINT)romInit,		((UINT)binArrayStart - (UINT)romInit) / sizeof (long));#endif	/* CPU_FAMILY == MIPS */#endif	/* UNCOMPRESS */#endif	/* ROM_RESIDENT */#if	(CPU_FAMILY != MIPS) && (!defined (BOOTCODE_IN_RAM))    /* clear all memory if cold booting */    if (startType & BOOT_CLEAR)	{#ifdef ROM_RESIDENT	/* Clear memory not loaded with text & data.	 *	 * We are careful about initializing all memory (except	 * STACK_SAVE bytes) due to parity error generation (on	 * some hardware) at a later stage.  This is usually	 * caused by read accesses without initialization.	 */	fillLongs ((UINT *)SYS_MEM_BOTTOM,		((UINT) RESIDENT_DATA - STACK_SAVE - (UINT)SYS_MEM_BOTTOM)		/ sizeof(long), 0);	fillLongs (((UINT *) edata),		((UINT)SYS_MEM_TOP - ((UINT) edata)) / sizeof(long), 0);#else	/* ROM_RESIDENT */	fillLongs ((UINT *)(SYS_MEM_BOTTOM),		((UINT)romInit - STACK_SAVE - (UINT)SYS_MEM_BOTTOM) /		sizeof(long), 0);#if     defined (UNCOMPRESS)	fillLongs ((UINT *)((UINT)romInit + ROM_COPY_SIZE),		    ((UINT)SYS_MEM_TOP - ((UINT)romInit + ROM_COPY_SIZE))		    / sizeof(long), 0);#else	fillLongs ((UINT *)binArrayStart,		((UINT)SYS_MEM_TOP - (UINT)binArrayStart) / sizeof (long), 0);#endif 	/* UNCOMPRESS */#endif 	/* ROM_RESIDENT */	/* 	 * Ensure the boot line is null. This is necessary for those	 * targets whose boot line is excluded from cleaning.	 */	*(BOOT_LINE_ADRS) = EOS;	}#endif	/* (CPU_FAMILY != MIPS) && (!defined (BOOTCODE_IN_RAM)) */    /* jump to VxWorks entry point (after uncompressing) */#if	defined (UNCOMPRESS) || defined (ROM_RESIDENT)#if	(CPU_FAMILY == I960)    absEntry = (FUNCPTR)sysInitAlt;			/* reinit proc tbl */#else    absEntry = (FUNCPTR)usrInit;			/* on to bootConfig */#endif	/* CPU_FAMILY == I960 */#else    {#if	(CPU_FAMILY == MIPS)    volatile FUNCPTR absUncompress = (FUNCPTR) UNCMP_RTN;    if ((absUncompress) ((UCHAR *)ROM_OFFSET(binArrayStart),			 (UCHAR *)K0_TO_K1(RAM_DST_ADRS),			 (int)((UINT)&binArrayEnd - (UINT)binArrayStart)) != OK)#elif	(CPU_FAMILY == I80X86) || (CPU_FAMILY == ARM)    volatile FUNCPTR absUncompress = (FUNCPTR) UNCMP_RTN;    if ((absUncompress) ((UCHAR *)ROM_OFFSET(binArrayStart),	            (UCHAR *)RAM_DST_ADRS, &binArrayEnd - binArrayStart) != OK)#else    if (UNCMP_RTN ((UCHAR *)ROM_OFFSET(binArrayStart),	            (UCHAR *)RAM_DST_ADRS, &binArrayEnd - binArrayStart) != OK)#endif	/* (CPU_FAMILY == MIPS) */	return;		/* if we return then ROM's will halt */    absEntry = (FUNCPTR)RAM_DST_ADRS;			/* compressedEntry () */    }#endif	/* defined UNCOMPRESS || defined ROM_RESIDENT */#if	(CPU == ARM7TDMI_T)    absEntry = (FUNCPTR)((UINT32)absEntry | 1);		/* force Thumb state */#endif	/* (CPU == ARM7TDMI_T) */    (absEntry) (startType);    }#if     (CPU_FAMILY==ARM) && (!defined(ROM_RESIDENT))#undef fillLongs#endif  /* (CPU_FAMILY==ARM) *//********************************************************************************* copyLongs - copy one buffer to another a long at a time** This routine copies the first <nlongs> longs from <source> to <destination>.*/LOCAL void copyLongs (source, destination, nlongs)    FAST UINT *source;		/* pointer to source buffer      */    FAST UINT *destination;	/* pointer to destination buffer */    UINT nlongs;		/* number of longs to copy       */    {    FAST UINT *dstend = destination + nlongs;    while (destination < dstend)	*destination++ = *source++;    }#ifndef	BOOTCODE_IN_RAM/********************************************************************************* fillLongs - fill a buffer with a value a long at a time** This routine fills the first <nlongs> longs of the buffer with <val>.*/LOCAL void fillLongs (buf, nlongs, val)    FAST UINT *buf;	/* pointer to buffer              */    UINT nlongs;	/* number of longs to fill        */    FAST UINT val;	/* char with which to fill buffer */    {    FAST UINT *bufend = buf + nlongs;    while (buf < bufend)	*buf++ = val;    }#endif	/* BOOTCODE_IN_RAM */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
五月综合激情婷婷六月色窝| 国产女主播在线一区二区| 一区二区三区国产精品| 91麻豆精品在线观看| 夜夜嗨av一区二区三区四季av| 色av成人天堂桃色av| 亚洲成a人在线观看| 欧美xxxx老人做受| 成人涩涩免费视频| 一区二区三区日韩| 日韩视频免费观看高清完整版 | 欧美日韩小视频| 麻豆视频一区二区| 中日韩av电影| 欧美日韩一区不卡| 国产一区二区美女诱惑| 成人免费一区二区三区在线观看| 色综合久久久久综合| 免费欧美高清视频| 中文字幕在线视频一区| 在线观看视频一区二区欧美日韩| 日韩不卡一区二区三区 | 成人黄色小视频| 亚洲超碰精品一区二区| 久久影音资源网| 欧美在线高清视频| 国产精品18久久久久久久久| 亚洲综合999| 久久女同互慰一区二区三区| 91精彩视频在线| 精品一区二区免费| 亚洲午夜精品久久久久久久久| 欧美电视剧在线看免费| 色综合欧美在线视频区| 国产呦萝稀缺另类资源| 亚洲高清不卡在线| 国产精品区一区二区三区| 日韩一级黄色片| 一本色道**综合亚洲精品蜜桃冫| 精品一区二区三区在线观看国产 | 国产99久久久国产精品潘金| 天天亚洲美女在线视频| 136国产福利精品导航| 欧美电影精品一区二区| 欧美色图免费看| av在线播放不卡| 国产精品一区二区久久不卡| 日韩国产一区二| 一区二区三区国产精华| 国产精品家庭影院| 久久精品网站免费观看| 日韩精品一区二区三区中文精品| 欧美在线看片a免费观看| bt欧美亚洲午夜电影天堂| 狠狠网亚洲精品| 人禽交欧美网站| 丝袜美腿亚洲综合| 亚洲午夜成aⅴ人片| 亚洲男人的天堂在线aⅴ视频| 日本一区二区三区dvd视频在线| 日韩久久免费av| 日韩免费观看2025年上映的电影| 6080亚洲精品一区二区| 欧美中文字幕一区| 色视频一区二区| 色欧美88888久久久久久影院| av一二三不卡影片| a亚洲天堂av| 99麻豆久久久国产精品免费| 成人网页在线观看| 粉嫩aⅴ一区二区三区四区| 国产精品自拍一区| 国产精品99久久久| 国产成人无遮挡在线视频| 国产真实乱偷精品视频免| 国产一区二区三区高清播放| 国产精品一二三在| 成人深夜视频在线观看| 99久久er热在这里只有精品15| 丁香激情综合国产| www.日韩在线| 色综合天天视频在线观看| 欧美日韩午夜在线| 日韩精品一区二区三区中文不卡 | 国产午夜亚洲精品羞羞网站| 久久精品一区四区| 国产清纯白嫩初高生在线观看91 | 亚洲精品一线二线三线无人区| 日韩精品一区二区三区中文精品| 欧美成人三级在线| 国产情人综合久久777777| 亚洲色欲色欲www| 亚洲国产日韩一级| 免费亚洲电影在线| 国产精品一线二线三线| 99久久99久久精品免费看蜜桃| 在线观看免费视频综合| 欧美美女一区二区在线观看| 精品不卡在线视频| 国产精品不卡一区二区三区| 亚洲尤物在线视频观看| 蜜桃av一区二区三区电影| 国产福利一区二区三区| 91精品91久久久中77777| 日韩一区二区在线看片| 国产精品无人区| 首页国产欧美日韩丝袜| 国产精品77777| 欧美在线啊v一区| 日韩精品专区在线影院观看| 1000精品久久久久久久久| 丝袜诱惑制服诱惑色一区在线观看| 国产一区二区视频在线播放| 日本精品裸体写真集在线观看| 日韩欧美一二三| 亚洲免费观看高清完整版在线| 日韩高清一区在线| 不卡的av电影在线观看| 欧美一区二区视频免费观看| 国产精品国产精品国产专区不片| 日韩和的一区二区| 99久久精品国产观看| 精品国产乱码久久久久久浪潮| 亚洲综合色视频| 成人午夜激情视频| 日韩欧美你懂的| 亚洲综合一二区| a在线播放不卡| 26uuu亚洲| 日本不卡一二三区黄网| 色综合久久久网| 亚洲国产精品激情在线观看| 琪琪一区二区三区| 欧美吻胸吃奶大尺度电影| 欧美激情一区二区三区全黄| 免费观看30秒视频久久| 欧美怡红院视频| 亚洲视频一区在线| 国内成人自拍视频| 91精品国产色综合久久不卡电影| 亚洲视频中文字幕| 国产成人免费视| 久久久午夜电影| 经典三级视频一区| 欧美一区二区高清| 性久久久久久久久久久久| 91天堂素人约啪| 国产精品久久久久久亚洲毛片 | 91一区一区三区| 国产女主播视频一区二区| 美女任你摸久久| 欧美精品自拍偷拍动漫精品| 一区二区成人在线| 91色乱码一区二区三区| 国产精品网站一区| 国产91在线|亚洲| 中文字幕巨乱亚洲| 从欧美一区二区三区| 久久毛片高清国产| 国产一区二区三区最好精华液| 精品国产一区二区三区久久影院| 日韩成人精品在线观看| 欧美一区二区三区视频免费 | 亚洲国产成人自拍| 国产91精品精华液一区二区三区| 2017欧美狠狠色| 国产一区二区三区av电影| 久久久三级国产网站| 国产成人精品免费| 日本一区二区不卡视频| av成人老司机| 亚洲综合免费观看高清完整版在线 | 国产剧情在线观看一区二区| 精品国产乱码久久久久久闺蜜| 狠狠色综合日日| 国产三级精品在线| 99国产麻豆精品| 亚洲一区二区中文在线| 欧美亚洲动漫精品| 婷婷综合五月天| 日韩三级在线观看| 国内精品国产成人| 国产精品丝袜91| 91高清在线观看| 日韩和欧美一区二区| 精品国产亚洲在线| 成人一级片在线观看| 亚洲人成在线播放网站岛国| 欧美日韩国产免费| 久久国产三级精品| 中文字幕精品在线不卡| 在线区一区二视频| 久久激情五月激情| 亚洲欧美综合网| 欧美性色黄大片| 久久成人久久爱| 日韩一区中文字幕| 91精品国产91综合久久蜜臀| 国产福利一区二区三区视频| 亚洲永久免费av|