Options 12.3 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
; 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)"

24
MosVer          *       6               ; As returned by OS_Byte 0
25

26 27 28 29
; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; now the conditional flags for the version we want
; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

30 31 32
AssemblingArthur SETL  {TRUE}
; defined in hdr.system to allow conditionals in macros

33 34 35
                GBLL    CacheOff
CacheOff        SETL    {FALSE}

36 37 38
                GBLL    ShowWS
ShowWS          SETL    {TRUE}          ; Make KernelWS be verbose

39 40 41 42 43 44
                GBLL    Module
Module          SETL    {FALSE}

                GBLL    SqueezeMods     ; whether squeezed modules are allowed
SqueezeMods     SETL    {TRUE}

45
                GBLL    International   ; whether text and error messages come from  messages file.
46 47 48 49 50 51
International   SETL    {TRUE}

                GBLL    CacheCommonErrors       ; whether common internationalised errors are cached in sysheap
CacheCommonErrors       SETL    International :LAND: {TRUE}

                GBLL    CacheCMOSRAM            ; Whether to keep a RAM copy of CMOS RAM for faster access
52
CacheCMOSRAM    SETL    {TRUE}
53

54
                GBLL    ProtectStationID        ; Disallow writes to NetStnCMOS (via OS_Byte & OS_NVMemory)
Jeffrey Lee's avatar
Jeffrey Lee committed
55
ProtectStationID        SETL {TRUE}
56

57 58 59
                GBLL    ValidateCMOS            ; Apply special CMOS-corruption detection code,
ValidateCMOS    SETL    {TRUE}                  ; and do minimal default settings.

Robert Sprowson's avatar
Robert Sprowson committed
60 61 62
                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.

63 64 65
                GBLL    ShrinkableDAs           ; if true, support Shrinkable Dynamic Areas (eg. CacheFS)
ShrinkableDAs   SETL    {TRUE}

66
                GBLL    DA_Batman               ; Holey dynamic areas Batman!
Robert Sprowson's avatar
Robert Sprowson committed
67
DA_Batman       SETL    {TRUE}                  ; concept of sparsely mapped dynamic areas introduced for Ursula
68

69 70
LongCLISize          * 1024                     ; buffer size for long commands

71
                GBLL    SASTMhatbroken          ; whether ROM must support SA110's with broken STM^ (revision 3 should fix this)
72
SASTMhatbroken  SETL    SupportARMv4 :LAND: NoARMv5
Jeffrey Lee's avatar
Jeffrey Lee committed
73 74 75 76

                GBLL    CacheCleanerHack        ; Cache clean hack in ClearPhysRAM for platforms that use DCacheCleanAddress. Does not work with all CPUs!
                GBLL    InterruptDelay          ; True if we might be running on a CPU with CPUFlag_InterruptDelay set (e.g. StrongARM)
CacheCleanerHack   SETL {TRUE}
Jeffrey Lee's avatar
Jeffrey Lee committed
77
InterruptDelay     SETL SupportARMv4 :LAND: NoARMv5
Kevin Bracey's avatar
Kevin Bracey committed
78

79 80 81
                GBLL    ARM6support
                GBLL    XScaleMiniCache         ; is the XScale mini data-cache used (at all)
                GBLL    XScaleJTAGDebug
82
ARM6support        SETL (MEMM_Type = "ARM600") :LAND: NoARMv4
Kevin Bracey's avatar
Kevin Bracey committed
83 84
XScaleMiniCache    SETL {FALSE}
XScaleJTAGDebug    SETL {TRUE}
85 86 87 88 89 90 91

                ;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
92
                ;
93 94 95 96 97 98
                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
99
                                                ;into module format by Ursula API)
100
                GBLL    ChocolateAMB            ;whether to compile support for Lazy task swapping
101
                                                ;possibly enabled at run time for some ARMs only
