; Copyright 2000 Pace Micro Technology plc ; ; Licensed under the Apache License, Version 2.0 (the "License"); ; you may not use this file except in compliance with the License. ; You may obtain a copy of the License at ; ; http://www.apache.org/licenses/LICENSE-2.0 ; ; Unless required by applicable law or agreed to in writing, software ; distributed under the License is distributed on an "AS IS" BASIS, ; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ; See the License for the specific language governing permissions and ; limitations under the License. ; ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; essential global variables ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ GET Version GBLS VersionNo VersionNo SETS "$VString ($Date)" MosVer * 6 ; As returned by OS_Byte 0 ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; now the conditional flags for the version we want ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ GBLL AddTubeBashers AddTubeBashers SETL {FALSE} Tube_Normal * 1 Tube_Simulator * 2 GBLA TubeType TubeType SETA Tube_Simulator AssemblingArthur SETL {TRUE} ; defined in hdr.system to allow conditionals in macros GBLL CanLiveOnROMCard CanLiveOnROMCard SETL ROMCardSupport GBLL CacheOff CacheOff SETL {FALSE} GBLL ShowWS ShowWS SETL {TRUE} ; Make KernelWS be verbose GBLL Module Module SETL {FALSE} GBLL VCOstartfix ;code in early kernel to fix VCO start problem on A7000 (esp. 7500FE) VCOstartfix SETL {TRUE} ;whether we support running on the (Risc PC) emulator GBLL EmulatorSupport EmulatorSupport SETL {FALSE} ; Disabled; QEMU doesn't like it GBLL DoInitialiseMode DoInitialiseMode SETL {TRUE} GBLL SqueezeMods ; whether squeezed modules are allowed SqueezeMods SETL {TRUE} GBLL International ; whether text and error messages come from messages file. International SETL {TRUE} GBLL CacheCommonErrors ; whether common internationalised errors are cached in sysheap CacheCommonErrors SETL International :LAND: {TRUE} GBLL MouseBufferManager ; Whether mouse uses buffer manager MouseBufferManager SETL {TRUE} GBLL IrqsInClaimRelease ; Whether OS_Claim/Release restore IRQ's before releasing heap node IrqsInClaimRelease SETL {TRUE} GBLL AlwaysClearRAM ; If true, clear RAM on every break/reset AlwaysClearRAM SETL {TRUE} GBLL CacheCMOSRAM ; Whether to keep a RAM copy of CMOS RAM for faster access CacheCMOSRAM SETL {TRUE} GBLL ProtectStationID ; Disallow writes to NetStnCMOS (via OS_Byte & OS_NVMemory) ProtectStationID SETL {TRUE} GBLL CheckProtectionLink ; if true, disallow CMOS RAM changes if link in protected position CheckProtectionLink SETL {TRUE} ; NB affects Delete/Copy/R/T and 0-9/. GBLL ValidateCMOS ; Apply special CMOS-corruption detection code, ValidateCMOS SETL {TRUE} ; and do minimal default settings. GBLL ChecksumCMOS ; Inspect the CMOS checksum byte, and act like a CMOS reset if it's ChecksumCMOS SETL {TRUE} ; invalid. Also, calculate CMOS checksum and write it when needed. GBLL LCDInvert LCDInvert SETL {TRUE} GBLL LCDSupport ; Whether LCD Support is assembled in or not LCDSupport SETL {TRUE} GBLL ModeSelectors ; whether mode selectors are understood ModeSelectors SETL {TRUE} GBLL IgnoreVRAM ; if true, don't add VRAM to the RAM list (+ don't use for screen) IgnoreVRAM SETL {FALSE} GBLL LateAborts ; if true, use late abort mode on ARM600 (compulsory on ARM700) LateAborts SETL {TRUE} GBLL ShrinkableDAs ; if true, support Shrinkable Dynamic Areas (eg. CacheFS) ShrinkableDAs SETL {TRUE} GBLL DA_Batman ; Holey dynamic areas Batman! DA_Batman SETL {TRUE} ; concept of sparsely mapped dynamic areas introduced for Ursula GBLL Interruptible32bitModes ; if true, limited 32-bit mode code support (interrupt handler does not assume Interruptible32bitModes SETL {TRUE} ; 26-bit foreground), also allows faster, 32-bit APCS version of FPEmulator GBLL GSWorkspaceInKernelBuffers ; Move gstrans workspace into the kernel buffers area to fix redirection GSWorkspaceInKernelBuffers SETL {TRUE} ; and everything else that suffers from the dodgy use of scratch space. GBLL EarlierReentrancyInDAShrink EarlierReentrancyInDAShrink SETL {TRUE} ; fix for RAMFS and new FileCore (causes reentrant DA shrink/remove) GBLL OnlyKernelCanAccessHardwareVectors OnlyKernelCanAccessHardwareVectors SETL {TRUE} ; if true, only the Kernel is permitted to write to the hardware vectors ; while in 26-bit mode. If false, the whole ROM can (including BASIC ; and the Shared C Library - eg any memcpy!) GBLL LongCommandLines ; first introduced for Ursula, merged into HAL kernel LongCommandLines SETL {TRUE} [ LongCommandLines LongCLISize * 1024 ; buffer size for long commands ] GBLL StrongARM GBLL SAcleanflushbroken ; whether StrongARM single MCR for DC clean+flush broken (is always for SA110) GBLL SASTMhatbroken ; whether ROM must support SA110's with broken STM^ (revision 3 should fix this) GBLL StrongARM_POST ; whether to run POST for StrongARM (and possibly ARM8) GBLL ARM6support GBLL XScaleMiniCache ; is the XScale mini data-cache used (at all) GBLL XScaleJTAGDebug GBLL ECC ; use ECC on XScale. May compromise other ARM compatibility StrongARM SETL {TRUE} SAcleanflushbroken SETL {TRUE} :LAND: StrongARM SASTMhatbroken SETL {TRUE} :LAND: StrongARM StrongARM_POST SETL {TRUE} :LAND: StrongARM ARM6support SETL (MEMM_Type = "ARM600") ; Needs updating for VMSAv6 compatability XScaleMiniCache SETL {FALSE} XScaleJTAGDebug SETL {TRUE} ECC SETL {FALSE} ;mjs ;Chocolate flavours implemented for Ursula, but they are generally useful performance enhancements ;(not all Ursula performance improvements are flagged with Chocolate - eg. simple changes such as slicker SWI ;despatch and wider SWI hashing) ; ;any ARM ; GBLL ChocolateSysHeap ;whether to save cost of SysHeap block claim/release for common cases (eg. callback blocks) ;also reduces SysHeap stress by using fewer blocks in total GBLL ChocolateOSMod ;whether to reduce SysHeap stress in module handling GBLL ChocolateSysVars ;whether to do performance improvements in system variable handling GBLL ChocolateOscli ;whether to do performance improvements in Oscli command stuff GBLL ChocolateService ;whether to implement fast module service call distribution (uses table introduced ;into module format by Ursula API) GBLL ChocolateAMB ;whether to compile support for Lazy task swapping ;possibly enabled at run time for some ARMs only ChocolateSysHeap SETL {TRUE} ChocolateOSMod SETL {TRUE} ChocolateSysVars SETL {TRUE} ChocolateOscli SETL {TRUE} ChocolateService SETL {TRUE} ChocolateAMB SETL {TRUE} [ ChocolateSysHeap GBLA MaxChocolateCBBlocks ;max quick CallBack blocks available at any one time (else ordinary heap nodes used) GBLA MaxChocolateSVBlocks ;max quick Software Vector blocks available at any one time (else ordinary heap nodes used) GBLA MaxChocolateTKBlocks ;max quick Ticker blocks available at any one time (else ordinary heap nodes used) GBLA MaxChocolateMRBlocks ;max module ROM blocks before ordinary heap nodes are used (reduces total no. nodes in SysHeap) GBLA MaxChocolateMABlocks ;max module Active blocks before ordinary heap nodes are used GBLA MaxChocolateMSBlocks ;max module SWI Hash blocks before ordinary heap nodes are used MaxChocolateCBBlocks SETA 32 MaxChocolateSVBlocks SETA 128 MaxChocolateTKBlocks SETA 32 MaxChocolateMRBlocks SETA 150 MaxChocolateMABlocks SETA 150 MaxChocolateMSBlocks SETA 150 ] GBLL Oscli_QuickAliases GBLL Oscli_HashedCommands Oscli_QuickAliases SETL {TRUE} :LAND: ChocolateOscli ;try to do a better job of checking for aliases Oscli_HashedCommands SETL {TRUE} :LAND: ChocolateOscli ;try to do a better job of finding commands GBLL mjsServiceTrace ;for statistics gathering on service calls only mjsServiceTrace SETL {FALSE} GBLL mjsSysHeapNodesTrace ;for statistics gathering on some SysHeap nodes only mjsSysHeapNodesTrace SETL {FALSE} GBLL NoSPSRcorruption ;set to true if IRQ dispatcher NoSPSRcorruption SETL {FALSE} ;preserves SPSR_SVC GBLL RMTidyDoesNowt ; if true, RMTidy does nothing RMTidyDoesNowt SETL {TRUE} ; should really be "machine has FSLock in ROM" GBLL RogerEXEY ; if true, use Roger's new algorithm for XEigFactor, YEigFactor RogerEXEY SETL {FALSE} ; Marketing don't like it! GBLL DebugROMInit GBLL DebugHALTX [ FreezeDevRel DebugROMInit SETL {FALSE} DebugHALTX SETL {FALSE} | DebugROMInit SETL (Version :AND: 1) = 1 ; Yes for odd numbered development DebugHALTX SETL (Version :AND: 1) = 1 ; Yes for odd numbered development ] GBLL DebugROMPostInit ; Displays when the PostInit service call is sent to each ROM module (currently works on vanilla service call handling only) DebugROMPostInit SETL (:LNOT: ChocolateService) :LAND: {FALSE} GBLL DebugTerminal ; default WRCH and RDCH through HAL DebugTerminal SETL {FALSE} GBLL DebugHeaps ; initialise claimed and freed blocks DebugHeaps SETL {FALSE} ; (may slow things down unacceptably) GBLL DebugCDA2 ; ChangeDynamicArea and related options DebugCDA2 SETL {FALSE} [ DebugHeaps :LOR: DebugROMInit :LOR: DebugROMPostInit :LOR: DebugCDA2 ! 0, "*** WARNING *** Debugging assembled in" ] GBLL StorkPowerSave ;True => power saving for Stork AND A4 StorkPowerSave SETL MorrisSupport ;False=> older A4 code only GBLL FixCallBacks ; see Docs.CallbackChange FixCallBacks SETL {TRUE} ; also addresses some atomicity problems [ :LNOT: :DEF: HiProcVecs GBLL HiProcVecs ; Relocate processor vectors and first 16K of workspace to &FFFF0000 HiProcVecs SETL "$Machine"="Tungsten" :LOR: :LNOT: NoARMv6 ] GBLL DebugForcedReset ; debug forced hard resets DebugForcedReset SETL {FALSE} GBLA FirstUnpluggableModule FirstUnpluggableModule SETA 8 ; Podule, FileSwitch, ResourceFS, Messages, MessageTrans, ; TerritoryManager, UK. Moot now the keyboard and mouse aren't ; in the kernel - unplug those and you're stuffed. GBLL PMPDebug PMPDebug SETL {FALSE} ; Physical memory pool debugging GBLL PMPParanoid PMPParanoid SETL {FALSE} ; Validate PMPs after most ops GBLL PMPRAMFS PMPRAMFS SETL {TRUE} ; Whether RAMFS DA is a PMP (requires compatible RAMFS module) [ PMPRAMFS PMPRAMFS_Size * 256 ; Number of logical pages (physical size is unlimited) | GBLA MaxRAMFS_Size MaxRAMFS_Size SETA 128 ; Max size available for RAM Disc ] [ DebugForcedReset Reset_CannotResetFlag * 1 Reset_SysHeapCorrupt * 2 Reset_WrongCamMapAddress * 3 Reset_WrongNumberOfPages * 4 Reset_CamMapCorrupt * 5 Reset_VectorChainCorrupt * 6 Reset_TickNodesCorrupt * 7 Reset_DeviceVectorCorrupt * 8 Reset_PoduleOrCallBackCorrupt * 9 ] GBLL AssembleKEYV AssembleKEYV SETL {TRUE} ; Use KEYV. GBLL AssemblePointerV AssemblePointerV SETL {TRUE} ; Use PointerV. GBLL ProcessorVectors ProcessorVectors SETL {TRUE} ; Processor vectors indirected through 0 page. GBLL UseNewFX0Error UseNewFX0Error SETL ((Version :AND: 1) = 1) ; Whether *FX 0 should show the ROM link date instead of the UtilityModule date GBLS GetMessages [ International GetMessages SETS "GET s.MsgCode" | GetMessages SETS "" ] GBLS GetUnsqueeze [ SqueezeMods GetUnsqueeze SETS "GET s.Unsqueeze" | GetUnsqueeze SETS "" ] GBLS GetKernelMEMC GBLS GetPalette GBLS GetMemInfo GetKernelMEMC SETS "GET s." :CC: MEMM_Type GetMemInfo SETS "GET s.MemInfo" GetPalette SETS "GET s.vdu.vdupalxx" ; control switches for med_00001 (the flood fill routines 1024 line limit). ; Switches have the following effects: ; ; _userma Will use rma if >48K is free, up to a maximum of 128K. It will ; try to acheive the latter by growing the rma if possible. ; _twowords Use two word entries in the queue. This overcomes the limitation ; of the original packed word format. GBLL med_00001_userma GBLL med_00001_twowords med_00001_userma SETL {TRUE} med_00001_twowords SETL {TRUE} [ med_00001_userma smallest_rma_size * (48*1024) ; define the low threshold for rma use largest_rma_size * (128*1024) ; and the ceiling for rma use ] ; Ickle macros. We want to be able to turn IRQs on and off fast in the ; code in various places. To do this easily, have a name for the ; SVC26/32 mode we run in. USR2632 * USR32_mode SVC2632 * SVC32_mode END