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

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

?? bootinit.c

?? 440bx vxworks bsp
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* bootInit.c - ROM initialization module */

/* Copyright 1989-2002 Wind River Systems, Inc. */
#include "copyright_wrs.h"

/*
modification history
--------------------
05h,26mar02,sbs  correcting data section relocation for ROM compressed images
                 (SPR 73785)
05g,19mar02,dat  Removing previous fix for MIPS, no longer needed (72825)
05f,18jan02,dat  Don't use loop unrolling for MIPS
05f,22jan02,scm  Xscale specific validation added to update cache (to match
                 updates...)
05e,19dec01,aeg  prevented pc-relative addressing on MC680X0.
05d,10dec01,sbs  Corrected conditions around call to copyLongs for ROM 
                 resident images.
05c,27nov01,sbs  Added new labels, wrs_kernel_data_start and wrs_kernel_data_end
                 for sdata and edata respectively. Added second copy for data 
		 section of compressed ROM images. Corrected definition for 
                 binArrayEnd. Corrected definition for RESIDENT_DATA.
05b,27nov01,tpw  Manually unroll copyLongs and fillLongs.
05a,25oct01,pad  Removed definitions of _binArrayStart and _binArrayEnd, now
                 unnecessary.
04z,03oct01,dee  Merge from ColdFire T2.1.0 release
04y,11jan01,scm  Xscale specific validation added to update cache, can not assume uncached area....
04x,10jun99,jpd  fix error when BOOTCODE_IN_RAM defined (SPR #27775).
04w,13nov98,cdp  make Thumb support for ARM CPUs dependent on ARM_THUMB.
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 8030
04o,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 uncompress
04l,21jun96,jmb  long modhist -- deleted entries prior to 1994.  SPR #6528
03k,10jun96,tam  added rom resident support for PPC architecture. 
03j,14may96,dat  fixed compiler warnings for copyLongs, fillLongs. SPR #6536
03i,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.
*/

/*
DESCRIPTION
This module provides a generic boot ROM facility.  The target-specific
romInit.s module performs the minimal preliminary board initialization and
then jumps to the C routine romStart().  This routine, still executing out
of ROM, copies the first stage of the startup code to a RAM address and
jumps to it.  The next stage clears memory and then uncompresses the
remainder of ROM into the final VxWorks ROM image in RAM.

A modified version of the Public Domain \f3zlib\fP library is used to
uncompress the VxWorks boot ROM executable linked with it.  Compressing
object code typically achieves over 55% compression, permitting much
larger systems to be burned into ROM.  The only expense is the added few
seconds delay while the first two stages complete.

ROM AND RAM MEMORY LAYOUT
Example 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
.CE

SEE ALSO:
inflate(), romInit(), and deflate

AUTHOR
The original compression software for zlib was written by Jean-loup Gailly
and Mark Adler. See the manual pages of inflate and deflate for
more 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)

#define BINARRAYEND_ROUNDOFF	(ROUND_DOWN(binArrayEnd, sizeof(long))) 

IMPORT void	romInit ();
IMPORT STATUS	UNCMP_RTN ();
IMPORT void	usrInit ();
IMPORT void	sysInitAlt ();
IMPORT void	start ();

IMPORT UCHAR	binArrayStart [];	/* compressed binary image */
IMPORT UCHAR	binArrayEnd [];		/* end of compressed binary image */
IMPORT char	etext [];		/* defined by the loader */
IMPORT char	end [];			/* defined by the loader */
IMPORT UCHAR	wrs_kernel_data_start [];  /* defined by the loader */
IMPORT UCHAR	wrs_kernel_data_end [];    /* defined by the loader */

#if	((CPU_FAMILY == MIPS) || (CPU_FAMILY==PPC) || \
	 (CPU_FAMILY==COLDFIRE))
#define	RESIDENT_DATA	RAM_DST_ADRS
#else
#define	RESIDENT_DATA 	wrs_kernel_data_start	
#endif

