Blame | Last modification | View Log | RSS feed
;; ARMulator configuration file;; Copyright (c) 1996-1998 ARM Limited. All Rights Reserved.;; RCS $Revision: 1.77.4.4 $;; Checkin $Date: 1999/12/21 18:42:02 $;; Revising $Author: mwilliam $;;;; This is the configuration file for ARMulator 2.0;;;; Comment this out for benchmarking; For the moment we assume that if no clock speed has been set on the; command-line, the user wishes to use a wall-clock for timing#if !CPUSPEEDClock=Real#endif;; This line controls whether (some) models give more useful descriptions;; of what they are on startup, and during running.Verbose=False;; To get the full validation environment, we set Validate to one of;; "OS" or "CP". The former installs itself as an OS model, whiile;; the latter simply registers the validation coprocessors.;Validate=OS;Validate=CP;; To enable faster watchpoints, set "WatchPoints";Watchpoints;; ARMulator comes up with the cache and MMU enabled, when using a;; cached Processor. To disable this, set 'UsePageTables' to 'False'.UsePageTables=True#if Validate && Validate==OSOS=ValidateOS#else;; The default operating-system is Angel - this can be changed to Demon;; if desired#if OSMODEL_AngelOS=Angel#elseOS=Demon#endif#endif;; Operating system (Demon or Angel) configuration#if OS==Angel || OS==Demon{ OS;; Angel configuration;; SWIs to use for AngelAngelSWIARM=0x123456AngelSWIThumb=0xab#if PIEHeapBase=0x00050000HeapLimit=0x00060000StackBase=0x00080000StackLimit=0x0078000#elif PID7THeapBase=0x02069000HeapLimit=0x02079000StackBase=0x02080000StackLimit=0x02079000#elseHeapBase=0x40000000HeapLimit=0x70000000StackBase=0x80000000StackLimit=0x70000000#endif#if !FPE || FPE==FALSE;; If you want to be able to run demon programs (for backwards;; compatability) set this to "Yes"Demon=NoFPE=No#elseDemon=Yes#endif;; Demon configuration;; Configure the locations of stacks, etc.AddrSuperStack=0xa00AddrAbortStack=0x800AddrUndefStack=0x700AddrIRQStack=0x500AddrFIQStack=0x400;; The default location of the user mode stackAddrUserStack=0x80000;; Start of the "soft vector" codeAddrSoftVectors=0xa40;; Where to place a copy of the command lineAddrCmdLine=0xf00;; Address and workspace for installed handlersAddrsOfHandlers=0xad0;; Default handlersSoftVectorCode=0xb80}#endif; Whether to have a "-proc StrongARM" optionNoStrongARM=False;;;; This is the list of all processors supported by ARMulator.;;{ ProcessorsDefault=ARM7TDMI;; Entries are of the form:;; { <processor-name>; ... features ...; ... variants ...; };;; or;; <processor-variant>=<processor-name>;;; In the latter case, the "variant" must appear in the variants list;; for the named processor.;; The "BASIC" RDI model provides models of the ARM2/ARM6/ARM7 and ARM8;; families.#if RDI_BASIC;; ARM2 family{ ARM2;; Features:Processor=ARM2Core=ARM2ARMulator=BASICArchitecture=2;; Variants:ARM2aS:Processor=ARM2aSARM61:Processor=ARM61ARM3:Processor=ARM3ARM3:Architecture=2aARM3:Memory=Default}ARM2aS=ARM2ARM61=ARM2#if MEMORY_MMUlatorARM3=ARM2#endif;; ARM6 family{ ARM6;; Features:Processor=ARM6Core=ARM6ARMulator=BASICArchitecture=3;; Variants:ARM60:Processor=ARM60;; Cached variantsARM600:Processor=ARM600ARM610:Processor=ARM610ARM600:Memory=ARM600ARM610:Memory=ARM610}ARM60=ARM6#if MEMORY_MMUlatorARM600=ARM6ARM610=ARM6#endif;; ARM7 family{ ARM7;; Features:Processor=ARM7Core=ARM7ARMulator=BASICArchitecture=3NexecLateAbortsSubPage;; Variants:ARM70:Processor=ARM70;; Cached variantsARM700:Processor=ARM700ARM704:Processor=ARM704ARM710a:Processor=ARM710aARM710:Processor=ARM710ARM700:Memory=ARM700ARM704:Memory=ARM704ARM710a:Memory=ARM710aARM710:Memory=ARM710}ARM70=ARM7#if MEMORY_MMUlatorARM700=ARM7ARM704=ARM7ARM710=ARM7ARM710a=ARM7#endif;; ARM7D family - ARM7D and ARM70D{ ARM7D;; FeaturesProcessor=ARM7DCore=ARM7ARMulator=BASICArchitecture=3NexecLateAbortsDebugARM70D:Processor=ARM70DARM70D:Debug;; ARM7DM familiesARM7DM:Processor=ARM7DMARM7DM:Architecture=3MARM70DM:Processor=ARM70DMARM70DM:Architecture=3M}ARM70D=ARM7DARM7DM=ARM7DARM70DM=ARM7D;; Thumb family{ ARM7TDM;; FeaturesProcessor=ARM7TDMCore=ARM7ARMulator=BASICArchitecture=4TNexecLateAbortsDebugARM7TDMI:Processor=ARM7TDMIARM7TM:Processor=ARM7TM;; Cached variantsARM710T:Processor=ARM710TARM710T:Memory=ARM710TARM720T:Processor=ARM720TARM720T:Memory=ARM720TARM720T:HighExceptionVectorsARM740T:Processor=ARM740TARM740T:Memory=ARM740T}ARM7TM=ARM7TDMARM7TDMI=ARM7TDM#if MEMORY_MMUlatorARM710T=ARM7TDMARM720T=ARM7TDMARM740T=ARM7TDM#endif;; Synthesisable ARM family{ ARM7TM-S;; FeaturesProcessor=ARM7TM-SCore=ARM7ARMulator=BASICArchitecture=4TNexecLateAbortsDebugARM7TDMI-S:Processor=ARM7TDMI-S; Options - no long multipliersARM7T-S:Architecture=4TxMARM7T-S:Processor=ARM7T-SARM7T-S:EarlySignedMultiply=TrueARM7TDI-S:Architecture=4TxMARM7TDI-S:Processor=ARM7TDI-SARM7TDI-S:EarlySignedMultiply=True}ARM7T-S=ARM7TM-SARM7TDI-S=ARM7TM-SARM7TDMI-S=ARM7TM-S;; ARM8 family{ ARM8;; Features:Processor=ARM8Core=ARM8ARMulator=BASICArchitecture=4NexecMultipleEarlyAbortsAbortsStopMultiplePrefetchHasBranchPredictionNoLDCSTC;; Variants:ARM810:Processor=ARM810ARM810:Memory=ARM810}#if MEMORY_MMUlatorARM810=ARM8#endif#endif;; The "STRONG" RDI interface provides models of the StrongARM1 family.#if RDI_STRONG;; StrongARM family#if NoStrongARM==FALSE{ StrongARM;; Features:Processor=StrongARMCore=StrongARMARMulator=STRONGArchitecture=4NexecMultipleEarlyAbortsAbortsStopMultipleStrongARMAwareNoLDCSTCNoCDP;; Variants:SA-110:Processor=SA-110SA-110:Memory=SA-110}#if MEMORY_StrongMMUSA-110=StrongARM#endif#else{ SA-110;; Features:Processor=SA-110Core=StrongARMARMulator=STRONGArchitecture=4NexecMultipleEarlyAbortsAbortsStopMultipleStrongARMAwareNoLDCSTCNoCDPProcessor=SA-110Memory=SA-110}#endif#endif;; ARM9 family{ ARM9TDMI;; Features:Processor=ARM9TDMICore=ARM9ARMulator=ARM9ulatorArchitecture=4TNexecMultipleEarlyAbortsAbortsStopMultipleCoreCyclesHighExceptionVectors;;StrongARMAware;;NoLDCSTC;;NoCDP;; Variants:{ ARM940TProcessor=ARM940TMemory=ARM940T}{ ARM920TProcessor=ARM920TMemory=ARM920T}}#if MEMORY_ARM940CacheMPUARM940T=ARM9TDMI#endif#if MEMORY_ARM920CacheMMUARM920T=ARM9TDMI#endif;; New processors/variants can be added here.};;;; List of memory models;;{ Memories;; Default memory model is the "Flat" model, or the "MapFile" model if there;; is an armsd.map file to load.;; Validation suite uses the trickbox#if ValidateDefault=TrickBox#endif;; If there's a memory mapfile, use that.#if MemConfigToLoad && MEMORY_MapFileDefault=MapFile#endif;; Default default is the flat memory mapDefault=Flat;; The "MMUlator" provides emulation of the caches and MMU's on the;; ARM6/ARM7 and ARM8 processor families.#if MEMORY_MMUlator;; Plumbing for cached models - leave aloneARM600=MMUlatorARM610=MMUlatorARM620=MMUlatorARM700=MMUlatorARM704=MMUlatorARM710=MMUlatorARM710a=MMUlatorARM710T=MMUlatorARM720T=MMUlatorARM740T=MMUlator;; Validationmem is used by the 740T to map the top 2GB of memory onto the;; lower 2GB of memory. This is used during the validation process and must be;; provided here as there is no MMU.;;#if ARM740T && Validate;;Validationmem=1;;#endifARM810=MMUlator{ MMUlatorIdleCycles;; Uncomment this to have a byte-lane memory interface;;Bytelanes#if BytelanesMemory=BytelaneVeneer#elseMemory=Default#endif;; If Track=True, the MMUlator tells you when registers are;; written to, etc. Helps debugging.Track=False;; Whether to have the "verbose" $statisticsCounters=False{ ARM600CacheWords=4CacheAssociativity=64CacheBlocks=4TLBSize=32RNG=6WriteBufferAddrs=2WriteBufferWords=8CacheReplaceTicks=1CacheWrite=WriteThroughHasUpdateable=TRUEBufferedSwap=TRUEArchitecture=3CacheWriteBackInterlocksNa=YesChipNumber=0x60Has26BitConfigReplacement=RandomHasWriteBufferARM610:NoCoprocessorInterfaceARM610:ChipNumber=0x61; Set core/memory clock ratioMCCFG=2}ARM610=ARM600{ ARM700CacheWords=8CacheAssociativity=4CacheBlocks=64TLBSize=64RNG=7WriteBufferAddrs=4WriteBufferWords=8CacheReplaceTicks=1CacheWrite=WriteThroughHasRFlagHasUpdateable=FALSEBufferedSwap=FALSEArchitecture=3CacheWriteBackInterlocksNa=YesReplacement=RandomHas26BitConfigHasWriteBufferCheckCacheWhenDisabledChipNumber=0x700ARM710:NoCoprocessorInterfaceARM710:ChipNumber=0x0710ARM710:Revision=0ARM704:NoCoprocessorInterfaceARM704:CacheWords=4ARM704:CacheBlocks=64ARM704:ChipNumber=0x2710ARM704:Revision=0ARM710a:NoCoprocessorInterfaceARM710a:CacheWords=4ARM710a:CacheBlocks=128ARM710a:ChipNumber=0x4710ARM710a:Revision=0ARM710T:CacheWords=4ARM710T:CacheAssociativity=4ARM710T:CacheBlocks=128ARM710T:Architecture=4TARM710T:ChipNumber=0x710ARM710T:Revision=0ARM710T:ThumbAware=1ARM710T:ProcessId=0ARM720T:CacheWords=4ARM720T:CacheAssociativity=4ARM720T:CacheBlocks=128ARM720T:Architecture=4TARM720T:ChipNumber=0x720ARM720T:Revision=0ARM720T:ThumbAware=1ARM720T:ProcessId=1ARM720T:ProcessIdARM740T:CacheWords=4ARM740T:CacheAssociativity=4ARM740T:CacheBlocks=128ARM740T:Architecture=4TARM740T:ChipNumber=0x740ARM740T:Revision=0ARM740T:ThumbAware=1ARM740T:ProcessId=0ARM740T:ProtectionUnit=1ARM740T:LockDownTLB=0; Set core/memory clock ratioMCCFG=2}ARM710=ARM700ARM710a=ARM700ARM704=ARM700ARM710T=ARM700ARM720T=ARM700ARM740T=ARM700{ ARM810CacheWords=4CacheAssociativity=64CacheBlocks=8TLBSize=64RNG=6WriteBufferAddrs=4WriteBufferWords=8CacheReplaceTicks=3CacheWrite=WriteBackHasRFlagNoUpdateableNoBufferedSwapArchitecture=4CacheBlockInterlock;; If using the PLLs;PLLClock;RefClkCfg=0;PLLCfg=15;PLLRange=0HasBranchPredictionReplacement=RandomHasWriteBufferLockDownCacheLockDownTLBCheckCacheWhenDisabledChipNumber=0x810;Set core/memory clock speed ratioMCCFG=2}Replacement=rngWriteBufferWords=8Revision=0xff;; Track, if on, displays to the console all CP15 (etc.) operationsTrack=OffLRUReadLRUWrite}#endif;; The "StrongMMU" model provides the cache model for the SA-110#if MEMORY_StrongMMUSA-110=StrongMMU{ StrongMMU#if Validate || MemConfigToLoadConfig=Standard#endifConfig=EnhancedChipNumber=0x110;; Clock speed controlled by three values:;; See the SA-110 Technical Reference Manual for details.CCLK=3.68MHzCCCFG=0MCCFG=0;; "ClockSwitching" controls whether "clock switching" is disabled (as on;; real silicon) or enabled (to simplify benchmarking) on reset.ClockSwitching=True;; To enable useful timings for profiling (etc), the StrongARMulator allows;; us to divide what would be the real core clock frequency by a factor. This;; "slows down" StrongARM, so we get more emulated time per real time.Time_Scale_Factor=1Memory=Default}#endif#if MEMORY_ARM940CacheMPU;; The "ARM940CacheMPU" model provides the cache/PU model for the ARM940ARM940T=ARM940CacheMPU{ ARM940CacheMPUChipNumber=0x940;;Set the number of cache linesICACHE_LINES=256DCACHE_LINES=256;; 256 = 4 Kbytes;; 512 = 8 Kbytes;; Clock speed controlled by:MCCFG=1Memory=Default}#endif#if MEMORY_ARM920CacheMMU;; The "ARM920CacheMMU" model provides the cache/MMU model for the ARM920ARM920T=ARM920CacheMMU{ ARM920CacheMMU#if ValidateConfig=Standard#endifConfig=EnhancedChipNumber=0x920;; Clock speed controlled by a pair of values:CCCFG=0MCCFG=8Memory=Default}#endif#if MEMORY_BytelaneVeneerBytelaneVeneer:Memory=Default#endif#if MEMORY_MapFile{ MapFile;; Options for the mapfile memory modelCountWaitStates=TrueAMBABusCounts=FalseSpotISCycles=TrueISTiming=Early}#endif};; Co-processor busCoprocessorBus=ARMCoprocessorBus;;;; Coprocessor configurations;;{ Coprocessors; Here is the list of co-processors, in the form:; Coprocessor[<n>]=Name#if COPROCESSOR_DummyMMU;; By default, we install a dummy MMU on co-processor 15.CoProcessor[15]=DummyMMU; Here is the configuration for the co-processors.;; The Dummy MMU can be configured to return a given Chip ID;DummyMMU:ChipID=#endif};;;; Basic models (ARMulator extensions);;{ EarlyModels;;;; "EarlyModels" get run before memory initialisation, "Models" after.;;#if MODEL_WatchPoints && MEMORY_WatchPoints && WatchPoints;; Inserts a watchpoint model into the memory hierarchy.WatchPoints#endif#if MODEL_Tracer{ Tracer;; Output options - can be plaintext to file, binary to file or to RDI log;; window. (Checked in the order RDILog, File, BinFile.)RDILog=FalseFile=armul.trcBinFile=armul.trc;; Tracer options - what to traceTraceInstructions=TrueTraceMemory=FalseTraceIdle=TrueTraceNonAccounted=FalseTraceEvents=False;; Where to trace memory - if not set, it will trace at the core.TraceBus=True;; Flags - disassemble instructions; start up with tracing enabled;Disassemble=TrueStartOn=False}#endif}{ Models#if MODEL_Profiler{ Profiler;; For example - to profile the PC value when cache misses happen, set:;Type=Event;Event=0x00010001;EventWord=pc}#endif#if MODEL_WindowsHourglass{ WindowsHourglass;; We can control how regularly we callback the frontend;; More often (lower value) means a slower emulator, but;; faster response. The default is 8192.Rate=8192}#endif;;;; Validation co-processor;;#if MODEL_ValidateCP && Validate && Validate==CPValidateCP#endif;;;; Operating system definitions - used only for a NEW_OS_INTERFACE build;;;; The default operating-system is Angel - this can be changed to Demon;; if desired#if MODEL_Angel && !Validate{ Angel;; Angel configuration;; SWIs to use for AngelAngelSWIARM=0x123456AngelSWIThumb=0xab#if PIEHeapBase=0x00050000HeapLimit=0x00060000StackBase=0x00080000StackLimit=0x0078000#elif PID7THeapBase=0x02069000HeapLimit=0x02079000StackBase=0x02080000StackLimit=0x02079000#elseHeapBase=0x40000000HeapLimit=0x70000000StackBase=0x80000000StackLimit=0x70000000#endif;; If you don't want to be able to run demon programs (for backwards;; compatability) set this to "No"Demon=Yes#if !FPE || Demon==NoFPE=No#endif;; Demon configuration;; Configure the locations of stacks, etc.AddrSuperStack=0xa00AddrAbortStack=0x800AddrUndefStack=0x700AddrIRQStack=0x500AddrFIQStack=0x400;; The default location of the user mode stackAddrUserStack=0x80000;; Start of the "soft vector" codeAddrSoftVectors=0xa40;; Where to place a copy of the command lineAddrCmdLine=0xf00;; Address and workspace for installed handlersAddrsOfHandlers=0xad0;; Default handlersSoftVectorCode=0xb80}#endif#if MODEL_ValidateOS && Validate && Validate==OSValidateOS#endif#if UsePageTables==True && MODEL_Pagetables && !Validate;; Page tables{ PagetablesMMU=YesAlignFaults=NoCache=YesWriteBuffer=YesProg32=YesData32=YesLateAbort=YesBranchPredict=YesICache=YesHighExceptionVectors=No;; The following is set to the default setting of the processor core;; (which is controlled from the command-line or configuration window).;; Only uncomment if you wish to override that setting.;BigEnd=PageTableBase=0xa0000000DAC=0x00000003{ Region[0]VirtualBase=0PhysicalBase=0Size=4GBCacheable=YesBufferable=YesUpdateable=YesDomain=0AccessPermissions=3Translate=Yes};; You can add more "regions" here: Region[1], etc.}#endif};; EOF armul.cnf