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

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

?? bootinit.c

?? s3c2410的vxworksBSP
?? 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一区二区三区免费野_久草精品视频
日韩一区二区三区高清免费看看| 久久免费偷拍视频| 欧美精品精品一区| 日韩欧美中文字幕公布| 国产亚洲欧美在线| 亚洲欧洲一区二区在线播放| 午夜欧美2019年伦理| 国产成人aaa| 欧美性大战久久久| 国产亚洲欧洲997久久综合 | 日本国产一区二区| 日韩一区二区三区观看| 日本一区二区免费在线观看视频| 亚洲成人av一区二区三区| 国产伦精品一区二区三区免费 | 日韩精品91亚洲二区在线观看| 国产精品一区不卡| 在线观看国产精品网站| 久久久久久久免费视频了| 一区二区三区免费在线观看| 国产一二精品视频| 欧美日韩午夜在线视频| 中文字幕永久在线不卡| 精品一区二区三区免费观看| 欧美日韩精品久久久| 国产欧美一区二区三区鸳鸯浴| 亚洲高清视频中文字幕| voyeur盗摄精品| 精品日韩在线观看| 亚洲成人动漫在线免费观看| 91麻豆swag| 国产精品女人毛片| 久久99久久久久久久久久久| 在线观看中文字幕不卡| 国产精品欧美一级免费| 国产成人免费视频网站高清观看视频| 91精品国产综合久久精品图片| ...xxx性欧美| a在线播放不卡| 久久精品人人爽人人爽| 美国三级日本三级久久99| 欧美日韩亚洲综合在线 | 亚洲自拍都市欧美小说| 国产成人精品1024| 日韩精品资源二区在线| 美女网站一区二区| 欧美一级理论片| 免费成人av资源网| 日韩视频在线一区二区| 日韩不卡一区二区三区| 欧美一区二区三区婷婷月色| 午夜视频一区二区三区| 欧美精品免费视频| 性久久久久久久久| 欧美欧美欧美欧美| 亚洲午夜日本在线观看| 欧美日韩精品一区二区三区四区| 午夜精品影院在线观看| 日韩一级黄色大片| 美女www一区二区| 久久网站最新地址| 国产精品自拍网站| 亚洲国产精品成人综合| 91影院在线免费观看| 亚洲激情自拍视频| 欧美日韩精品综合在线| 久久精品国产澳门| 久久久精品黄色| 成人黄色小视频| 亚洲乱码国产乱码精品精可以看| 在线亚洲一区观看| 午夜视频久久久久久| 精品国产免费一区二区三区香蕉| 国产精品99久久久久久久vr | 亚洲图片有声小说| 欧美精品一二三| 国产专区综合网| 国产精品久久免费看| 色综合一个色综合亚洲| 亚洲电影第三页| 日韩欧美国产午夜精品| 国产乱人伦精品一区二区在线观看| 亚洲国产岛国毛片在线| 欧美日韩日日骚| 国产精品亚洲人在线观看| 亚洲视频一区二区免费在线观看| 欧美日韩成人高清| 久久精品国产久精国产| 日韩一区在线播放| 91精品国产日韩91久久久久久| 不卡视频一二三| 首页国产丝袜综合| 国产欧美精品一区二区色综合 | 亚洲激情自拍偷拍| 日韩欧美www| 在线观看亚洲精品| 国产一区二区中文字幕| 亚洲二区在线观看| 国产日韩欧美在线一区| 欧美军同video69gay| 成人午夜视频免费看| 亚洲综合偷拍欧美一区色| 欧美v亚洲v综合ⅴ国产v| 91社区在线播放| 捆绑调教一区二区三区| 高清久久久久久| 天天综合天天综合色| 亚洲国产电影在线观看| 日韩欧美一二三四区| 欧美三日本三级三级在线播放| 成人精品视频网站| 久久99热国产| 日韩激情av在线| 亚洲欧美日韩人成在线播放| 久久午夜色播影院免费高清| 欧美一区二区网站| 91色.com| 91玉足脚交白嫩脚丫在线播放| 国产成人免费9x9x人网站视频| 日本女人一区二区三区| 亚洲国产一区二区三区青草影视| 亚洲日韩欧美一区二区在线| 国产精品毛片a∨一区二区三区| 久久综合久久鬼色中文字| 欧美一区二区女人| 欧美亚一区二区| 99re这里只有精品视频首页| 成人高清视频在线观看| 国产精品自拍av| 国产资源精品在线观看| 日本不卡一区二区| 亚洲自拍偷拍麻豆| 亚洲一区二区三区在线播放| 亚洲码国产岛国毛片在线| 中文字幕一区视频| 亚洲欧洲日韩在线| 国产精品毛片高清在线完整版| 中文字幕av资源一区| 国产精品久线观看视频| 久久久午夜精品| 国产三级欧美三级| 久久久精品人体av艺术| 国产精品福利一区二区三区| 亚洲色图丝袜美腿| 亚洲精品一二三| 午夜国产不卡在线观看视频| 日韩影院精彩在线| 激情五月婷婷综合网| 国产乱人伦精品一区二区在线观看| 国产91对白在线观看九色| 成人在线视频一区| 91丨九色丨蝌蚪富婆spa| 色天天综合色天天久久| 欧美日韩国产美| 久久综合久久综合久久| 国产精品伦理在线| 中文字幕视频一区| 日韩高清在线观看| 国产九色精品成人porny| 成人三级伦理片| 欧美日韩你懂的| 国产日产欧美一区二区视频| 亚洲国产成人tv| 国产成人精品网址| 在线观看日韩av先锋影音电影院| 日韩一二在线观看| 国产精品欧美一级免费| 亚洲国产欧美一区二区三区丁香婷| 奇米一区二区三区av| 国内精品伊人久久久久影院对白| 成人自拍视频在线| 欧美日韩国产三级| 日韩精品专区在线影院观看| 伊人婷婷欧美激情| 日韩国产一二三区| 99久久综合国产精品| 99久久久免费精品国产一区二区| 欧美影院精品一区| 日韩一级大片在线观看| 日韩美女久久久| 丝袜国产日韩另类美女| 国产一区二区福利| 色综合欧美在线视频区| 久久日一线二线三线suv| 国产精品国产a级| 久久av中文字幕片| 亚洲一本大道在线| 不卡视频一二三四| 在线不卡一区二区| 日本一区二区三区dvd视频在线 | 欧美亚洲综合网| 久久综合国产精品| 亚洲一区二区三区四区五区中文| 国内欧美视频一区二区| 欧美久久婷婷综合色| 国产精品毛片无遮挡高清| 在线观看中文字幕不卡| 日韩三级视频在线观看| 性欧美大战久久久久久久久| 91女人视频在线观看|