#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_RAM
LOCAL void fillLongs (FAST UINT *buf, UINT nlongs, FAST UINT val);
#endif	/* BOOTCODE_IN_RAM */
#if (CPU==XSCALE)
int checkLongs (FAST UINT *source, FAST UINT *destination, UINT nlongs);
#endif

/*******************************************************************************
*
* 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 */
#endif /* (CPU_FAMILY==SPARC) */
    FUNCPTR absEntry;		/* to avoid PC Relative Jump Subroutine */
#if (CPU_FAMILY==ARM) && (!defined(ROM_RESIDENT)) && !defined(BOOTCODE_IN_RAM)
    VOIDFUNCPTR ramfillLongs = fillLongs;     /* force call to RAM */
#define fillLongs(a,b,c) ramfillLongs(a,b,c)
#endif  /* (CPU_FAMILY==ARM) */
#if (CPU_FAMILY==MC680X0) && !defined(ROM_RESIDENT) && !defined(BOOTCODE_IN_RAM)
    volatile VOIDFUNCPTR romcopyLongs = &copyLongs;  /* force call to ROM */
#define copyLongs romcopyLongs
#endif /* (CPU_FAMILY==MC680X0) */
    /*
     * 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,
#else
    copyLongs ((UINT *)etext, (UINT *) RESIDENT_DATA,
#endif
        ((UINT) wrs_kernel_data_end - (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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品欧美一区二区三区小说| 亚洲欧洲www| 欧美一级理论片| 欧美婷婷六月丁香综合色| 91美女福利视频| 91网站最新地址| 成人app网站| 91浏览器入口在线观看| 日本高清不卡视频| 欧美日韩在线播| 欧美一区中文字幕| 欧美一级二级三级蜜桃| 欧美v亚洲v综合ⅴ国产v| 久久免费看少妇高潮| 国产亚洲综合性久久久影院| 国产精品欧美一区喷水| 亚洲美女视频在线| 午夜电影一区二区三区| 另类小说视频一区二区| 九一久久久久久| 成人一级片在线观看| 99精品桃花视频在线观看| 日本韩国精品在线| 在线播放国产精品二区一二区四区 | 人禽交欧美网站| 毛片一区二区三区| 国产精品综合一区二区三区| 成年人国产精品| 91黄色小视频| 日韩视频免费直播| 国产精品美女久久久久高潮| 亚洲中国最大av网站| 精品在线视频一区| 99re在线视频这里只有精品| 欧美性生活大片视频| 久久综合九色综合97_久久久| 中文字幕欧美激情一区| 亚洲成人免费电影| 国产一区二区三区高清播放| av电影天堂一区二区在线观看| 欧美色男人天堂| 国产日韩精品久久久| 综合欧美亚洲日本| 麻豆成人在线观看| 91视频国产资源| 日韩欧美另类在线| 18成人在线视频| 欧美aa在线视频| 91麻豆免费看| 精品久久久久香蕉网| 亚洲女人小视频在线观看| 日本三级韩国三级欧美三级| av一区二区三区四区| 欧美一卡二卡三卡四卡| 欧美极品aⅴ影院| 青青草原综合久久大伊人精品优势| 国产成人超碰人人澡人人澡| 欧美日韩三级视频| 中文av字幕一区| 免费成人美女在线观看.| 91在线观看高清| 久久丝袜美腿综合| 午夜精品视频一区| 99久久精品免费精品国产| 日韩欧美高清dvd碟片| 亚洲精品视频一区| 国产成人精品影视| 日韩一二三四区| 亚洲高清免费一级二级三级| 9久草视频在线视频精品| 欧美成人免费网站| 亚洲成av人片在www色猫咪| 成人美女视频在线看| 欧美videos大乳护士334| 丝袜美腿亚洲一区| 日本乱人伦aⅴ精品| 国产精品丝袜一区| 国产呦精品一区二区三区网站| 欧美日韩1区2区| 亚洲精品国产成人久久av盗摄| 国产成人av资源| 26uuu精品一区二区| 日韩国产一二三区| 欧美久久久影院| 亚洲国产视频a| 欧美在线免费观看视频| 一区二区三区日韩欧美精品| 北条麻妃国产九九精品视频| 久久久久久亚洲综合| 久久99精品视频| 精品欧美一区二区久久| 人人超碰91尤物精品国产| 欧美久久高跟鞋激| 五月天精品一区二区三区| 精品视频在线免费观看| 亚洲综合丝袜美腿| 欧美网站大全在线观看| 亚洲成人精品一区| 欧美日韩日日骚| 亚欧色一区w666天堂| 欧美日韩一区二区在线观看视频| 亚洲精品高清视频在线观看| 99精品热视频| 一区二区在线看| 在线观看国产一区二区| 亚洲国产视频一区| 欧美日韩国产影片| 免费高清在线视频一区·| 日韩免费观看2025年上映的电影 | 国产成人在线影院| 欧美国产精品中文字幕| hitomi一区二区三区精品| 最新中文字幕一区二区三区| 色哟哟国产精品| 一区二区三区国产| 在线播放欧美女士性生活| 蜜桃视频在线一区| 久久人人爽人人爽| 成人激情午夜影院| 亚洲精品亚洲人成人网| 欧美性猛交xxxxxxxx| 日日夜夜一区二区| 精品国产一二三| 成人激情动漫在线观看| 亚洲女同女同女同女同女同69| 欧美私人免费视频| 捆绑变态av一区二区三区| 国产午夜一区二区三区| 97se亚洲国产综合在线| 亚洲永久精品大片| 精品日韩99亚洲| 成人一区在线观看| 一级日本不卡的影视| 91精品国产综合久久精品麻豆 | 在线成人免费观看| 国产精品自拍三区| 国产精品动漫网站| 欧美日韩午夜精品| 国产一区二区按摩在线观看| 亚洲女女做受ⅹxx高潮| 911精品国产一区二区在线| 国产精品亚洲成人| 亚洲免费资源在线播放| 欧美刺激午夜性久久久久久久 | 日韩区在线观看| 成人午夜视频在线| 香蕉乱码成人久久天堂爱免费| 精品少妇一区二区三区免费观看| 97se狠狠狠综合亚洲狠狠| 蜜臀国产一区二区三区在线播放 | 国产精品18久久久| 夜夜夜精品看看| 337p日本欧洲亚洲大胆色噜噜| 91视频你懂的| 精品在线播放午夜| 洋洋成人永久网站入口| 精品福利一二区| 欧美日韩亚洲国产综合| 国产成人午夜电影网| 丝袜亚洲另类丝袜在线| 国产精品毛片高清在线完整版| 欧美一级高清大全免费观看| 94色蜜桃网一区二区三区| 麻豆精品久久精品色综合| 一区二区三区日韩精品视频| 久久久蜜桃精品| 欧美一区二区福利视频| 91麻豆123| 福利视频网站一区二区三区| 日韩成人午夜电影| 亚洲美女少妇撒尿| 国产女主播视频一区二区| 91精品在线免费| 欧美性猛片xxxx免费看久爱| 成人丝袜高跟foot| 国产主播一区二区| 青青草一区二区三区| 亚洲自拍欧美精品| **性色生活片久久毛片| 国产欧美日韩在线| 精品久久久久久久人人人人传媒| 欧美影院午夜播放| av电影天堂一区二区在线观看| 国产精品一区二区91| 日本少妇一区二区| 五月婷婷综合在线| 亚洲综合久久久久| 亚洲精品少妇30p| 亚洲欧洲日韩女同| 国产精品国产三级国产三级人妇| 精品国产一区二区三区忘忧草| 制服丝袜亚洲播放| 欧美日韩午夜精品| 欧美日韩一区二区三区四区五区| 99久久久国产精品| 91亚洲精品乱码久久久久久蜜桃| 懂色av一区二区三区免费看| 国产馆精品极品| 国产一区二区三区免费| 国产一区 二区|