diff --git a/sinqhm/usrConfig2604.c b/sinqhm/usrConfig2604.c new file mode 100755 index 00000000..e0a1c592 --- /dev/null +++ b/sinqhm/usrConfig2604.c @@ -0,0 +1,996 @@ +/* usrConfig.c - user-defined system configuration library */ + +/* Copyright 1984-1998 Wind River Systems, Inc. */ +#include "copyright_wrs.h" + +/* +modification history +-------------------- +31-01-2002,Mark Koennecke, added code for starting the SinqHM stuff. +*********************************************************************** + + This file has to copied to + /home/pss123/aco/sinqhm/wind2/2.0.2/target/config/all/usrConfig.c +********************************************************************** + +19f,10mar99,drm Changing WINDMP to VXFUSION to reflect new product name. +19e,08oct98,rlp added support for UGL and HTML. +19d,17sep98,ms call cplusDemanglerInit if INCLUDE_CPLUS and INCLUDE_LOADER +19c,17sep98,cym added code to calculate proper IP address for PCSIM. +19b,01sep98,drm added code to initialize WindMP +19a,10aug98,cym added code to inform tornado when the NT simulator is up. +18z,23apr98,yp merged in TrueFFS support +18y,22apr98,elp created group 1 module when standalone (fixed SPR# 20301). +18w,22apr98,hdn added comment for tffsDrv(). +18t,17apr98,nps added support for rBuffShow. +18s,09mar98,sjw merge in HTTP and JAVA changes for conflict resolution +18r,18dec97,cth replaced windview, timestamp initialization with windviewConfig +18q,13nov97,cth changed WV evtInstInit to wvLibInit2; removed connRtnSet, + evtTaskInit; added include wvLib.h, rBuffLib.h +18p,18aug97,nps changed WV buffer initialization with the rBuff API. +18x,06mar98,ms changed copyright year from 1996 to 1998. +18v,04feb98,jpd fix unsigned/signed warning (usrRoot); updated copyright date. +18u,25feb98,jgn removed call to excShowInit(), it is called by excInit() + if needed (SPR #20625) +18t,19jan98,hdn changed a condition macro to include tffsDrv(). +18p,06jan98,cym added SIMNT as processor not to clear bss. +18s,23sep97,yp added support for TFFS. +18r,13aug97,cdp add Thumb (ARM7TDMI_T) support; + 'fix' unsigned/signed comparison in usrRoot. +18q,26feb97,dat added INCLUDE_USER_APPL and USER_APPL_INIT, spr 8071. +18p,05feb97,cdp remove ARM test hook (_func_armStartup). +18o,12dec96,cdp added _func_armStartup for ARM platforms. +18n,13dec96,elp changed syncLibInit() into symSyncLibInit(). +18m,18nov96,dds SPR 2529: return status for sysScsiInit is now checked. +18l,06nov96,ms removed 17n hack to usrClock. +18k,01nov96,hdn added support for PCMCIA. +18j,21oct96,hdn changed paramerters for new LPT driver. +18i,04oct96,elp added INCLUDE_SYM_TBL_SYNC (SPR# 6775). +18h,11jul96,tam changed copyright year from 1995 to 1996. +18l,19jul96,hdn added support for ATA driver. +18k,25jun96,jmb Eliminated alternative WDB macro names (SPR #5707). +18j,25jun96,dbt Initialized _func_selWakeupListInit before tyLib (SPR #3314). +18i,21jun96,jmb update copyright. SPR #6364 +18h,21jun96,jmb long modhist -- deleted entries prior to 1994. SPR #6528 +18g,12mar96,tam removed all #if (CPU == PPC403). +18p,06jun96,ism bumped copyright to 1996. +18o,26jan96,ism cleaned up vxsim/solaris version +18f,02oct95,kvk added sysHwInit2() for PPC603. +18e,27sep95,tpr removed #if (CPU_FAMILY != PPC) staff. +18n,07nov95,srh fixed C++ support comments. +18m,29oct95,dat fixed warnings about printf arguments +18l,11oct95,jdi doc: changed .pG to .tG. +18k,10oct95,dat new BSP revision id. Added WDB Banner printing +18j,15jun95,ms updated for new serial drivers. +18i,09jun95,ms cleaned up console initialization +18h,30may95,p_m added initialization of formatted I/O library. + replaced spyStop() by spyLibInit(). +18g,22may95,p_m no longer initialize object format specific libraries if + loader is not included. +18f,22may95,myz modified new serial device initialization for x86 support +18e,22may95,ms added some WDB agent support +18e,30oct95,ism updated for SIMSPARCSOLARIS +18d,28mar95,kkk added scalability support, changed edata and end to arrays + (SPR #3917), changed baud rate to be a macro in configAll.h +18g,25may95,yao changed to bzero bss segment for PPC. +18f,04apr95,caf added PPC cache support. +18e,03mar95,yao added shsHwInit2 () for PPC403. +18d,24feb95,caf added PPC support. +18c,20nov94,kdl added hashLibInit() when using dosFs. +18b,09nov94,jds additions for scsi backward compatability ; scsi[12]IfInit() +18a,04nov94,kdl merge cleanup. +17l,02aug94,tpr added cacheEnable (BRANCH_CACHE) for the MC68060. +17m,15oct94,hdn added LPT driver. +17o,20jul94,ms changed INCLUDE_AOUT_HPPA to INCLUDE_SOM_COFF +17n,02may94,ms added VxSim HP hack to usrClock(). +17q,15mar94,smb renamed tEvtTask parameters. +17p,15feb94,smb defined WV_MODE, EVTBUFFER_ADDRESS for wvInstInit(). +17o,12jan94,kdl modified posix initialization; added queued signal init. +*/ + +/* +DESCRIPTION +This library is the WRS-supplied configuration module for VxWorks. It +contains the root task, the primary system initialization routine, the +network initialization routine, and the clock interrupt routine. + +The include file config.h includes a number of system-dependent parameters used +in this file. + +In an effort to simplify the presentation of the configuration of vxWorks, +this file has been split into smaller files. These additional configuration +source files are located in ../../src/config/usr[xxx].c and are #included into +this file below. This file contains the bulk of the code a customer is +likely to customize. + +The module usrDepend.c contains checks that guard against unsupported +configurations suchas INCLUDE_NFS without INCLUDE_RPC. The module +usrKernel.c contains the core initialization of the kernel which is rarely +customized, but provided for information. The module usrNetwork.c now +contains all network initialization code. Finally, the module usrExtra.c +contains the conditional inclusion of the optional packages selected in +configAll.h. + +The source code necessary for the configuration selected is entirely +included in this file during compilation as part of a standard build in +the board support package. No other make is necessary. + +INCLUDE FILES: +config.h + +SEE ALSO: +.tG "Getting Started, Cross-Development" +*/ + +#include "vxWorks.h" /* always first */ +#include "config.h" /* board support configuration header */ +#include "usrConfig.h" /* general configuration header */ +#include "usrDepend.c" /* include dependency rules */ +#include "usrKernel.c" /* kernel configuration */ +#include "usrExtra.c" /* conditionally included packages */ + +#if CPU==SIMNT +extern int simUpMutex; +extern int win_ReleaseMutex(int hMutex); +#endif + +#ifdef INCLUDE_HTTP +#include "http/httpLib.h" /* Wind Web Server interfaces */ +#endif + +/* global variables */ + +int consoleFd; /* fd of initial console device */ +char consoleName[20]; /* console device name, eg. "/tyCo/0" */ +SYMTAB_ID statSymTbl; /* system error status symbol table id*/ +SYMTAB_ID standAloneSymTbl; /* STANDALONE version symbol table id */ +SYMTAB_ID sysSymTbl; /* system symbol table id */ +BOOT_PARAMS sysBootParams; /* parameters from boot line */ +int sysStartType; /* type of boot (WARM, COLD, etc) */ + +/******************************************************************************* +* +* usrInit - user-defined system initialization routine +* +* This is the first C code executed after the system boots. This routine is +* called by the assembly language start-up routine sysInit() which is in the +* sysALib module of the target-specific directory. It is called with +* interrupts locked out. The kernel is not multitasking at this point. +* +* This routine starts by clearing BSS; thus all variables are initialized to 0, +* as per the C specification. It then initializes the hardware by calling +* sysHwInit(), sets up the interrupt/exception vectors, and starts kernel +* multitasking with usrRoot() as the root task. +* +* RETURNS: N/A +* +* SEE ALSO: kernelLib +* +* ARGSUSED0 +*/ + +void usrInit + ( + int startType + ) + { +#if (CPU_FAMILY == SPARC) + excWindowInit (); /* SPARC window management */ +#endif + + /* configure data and instruction cache if available and leave disabled */ + +#ifdef INCLUDE_CACHE_SUPPORT + cacheLibInit (USER_I_CACHE_MODE, USER_D_CACHE_MODE); +#endif /* INCLUDE_CACHE_SUPPORT */ + +#if CPU_FAMILY!=SIMNT && CPU_FAMILY!=SIMSPARCSUNOS && CPU_FAMILY!=SIMHPPA && CPU_FAMILY!=SIMSPARCSOLARIS + /* don't assume bss variables are zero before this call */ + + bzero (edata, end - edata); /* zero out bss variables */ +#endif /* CPU_FAMILY!=SIMNT && CPU_FAMILY!=SIMSPARCSUNOS && CPU_FAMILY!=SIMHPPA && CPU_FAMILY!=SIMSPARCSOLARIS */ + + sysStartType = startType; /* save type of system start */ + + intVecBaseSet ((FUNCPTR *) VEC_BASE_ADRS); /* set vector base table */ + +#if (CPU_FAMILY == AM29XXX) + excSpillFillInit (); /* am29k stack cache managemt */ +#endif + +#ifdef INCLUDE_EXC_HANDLING + excVecInit (); /* install exception vectors */ +#endif /* INCLUDE_EXC_HANDLING */ + + sysHwInit (); /* initialize system hardware */ + + usrKernelInit (); /* configure the Wind kernel */ + +#ifdef INCLUDE_CACHE_SUPPORT +#ifdef USER_I_CACHE_ENABLE + cacheEnable (INSTRUCTION_CACHE); /* enable instruction cache */ +#endif /* USER_I_CACHE_ENABLE */ + +#ifdef USER_D_CACHE_ENABLE + cacheEnable (DATA_CACHE); /* enable data cache */ +#endif /* USER_D_CACHE_ENABLE */ + +#if (CPU == MC68060) +#ifdef USER_B_CACHE_ENABLE + cacheEnable (BRANCH_CACHE); /* enable branch cache */ +#endif /* USER_B_CACHE_ENABLE */ +#endif /* (CPU == MC68060) */ +#endif /* INCLUDE_CACHE_SUPPORT */ + + /* start the kernel specifying usrRoot as the root task */ + kernelInit ((FUNCPTR) usrRoot, ROOT_STACK_SIZE, +#ifdef INCLUDE_WDB + (char *) FREE_RAM_ADRS + WDB_POOL_SIZE, +#else + (char *) FREE_RAM_ADRS, +#endif + sysMemTop (), ISR_STACK_SIZE, INT_LOCK_LEVEL); + } + +/******************************************************************************* +* +* usrRoot - the root task +* +* This is the first task to run under the multitasking kernel. It performs +* all final initialization and then starts other tasks. +* +* It initializes the I/O system, installs drivers, creates devices, and sets +* up the network, etc., as necessary for a particular configuration. It +* may also create and load the system symbol table, if one is to be included. +* It may then load and spawn additional tasks as needed. In the default +* configuration, it simply initializes the VxWorks shell. +* +* RETURNS: N/A +*/ + +void usrRoot + ( + char * pMemPoolStart, /* start of system memory partition */ + unsigned memPoolSize /* initial size of mem pool */ + ) + { + char tyName [20]; + int ix; + + +#if (SINQHM_SPAWN != 0) + /*----------------------------------------------------------------- + ** Define local variables and templates for SinqHM modules + */ + + void SinqHM_bootParamsConfig (void); + + /*-----------------------------------------------------------------*/ +#endif /* (SINQHM_SPAWN != 0) */ + + + /* Initialize the memory pool before initializing any other package. + * The memory associated with the root task will be reclaimed at the + * completion of its activities. + */ + +#ifdef INCLUDE_MEM_MGR_FULL + memInit (pMemPoolStart, memPoolSize); /* initialize memory pool */ +#else + memPartLibInit (pMemPoolStart, memPoolSize);/* initialize memory pool */ +#endif /* INCLUDE_MEM_MGR_FULL */ + +#ifdef INCLUDE_SHOW_ROUTINES + memShowInit (); /* initialize memShow routine */ +#endif /* INCLUDE_SHOW_ROUTINES */ + +#if defined(INCLUDE_MMU_BASIC) || defined(INCLUDE_MMU_FULL) + usrMmuInit (); /* initialize the mmu */ +#endif /* defined(INCLUDE_MMU_BASIC) || defined(INCLUDE_MMU_FULL) */ + + /* set up system timer */ + + sysClkConnect ((FUNCPTR) usrClock, 0); /* connect clock ISR */ + sysClkRateSet (60); /* set system clock rate */ + sysClkEnable (); /* start it */ + + /* + * select sould be initialized after NFS and RPC for proper delete + * hook order but _func_selWakeupListInit should be set + * before tyLib module (SPR #3314). + */ + +#ifdef INCLUDE_SELECT + _func_selWakeupListInit = (FUNCPTR) selWakeupListInit; +#endif /* INCLUDE_SELECT */ + + /* initialize I/O system */ + +#ifdef INCLUDE_IO_SYSTEM + iosInit (NUM_DRIVERS, NUM_FILES, "/null"); + + consoleFd = NONE; /* assume no console device */ + +#ifdef INCLUDE_TYCODRV_5_2 +#ifdef INCLUDE_TTY_DEV + if (NUM_TTY > 0) + { + tyCoDrv (); /* install console driver */ + + for (ix = 0; ix < NUM_TTY; ix++) /* create serial devices */ + { + sprintf (tyName, "%s%d", "/tyCo/", ix); + + (void) tyCoDevCreate (tyName, ix, 512, 512); + + if (ix == CONSOLE_TTY) + strcpy (consoleName, tyName); /* store console name */ + } + + consoleFd = open (consoleName, O_RDWR, 0); + + /* set baud rate */ + + (void) ioctl (consoleFd, FIOBAUDRATE, CONSOLE_BAUD_RATE); + (void) ioctl (consoleFd, FIOSETOPTIONS, OPT_TERMINAL); + } +#endif /* INCLUDE_TTY_DEV */ + +#else /* !INCLUDE_TYCODRV_5_2 */ +#ifdef INCLUDE_TTY_DEV + if (NUM_TTY > 0) + { + ttyDrv(); /* install console driver */ + + for (ix = 0; ix < NUM_TTY; ix++) /* create serial devices */ + { +#if (defined(INCLUDE_WDB) && (WDB_COMM_TYPE == WDB_COMM_SERIAL)) + if (ix == WDB_TTY_CHANNEL) /* don't use WDBs channel */ + continue; +#endif + sprintf (tyName, "%s%d", "/tyCo/", ix); + (void) ttyDevCreate (tyName, sysSerialChanGet(ix), 512, 512); + + if (ix == CONSOLE_TTY) /* init the tty console */ + { + strcpy (consoleName, tyName); + consoleFd = open (consoleName, O_RDWR, 0); + (void) ioctl (consoleFd, FIOBAUDRATE, CONSOLE_BAUD_RATE); + (void) ioctl (consoleFd, FIOSETOPTIONS, OPT_TERMINAL); + } + } + } +#endif /* INCLUDE_TTY_DEV */ + +#ifdef INCLUDE_PC_CONSOLE + pcConDrv (); + for (ix = 0; ix < N_VIRTUAL_CONSOLES; ix++) + { + sprintf (tyName, "%s%d", "/pcConsole/", ix); + (void) pcConDevCreate (tyName,ix, 512, 512); + if (ix == PC_CONSOLE) /* init the console device */ + { + strcpy (consoleName, tyName); + consoleFd = open (consoleName, O_RDWR, 0); + (void) ioctl (consoleFd, FIOBAUDRATE, CONSOLE_BAUD_RATE); + (void) ioctl (consoleFd, FIOSETOPTIONS, OPT_TERMINAL); + } + } +#endif /* INCLUDE_PC_CONSOLE */ + +#endif /* !INCLUDE_TYCODRV_5_2 */ + + ioGlobalStdSet (STD_IN, consoleFd); + ioGlobalStdSet (STD_OUT, consoleFd); + ioGlobalStdSet (STD_ERR, consoleFd); +#endif /* INCLUDE_IO_SYSTEM */ + + /* initialize symbol table facilities */ + +#ifdef INCLUDE_SYM_TBL + hashLibInit (); /* initialize hash table package */ + symLibInit (); /* initialize symbol table package */ +#ifdef INCLUDE_SHOW_ROUTINES + symShowInit (); /* initialize symbol table show */ +#endif /* INCLUDE_SHOW_ROUTINES */ +#endif /* INCLUDE_SYM_TBL */ + + + /* initialize exception handling */ + +#if defined(INCLUDE_EXC_HANDLING) && defined(INCLUDE_EXC_TASK) + excInit (); /* initialize exception handling */ +#endif /* defined(INCLUDE_EXC_HANDLING) && defined(INCLUDE_EXC_TASK) */ + +#ifdef INCLUDE_LOGGING + logInit (consoleFd, MAX_LOG_MSGS); /* initialize logging */ +#endif /* INCLUDE_LOGGING */ + +#ifdef INCLUDE_SIGNALS + sigInit (); /* initialize signals */ +#endif /* INCLUDE_SIGNALS */ + + /* initialize debugging */ + +#ifdef INCLUDE_DEBUG + dbgInit (); /* initialize debugging */ +#endif /* INCLUDE_DEBUG */ + + + /* initialize pipe driver */ + +#ifdef INCLUDE_PIPES + pipeDrv (); /* install pipe driver */ +#endif /* INCLUDE_PIPES */ + + + /* initialize standard I/O package */ + +#ifdef INCLUDE_STDIO + stdioInit (); /* initialize standard I/O library */ +#ifdef INCLUDE_SHOW_ROUTINES + stdioShowInit (); +#endif /* INCLUDE_SHOW_ROUTINES */ +#endif /* INCLUDE_STDIO */ + + /* initialize POSIX queued signals */ + +#if defined(INCLUDE_POSIX_SIGNALS) && defined(INCLUDE_SIGNALS) + sigqueueInit (NUM_SIGNAL_QUEUES); /* initialize queued signals */ +#endif + + /* initialize POSIX semaphores */ + +#ifdef INCLUDE_POSIX_SEM + semPxLibInit (); +#ifdef INCLUDE_SHOW_ROUTINES + semPxShowInit (); +#endif /* INCLUDE_SHOW_POUTINES */ +#endif /* INCLUDE_POSIX_SEM */ + + /* initialize POSIX message queues */ + +#ifdef INCLUDE_POSIX_MQ + mqPxLibInit (MQ_HASH_SIZE); +#ifdef INCLUDE_SHOW_ROUTINES + mqPxShowInit (); +#endif /* INCLUDE_SHOW_ROUTINES */ +#endif /* INCLUDE_POSIX_MQ */ + + /* initialize POSIX async I/O support */ + +#ifdef INCLUDE_POSIX_AIO + aioPxLibInit (MAX_LIO_CALLS); +#ifdef INCLUDE_POSIX_AIO_SYSDRV + aioSysInit (MAX_AIO_SYS_TASKS, AIO_TASK_PRIORITY, AIO_TASK_STACK_SIZE); +#endif /* INCLUDE_POSIX_AIO_SYSDRV */ +#endif /* INCLUDE_POSIX_AIO */ + + /* initialize filesystems and disk drivers */ + +#ifdef INCLUDE_DOSFS + hashLibInit (); /* initialize hash table package */ + dosFsInit (NUM_DOSFS_FILES); /* init dosFs filesystem */ +#endif /* INCLUDE_DOSFS */ + +#ifdef INCLUDE_RAWFS + rawFsInit (NUM_RAWFS_FILES); /* init rawFs filesystem */ +#endif /* INCLUDE_RAWFS */ + +#ifdef INCLUDE_RT11FS + rt11FsInit (NUM_RT11FS_FILES); /* init rt11Fs filesystem */ +#endif /* INCLUDE_RT11FS */ + +#ifdef INCLUDE_RAMDRV + ramDrv (); /* initialize ram disk driver */ +#endif /* INCLUDE_RAMDRV */ + +#ifdef INCLUDE_SCSI + + /* + * initialize either the SCSI1 or SCSI2 interface; initialize SCSI2 when + * the SCSI2 interface is available. + */ + +#ifndef INCLUDE_SCSI2 + scsi1IfInit (); +#else + scsi2IfInit (); +#endif + + /* initialize SCSI controller */ + if (sysScsiInit () == OK) + { + usrScsiConfig (); /* configure SCSI peripherals */ + } + else + { + printf ("sysScsiInit() Failed, SCSI system not initialized\n"); + } + +#endif /* INCLUDE_SCSI */ + +#ifdef INCLUDE_FD + fdDrv (FD_INT_VEC, FD_INT_LVL); /* initialize floppy disk driver */ +#endif /* INCLUDE_FD */ + +#ifdef INCLUDE_IDE + ideDrv (IDE_INT_VEC, IDE_INT_LVL, IDE_CONFIG); /* init IDE disk driver */ +#endif /* INCLUDE_IDE */ + +#ifdef INCLUDE_ATA + { /* initialize hard disk driver */ + IMPORT ATA_RESOURCE ataResources[]; + ATA_RESOURCE *pAtaResource; + + for (ix = 0; ix < ATA_MAX_CTRLS; ix++) + { + pAtaResource = &ataResources[ix]; + if (pAtaResource->ctrlType == IDE_LOCAL) + ataDrv (ix, pAtaResource->drives, pAtaResource->intVector, + pAtaResource->intLevel, pAtaResource->configType, + pAtaResource->semTimeout, pAtaResource->wdgTimeout); + } + } +#ifdef INCLUDE_SHOW_ROUTINES + ataShowInit (); /* install ATA/IDE show routine */ +#endif /* INCLUDE_SHOW_ROUTINES */ +#endif /* INCLUDE_ATA */ + +#ifdef INCLUDE_LPT + { + IMPORT LPT_RESOURCE lptResources[]; + lptDrv (LPT_CHANNELS, &lptResources[0]); /* init LPT parallel driver */ + } +#endif /* INCLUDE_LPT */ + +#ifdef INCLUDE_PCMCIA +#ifdef INCLUDE_SHOW_ROUTINES + pcmciaShowInit (); /* install PCMCIA show routines */ +#endif /* INCLUDE_SHOW_ROUTINES */ + pcmciaInit (); /* init PCMCIA Lib */ +#endif /* INCLUDE_PCMCIA */ + +#ifdef INCLUDE_TFFS + tffsDrv (); /* it should be after pcmciaInit() */ +#endif /* INCLUDE_TFFS */ + +#ifdef INCLUDE_FORMATTED_IO + fioLibInit (); /* initialize formatted I/O */ +#endif /* INCLUDE_FORMATTED_IO */ + + /* initialize floating point facilities */ + +#ifdef INCLUDE_FLOATING_POINT + floatInit (); /* initialize floating point I/O */ +#endif /* INCLUDE_FLOATING_POINT */ + + /* install software floating point emulation (if applicable) */ + +#ifdef INCLUDE_SW_FP + mathSoftInit (); /* use software emulation for fp math */ +#endif /* INCLUDE_SW_FP */ + + /* install hardware floating point support (if applicable) */ + +#ifdef INCLUDE_HW_FP + mathHardInit (); /* do fppInit() & install hw fp math */ + +#ifdef INCLUDE_SHOW_ROUTINES + fppShowInit (); /* install hardware fp show routine */ +#endif /* INCLUDE_SHOW_ROUTINES */ +#endif /* INCLUDE_HW_FP */ + + /* initialize performance monitoring tools */ + +#ifdef INCLUDE_SPY + spyLibInit (); /* install task cpu utilization tool */ +#endif /* INCLUDE_SPY */ + +#ifdef INCLUDE_TIMEX + timexInit (); /* install function timing tool */ +#endif /* INCLUDE_TIMEX */ + +#ifdef INCLUDE_ENV_VARS + envLibInit (ENV_VAR_USE_HOOKS); /* initialize environment variable */ +#endif /* INCLUDE_ENV_VARS */ + +#ifdef INCLUDE_NTPASSFS + { + extern int ntPassFsInit(); + extern int ntPassFsDevInit(); + + ntPassFsInit(1); + ntPassFsDevInit("host:"); + } +#endif /* INCLUDE_NTPASSFS */ + + /* initialize object module loader */ + +#ifdef INCLUDE_LOADER + moduleLibInit (); /* initialize module manager */ + +#if defined(INCLUDE_AOUT) + loadAoutInit (); /* use a.out format */ +#else /* coff or ecoff */ +#if defined(INCLUDE_ECOFF) + loadEcoffInit (); /* use ecoff format */ +#else /* ecoff */ +#if defined(INCLUDE_COFF) + loadCoffInit (); /* use coff format */ +#else /* coff */ +#if defined(INCLUDE_ELF) + loadElfInit (); /* use elf format */ +#else +#if defined(INCLUDE_SOM_COFF) + loadSomCoffInit (); +#else +#if defined(INCLUDE_PECOFF) + { + extern int loadPecoffInit(); + + loadPecoffInit (); + } +#endif +#endif +#endif +#endif +#endif +#endif + +#endif /* INCLUDE_LOADER */ + + /* initialize wtx client to synchronize host and target symbol tables */ +#ifdef INCLUDE_SYM_TBL_SYNC + symSyncLibInit (); +#endif /* INCLUDE_SYM_TBL_SYNC */ + + /* initialize network */ + +#ifdef INCLUDE_NET_INIT + usrBootLineInit (sysStartType); /* crack the bootline */ + usrNetInit (BOOT_LINE_ADRS); /* initialize network support */ +#if CPU==SIMNT + { + extern int simProcnum; + char ulipIP[] = "90.0.0.1"; + + ulipIP[7] = '1'+simProcnum; + routeAdd("0.0.0.0",ulipIP); + } +#endif /* CPU==SIMNT */ +#endif /* INCLUDE_NET_INIT */ + +#ifdef INCLUDE_PASSFS + { + extern STATUS passFsInit (); + extern void *passFsDevInit (); + char passName [256]; + + if (passFsInit (1) == OK) + { + extern char vxsim_hostname[]; + extern char vxsim_cwd[]; + + sprintf (passName, "%s:", vxsim_hostname); + if (passFsDevInit (passName) == NULL) + { + printf ("passFsDevInit failed for <%s>\n", passName); + } + else + { + sprintf (passName, "%s:%s", vxsim_hostname, vxsim_cwd); + ioDefPathSet (passName); + } + } + else + printf ("passFsInit failed\n"); + } +#endif /* INCLUDE_PASSFS */ + +#ifdef INCLUDE_DOS_DISK + { + char unixName [80]; + extern void unixDrv (); + extern void unixDiskInit (); + extern char *u_progname; /* home of executable */ + char *pLastSlash; + + unixDrv (); + + pLastSlash = strrchr (u_progname, '/'); + pLastSlash = (pLastSlash == NULL) ? u_progname : (pLastSlash + 1); + sprintf (unixName, "/tmp/%s%d.dos", pLastSlash, sysProcNumGet()); + unixDiskInit (unixName, "A:", 0); + } +#endif /* INCLUDE_DOS_DISK */ + + /* initialize shared memory objects */ + +#ifdef INCLUDE_SM_OBJ /* unbundled shared memory objects */ + usrSmObjInit (BOOT_LINE_ADRS); +#endif /* INCLUDE_SM_OBJ */ + + /* initialize WindMP */ + +#ifdef INCLUDE_VXFUSION /* unbundled VxFusion (distributed objects) */ + usrVxFusionInit (BOOT_LINE_ADRS); +#ifdef INCLUDE_SHOW_ROUTINES + { + extern void msgQDistShowInit(); + extern void distNameShowInit (); + extern void distIfShowInit (); + extern void msgQDistGrpShowInit (); + + msgQDistShowInit(); + distNameShowInit (); + distIfShowInit (); + msgQDistGrpShowInit (); + } +#endif /* INCLUDE_SHOW_ROUTINES */ +#endif /* INCLUDE_WINDMP */ + + /* write protect text segment & vector table only after bpattach () */ + +#ifdef INCLUDE_MMU_FULL /* unbundled mmu product */ +#ifdef INCLUDE_PROTECT_TEXT + if (vmTextProtect () != OK) + printf ("\nError protecting text segment. errno = %x\n", errno); +#endif /* INCLUDE_PROTECT_TEXT */ + +#ifdef INCLUDE_PROTECT_VEC_TABLE + if (intVecTableWriteProtect () != OK) + printf ("\nError protecting vector table. errno = %x\n", errno); +#endif /* INCLUDE_PROTECT_VEC_TABLE */ +#endif /* INCLUDE_MMU_FULL */ + + /* initialize select only after NFS and RPC for proper delete hook order */ + +#ifdef INCLUDE_SELECT + selectInit (); +#endif /* INCLUDE_SELECT */ + + /* create system and status symbol tables */ + +#ifdef INCLUDE_STANDALONE_SYM_TBL + sysSymTbl = symTblCreate (SYM_TBL_HASH_SIZE_LOG2, TRUE, memSysPartId); + +#ifdef INCLUDE_SYM_TBL_SYNC + /* create a module (group 1) that is not synchronized (SPR# 20301) */ + + moduleCreate ("vxWorks.sym", +#if (defined INCLUDE_AOUT) + MODULE_A_OUT, +#elif ((defined INCLUDE_COFF) || (defined INCLUDE_ECOFF) || \ + (defined INCLUDE_SOMCOFF)) + MODULE_ECOFF, +#elif (defined INCLUDE_ELF) + MODULE_ELF, +#endif /* INCLUDE_AOUT */ + HIDDEN_MODULE|LOAD_NO_SYMBOLS); +#endif /* INCLUDE_SYM_TBL_SYNC */ + + printf ("\nAdding %ld symbols for standalone.\n", standTblSize); + + /* fill in from built in table*/ + + for (ix = 0; (ULONG) ix < standTblSize; ix++) +#if (CPU == ARM7TDMI_T) + thumbSymTblAdd (sysSymTbl, &(standTbl[ix])); +#else + symTblAdd (sysSymTbl, &(standTbl[ix])); +#endif /* CPU==ARM7TDMI_T `*/ +#endif /* INCLUDE_STANDALONE_SYM_TBL */ + +#ifdef INCLUDE_NET_SYM_TBL + sysSymTbl = symTblCreate (SYM_TBL_HASH_SIZE_LOG2, TRUE, memSysPartId); + + netLoadSymTbl (); /* fill in table from host */ +#endif /* INCLUDE_NET_SYM_TBL */ + +#ifdef INCLUDE_STAT_SYM_TBL + statSymTbl = symTblCreate (STAT_TBL_HASH_SIZE_LOG2, FALSE, memSysPartId); + + for (ix = 0; (ULONG)ix < statTblSize; ix ++) /* fill in from builtin table*/ + symTblAdd (statSymTbl, &(statTbl [ix])); +#endif /* INCLUDE_STAT_SYM_TBL */ + + + /* initialize C++ support library */ + +#if defined (INCLUDE_CPLUS) && defined (INCLUDE_CPLUS_MIN) +#error Define only one of INCLUDE_CPLUS or INCLUDE_CPLUS_MIN, not both +#endif + +#ifdef INCLUDE_CPLUS /* all standard C++ runtime support */ + cplusLibInit (); +#ifdef INCLUDE_LOADER + cplusDemanglerInit (); +#endif +#endif + +#ifdef INCLUDE_CPLUS_MIN /* minimal C++ runtime support */ + cplusLibMinInit (); +#ifdef INCLUDE_LOADER + cplusDemanglerInit (); +#endif +#endif + + /* initialize Wind Web Server */ + +#ifdef INCLUDE_HTTP + httpd (); +#endif /* INCLUDE_HTTP */ + +#ifdef INCLUDE_RBUFF /* install rBuff support */ + rBuffLibInit(); +#ifdef INCLUDE_SHOW_ROUTINES + rBuffShowInit (); /* install rBuff show routine */ +#endif /* INCLUDE_SHOW_ROUTINES */ +#endif /* INCLUDE_RBUFF */ + +#ifdef INCLUDE_WINDVIEW + windviewConfig (); +#endif /* INCLUDE_WINDVIEW */ + + + /* initialize the WDB debug agent */ + +#ifdef INCLUDE_WDB + wdbConfig(); + +#ifdef INCLUDE_WDB_BANNER +#ifndef INCLUDE_SHELL + /* short banner, like the bootPrintLogo banner */ + printf ("\n\n"); + printf ("%17s%s", "","VxWorks\n\n"); + printf ("Copyright 1984-1998 Wind River Systems, Inc.\n\n"); + printf (" CPU: %s\n", sysModel ()); + printf (" VxWorks: " VXWORKS_VERSION "\n"); + printf (" BSP version: " BSP_VERSION BSP_REV "\n"); + printf (" Creation date: %s\n", __DATE__); + printf (" WDB: %s.\n\n", + ((wdbRunsExternal () || wdbRunsTasking ()) ? + "Ready" : "Agent configuration failed") ); +#endif /*INCLUDE_SHELL*/ + +#endif /*INCLUDE_WDB_BANNER*/ + +#endif /* INCLUDE_WDB */ + + /* initialize interactive shell */ + +#ifdef INCLUDE_SHELL +#ifdef INCLUDE_SECURITY /* include shell security */ + if ((sysFlags & SYSFLG_NO_SECURITY) == 0) + { + loginInit (); /* initialize login table */ + shellLoginInstall (loginPrompt, NULL); /* install security program */ + + /* add additional users here as required */ + + loginUserAdd (LOGIN_USER_NAME, LOGIN_PASSWORD); + } +#endif /* INCLUDE_SECURITY */ + + printLogo (); /* print out the banner page */ + + printf (" "); + printf ("CPU: %s. Processor #%d.\n", sysModel (), sysProcNumGet ()); + printf (" "); + printf ("Memory Size: 0x%x.", (UINT)(sysMemTop () - (char *)LOCAL_MEM_LOCAL_ADRS)); + printf (" BSP version " BSP_VERSION BSP_REV "."); +#if defined(INCLUDE_WDB) && defined(INCLUDE_WDB_BANNER) + printf ("\n "); + printf ("WDB: %s.", + ((wdbRunsExternal () || wdbRunsTasking ()) ? + "Ready" : "Agent configuration failed") ); +#endif /*INCLUDE_WDB && INCLUDE_WDB_BANNER*/ + printf ("\n\n"); + +#ifdef INCLUDE_STARTUP_SCRIPT /* run a startup script */ + if (sysBootParams.startupScript [0] != EOS) + usrStartupScript (sysBootParams.startupScript); +#endif /* INCLUDE_STARTUP_SCRIPT */ + + shellInit (SHELL_STACK_SIZE, TRUE); /* create the shell */ + + + /* only include the simple demo if the shell is NOT included */ + +#else +#if defined(INCLUDE_DEMO) /* create demo w/o shell */ + taskSpawn ("demo", 20, 0, 2000, (FUNCPTR)usrDemo, 0,0,0,0,0,0,0,0,0,0); +#endif /* mips cpp no elif */ + +#endif /* INCLUDE_SHELL */ + +#ifdef INCLUDE_UGL + usrUglInit (); +#endif /* INCLUDE_UGL */ + +#if defined(INCLUDE_JAVA) + javaConfig (); +#endif /* INCLUDE_JAVA */ + +#ifdef INCLUDE_HTML + usrHtmlInit (); +#endif /* INCLUDE_HTML */ + +#if CPU==SIMNT + win_ReleaseMutex(simUpMutex); +#endif + +#ifdef INCLUDE_USER_APPL + /* Startup the user's application */ + + USER_APPL_INIT; /* must be a valid C statement or block */ +#endif +#if (SINQHM_SPAWN != 0) + printf ("Spawning SinqHM_bootParamsConfig ...\n"); + taskSpawn ("hmConfig", 100, VX_FP_TASK, 20000, + (FUNCPTR) SinqHM_bootParamsConfig, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + /*------------------------------------------------------------------*/ +#endif /* (SINQHM_SPAWN != 0) */ + + } + +/******************************************************************************* +* +* usrClock - user-defined system clock interrupt routine +* +* This routine is called at interrupt level on each clock interrupt. +* It is installed by usrRoot() with a sysClkConnect() call. +* It calls all the other packages that need to know about clock ticks, +* including the kernel itself. +* +* If the application needs anything to happen at the system clock interrupt +* level, it can be added to this routine. +* +* RETURNS: N/A +*/ + +void usrClock () + + { + tickAnnounce (); /* announce system tick to kernel */ + } + +#ifdef INCLUDE_DEMO + +/******************************************************************************** +* usrDemo - example application without shell +* +* This routine is spawned as a task at the end of usrRoot(), if INCLUDE_DEMO +* is defined, and INCLUDE_SHELL is NOT defined in configAll.h or config.h. +* It is intended to indicate how a shell-less application can be linked, +* loaded, and ROMed. +* +* NOMANUAL +*/ + +void usrDemo (void) + + { + char string [40]; + + printf ("VxWorks (for %s) version %s.\n", sysModel (), vxWorksVersion); + printf ("Kernel: %s.\n", kernelVersion ()); + printf ("Made on %s.\n", creationDate); + + FOREVER + { + printf ("\nThis is a test. Type something: "); + fioRdString (STD_IN, string, sizeof (string)); + printf ("\nYou typed \"%s\".\n", string); + + if (strcmp (string, "0") == 0) + memShow (0); + + if (strcmp (string, "1") == 0) + memShow (1); + } + } + +#endif /* INCLUDE_DEMO */