1 /****************************************************************************** 2 * 3 * Module Name: ahaslops - Table of all known ASL operators 4 * 5 *****************************************************************************/ 6 7 /* 8 * Copyright (C) 2000 - 2014, Intel Corp. 9 * All rights reserved. 10 * 11 * Redistribution and use in source and binary forms, with or without 12 * modification, are permitted provided that the following conditions 13 * are met: 14 * 1. Redistributions of source code must retain the above copyright 15 * notice, this list of conditions, and the following disclaimer, 16 * without modification. 17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18 * substantially similar to the "NO WARRANTY" disclaimer below 19 * ("Disclaimer") and any redistribution must be conditioned upon 20 * including a substantially similar Disclaimer requirement for further 21 * binary redistribution. 22 * 3. Neither the names of the above-listed copyright holders nor the names 23 * of any contributors may be used to endorse or promote products derived 24 * from this software without specific prior written permission. 25 * 26 * Alternatively, this software may be distributed under the terms of the 27 * GNU General Public License ("GPL") version 2 as published by the Free 28 * Software Foundation. 29 * 30 * NO WARRANTY 31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41 * POSSIBILITY OF SUCH DAMAGES. 42 */ 43 44 #include "acpihelp.h" 45 46 /* 47 * ASL operators with syntax (directly from ACPI specification). 48 * Note: All tokens require a space separator. 49 * Long lines are automatically split during output. 50 */ 51 const AH_ASL_OPERATOR AslOperatorInfo[] = 52 { 53 {"AccessAs", "(AccessType, AccessAttribKeyword | " 54 "ExtendedAttribKeyword (AccessLength))", 55 "ChangeFieldUnitAccess"}, 56 {"Acquire", "(SyncObject, TimeoutValue) => Boolean", 57 "Acquire a mutex"}, 58 {"Add", "(Addend1, Addend2, Result) => Integer", 59 "Integer Add"}, 60 {"Alias", "(SourceObject, AliasObject)", 61 "Define a name alias"}, 62 {"And", "(Source1, Source2, Result) => Integer", 63 "Integer Bitwise And"}, 64 {"Arg", "Arg0 - Arg6", 65 "Method argument data objects"}, 66 {"BankField", "(RegionName, BankName, BankValue, " 67 "AccessTypeKeyword, LockRuleKeyword, " 68 "UpdateRuleKeyword) {FieldUnitList}", 69 "Declare fields in a banked configuration object"}, 70 {"Break", "No parameters", 71 "Continue following the innermost enclosing While"}, 72 {"BreakPoint", "No parameters", 73 "Used for debugging, stops execution in the debugger"}, 74 {"Buffer", "(BufferSize) {String or ByteList} => Buffer", 75 "Declare Buffer object"}, 76 {"Case", "(Value) {TermList}", 77 "Expression for conditional execution"}, 78 {"Concatenate", "(Source1, Source2, Result) => ComputationalData", 79 "Concatenate two strings, integers or buffers"}, 80 {"ConcatenateResTemplate", "(Source1, Source2, Result) => Buffer", 81 "Concatenate two resource templates"}, 82 {"CondRefOf", "(Source, Result) => Boolean", 83 "Conditional reference to an object"}, 84 {"Connection", "(ResourceMacro)", 85 "Associate connection with FieldUnits within a Field object"}, 86 {"Continue", "No parameters", 87 "Continue innermost enclosing While loop"}, 88 {"CopyObject", "(Source, Destination) => DataRefObject", 89 "Copy and existing object"}, 90 {"CreateBitField", "(SourceBuffer, BitIndex, BitFieldName)", 91 "Declare a bit field object of a buffer object"}, 92 {"CreateByteField", "(SourceBuffer, ByteIndex, ByteFieldName)", 93 "Declare a byte field object of a buffer object"}, 94 {"CreateDWordField", "(SourceBuffer, ByteIndex, DWordFieldName)", 95 "Declare a DWord field object of a buffer object"}, 96 {"CreateField", "(SourceBuffer, BitIndex, NumBits, FieldName)", 97 "Declare an arbitrary length bit field of a buffer object"}, 98 {"CreateQWordField", "(SourceBuffer, ByteIndex, QWordFieldName)", 99 "Declare a QWord field object of a buffer object"}, 100 {"CreateWordField", "(SourceBuffer, ByteIndex, WordFieldName)", 101 "Declare a Word field object of a buffer object"}, 102 {"DataTableRegion", "(RegionName, SignatureString, OemIDString, OemTableIDString)", 103 "Declare a Data Table Region"}, 104 {"Debug", "No parameters", 105 "Debugger output"}, 106 {"Decrement", "(Minuend) => Integer", 107 "Decrement an Integer"}, 108 {"Default", "{TermList}", 109 "Default execution path in Switch()"}, 110 {"DefinitionBlock", "(AmlFileName, TableSignature, ComplianceRevision, " 111 "OemId, TableId, OemRevision) {TermList}", 112 "Declare a Definition Block"}, 113 {"DerefOf", "(Source) => Object", 114 "Dereference an object reference"}, 115 {"Device", "(DeviceName) {ObjectList}", 116 "Declare a bus/device object"}, 117 {"Divide", "(Dividend, Divisor, Remainder, Result) => Integer", 118 "Integer Divide"}, 119 {"DMA", "(DmaTypeKeyword, BusMasterKeyword, XferTypeKeyword, " 120 "DescriptorName) {DmaChannelList} => Buffer", 121 "DMA Resource Descriptor macro"}, 122 {"DWordIO", "(ResourceTypeKeyword, MinKeyword, MaxKeyword, " 123 "DecodeKeyword, RangeTypeKeyword, AddressGranularity, " 124 "AddressMinimum, AddressMaximum, AddressTranslation, " 125 "RangeLength, ResourceSourceIndex, " 126 "ResourceSource, DescriptorName, TypeKeyword, TranslationKeyword)", 127 "DWord IO Resource Descriptor macro"}, 128 {"DWordMemory", "(ResourceTypeKeyword, DecodeKeyword, MinKeyword, " 129 "MaxKeyword, MemTypeKeyword, ReadWriteKeyword, " 130 "AddressGranularity, AddressMinimum, AddressMaximum, AddressTranslation, " 131 "RangeLength, ResourceSourceIndex, ResourceSource, DescriptorName, AddressKeyword, " 132 "TypeKeyword)", 133 "DWord Memory Resource Descriptor macro"}, 134 {"DWordSpace", "(ResourceType, ResourceTypeKeyword, DecodeKeyword, " 135 "MinKeyword, MaxKeyword, TypeSpecificFlags, " 136 "AddressGranularity, AddressMinimum, AddressMaximum, " 137 "AddressTranslation, RangeLength, " 138 "ResourceSourceIndex, ResourceSource, DescriptorName)", 139 "DWord Space Resource Descriptor macro"}, 140 {"EISAID", "(EisaIdString) => DWordConst", 141 "EISA ID String to Integer conversion macro"}, 142 {"Else", "{TermList}", 143 "Alternate conditional execution"}, 144 {"ElseIf", "(Predicate)", 145 "Conditional execution"}, 146 {"EndDependentFn", "() => Buffer", 147 "End Dependent Function Resource Descriptor macro"}, 148 {"Event", "(EventName)", 149 "Declare an event synchronization object"}, 150 {"ExtendedIO", "(ResourceTypeKeyword, MinKeyword, MaxKeyword, " 151 "DecodeKeyword, RangeTypeKeyword, AddressGranularity, " 152 "AddressMinimum, AddressMaximum, AddressTranslation, RangeLength, " 153 "TypeSpecificAttributes, DescriptorName, TypeKeyword, TranslationKeyword)", 154 "Extended IO Resource Descriptor macro"}, 155 {"ExtendedMemory", "(ResourceTypeKeyword, DecodeKeyword, MinKeyword, " 156 "MaxKeyword, MemTypeKeyword, ReadWriteKeyword, " 157 "AddressGranularity, AddressMinimum, AddressMaximum, AddressTranslation, " 158 "RangeLength, TypeSpecificAttributes, DescriptorName, " 159 "AddressKeyword, TypeKeyword)", 160 "Extended Memory Resource Descriptor macro"}, 161 {"ExtendedSpace", "(ResourceType, ResourceTypeKeyword, DecodeKeyword, " 162 "MinKeyword, MaxKeyword, TypeSpecificFlags, " 163 "AddressGranularity, AddressMinimum, AddressMaximum, AddressTranslation, " 164 "RangeLength, TypeSpecificAttributes, DescriptorName)", 165 "Extended Space Resource Descriptor macro"}, 166 {"External", "(ObjectName, ObjectTypeKeyword, ReturnType, ParameterTypes)", 167 "Declare external objects"}, 168 {"Fatal", "(Type, Code, Arg)", 169 "Fatal error check"}, 170 {"Field", "(RegionName, AccessTypeKeyword, LockRuleKeyword, " 171 "UpdateRuleKeyword) {FieldUnitList}", 172 "Declare fields of an operation region object"}, 173 {"FindSetLeftBit", "(Source, Result) => Integer", 174 "Index of first least significant bit set"}, 175 {"FindSetRightBit", "(Source, Result) => Integer", 176 "Index of first most significant bit set"}, 177 {"FixedDMA", "(DmaRequestLine, Channel, TransferWidthKeyword, DescriptorName) => Buffer", 178 "Fixed DMA Resource Descriptor macro"}, 179 {"FixedIO", "(AddressBase, RangeLength, DescriptorName) => Buffer", 180 "Fixed I/O Resource Descriptor macro"}, 181 {"FromBCD", "(BCDValue, Result) => Integer", 182 "Convert from BCD to numeric"}, 183 {"Function", "(FunctionName, ReturnType, ParameterTypes) {TermList}", 184 "Declare control method"}, 185 {"GpioInt", "(InterruptTypeKeyword, InterruptLevelKeyword, " 186 "ShareTypeKeyword, PinConfigKeyword, " 187 "DebounceTimeout, ResourceSource, " 188 "ResourceSourceIndex, ResourceTypeKeyword, DescriptorName, " 189 "RawDataBuffer() {VendorData}) {Pin}", 190 "GPIO Interrupt Connection Resource Descriptor Macro"}, 191 {"GpioIo", "(ShareTypeKeyword, PinConfigKeyword, DebounceTimeout, DriveStrength, " 192 "IoRestrictionKeyword, ResourceSource, " 193 "ResourceSourceIndex, ResourceTypeKeyword, DescriptorName, " 194 "RawDataBuffer() {VendorData}) {PinList}", 195 "GPIO I/O Connection Resource Descriptor Macro"}, 196 {"I2cSerialBus", "(SlaveAddress, SlaveModeKeyword, ConnectionSpeed, " 197 "AddressingModeKeyword, ResourceSource, " 198 "ResourceSourceIndex, ResourceTypeKeyword, DescriptorName, " 199 "RawDataBuffer() {VendorData})", 200 "I2C Serial Bus Connection Resource Descriptor Macro"}, 201 {"If", "(Predicate) {TermList}", 202 "Conditional execution"}, 203 {"Include", "(FilePathName)", 204 "Include another ASL file"}, 205 {"Increment", "(Addend) => Integer", 206 "Increment a Integer"}, 207 {"Index", "(Source, Index, Destination) => ObjectReference", 208 "Indexed Reference to member object"}, 209 {"IndexField", "(IndexName, DataName, AccessTypeKeyword, LockRuleKeyword, " 210 "UpdateRuleKeyword) {FieldUnitList}", 211 "Declare Index/Data Fields"}, 212 {"Interrupt", "(ResourceTypeKeyword, InterruptTypeKeyword, InterruptLevelKeyword, " 213 "ShareTypeKeyword, ResourceSourceIndex, " 214 "ResourceSource, DescriptorName) {InterruptList} => Buffer", 215 "Interrupt Resource Descriptor macro"}, 216 {"IO", "(IoDecodeKeyword, AddressMin, AddressMax, AddressAlignment, " 217 "RangeLength, DescriptorName) => Buffer", 218 "IO Resource Descriptor macro"}, 219 {"IRQ", "(InterruptTypeKeyword, InterruptLevelKeyword, ShareTypeKeyword, " 220 "DescriptorName) {InterruptList} => Buffer", 221 "Interrupt Resource Descriptor macro"}, 222 {"IRQNoFlags", "(DescriptorName) {InterruptList} => Buffer", 223 "Short Interrupt Resource Descriptor macro"}, 224 {"LAnd", "(Source1, Source2) => Boolean", 225 "Logical And"}, 226 {"LEqual", "(Source1, Source2) => Boolean", 227 "Logical Equal"}, 228 {"LGreater", "(Source1, Source2) => Boolean", 229 "Logical Greater"}, 230 {"LGreaterEqual", "(Source1, Source2) => Boolean", 231 "Logical Not less"}, 232 {"LLess", "(Source1, Source2) => Boolean", 233 "Logical Less"}, 234 {"LLessEqual", "(Source1, Source2) => Boolean", 235 "Logical Not greater"}, 236 {"LNot", "(Source) => Boolean", 237 "Logical Not"}, 238 {"LNotEqual", "(Source1, Source2) => Boolean", 239 "Logical Not equal"}, 240 {"Load", "(Object, DDBHandle)", 241 "Load differentiating definition block"}, 242 {"LoadTable", "(SignatureString, OemIdString, OemTableIdString, RootPathString, " 243 "ParameterPathString, ParameterData) => DDBHandle", 244 "Load Table from RSDT/XSDT"}, 245 {"Local", "Local0 - Local7", 246 "Method local data objects"}, 247 {"LOr", "(Source1, Source2) => Boolean", 248 "Logical Or"}, 249 {"Match", "(SearchPackage, MatchOpKeyword, MatchObject1, MatchOpKeyword, " 250 "MatchObject2, StartIndex) => Ones | Integer", 251 "Search for match in package array"}, 252 {"Memory24", "(ReadWriteKeyword, AddressMinimum, AddressMaximum, AddressAlignment, " 253 "RangeLength, DescriptorName)", 254 "Memory Resource Descriptor macro"}, 255 {"Memory32", "(ReadWriteKeyword, AddressMinimum, AddressMaximum, AddressAlignment, " 256 "RangeLength, DescriptorName)", 257 "Memory Resource Descriptor macro"}, 258 {"Memory32Fixed", "(ReadWriteKeyword, AddressBase, RangeLength, DescriptorName)", 259 "Memory Resource Descriptor macro"}, 260 {"Method", "(MethodName, NumArgs, SerializeRuleKeyword, " 261 "SyncLevel, ReturnType, ParameterTypes) " 262 "{TermList}", 263 "Declare a control method"}, 264 {"Mid", "(Source, Index, Length, Result) => Buffer or String", 265 "Return a portion of buffer or string"}, 266 {"Mod", "(Dividend, Divisor, Result) => Integer", 267 "Integer Modulo"}, 268 {"Multiply", "(Multiplicand, Multiplier, Result) => Integer", 269 "Integer Multiply"}, 270 {"Mutex", "(MutexName, SyncLevel)", 271 "Declare a mutex synchronization object"}, 272 {"Name", "(ObjectName, Object)", 273 "Declare a Named object"}, 274 {"NAnd", "(Source1, Source2, Result) => Integer", 275 "Integer Bitwise Nand"}, 276 {"NoOp", "No parameters", 277 "No operation"}, 278 {"NOr", "(Source1, Source2, Result) => Integer", 279 "Integer Bitwise Nor"}, 280 {"Not", "(Source, Result) => Integer", 281 "Integer Bitwise Not"}, 282 {"Notify", "(Object, NotificationValue)", 283 "Notify Object of event"}, 284 {"ObjectType", "(Object) => Integer", 285 "Type of object"}, 286 {"Offset", "(ByteOffset)", 287 "Change Current Field Unit Offset"}, 288 {"One", "=> Integer", 289 "Constant One Object (1)"}, 290 {"Ones", "=> Integer", 291 "Constant Ones Object (0xFFFFFFFF or 0xFFFFFFFFFFFFFFFF)"}, 292 {"OperationRegion", "(RegionName, RegionSpaceKeyword, Offset, Length)", 293 "Declare an operational region"}, 294 {"Or", "(Source1, Source2, Result) => Integer", 295 "Integer Bitwise Or"}, 296 {"Package", "(NumElements) {PackageList} => Package", 297 "Declare a package object"}, 298 {"PowerResource", "(ResourceName, SystemLevel, ResourceOrder) {ObjectList}", 299 "Declare a power resource object"}, 300 {"Processor", "(ProcessorName, ProcessorID, PBlockAddress, PblockLength) {ObjectList}", 301 "Declare a processor package"}, 302 {"QWordIO", "(ResourceTypeKeyword, MinKeyword, MaxKeyword, DecodeKeyword, " 303 "RangeTypeKeyword, AddressGranularity, " 304 "AddressMinimum, AddressMaximum, AddressTranslation, RangeLength, " 305 "ResourceSourceIndex, ResourceSource, DescriptorName, TypeKeyword, " 306 "TranslationKeyword)", 307 "QWord IO Resource Descriptor macro"}, 308 {"QWordMemory", "(ResourceTypeKeyword, DecodeKeyword, MinKeyword, MaxKeyword, " 309 "MemTypeKeyword, ReadWriteKeyword, " 310 "AddressGranularity, AddressMinimum, AddressMaximum, AddressTranslation, " 311 "RangeLength, ResourceSourceIndex, ResourceSource, " 312 "DescriptorName, AddressKeyword, " 313 "TypeKeyword)", 314 "QWord Memory Resource Descriptor macro"}, 315 {"QWordSpace", "(ResourceType, ResourceTypeKeyword, DecodeKeyword, " 316 "MinKeyword, MaxKeyword, TypeSpecificFlags, " 317 "AddressGranularity, AddressMinimum, AddressMaximum, AddressTranslation, " 318 "RangeLength, ResourceSourceIndex, ResourceSource, DescriptorName)", 319 "Qword Space Resource Descriptor macro"}, 320 {"RawDataBuffer", "(BufferSize) {ByteList} => RawDataBuffer", 321 "Create a raw data buffer (does not use Buffer AML opcode)"}, 322 {"RefOf", "(Object) => ObjectReference", 323 "Create Reference to an object"}, 324 {"Register", "(AddressSpaceKeyword, RegisterBitWidth, " 325 "RegisterBitOffset, RegisterAddress, " 326 "AccessSize, DescriptorName)", 327 "Generic register Resource Descriptor macro"}, 328 {"Release", "(SyncObject)", 329 "Release a synchronization object"}, 330 {"Reset", "(SyncObject)", 331 "Reset a synchronization object"}, 332 {"ResourceTemplate", "() {ResourceMacroList} => Buffer", 333 "Resource to buffer conversion macro"}, 334 {"Return", "None | () | (ReturnArg)", 335 "Return from method execution"}, 336 {"Revision", "=> Integer", 337 "Constant revision object"}, 338 {"Scope", "(Location) {ObjectList}", 339 "Open named scope "}, 340 {"ShiftLeft", "(Source, ShiftCount, Result) => Integer", 341 "Integer shift value left"}, 342 {"ShiftRight", "(Source, ShiftCount, Result) => Integer", 343 "Integer shift value right"}, 344 {"Signal", "(SyncObject)", 345 "Signal a synchronization object"}, 346 {"SizeOf", "(ObjectName) => Integer", 347 "Get the size of a buffer}, string}, or package"}, 348 {"Sleep", "(Milliseconds)", 349 "Sleep n milliseconds (yields the processor)"}, 350 {"SpiSerialBus", "(DeviceSelection, PolarityKeyword, WireModeKeyword, " 351 "DataBitLength, SlaveModeKeyword, " 352 "ConnectionSpeed, ClockPolarityKeyword, ClockPhaseKeyword, " 353 "ResourceSource, ResourceSourceIndex, " 354 "ResourceTypeKeyword, DescriptorName, RawDataBuffer() {VendorData})", 355 "SPI Serial Bus Connection Resource Descriptor Macro"}, 356 {"Stall", "(Microseconds)", 357 "Delay n microseconds (does not yield the processor)"}, 358 {"StartDependentFn", "(CompatibilityPriority, PerformancePriority) {ResourceList}", 359 "Start Dependent Function Resource Descriptor macro"}, 360 {"StartDependentFnNoPri", "() {ResourceList}", 361 "Start Dependent Function Resource Descriptor macro"}, 362 {"Store", "(Source, Destination) => DataRefObject", 363 "Store object"}, 364 {"Subtract", "(Minuend, Subtrahend, Result) => Integer", 365 "Integer Subtract"}, 366 {"Switch", "(Expression) {CaseTermList}", 367 "Select code to execute based on expression value"}, 368 {"ThermalZone", "(ThermalZoneName) {ObjectList}", 369 "Declare a thermal zone package"}, 370 {"Timer", "=> Integer", 371 "Get 64-bit timer value"}, 372 {"ToBCD", "(Value, Result) => Integer", 373 "Convert Integer to BCD"}, 374 {"ToBuffer", "(Data, Result) => Buffer", 375 "Convert data type to buffer"}, 376 {"ToDecimalString", "(Data, Result) => String", 377 "Convert data type to decimal string"}, 378 {"ToHexString", "(Data, Result) => String", 379 "Convert data type to hexadecimal string"}, 380 {"ToInteger", "(Data, Result) => Integer", 381 "Convert data type to integer"}, 382 {"ToString", "(Source, Length, Result) => String", 383 "Copy ASCII string from buffer"}, 384 {"ToUUID", "(AsciiString) => Buffer", 385 "Convert Ascii string to UUID"}, 386 {"UartSerialBus", "(ConnectionSpeed, ByteLengthKeyword, StopBitsKeyword, " 387 "LinesInUse, EndianKeyword, ParityKeyword, " 388 "FlowControlKeyword, ReceiveBufferSize, TransmitBufferSize, ResourceSource, " 389 "ResourceSourceIndex, ResourceTypeKeyword, DescriptorName, " 390 "RawDataBuffer() {VendorData})", 391 "UART Serial Bus Connection Resource Descriptor Macro"}, 392 {"Unicode", "(String) => Buffer", 393 "String to Unicode conversion macro"}, 394 {"Unload", "(Handle)", 395 "Unload definition block"}, 396 {"VendorLong", "(DescriptorName) {VendorByteList}", 397 "Vendor Resource Descriptor"}, 398 {"VendorShort", "(DescriptorName) {VendorByteList}", 399 "Vendor Resource Descriptor"}, 400 {"Wait", "(SyncObject, TimeoutValue) => Boolean", 401 "Wait on an Event"}, 402 {"While", "(Predicate) {TermList}", 403 "Conditional loop"}, 404 {"WordBusNumber", "(ResourceTypeKeyword, MinKeyword, MaxKeyword, DecodeKeyword, " 405 "AddressGranularity, AddressMinimum, " 406 "AddressMaximum, AddressTranslation, RangeLength, ResourceSourceIndex, " 407 "ResourceSource, DescriptorName)", 408 "Word Bus number Resource Descriptor macro"}, 409 {"WordIO", "(ResourceTypeKeyword, MinKeyword, MaxKeyword, DecodeKeyword, " 410 "RangeTypeKeyword, AddressGranularity, " 411 "AddressMinimum, AddressMaximum, AddressTranslation, RangeLength, " 412 "ResourceSourceIndex, ResourceSource, DescriptorName, TypeKeyword, " 413 "TranslationKeyword)", 414 "Word IO Resource Descriptor macro"}, 415 {"WordSpace", "(ResourceType, ResourceTypeKeyword, DecodeKeyword, MinKeyword, " 416 "MaxKeyword, TypeSpecificFlags, " 417 "AddressGranularity, AddressMinimum, AddressMaximum, AddressTranslation, " 418 "RangeLength, ResourceSourceIndex, ResourceSource, DescriptorName)", 419 "Word Space Resource Descriptor macro"}, 420 {"XOr", "(Source1, Source2, Result) => Integer", 421 "Integer Bitwise Xor"}, 422 {"Zero", "=> Integer", 423 "Constant Zero object (0)"}, 424 {NULL, NULL, NULL} 425 };