102 103 104 105 106
ChocolateSysHeap       SETL {TRUE}
ChocolateOSMod         SETL {TRUE}
ChocolateSysVars       SETL {TRUE}
ChocolateOscli         SETL {TRUE}
ChocolateService       SETL {TRUE}
Jeffrey Lee's avatar
Jeffrey Lee committed
107
ChocolateAMB           SETL {TRUE}
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
  [ 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    DebugROMInit
134 135 136 137 138 139
                GBLL    DebugHALTX

              [ FreezeDevRel
DebugROMInit    SETL    {FALSE}
DebugHALTX      SETL    {FALSE}
              |
140
DebugROMInit    SETL    (Version :AND: 1) = 1   ; Yes for odd numbered development
141 142
DebugHALTX      SETL    (Version :AND: 1) = 1   ; Yes for odd numbered development
              ]
143 144

                GBLL    DebugROMPostInit ; Displays when the PostInit service call is sent to each ROM module (currently works on vanilla service call handling only)
145
DebugROMPostInit SETL   (:LNOT: ChocolateService) :LAND: {FALSE}
Kevin Bracey's avatar
Kevin Bracey committed
146 147

                GBLL    DebugTerminal           ; default WRCH and RDCH through HAL
148
DebugTerminal   SETL    {FALSE}
Kevin Bracey's avatar
Kevin Bracey committed
149

150 151 152
                GBLL    DebugHeaps              ; initialise claimed and freed blocks
DebugHeaps      SETL    {FALSE}                 ; (may slow things down unacceptably)

153
                GBLL    DebugCDA2       ; ChangeDynamicArea and related options
154
DebugCDA2       SETL    {FALSE}
155

156
              [ DebugHeaps :LOR: DebugROMInit :LOR: DebugROMPostInit :LOR: DebugCDA2
157 158 159
                ! 0, "*** WARNING *** Debugging assembled in"
              ]

160
  [ :LNOT: :DEF: HiProcVecs
161
                GBLL    HiProcVecs              ; Relocate processor vectors and first 16K of workspace to &FFFF0000
162 163
HiProcVecs      SETL    "$Machine"="Tungsten" :LOR: :LNOT: NoARMv6
  ]
164

165 166 167
                GBLL    CompatibilityPage       ; Add a read-only page at &0 for compatibility with buggy zero page reading software
CompatibilityPage SETL  HiProcVecs

168
                GBLA    FirstUnpluggableModule
169
FirstUnpluggableModule  SETA 8                  ; Podule, FileSwitch, ResourceFS, Messages, MessageTrans,
170 171
                                                ; TerritoryManager, UK. Moot now the keyboard and mouse aren't
                                                ; in the kernel - unplug those and you're stuffed.
172

173 174 175 176 177 178 179 180 181
                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_Size   * 256                           ; Number of logical pages (physical size is unlimited)
182

Jeffrey Lee's avatar
Jeffrey Lee committed
183 184
  [ :LNOT: :DEF: LongDesc
                GBLL    LongDesc
185
LongDesc        SETL    {FALSE} :LAND: MEMM_Type = "VMSAv6" ; Support long descriptor page table format?
Jeffrey Lee's avatar
Jeffrey Lee committed
186 187
  ]

188 189 190 191 192 193 194
  [ :LNOT: :DEF: ShortDesc
                GBLL    ShortDesc
ShortDesc       SETL    {TRUE}                  ; Support short descriptor page table format?
  ]

                ASSERT  LongDesc :LOR: ShortDesc ; Must support at least one!

195 196 197 198 199 200
                GBLL    CacheablePageTables
CacheablePageTables SETL {TRUE}                 ; Use cacheable page tables where possible

                GBLL    SyncPageTables
SyncPageTables  SETL    (MEMM_Type = "VMSAv6") :LOR: CacheablePageTables ; Any page table modification (specifically, overwriting faulting entries) requires synchronisation

201 202 203 204 205 206 207 208
                ; Control over behaviour of memory access privilege 1 when
                ; using long descriptor page tables:
                ; Traditional permissions are user RX + privileged RWX
                ; EmulateAP1 {TRUE} will provide user R + privileged RWX, by using AbortTrap to implement user read support
                ; EmulateAP1 {FALSE} will provide user RWX + privileged RWX (weaker security since user code can now write to the memory)
                GBLL    EmulateAP1
EmulateAP1      SETL    LongDesc :LAND: {TRUE}

209
  [ :LNOT: :DEF: SMP
Jeffrey Lee's avatar
Jeffrey Lee committed
210 211
                GBLL    SMP
SMP             SETL    (MEMM_Type = "VMSAv6") :LAND: {TRUE} ; Enable SMP-related changes
212
  ]
Jeffrey Lee's avatar
Jeffrey Lee committed
213

214
                    GBLL  UseNewFX0Error
Jeffrey Lee's avatar
Jeffrey Lee committed
215
UseNewFX0Error      SETL  ((Version :AND: 1) = 1) ; Whether *FX 0 should show the ROM link date instead of the UtilityModule date
216

217 218 219
                    GBLL  CheckErrorBlocks
CheckErrorBlocks    SETL  {FALSE}               ; Attempt to check whether error blocks are valid (in addition to the error pointer checks)

220 221 222 223 224 225
                    GBLS  GetMessages
 [ International
GetMessages         SETS  "GET s.MsgCode"
 |
GetMessages         SETS  ""
 ]
226 227 228 229 230 231 232
                    GBLS  GetUnsqueeze
 [ SqueezeMods
GetUnsqueeze        SETS  "GET s.Unsqueeze"
 |
GetUnsqueeze        SETS  ""
 ]
                    GBLS  GetKernelMEMC
233
GetKernelMEMC       SETS  "GET s." :CC: MEMM_Type
234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260

; 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