1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
; 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
; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
AssemblingArthur SETL {TRUE}
; defined in hdr.system to allow conditionals in macros
GBLL CacheOff
CacheOff SETL {FALSE}
GBLL ShowWS
ShowWS SETL {TRUE} ; Make KernelWS be verbose
GBLL Module
Module SETL {FALSE}
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 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 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 IgnoreVRAM ; if true, don't add VRAM to the RAM list (+ don't use for screen)
IgnoreVRAM SETL {FALSE}
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
LongCLISize * 1024 ; buffer size for long commands
GBLL SASTMhatbroken ; whether ROM must support SA110's with broken STM^ (revision 3 should fix this)
GBLL ARM6support
GBLL XScaleMiniCache ; is the XScale mini data-cache used (at all)
GBLL XScaleJTAGDebug
SASTMhatbroken SETL SupportARMv4 :LAND: NoARMv5
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}
InterruptDelay SETL SupportARMv4 :LAND: NoARMv5
ARM6support SETL (MEMM_Type = "ARM600") :LAND: NoARMv4
XScaleMiniCache SETL {FALSE}
XScaleJTAGDebug SETL {TRUE}
;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 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"
]
[ :LNOT: :DEF: HiProcVecs
GBLL HiProcVecs ; Relocate processor vectors and first 16K of workspace to &FFFF0000
HiProcVecs SETL "$Machine"="Tungsten" :LOR: :LNOT: NoARMv6
]
GBLL CompatibilityPage ; Add a read-only page at &0 for compatibility with buggy zero page reading software
CompatibilityPage SETL HiProcVecs
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
]
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
GBLL SMP
SMP SETL (MEMM_Type = "VMSAv6") :LAND: {TRUE} ; Enable SMP-related changes
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
GetKernelMEMC SETS "GET s." :CC: MEMM_Type
; 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