Test initialisation of MUIA_List_AdjustWidth and MUIA_List_AdjustHeight, and
[AROS.git] / arch / all-pc / acpica / tests / misc / grammar.asl
blob774fcfdaae17d7067ad11017a064cfedef1fe3ee
1 /*
2  * Some or all of this work - Copyright (c) 2006 - 2013, Intel Corp.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without modification,
6  * are permitted provided that the following conditions are met:
7  *
8  * Redistributions of source code must retain the above copyright notice,
9  * this list of conditions and the following disclaimer.
10  * Redistributions in binary form must reproduce the above copyright notice,
11  * this list of conditions and the following disclaimer in the documentation
12  * and/or other materials provided with the distribution.
13  * Neither the name of Intel Corporation nor the names of its contributors
14  * may be used to endorse or promote products derived from this software
15  * without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
26  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
31 // Grammar.asl - Minimally excercises most ASL constructs
33 // NOTE -- use: iasl -f -of grammar.asl to compile
35 //         This 1) Ignores errors (checks compiler error handling)
36 //              2) Disables constant folding
40 /*******************************************************************************
41 Compilation should look like this:
43 C:\acpica\tests\misc>iasl -f -of grammar.asl
45 Intel ACPI Component Architecture
46 ASL Optimizing Compiler version 20090422 [Apr 22 2009]
47 Copyright (C) 2000 - 2009 Intel Corporation
48 Supports ACPI Specification Revision 3.0a
50 grammar.asl   187:     Name (_NPK, Package (8)
51 Warning  1098 -                 ^ Unknown reserved name (_NPK)
53 grammar.asl   510:     NAME (ESC1, "abcdefg\x00hijklmn")
54 Warning  1042 -                                ^ Invalid Hex/Octal Escape - Non-ASCII or NULL
56 grammar.asl   511:     NAME (ESC2, "abcdefg\000hijklmn")
57 Warning  1042 -                                ^ Invalid Hex/Octal Escape - Non-ASCII or NULL
59 grammar.asl   601:     Method (RCIV, 1)
60 Warning  1087 -                   ^ Not all control paths return a value (RCIV)
62 grammar.asl   608:         RCIV (Subtract (Arg0, 1))
63 Remark   5073 -               ^ Recursive method call (RCIV)
65 grammar.asl   937:     Method (_ERR, 2)
66 Warning  1077 -                   ^ Reserved method has too few arguments (_ERR requires 3)
68 grammar.asl  1377:         Store (0x1234567887654321, QWD2)
69 Warning  1032 -                                    ^ 64-bit integer in 32-bit table, truncating
71 grammar.asl  1379:         if (LNotEqual (Local0, 0x1234567887654321))
72 Warning  1032 -         64-bit integer in 32-bit table, truncating ^
74 grammar.asl  1459:         SizeOf (BUFO)
75 Warning  1105 -                       ^ Result is not used, operator has no effect
77 grammar.asl  1485:         Acquire (MTX2, 1)
78 Warning  1104 -                           ^ Possible operator timeout is ignored
80 grammar.asl  1633:         Add (Local0, Local1)
81 Warning  1105 -                      ^ Result is not used, operator has no effect
83 grammar.asl  1804:     Method (COND)
84 Warning  1087 -                   ^ Not all control paths return a value (COND)
86 grammar.asl  6010:             Name (_HID, "*PNP0A06")
87 Error    4001 -                                     ^ String must be entirely alphanumeric (*PNP0A06)
89 grammar.asl  6461:             Name (_CRS, Buffer(26)  {"\_SB_.PCI2._CRS..........."})
90 Warning  1038 -        Invalid or unknown escape sequence ^
92 grammar.asl  6800:                 And (Local0, 1, Local0) //  Local0 &= 1
93 Error    4050 -                              ^ Method local variable is not initialized (Local0)
95 grammar.asl  6886:             Name (_HID, "*PNP0C0A")     //  Control Method Battey ID
96 Error    4001 -                                     ^ String must be entirely alphanumeric (*PNP0C0A)
98 ASL Input:  grammar.asl - 10254 lines, 322162 bytes, 4810 keywords
99 AML Output: grammar.aml - 43392 bytes, 669 named objects, 4141 executable opcodes
101 Compilation complete. 3 Errors, 12 Warnings, 1 Remarks, 1101 Optimizations
103 ***************************************************************************************************/
105 DefinitionBlock (
106     "grammar.aml",      //Output filename
107     "DSDT",             //Signature
108     0x01,               //DSDT Revision ---> 32-bit table
109     "Intel",            //OEMID
110     "GRMTEST",          //TABLE ID
111     0x20090511          //OEM Revision
112     )
115     External (\ABCD, UnknownObj)
118     /* Device with _STA and _INI */
120     Device (A1)
121     {
122         Method (_STA)
123         {
124             Return (0x0F)
125         }
127         Method (_INI)
128         {
129             Return
130         }
131     }
133     /* Device with no _STA, has _INI */
135     Device (A2)
136     {
137         Method (_INI)
138         {
139             Return
140         }
141     }
143     /* Device with _STA, no _INI */
145     Device (A3)
146     {
147         Method (_STA)
148         {
149             Return (0x0F)
150         }
151     }
153     /* Device with _STA and _INI, but not present */
155     Device (A4)
156     {
157         Method (_STA)
158         {
159             Return (Zero)
160         }
162         Method (_INI)
163         {
164             Return
165         }
166     }
169     /* Resource descriptors */
171     Device (IRES)
172     {
173         Name (PRT0, ResourceTemplate ()
174         {
175             IRQ (Edge, ActiveHigh, Exclusive) {3,4,5,6,7,9,10,11,14,15}
177             StartDependentFn (1,1)
178             {
179                 IRQNoFlags () {0,1,2}
180             }
181             EndDependentFn ()
182         })
184         Method (_CRS, 0, NotSerialized)
185         {
186             Store ("_CRS:", Debug)
187             Store (PRT0, Debug)
188             Return (PRT0)
189         }
191         Method (_SRS, 1, Serialized)
192         {
193             Store ("_SRS:", Debug)
194             Store (Arg0, Debug)
195             Return (Zero)
196         }
197     }
199     Name (_NPK, Package ()
200     {
201         0x1111,
202         0x2222,
203         0x3333,
204         0x4444
205     })
208     Device (RES)
209     {
210         Name (_PRT, Package (0x04)
211         {
212             Package (0x04)
213             {
214                 0x0002FFFF,
215                 Zero,
216                 Zero,
217                 Zero
218             },
220             Package (0x04)
221             {
222                 0x0002FFFF,
223                 One,
224                 Zero,
225                 Zero
226             },
228             Package (0x04)
229             {
230                 0x000AFFFF,
231                 Zero,
232                 Zero,
233                 Zero
234             },
236             Package (0x04)
237             {
238                 0x000BFFFF,
239                 Zero,
240                 Zero,
241                 Zero
242             }
243         })
245         Method (_CRS, 0, Serialized)
246         {
247             Name (PRT0, ResourceTemplate ()
248             {
249                 WordBusNumber (ResourceConsumer, MinFixed, MaxFixed, SubDecode,
250                     0x0000, // Address Space Granularity
251                     0xFFF2, // Address Range Minimum
252                     0xFFF3, // Address Range Maximum
253                     0x0032, // Address Translation Offset
254                     0x0002,,,)
255                 WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
256                     0x0000, // Address Space Granularity
257                     0x0000, // Address Range Minimum
258                     0x00FF, // Address Range Maximum
259                     0x0000, // Address Translation Offset
260                     0x0100,,,)
261                 WordSpace (0xC3, ResourceConsumer, PosDecode, MinFixed, MaxFixed, 0xA5,
262                     0x0000, // Address Space Granularity
263                     0xA000, // Address Range Minimum
264                     0xBFFF, // Address Range Maximum
265                     0x0000, // Address Translation Offset
266                     0x2000,,,)
267                 IO (Decode16, 0x0CF8, 0x0CFF, 0x01, 0x08)
268                 WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
269                     0x0000, // Address Space Granularity
270                     0x0000, // Address Range Minimum
271                     0x0CF7, // Address Range Maximum
272                     0x0000, // Address Translation Offset
273                     0x0CF8,,,
274                     , TypeStatic)
275                 WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
276                     0x0000, // Address Space Granularity
277                     0x0D00, // Address Range Minimum
278                     0xFFFF, // Address Range Maximum
279                     0x0000, // Address Translation Offset
280                     0xF300,,,
281                     , TypeStatic)
282                 DWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
283                     0x00000000, // Address Space Granularity
284                     0x00000000, // Address Range Minimum
285                     0x00000CF7, // Address Range Maximum
286                     0x00000000, // Address Translation Offset
287                     0x00000CF8,,,
288                     , TypeStatic)
289                 DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
290                     0x00000000, // Address Space Granularity
291                     0x000C8000, // Address Range Minimum
292                     0x000EFFFF, // Address Range Maximum
293                     0x00000000, // Address Translation Offset
294                     0x00028000,,,
295                     , AddressRangeMemory, TypeStatic)
296                 DWordSpace (0xC3, ResourceConsumer, PosDecode, MinFixed, MaxFixed, 0xA5,
297                     0x00000000, // Address Space Granularity
298                     0x000C8000, // Address Range Minimum
299                     0x000EFFFF, // Address Range Maximum
300                     0x00000000, // Address Translation Offset
301                     0x00028000,,,)
302                 QWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
303                     0x0000000000000000, // Address Space Granularity
304                     0x0000000000000000, // Address Range Minimum
305                     0x0000000000000CF7, // Address Range Maximum
306                     0x0000000000000000, // Address Translation Offset
307                     0x0000000000000CF8, 0x44, "This is a ResouceSource string",
308                     , TypeStatic)
309                 QWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
310                     0x0000000000000000, // Address Space Granularity
311                     0x0000000000000000, // Address Range Minimum
312                     0x0000000000000CF7, // Address Range Maximum
313                     0x0000000000000000, // Address Translation Offset
314                     0x0000000000000CF8,,,
315                     , TypeStatic)
316                 QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
317                     0x0000000000000000, // Address Space Granularity
318                     0x0000000000100000, // Address Range Minimum
319                     0x00000000FFDFFFFF, // Address Range Maximum
320                     0x0000000000000000, // Address Translation Offset
321                     0x00000000FFD00000,,,
322                     , AddressRangeMemory, TypeStatic)
323                 QWordSpace (0xC3, ResourceConsumer, PosDecode, MinFixed, MaxFixed, 0xA5,
324                     0x0000000000000000, // Address Space Granularity
325                     0x0000000000000000, // Address Range Minimum
326                     0x0000000000000CF7, // Address Range Maximum
327                     0x0000000000000000, // Address Translation Offset
328                     0x0000000000000CF8,,,)
329                 ExtendedIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
330                     0x0000000000000000, // Address Space Granularity
331                     0x0000000000000000, // Address Range Minimum
332                     0x0000000000000CF7, // Address Range Maximum
333                     0x0000000000000000, // Address Translation Offset
334                     0x0000000000000CF8, // Address Length
335                     0x0000000000000000, // Type Specific Attributes
336                     , TypeStatic)
337                 ExtendedMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
338                     0x0000000000000000, // Address Space Granularity
339                     0x0000000000100000, // Address Range Minimum
340                     0x00000000FFDFFFFF, // Address Range Maximum
341                     0x0000000000000000, // Address Translation Offset
342                     0x00000000FFD00000, // Address Length
343                     0x0000000000000000, // Type Specific Attributes
344                     , AddressRangeMemory, TypeStatic)
345                 ExtendedSpace (0xC3, ResourceProducer, PosDecode, MinFixed, MaxFixed, 0xA3,
346                     0x0000000000000000, // Address Space Granularity
347                     0x0000000000100000, // Address Range Minimum
348                     0x00000000FFDFFFFF, // Address Range Maximum
349                     0x0000000000000000, // Address Translation Offset
350                     0x00000000FFD00000, // Address Length
351                     0x0000000000000000) // Type Specific Attributes
352                 IO (Decode16, 0x0010, 0x0020, 0x01, 0x10)
353                 IO (Decode16, 0x0090, 0x00A0, 0x01, 0x10)
354                 FixedIO (0x0061, 0x01)
355                 IRQNoFlags () {2}
356                 DMA (Compatibility, BusMaster, Transfer8_16) {4}
357                 DMA (Compatibility, BusMaster, Transfer8) {2,5,7}
358                 Memory32Fixed (ReadWrite, 0x00100000, 0x00000000)
359                 Memory32Fixed (ReadOnly, 0xFFFE0000, 0x00020000)
360                 Memory32 (ReadOnly, 0x00020000, 0xFFFE0000, 0x00000004, 0x00000200)
361                 Memory24 (ReadOnly, 0x1111, 0x2222, 0x0004, 0x0200)
362                 Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, 0xE, "\\_SB_.TEST")
363                 {
364                     0x00000E01,
365                 }
366                 Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0x6, "xxxx")
367                 {
368                     0x00000601,
369                     0x00000003,
370                     0x00000002,
371                     0x00000001,
372                 }
373                 Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive)
374                 {
375                     0xFFFF0000,
376                     0x00000003,
377                     0x00000002,
378                     0x00000001,
379                     0x00000005,
380                     0x00000007,
381                     0x00000009,
382                 }
383                 VendorShort () {0x01, 0x02, 0x03}
384                 VendorLong ()
385                 {
386                     0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
387                     0x09
388                 }
389                 Register (SystemIO, 0x08, 0x00, 0x00000000000000B2, , R000)
390                 Register (SystemMemory, 0x08, 0x00, 0x00000000000000B2)
391                 StartDependentFnNoPri ()
392                 {
393                     IRQNoFlags () {0,1,2}
394                     IRQ (Level, ActiveLow, Shared) {3,4,5,6,7,9,10,11,14,15}
395                 }
396                 EndDependentFn ()
397             })
398             CreateWordField (PRT0, 0x08, BMIN)
399             CreateByteField (PRT0, R000._ASZ, RSIZ)
400             Store (0x03, BMIN)
401             Return (PRT0)
402         }
404         Method (_PRS, 0, Serialized)
405         {
406             Name (BUF0, ResourceTemplate ()
407             {
408                 StartDependentFn (0x01, 0x02)
409                 {
410                     IO (Decode16, 0x03D8, 0x03F8, 0x01, 0x08)
411                     IRQNoFlags () {4}
412                 }
413                 StartDependentFn (0x02, 0x01)
414                 {
415                     IO (Decode16, 0x03D8, 0x03E8, 0x01, 0x08)
416                     IRQNoFlags () {4}
417                 }
418                 StartDependentFn (0x00, 0x02)
419                 {
420                     IO (Decode16, 0x02E8, 0x02F8, 0x01, 0x08)
421                     IRQNoFlags () {3}
422                 }
423                 StartDependentFn (0x00, 0x02)
424                 {
425                     IO (Decode16, 0x02D8, 0x02E8, 0x01, 0x08)
426                     IRQNoFlags () {3}
427                 }
428                 StartDependentFn (0x02, 0x00)
429                 {
430                     IO (Decode16, 0x0100, 0x03F8, 0x08, 0x08)
431                     IRQNoFlags () {1,3,4,5,6,7,8,10,11,12,13,14,15}
432                 }
433                 EndDependentFn ()
434             })
435             Return (BUF0)
436         }
438         Method (_SRS, 1, Serialized)
439         {
440             Return (Zero)
441         }
442     }
445     Name(\_S0,Package(0x04){
446         0x00,
447         0x00,
448         0x00,
449         0x00
450     })
451     Name(\_S3,Package(0x04){
452         0x05,
453         0x05,
454         0x00,
455         0x00
456     })
457     Name(\_S4,Package(0x04){
458         0x06,
459         0x06,
460         0x00,
461         0x00
462     })
463     Name(\_S5,Package(0x04){
464         0x07,
465         0x07,
466         0x00,
467         0x00
468     })
470 /* Examine this table header (DSDT) */
473     DataTableRegion (HDR, "DSDT", "", "")
474     Field (HDR, AnyAcc, NoLock, Preserve)
475     {
476         SIG,  32,
477         LENG, 32,
478         REV,  8,
479         SUM,  8,
480         OID,  48,
481         OTID, 64,
482         OREV, 32,
483         CID,  32,
484         CREV, 32
485     }
487     Method (SIZE)
488     {
489         If (LLess (REV, 2))
490         {
491             Store ("32-bit table", Debug)
492         }
493         else
494         {
495             Store ("64-bit table", Debug)
496         }
497         Return (0)
498     }
501     Name (SIZE, 0)
503     /* Custom operation region */
505     OperationRegion(MYOP,0x80,0xFD60,0x6)
506     Field(MYOP,ByteAcc,NoLock,Preserve)
507     {
508         MFLD,8
509     }
511     Method (TCOP,, Serialized)
512     {
513         Name (_STR, Unicode ("test"))
514         Store (4, MFLD)
515         Store (MFLD, Local0)
516     }
518     Name (ERRS, 0x0)
520     /* Warning should be issued for premature string termination */
522     NAME (ESC1, "abcdefg\x00hijklmn")
523     NAME (ESC2, "abcdefg\000hijklmn")
524     Name (ESC3, "abc\a\bdef\f\n\r\t\v\x03ffff\432")
527     Name(CRSA,ResourceTemplate()
528     {
529         WORDBusNumber(ResourceProducer,MinFixed,MaxFixed,PosDecode,0x0000,0x0019,0x001D,0x0000,0x0005)
530         WORDIO(ResourceProducer,MinFixed,MaxFixed,PosDecode,NonISAOnlyRanges,0x0000,0xC000,0xCFFF,0x0000,0x1000)
531         DWORDMemory(ResourceProducer,PosDecode,MinFixed,MaxFixed,NonCacheable,ReadWrite,0x00000000,0xD8000000,0xDBFFFFFF,0x00000000,0x04000000)
533     })
534     Name(CRSB,ResourceTemplate()
535     {
536         DWORDMemory(ResourceProducer,PosDecode,MinFixed,MaxFixed,NonCacheable,ReadWrite,0x00000000,0xD8000000,0xDBFFFFFF,0x00000000,0x04000000)
538     })
540     Name(CRSC,ResourceTemplate()
541     {
542         VendorShort () {0x1, 0x2, 0x3}
543     })
544     Name(CRSD,ResourceTemplate()
545     {
546         VendorLong (VNDL) {0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9}
547     })
549     Name(CRSE,ResourceTemplate()
550     {
551         IRQNoFlags(){3,4,10,11}
552         IRQNoFlags(xxxt){3,4,10,11}
553     })
554     Name(CRSR, Buffer (Add (SizeOf(CRSA),SizeOf(CRSB))){})
555     Method(_CRS,0,NotSerialized)
556     {
557         Return(CRSR)
558     }
561     //
562     // Unnamed scope
563     //
564     Scope (\)
565     {
566         Name(Bxxx,0xFFFFFFFF)
567     }
569     Name (LANS, 0x0)
571     PowerResource(LANP,1,0)
572     {
573         Method(_STA){
574             If(LEqual(And(LANS,0x30),0x30)){
575                 Return(One)
576             } Else {
577                 Return(Zero)
578             }
579         }
580         Method(_ON){
581             If(LNot(_STA())){
582                 Store (0x30, LANS)
583             }
584         }
585         Method(_OFF){
586             If(_STA()){
587                 Store (0, LANS)
588             }
589         }
590     }
593     /* Can a method define another method? */
595     /**********************************
596     Method (TASK, 2, SERIALIZED)
597     {
598         Sleep (100)
600         Method (TAS2)
601         {
602             Sleep (100)
603         }
605         TAS2()
606         Return
608     }
609     ************************************/
611     /* A recursive method */
613     Method (RCIV, 1)
614     {
615         Store (Arg0, Debug)
616         If (Lequal (Arg0, 0))
617         {
618             Return ()
619         }
620         RCIV (Subtract (Arg0, 1))
621     }
623     Method (RTOP)
624     {
625         RCIV (100)
626     }
629     Scope(\_PR)
630     {
631         Processor(CPU0,0x0,0xFFFFFFFF,0x0) {}
632     }
634     Name(B1TP,0xFFFFFFFF)
636     Name(B2TP,0xFFFFFFFF)
637     Name(ADPS,0xFFFFFFFF)
638     Name(B1PS,0xFFFFFFFF)
639     Name(B1RS,0xFFFFFFFF)
640     Name(B1CS,0xFFFFFFFF)
641     Name(B2PS,0xFFFFFFFF)
642     Name(B2RS,0xFFFFFFFF)
643     Name(B2CS,0xFFFFFFFF)
644     Name(B1DC,3000)
645     Name(B2DC,2600)
646     Name(B1LF,3000)
647     Name(B2LF,2600)
648     Name(BPIF,0)
649     Name(PBLL,0)
651     Name(RBIF,Package()
652     {
653         0x1,
654         2200,
655         2200,
656         0x1,
657         10800,
658         0,
659         0,
660         1,
661         1,
662         "CA54200-5003/5",
663         "1",
664         "LION",
665         "Fujitsu"
666     })
668     Method(SMWE, 4)
669     {
670        return(ONES)
671     }
673     Method(SMRE, 4)
674     {
675        return(ONES)
676     }
679     Method(RDBT,0,Serialized){
680         If(LNot(SMWE(0x09,0x15,1,1))){
681                     Store(0x18,Local2)
682             }
683     }
685     Scope(_SB)
686     {
688         Name (SBUF, Buffer (128) {})
690         CreateBitField (SBUF, 3, BITY)
691         CreateByteField (SBUF, 1, BYTY)
692         CreateWordField (SBUF, 2, WRDZ)
693         CreateDwordField (SBUF, 4, DWDZ)
694         CreateQwordField (SBUF, 8, QWDZ)
695         CreateField (SBUF, 128, 12, FLDZ)
696         CreateField (SBUF, 148, 96, FLDY)
697         CreateField (SBUF, 148, 96, \_SB_.FLDW)
699         Method (_INI)
700         {
701             CreateField (\_SB_.SBUF, 148, 96, FLDV)
702         }
705         Device(PCI0)
706         {
707             Name(_HID,EISAID("PNP0A03"))
708             Name(_ADR,0x0)
710             Method(_CRS,, Serialized)
711             {
712                 Name(PRT0, ResourceTemplate() {
713                     WORDBusNumber(                          // Bus number resource(0)
714                             ResourceConsumer,               // bit 0 of general flags is 1
715                             MinFixed,                       // Range is notfixed
716                             MaxFixed,                       // Range is not fixed
717                             SubDecode,                      // SubDecode
718                             0x0000,                           // Granularity
719                             0xfff1,                           // Min
720                             0xfff2,                           // Max
721                             0x0032,                           // Translation
722                             0x0002,,,                         // Range Length
723                             BUS0
724                     ) } )// PRT0
726                 CreateWordField(PRT0, BUS0._MIN, BMIN)          //Minimum bus number suported under this bridge.
728                 Store(3, BMIN)
729                 Return(PRT0)
731             } // _CRS
733             Method(_SRS)
734             {
735                 Return ()
736             }
738             Device(EIO)
739             {
740                 OperationRegion(FJIO,SystemIO,0xFD60,0x6)
741                     Field(FJIO,ByteAcc,NoLock,Preserve)
742                     {
743                         GIDX,8,
745                         GDTA,8,
747                         PIDX,8,
749                         PDTA,8,
751                         SIDX,8,
753                         SDTA,8
754                     }
755                     IndexField(GIDX,GDTA,ByteAcc,NoLock,Preserve)
756                     {
757                         Offset(0x2),
758                          ,5,
759                         VGAS,2,
760                         Offset(0x4),
761                          ,4,
762                         DCKE,1,
763                         Offset(0x5),
764                          ,6,
765                         ACPW,1,
767                         Offset(0xA),
768                         B1P,1,
770                         B2P,1,
772                         B1C,1,
774                         B2C,1,
776                         B1ER,1,
778                         B2ER,1,
780                         Offset(0xB),
781                         B1CP,8,
783                         B2CP,8,
785                         BCP,8,
787                         B1VH,8,
789                         B1VL,8,
791                         B2VH,8,
793                         B2VL,8,
795                         B1TM,8,
797                         B2TM,8,
799                         B1CH,8,
801                         B1CL,8,
803                         B2CH,8,
805                         B2CL,8
806                     }
807                 }
808             }
809         }
811         Method(RDBT,3,Serialized){
812             Store(0x1FFF,Local1)
813             If( Arg0 ){
814                 Store(0x2FFF,Local1)
815             }
816             Store(0x18,Local2)
817             If( Arg1 ){
818                 Store(0x10,Local2)
819             }
820             If(LNot(SMRE(0x09,0x15,1,RefOf(Local0)))){
821                 If(LNot(SMWE(0x08,0x14,1,Local1))){
822                     If(LNot(SMRE(0x09,0x17,Local2,RefOf(Local3)))){
823                         Store(Local1,Arg2)
824                     }
825                 }
826                 Or(Local0,0xFFF,Local0)
827                 SMWE(0x08,0x14,1,Local0)
828             }
829         }
830         Method(MKWD,2)
831         {
832             If(And(Arg1,0x80)) {
833                 Or(0xFFFF0000,Arg0,Local0)
834                 Or(Local0,ShiftLeft(Arg1,8),Local0)
835                 Subtract(Zero,Local0,Local0)
836             } else {
837                 Store(Arg0,Local0)
838                 Or(Local0,ShiftLeft(Arg1,8),Local0)
839             }
840             Return(Local0)
841         }
843         Device(CMB1)
844         {
845             Name(_HID,EISAID("PNP0C0A"))
846             Name(_UID,0x1)
847             Alias(\_SB.PCI0.EIO.B1P,\_SB_.PCI0.XXXX)
848             Alias(\_SB.PCI0.EIO.B1P,B1P)
849             Alias(\_SB.PCI0.EIO.B1C,B1C)
850             Alias(\_SB.PCI0.EIO.B1CH,B1CH)
851             Alias(\_SB.PCI0.EIO.B1CL,B1CL)
852             Alias(\_SB.PCI0.EIO.B1VH,B1VH)
853             Alias(\_SB.PCI0.EIO.B1VL,B1VL)
854             Alias(\_SB.PCI0.EIO.B1CP,B1CP)
856             Method(_INI)
857                         {
858                 Store(B1P, B1PS)
859                 Store(B1CP,B1RS)
860                 Store(B1C, B1CS)
861             }
863             Method(_BIF){
864                 RDBT(Zero,Zero,RefOf(B1DC))
865                 RDBT(Zero,One,RefOf(B1LF))
866                 Store(B1DC,Index(RBIF,1))
867                 Store(B1LF,Index(RBIF,2))
868                 Store("CA54200-5003/5",Index(RBIF,9))
869                 Store("1",Index(RBIF,10))
870                 Return(RBIF)
871             }
873             Method(_BST,, Serialized) {
875                 _INI()
877                 Store(Zero,Local0)
879                 if (LAnd(B1P,LNot(B1C))){
880                     Or(Local0,1,Local0)
881                 }
883                 if (LAnd(B1P,B1C)) {
884                     Or(Local0,2,Local0)
885                 }
887                 if (LLessEqual(B1CP,1)) {
888                     Or(Local0,4,Local0)
889                 }
891                 Store(MKWD(B1CL,B1CH),Local1)
893                 Store(Divide(Add(Multiply(B1CP,B1LF),99),100),Local2)
895                 Store(MKWD(B1VL,B1VH),Local3)
897                 Name(STAT,Package(4){})
898                 Store(Local0,Index(STAT,0))
899                 Store(Local1,Index(STAT,1))
900                 Store(Local2,Index(STAT,2))
901                 Store(Local3,Index(STAT,3))
903                 If(LNot(BPIF)){
904 //                    \_SB.PCI0.EIO.EC0.IECT()
905 //                    \_SB.PCI0.EIO.EC0.SECT()
906                     Store(One,BPIF)
907                 }
908                 return(STAT)
909             }
911         }
913     Device (DEV1)
914     {
915     }
917     Scope(\_TZ)
918     {
919         ThermalZone(TZ1)
920         {
921             Name(_PSL,Package()
922             {
923                 \_PR.CPU0
924             })
925         }
926     }
928     Method (TZ2, 0, SERIALIZED)
929     {
930         Name(_PSL,Package()
931         {
932             \_PR.CPU0
933         })
935         Return (_PSL)
936     }
938     ThermalZone (THM1)
939     {
940     }
942     Method (NOTI)
943     {
944         Notify (\DEV1, 0)
945         Notify (\THM1, 0)
946         Notify (\_PR.CPU0, 0)
947     }
949     Method (_ERR, 2)
950     {
951         Increment (ERRS)
952         Store ("Run-time exception:", Debug)
953         Store (Arg0, Debug)
954         Store (Arg1, Debug)
956         Return (0)          // Map error to AE_OK
957     }
959     Method (DIV0)
960     {
961         Store (1, Local0)
962         Store (0, Local1)
963         Divide (Local0, Local1, Local3)
965         Store ("DIV0 - noabort", Debug)
966     }
968     Method (ERR_, 1)
969     {
970         if (LEqual (Arg0, 0))
971         {
972             Store ("+*+*+*+* MTHD_ERROR: Results not equal!", Debug)
973         }
974         if (LEqual (Arg0, 1))
975         {
976             Store ("+*+*+*+* MTHD_ERROR: Numeric result is incorrect!", Debug)
977         }
978         if (LEqual (Arg0, 2))
979         {
980             Store ("+*+*+*+* MTHD_ERROR: Operand was clobbered!", Debug)
981         }
983         Notify (DEV1, Arg0)
984         Increment (ERRS)
985     }
987     Method (R226, 2)
988     {
989     }
990     Method (R225, 2)
991     {
992         R226 (Arg0, Arg1)
993     }
994     Method (R224, 2)
995     {
996         R225 (Arg1, Arg0)
997     }
998     Method (R223, 2)
999     {
1000         R224 (Arg0, Arg1)
1001     }
1002     Method (R222, 2)
1003     {
1004         R223 (Arg1, Arg0)
1005     }
1006     Method (R111)
1007     {
1008         Store (0x01010101, Local0)
1009         R222 (0xABAB, Local0)
1010         Store (Local0, Local1)
1011     }
1013     Method (MAIN)
1014     {
1016 //      SIZE()
1017         Store (NUM1(), Local0)
1018         \CMB1._BST()
1019         RDBT(1,2,3)
1020         OBJ1(1)
1021         OBJ2(2)
1022         CHEK()
1023         RETZ()
1024         BITZ()
1025         LOGS()
1026         REFS()
1027         COND()
1028         TZ2()
1030         //
1031         // iPCO tests added
1032         //
1033         Store (\IFEL.TEST(), Local0)
1034         if (LGreater (Local0, 0))
1035         {
1036             ERR_ (1)
1037             Return(Local0)
1038         }
1040         Store (\NOSV.TEST(), Local0)
1041         if (LGreater (Local0, 0))
1042         {
1043             ERR_ (1)
1044             Return(Local0)
1045         }
1047         Store (\IDXF.TEST(), Local0)
1048         if (LGreater (Local0, 0))
1049         {
1050             ERR_ (1)
1051             Return(Local0)
1052         }
1054         Store (\_SB_.NSTL.TEST(), Local0)
1055         if (LGreater (Local0, 0))
1056         {
1057             ERR_ (1)
1058             Return(Local0)
1059         }
1061         Store (\RTBF.TEST(), Local0)
1062         if (LGreater (Local0, 0))
1063         {
1064             ERR_ (1)
1065             Return(Local0)
1066         }
1068         Store (\_SB_.RTLV.TEST(), Local0)
1069         if (LGreater (Local0, 0))
1070         {
1071             ERR_ (1)
1072             Return(Local0)
1073         }
1075         Store (\_SB_.RETP.TEST(), Local0)
1076         if (LGreater (Local0, 0))
1077         {
1078             ERR_ (1)
1079             Return(Local0)
1080         }
1082         Store (\WHLR.TEST(), Local0)
1083         if (LGreater (Local0, 0))
1084         {
1085             ERR_ (1)
1086             Return(Local0)
1087         }
1089         Store (\ANDO.TEST(), Local0)
1090         if (LGreater (Local0, 0))
1091         {
1092             ERR_ (1)
1093             Return(Local0)
1094         }
1096         Store (\BRKP.TEST(), Local0)
1097         if (LGreater (Local0, 0))
1098         {
1099             ERR_ (1)
1100             Return(Local0)
1101         }
1103         Store (\ADSU.TEST(), Local0)
1104         if (LGreater (Local0, 0))
1105         {
1106             ERR_ (1)
1107             Return(Local0)
1108         }
1110         Store (\INDC.TEST(), Local0)
1111         if (LGreater (Local0, 0))
1112         {
1113             ERR_ (1)
1114             Return(Local0)
1115         }
1117         Store (\LOPS.TEST(), Local0)
1118         if (LGreater (Local0, 0))
1119         {
1120             ERR_ (1)
1121             Return(Local0)
1122         }
1124         Store (\FDSO.TEST(), Local0)
1125         if (LGreater (Local0, 0))
1126         {
1127             ERR_ (1)
1128             Return(Local0)
1129         }
1131         Store (\MLDV.TEST(), Local0)
1132         if (LGreater (Local0, 0))
1133         {
1134             ERR_ (1)
1135             Return(Local0)
1136         }
1138         Store (\NBIT.TEST(), Local0)
1139         if (LGreater (Local0, 0))
1140         {
1141             ERR_ (1)
1142             Return(Local0)
1143         }
1145         Store (\SHFT.TEST(), Local0)
1146         if (LGreater (Local0, 0))
1147         {
1148             ERR_ (1)
1149             Return(Local0)
1150         }
1152         Store (\XORD.TEST(), Local0)
1153         if (LGreater (Local0, 0))
1154         {
1155             ERR_ (1)
1156             Return(Local0)
1157         }
1159         Store (\CRBF.TEST(), Local0)
1160         if (LGreater (Local0, 0))
1161         {
1162             ERR_ (1)
1163             Return(Local0)
1164         }
1166         Store (\IDX4.TEST(), Local0)
1167         if (LGreater (Local0, 0))
1168         {
1169             ERR_ (1)
1170             Return(Local0)
1171         }
1173         Store (\EVNT.TEST(), Local0)
1174         if (LGreater (Local0, 0))
1175         {
1176             ERR_ (1)
1177             Return(Local0)
1178         }
1180         Store (\SZLV.TEST(), Local0)
1181         if (LGreater (Local0, 0))
1182         {
1183             ERR_ (1)
1184             Return(Local0)
1185         }
1187         Store (\_SB_.BYTF.TEST(), Local0)
1188         if (LGreater (Local0, 0))
1189         {
1190             ERR_ (1)
1191             Return(Local0)
1192         }
1194         Store (\DWDF.TEST(), Local0)
1195         if (LGreater (Local0, 0))
1196         {
1197             ERR_ (1)
1198             Return(Local0)
1199         }
1201         Store (\DVAX.TEST(), Local0)
1202         if (LGreater (Local0, 0))
1203         {
1204             ERR_ (1)
1205             Return(Local0)
1206         }
1208         Store (\IDX6.TEST(), Local0)
1209         if (LGreater (Local0, 0))
1210         {
1211             ERR_ (1)
1212             Return(Local0)
1213         }
1215         Store (\IDX5.TEST(), Local0)
1216         if (LGreater (Local0, 0))
1217         {
1218             ERR_ (1)
1219             Return(Local0)
1220         }
1222         Store (\_SB_.IDX0.TEST(), Local0)
1223         if (LGreater (Local0, 0))
1224         {
1225             ERR_ (1)
1226             Return(Local0)
1227         }
1229         Store (\_SB_.IDX3.TEST(), Local0)
1230         if (LGreater (Local0, 0))
1231         {
1232             ERR_ (1)
1233             Return(Local0)
1234         }
1236         Store (\IDX7.TEST(), Local0)
1237         if (LGreater (Local0, 0))
1238         {
1239             ERR_ (1)
1240             Return(Local0)
1241         }
1243         Store (\MTCH.TEST(), Local0)
1244         if (LGreater (Local0, 0))
1245         {
1246             ERR_ (1)
1247             Return(Local0)
1248         }
1250         Store (\WHLB.TEST(), Local0)
1251         if (LGreater (Local0, 0))
1252         {
1253             ERR_ (1)
1254             Return(Local0)
1255         }
1257         Store (\_SB_.IDX2.TEST(), Local0)
1258         if (LGreater (Local0, 0))
1259         {
1260             ERR_ (1)
1261             Return(Local0)
1262         }
1264         Store (\SIZO.TEST(), Local0)
1265         if (LGreater (Local0, 0))
1266         {
1267             ERR_ (1)
1268             Return(Local0)
1269         }
1271         Store (\_SB_.SMIS.TEST(), Local0)
1272         if (LGreater (Local0, 0))
1273         {
1274             ERR_ (1)
1275             Return(Local0)
1276         }
1278         if (LGreater (ERRS, 0))
1279         {
1280             Store ("****** There were errors during the execution of the test ******", Debug)
1281         }
1283         //
1284         // Last Test
1285         //
1287         Return(0) // Success
1288     }
1291     Method (OBJ1, 1, SERIALIZED)
1292     {
1294         Store (3, Local0)
1295         Name(BUFR, Buffer (Local0) {})
1296         Name(BUF1, Buffer (4) {1,2,3,4})
1297         Name(BUF2, Buffer (4) {})
1299         Store (BUF1, BUF2)
1300         Mutex (MTX1, 4)
1302         Alias (MTX1, MTX2)
1303     }
1306     Mutex (MTXT, 0)
1307     Mutex (MTXX, 0)
1309     /*
1310      * Field Creation
1311      */
1313     Method (FLDS,, Serialized)
1314     {
1315         Store ("++++++++ Creating BufferFields", Debug)
1316         Name (BUF2, Buffer (128) {})
1318         CreateBitField (BUF2, 3, BIT2)
1319         CreateByteField (BUF2, 1, BYT2)
1320         CreateWordField (BUF2, 2, WRD2)
1321         CreateDwordField (BUF2, 4, DWD2)
1322         CreateQwordField (BUF2, 8, QWD2)
1323         CreateField (BUF2, 128, 12, FLD2)
1324         CreateField (BUF2, 148, 96, FLD3)
1326         Store (0x1, BIT2)
1327         Store (BIT2, Local0)
1328         if (LNotEqual (Local0, 0x1))
1329         {
1330             ERR_ (1)
1331         }
1332         else
1333         {
1334             Store (DerefOf (Index (BUF2, 0)), Local0)
1335             if (LNotEqual (Local0, 0x08))
1336             {
1337                 ERR_ (1)
1338             }
1339             else
1340             {
1341                 Store ("++++++++ Bit BufferField I/O PASS", Debug)
1342             }
1343         }
1345         Store (0x1A, BYT2)
1346         Store (BYT2, Local0)
1347         if (LNotEqual (Local0, 0x1A))
1348         {
1349             ERR_ (1)
1350         }
1351         else
1352         {
1353             Store ("++++++++ Byte BufferField I/O PASS", Debug)
1354         }
1356         Store (0x1234, WRD2)
1357         Store (WRD2, Local0)
1358         if (LNotEqual (Local0, 0x1234))
1359         {
1360             ERR_ (1)
1361         }
1362         else
1363         {
1364             Store ("++++++++ Word BufferField I/O PASS", Debug)
1365         }
1367         Store (0x123, FLD2)
1368         Store (FLD2, Local0)
1369         if (LNotEqual (Local0, 0x123))
1370         {
1371             ERR_ (1)
1372         }
1373         else
1374         {
1375             Store ("++++++++ 12-bit BufferField I/O PASS", Debug)
1376         }
1378         Store (0x12345678, DWD2)
1379         Store (DWD2, Local0)
1380         if (LNotEqual (Local0, 0x12345678))
1381         {
1382             ERR_ (1)
1383         }
1384         else
1385         {
1386             Store ("++++++++ Dword BufferField I/O PASS", Debug)
1387         }
1389         Store (0x1234567887654321, QWD2)
1390         Store (QWD2, Local0)
1391         if (LNotEqual (Local0, 0x1234567887654321))
1392         {
1393             ERR_ (1)
1394         }
1395         else
1396         {
1397             Store ("++++++++ Qword BufferField I/O PASS", Debug)
1398         }
1399     }
1402     /* Field execution */
1404     Method (FLDX,, Serialized)
1405     {
1406         Field (\_SB_.MEM.SMEM, AnyAcc, NoLock, Preserve)
1407         {   //  Field:  SMEM overlay using 32-bit field elements
1408             SMD0,   32, //  32-bits
1409             SMD1,   32,     //  32-bits
1410             SMD2,   32,     //  32-bits
1411             SMD3,   32  //  32-bits
1412         }   //  Field:  SMEM overlay using 32-bit field elements
1413         Field (\_SB_.MEM.SMEM, AnyAcc, NoLock, Preserve)
1414         {   //  Field:  SMEM overlay using greater than 32-bit field elements
1415             SME0,   69, //  larger than an integer (32 or 64)
1416             SME1,   97  //  larger than an integer
1417         }   //  Field:  SMEM overlay using greater than 32-bit field elements
1418     }
1421     Method (MTX_, )
1422     {
1423         /* Test "Force release" of mutex on method exit */
1425         Acquire (MTXT, 0xFFFF)
1426         Acquire (MTXX, 0xFFFF)
1428         Store ("++++++++ Acquiring Mutex MTX2", Debug)
1429         Acquire (_GL_, 0xFFFF)
1432         Store ("++++++++ Releasing Mutex MTX2", Debug)
1433         Release (_GL_)
1434     }
1437     Method (OBJ2, 1, Serialized)
1438     {
1439         Store ("++++++++ Creating Buffer BUFO", Debug)
1440         Name (BUFO, Buffer (32) {})
1442         Store ("++++++++ Creating OpRegion OPR2", Debug)
1443         OperationRegion (OPR2, SystemMemory, Arg0, 256)
1445         Store ("++++++++ Creating Field(s) in OpRegion OPR2", Debug)
1446         Field (OPR2, ByteAcc, NoLock, Preserve)
1447         {
1448             IDX2, 8,
1449             DAT2, 8,
1450             BNK2, 4
1451         }
1453         Store ("++++++++ Creating BankField BNK2 in OpRegion OPR2", Debug)
1454         //
1455         // mcw 3/20/00 - changed FET0, 4, FET1, 3 to FET0, 1, FET1, 1
1456         //
1457         BankField (OPR2, BNK2, 0, ByteAcc, NoLock, Preserve)
1458         {
1459             FET0, 4,
1460             FET1, 3
1461         }
1463         Store ("++++++++ Creating IndexField", Debug)
1464         IndexField (IDX2, DAT2, ByteAcc, NoLock, Preserve)
1465         {
1466             FET2, 4,
1467             FET3, 3
1468         }
1470         Store ("++++++++ SizeOf (BUFO)", Debug)
1471         SizeOf (BUFO)
1473         Store ("++++++++ Store (SizeOf (BUFO), Local0)", Debug)
1474         Store (SizeOf (BUFO), Local0)
1476         Store ("++++++++ Concatenate (\"abd\", \"def\", Local0)", Debug)
1477         Concatenate ("abd", "def", Local0)
1478         Store (Local0, Debug)
1480         Store ("++++++++ Concatenate (\"abd\", 0x7B, Local0)", Debug)
1481         Concatenate ("abd", 0x7B, Local0)
1482         Store (Local0, Debug)
1484         Store ("++++++++ Creating Event EVT2", Debug)
1485         Event (EVT2)
1487         Store ("++++++++ Creating Mutex MTX2", Debug)
1488         Mutex (MTX2, 0)
1490         Store ("++++++++ Creating Alias MTXA to MTX2", Debug)
1491         Alias (MTX2, MTXA)
1493         Store ("++++++++ Acquiring Mutex MTX2", Debug)
1494         Acquire (MTX2, 0xFFFF)
1496         Store ("++++++++ Acquiring Mutex MTX2 (2nd acquire)", Debug)
1497         Acquire (MTX2, 1)
1499         Store ("++++++++ Releasing Mutex MTX2", Debug)
1500         Release (MTX2)
1502         // Type 1 opcodes
1504         Store ("++++++++ Signalling Event EVT2", Debug)
1505         Signal (EVT2)
1507         Store ("++++++++ Resetting Event EVT2", Debug)
1508         Reset (EVT2)
1510         Store ("++++++++ Signalling Event EVT2", Debug)
1511         Signal (EVT2)
1513         Store ("++++++++ Waiting Event EVT2", Debug)
1514         Wait (EVT2, 0xFFFF)
1516         Store ("++++++++ Sleep", Debug)
1517         Sleep (100)
1519         Store ("++++++++ Stall", Debug)
1520         Stall (254)
1522         Store ("++++++++ NoOperation", Debug)
1523         Noop
1525         // Type 2 Opcodes
1527         Store ("++++++++ Return from Method OBJ2", Debug)
1528         return (4)
1529     }
1532     Method (NUM1, 0)
1533     {
1534         /* ADD */
1536         Store ("++++++++ Add (0x12345678, 0x11111111, Local0)", Debug)
1537         Add (0x12345678, 0x11111111, Local0)
1539         Store ("++++++++ Store (Add (0x12345678, 0x11111111), Local1)", Debug)
1540         Store (Add (0x12345678, 0x11111111), Local1)
1542         Store ("++++++++ Checking result from ADD", Debug)
1543         if (LNotEqual (Local0, Local1))
1544         {
1545             ERR_ (0)
1546         }
1549         /* SUBTRACT */
1551         Store ("++++++++ Subtract (0x87654321, 0x11111111, Local4)", Debug)
1552         Subtract (0x87654321, 0x11111111, Local4)
1554         Store ("++++++++ Store (Subtract (0x87654321, 0x11111111), Local5)", Debug)
1555         Store (Subtract (0x87654321, 0x11111111), Local5)
1557         Store ("++++++++ Checking result from SUBTRACT", Debug)
1558         if (LNotEqual (Local4, Local5))
1559         {
1560             ERR_ (0)
1561         }
1564         /* MULTIPLY */
1566         Store ("++++++++ Multiply (33, 10, Local6)", Debug)
1567         Multiply (33, 10, Local6)
1569         Store ("++++++++ Store (Multiply (33, 10), Local7)", Debug)
1570         Store (Multiply (33, 10), Local7)
1573         Store ("++++++++ Checking result from MULTIPLY", Debug)
1574         if (LNotEqual (Local6, Local7))
1575         {
1576             ERR_ (0)
1577         }
1580         /* DIVIDE */
1582         Store ("++++++++ Divide (100, 9, Local1, Local2)", Debug)
1583         Divide (100, 9, Local1, Local2)
1585         Store ("++++++++ Store (Divide (100, 9), Local3)", Debug)
1586         Store (Divide (100, 9), Local3)
1588         Store ("++++++++ Checking (quotient) result from DIVIDE", Debug)
1589         if (LNotEqual (Local2, Local3))
1590         {
1591             ERR_ (0)
1592         }
1595         /* INCREMENT */
1597         Store ("++++++++ Increment (Local0)", Debug)
1598         Store (1, Local0)
1599         Store (2, Local1)
1600         Increment (Local0)
1602         Store ("++++++++ Checking result from INCREMENT", Debug)
1603         if (LNotEqual (Local0, Local1))
1604         {
1605             ERR_ (0)
1606         }
1609         /* DECREMENT */
1611         Store ("++++++++ Decrement (Local0)", Debug)
1612         Store (2, Local0)
1613         Store (1, Local1)
1614         Decrement (Local0)
1616         Store ("++++++++ Checking result from DECREMENT", Debug)
1617         if (LNotEqual (Local0, Local1))
1618         {
1619             ERR_ (0)
1620         }
1623         /* TOBCD */
1624         /* FROMBCD */
1626         Store ("++++++++ ToBCD (0x1234, Local5)", Debug)
1627         ToBCD (0x1234, Local5)
1629         Store ("++++++++ FromBCD (Local5, Local6)", Debug)
1630         FromBCD (Local5, Local6)
1632         Store ("++++++++ Return (Local6)", Debug)
1633         Return (Local6)
1634     }
1637     Method (CHEK)
1638     {
1640         Store (3, Local0)
1641         Store (3, Debug)
1642         Store (Local0, Debug)
1643         Store (7, Local1)
1645         Add (Local0, Local1)
1646         if (LNotEqual (Local0, 3))
1647         {
1648             ERR_ (2)
1649         }
1650         if (LNotEqual (Local1, 7))
1651         {
1652             ERR_ (2)
1653         }
1656         Add (Local0, Local1, Local2)
1657         if (LNotEqual (Local0, 3))
1658         {
1659             ERR_ (2)
1660         }
1661         if (LNotEqual (Local1, 7))
1662         {
1663             ERR_ (2)
1664         }
1665     }
1668     Method (RET1)
1669     {
1670         Store (3, Local0)
1671         Return (Local0)
1672     }
1674     Method (RET2)
1675     {
1676         Return (RET1())
1677     }
1679     Method (RETZ)
1680     {
1681         RET2 ()
1682     }
1685     Method (BITZ)
1686     {
1687         Store ("++++++++ FindSetLeftBit (0x00100100, Local0)", Debug)
1688         FindSetLeftBit (0x00100100, Local0)
1689         if (LNotEqual (Local0, 21))
1690         {
1691             ERR_ (1)
1692         }
1694         Store ("++++++++ FindSetRightBit (0x00100100, Local1)", Debug)
1695         FindSetRightBit (0x00100100, Local1)
1696         if (LNotEqual (Local1, 9))
1697         {
1698             ERR_ (1)
1699         }
1701         Store ("++++++++ And (0xF0F0F0F0, 0x11111111, Local2)", Debug)
1702         And (0xF0F0F0F0, 0x11111111, Local2)
1703         if (LNotEqual (Local2, 0x10101010))
1704         {
1705             ERR_ (1)
1706         }
1708         Store ("++++++++ NAnd (0xF0F0F0F0, 0x11111111, Local3)", Debug)
1709         NAnd (0xF0F0F0F0, 0x11111111, Local3)
1710         if (LNotEqual (Local3, 0xEFEFEFEF))
1711         {
1712             ERR_ (1)
1713         }
1715         Store ("++++++++ Or (0x11111111, 0x22222222, Local4)", Debug)
1716         Or (0x11111111, 0x22222222, Local4)
1717         if (LNotEqual (Local4, 0x33333333))
1718         {
1719             ERR_ (1)
1720         }
1722         Store ("++++++++ NOr (0x11111111, 0x22222222, Local5)", Debug)
1723         NOr (0x11111111, 0x22222222, Local5)
1724         if (LNotEqual (Local5, 0xCCCCCCCC))
1725         {
1726             ERR_ (1)
1727         }
1729         Store ("++++++++ XOr (0x11113333, 0x22222222, Local6)", Debug)
1730         XOr (0x11113333, 0x22222222, Local6)
1731         if (LNotEqual (Local6, 0x33331111))
1732         {
1733             ERR_ (1)
1734         }
1736         Store ("++++++++ ShiftLeft (0x11112222, 2, Local7)", Debug)
1737         ShiftLeft (0x11112222, 2, Local7)
1738         if (LNotEqual (Local7, 0x44448888))
1739         {
1740             ERR_ (1)
1741         }
1743         Store ("++++++++ ShiftRight (Local7, 2, Local7)", Debug)
1744         ShiftRight (Local7, 2, Local7)
1745         if (LNotEqual (Local7, 0x11112222))
1746         {
1747             ERR_ (1)
1748         }
1751         Store ("++++++++ Not (Local0, Local1)", Debug)
1752         Store (0x22224444, Local0)
1753         Not (Local0, Local1)
1754         if (LNotEqual (Local0, 0x22224444))
1755         {
1756             ERR_ (2)
1757         }
1759         if (LNotEqual (Local1, 0xDDDDBBBB))
1760         {
1761             ERR_ (1)
1762         }
1764         Return (Local7)
1765     }
1768     Method (LOGS)
1769     {
1771         Store ("++++++++ Store (LAnd (0xFFFFFFFF, 0x11111111), Local0)", Debug)
1772         Store (LAnd (0xFFFFFFFF, 0x11111111), Local0)
1774         Store ("++++++++ Store (LEqual (0xFFFFFFFF, 0x11111111), Local)", Debug)
1775         Store (LEqual (0xFFFFFFFF, 0x11111111), Local1)
1777         Store ("++++++++ Store (LGreater (0xFFFFFFFF, 0x11111111), Local2)", Debug)
1778         Store (LGreater (0xFFFFFFFF, 0x11111111), Local2)
1780         Store ("++++++++ Store (LGreaterEqual (0xFFFFFFFF, 0x11111111), Local3)", Debug)
1781         Store (LGreaterEqual (0xFFFFFFFF, 0x11111111), Local3)
1783         Store ("++++++++ Store (LLess (0xFFFFFFFF, 0x11111111), Local4)", Debug)
1784         Store (LLess (0xFFFFFFFF, 0x11111111), Local4)
1786         Store ("++++++++ Store (LLessEqual (0xFFFFFFFF, 0x11111111), Local5)", Debug)
1787         Store (LLessEqual (0xFFFFFFFF, 0x11111111), Local5)
1789         Store ("++++++++ Store (LNot (0x31313131), Local6)", Debug)
1790         Store (0x00001111, Local6)
1791         Store (LNot (Local6), Local7)
1792         if (LNotEqual (Local6, 0x00001111))
1793         {
1794             ERR_ (2)
1795         }
1797         if (LNotEqual (Local7, 0x0))
1798         {
1799             ERR_ (1)
1800         }
1803         Store ("++++++++ Store (LNotEqual (0xFFFFFFFF, 0x11111111), Local7)", Debug)
1804         Store (LNotEqual (0xFFFFFFFF, 0x11111111), Local7)
1806         Store ("++++++++ Lor (0x0, 0x1)", Debug)
1807         if (Lor (0x0, 0x1))
1808         {
1809             Store ("+_+_+_+_+ Lor (0x0, 0x1) returned TRUE", Debug)
1810         }
1812         return (Local7)
1813     }
1816     Method (COND)
1817     {
1818         Store ("++++++++ Store (0x4, Local0)", Debug)
1819         Store (0x4, Local0)
1821         Store ("++++++++ While (Local0)", Debug)
1822         While (Local0)
1823         {
1824             Store ("++++++++ Decrement (Local0)", Debug)
1825             Decrement (Local0)
1826         }
1829         Store ("++++++++ Store (0x3, Local6)", Debug)
1830         Store (0x3, Local6)
1832         Store ("++++++++ While (Subtract (Local6, 1))", Debug)
1833         While (Subtract (Local6, 1))
1834         {
1835             Store ("++++++++ Decrement (Local6)", Debug)
1836             Decrement (Local6)
1837         }
1840         Store ("++++++++ [LVL1] If (LGreater (0x2, 0x1))", Debug)
1841         If (LGreater (0x2, 0x1))
1842         {
1843             Store ("++++++++ [LVL2] If (LEqual (0x11111111, 0x22222222))", Debug)
1844             If (LEqual (0x11111111, 0x22222222))
1845             {
1846                 Store ("++++++++ ERROR: If (LEqual (0x11111111, 0x22222222)) returned TRUE", Debug)
1847             }
1849             else
1850             {
1851                 Store ("++++++++ [LVL3] If (LNot (0x0))", Debug)
1852                 If (LNot (0x0))
1853                 {
1854                     Store ("++++++++ [LVL4] If (LAnd (0xEEEEEEEE, 0x2))", Debug)
1855                     If (LAnd (0xEEEEEEEE, 0x2))
1856                     {
1857                         Store ("++++++++ [LVL5] If (LLess (0x44444444, 0x3))", Debug)
1858                         If (LLess (0x44444444, 0x3))
1859                         {
1860                             Store ("++++++++ ERROR: If (LLess (0x44444444, 0x3)) returned TRUE", Debug)
1861                         }
1863                         else
1864                         {
1865                             Store ("++++++++ Exiting from nested IF/ELSE statements", Debug)
1866                         }
1867                     }
1868                 }
1869             }
1870         }
1873         Store ("++++++++ [LVL1] If (LGreater (0x2, 0x1))", Debug)
1874         If (LGreater (0x2, 0x1))
1875         {
1876             Store ("++++++++ [LVL2] If (LEqual (0x11111111, 0x22222222))", Debug)
1877             If (LEqual (0x11111111, 0x22222222))
1878             {
1879                 Store ("++++++++ ERROR: If (LEqual (0x11111111, 0x22222222)) returned TRUE", Debug)
1880             }
1882             else
1883             {
1884                 Store ("++++++++ [LVL3] If (LNot (0x0))", Debug)
1885                 If (LNot (0x0))
1886                 {
1887                     Store ("++++++++ [LVL4] If (LAnd (0xEEEEEEEE, 0x2))", Debug)
1888                     If (LAnd (0xEEEEEEEE, 0x2))
1889                     {
1890                         Store ("++++++++ [LVL5] If (LLess (0x44444444, 0x3))", Debug)
1891                         If (LLess (0x44444444, 0x3))
1892                         {
1893                             Store ("++++++++ ERROR: If (LLess (0x44444444, 0x3)) returned TRUE", Debug)
1894                         }
1896                         else
1897                         {
1898                             Store ("++++++++ Returning from nested IF/ELSE statements", Debug)
1899                             Return (Local6)
1900                         }
1901                     }
1902                 }
1903             }
1904         }
1906     }
1909     Method (REFS,, Serialized)
1910     {
1911         Name (BBUF, Buffer() {0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7})
1913         Name (NEST, Package ()
1914         {
1915             Package ()
1916             {
1917                 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
1918             },
1919             Package ()
1920             {
1921                 0x11, 0x12, 0x12, 0x14, 0x15, 0x16
1922             }
1923         })
1925     /* Parser thinks this is a method invocation!! */
1927         Store (RefOf (MAIN), Local5)
1929         // For this to work, ABCD must NOT exist.
1931         Store (CondRefOf (ABCD, Local0), Local1)
1932         if (LNotEqual (Local1, 0))
1933         {
1934             ERR_ (2)
1935         }
1937         Store (CondRefOf (BBUF, Local0), Local1)
1938         if (LNotEqual (Local1, Ones))
1939         {
1940             ERR_ (2)
1941         }
1943         Store (DeRefOf (Index (BBUF, 3)), Local6)
1944         if (LNotEqual (Local6, 0xB3))
1945         {
1946             ERR_ (2)
1947         }
1949         Store (DeRefOf (Index (DeRefOf (Index (NEST, 1)), 3)), Local0)
1950         if (LNotEqual (Local0, 0x14))
1951         {
1952             ERR_ (2)
1953         }
1956         Store (0x11223344, Local0)
1957         Store (RefOf (Local0), Local1)
1959         Store (DerefOf (Local1), Local2)
1960         If (LNotEqual (Local2, 0x11223344))
1961         {
1962             ERR_ (2)
1963         }
1966     /* Parser thinks this is a method invocation!! */
1968     //  RefOf (MAIN)
1971     //  RefOf (R___)
1972     //  RefOf (BBUF)
1974     //  Store (RefOf (Local0), Local1)
1976     //  CondRefOf (BBUF, Local2)
1977     //  CondRefOf (R___, Local3)
1979     //  Store (DerefOf (Local1), Local4)
1981     //  Return (Local4)
1982     }
1985     Method (INDX, 0, Serialized)
1986     {
1987         Name(STAT,Package(4){})
1988         Store(0x44443333,Index(STAT,0))
1989     }
1991 //=================================================================
1992 //=================================================================
1993 //===================== iPCO TESTS ================================
1994 //=================================================================
1995 //=================================================================
1998 // test IfElseOp.asl
2000 //  test for IfOp and ElseOp, including validation of object stack cleanup
2002     Device (IFEL)
2003     {
2004         Name (DWRD, 1)
2005         Name (RSLT, 0)
2007         //  IFNR control method executes IfOp branch with NO nested Return
2008         //  and no Else branch
2009         Method (IFNR)
2010         {
2011             Store (DWRD, RSLT)
2012             If (LEqual (DWRD, 1))
2013             {
2014                 Store (0, RSLT)
2015             }
2016         }   //  IFNR
2018         //  NINR control method does not execute If branch and has no Else branch
2019         Method (NINR)
2020         {
2021             Store (0, RSLT)
2022             If (LNotEqual (DWRD, 1))
2023             {
2024                 Store (DWRD, RSLT)
2025             }
2026         }   //  NINR
2028         //  IENR control method executes IfOp branch with NO nested Return
2029         Method (IENR)
2030         {
2031             If (LEqual (DWRD, 1))
2032             {
2033                 Store (0, RSLT)
2034             }
2035             Else
2036             {
2037                 Store (DWRD, RSLT)
2038             }
2039         }   //  IENR
2041         //  ELNR control method executes ElseOp branch with NO nested Return
2042         Method (ELNR)
2043         {
2044             If (LNotEqual (DWRD, 1))
2045             {
2046                 Store (DWRD, RSLT)
2047             }
2048             Else
2049             {
2050                 Store (0, RSLT)
2051             }
2052         }   //  ELNR
2054         //  IFRT control method executes IfOp branch with nested Return with
2055         //  no Else branch
2056         Method (IFRT)
2058         {
2059             If (LEqual (DWRD, 1))
2060             {
2061                 Return (0)
2062             }
2063             Return (DWRD)
2064         }   //  IFRT
2066         //  IERT control method executes IfOp branch with nested Return with
2067         //  Else branch
2068         Method (IERT)
2069         {
2070             If (LEqual (DWRD, 1))
2071             {
2072                 Return (0)
2073             }
2074             Else
2075             {
2076                 Return (DWRD)
2077             }
2078         }   //  IERT
2080         //  ELRT control method executes ElseOp branch with nested Return
2081         Method (ELRT)
2082         {
2083             If (LNotEqual (DWRD, 1))
2084             {
2085                 Return (DWRD)
2086             }
2087             Else
2088             {
2089                 Return (0)
2090             }
2091         }   //  ELRT
2093         Method (TEST)
2094         {
2095             Store ("++++++++ IfElseOp Test", Debug)
2097             //  IfOp with NO return value
2098             IFNR()
2099             If (LNotEqual (RSLT, 0))
2100             {
2101                 Return (RSLT)
2102             }
2104             //  IfOp with NO return value
2105             NINR()
2106             If (LNotEqual (RSLT, 0))
2107             {
2108                 Return (RSLT)
2109             }
2111             //  IfOp with NO return value
2112             IENR()
2113             If (LNotEqual (RSLT, 0))
2114             {
2115                 Return (RSLT)
2116             }
2118             //  ElseOp with NO return value
2119             ELNR()
2120             If (LNotEqual (RSLT, 0))
2121             {
2122                 Return (RSLT)
2123             }
2125             //  IfOp with return value
2126             Store (IFRT, RSLT)
2127             If (LNotEqual (RSLT, 0))
2128             {
2129                 Return (RSLT)
2130             }
2132             //  IfOp with return value
2133             Store (IERT, RSLT)
2134             If (LNotEqual (RSLT, 0))
2135             {
2136                 Return (RSLT)
2137             }
2139             //  ElseOp with return value
2140             Store (ELRT, RSLT)
2141             If (LNotEqual (RSLT, 0))
2142             {
2143                 Return (RSLT)
2144             }
2146             Return (0)
2147         }   //  TEST
2148     }   //  IFEL
2151 // test NoSave.asl
2154 //  Internal test cases to validate IfOp (Operator (,,)) where Operator
2155 //  target is ZeroOp to throw away the results.
2156 //  Includes internal test cases for logical operators with no destination
2157 //  operands.
2159     Device (NOSV)
2160     {
2161         Method (TEST,, Serialized)
2162         {
2163             Store ("++++++++ NoSave Test", Debug)
2165             Name (WRD, 0x1234)
2167             //
2168             //  Begin test of nested operators without saving results
2169             //
2171             //  Test If (And ()) with no save of And result
2172             If (And (3, 1, ))
2173             {
2174                 Store (1, WRD)  //  pass -- just do something
2175             }
2176             else
2177             {
2178                 Return (1)      //  fail
2179             }
2181             //  Test If (And ()) with no save of And result
2182             If (And (4, 1, ))
2183             {
2184                 Return (2)      //  fail
2185             }
2186             else
2187             {
2188                 Store (2, WRD)  //  pass -- just do something
2189             }
2192             //  Test If (NAnd ()) with no save of NAnd result
2193             If (NAnd (3, 1, ))
2194             {
2195                 Store (3, WRD)  //  pass -- just do something
2196             }
2197             else
2198             {
2199                 Return (3)      //  fail
2200             }
2202             //  Test If (NAnd ()) with no save of NAnd result
2203             If (NAnd (0xFFFFFFFF, 0xFFFFFFFF, ))
2204             {
2205                 Return (4)      // fail
2206             }
2207             else
2208             {
2209                 Store (4, WRD)  //  pass -- just do something
2210             }
2213             //  Test If (NOr ()) with no save of NOr result
2214             If (NOr (0, 1, ))
2215             {
2216                 Store (5, WRD)  //  pass -- just do something
2217             }
2218             else
2219             {
2220                 Return (5)      //  fail
2221             }
2223             //  Test If (NOr ()) with no save of NOr result
2224             If (NOr (0xFFFFFFFE, 1, ))
2225             {
2226                 Return (6)      // fail
2227             }
2228             else
2229             {
2230                 Store (6, WRD)  //  pass -- just do something
2231             }
2234             //  Test If (Not ()) with no save of Not result
2235             If (Not (1, ))
2236             {
2237                 Store (7, WRD)  //  pass -- just do something
2238             }
2239             else
2240             {
2241                 Return (7)      //  fail
2242             }
2244             //  Test If (Not ()) with no save of Not result
2245             If (Not (0xFFFFFFFF, ))
2246             {
2247                 Return (8)      // fail
2248             }
2249             else
2250             {
2251                 Store (8, WRD)  //  pass -- just do something
2252             }
2255             //  Test If (Or ()) with no save of Or result
2256             If (Or (3, 1, ))
2257             {
2258                 Store (9, WRD)  //  pass -- just do something
2259             }
2260             else
2261             {
2262                 Return (9)      //  fail
2263             }
2265             //  Test If (Or ()) with no save of Or result
2266             If (Or (0, 0, ))
2267             {
2268                 Return (10)     //  fail
2269             }
2270             else
2271             {
2272                 Store (10, WRD) //  pass -- just do something
2273             }
2276             //  Test If (XOr ()) with no save of XOr result
2277             If (XOr (3, 1, ))
2278             {
2279                 Store (11, WRD) //  pass -- just do something
2280             }
2281             else
2282             {
2283                 Return (11)     // fail
2284             }
2286             //  Test If (XOr ()) with no save of XOr result
2287             If (XOr (3, 3, ))
2288             {
2289                 Return (12)     // fail
2290             }
2291             else
2292             {
2293                 Store (12, WRD) //  pass -- just do something
2294             }
2297             //
2298             //  Begin test of logical operators with no destination operands
2299             //
2301             //  Test If (LAnd ()) with no save of LAnd result
2302             If (LAnd (3, 3))
2303             {
2304                 Store (21, WRD) //  pass -- just do something
2305             }
2306             else
2307             {
2308                 Return (21)     // fail
2309             }
2311             //  Test If (LAnd ()) with no save of LAnd result
2312             If (LAnd (3, 0))
2313             {
2314                 Return (22)     // fail
2315             }
2316             else
2317             {
2318                 Store (22, WRD) //  pass -- just do something
2319             }
2321             //  Test If (LAnd ()) with no save of LAnd result
2322             If (LAnd (0, 3))
2323             {
2324                 Return (23)     //  fail
2325             }
2326             else
2327             {
2328                 Store (23, WRD) //  pass -- just do something
2329             }
2331             //  Test If (LAnd ()) with no save of LAnd result
2332             If (LAnd (0, 0))
2333             {
2334                 Return (24)     //  fail
2335             }
2336             else
2337             {
2338                 Store (24, WRD) //  pass -- just do something
2339             }
2342             //  Test If (LEqual ()) with no save of LEqual result
2343             If (LEqual (3, 3))
2344             {
2345                 Store (31, WRD) //  pass -- just do something
2346             }
2347             else
2348             {
2349                 Return (31)     //  fail
2350             }
2352             //  Test If (LEqual ()) with no save of LEqual result
2353             If (LEqual (1, 3))
2354             {
2355                 Return (32)     //  fail
2356             }
2357             else
2358             {
2359                 Store (32, WRD) //  pass -- just do something
2360             }
2363             //  Test If (LGreater ()) with no save of LGreater result
2364             If (LGreater (3, 1))
2365             {
2366                 Store (41, WRD) //  pass -- just do something
2367             }
2368             else
2369             {
2370                 Return (41)     //  fail
2371             }
2373             //  Test If (LGreater ()) with no save of LGreater result
2374             If (LGreater (4, 4))
2375             {
2376                 Return (42)     //  fail
2377             }
2378             else
2379             {
2380                 Store (42, WRD) //  pass -- just do something
2381             }
2383             //  Test If (LGreater ()) with no save of LGreater result
2384             If (LGreater (1, 4))
2385             {
2386                 Return (43)     //  fail
2387             }
2388             else
2389             {
2390                 Store (43, WRD) //  pass -- just do something
2391             }
2393             //  Test If (LGreaterEqual ()) with no save of LGreaterEqual result
2394             If (LGreaterEqual (3, 1))
2395             {
2396                 Store (44, WRD) //  pass -- just do something
2397             }
2398             else
2399             {
2400                 Return (44)     //  fail
2401             }
2403             //  Test If (LGreaterEqual ()) with no save of LGreaterEqual result
2404             If (LGreaterEqual (3, 3))
2405             {
2406                 Store (45, WRD) //  pass -- just do something
2407             }
2408             else
2409             {
2410                 Return (45)     //  fail
2411             }
2413             //  Test If (LGreaterEqual ()) with no save of LGreaterEqual result
2414             If (LGreaterEqual (3, 4))
2415             {
2416                 Return (46)     //  fail
2417             }
2418             else
2419             {
2420                 Store (46, WRD) //  pass -- just do something
2421             }
2424             //  Test If (LLess ()) with no save of LLess result
2425             If (LLess (1, 3))
2426             {
2427                 Store (51, WRD) //  pass -- just do something
2428             }
2429             else
2430             {
2431                 Return (51)     //  fail
2432             }
2434             //  Test If (LLess ()) with no save of LLess result
2435             If (LLess (2, 2))
2436             {
2437                 Return (52)     //  fail
2438             }
2439             else
2440             {
2441                 Store (52, WRD) //  pass -- just do something
2442             }
2444             //  Test If (LLess ()) with no save of LLess result
2445             If (LLess (4, 2))
2446             {
2447                 Return (53)     //  fail
2448             }
2449             else
2450             {
2451                 Store (53, WRD) //  pass -- just do something
2452             }
2455             //  Test If (LLessEqual ()) with no save of LLessEqual result
2456             If (LLessEqual (1, 3))
2457             {
2458                 Store (54, WRD) //  pass -- just do something
2459             }
2460             else
2461             {
2462                 Return (54)     //  fail
2463             }
2465             //  Test If (LLessEqual ()) with no save of LLessEqual result
2466             If (LLessEqual (2, 2))
2467             {
2468                 Store (55, WRD) //  pass -- just do something
2469             }
2470             else
2471             {
2472                 Return (55)     //  fail
2473             }
2475             //  Test If (LLessEqual ()) with no save of LLessEqual result
2476             If (LLessEqual (4, 2))
2477             {
2478                 Return (56)     //  fail
2479             }
2480             else
2481             {
2482                 Store (56, WRD) //  pass -- just do something
2483             }
2486             //  Test If (LNot ()) with no save of LNot result
2487             If (LNot (0))
2488             {
2489                 Store (61, WRD) //  pass -- just do something
2490             }
2491             else
2492             {
2493                 Return (61)     //  fail
2494             }
2496             //  Test If (LNot ()) with no save of LNot result
2497             If (LNot (1))
2498             {
2499                 Return (62)     //  fail
2500             }
2501             else
2502             {
2503                 Store (62, WRD) //  pass -- just do something
2504             }
2507             //  Test If (LNotEqual ()) with no save of LNotEqual result
2508             If (LNotEqual (3, 3))
2509             {
2510                 Return (63)     //  fail
2511             }
2512             else
2513             {
2514                 Store (63, WRD) //  pass -- just do something
2515             }
2517             //  Test If (LNotEqual ()) with no save of LNotEqual result
2518             If (LNotEqual (1, 3))
2519             {
2520                 Store (64, WRD) //  pass -- just do something
2521             }
2522             else
2523             {
2524                 Return (64)     //  fail
2525             }
2528             //  Test If (LOr ()) with no save of LOr result
2529             If (LOr (3, 1))
2530             {
2531                 Store (71, WRD) //  pass -- just do something
2532             }
2533             else
2534             {
2535                 Return (71)     //  fail
2536             }
2538             //  Test If (LOr ()) with no save of LOr result
2539             If (LOr (0, 1))
2540             {
2541                 Store (72, WRD) //  pass -- just do something
2542             }
2543             else
2544             {
2545                 Return (72)     //  fail
2546             }
2548             //  Test If (LOr ()) with no save of LOr result
2549             If (LOr (3, 0))
2550             {
2551                 Store (73, WRD) //  pass -- just do something
2552             }
2553             else
2554             {
2555                 Return (73)     //  fail
2556             }
2558             //  Test If (LOr ()) with no save of LOr result
2559             If (LOr (0, 0))
2560             {
2561                 Return (74)     //  fail
2562             }
2563             else
2564             {
2565                 Store (74, WRD) //  pass -- just do something
2566             }
2568             Return (0)
2569         }   //  TEST
2570     }   //  NOSV
2574 // test IndxFld.asl
2576 //  IndexFld test
2577 //      This is just a subset of the many RegionOp/Index Field test cases.
2578 //      Tests index field element AccessAs macro.
2580     Device (IDXF)
2581     {   //  Test device name
2583         OperationRegion (SIO, SystemIO, 0x100, 2)
2584         Field (SIO, ByteAcc, NoLock, Preserve)
2585         {
2586             INDX,   8,
2587             DATA,   8
2588         }
2589         IndexField (INDX, DATA, AnyAcc, NoLock, WriteAsOnes)
2590         {
2591             AccessAs (ByteAcc, 0),
2592             IFE0,   8,
2593             IFE1,   8,
2594             IFE2,   8,
2595             IFE3,   8,
2596             IFE4,   8,
2597             IFE5,   8,
2598             IFE6,   8,
2599             IFE7,   8,
2600             IFE8,   8,
2601             IFE9,   8,
2602         }
2604         Method (TEST)
2605         {
2606             Store ("++++++++ IndxFld Test", Debug)
2608             Store (IFE0, Local0)
2609             Store (IFE1, Local1)
2610             Store (IFE2, Local2)
2612             Return (0)
2613         }   //  TEST
2614     }   //  IDXF
2617 // test NestdLor.asl
2619     Scope (\_SB)    //  System Bus
2620     {   //  _SB system bus
2622         Name (ZER0, 0)
2623         Name (ZER1, 0)
2624         Name (ZER2, 0)
2625         Name (ONE0, 1)
2627         Device (NSTL)
2628         {
2629             Method (TEST)
2630             {
2631                 Store ("++++++++ NestdLor Test", Debug)
2633                 If (Lor (ZER0, Lor (ZER1, Lor (ZER2, ONE0))))
2634                 {   //  Indicate Pass
2635                     Store (0x00, Local0)
2636                 }
2638                 Else
2639                 {   //  Indicate Fail
2640                     Store (0x01, Local0)
2641                 }
2643                 Return (Local0)
2644             }   //  End Method TEST
2645         }   //  Device NSTL
2646     }   //  _SB system bus
2649 // test RetBuf.asl
2651 //  Test ReturnOp(Buffer)
2652 //      This is required to support Control Method Batteries on
2653 //          Dell Latitude Laptops (e.g., CP1-A)
2655     Device (RTBF)
2656     {
2657         Method (SUBR, 1)
2658         {
2659             Return (Arg0)
2660         }
2662         Method (RBUF,, Serialized)
2663         {   //  RBUF: Return Buffer from local variable
2664             Name (ABUF, Buffer() {"ARBITRARY_BUFFER"})
2666             //  store local buffer ABUF into Local0
2667             Store (ABUF, Local0)
2669             //  save Local0 object type value into Local1
2670             Store (ObjectType (Local0), Local1)
2672             //  validate Local0 is a Buffer
2673             If (LNotEqual (Local1, 3))  //  Buffer type is 3
2674             {
2675                 Return (1)      //  failure
2676             }
2678             //  store value returned by control method SUBR into Local0
2679             Store (SUBR (ABUF), Local0)
2681             //  save Local0 object type value into Local1
2682             Store (ObjectType (Local0), Local1)
2684             //  validate Local0 is a Buffer
2685             If (LNotEqual (Local1, 3))  //  Buffer type is 3
2686             {
2687                 Return (2)      //  failure
2688             }
2690             //  allocate buffer using Local1 as buffer size (run-time evaluation)
2691             Store (5, Local1)
2692             Name (BUFR, Buffer(Local1) {})
2694             //  store value returned by control method SUBR into Local0
2695             Store (SUBR (BUFR), Local0)
2697             //  save Local0 object type value into Local1
2698             Store (ObjectType (Local0), Local1)
2700             //  validate Local0 is a Buffer
2701             If (LNotEqual (Local1, 3))  //  Buffer type is 3
2702             {
2703                 Return (3)      //  failure
2704             }
2706             //  store BUFR Buffer into Local0
2707             Store (BUFR, Local0)
2709             //  save Local0 object type value into Local1
2710             Store (ObjectType (Local0), Local1)
2712             //  validate Local0 is a Buffer
2713             If (LNotEqual (Local1, 3))  //  Buffer type is 3
2714             {
2715                 Return (4)      //  failure
2716             }
2719             //  return Local0 Buffer
2720             Return (Local0)
2721         }   //  RBUF
2723         Method (TEST)
2724         {
2725             Store ("++++++++ RetBuf Test", Debug)
2727             //  store RBUF Buffer return value into Local0
2728             Store (RBUF, Local0)
2730             //  save Local0 object type value into Local1
2731             Store (ObjectType (Local0), Local1)
2733             //  validate Local0 is a Buffer
2734             If (LNotEqual (Local1, 3))  //  Buffer type is 3
2735             {
2736                 Return (10)     //  failure
2737             }
2738             Else
2739             {
2740                 Return (0)      //  success
2741             }
2742         }   //  TEST
2743     }   //  RTBF
2746 // test RetLVal.asl
2748 //  Test ReturnOp(Lvalue)
2749 //      This is required to support _PSR on IBM ThinkPad 560D and
2750 //      _DCK on Toshiba Tecra 8000.
2753     Device (GPE2)
2754     {
2755         Method (_L03)
2756         {
2757             Store ("Method GPE2._L03 invoked", Debug)
2758             Return ()
2759         }
2761         Method (_E05)
2762         {
2763             Store ("Method GPE2._E05 invoked", Debug)
2764             Return ()
2765         }
2766     }
2768     Device (PRW2)
2769     {
2770         Name (_PRW, Package(2) {Package(2){\GPE2, 0x05}, 3})
2771     }
2774     Scope (\_GPE)
2775     {
2776         Name (ACST, 0xFF)
2778         Method (_L08)
2779         {
2780             Store ("Method _GPE._L08 invoked", Debug)
2781             Return ()
2782         }
2784         Method (_E09)
2785         {
2786             Store ("Method _GPE._E09 invoked", Debug)
2787             Return ()
2788         }
2790         Method (_E11)
2791         {
2792             Store ("Method _GPE._E11 invoked", Debug)
2793             Notify (\PRW1, 2)
2794         }
2796         Method (_L22)
2797         {
2798             Store ("Method _GPE._L22 invoked", Debug)
2799             Return ()
2800         }
2802         Method (_L33)
2803         {
2804             Store ("Method _GPE._L33 invoked", Debug)
2805             Return ()
2806         }
2808         Method (_E64)
2809         {
2810             Store ("Method _GPE._E64 invoked", Debug)
2811             Return ()
2812         }
2814     }   //  _GPE
2816     Device (PRW1)
2817     {
2818         Name (_PRW, Package(2) {0x11, 3})
2819     }
2821     Device (PWRB)
2822     {
2823         Name (_HID, EISAID("PNP0C0C"))
2824         Name (_PRW, Package(2) {0x33, 3})
2825     }
2828     Scope (\_SB)    //  System Bus
2829     {   //  _SB system bus
2831         Device (ACAD)
2832         {   //  ACAD:   AC adapter device
2833             Name (_HID, "ACPI0003") //  AC adapter device
2835             Name (_PCL, Package () {\_SB})
2837             OperationRegion (AREG, SystemIO, 0x0372, 2)
2838             Field (AREG, ByteAcc, NoLock, Preserve)
2839             {
2840                 AIDX,   8,
2841                 ADAT,   8
2842             }
2843             IndexField (AIDX, ADAT, ByteAcc, NoLock, Preserve)
2844             {
2845                      ,  1,  //  skips
2846                 ACIN,   1,
2847                      ,  2,  //  skips
2848                 CHAG,   1,
2849                      ,  3,  //  skips
2850                      ,  7,  //  skips
2851                 ABAT,   1,
2852             }   //  IndexField
2854             Method (_PSR)
2855             {
2856                 Store (\_GPE.ACST, Local0)
2857                 Store (ACIN, Local1)
2858                 If (LNotEqual (\_GPE.ACST, Local1))
2859                 {
2860                     Store (Local1, \_GPE.ACST)
2861                     // This Notify is commented because it causes a
2862                     //  method error when running on a system without the
2863                     //  specific device.
2864                     // Notify (\_SB_.ACAD, 0)
2865                 }
2866                 Return (Local0)
2867             }   //  _PSR
2869             Method (_STA)
2870             {
2871                 Return (0x0F)
2872             }
2874             Method (_INI)
2875             {
2876                 Store (ACIN, \_GPE.ACST)
2877             }
2878         }   //  ACAD:   AC adapter device
2880         //  test implicit return from control method
2881         Method (DIS_, 1)
2882         {
2883             Store (Arg0, Local0)
2884         }
2886         Device (RTLV)
2887         {
2888             //  test implicit return inside nested if with explicit return of Lvalue
2889             Method (_DCK, 1)
2890             //  Arg0:   1 == dock, 0 == undock
2891             {
2892                 If (Arg0)
2893                 {   //  dock
2894                     Store (0x87, Local0)
2896                     If (Local0)
2897                     {
2898                         DIS_ (0x23)
2899                         Return (1)
2900                     }
2902                     Return (0)
2903                 }   //  dock
2904                 Else
2905                 {   //  undock
2906                     Store (Arg0, Local0)
2908                     If (Local0)
2909                     {
2910                         DIS_ (0x23)
2911                         Return (1)
2912                     }
2914                     Return (0)
2915                 }   //  undock
2916             }   //  _DCK control method
2918             Method (TEST)
2919             {
2920                 Store ("++++++++ RetLVal Test", Debug)
2922                 //  store _PSR return value into Local0
2923                 Store (\_SB_.ACAD._PSR, Local0)
2925                 //  save Local0 object type value into Local1
2926                 Store (ObjectType (Local0), Local1)
2928                 //  validate Local0 is a Number
2929                 If (LNotEqual (Local1, 1))  //  Number/Integer type is 1
2930                 {
2931                     Return (1)      //  failure
2932                 }
2934                 //  test implicit return inside nested if with explicit return of Lvalue
2935                 Store (_DCK (1), Local2)
2937                 //  save Local2 object type value into Local3
2938                 Store (ObjectType (Local2), Local3)
2940                 //  validate Local2 is a Number
2941                 If (LNotEqual (Local3, 1))  //  Number/Integer type is 1
2942                 {
2943                     Return (2)      //  failure
2944                 }
2946                 If (LNotEqual (Local2, 1))
2947                 {
2948                     Return (3)      //  failure
2949                 }
2951                 Return (0)  //  success
2952             }   //  TEST
2953         }   //  RTLV
2954     }   //  _SB system bus
2957 // test RetPkg.asl
2959 //  Test ReturnOp(Package)
2960 //      This is required to support _PRT on Dell Optiplex Workstations (e.g. GX1)
2963     Scope (\_SB)    //  System Bus
2964     {   //  _SB system bus
2965         Device(LNKA)
2966         {
2967             Name (_HID, EISAID("PNP0C0F"))  //  PCI interrupt link
2968             Name (_UID, 1)
2969         }
2970         Device(LNKB)
2971         {
2972             Name (_HID, EISAID("PNP0C0F"))  //  PCI interrupt link
2973             Name (_UID, 2)
2974         }
2975         Device(LNKC)
2976         {
2977             Name (_HID, EISAID("PNP0C0F"))  //  PCI interrupt link
2978             Name (_UID, 3)
2979         }
2980         Device(LNKD)
2981         {
2982             Name (_HID, EISAID("PNP0C0F"))  //  PCI interrupt link
2983             Name (_UID, 4)
2984         }
2986         Device (PCI1)
2987         {   //  PCI1:   Root PCI Bus
2988             Name (_HID, "PNP0A03")  //  Need _HID for root device (String format)
2989             Name (_ADR,0x00000000)
2990             Name (_CRS,0)
2992             Name (_PRT, Package ()
2993             {
2994                 Package () {0x0004ffff, 0, LNKA, 0},            //  Slot 1, INTA
2995                 Package () {0x0004ffff, 1, LNKB, 0},            //  Slot 1, INTB
2996                 Package () {0x0004ffff, 2, LNKC, 0},            //  Slot 1, INTC
2997                 Package () {0x0004ffff, 3, LNKD, 0},            //  Slot 1, INTD
2998                 Package () {0x0005ffff, 0, \_SB_.LNKB, 0},  //  Slot 2, INTA
2999                 Package () {0x0005ffff, 1, \_SB_.LNKC, 0},  //  Slot 2, INTB
3000                 Package () {0x0005ffff, 2, \_SB_.LNKD, 0},  //  Slot 2, INTC
3001                 Package () {0x0006ffff, 3, \_SB_.LNKA, 0},  //  Slot 2, INTD
3002                 Package () {0x0006ffff, 0, LNKC, 0},            //  Slot 3, INTA
3003                 Package () {0x0006ffff, 1, LNKD, 0},            //  Slot 3, INTB
3004                 Package () {0x0006ffff, 2, LNKA, 0},            //  Slot 3, INTC
3005                 Package () {0x0006ffff, 3, LNKB, 0},            //  Slot 3, INTD
3006             })
3008             Device (PX40)
3009             {   // Map f0 space, Start PX40
3010                 Name (_ADR,0x00070000)  //  Address+function.
3011             }
3012         }   //  PCI0:   Root PCI Bus
3014         Device (RETP)
3015         {
3016             Method (RPKG)
3017             {   //  RPKG: Return Package from local variable
3019                 //  store _PRT package into Local0
3020                 Store (\_SB_.PCI1._PRT, Local0)
3022                 //  return Local0 Package
3023                 Return (Local0)
3024             }   //  RPKG
3026             Method (TEST)
3027             {
3028                 Store ("++++++++ RetPkg Test", Debug)
3030                 //  store RPKG package return value into Local0
3031                 Store (RPKG, Local0)
3033                 //  save Local0 object type value into Local1
3034                 Store (ObjectType (Local0), Local1)
3036                 //  validate Local0 is a Package
3037                 If (LNotEqual (Local1, 4))  //  Package type is 4
3038                     {   Return (1)  }   //  failure
3039                 Else
3040                     {   Return (0)  }   //  success
3041             }   //  TEST
3042         }   //  RETP
3043     } // _SB_
3046 // test WhileRet.asl
3048 //  WhileRet.asl tests a ReturnOp nested in a IfOp nested in a WhileOp.
3050     Device (WHLR)
3051     {
3052         Name (LCNT, 0)
3053         Method (WIR)
3054         {   //  WIR:    control method that returns inside of IfOp inside of WhileOp
3055             While (LLess (LCNT, 4))
3056             {
3057                     If (LEqual (LCNT, 2))
3058                     {
3059                         Return (0)
3060                     }
3062                 Increment (LCNT)
3063             }
3065             Return (LCNT)
3066         }   //  WIR:    control method that returns inside of IfOp inside of WhileOp
3068         Method (TEST)
3069         {
3070             Store ("++++++++ WhileRet Test", Debug)
3072             Store (WIR, Local0)
3074             Return (Local0)
3075         }   //  TEST
3076     }   //  WHLR
3079 // test AndOrOp.asl
3081 //This code tests the bitwise AndOp and OrOp Operator terms
3083 //Syntax of Andop term
3084 //And - Bitwise And
3085 //AndTerm   := And(
3086 //  Source1,    //TermArg=>Integer
3087 //  Source2,    //TermArg=>Integer
3088 //  Result  //Nothing | SuperName
3089 //) => Integer
3090 //Source1 and Source2 are evaluated as integer data types,
3091 // a bit-wise AND is performed, and the result is optionally
3092 //stored into Result.
3095 //Syntax of OrOp
3096 //Or - Bit-wise Or
3097 //OrTerm    := Or(
3098 //  Source1,    //TermArg=>Integer
3099 //  Source2 //TermArg=>Integer
3100 //  Result  //Nothing | SuperName
3101 //) => Integer
3102 //Source1 and Source2 are evaluated as integer data types,
3103 // a bit-wide OR is performed, and the result is optionally
3104 //stored in Result
3106     Device (ANDO)
3107     {
3108         OperationRegion (TMEM, SystemMemory, 0xC4, 0x02)
3109         Field (TMEM, ByteAcc, NoLock, Preserve)
3110         {
3111                 ,   3,
3112             TOUD,   13
3113         }
3115         //Create System Memory Operation Region and field overlays
3116         OperationRegion (RAM, SystemMemory, 0x400000, 0x100)
3117         Field (RAM, AnyAcc, NoLock, Preserve)
3118         {
3119             SMDW,   32, //  32-bit DWORD
3120             SMWD,   16, //  16-bit WORD
3121             SMBY,   8,  //  8-bit BYTE
3122         }// Field(RAM)
3125         //And with Byte Data
3126         Name (BYT1, 0xff)
3127         Name (BYT2, 0xff)
3128         Name (BRSL, 0x00)
3130         //And with Word Data
3131         Name (WRD1, 0xffff)
3132         Name (WRD2, 0xffff)
3133         Name (WRSL, 0x0000)
3135         //And with DWord Data
3136         Name (DWD1, 0xffffffff)
3137         Name (DWD2, 0xffffffff)
3138         Name (DRSL, 0x00000000)
3140         Method (ANDP)
3141         {
3142             //Check with 1 And 1 on byte data
3143             And(BYT1, BYT2, BRSL)
3144             if(LNotEqual(BRSL,0xff))
3145             {Return(1)}
3147             //Check with 1 And 1 on Word data
3148             And(WRD1, WRD2, WRSL)
3149             if(LNotEqual(WRSL,0xffff))
3150             {
3151                 Return (1)      //  failure
3152             }
3154             //Check with 1 And 1 Dword
3155             And(DWD1, DWD2, DRSL)
3156             if(LNotEqual(DRSL,0xffffffff))
3157             {
3158                 Return (1)      //  failure
3159             }
3161             //Check with 0 And 0 on byte data
3162             Store(0x00,BYT1)
3163             Store(0x00,BYT2)
3164             Store(0x00,BRSL)
3165             And(BYT1, BYT2, BRSL)
3166             if(LNotEqual(BRSL,0x00))
3167             {
3168                 Return (1)      //  failure
3169             }
3171             //Check with 0 And 0 on Word data
3172             Store (0x0000,WRD1)
3173             Store (0x0000,WRD2)
3174             Store (0x0000,WRSL)
3175             And(WRD1, WRD2, WRSL)
3176             if(LNotEqual(WRSL,0x0000))
3177             {
3178                 Return (1)      //  failure
3179             }
3181             //Check with 0 And 0 Dword
3182             Store (0x00000000,DWD1)
3183             Store (0x00000000,DWD2)
3184             Store (0x00000000,DRSL)
3185             And(DWD1, DWD2, DRSL)
3186             if(LNotEqual(DRSL,0x00000000))
3187             {
3188                 Return (1)      //  failure
3189             }
3192             //Check with 1 And 0 on byte data
3193             Store(0x55,BYT1)
3194             Store(0xAA,BYT2)
3195             Store(0x00,BRSL)
3196             And(BYT1, BYT2, BRSL)
3197             if(LNotEqual(BRSL,0x00))
3198             {
3199                 Return (1)      //  failure
3200             }
3202             //Check with 1 And 0 on Word data
3203             Store (0x5555,WRD1)
3204             Store (0xAAAA,WRD2)
3205             Store (0x0000,WRSL)
3206             And(WRD1, WRD2, WRSL)
3207             if(LNotEqual(WRSL,0x0000))
3208             {
3209                 Return (1)      //  failure
3210             }
3212             //Check with 1 And 0 on Dword
3213             Store (0x55555555,DWD1)
3214             Store (0xAAAAAAAA,DWD2)
3215             Store (0x00000000,DRSL)
3216             And(DWD1, DWD2, DRSL)
3217             if(LNotEqual(DRSL,0x00000000))
3218             {
3219                 Return (1)      //  failure
3220             }
3222             Store (0x1FFF, TOUD)
3223             Store (TOUD, Local0)
3224             if(LNotEqual(Local0,0x1FFF))
3225             {
3226                 Return (1)      //  failure
3227             }
3229             //TBD- Do We need to check for system memory data also for each test case ??
3231             Return(0)
3233         }//ANDP
3235         Method (OROP)
3236         {
3238             //Check with 1 Ored with 1 on byte data
3239             Store(0xff,BYT1)
3240             Store(0xff,BYT2)
3241             Store(0x00,BRSL)
3242             Or(BYT1, BYT2, BRSL)
3243             if(LNotEqual(BRSL,0xff))
3244             {
3245                 Return (1)      //  failure
3246             }
3249             //Check with 1 Ored with 1 on Word data
3250             Store(0xffff,WRD1)
3251             Store(0xffff,WRD2)
3252             Store(0x0000,WRSL)
3253             Or(WRD1, WRD2, WRSL)
3254             if(LNotEqual(WRSL,0xffff))
3255             {
3256                 Return (1)      //  failure
3257             }
3259             //Check with 1 Ored with 1 on Dword data
3260             Store(0xffffffff,DWD1)
3261             Store(0xffffffff,DWD2)
3262             Store(0x00000000,DRSL)
3263             Or(DWD1, DWD2, DRSL)
3264             if(LNotEqual(DRSL,0xffffffff))
3265             {
3266                 Return (1)      //  failure
3267             }
3269             //Check with 0 Ored with 0 on byte data
3270             Store(0x00,BYT1)
3271             Store(0x00,BYT2)
3272             Store(0x00,BRSL)
3273             Or(BYT1, BYT2, BRSL)
3274             if(LNotEqual(BRSL,0x00))
3275             {
3276                 Return (1)      //  failure
3277             }
3279             //Check with 0 Ored with 0 on Word data
3280             Store (0x0000,WRD1)
3281             Store (0x0000,WRD2)
3282             Store (0x0000,WRSL)
3283             Or(WRD1, WRD2, WRSL)
3284             if(LNotEqual(WRSL,0x0000))
3285             {
3286                 Return (1)      //  failure
3287             }
3289             //Check with 0 Ored with  0 Dword data
3290             Store (0x00000000,DWD1)
3291             Store (0x00000000,DWD2)
3292             Store (0x00000000,DRSL)
3293             Or(DWD1, DWD2, DRSL)
3294             if(LNotEqual(DRSL,0x00000000))
3295             {
3296                 Return (1)      //  failure
3297             }
3300             //Check with 1 Ored with 0 on byte data
3301             Store(0x55,BYT1)
3302             Store(0xAA,BYT2)
3303             Store(0x00,BRSL)
3304             Or(BYT1, BYT2, BRSL)
3305             if(LNotEqual(BRSL,0xff))
3306             {
3307                 Return (1)      //  failure
3308             }
3310             //Check with 1 Ored with 0 on Word data
3311             Store (0x5555,WRD1)
3312             Store (0xAAAA,WRD2)
3313             Store (0x0000,WRSL)
3314             Or(WRD1, WRD2, WRSL)
3315             if(LNotEqual(WRSL,0xffff))
3316             {
3317                 Return (1)      //  failure
3318             }
3320             //Check with 1 Ored with 0 on Dword data
3321             Store (0x55555555,DWD1)
3322             Store (0xAAAAAAAA,DWD2)
3323             Store (0x00000000,DRSL)
3324             Or(DWD1, DWD2, DRSL)
3325             if(LNotEqual(DRSL,0xffffffff))
3326             {
3327                 Return (1)      //  failure
3328             }
3330             //TBD - Do We need to check for system memory data also for each test case ??
3332             Return(0)
3334         }//OROP
3336         Method(TEST,, Serialized)
3337         {
3338             Store ("++++++++ AndOrOp Test", Debug)
3340             Name(RSLT,1)
3341             //Call Andop method
3342             Store(ANDP,RSLT)
3343             if(LEqual(RSLT,1))
3344             {
3345                 Return (RSLT)
3346             }
3348             //Call OrOp Method
3349             Store(OROP,RSLT)
3350             if(LEqual(RSLT,1))
3351             {
3352                 Return(RSLT)
3353             }
3355             //
3356             // Return original conditions to allow iterative execution
3357             //
3358             Store(0xff,BYT1)
3359             Store(0xff,BYT2)
3360             Store(0x00,BRSL)
3361             Store (0xffff,WRD1)
3362             Store (0xffff,WRD2)
3363             Store (0x0000,WRSL)
3364             Store (0xffffffff,DWD1)
3365             Store (0xffffffff,DWD2)
3366             Store (0x00000000,DRSL)
3368             Return(0)
3369         }   //TEST
3370     }   //ANDO
3373 // test BreakPnt.asl
3375 // This code tests the BreakPoint opcode term. The syntax of BreakPoint Term is
3376 // BreakPointTerm    := BreakPoint
3377 // Used for debugging, the Breakpoint opcode stops the execution and enters the AML debugger.
3378 // In the non-debug version of the interpreter, BreakPoint is equivalent to Noop.
3380     Device (BRKP)
3381     {
3382         Name(CNT0,0)
3384         Method (BK1)
3385         {
3386             BreakPoint
3387             Return(0)
3388         }
3390         Method (TEST)
3391         {
3392             Store ("++++++++ BreakPnt Test", Debug)
3394             Store(0,CNT0)
3396             //Check BreakPoint statement
3397             While(LLess(CNT0,10))
3398             {
3399                 Increment(CNT0)
3400             }
3402             //Check the BreakPoint statement
3403             If(LEqual(CNT0,10))
3404             {
3405     //            BreakPoint
3406                 Return(0)
3407             }
3409             //failed
3410             Return(1)
3411         }
3412     }
3415 // test AddSubOp.asl
3417     Device (ADSU)
3418     {
3419         //  create System Memory Operation Region and field overlays
3420         OperationRegion (RAM, SystemMemory, 0x400000, 0x100)
3421         Field (RAM, AnyAcc, NoLock, Preserve)
3422         {
3423             SMDW,   32, //  32-bit DWORD
3424             SMWD,   16, //  16-bit WORD
3425             SMBY,   8,  //  8-bit BYTE
3426         }   //  Field(RAM)
3428         Method (TEST,, Serialized)
3429         {
3430             Store ("++++++++ AddSubOp Test", Debug)
3432             Name (DWRD, 0x12345678)
3433             Name (WRD, 0x1234)
3434             Name (BYT, 0x12)
3436             //  Test AddOp with DWORD data
3437             Store (0x12345678, DWRD)
3438             Add (DWRD, 7, DWRD)
3439             If (LNotEqual (DWRD, 0x1234567F))
3440                 {   Return (DWRD)   }
3442             //  Test AddOp with WORD data
3443             Add (WRD, 5, WRD)
3444             If (LNotEqual (WRD, 0x1239))
3445                 {   Return (WRD)    }
3447             //  Test AddOp with BYTE data
3448             Add (BYT, 3, BYT)
3449             If (LNotEqual (BYT, 0x15))
3450                 {   Return (BYT)    }
3452             //  Test SubtractOp with DWORD data
3453             Subtract (DWRD, 7, DWRD)
3454             If (LNotEqual (DWRD, 0x12345678))
3455                 {   Return (DWRD)   }
3457             //  Test SubtractOp with WORD data
3458             Subtract (WRD, 3, WRD)
3459             If (LNotEqual (WRD, 0x1236))
3460                 {   Return (WRD)    }
3462             //  Test SubtractOp with BYTE data
3463             Subtract (BYT, 3, BYT)
3464             If (LNotEqual (BYT, 0x12))
3465                 {   Return (BYT)    }
3468             //  test AddOp with DWORD SystemMemory OpRegion
3469             Store (0x01234567, SMDW)
3470             Add (SMDW, 8, SMDW)
3471             If (LNotEqual (SMDW, 0x0123456F))
3472                 {   Return (SMDW)   }
3474             //  test SubtractOp with DWORD SystemMemory OpRegion
3475             Subtract (SMDW, 7, SMDW)
3476             If (LNotEqual (SMDW, 0x01234568))
3477                 {   Return (SMDW)   }
3480             //  test AddOp with WORD SystemMemory OpRegion
3481             Store (0x0123, SMWD)
3482             Add (SMWD, 6, SMWD)
3483             If (LNotEqual (SMWD, 0x0129))
3484                 {   Return (SMWD)   }
3486             //  test SubtractOp with WORD SystemMemory OpRegion
3487             Subtract (SMWD, 5, SMWD)
3488             If (LNotEqual (SMWD, 0x0124))
3489                 {   Return (SMWD)   }
3492             //  test AddOp with BYTE SystemMemory OpRegion
3493             Store (0x01, SMBY)
3494             Add (SMBY, 4, SMBY)
3495             If (LNotEqual (SMBY, 0x05))
3496                 {   Return (SMBY)   }
3498             //  test SubtractOp with BYTE SystemMemory OpRegion
3499             Subtract (SMBY, 3, SMBY)
3500             If (LNotEqual (SMBY, 0x02))
3501                 {   Return (SMBY)   }
3503             Return (0)
3504         }   //  TEST
3505     }   //  ADSU
3508 // test IncDecOp.asl
3510     Device (INDC)
3511     {
3512         //  create System Memory Operation Region and field overlays
3513         OperationRegion (RAM, SystemMemory, 0x400000, 0x100)
3514         Field (RAM, AnyAcc, NoLock, Preserve)
3515         {
3516             SMDW,   32, //  32-bit DWORD
3517             SMWD,   16, //  16-bit WORD
3518             SMBY,   8,  //  8-bit BYTE
3519         }   //  Field(RAM)
3521         Method (TEST,, Serialized)
3522         {
3523             Store ("++++++++ IncDecOp Test", Debug)
3525             Name (DWRD, 0x12345678)
3526             Name (WRD, 0x1234)
3527             Name (BYT, 0x12)
3529             //  Test IncrementOp with DWORD data
3530             Store (0x12345678, DWRD)
3531             Increment (DWRD)
3532             If (LNotEqual (DWRD, 0x12345679))
3533                 {   Return (DWRD)   }
3535             //  Test IncrementOp with WORD data
3536             Increment (WRD)
3537             If (LNotEqual (WRD, 0x1235))
3538                 {   Return (WRD)    }
3540             //  Test IncrementOp with BYTE data
3541             Increment (BYT)
3542             If (LNotEqual (BYT, 0x13))
3543                 {   Return (BYT)    }
3545             //  Test DecrementOp with DWORD data
3546             Decrement (DWRD)
3547             If (LNotEqual (DWRD, 0x12345678))
3548                 {   Return (DWRD)   }
3550             //  Test DecrementOp with WORD data
3551             Decrement (WRD)
3552             If (LNotEqual (WRD, 0x1234))
3553                 {   Return (WRD)    }
3555             //  Test DecrementOp with BYTE data
3556             Decrement (BYT)
3557             If (LNotEqual (BYT, 0x12))
3558                 {   Return (BYT)    }
3561             //  test IncrementOp with DWORD SystemMemory OpRegion
3562             Store (0x01234567, SMDW)
3563             Increment (SMDW)
3564             If (LNotEqual (SMDW, 0x01234568))
3565                 {   Return (SMDW)   }
3567             //  test DecrementOp with DWORD SystemMemory OpRegion
3568             Decrement (SMDW)
3569             If (LNotEqual (SMDW, 0x01234567))
3570                 {   Return (SMDW)   }
3573             //  test IncrementOp with WORD SystemMemory OpRegion
3574             Store (0x0123, SMWD)
3575             Increment (SMWD)
3576             If (LNotEqual (SMWD, 0x0124))
3577                 {   Return (SMWD)   }
3579             //  test DecrementOp with WORD SystemMemory OpRegion
3580             Decrement (SMWD)
3581             If (LNotEqual (SMWD, 0x0123))
3582                 {   Return (SMWD)   }
3585             //  test IncrementOp with BYTE SystemMemory OpRegion
3586             Store (0x01, SMBY)
3587             Increment (SMBY)
3588             If (LNotEqual (SMBY, 0x02))
3589                 {   Return (SMBY)   }
3591             //  test DecrementOp with BYTE SystemMemory OpRegion
3592             Decrement (SMBY)
3593             If (LNotEqual (SMBY, 0x01))
3594                 {   Return (SMBY)   }
3596             Return (0)
3597         }   //  TEST
3598     }   //  INDC
3601 // test LOps.asl
3603 //This source tests all the logical operators. Logical operators in ASL are as follows.
3604 //LAnd, LEqual, LGreater, LLess, LNot, LNotEqual, LOr.
3605 // Success will return 0 and failure will return a non zero number. Check the source code for
3606 // non zero number to find where the test failed
3608     Device (LOPS)
3609     {
3610         //Create System Memory Operation Region and field overlays
3611         OperationRegion (RAM, SystemMemory, 0x400000, 0x100)
3612         Field (RAM, AnyAcc, NoLock, Preserve)
3613         {
3614             SMDW,   32, //  32-bit DWORD
3615             SMWD,   16, //  16-bit WORD
3616             SMBY,   8,  //  8-bit BYTE
3617         }// Field(RAM)
3619         //And with Byte Data
3620         Name (BYT1, 0xff)
3621         Name (BYT2, 0xff)
3622         Name (BRSL, 0x00)
3624         //And with Word Data
3625         Name (WRD1, 0xffff)
3626         Name (WRD2, 0xffff)
3627         Name (WRSL, 0x0000)
3629         //And with DWord Data
3630         Name (DWD1, 0xffffffff)
3631         Name (DWD2, 0xffffffff)
3632         Name (DRSL, 0x00000000)
3634         Name(RSLT,1)
3636         Method (ANDL,2) // Test Logical And
3637         {
3638             //test with the arguments passed
3639             if(LEqual(Arg0,Arg1))
3640             { Store(LAnd(Arg0,Arg1),RSLT)
3641                 if(LNotEqual(Ones,RSLT))
3642                 {Return(11)}
3643             }
3645             //test with he locals
3646             Store(Arg0,Local0)
3647             Store(Arg1,Local1)
3649             if(LEqual(Local0,Local1))
3650             {
3651                 Store(LAnd(Local0,Local1),RSLT)
3652                 if(LNotEqual(Ones,RSLT))
3653                     {Return(12)}
3654             }
3656             //test with BYTE data
3657             if(LEqual(BYT1,BYT2))
3658             { Store(LAnd(BYT1,BYT2),BRSL)
3659                 if(LNotEqual(Ones,BRSL))
3660                 {Return(13)}
3661             }
3663             //test with WORD data
3664             if(LEqual(WRD1,WRD2))
3665             { Store(LAnd(WRD1,WRD2),WRSL)
3666                 if(LNotEqual(Ones,WRSL))
3667                 {Return(14)}
3668             }
3670             //test with DWORD data
3671             if(LEqual(DWD1,DWD2))
3672             { Store(LAnd(DWD1,DWD2),DRSL)
3673                 if(LNotEqual(Ones,DRSL))
3674                 {Return(15)}
3675             }
3677             //Test for system memory data for each test case.
3679                 Store(0xff,BYT1)
3680                 Store(0xff,SMBY)
3681                 Store(0x00,BRSL)
3683             //test with BYTE system memory data
3684             if(LEqual(BYT1,SMBY))
3685             { Store(LAnd(BYT1,SMBY),BRSL)
3686                 if(LNotEqual(Ones,BRSL))
3687                 {Return(16)}
3688             }
3690             Store (0xffff,WRD1)
3691             Store(0xffff,SMWD)
3692             Store(0x0000,WRSL)
3693             //test with WORD system memory data
3694             if(LEqual(WRD1,SMWD))
3695             { Store(LAnd(WRD1,SMWD),WRSL)
3696                 if(LNotEqual(Ones,WRSL))
3697                 {Return(17)}
3698             }
3700             Store(0x000000,DRSL)
3701             Store (0xffffff,DWD1)
3702             Store(0xffffff,SMDW)
3704             //test with DWORD system memory data
3705             if(LEqual(DWD1,SMDW))
3706             { Store(LAnd(DWD1,SMDW),DRSL)
3707                 if(LNotEqual(Ones,DRSL))
3708                 {Return(18)}
3709             }
3711             Return(0)
3713         }//ANDL
3715         //Test the LOr Operator
3717         Method (ORL_,2)
3718         {//ORL_
3720             //test with the arguments passed
3721             if(LEqual(Arg0,Arg1))
3722             {
3723                 Store(LOr(Arg0,Arg1),RSLT)
3724                 if(LNotEqual(Ones,RSLT))
3725                 {
3726                     Return(21)
3727                 }
3728             }
3730             //test with he locals
3731             Store(Arg0,Local0)
3732             Store(Arg1,Local1)
3734             if(LEqual(Local0,Local1))
3735             {
3736                 Store(LOr(Local0,Local1),RSLT)
3737                 if(LNotEqual(Ones,RSLT))
3738                     {Return(22)}
3739             }
3741             //Check with 1 LOred with 0 on byte data
3742             Store(0xff,BYT1)
3743             Store(0x00,BYT2)
3744             Store(0x00,BRSL)
3746             if(LNotEqual(BYT1, BYT2))
3747             {
3748                 Store(LOr(BYT1, BYT2), BRSL)
3749                 if(LNotEqual(Ones,BRSL))
3750                 {Return(23)}
3751             }
3753             //Check with 1 LOred with 0 on WORD data
3754             Store(0xffff,WRD1)
3755             Store(0x0000,WRD2)
3756             Store(0x0000,WRSL)
3758             if(LNotEqual(WRD1, WRD2))
3759             {
3760                 Store(LOr(WRD1, WRD2), WRSL)
3761                 if(LNotEqual(Ones,WRSL))
3762                 {Return(24)}
3763             }
3765             //Check with 1 LOred with 0 on DWORD data
3766             Store(0xffffffff,DWD1)
3767             Store(0x00000000,DWD2)
3768             Store(0x00000000,DRSL)
3770             if(LNotEqual(DWD1, DWD2))
3771             {
3772                 Store(LOr(DWD1, DWD2), DRSL)
3773                 if(LNotEqual(Ones,DRSL))
3774                 {Return(25)}
3775             }
3777             Store(0x00,BYT1)
3778             Store(0xff,SMBY)
3779             Store(0x00,BRSL)
3781             //test with BYTE system memory data
3782             if(LEqual(BYT1,SMBY))
3783             { Store(LOr(BYT1,SMBY),BRSL)
3784                 if(LNotEqual(Ones,BRSL))
3785                 {Return(26)}
3786             }
3788             Store (0x0000,WRD1)
3789             Store(0xffff,SMWD)
3790             Store(0x0000,WRSL)
3792             //test with WORD system memory data
3793             if(LEqual(WRD1,SMWD))
3794             { Store(LOr(WRD1,SMWD),WRSL)
3795                 if(LNotEqual(Ones,WRSL))
3796                 {Return(27)}
3797             }
3800             Store(0x00000000,DWD1)
3801             Store(0xffffffff,SMDW)
3802             Store(0x00000000,DRSL)
3804             //test with DWORD system memory data
3805             if(LEqual(DWD1,SMDW))
3806             { Store(LAnd(DWD1,SMDW),DRSL)
3807                 if(LNotEqual(Ones,DRSL))
3808                 {Return(28)}
3809             }
3810             Return(0)
3812         }//ORL_
3814         //This method tests LGreater and LNot operator
3815         Method(LSGR,2)
3816         {//LSGR
3818             //Test on arguements passed
3820             //in test data, Arg1 > Arg0
3821             if(LEqual(Ones,LNot(LGreater(Arg1,Arg0))))
3822             {Return(31)}
3824             //test LLessEqual
3825             if(LEqual(Ones,LNot(LGreaterEqual(Arg1,Arg0))))
3826             {Return(32)}
3828             if(LEqual(Ones,LLess(Arg1,Arg0)))
3829             {Return(33)}
3831             //test LLessEqual
3832             if(LEqual(Ones,LLessEqual(Arg1,Arg0)))
3833             {Return(34)}
3835             Store(Arg0,Local0)
3836             Store(Arg1,Local1)
3838             //test with the locals
3839             if(LNot(LGreater(Local1,Local0)))
3840                 {Return(35)}
3842             //test on Byte data
3843             Store(0x12,BYT1)
3844             Store(0x21,BYT2)
3846             if(LNot(LGreater(BYT2,BYT1)))
3847                 {Return(36)}
3849             if(LNot(LLess(BYT1,BYT2)))
3850                 {Return(37)}
3852             //test LGreaterEqual with byte data
3853             if(LNot(LGreaterEqual(BYT2,BYT1)))
3854                 {Return(38)}
3856             //test LLessEqual byte data
3857             if(LNot(LLessEqual(BYT1,BYT2)))
3858                 {Return(39)}
3861             //test on Word data
3862             Store(0x1212,WRD1)
3863             Store(0x2121,WRD2)
3865             if(LNot(LGreater(WRD2,WRD1)))
3866                 {Return(310)}
3868             if(LNot(LLess(WRD1,WRD2)))
3869                 {Return(311)}
3871             //Test LGreaterEqual with Word Data
3872             if(LNot(LGreaterEqual(WRD2,WRD1)))
3873                 {Return(312)}
3876             //Test LLessEqual with Word Data
3877             if(LNot(LLessEqual(WRD1,WRD2)))
3878                 {Return(313)}
3880             //test on DWord data
3881             Store(0x12121212,DWD1)
3882             Store(0x21212121,DWD2)
3884             if(LNot(LGreater(DWD2,DWD1)))
3885                 {Return(314)}
3887             if(LNot(LLess(DWD1,DWD2)))
3888                 {Return(315)}
3891             //Test LGreaterEqual with Dword
3892             if(LNot(LGreaterEqual(DWD2,DWD1)))
3893                 {Return(316)}
3895             //Test LLessEqual DWord
3896             if(LNot(LLessEqual(DWD1,DWD2)))
3897                 {Return(317)}
3899             Return(0)
3900         }//LSGR
3902         //The test method
3903         Method(TEST)
3904         {
3905             Store ("++++++++ LOps Test", Debug)
3907             Store(0,RSLT)
3908             //Call LAndOp method
3909             Store(ANDL(2,2),RSLT)
3910             if(LNotEqual(RSLT,0))
3911              {Return(RSLT)}
3913             //Call LOrOp Method
3914             Store(ORL_(5,5),RSLT)
3915             if(LNotEqual(RSLT,0))
3916             {Return(RSLT)}
3918             //Call LSGR Method
3919             Store(LSGR(5,7),RSLT)
3920             if(LNotEqual(RSLT,0))
3921             {Return(RSLT)}
3923             Return(0)
3924         }//TEST
3925     }//LOPS
3928 // test FdSetOps.asl
3930 //  FindSetLeftBit - Find Set Left Bit
3931 //  FindSetLeftBitTerm  := FindSetLeftBit
3932 //  (   Source, //TermArg=>Integer
3933 //      Result  //Nothing | SuperName
3934 //  ) => Integer
3935 //  Source is evaluated as integer data type, and the one-based bit location of
3936 //  the first MSb (most significant set bit) is optionally stored into Result.
3937 //  The result of 0 means no bit was set, 1 means the left-most bit set is the
3938 //  first bit, 2 means the left-most bit set is the second bit, and so on.
3939 //  FindSetRightBit - Find Set Right Bit
3941 //  FindSetRightBitTerm := FindSetRightBit
3942 //  (   Source, //TermArg=>Integer
3943 //      Result  //Nothing | SuperName
3944 //  ) => Integer
3945 //  Source is evaluated as integer data type, and the one-based bit location of
3946 //  the most LSb (least significant set bit) is optionally stored in Result.
3947 //  The result of 0 means no bit was set, 32 means the first bit set is the
3948 //  32nd bit, 31 means the first bit set is the 31st bit, and so on.
3950 //  If the Control method is success Zero is returned. Otherwise a non-zero
3951 //  number is returned.
3953     Device (FDSO)
3954     {   //  FDSO
3956         //  Create System Memory Operation Region and field overlays
3957         OperationRegion (RAM, SystemMemory, 0x400000, 0x100)
3958         Field (RAM, AnyAcc, NoLock, Preserve)
3959         {
3960             SMDW,   32, //  32-bit DWORD
3961             SMWD,   16, //  16-bit WORD
3962             SMBY,   8,      //  8-bit BYTE
3963         }   //  Field(RAM)
3965         //  Byte Data
3966         Name (BYT1, 1)
3967         Name (BRSL, 0x00)
3969         //  Word Data
3970         Name (WRD1, 0x100)
3971         Name (WRSL, 0x0000)
3973         //  DWord Data
3974         Name (DWD1, 0x10000)
3975         Name (DRSL, 0x00000000)
3976         Name (RSLT, 1)
3977         Name (CNTR, 1)
3979         Method (SHFT,2)
3980         //  Arg0 is the actual data and Arg1 is the bit position
3981         {   //  SHFT
3982             Store (Arg0, Local0)
3983             Store (Arg1, Local1)
3985             FindSetLeftBit (Arg0, BRSL)
3986             If (LNotEqual (BRSL, Arg1))
3987                 {   Return (0x11)   }
3988             If (LNotEqual (Arg0, Local0))
3989                 {   Return (0x12)   }
3991             FindSetLeftBit (Local0, BRSL)
3992             If (LNotEqual (BRSL, Local1))
3993                 {   Return (0x13)   }
3994             If (LNotEqual (Arg0, Local0))
3995                 {   Return (0x14)   }
3997             //  test the byte value for SetLeftBit
3998             Store (7, BYT1)
3999             FindSetLeftBit (BYT1, BRSL)
4000             If (LNotEqual (BRSL, 3))
4001                 {   Return (0x15)   }
4002             If (LNotEqual (BYT1, 7))
4003                 {   Return (0x16)   }
4005             Store (1, BYT1)
4006             Store (1, CNTR)
4007             While (LLessEqual (CNTR, 8))
4008             {   //  FindSetLeftBit check loop for byte data
4009                 FindSetLeftBit (BYT1, BRSL)
4010                 If (LNotEqual (BRSL, CNTR))
4011                     {   Return (0x17)   }
4013                 //  Shift the bits to check the same
4014                 ShiftLeft (BYT1, 1, BYT1)
4015                 Increment (CNTR)
4016             }   //  FindSetLeftBit check loop for byte data
4019             //  Check BYTE value for SetRightBit
4020             Store (7, BYT1)
4021             FindSetRightBit (BYT1, BRSL)
4022             If (LNotEqual (BRSL, 1))
4023                 {   Return (0x21)   }
4024             If (LNotEqual (BYT1, 7))
4025                 {   Return (0x22)   }
4027             Store (1, CNTR)
4028             Store (0xFF, BYT1)
4029             While (LLessEqual (CNTR, 8))
4030             {   //  FindSetRightBit check loop for byte data
4031                 FindSetRightBit (BYT1, BRSL)
4032                 If (LNotEqual (BRSL, CNTR))
4033                     {   Return (0x23)   }
4035                 ShiftLeft (BYT1, 1, BYT1)
4036                 Increment (CNTR)
4037             }   //  FindSetRightBit check loop for byte data
4040             //  Test Word value for SetLeftBit
4041             Store (9, CNTR)
4042             Store (0x100, WRD1)
4043             While (LLessEqual (CNTR, 16))
4044             {
4045                 //  FindSetLeftBit check loop for Word data
4046                 FindSetLeftBit (WRD1, WRSL)
4047                 If (LNotEqual (WRSL, CNTR))
4048                     {   Return (0x31)   }
4050                 //  Shift the bits to check the same
4051                 ShiftLeft (WRD1, 1, WRD1)
4052                 Increment (CNTR)
4053             }   //  FindSetLeftBit check loop for Word data
4055             //  Check Word value for SetRightBit
4056             Store (9, CNTR)
4057             Store (0xFF00, WRD1)
4058             While (LLessEqual (CNTR, 16))
4059             {
4060                 //  FindSetRightBit check loop for Word data
4061                 FindSetRightBit (WRD1, WRSL)
4062                 If (LNotEqual (WRSL, CNTR))
4063                     {   Return (0x32)   }
4065                 ShiftLeft (WRD1, 1, WRD1)
4066                 Increment (CNTR)
4067             }   //  FindSetRightBit check loop for Word data
4069             //  Test the DWord value for SetLeftBit
4070             Store (17, CNTR)
4071             Store (0x10000, DWD1)
4072             While (LLessEqual (CNTR, 32))
4073             {
4074                 //  FindSetLeftBit check loop for Dword
4075                 FindSetLeftBit (DWD1, DRSL)
4076                 If (LNotEqual (DRSL, CNTR))
4077                     {   Return (0x41)   }
4079                 //  Shift the bits to check the same
4080                 ShiftLeft (DWD1, 1, DWD1)
4081                 Increment (CNTR)
4082             }   //  FindSetLeftBit check loop for Dword
4084             //  Check DWord value for SetRightBit
4085             Store (17, CNTR)
4086             Store (0xFFFF0000, DWD1)
4087             While (LLessEqual (CNTR, 32))
4088             {   //  FindSetRightBit Check loop for DWORD
4089                 FindSetRightBit (DWD1, DRSL)
4090                 If (LNotEqual (DRSL, CNTR))
4091                     {   Return (0x42)   }
4093                 ShiftLeft (DWD1, 1, DWD1)
4094                 Increment (CNTR)
4095             }   //  FindSetRightBit Check loop for DWORD
4097             Return (0)
4098         }   //  SHFT
4100         //  Test method called from amlexec
4101         Method (TEST)
4102         {   //  TEST
4104             Store ("++++++++ FdSetOps Test", Debug)
4106             Store (SHFT (0x80, 8), RSLT)
4107             If (LNotEqual (RSLT, 0))
4108                 {   Return (RSLT)   }
4110             Return (0)  //  pass
4111         }   //  TEST
4112     }   //  Device FDSO
4115 // test MulDivOp.asl
4117     Device (MLDV)
4118     {
4119         //  create System Memory Operation Region and field overlays
4120         OperationRegion (RAM, SystemMemory, 0x400000, 0x100)
4121         Field (RAM, AnyAcc, NoLock, Preserve)
4122         {
4123             SMDW,   32, //  32-bit DWORD
4124             SMWD,   16, //  16-bit WORD
4125             SMBY,   8,  //  8-bit BYTE
4126         }   //  Field(RAM)
4128         Method (TEST,, Serialized)
4129         {
4130             Store ("++++++++ MulDivOp Test", Debug)
4132             Name (RMDR, 0)
4133             Name (DWRD, 0x12345678)
4134             Name (WRD, 0x1234)
4135             Name (BYT, 0x12)
4137             //  Test MultiplyOp with DWORD data
4138             Store (0x12345678, DWRD)
4139             Multiply (DWRD, 3, DWRD)
4140             If (LNotEqual (DWRD, 0x369D0368))
4141                 {   Return (DWRD)   }
4143             //  Test MultiplyOp with WORD data
4144             Multiply (WRD, 4, WRD)
4145             If (LNotEqual (WRD, 0x48D0))
4146                 {   Return (WRD)    }
4148             //  Test MultiplyOp with BYTE data
4149             Multiply (BYT, 5, BYT)
4150             If (LNotEqual (BYT, 0x5A))
4151                 {   Return (BYT)    }
4153             //  Test DivideOp with DWORD data
4154             Divide (DWRD, 3, DWRD, RMDR)
4155             If (LNotEqual (DWRD, 0x12345678))
4156                 {   Return (DWRD)   }
4157             If (LNotEqual (RMDR, 0))
4158                 {   Return (RMDR)   }
4160             //  Test DivideOp with WORD data
4161             Divide (WRD, 4, WRD, RMDR)
4162             If (LNotEqual (WRD, 0x1234))
4163                 {   Return (WRD)    }
4164             If (LNotEqual (RMDR, 0))
4165                 {   Return (RMDR)   }
4167             //  Test DivideOp with BYTE data
4168             Divide (BYT, 5, BYT, RMDR)
4169             If (LNotEqual (BYT, 0x12))
4170                 {   Return (BYT)    }
4171             If (LNotEqual (RMDR, 0))
4172                 {   Return (RMDR)   }
4175             //  test MultiplyOp with DWORD SystemMemory OpRegion
4176             Store (0x01234567, SMDW)
4177             Multiply (SMDW, 2, SMDW)
4178             If (LNotEqual (SMDW, 0x02468ACE))
4179                 {   Return (SMDW)   }
4181             //  test DivideOp with DWORD SystemMemory OpRegion
4182             Divide (SMDW, 3, SMDW, RMDR)
4183             If (LNotEqual (SMDW, 0x00C22E44))
4184                 {   Return (SMDW)   }
4185             If (LNotEqual (RMDR, 2))
4186                 {   Return (RMDR)   }
4189             //  test MultiplyOp with WORD SystemMemory OpRegion
4190             Store (0x0123, SMWD)
4191             Multiply (SMWD, 3, SMWD)
4192             If (LNotEqual (SMWD, 0x369))
4193                 {   Return (SMWD)   }
4195             //  test DivideOp with WORD SystemMemory OpRegion
4196             Divide (SMWD, 2, SMWD, RMDR)
4197             If (LNotEqual (SMWD, 0x01B4))
4198                 {   Return (SMWD)   }
4199             If (LNotEqual (RMDR, 1))
4200                 {   Return (RMDR)   }
4203             //  test MultiplyOp with BYTE SystemMemory OpRegion
4204             Store (0x01, SMBY)
4205             Multiply (SMBY, 7, SMBY)
4206             If (LNotEqual (SMBY, 0x07))
4207                 {   Return (SMBY)   }
4209             //  test DivideOp with BYTE SystemMemory OpRegion
4210             Divide (SMBY, 4, SMBY, RMDR)
4211             If (LNotEqual (SMBY, 0x01))
4212                 {   Return (SMBY)   }
4213             If (LNotEqual (RMDR, 3))
4214                 {   Return (RMDR)   }
4216             Return (0)
4217         }   //  TEST
4218     }   //  MLDV
4221 // test NBitOps.asl
4223 //NAnd - Bit-wise NAnd
4224 //NAndTerm  := NAnd(
4225 //  Source1,    //TermArg=>Integer
4226 //  Source2 //TermArg=>Integer
4227 //  Result  //Nothing | SuperName
4228 //) => Integer
4229 //Source1 and Source2 are evaluated as integer data types, a bit-wise NAND is performed, and the result is optionally
4230 //stored in Result.
4232 //NOr - Bitwise NOr
4233 //NOrTerm   := NOr(
4234 //  Source1,    //TermArg=>Integer
4235 //  Source2 //TermArg=>Integer
4236 //  Result  //Nothing | SuperName
4237 //) => Integer
4238 //Source1 and Source2 are evaluated as integer data types, a bit-wise NOR is performed, and the result is optionally
4239 //stored in Result.
4240 // Not - Not
4241 //NotTerm   := Not(
4242 //  Source, //TermArg=>Integer
4243 //  Result  //Nothing | SuperName
4244 //) => Integer
4245 //Source1 is evaluated as an integer data type, a bit-wise NOT is performed, and the result is optionally stored in
4246 //Result.
4248 //If the Control method is success Zero is returned else a non-zero number is returned
4250     Device (NBIT)
4251     {//NBIT
4253         //Create System Memory Operation Region and field overlays
4254         OperationRegion (RAM, SystemMemory, 0x400000, 0x100)
4255         Field (RAM, AnyAcc, NoLock, Preserve)
4256         {
4257             SMDW,   32, //  32-bit DWORD
4258             SMWD,   16, //  16-bit WORD
4259             SMBY,   8,  //  8-bit BYTE
4260         }// Field(RAM)
4263         //And with Byte Data
4264         Name (BYT1, 0xff)
4265         Name (BYT2, 0xff)
4266         Name (BRSL, 0x00)
4268         //And with Word Data
4269         Name (WRD1, 0xffff)
4270         Name (WRD2, 0xffff)
4271         Name (WRSL, 0x0000)
4273         //And with DWord Data
4274         Name (DWD1, 0xffffffff)
4275         Name (DWD2, 0xffffffff)
4276         Name (DRSL, 0x00000000)
4277         Name(RSLT,1)
4280         Name(ARSL,0x00)
4281         Name(LRSL,0x00)
4283         Method(NNDB,2)
4284         {//NNDB
4286             Store(0xffffffff,SMDW)
4287             Store(0xffff,SMWD)
4288             Store(0xff,SMBY)
4291             NAnd(Arg0,Arg1,ARSL)
4292             if(LNotEqual(ARSL,0xfffffffd))
4293              {Return(11)}
4295              Store(Arg0,local0)
4296              Store(Arg1,Local1)
4298              NAnd(Local0,Local1,LRSL)
4299                 if(LNotEqual(LRSL,0xfffffffd))
4300              {Return(12)}
4303             //Byte data
4304             NAnd(BYT1,BYT2,BRSL)
4305             if(LNotEqual(BRSL,0xffffff00))
4306              {Return(13)}
4308             //Word Data
4309              NAnd(WRD1,WRD2,WRSL)
4310             if(LNotEqual(WRSL,0xffff0000))
4311              {Return(14)}
4313              //DWord Data
4314              NAnd(DWD1,DWD2,DRSL)
4315             if(LNotEqual(DRSL,0x00000000))
4316              {Return(15)}
4318              //Byte data
4319             NAnd(SMBY,0xff,BRSL)
4320             if(LNotEqual(BRSL,0xffffff00))
4321              {Return(16)}
4323             //Word Data
4324              NAnd(SMWD,0xffff,WRSL)
4325             if(LNotEqual(WRSL,0xffff0000))
4326              {Return(17)}
4328              //DWord Data
4329              NAnd(SMDW,0xffffffff,DRSL)
4330             if(LNotEqual(DRSL,0x00000000))
4331              {Return(18)}
4333             Return(0)
4335         }//NNDB
4337         Method(NNOR,2)
4338         {//NNOR
4340             NOr(Arg0,Arg1,ARSL)
4341             if(LNotEqual(ARSL,0xfffffffd))
4342              {Return(21)}
4344             Store(Arg0,local0)
4345             Store(Arg1,Local1)
4347             NOr(Local0,Local1,LRSL)
4348             if(LNotEqual(LRSL,0xfffffffd))
4349              {Return(22)}
4352             //Byte data
4353             NOr(BYT1,BYT2,BRSL)
4354             if(LNotEqual(BRSL,0xffffff00))
4355              {Return(23)}
4357             //Word Data
4358             NOr(WRD1,WRD2,WRSL)
4359             if(LNotEqual(WRSL,0xffff0000))
4360              {Return(24)}
4362             //DWord Data
4363             NOr(DWD1,DWD2,DRSL)
4364             if(LNotEqual(DRSL,0x00000000))
4365              {Return(25)}
4367              //System Memory Byte data
4368             NOr(SMBY,0xff,BRSL)
4369             if(LNotEqual(BRSL,0xffffff00))
4370              {Return(26)}
4372             //System Memory Word Data
4373             NOr(SMWD,0xffff,WRSL)
4374             if(LNotEqual(WRSL,0xffff0000))
4375              {Return(27)}
4377             //System Memory DWord Data
4378             NOr(SMDW,0xffffffff,DRSL)
4379             if(LNotEqual(DRSL,0x00000000))
4380              {Return(28)}
4382             Return(0)
4384         }//NNOR
4386         Method(NNOT,2)
4387         {//NNOT
4389             Or(Arg0,Arg1,ARSL)
4390             Not(ARSL,ARSL)
4391             if(LNotEqual(ARSL,0xfffffffd))
4392              {Return(31)}
4394             Store(Arg0,local0)
4395             Store(Arg1,Local1)
4397             Or(Local0,Local1,LRSL)
4398             Not(LRSL,LRSL)
4399             if(LNotEqual(LRSL,0xfffffffd))
4400              {Return(32)}
4403             //Byte data
4404             Or(BYT1,BYT2,BRSL)
4405             Not(BRSL,BRSL)
4406             if(LNotEqual(BRSL,0xffffff00))
4407              {Return(33)}
4409             //Word Data
4410             Or(WRD1,WRD2,WRSL)
4411             Not(WRSL,WRSL)
4412             if(LNotEqual(WRSL,0xffff0000))
4413              {Return(34)}
4415             //DWord Data
4416             Or(DWD1,DWD2,DRSL)
4417             Not(DRSL,DRSL)
4418             if(LNotEqual(DRSL,0x00000000))
4419              {Return(35)}
4421              //System Memory Byte data
4422             Or(SMBY,0xff,BRSL)
4423             Not(BRSL,BRSL)
4424             if(LNotEqual(BRSL,0xffffff00))
4425              {Return(36)}
4427             //System Memory Word Data
4428             Or(SMWD,0xffff,WRSL)
4429             Not(WRSL,WRSL)
4430             if(LNotEqual(WRSL,0xffff0000))
4431              {Return(37)}
4433             //System Memory DWord Data
4434             Or(SMDW,0xffffffff,DRSL)
4435             Not(DRSL,DRSL)
4436             if(LNotEqual(DRSL,0x00000000))
4437              {Return(38)}
4439             Return(0)
4440         }//NNOT
4443         Method(TEST)
4444         {
4446             Store ("++++++++ NBitOps Test", Debug)
4448             Store(NNDB(2,2),RSLT)
4449             if(LNotEqual(RSLT,0))
4450                 {Return(RSLT)}
4452             Store(NNOR(2,2),RSLT)
4453             if(LNotEqual(RSLT,0))
4454                 {Return(RSLT)}
4456             Store(NNOT(2,2),RSLT)
4457             if(LNotEqual(RSLT,0))
4458                 {Return(RSLT)}
4461            Return(0)
4462         }
4464     }//Device NBIT
4467 // test ShftOp.asl
4469 //ShiftRightTerm    := ShiftRight(
4470 //  Source, //TermArg=>Integer
4471 //  ShiftCount  //TermArg=>Integer
4472 //  Result  //Nothing | SuperName
4473 //) => Integer
4474 //Source and ShiftCount are evaluated as integer data types. Source is shifted right with the most significant bit
4475 //zeroed ShiftCount times.  The result is optionally stored into Result.
4477 //ShiftLeft(
4478 //  Source, //TermArg=>Integer
4479 //  ShiftCount  //TermArg=>Integer
4480 //  Result  //Nothing | SuperName
4481 //) => Integer
4482 //Source and ShiftCount are evaluated as integer data types. Source is shifted left with the least significant
4483 //bit zeroed ShiftCount times. The result is optionally stored into Result.
4485 //If the Control method is success Zero is returned else a non-zero number is returned
4486     Device (SHFT)
4487     {//SHFT
4489         //Create System Memory Operation Region and field overlays
4490         OperationRegion (RAM, SystemMemory, 0x400000, 0x100)
4491         Field (RAM, AnyAcc, NoLock, Preserve)
4492         {
4493             SMDW,   32, //  32-bit DWORD
4494             SMWD,   16, //  16-bit WORD
4495             SMBY,   8,  //  8-bit BYTE
4496         }// Field(RAM)
4499         Name(SHFC,0x00)
4501         //And with Byte Data
4502         Name (BYT1, 0xff)
4503         Name (BRSL, 0x00)
4505         //And with Word Data
4506         Name (WRD1, 0xffff)
4507         Name (WRSL, 0x0000)
4509         //And with DWord Data
4510         Name (DWD1, 0xffffffff)
4511         Name (DRSL, 0x00000000)
4513         Name(RSLT,1)
4515         Name(ARSL,0x00)
4516         Name(LRSL,0x00)
4518         Method(SLFT,2)
4519         {//SLFT
4521             Store(0xffffffff,SMDW)
4522             Store(0xffff,SMWD)
4523             Store(0xff,SMBY)
4526             //Arg0-> 2 & Arg1->2
4527             ShiftLeft(Arg0,Arg1,ARSL)
4528             if(LNotEqual(ARSL,8))
4529             {Return(11)}
4531              Store(Arg0,local0)
4532              Store(Arg1,Local1)
4534              //Local0->8 and Local1->2
4535              ShiftLeft(Local0,Local1,LRSL)
4536                 if(LNotEqual(LRSL,8))
4537              {Return(12)}
4539             Store(2,SHFC)
4540             //Byte data
4541             ShiftLeft(BYT1,SHFC,BRSL)
4542             if(LNotEqual(BRSL,0x3FC))
4543              {Return(13)}
4545             Store(4,SHFC)
4546             //Word Data
4547              ShiftLeft(WRD1,SHFC,WRSL)
4548             if(LNotEqual(WRSL,0xFFFF0))
4549              {Return(14)}
4551             Store(8,SHFC)
4552             //DWord Data
4553             ShiftLeft(DWD1,SHFC,DRSL)
4554             if(LNotEqual(DRSL,0xFFFFFF00))
4555              {Return(15)}
4558              //System Memory Byte data
4559             Store(4,SHFC)
4560             ShiftLeft(SMBY,SHFC,BRSL)
4561             if(LNotEqual(BRSL,0xFF0))
4562             {Return(16)}
4564             //Word Data
4565             Store(4,SHFC)
4566             ShiftLeft(SMWD,SHFC,WRSL)
4567             if(LNotEqual(WRSL,0xffff0))
4568              {Return(17)}
4570             //DWord Data
4571             Store(8,SHFC)
4572             ShiftLeft(SMDW,SHFC,DRSL)
4573             if(LNotEqual(DRSL,0xFFFFFF00))
4574                 {Return(18)}
4576             Return(0)
4578         }//SLFT
4580         Method(SRGT,2)
4581         {//SRGT
4582             //And with Byte Data
4583             Store (0xff,BYT1)
4584             Store (0x00,BRSL)
4586             //And with Word Data
4587             Store (0xffff,WRD1)
4588             Store (0x0000,WRSL)
4590             //And with DWord Data
4591             Store(0xffffffff,DWD1)
4592             Store (0x00000000,DRSL)
4594             //Reinitialize the result objects
4595             Store(0x00,ARSL)
4596             Store(0x00,LRSL)
4598             Store(0xffffffff,SMDW)
4599             Store(0xffff,SMWD)
4600             Store(0xff,SMBY)
4602             //Arg0-> 2 & Arg1->2
4603             ShiftRight(Arg0,Arg1,ARSL)
4604             if(LNotEqual(ARSL,0))
4605             {Return(21)}
4607              Store(Arg0,local0)
4608              Store(Arg1,Local1)
4610              //Local0->8 and Local1->2
4611              ShiftRight(Local0,Local1,LRSL)
4612                 if(LNotEqual(LRSL,0))
4613              {Return(22)}
4615             Store(2,SHFC)
4616             //Byte data
4617             ShiftRight(BYT1,SHFC,BRSL)
4618             if(LNotEqual(BRSL,0x3F))
4619              {Return(23)}
4621             Store(4,SHFC)
4622             //Word Data
4623              ShiftRight(WRD1,SHFC,WRSL)
4624             if(LNotEqual(WRSL,0xFFF))
4625              {Return(24)}
4627             Store(8,SHFC)
4628             //DWord Data
4629             ShiftRight(DWD1,SHFC,DRSL)
4630             if(LNotEqual(DRSL,0xFFFFFF))
4631              {Return(25)}
4633             //System Memory Byte data
4634             Store(4,SHFC)
4635             ShiftRight(SMBY,SHFC,BRSL)
4636             if(LNotEqual(BRSL,0xF))
4637             {Return(26)}
4639             //Word Data
4640             Store(4,SHFC)
4641             ShiftRight(SMWD,SHFC,WRSL)
4642             if(LNotEqual(WRSL,0xFFF))
4643              {Return(27)}
4645             //DWord Data
4646             Store(8,SHFC)
4647             ShiftRight(SMDW,SHFC,DRSL)
4648             if(LNotEqual(DRSL,0xFFFFFF))
4649                 {Return(28)}
4651             Return(0)
4652         }//SRGT
4654         //Test method called from amlexec
4655         Method(TEST)
4656         {
4657             Store ("++++++++ ShftOp Test", Debug)
4659             Store(SLFT(2,2),RSLT)
4660             if(LNotEqual(RSLT,0))
4661                 {Return(RSLT)}
4662             Store(SRGT(2,2),RSLT)
4663             if(LNotEqual(RSLT,0))
4664                 {Return(RSLT)}
4665            Return(0)
4666         }
4668     }//Device SHFT
4671 // test Xor.asl and slightly modified
4673 //This code tests the XOR opcode term
4674 //Syntax of XOR term
4675 //          XOr(
4676 //                  Source1  //TermArg=>BufferTerm
4677 //                  Source2  //TermArg=>Integer
4678 //                  Result //NameString
4679 //              )
4680 //"Source1" and "Source2" are evaluated as integers, a bit-wise XOR is performed, and the result is optionally stored in
4681 // Result
4682     Device (XORD)
4683     {
4684         //This Method tests XOr operator for all the data types i.e. BYTE, WORD and DWORD
4685         Method (TEST,, Serialized)
4686         {
4687             Store ("++++++++ Xor Test", Debug)
4689             //Overlay in system memory
4690             OperationRegion (RAM, SystemMemory, 0x800000, 256)
4691             Field (RAM, ByteAcc, NoLock, Preserve)
4692             {
4693                 RES1,   1,  //Offset
4694                 BYT1,   8,  //First BYTE
4695                 BYT2,   8,  //Second BYTE
4696                 RBYT,   8,  //Result Byte
4697                 RES2,   1,  //Offset
4698                 WRD1,   16, //First WORD field
4699                 WRD2,   16, //Second WORD field
4700                 RWRD,   16, //RSLT WORD field
4701                 RES3,   1,  //Offset
4702                 DWD1,   32, //First Dword
4703                 DWD2,   32, //Second Dword
4704                 RDWD,   32, //Result Dword
4705                 RES4,   1,  //Offset
4706             }
4708             // Store bits in the single bit fields for checking
4709             //  at the end
4710             Store(1, RES1)
4711             Store(1, RES2)
4712             Store(1, RES3)
4713             Store(1, RES4)
4715             // Check the stored single bits
4716             if(LNotEqual(RES1, 1))
4717             {
4718                 Return(1)
4719             }
4721             if(LNotEqual(RES2, 1))
4722             {
4723                 Return(1)
4724             }
4726             if(LNotEqual(RES3, 1))
4727             {
4728                 Return(1)
4729             }
4731             if(LNotEqual(RES4, 1))
4732             {
4733                 Return(1)
4734             }
4736             //************************************************
4737             // (BYT1) Bit1 ->0 and (BYT2)Bit2 -> 0 condition
4738             Store(0x00,BYT1)
4739             Store(0x00,BYT2)
4740             XOr(BYT1,BYT2,Local0)
4741             Store (Local0, RBYT)
4742             if(LNotEqual(RBYT,0))
4743             {   Return(1)}
4745             // (BYT1) Bit1 ->1 and (BYT2)Bit2 -> 1 condition
4746             Store(0xff,BYT1)
4747             Store(0xff,BYT2)
4748             XOr(BYT1,BYT2,Local0)
4749             Store (Local0, RBYT)
4750             if(LNotEqual(RBYT,0))
4751             {   Return(1)}
4753             // (BYT1) Bit1 ->1 and (BYT)Bit2 -> 0 condition
4754             Store(0x55,BYT1)
4755             Store(0xAA,BYT2)
4756             XOr(BYT1,BYT2,Local0)
4757             Store (Local0, RBYT)
4758             if(LNotEqual(RBYT,0xFF))
4759             {   Return(1)}
4761             //(BYT1) Bit1 ->0 and (BYT2)Bit2 -> 1 condition
4762             Store(0xAA,BYT1)
4763             Store(0x55,BYT2)
4764             XOr(BYT1,BYT2,Local0)
4765             Store (Local0, RBYT)
4766             if(LNotEqual(RBYT,0xFF))
4767             {   Return(1)}
4769             Store(0x12,BYT1)
4770             Store(0xED,BYT2)
4772             XOr(BYT1,BYT2,Local0)
4773             Store (Local0, RBYT)
4774             if(LNotEqual(RBYT,0xFF))
4775             {
4776                 Return(1)
4777             }
4779             // Store known values for checking later
4780             Store(0x12, BYT1)
4781             if(LNotEqual(BYT1, 0x12))
4782             {
4783                 Return(1)
4784             }
4786             Store(0xFE, BYT2)
4787             if(LNotEqual(BYT2, 0xFE))
4788             {
4789                 Return(1)
4790             }
4792             Store(0xAB, RBYT)
4793             if(LNotEqual(RBYT, 0xAB))
4794             {
4795                 Return(1)
4796             }
4798             //***********************************************
4799             // (WRD1) Bit1 ->0 and (WRD2)Bit2 -> 0 condition
4800             Store(0x0000,WRD1)
4801             Store(0x0000,WRD2)
4802             XOr(WRD1,WRD2,RWRD)
4803             if(LNotEqual(RWRD,0))
4804             {   Return(1)}
4806             // (WRD1) Bit1 ->1 and (WRD2)Bit2 -> 1 condition
4807             Store(0xffff,WRD1)
4808             Store(0xffff,WRD2)
4809             XOr(WRD1,WRD2,RWRD)
4810             if(LNotEqual(RWRD,0))
4811             {   Return(1)}
4813             // (WRD1) Bit1 ->1 and (WRD2)Bit2 -> 0 condition
4814             Store(0x5555,WRD1)
4815             Store(0xAAAA,WRD2)
4816             XOr(WRD1,WRD2,RWRD)
4817             if(LNotEqual(RWRD,0xFFFF))
4818             {   Return(1)}
4820             //(WRD1) Bit1 ->0 and (WRD2)Bit2 -> 1 condition
4821             Store(0xAAAA,WRD1)
4822             Store(0x5555,WRD2)
4823             XOr(WRD1,WRD2,RWRD)
4824             if(LNotEqual(RWRD,0xFFFF))
4825             {   Return(1)}
4827             Store(0x1234,WRD1)
4828             Store(0xEDCB,WRD2)
4829             XOr(WRD1,WRD2,RWRD)
4830             if(LNotEqual(RWRD,0xFFFF))
4831             {   Return(1)}
4833             // Store known values for checking later
4834             Store(0x1234, WRD1)
4835             if(LNotEqual(WRD1, 0x1234))
4836             {
4837                 Return(1)
4838             }
4840             Store(0xFEDC, WRD2)
4841             if(LNotEqual(WRD2, 0xFEDC))
4842             {
4843                 Return(1)
4844             }
4846             Store(0x87AB, RWRD)
4847             if(LNotEqual(RWRD, 0x87AB))
4848             {
4849                 Return(1)
4850             }
4853             //**************************************************
4854             // (DWD1) Bit1 ->0 and (DWD2)Bit2 -> 0 condition
4855             Store(0x00000000,DWD1)
4856             Store(0x00000000,DWD2)
4857             XOr(DWD1,DWD2,RDWD)
4858             if(LNotEqual(RDWD,0))
4859             {   Return(1)}
4861             // (DWD1) Bit1 ->1 and (DWD2)Bit2 -> 1 condition
4862             Store(0xffffffff,DWD1)
4863             Store(0xffffffff,DWD2)
4864             XOr(DWD1,DWD2,RDWD)
4865             if(LNotEqual(RDWD,0))
4866             {   Return(1)}
4868             // (DWD1) Bit1 ->1 and (DWD2)Bit2 -> 0 condition
4869             Store(0x55555555,DWD1)
4870             Store(0xAAAAAAAA,DWD2)
4871             XOr(DWD1,DWD2,RDWD)
4872             if(LNotEqual(RDWD,0xFFFFFFFF))
4873             {   Return(1)}
4875             //(DWD1) Bit1 ->0 and (DWD2)Bit2 -> 1 condition
4876             Store(0xAAAAAAAA,DWD1)
4877             Store(0x55555555,DWD2)
4878             XOr(DWD1,DWD2,RDWD)
4879             if(LNotEqual(RDWD,0xFFFFFFFF))
4880             {   Return(1)}
4882             // (DWD1) Bit1 ->1 and (DWD2)Bit2 -> 0 condition
4883             Store(0x12345678,DWD1)
4884             Store(0xEDCBA987,DWD2)
4885             XOr(DWD1,DWD2,RDWD)
4886             if(LNotEqual(RDWD,0xFFFFFFFF))
4887             {   Return(1)}
4889             Store(0x12345678,DWD1)
4890             if(LNotEqual(DWD1,0x12345678))
4891             {
4892                 Return(1)
4893             }
4895             Store(0xFEDCBA98,DWD2)
4896             if(LNotEqual(DWD2,0xFEDCBA98))
4897             {
4898                 Return(1)
4899             }
4901             Store(0x91827364,RDWD)
4902             if(LNotEqual(RDWD,0x91827364))
4903             {
4904                 Return(1)
4905             }
4907             //****************************************************
4908             // Check the stored single bits
4909             if(LNotEqual(RES1, 1))
4910             {
4911                 Return(1)
4912             }
4914             if(LNotEqual(RES2, 1))
4915             {
4916                 Return(1)
4917             }
4919             if(LNotEqual(RES3, 1))
4920             {
4921                 Return(1)
4922             }
4924             if(LNotEqual(RES4, 1))
4925             {
4926                 Return(1)
4927             }
4929             // Change all of the single bit fields to zero
4930             Store(0, RES1)
4931             Store(0, RES2)
4932             Store(0, RES3)
4933             Store(0, RES4)
4935             // Now, check all of the fields
4937             // Byte
4938             if(LNotEqual(BYT1, 0x12))
4939             {
4940                 Return(1)
4941             }
4943             if(LNotEqual(BYT2, 0xFE))
4944             {
4945                 Return(1)
4946             }
4948             if(LNotEqual(RBYT, 0xAB))
4949             {
4950                 Return(1)
4951             }
4953             // Word
4954             if(LNotEqual(WRD1, 0x1234))
4955             {
4956                 Return(1)
4957             }
4959             if(LNotEqual(WRD2, 0xFEDC))
4960             {
4961                 Return(1)
4962             }
4964             if(LNotEqual(RWRD, 0x87AB))
4965             {
4966                 Return(1)
4967             }
4969             // Dword
4970             if(LNotEqual(DWD1, 0x12345678))
4971             {
4972                 Return(1)
4973             }
4975             if(LNotEqual(DWD2, 0xFEDCBA98))
4976             {
4977                 Return(1)
4978             }
4980             if(LNotEqual(RDWD, 0x91827364))
4981             {
4982                 Return(1)
4983             }
4985             // Bits
4986             if(LNotEqual(RES1, 0))
4987             {
4988                 Return(1)
4989             }
4991             if(LNotEqual(RES2, 0))
4992             {
4993                 Return(1)
4994             }
4996             if(LNotEqual(RES3, 0))
4997             {
4998                 Return(1)
4999             }
5001             if(LNotEqual(RES4, 0))
5002             {
5003                 Return(1)
5004             }
5007             Return(0)
5008         }   //  TEST
5009     }   //  XORD
5012 // test CrBytFld.asl
5014 //  CrBytFld test
5015 //      Test for CreateByteField.
5016 //      Tests creating byte field overlay of buffer stored in Local0.
5017 //      Tests need to be added for Arg0 and Name buffers.
5019     Device (CRBF)
5020     {   //  Test device name
5021         Method (TEST)
5022         {
5023             Store ("++++++++ CrBytFld Test", Debug)
5025             //  Local0 is unitialized buffer with 4 elements
5026             Store (Buffer (4) {}, Local0)
5028             //  create Byte Field named BF0 based on Local0 element 0
5029             CreateByteField (Local0, 0, BF0)
5031             //  validate CreateByteField did not alter Local0
5032             Store (ObjectType (Local0), Local1) //  Local1 = Local0 object type
5033             If (LNotEqual (Local1, 3))  //  Buffer object type value is 3
5034                 {   Return (2)  }
5036             //  store something into BF0
5037             Store (1, BF0)
5039             //  validate Store did not alter Local0 object type
5040             Store (ObjectType (Local0), Local1) //  Local1 = Local0 object type
5041             If (LNotEqual (Local1, 3))  //  Buffer object type value is 3
5042                 {   Return (3)  }
5044             //  verify that the Store into BF0 was successful
5045             If (LNotEqual (BF0, 1))
5046                 {   Return (4)  }
5049             //  create Byte Field named BF1 based on Local0 element 1
5050             CreateByteField (Local0, 1, BF1)
5052             //  validate CreateByteField did not alter Local0
5053             Store (ObjectType (Local0), Local1) //  Local1 = Local0 object type
5054             If (LNotEqual (Local1, 3))  //  Buffer object type value is 3
5055                 {   Return (10) }
5057             //  store something into BF1
5058             Store (5, BF1)
5060             //  validate Store did not alter Local0 object type
5061             Store (ObjectType (Local0), Local1) //  Local1 = Local0 object type
5062             If (LNotEqual (Local1, 3))  //  Buffer object type value is 3
5063                 {   Return (11) }
5065             //  verify that the Store into BF1 was successful
5066             If (LNotEqual (BF1, 5))
5067                 {   Return (12) }
5069             //  verify that the Store into BF1 did not alter BF0
5070             If (LNotEqual (BF0, 1))
5071                 {   Return (13) }
5074             //  store something into BF0
5075             Store (0xFFFF, BF0)
5077             //  verify that the Store into BF0 was successful
5078             If (LNotEqual (BF0, 0xFF))
5079                 {   Return (20) }
5081             //  verify that the Store into BF0 did not alter BF1
5082             If (LNotEqual (BF1, 5))
5083                 {   Return (21) }
5086             Return (0)
5087         }   //  TEST
5088     }   //  CRBF
5091 // test IndexOp4.asl
5093 //  IndexOp4 test
5094 //      This is just a subset of the many RegionOp/Index Field test cases.
5095 //      Tests access of index fields smaller than 8 bits.
5097     Device (IDX4)
5098     {   //  Test device name
5100         //  MADM:   Misaligned Dynamic RAM SystemMemory OperationRegion
5101         //          Tests OperationRegion memory access using misaligned BYTE,
5102         //          WORD, and DWORD field element accesses. Validation is performed
5103         //          using both misaligned field entries and aligned field entries.
5104         //
5105         //          MADM returns 0 if all test cases pass or non-zero identifying
5106         //          the failing test case for debug purposes. This non-zero numbers
5107         //          are not guaranteed to be in perfect sequence (i.e., test case
5108         //          index), but are guaranteed to be unique so the failing test
5109         //          case can be uniquely identified.
5110         //
5111         Method (MADM, 1, Serialized)    //  Misaligned Dynamic RAM SystemMemory OperationRegion
5112         //  Arg0    --  SystemMemory OperationRegion base address
5113         {   //  MADM:   Misaligned Dynamic RAM SystemMemory OperationRegion
5114             OperationRegion (RAM, SystemMemory, Arg0, 0x100)
5115             Field (RAM, DwordAcc, NoLock, Preserve)
5116             {   //  aligned field definition (for verification)
5117                 DWD0,   32, //  aligned DWORD field
5118                 DWD1,   32      //  aligned DWORD field
5119             }
5120             Field (RAM, ByteAcc, NoLock, Preserve)
5121             {   //  bit access field definition
5122                 BIT0,   1,      //  single bit field entry
5123                 BIT1,   1,      //  single bit field entry
5124                 BIT2,   1,      //  single bit field entry
5125                 BIT3,   1,      //  single bit field entry
5126                 BIT4,   1,      //  single bit field entry
5127                 BIT5,   1,      //  single bit field entry
5128                 BIT6,   1,      //  single bit field entry
5129                 BIT7,   1,      //  single bit field entry
5130                 BIT8,   1,      //  single bit field entry
5131                 BIT9,   1,      //  single bit field entry
5132                 BITA,   1,      //  single bit field entry
5133                 BITB,   1,      //  single bit field entry
5134                 BITC,   1,      //  single bit field entry
5135                 BITD,   1,      //  single bit field entry
5136                 BITE,   1,      //  single bit field entry
5137                 BITF,   1,      //  single bit field entry
5138                 BI10,   1,      //  single bit field entry
5139                 BI11,   1,      //  single bit field entry
5140                 BI12,   1,      //  single bit field entry
5141                 BI13,   1,      //  single bit field entry
5142                 BI14,   1,      //  single bit field entry
5143                 BI15,   1,      //  single bit field entry
5144                 BI16,   1,      //  single bit field entry
5145                 BI17,   1,      //  single bit field entry
5146                 BI18,   1,      //  single bit field entry
5147                 BI19,   1,      //  single bit field entry
5148                 BI1A,   1,      //  single bit field entry
5149                 BI1B,   1,      //  single bit field entry
5150                 BI1C,   1,      //  single bit field entry
5151                 BI1D,   1,      //  single bit field entry
5152                 BI1E,   1,      //  single bit field entry
5153                 BI1F,   1       //  single bit field entry
5154             }   //  bit access field definition
5156             Field (RAM, ByteAcc, NoLock, Preserve)
5157             {   //  two-bit access field definition
5158                 B2_0,   2,      //  single bit field entry
5159                 B2_1,   2,      //  single bit field entry
5160                 B2_2,   2,      //  single bit field entry
5161                 B2_3,   2,      //  single bit field entry
5162                 B2_4,   2,      //  single bit field entry
5163                 B2_5,   2,      //  single bit field entry
5164                 B2_6,   2,      //  single bit field entry
5165                 B2_7,   2,      //  single bit field entry
5166                 B2_8,   2,      //  single bit field entry
5167                 B2_9,   2,      //  single bit field entry
5168                 B2_A,   2,      //  single bit field entry
5169                 B2_B,   2,      //  single bit field entry
5170                 B2_C,   2,      //  single bit field entry
5171                 B2_D,   2,      //  single bit field entry
5172                 B2_E,   2,      //  single bit field entry
5173                 B2_F,   2       //  single bit field entry
5174             }   //  bit access field definition
5176             //  initialize memory contents using aligned field entries
5177             Store (0x5AA55AA5, DWD0)
5178             Store (0x5AA55AA5, DWD1)
5180             //  set memory contents to known values using misaligned field entries
5181             Store (0, BIT0)
5182                 //  verify memory contents using misaligned field entries
5183                 If (LNotEqual (BIT0, 0))
5184                     {   Return (1)  }
5185                 //  verify memory contents using aligned field entries
5186                 If (LNotEqual (DWD0, 0x5AA55AA4))
5187                     {   Return (2)  }
5189             //  set memory contents to known values using misaligned field entries
5190             Store (1, BIT1)
5191                 //  verify memory contents using misaligned field entries
5192                 If (LNotEqual (BIT1, 1))
5193                     {   Return (3)  }
5194                 //  verify memory contents using aligned field entries
5195                 If (LNotEqual (DWD0, 0x5AA55AA6))
5196                     {   Return (4)  }
5198             //  set memory contents to known values using misaligned field entries
5199             Store (0, BIT2)
5200                 //  verify memory contents using misaligned field entries
5201                 If (LNotEqual (BIT2, 0))
5202                     {   Return (5)  }
5203                 //  verify memory contents using aligned field entries
5204                 If (LNotEqual (DWD0, 0x5AA55AA2))
5205                     {   Return (6)  }
5207             //  set memory contents to known values using misaligned field entries
5208             Store (1, BIT3)
5209                 //  verify memory contents using misaligned field entries
5210                 If (LNotEqual (BIT3, 1))
5211                     {   Return (7)  }
5212                 //  verify memory contents using aligned field entries
5213                 If (LNotEqual (DWD0, 0x5AA55AAA))
5214                     {   Return (8)  }
5216             //  set memory contents to known values using misaligned field entries
5217             Store (1, BIT4)
5218                 //  verify memory contents using misaligned field entries
5219                 If (LNotEqual (BIT4, 1))
5220                     {   Return (9)  }
5221                 //  verify memory contents using aligned field entries
5222                 If (LNotEqual (DWD0, 0x5AA55ABA))
5223                     {   Return (10) }
5225             //  set memory contents to known values using misaligned field entries
5226             Store (0, BIT5)
5227                 //  verify memory contents using misaligned field entries
5228                 If (LNotEqual (BIT5, 0))
5229                     {   Return (11) }
5230                 //  verify memory contents using aligned field entries
5231                 If (LNotEqual (DWD0, 0x5AA55A9A))
5232                     {   Return (12) }
5234             //  set memory contents to known values using misaligned field entries
5235             Store (1, BIT6)
5236                 //  verify memory contents using misaligned field entries
5237                 If (LNotEqual (BIT6, 1))
5238                     {   Return (13) }
5239                 //  verify memory contents using aligned field entries
5240                 If (LNotEqual (DWD0, 0x5AA55ADA))
5241                     {   Return (14) }
5243             //  set memory contents to known values using misaligned field entries
5244             Store (0, BIT7)
5245                 //  verify memory contents using misaligned field entries
5246                 If (LNotEqual (BIT7, 0))
5247                     {   Return (15) }
5248                 //  verify memory contents using aligned field entries
5249                 If (LNotEqual (DWD0, 0x5AA55A5A))
5250                     {   Return (16) }
5252             //  set memory contents to known values using misaligned field entries
5253             Store (1, BIT8)
5254                 //  verify memory contents using misaligned field entries
5255                 If (LNotEqual (BIT8, 1))
5256                     {   Return (17) }
5257                 //  verify memory contents using aligned field entries
5258                 If (LNotEqual (DWD0, 0x5AA55B5A))
5259                     {   Return (18) }
5261             //  set memory contents to known values using misaligned field entries
5262             Store (0, BIT9)
5263                 //  verify memory contents using misaligned field entries
5264                 If (LNotEqual (BIT9, 0))
5265                     {   Return (19) }
5266                 //  verify memory contents using aligned field entries
5267                 If (LNotEqual (DWD0, 0x5AA5595A))
5268                     {   Return (20) }
5270             //  set memory contents to known values using misaligned field entries
5271             Store (1, BITA)
5272                 //  verify memory contents using misaligned field entries
5273                 If (LNotEqual (BITA, 1))
5274                     {   Return (21) }
5275                 //  verify memory contents using aligned field entries
5276                 If (LNotEqual (DWD0, 0x5AA55D5A))
5277                     {   Return (22) }
5279             //  set memory contents to known values using misaligned field entries
5280             Store (0, BITB)
5281                 //  verify memory contents using misaligned field entries
5282                 If (LNotEqual (BITB, 0))
5283                     {   Return (23) }
5284                 //  verify memory contents using aligned field entries
5285                 If (LNotEqual (DWD0, 0x5AA5555A))
5286                     {   Return (24) }
5288             //  set memory contents to known values using misaligned field entries
5289             Store (0, BITC)
5290                 //  verify memory contents using misaligned field entries
5291                 If (LNotEqual (BITC, 0))
5292                     {   Return (25) }
5293                 //  verify memory contents using aligned field entries
5294                 If (LNotEqual (DWD0, 0x5AA5455A))
5295                     {   Return (26) }
5297             //  set memory contents to known values using misaligned field entries
5298             Store (1, BITD)
5299                 //  verify memory contents using misaligned field entries
5300                 If (LNotEqual (BITD, 1))
5301                     {   Return (27) }
5302                 //  verify memory contents using aligned field entries
5303                 If (LNotEqual (DWD0, 0x5AA5655A))
5304                     {   Return (28) }
5306             //  set memory contents to known values using misaligned field entries
5307             Store (0, BITE)
5308                 //  verify memory contents using misaligned field entries
5309                 If (LNotEqual (BITE, 0))
5310                     {   Return (29) }
5311                 //  verify memory contents using aligned field entries
5312                 If (LNotEqual (DWD0, 0x5AA5255A))
5313                     {   Return (30) }
5315             //  set memory contents to known values using misaligned field entries
5316             Store (1, BITF)
5317                 //  verify memory contents using misaligned field entries
5318                 If (LNotEqual (BITF, 1))
5319                     {   Return (31) }
5320                 //  verify memory contents using aligned field entries
5321                 If (LNotEqual (DWD0, 0x5AA5A55A))
5322                     {   Return (32) }
5324             //  set memory contents to known values using misaligned field entries
5325             Store (0, BI10)
5326                 //  verify memory contents using misaligned field entries
5327                 If (LNotEqual (BI10, 0))
5328                     {   Return (33) }
5329                 //  verify memory contents using aligned field entries
5330                 If (LNotEqual (DWD0, 0x5AA4A55A))
5331                     {   Return (34) }
5333             //  set memory contents to known values using misaligned field entries
5334             Store (1, BI11)
5335                 //  verify memory contents using misaligned field entries
5336                 If (LNotEqual (BI11, 1))
5337                     {   Return (35) }
5338                 //  verify memory contents using aligned field entries
5339                 If (LNotEqual (DWD0, 0x5AA6A55A))
5340                     {   Return (36) }
5342             //  set memory contents to known values using misaligned field entries
5343             Store (0, BI12)
5344                 //  verify memory contents using misaligned field entries
5345                 If (LNotEqual (BI12, 0))
5346                     {   Return (37) }
5347                 //  verify memory contents using aligned field entries
5348                 If (LNotEqual (DWD0, 0x5AA2A55A))
5349                     {   Return (38) }
5351             //  set memory contents to known values using misaligned field entries
5352             Store (1, BI13)
5353                 //  verify memory contents using misaligned field entries
5354                 If (LNotEqual (BI13, 1))
5355                     {   Return (39) }
5356                 //  verify memory contents using aligned field entries
5357                 If (LNotEqual (DWD0, 0x5AAAA55A))
5358                     {   Return (40) }
5360             //  set memory contents to known values using misaligned field entries
5361             Store (1, BI14)
5362                 //  verify memory contents using misaligned field entries
5363                 If (LNotEqual (BI14, 1))
5364                     {   Return (41) }
5365                 //  verify memory contents using aligned field entries
5366                 If (LNotEqual (DWD0, 0x5ABAA55A))
5367                     {   Return (42) }
5369             //  set memory contents to known values using misaligned field entries
5370             Store (0, BI15)
5371                 //  verify memory contents using misaligned field entries
5372                 If (LNotEqual (BI15, 0))
5373                     {   Return (43) }
5374                 //  verify memory contents using aligned field entries
5375                 If (LNotEqual (DWD0, 0x5A9AA55A))
5376                     {   Return (44) }
5378             //  set memory contents to known values using misaligned field entries
5379             Store (1, BI16)
5380                 //  verify memory contents using misaligned field entries
5381                 If (LNotEqual (BI16, 1))
5382                     {   Return (45) }
5383                 //  verify memory contents using aligned field entries
5384                 If (LNotEqual (DWD0, 0x5ADAA55A))
5385                     {   Return (46) }
5387             //  set memory contents to known values using misaligned field entries
5388             Store (0, BI17)
5389                 //  verify memory contents using misaligned field entries
5390                 If (LNotEqual (BI17, 0))
5391                     {   Return (47) }
5392                 //  verify memory contents using aligned field entries
5393                 If (LNotEqual (DWD0, 0x5A5AA55A))
5394                     {   Return (48) }
5396             //  set memory contents to known values using misaligned field entries
5397             Store (1, BI18)
5398                 //  verify memory contents using misaligned field entries
5399                 If (LNotEqual (BI18, 1))
5400                     {   Return (49) }
5401                 //  verify memory contents using aligned field entries
5402                 If (LNotEqual (DWD0, 0x5B5AA55A))
5403                     {   Return (50) }
5405             //  set memory contents to known values using misaligned field entries
5406             Store (0, BI19)
5407                 //  verify memory contents using misaligned field entries
5408                 If (LNotEqual (BI19, 0))
5409                     {   Return (51) }
5410                 //  verify memory contents using aligned field entries
5411                 If (LNotEqual (DWD0, 0x595AA55A))
5412                     {   Return (52) }
5414             //  set memory contents to known values using misaligned field entries
5415             Store (1, BI1A)
5416                 //  verify memory contents using misaligned field entries
5417                 If (LNotEqual (BI1A, 1))
5418                     {   Return (53) }
5419                 //  verify memory contents using aligned field entries
5420                 If (LNotEqual (DWD0, 0x5D5AA55A))
5421                     {   Return (54) }
5423             //  set memory contents to known values using misaligned field entries
5424             Store (0, BI1B)
5425                 //  verify memory contents using misaligned field entries
5426                 If (LNotEqual (BI1B, 0))
5427                     {   Return (55) }
5428                 //  verify memory contents using aligned field entries
5429                 If (LNotEqual (DWD0, 0x555AA55A))
5430                     {   Return (56) }
5432             //  set memory contents to known values using misaligned field entries
5433             Store (0, BI1C)
5434                 //  verify memory contents using misaligned field entries
5435                 If (LNotEqual (BI1C, 0))
5436                     {   Return (57) }
5437                 //  verify memory contents using aligned field entries
5438                 If (LNotEqual (DWD0, 0x455AA55A))
5439                     {   Return (58) }
5441             //  set memory contents to known values using misaligned field entries
5442             Store (1, BI1D)
5443                 //  verify memory contents using misaligned field entries
5444                 If (LNotEqual (BI1D, 1))
5445                     {   Return (59) }
5446                 //  verify memory contents using aligned field entries
5447                 If (LNotEqual (DWD0, 0x655AA55A))
5448                     {   Return (60) }
5450             //  set memory contents to known values using misaligned field entries
5451             Store (0, BI1E)
5452                 //  verify memory contents using misaligned field entries
5453                 If (LNotEqual (BI1E, 0))
5454                     {   Return (61) }
5455                 //  verify memory contents using aligned field entries
5456                 If (LNotEqual (DWD0, 0x255AA55A))
5457                     {   Return (62) }
5459             //  set memory contents to known values using misaligned field entries
5460             Store (1, BI1F)
5461                 //  verify memory contents using misaligned field entries
5462                 If (LNotEqual (BI1F, 1))
5463                     {   Return (63) }
5464                 //  verify memory contents using aligned field entries
5465                 If (LNotEqual (DWD0, 0xA55AA55A))
5466                     {   Return (64) }
5469             //  set memory contents to known values using misaligned field entries
5470             Store (3, B2_0)
5471                 //  verify memory contents using misaligned field entries
5472                 If (LNotEqual (B2_0, 3))
5473                     {   Return (65) }
5474                 //  verify memory contents using aligned field entries
5475                 If (LNotEqual (DWD0, 0xA55AA55B))
5476                     {   Return (66) }
5478             //  set memory contents to known values using misaligned field entries
5479             Store (1, B2_1)
5480                 //  verify memory contents using misaligned field entries
5481                 If (LNotEqual (B2_1, 1))
5482                     {   Return (67) }
5483                 //  verify memory contents using aligned field entries
5484                 If (LNotEqual (DWD0, 0xA55AA557))
5485                     {   Return (68) }
5487             //  set memory contents to known values using misaligned field entries
5488             Store (0, B2_2)
5489                 //  verify memory contents using misaligned field entries
5490                 If (LNotEqual (B2_2, 0))
5491                     {   Return (69) }
5492                 //  verify memory contents using aligned field entries
5493                 If (LNotEqual (DWD0, 0xA55AA547))
5494                     {   Return (70) }
5496             //  set memory contents to known values using misaligned field entries
5497             Store (3, B2_3)
5498                 //  verify memory contents using misaligned field entries
5499                 If (LNotEqual (B2_3, 3))
5500                     {   Return (71) }
5501                 //  verify memory contents using aligned field entries
5502                 If (LNotEqual (DWD0, 0xA55AA5C7))
5503                     {   Return (72) }
5505             //  set memory contents to known values using misaligned field entries
5506             Store (3, B2_4)
5507                 //  verify memory contents using misaligned field entries
5508                 If (LNotEqual (B2_4, 3))
5509                     {   Return (73) }
5510                 //  verify memory contents using aligned field entries
5511                 If (LNotEqual (DWD0, 0xA55AA7C7))
5512                     {   Return (74) }
5514             //  set memory contents to known values using misaligned field entries
5515             Store (0, B2_5)
5516                 //  verify memory contents using misaligned field entries
5517                 If (LNotEqual (B2_5, 0))
5518                     {   Return (75) }
5519                 //  verify memory contents using aligned field entries
5520                 If (LNotEqual (DWD0, 0xA55AA3C7))
5521                     {   Return (76) }
5523             //  set memory contents to known values using misaligned field entries
5524             Store (1, B2_6)
5525                 //  verify memory contents using misaligned field entries
5526                 If (LNotEqual (B2_6, 1))
5527                     {   Return (77) }
5528                 //  verify memory contents using aligned field entries
5529                 If (LNotEqual (DWD0, 0xA55A93C7))
5530                     {   Return (78) }
5532             //  set memory contents to known values using misaligned field entries
5533             Store (1, B2_7)
5534                 //  verify memory contents using misaligned field entries
5535                 If (LNotEqual (B2_7, 1))
5536                     {   Return (79) }
5537                 //  verify memory contents using aligned field entries
5538                 If (LNotEqual (DWD0, 0xA55A53C7))
5539                     {   Return (80) }
5541             //  set memory contents to known values using misaligned field entries
5542             Store (0, B2_8)
5543                 //  verify memory contents using misaligned field entries
5544                 If (LNotEqual (B2_8, 0))
5545                     {   Return (81) }
5546                 //  verify memory contents using aligned field entries
5547                 If (LNotEqual (DWD0, 0xA55853C7))
5548                     {   Return (82) }
5550             //  set memory contents to known values using misaligned field entries
5551             Store (1, B2_9)
5552                 //  verify memory contents using misaligned field entries
5553                 If (LNotEqual (B2_9, 1))
5554                     {   Return (83) }
5555                 //  verify memory contents using aligned field entries
5556                 If (LNotEqual (DWD0, 0xA55453C7))
5557                     {   Return (84) }
5559             //  set memory contents to known values using misaligned field entries
5560             Store (2, B2_A)
5561                 //  verify memory contents using misaligned field entries
5562                 If (LNotEqual (B2_A, 2))
5563                     {   Return (85) }
5564                 //  verify memory contents using aligned field entries
5565                 If (LNotEqual (DWD0, 0xA56453C7))
5566                     {   Return (86) }
5568             //  set memory contents to known values using misaligned field entries
5569             Store (2, B2_B)
5570                 //  verify memory contents using misaligned field entries
5571                 If (LNotEqual (B2_B, 2))
5572                     {   Return (87) }
5573                 //  verify memory contents using aligned field entries
5574                 If (LNotEqual (DWD0, 0xA5A453C7))
5575                     {   Return (88) }
5577             //  set memory contents to known values using misaligned field entries
5578             Store (3, B2_C)
5579                 //  verify memory contents using misaligned field entries
5580                 If (LNotEqual (B2_C, 3))
5581                     {   Return (89) }
5582                 //  verify memory contents using aligned field entries
5583                 If (LNotEqual (DWD0, 0xA7A453C7))
5584                     {   Return (90) }
5586             //  set memory contents to known values using misaligned field entries
5587             Store (3, B2_D)
5588                 //  verify memory contents using misaligned field entries
5589                 If (LNotEqual (B2_D, 3))
5590                     {   Return (91) }
5591                 //  verify memory contents using aligned field entries
5592                 If (LNotEqual (DWD0, 0xAFA453C7))
5593                     {   Return (92) }
5595             //  set memory contents to known values using misaligned field entries
5596             Store (1, B2_E)
5597                 //  verify memory contents using misaligned field entries
5598                 If (LNotEqual (B2_E, 1))
5599                     {   Return (93) }
5600                 //  verify memory contents using aligned field entries
5601                 If (LNotEqual (DWD0, 0x9FA453C7))
5602                     {   Return (94) }
5604             //  set memory contents to known values using misaligned field entries
5605             Store (0, B2_F)
5606                 //  verify memory contents using misaligned field entries
5607                 If (LNotEqual (B2_F, 0))
5608                     {   Return (95) }
5609                 //  verify memory contents using aligned field entries
5610                 If (LNotEqual (DWD0, 0x1FA453C7))
5611                     {   Return (96) }
5614             Return (0)  //  pass
5615         }   //  MADM:   Misaligned Dynamic RAM SystemMemory OperationRegion
5617         Method (TEST)
5618         {
5619             Store ("++++++++ IndexOp4 Test", Debug)
5621             //  MADM (Misaligned Dynamic RAM SystemMemory OperationRegion) arguments:
5622             //      Arg0    --  SystemMemory OperationRegion base address
5623             Store (MADM (0x800000), Local0)
5624             If (LNotEqual (Local0, 0))      //  MADM returns zero if successful
5625                 {   Return (Local0) }       //  failure:    return MADM error code
5627             Return (Local0)
5628         }   //  TEST
5629     }   //  IDX4
5632 // test Event.asl
5634 //  EventOp, ResetOp, SignalOp, and WaitOp test cases.
5636     Device (EVNT)
5637     {
5638         Event (EVNT)    //  event synchronization object
5640         Method (TEVN, 1)
5641         //  Arg0:   time to Wait for event in milliseconds
5642         {   //  TEVN control method to test ResetOp, SignalOp, and WaitOp
5643             //  reset EVNT to initialization (zero) state
5644             Reset (EVNT)
5646             //  prime EVNT with two outstanding signals
5647             Signal (EVNT)
5648             Signal (EVNT)
5651             //  acquire existing signal
5652             Store (Wait (EVNT, Arg0), Local0)
5654             //  validate Local0 is a Number
5655             Store (ObjectType (Local0), Local1)
5656             If (LNotEqual (Local1, 1))  //  Number is type 1
5657                 {   Return (0x21)   }       //  Local1 indicates Local0 is not a Number
5659             If (LNotEqual (Local0, 0))  //  Number is type 1
5660                 {   Return (0x22)   }       //  timeout occurred without acquiring signal
5662             Store ("Acquire 1st existing signal PASS", Debug)
5665             //  acquire existing signal
5666             Store (Wait (EVNT, Arg0), Local0)
5668             //  validate Local0 is a Number
5669             Store (ObjectType (Local0), Local1)
5670             If (LNotEqual (Local1, 1))  //  Number is type 1
5671                 {   Return (0x31)   }       //  Local1 indicates Local0 is not a Number
5673             If (LNotEqual (Local0, 0))  //  Number is type 1
5674                 {   Return (0x32)   }       //  timeout occurred without acquiring signal
5676             Store ("Acquire 2nd existing signal PASS", Debug)
5679             //  ensure WaitOp timeout test cases do not hang
5680             if (LEqual (Arg0, 0xFFFF))
5681                 {   Store (0xFFFE, Arg0)    }
5683             //  acquire non-existing signal
5684             Store (Wait (EVNT, Arg0), Local0)
5686             //  validate Local0 is a Number
5687             Store (ObjectType (Local0), Local1)
5688             If (LNotEqual (Local1, 1))  //  Number is type 1
5689                 {   Return (0x41)   }       //  Local1 indicates Local0 is not a Number
5691             If (LEqual (Local0, 0))     //  Number is type 1
5692                 {   Return (0x42)   }       //  non-existant signal was acquired
5694             Store ("Acquire signal timeout PASS", Debug)
5697             //  prime EVNT with two outstanding signals
5698             Signal (EVNT)
5699             Signal (EVNT)
5701             //  reset EVNT to initialization (zero) state
5702             Reset (EVNT)
5704             //  acquire non-existing signal
5705             Store (Wait (EVNT, Arg0), Local0)
5707             //  validate Local0 is a Number
5708             Store (ObjectType (Local0), Local1)
5709             If (LNotEqual (Local1, 1))  //  Number is type 1
5710                 {   Return (0x51)   }       //  Local1 indicates Local0 is not a Number
5712             If (LEqual (Local0, 0))     //  Number is type 1
5713                 {   Return (0x52)   }       //  non-existant signal was acquired
5715             Store ("Reset signal PASS", Debug)
5718             //  acquire non-existing signal using Lvalue timeout
5719             Store (Wait (EVNT, Zero), Local0)
5721             //  validate Local0 is a Number
5722             Store (ObjectType (Local0), Local1)
5723             If (LNotEqual (Local1, 1))  //  Number is type 1
5724                 {   Return (0x61)   }       //  Local1 indicates Local0 is not a Number
5726             If (LEqual (Local0, 0))     //  Number is type 1
5727                 {   Return (0x62)   }       //  non-existant signal was acquired
5729             Store ("Zero Lvalue PASS", Debug)
5732             //  acquire non-existing signal using Lvalue timeout
5733             Store (Wait (EVNT, One), Local0)
5735             //  validate Local0 is a Number
5736             Store (ObjectType (Local0), Local1)
5737             If (LNotEqual (Local1, 1))  //  Number is type 1
5738                 {   Return (0x71)   }       //  Local1 indicates Local0 is not a Number
5740             If (LEqual (Local0, 0))     //  Number is type 1
5741                 {   Return (0x72)   }       //  non-existant signal was acquired
5743             Store ("One Lvalue PASS", Debug)
5745             //  Lvalue Event test cases
5746     // ILLEGAL SOURCE OPERAND        Store (EVNT, Local2)
5748             //  validate Local2 is an Event
5749             Store (ObjectType (EVNT), Local1)
5750             If (LNotEqual (Local1, 7))  //  Event is type 7
5751                 {   Return (0x81)   }       //  Local1 indicates Local0 is not a Number
5753             //  reset EVNT to initialization (zero) state
5754             Reset (EVNT)
5756             //  prime EVNT with two outstanding signals
5757             Signal (EVNT)
5759             //  acquire existing signal
5760             Store (Wait (EVNT, Arg0), Local0)
5762             //  validate Local0 is a Number
5763             Store (ObjectType (Local0), Local1)
5764             If (LNotEqual (Local1, 1))  //  Number is type 1
5765                 {   Return (0x82)   }       //  Local1 indicates Local0 is not a Number
5767             If (LNotEqual (Local0, 0))  //  Number is type 1
5768                 {   Return (0x83)   }       //  timeout occurred without acquiring signal
5770             Store ("Acquire Lvalue existing signal PASS", Debug)
5773             //  acquire non-existing signal
5774             Store (Wait (EVNT, Arg0), Local0)
5776             //  validate Local0 is a Number
5777             Store (ObjectType (Local0), Local1)
5778             If (LNotEqual (Local1, 1))  //  Number is type 1
5779                 {   Return (0x84)   }       //  Local1 indicates Local0 is not a Number
5781             If (LEqual (Local0, 0))     //  Number is type 1
5782                 {   Return (0x85)   }       //  non-existant signal was acquired
5784             Store ("Acquire Lvalue signal timeout PASS", Debug)
5787             Return (0)  //  success
5788         }   //  TEVN control method to test ResetOp, SignalOp, and WaitOp
5790         Method (TEST)
5791         {
5792             Store ("++++++++ Event Test", Debug)
5794             Store (TEVN (100), Local0)
5796             Return (Local0)
5797         }   //  TEST
5798     }   //  EVNT
5801 // test SizeOfLv.asl
5803 //  Test for SizeOf (Lvalue)
5805 //  This next section will contain the packages that the SizeOfOp will be
5806 //  exercised on.  The first one, PKG0, is a regular package of 3 elements.
5807 //  The 2nd one, PKG1, is a nested package with 3 packages inside it, each
5808 //  with 3 elements.  It is expected that SizeOf operator will return the
5809 //  same value for these two packages since they both have 3 elements.  The
5810 //  final package, PKG2, has 4 elements and the SizeOf operator is expected
5811 //  to return different results for this package.
5813     Name (PKG0,
5814         Package (3)
5815         {0x0123, 0x4567, 0x89AB}
5816     )   //  PKG0
5818     Name (PKG1,
5819         Package (3)
5820         {
5821             Package (3) {0x0123, 0x4567, 0x89AB},
5822             Package (3) {0xCDEF, 0xFEDC, 0xBA98},
5823             Package (3) {0x7654, 0x3210, 0x1234}
5824         }
5825     )   //  PKG1
5827     Name (PKG2,
5828         Package (4)
5829         {0x0123, 0x4567, 0x89AB, 0x8888}
5830     )   //  PKG2
5832     Name (PKG3,
5833         Package (5)
5834         {0x0123, 0x4567, 0x89AB, 0x8888, 0x7777}
5835     )   //  PKG3
5837 //  End Packages    **********************************************************
5839 //  The following section will declare the data strings that will be used to
5840 //  exercise the SizeOf operator.  STR0 and STR1 are expected to be equal,
5841 //  STR2 is expected to have a different SizeOf value than STR0 and STR1.
5843     Name (STR0, "ACPI permits very flexible methods of expressing a system")
5845     Name (STR1, "MIKE permits very flexible methods of expressing a system")
5847     Name (STR2, "Needless to say, Mike and ACPI are frequently at odds")
5849 //  This string is being made in case we want to do a SizeOf comparison
5850 //  between strings and packages or buffers
5851     Name (STR3, "12345")
5853 //  End Strings     **********************************************************
5855 //  The following section will declare the buffers that will be used to exercise
5856 //  the SizeOf operator.
5858     Name (BUF0, Buffer (10) {})
5859     Name (BUF1, Buffer (10) {})
5860     Name (BUF2, Buffer (8)  {})
5861     Name (BUF3, Buffer (5)  {})
5863 //  End Buffers     **********************************************************
5864     Device (SZLV)
5865     {
5867         Method (CMPR, 2)
5868         {
5869             //  CMPR is passed two arguments.  If unequal, return 1 to indicate
5870             //  that, otherwise return 0 to indicate SizeOf each is equal.
5872             Store (0x01, Local0)
5874             if (LEqual (SizeOf(Arg0), SizeOf(Arg1)))
5875             {
5876                 Store (0x00, Local0)
5877             }
5879             return (Local0)
5880         }   //  CMPR
5883         Method (TEST)
5884         {
5886             Store ("++++++++ SizeOfLv Test", Debug)
5888             //  TBD:    SizeOf ("string")
5889             //          SizeOf (Buffer)
5890             //          SizeOf (Package)
5891             //          SizeOf (String)
5892             //          SizeOf (STR0)   --  where Name (STR0,...) -- lot's of cases
5893             //              buffer, string, package,
5894             //          SizeOf (METH) -- where METH control method returns
5895             //              buffer, string, package,
5897             //  TBD:    SLOC [SizeOf (Local0)] -- dup SARG
5899             //  Compare the elements that we expect to be the same.  Exit out with an error
5900             //  code on the first failure.
5901             if (LNotEqual (0x00, CMPR (STR0, STR1)))
5902             {
5903                 Return (0x01)
5904             }
5906             if (LNotEqual (0x00, CMPR (STR3, BUF3)))
5907             {
5908                 Return (0x02)
5909             }
5911             if (LNotEqual (0x00, CMPR (STR3, PKG3)))
5912             {
5913                 Return (0x03)
5914             }
5916             //  In the following section, this test will cover the SizeOf
5917             //  operator for Local values.
5918             //  In this case, both Local0 and Local1 should have the same Size
5919             Store (STR0, Local0)
5920             Store (STR1, Local1)
5922             if (LNotEqual (SizeOf (Local0), SizeOf (Local1)))
5923             {
5924                 Return (0x04)
5925             }
5927             //  Now create a case where Local0 and Local1 are different
5928             Store (STR2, Local1)
5930             if (LEqual (SizeOf (Local0), SizeOf (Local1)))
5931             {
5932                 Return (0x05)
5933             }
5935             //  Finally, check for the return of SizeOf for a known Buffer.  Just
5936             //  in case we magically pass above cases due to all Buffers being Zero
5937             //  bytes in size, or Infinity, etc.
5938             if (LNotEqual (0x05, SizeOf (BUF3)))
5939             {
5940                 Return (0x06)
5941             }
5943             Return (0)
5944         }   //  TEST
5945     }   //  SZLV
5949 // test BytField.asl
5951 //  BytField test
5952 //      This is just a subset of the many RegionOp/Index Field test cases.
5953 //      Tests access of TBD.
5955     Scope (\_SB)    //  System Bus
5956     {   //  _SB system bus
5957         Device (BYTF)
5958         {   //  Test device name
5959             Method (TEST)
5960             {
5961                 Store ("++++++++ BytField Test", Debug)
5963                 Return (\_TZ.C19B.RSLT)
5964             }   //  TEST
5965         }   //  BYTF
5967         Device (C005)
5968         {   //  Device C005
5969             Device (C013)
5970             {   //  Device C013
5971             }   //  Device C013
5972         }   //  Device C005
5974         Method (C115)
5975         {   //  C115 control method
5976             Acquire (\_GL, 0xFFFF)
5977             Store (\_SB.C005.C013.C058.C07E, Local0)
5978             Release (\_GL)
5979             And (Local0, 16, Local0)
5980             Store (ShiftRight (Local0, 4, ), Local1)
5981             If (LEqual (Local1, 0))
5982                 {   Return (1)  }
5983             Else
5984                 {   Return (0)  }
5985         }   //  C115 control method
5986     }   //  _SB system bus
5988     OperationRegion (C018, SystemIO, 0x5028, 4)
5989     Field (C018, AnyAcc, NoLock, Preserve)
5990     {   //  Field overlaying C018
5991         C019,   32
5992     }   //  Field overlaying C018
5994     OperationRegion (C01A, SystemIO, 0x5030, 4)
5995     Field (C01A, ByteAcc, NoLock, Preserve)
5996     {   //  Field overlaying C01A
5997         C01B,   8,
5998         C01C,   8,
5999         C01D,   8,
6000         C01E,   8
6001     }   //  Field overlaying C01A
6003     Mutex (\C01F, 0)
6004     Name (\C020, 0)
6005     Name (\C021, 0)
6007     Method (\C022, 0)
6008     {   //  \C022 control method
6009         Acquire (\C01F, 0xFFFF)
6010         If (LEqual (\C021, 0))
6011         {
6012             Store (C019, Local0)
6013             And (Local0, 0xFFFEFFFE, Local0)
6014             Store (Local0, C019)
6015             Increment (\C021)
6016         }
6017         Release (\C01F)
6018     }   //  \C022 control method
6020     Scope (\_SB.C005.C013)
6021     {   //  Scope \_SB.C005.C013
6022         Device (C058)
6023         {   //  Device C058
6024             Name (_HID, "*PNP0A06")
6026             OperationRegion (C059, SystemIO, 0xE0, 2)
6027             Field (C059, ByteAcc, NoLock, Preserve)
6028             {   //  Field overlaying C059
6029                 C05A,   8,
6030                 C05B,   8
6031             }   //  Field overlaying C059
6033             OperationRegion (C05C, SystemIO, 0xE2, 2)
6034             Field (C05C, ByteAcc, NoLock, Preserve)
6035             {   //  Field overlaying C05C
6036                 C05D,   8,
6037                 C05E,   8
6038             }   //  Field overlaying C05C
6039             IndexField (C05D, C05E, ByteAcc, NoLock, Preserve)
6040             {   //  IndexField overlaying C05D/C05E
6041                 ,       0x410,  //  skip
6042                 C05F,   8,
6043                 C060,   8,
6044                 C061,   8,
6045                 C062,   8,
6046                 C063,   8,
6047                 C064,   8,
6048                 C065,   8,
6049                 C066,   8,
6050                 C067,   8,
6051                 C068,   8,
6052                 C069,   8,
6053                 C06A,   8,
6054                 C06B,   8,
6055                 C06C,   8,
6056                 C06D,   8,
6057                 C06E,   8,
6058                 ,       0x70,       //  skip
6059                 C06F,   8,
6060                 C070,   8,
6061                 C071,   8,
6062                 C072,   8,
6063                 C073,   8,
6064                 C074,   8,
6065                 C075,   8,
6066                 C076,   8,
6067                 C077,   8,
6068                 C078,   8,
6069                 C079,   8,
6070                 C07A,   8,
6071                 C07B,   8,
6072                 C07C,   8,
6073                 C07D,   8,
6074                 C07E,   8
6075             }   //  IndexField overlaying C05D/C05E
6077             OperationRegion (C07F, SystemIO, 0xE4, 2)
6078             Field (C07F, ByteAcc, NoLock, Preserve)
6079             {   //  Field overlaying C07F
6080                 C080,   8,
6081                 C081,   8
6082             }   //  Field overlaying C07F
6084             OperationRegion (C082, SystemIO, 0xE0, 1)
6085             Field (C082, ByteAcc, NoLock, Preserve)
6086             {   //  Field overlaying C082
6087                 C083,   8
6088             }   //  Field overlaying C082
6090             OperationRegion (C084, SystemIO, 0xFF, 1)
6091             Field (C084, ByteAcc, NoLock, Preserve)
6092             {   //  Field overlaying C084
6093                 C085,   8
6094             }   //  Field overlaying C084
6096             OperationRegion (C086, SystemIO, 0xFD, 1)
6097             Field (C086, ByteAcc, NoLock, Preserve)
6098             {   //  Field overlaying C086
6099                 C087,   8
6100             }   //  Field overlaying C086
6102             Mutex (C088, 0)
6103             Mutex (C089, 0)
6104             Mutex (C08A, 0)
6105             Mutex (C08B, 0)
6106             Mutex (C08C, 0)
6107             Mutex (C08D, 0)
6109             Name (C08E, 0xFFFFFFFD)
6110             Name (C08F, 0)
6112             Method (C0AA, 4)
6113             {   //  C0AA control method
6114                 Store (Buffer (4) {}, Local7)
6115                 CreateByteField (Local7, 0, C0AB)
6116                 CreateByteField (Local7, 1, C0AC)
6117                 CreateByteField (Local7, 2, C0AD)
6118                 CreateByteField (Local7, 3, C0AE)
6119                 Acquire (^C08B, 0xFFFF)
6120                 Acquire (\_GL, 0xFFFF)
6121                 \C022 ()
6122                 Store (1, \_SB.C005.C013.C058.C06B)
6123                 While (LNot (LEqual (0, \_SB.C005.C013.C058.C06B)))
6124                     {   Stall (100) }
6125                 Store (Arg3, \_SB.C005.C013.C058.C06E)
6126                 Store (Arg2, \_SB.C005.C013.C058.C06D)
6127                 Store (Arg1, \_SB.C005.C013.C058.C06C)
6128                 Store (Arg0, \_SB.C005.C013.C058.C06B)
6129                 While (LNot (LEqual (0, \_SB.C005.C013.C058.C06B)))
6130                     {   Stall (100) }
6131                 Store (\_SB.C005.C013.C058.C06E, C0AB)
6132                 Store (\_SB.C005.C013.C058.C06D, C0AC)
6133                 Store (\_SB.C005.C013.C058.C06C, C0AD)
6134                 Store (\_SB.C005.C013.C058.C06B, C0AE)
6135                 If (LNot (LEqual (Arg0, 23)))
6136                 {
6137                     Store (2, \_SB.C005.C013.C058.C06B)
6138                     Stall (100)
6139                 }
6140                 Release (\_GL)
6141                 Release (^C08B)
6142                 Return (Local7)
6143             }   //  C0AA control method
6144         }   //  Device C058
6145     }   //  Scope \_SB.C005.C013
6147     Scope (\_TZ)
6148     {   //  \_TZ thermal zone scope
6149         Name (C18B, Package (2)
6150         {
6151             Package (2)
6152             {
6153                 Package (5) {0x05AC, 0x0CD2, 0x0D68, 0x0DE0, 0x0E4E},
6154                 Package (5) {0x0D04, 0x0D9A, 0x0DFE, 0x0E80, 0x0FA2}
6155             },
6156             Package (2)
6157             {
6158                 Package (5) {0x05AC, 0x0CD2, 0x0D68, 0x0DE0, 0x0E4E},
6159                 Package (5) {0x0D04, 0x0D9A, 0x0DFE, 0x0E80, 0x0FA2}
6160             }
6161         })  //  C18B
6163         Name (C18C, Package (2)
6164         {
6165             Package (2)
6166             {
6167                 Package (3) {0x64, 0x4B, 0x32},
6168                 Package (3) {0x64, 0x4B, 0x32}
6169             }
6170         })  //  C81C
6172         Name (C18D, 0)
6173         Name (C18E, 0)
6174         Name (C18F, 0)
6175         Name (C190, 0)
6176         Name (C191, 3)
6177         Name (C192, 0)
6178         Name (C193, 1)
6179         Name (C194, 2)
6180         Mutex (C195, 0)
6181         Name (C196, 1)
6182         Name (C197, 0x0B9C)
6183         Name (C198, 0x0B9C)
6184         Name (C199, 0xFFFFFFFD)
6185         Name (C19A, 0)
6187         Device (C19B)
6188         {   //  Device C19B
6189             Name (RSLT, 0)  //  default to zero
6191             Method (XINI)
6192             {   //  _INI control method (Uses Global Lock -- can't run under AcpiExec)
6193                 Store (\_SB.C115, C19A)
6194                 \_TZ.C19C._SCP (0)
6195                 Subtract (0x0EB2, 0x0AAC, Local1)   //  Local1 = AACh - EB2h
6196                 Divide (Local1, 10, Local0, Local2) //  Local0 = Local1 / 10
6197                                                                 //  Local2 = Local1 % 10
6198                 \_SB.C005.C013.C058.C0AA (14, Local2, 0, 0)
6199                 Store
6200                     (DerefOf (Index (DerefOf (Index (\_TZ.C18C, C19A, )), 0, )), C18D)
6201                 Store
6202                     (DerefOf (Index (DerefOf (Index (\_TZ.C18C, C19A, )), 1, )), C18E)
6203                 Store
6204                     (DerefOf (Index (DerefOf (Index (\_TZ.C18C, C19A, )), 2, )), C18F)
6206                 Store (1, RSLT) //  set RSLT to 1 if _INI control method completes
6207             }   //  _INI control method
6209             //  PowerResource (C19D) {...}
6210         }   //  Device C19B
6212         ThermalZone (C19C)
6213         {
6214             Method (_SCP, 1)
6215             {   //  _SCP control method
6216                 Store (Arg0, Local0)
6217                 If (LEqual (Local0, 0))
6218                 {
6219                     Store (0, \_TZ.C192)
6220                     Store (1, \_TZ.C193)
6221                     Store (2, \_TZ.C194)
6222                     Store (3, \_TZ.C191)
6223                 }
6224                 Else
6225                 {
6226                     Store (0, \_TZ.C191)
6227                     Store (1, \_TZ.C192)
6228                     Store (2, \_TZ.C193)
6229                     Store (3, \_TZ.C194)
6230                 }
6231             }   //  _SCP control method
6232         }   //  ThermalZone C19C
6233     }   //  \_TZ thermal zone scope
6237 // test DwrdFld.asl
6239     Name (BUFR, buffer(10) {0,0,0,0,0,0,0,0,0,0} )
6241     Device (DWDF)
6242     {
6243         Method (TEST)
6244         {
6245             Store ("++++++++ DwrdFld Test", Debug)
6247             CreateByteField (BUFR, 0, BYTE)
6248             Store (0xAA, BYTE)
6250             CreateWordField (BUFR, 1, WORD)
6251             Store (0xBBCC, WORD)
6253             CreateDWordField (BUFR, 3, DWRD)
6254             Store (0xDDEEFF00, DWRD)
6256             CreateByteField (BUFR, 7, BYT2)
6257             Store (0x11, BYT2)
6259             CreateWordField (BUFR, 8, WRD2)
6260             Store (0x2233, WRD2)
6262             Return (0)
6264         }   //  End Method TEST
6265     }   //  Device DWDF
6267     //
6268     // test DivAddx.asl
6269     //
6270     Name (B1LO, 0xAA)
6271     Name (B1HI, 0xBB)
6273     Method (MKW_, 2)
6274     {   //  This control method will take two bytes and make them into a WORD
6276         Multiply (B1HI, 256, Local0)    //  Make high byte.....high
6277         Or (Local0, B1LO, Local0)       //  OR in the low byte
6278         Return (Local0)                 //  Return the WORD
6280     }   //  MKW_
6282     Device (DVAX)
6283     {
6284         Method (TEST)
6285         {
6287             Store ("++++++++ DivAddx Test", Debug)
6289             Store (25, B1LO)
6290             Store (0, B1HI)
6292             //  We'll multiply 25 * 3 to get 75, add 99 to it then divide
6293             //  by 100.  We expect to get 74 for the remainder and 1 for
6294             //  the quotient.
6295             Divide(
6296                 Add (Multiply (3, MKW_ (B1LO, B1HI)), 0x63),
6297                             //  Dividend,
6298                 100,        //  Divisor
6299                 Local4,     //  Remainder
6300                 Local2)     //  Quotient
6302             If (LAnd (LEqual (74, Local4), LEqual (1, Local2)))
6303             {   //  Indicate Pass
6304                 Store (0x00, Local0)
6305             }
6307             Else
6308             {   //  Indicate Fail
6309                 Store (0x01, Local0)
6310             }
6312             Return (Local0)
6313         }   //  End Method TEST
6314     }   //  Device DVAX
6317 // test IndexFld.asl (IndexOp6.asl)
6319 //  IndexFld test
6320 //      This is just a subset of the many RegionOp/Index Field test cases.
6321 //      Tests index field element AccessAs macro.
6322 //      Also tests name resolution of index field elements with same names
6323 //      but different namespace scopes.
6325     Device (IDX6)
6326     {   //  Test device name
6328         OperationRegion (SIO, SystemIO, 0x100, 2)
6329         Field (SIO, ByteAcc, NoLock, Preserve)
6330         {
6331             INDX,   8,
6332             DATA,   8
6333         }
6334         IndexField (INDX, DATA, AnyAcc, NoLock, WriteAsOnes)
6335         {
6336             AccessAs (ByteAcc, 0),
6337             IFE0,   8,
6338             IFE1,   8,
6339             IFE2,   8,
6340             IFE3,   8,
6341             IFE4,   8,
6342             IFE5,   8,
6343             IFE6,   8,
6344             IFE7,   8,
6345             IFE8,   8,
6346             IFE9,   8,
6347         }
6349         Device (TST_)
6350         {   //  TST_:   provides a different namespace scope for IFE0 and IFE1
6351             OperationRegion (SIO2, SystemIO, 0x100, 2)
6352             Field (SIO2, ByteAcc, NoLock, Preserve)
6353             {
6354                 IND2,   8,
6355                 DAT2,   8
6356             }
6357             IndexField (IND2, DAT2, AnyAcc, NoLock, WriteAsOnes)
6358             {
6359                 IFE0,   8,  //  duplicate IndexField name with different scope
6360                 IFE1,   8
6361             }
6362         }   //  TST_:   provides a different namespace scope for IFE0 and IFE1
6364         Method (TEST)
6365         {
6366             Store ("++++++++ IndexOp6 Test", Debug)
6368             Store (IFE0, Local0)
6369             Store (IFE1, Local1)
6370             Store (IFE2, Local2)
6372             //  validate name resolution of IndexFields with different scopes
6373             Store (\IDX6.IFE0, Local3)
6374             Store (\IDX6.IFE1, Local4)
6375             //  verioading of namespace can resolve following names
6376             Store (\IDX6.TST_.IFE0, Local5)
6377             Store (\IDX6.TST_.IFE1, Local6)
6379             Return (0)
6380         }   //  TEST
6381     }   //  IDX6
6384 // test IndexOp5.asl
6386 //  IndexOp5 test
6387 //      This is just a subset of the many RegionOp/Index Field test cases.
6388 //      Tests copying string into buffer then performing IndexOp on result.
6390     Device (IDX5)
6391     {   //  Test device name
6393         Name (OSFL, 0)  //  0 == Windows 98, 1 == Windows NT
6395         //  MCTH is a control method to compare two strings. It returns
6396         //  zero if the strings mismatch, or 1 if the strings match.
6397         //  This exercises the test case of copying a string into a buffer
6398         //  and performing an IndexOp on the resulting buffer.
6399         Method (MCTH, 2, Serialized)    //  Control Method to compare two strings
6400         {   //  MCTH:   Control Method to compare two strings
6401             //  Arg0:       first string to compare
6402             //  Arg1:       second string to compare
6403             //  Return: zero if strings mismatch, 1 if strings match
6405             //  check if first string's length is less than second string's length
6406             If (LLess (SizeOf (Arg0), SizeOf (Arg1)))
6407                 {   Return (0)  }
6409             //  increment length to include NULL termination character
6410             Add (SizeOf (Arg0), 1, Local0)  //  Local0 = strlen(Arg0) + 1
6412             //  create two buffers of size Local0 [strlen(Arg0)+1]
6413             Name (BUF0, Buffer (Local0) {})
6414             Name (BUF1, Buffer (Local0) {})
6416             //  copy strings into buffers
6417             Store (Arg0, BUF0)
6418             Store (Arg1, BUF1)
6420             //  validate BUF0 and BUF1 are still buffers
6421             Store (ObjectType (BUF0), Local1)
6422             If (LNotEqual (Local1, 3))  //  Buffer is type 3
6423                 {   Return (20) }
6424             Store (ObjectType (BUF1), Local1)
6425             If (LNotEqual (Local1, 3))  //  Buffer is type 3
6426                 {   Return (21) }
6428             // Decrement because the Index base below is zero based
6429             //  while Local0 length is one based.
6430             Decrement (Local0)
6432             While (Local0)
6433             {   //  loop through all BUF0 buffer elements
6434                 Decrement (Local0)
6436                 //  check if BUF0[n] == BUF1[n]
6437                 If (LEqual (DerefOf (Index (BUF0, Local0, )),
6438                         DerefOf (Index (BUF1, Local0, ))))
6439                     {   }   //  this is how the code was really implemented
6440                 Else
6441                     {   Return (Zero)   }
6442             }   //  loop through all BUF0 buffer elements
6444             Return (One)    //  strings / buffers match
6445         }   //  MCTH:   Control Method to compare two strings
6448         Method (TEST)
6449         {
6450             Store ("++++++++ IndexOp5 Test", Debug)
6452             If (MCTH (\_OS, "Microsoft Windows NT"))
6453                 {   Store (1, OSFL) }
6455             If (LNotEqual (OSFL, 1))
6456                 {   Return (11) }
6458             Return (0)
6459         }   //  TEST
6460     }   //  IDX5
6463 // test IndexOp.asl
6465     Scope (\_SB)    //  System Bus
6466     {   //  _SB system bus
6468         Method (C097)
6469             {   Return (1)  }
6471         Device (PCI2)
6472         {   //  Root PCI Bus
6473             Name (_HID, EISAID("PNP0A03"))
6474             Name (_ADR, 0x00000000)
6475             Name (_CRS, Buffer(26)  {"\_SB_.PCI2._CRS..........."})
6476             Method (_STA)   {Return (0x0F)}
6478             Device (ISA)
6479             {   //  ISA bridge
6480                 Name (_ADR, 0x00030000)     //  ISA bus ID
6482                 Device (EC0)
6483                 {   //  Embedded Controller
6484                     Name (_GPE, 0)              //  EC use GPE0
6485                     Name (_ADR, 0x0030000)  //  PCI address
6487                     Method (_STA,0)         //  EC Status
6488                         {   Return(0xF) }       //  EC is functioning
6490                     Name (_CRS, ResourceTemplate()
6491                         {
6492                             IO (Decode16, 0x62, 0x62, 1, 1)
6493                             IO (Decode16, 0x66, 0x66, 1, 1)
6494                         }
6495                     )
6497                 //  create EC's region and field
6498                     OperationRegion (RAM, SystemMemory, 0x400000, 0x100)
6499                     Field (RAM, AnyAcc, NoLock, Preserve)
6500                     {
6501                         //  AC information
6502                         ADP,    1,      //  AC Adapter 1:On-line, 0:Off-line
6503                         AFLT,   1,      //  AC Adapter Fault  1:Fault  0:Normal
6504                         BAT0,   1,      //  BAT0  1:present, 0:not present
6505                         ,       1,      //  reserved
6506                         ,       28, //  filler to force DWORD alignment
6508                         //  CMBatt information
6509                         BPU0,   32, //  Power Unit
6510                         BDC0,   32, //  Designed Capacity
6511                         BFC0,   32, //  Last Full Charge Capacity
6512                         BTC0,   32, //  Battery Technology
6513                         BDV0,   32, //  Design Voltage
6514                         BST0,   32, //  Battery State
6515                         BPR0,   32, //  Battery Present Rate
6516                                         //  (Designed Capacity)x(%)/{(h)x100}
6517                         BRC0,   32, //  Battery Remaining Capacity
6518                                         //  (Designed Capacity)(%)^100
6519                         BPV0,   32, //  Battery Present Voltage
6520                         BTP0,   32, //  Trip Point
6521                         BCW0,   32, //  Design capacity of Warning
6522                         BCL0,   32, //  Design capacity of Low
6523                         BCG0,   32, //  capacity granularity 1
6524                         BG20,   32, //  capacity granularity 2
6525                         BMO0,   32, //  Battery model number field
6526                         BIF0,   32, //  OEM Information(00h)
6527                         BSN0,   32, //  Battery Serial Number
6528                         BTY0,   32, //  Battery Type (e.g., "Li-Ion")
6529                         BTY1,   32      //  Battery Type (e.g., "Li-Ion")
6530                     }   //  Field
6531                 }   //  EC0: Embedded Controller
6532             }   //  ISA bridge
6533         }   //  PCI2 Root PCI Bus
6535         Device (IDX0)
6536         {   //  Test device name
6537             Name (_HID, EISAID ("PNP0C0A"))     //  Control Method Battey ID
6538             Name (_PCL, Package() {\_SB})
6539             Method (_STA)
6540             {
6541                 //  _STA bits 0-3 indicate existence of battery slot
6542                 //  _STA bit 4 indicates battery (not) present
6543                 If (\_SB.PCI2.ISA.EC0.BAT0)
6544                     {   Return (0x1F)   }   //  Battery present
6545                 else
6546                     {   Return (0x0F)   }   //  Battery not present
6547             }   //  _STA
6549             Method (_BIF,, Serialized)
6550             {
6551                 Name (BUFR, Package(13) {})
6552                 Store (\_SB.PCI2.ISA.EC0.BPU0, Index (BUFR,0))  //  Power Unit
6553                 Store (\_SB.PCI2.ISA.EC0.BDC0, Index (BUFR,1))  //  Designed Capacity
6554                 Store (\_SB.PCI2.ISA.EC0.BFC0, Index (BUFR,2))  //  Last Full Charge Capa.
6555                 Store (\_SB.PCI2.ISA.EC0.BTC0, Index (BUFR,3))  //  Battery Technology
6556                 Store (\_SB.PCI2.ISA.EC0.BDV0, Index (BUFR,4))  //  Designed Voltage
6557                 Store (\_SB.PCI2.ISA.EC0.BCW0, Index (BUFR,5))  //  Designed warning level
6558                 Store (\_SB.PCI2.ISA.EC0.BCL0, Index (BUFR,6))  //  Designed Low level
6559                 Store (\_SB.PCI2.ISA.EC0.BCG0, Index (BUFR,7))  //  Capacity granularity 1
6560                 Store (\_SB.PCI2.ISA.EC0.BG20, Index (BUFR,8))  //  Capacity granularity 2
6562                 Store ("", Index (BUFR,9))                              //  Model Number
6564                 Store ("", Index (BUFR,10))                         //  Serial Number
6566                 Store ("LiOn", Index (BUFR,11))                     //  Battery Type
6568                 Store ("Chicony", Index (BUFR,12))                  //  OEM Information
6570                 Return (BUFR)
6571             }   //  _BIF
6573             Method (_BST,, Serialized)
6574             {
6575                 Name (BUFR, Package(4) {1, 0x100, 0x76543210, 0x180})
6576                 Return (BUFR)
6577             }   //  _BST
6579             Method (_BTP,1)
6580             {
6581                 Store (arg0, \_SB.PCI2.ISA.EC0.BTP0)    //  Set Battery Trip point
6582             }
6584             Method (TEST,, Serialized)
6585             {
6587                 Store ("++++++++ IndexOp Test", Debug)
6589                 //  test storing into uninitialized package elements
6590                 Name (PBUF, Package(4) {})  //  leave unitialized
6591                 Store (0x01234567, Index (PBUF,0))
6592                 Store (0x89ABCDEF, Index (PBUF,1))
6593                 Store (0xFEDCBA98, Index (PBUF,2))
6594                 Store (0x76543210, Index (PBUF,3))
6596                 //  verify values stored into uninitialized package elements
6597                 If (LNotEqual (DerefOf (Index (PBUF,0)), 0x01234567))
6598                     {   Return (0x10)   }
6600                 If (LNotEqual (DerefOf (Index (PBUF,1)), 0x89ABCDEF))
6601                     {   Return (0x11)   }
6603                 If (LNotEqual (DerefOf (Index (PBUF,2)), 0xFEDCBA98))
6604                     {   Return (0x12)   }
6606                 If (LNotEqual (DerefOf (Index (PBUF,3)), 0x76543210))
6607                     {   Return (0x13)   }
6610                 //  store _BIF package return value into Local0
6611                 Store (_BIF, Local0)
6613                 //  save Local0 object type value into Local1
6614                 Store (ObjectType (Local0), Local1)
6616                 //  validate Local0 is a Package
6617                 If (LNotEqual (Local1, 4))  //  Package type is 4
6618                     {   Return (0x21)   }   //  failure
6621                 //  test storing into buffer field elements
6622                 Name (BUFR, Buffer(16)
6623                     {   //  initial values
6624                         00, 00, 00, 00, 00, 00, 00, 00,
6625                         00, 00, 00, 00, 00, 00, 00, 00,
6626                     }
6627                 )   //  BUFR
6628                 //  test storing into buffer field elements
6629                 Store (0x01234567, Index (BUFR,0))  //  should only store 0x67
6630                 Store (0x89ABCDEF, Index (BUFR,4))  //  should only store 0xEF
6631                 Store (0xFEDCBA98, Index (BUFR,8))  //  should only store 0x98
6632                 Store (0x76543210, Index (BUFR,12)) //  should only store 0x10
6634                 //  verify storing into buffer field elements
6635                 If (LNotEqual (DerefOf (Index (BUFR,0)), 0x67))
6636                     {   Return (0x30)   }
6638                 If (LNotEqual (DerefOf (Index (BUFR,1)), 0))
6639                     {   Return (0x31)   }
6641                 If (LNotEqual (DerefOf (Index (BUFR,4)), 0xEF))
6642                     {   Return (0x34)   }
6644                 If (LNotEqual (DerefOf (Index (BUFR,8)), 0x98))
6645                     {   Return (0x38)   }
6647                 If (LNotEqual (DerefOf (Index (BUFR,12)), 0x10))
6648                     {   Return (0x3C)   }
6651                 Return (0)  //  pass
6652             }   //  TEST
6653         }   //  IDX0
6654     }   //  _SB system bus
6657 // test BitIndex.asl
6659 //  BitIndex test
6660 //  This is a test case for accessing fields defined as single bits in
6661 //  memory.  This is done by creating two index fields that overlay the
6662 //  same DWORD in memory.  One field accesses the DWORD as a DWORD, the
6663 //  other accesses individual bits of the same DWORD field in memory.
6665     Scope (\_SB)    //  System Bus
6666     {   //  _SB system bus
6667         OperationRegion (RAM, SystemMemory, 0x800000, 0x100)
6668         Field (RAM, AnyAcc, NoLock, Preserve)
6669         {   //  Any access
6670             TREE,   3,
6671             WRD0,   16,
6672             WRD1,   16,
6673             WRD2,   16,
6674             WRD3,   16,
6675             WRD4,   16,
6676             DWRD,   32, //  DWORD field
6677         }
6678         Field (RAM, AnyAcc, NoLock, Preserve)
6679         {   //  Any access
6680             THRE,   3,
6681             WD00,   16,
6682             WD01,   16,
6683             WD02,   16,
6684             WD03,   16,
6685             WD04,   16,
6686             BYT0,   8,  //  Start off with a BYTE
6687             BIT0,   1,  //  single-bit field
6688             BIT1,   1,  //  single-bit field
6689             BIT2,   1,  //  single-bit field
6690             BIT3,   1,  //  single-bit field
6691             BIT4,   1,  //  single-bit field
6692             BIT5,   1,  //  single-bit field
6693             BIT6,   1,  //  single-bit field
6694             BIT7,   1,  //  single-bit field
6695             BIT8,   1,  //  single-bit field
6696             BIT9,   1,  //  single-bit field
6697             BITA,   1,  //  single-bit field
6698             BITB,   1,  //  single-bit field
6699             BITC,   1,  //  single-bit field
6700             BITD,   1,  //  single-bit field
6701             BITE,   1,  //  single-bit field
6702             BITF,   1,  //  single-bit field
6703             BYTZ,   8,  //  End with a BYTE for a total of 32 bits
6704         }
6706         Device (BITI)
6707         {   //  Test device name
6709             Method (MBIT)   //  Test single bit memory accesses
6710             {
6712                 If (LNotEqual (DWRD, 0x00))
6713                 {
6714                     Store (0xFF00, Local0)
6715                 }
6716                 Else
6717                 {
6718                     //  Prime Local0 with 0...assume passing condition
6719                     Store (0, Local0)
6721                     //  set memory contents to known values using DWORD field
6722                     Store (0x5A5A5A5A, DWRD)
6724                     //  Given the value programmed into DWRD, only the odd bits
6725                     //  of the lower nibble should be set. BIT1, BIT3 should be set.
6726                     //  BIT0 and BIT2 should be clear
6728                     If (BIT0)
6729                     {
6730                         Or (Local0, 0x01, Local0)
6731                     }
6733                     If (LNot (BIT1))
6734                     {
6735                         Or (Local0, 0x02, Local0)
6736                     }
6738                     If (BIT2)
6739                     {
6740                         Or (Local0, 0x04, Local0)
6741                     }
6743                     If (LNot (BIT3))
6744                     {
6745                         Or (Local0, 0x08, Local0)
6746                     }
6748                     //  Now check the upper nibble.  Only the "even" bits should
6749                     //  be set.  BIT4, BIT6.  BIT5 and BIT7 should be clear.
6750                     If (LNot (BIT4))
6751                     {
6752                         Or (Local0, 0x10, Local0)
6753                     }
6755                     If (BIT5)
6756                     {
6757                         Or (Local0, 0x20, Local0)
6758                     }
6760                     If (LNot (BIT6))
6761                     {
6762                         Or (Local0, 0x40, Local0)
6763                     }
6765                     If (BIT7)
6766                     {
6767                         Or (Local0, 0x80, Local0)
6768                     }
6769                 }   //  End Else DWRD zeroed out
6771                 Return (Local0)
6772             }   //  MBIT:   Test single bit memory accesses
6774             Method (TEST)
6775             {
6777                 Store ("++++++++ BitIndex Test", Debug)
6779                 //  Zero out DWRD
6780                 Store (0x00000000, DWRD)
6782                 //  MBIT returns zero if successful
6783                 //  This may be causing problems -- Return (MBIT)
6784                 Store (MBIT, Local0)
6786                 Return (Local0)
6787             }   //  TEST
6788         }   //  BITI
6789     }   //  _SB system bus
6792 // test IndexOp3.asl
6794 //  Additional IndexOp test cases to support ACPICMB (control method battery
6795 //  test) on Compaq laptops. Test cases include storing a package into
6796 //  an IndexOp target and validating that changing source and destination
6797 //  package contents are independent of each other.
6799     Scope (\_SB)    //  System Bus
6800     {   //  _SB system bus
6802         Name (C174, 13)
6803         Name (C175, 8)
6805         Device (C158)
6806         {   //  C158:   AC Adapter device
6807             Name (_HID, "ACPI0003") //  AC Adapter device
6808             Name (_PCL, Package (1) {\_SB})
6810             Method (_PSR)
6811             {
6812                 Acquire (\_GL, 0xFFFF)
6813                 Release (\_GL)
6814                 And (Local0, 1, Local0) //  Local0 &= 1
6815                 Return (Local0)
6816             }   //  _PSR
6817         }   //  C158:   AC Adapter device
6819         Name (C176, Package (4) {"Primary", "MultiBay", "DockRight", "DockLeft"})
6821         Name (C177, Package (4) {0x99F5, 0x99F5, 0x995F, 0x995F})
6823         Name (C178, Package (4)
6824         {
6825             Package (4) {0, 0, 0x966B, 0x4190},
6826             Package (4) {0, 0, 0x966B, 0x4190},
6827             Package (4) {0, 0, 0x966B, 0x4190},
6828             Package (4) {0, 0, 0x966B, 0x4190}
6829         })  //  C178
6831         Name (C179, Package (4) {0, 0, 0x966B, 0x4190})
6833         Name (C17A, Package (4)
6834         {
6835             Package (3) {0, 0, 0},
6836             Package (3) {0, 0, 0},
6837             Package (3) {0, 0, 0},
6838             Package (3) {0, 0, 0}
6839         })  //  C17A
6841         Method (C17B, 1, Serialized)
6842         {   //  C17B:   _BIF implementation
6843             Name (C17C, Package (13)
6844             {   //  C17C:   _BIF control method return package
6845                 0,                  //  Power Unit (0 ==> mWh and mW)
6846                 0x99F5,         //  Design Capacity
6847                 0x99F5,         //  Last Full Charge Capacity
6848                 1,                  //  Battery Technology (1 ==> rechargeable)
6849                 0x3840,         //  Design Voltage
6850                 0x1280,         //  Design Capacity of Warning
6851                 0x0AC7,         //  Design Capacity of Low
6852                 1,                  //  Battery Capacity Granularity 1 (Low -- Warning)
6853                 1,                  //  Battery Capacity Granularity 2 (Warning -- Full)
6854                 "2891",         //  Model Number (ASCIIZ)
6855                 "(-Unknown-)",  //  Serial Number (ASCIIZ)
6856                 "LIon",         //  Battery Type (ASCIIZ)
6857                 0                   //  OEM Information (ASCIIZ)
6858             })  //  C17C:   _BIF control method return package
6860             And (Arg0, 7, Local0)                       //  Local0 = Arg0 & 7
6862             ShiftRight (Local0, 1, Local4)          //  Local4 = Local0 >> 1
6864             Store (C179, Index (C178, Local4, ))    //  C178->Local4 = C179
6866             //  verify source and destination packages can be altered independent
6867             //  of each other (i.e., changing one's contents does NOT change other's
6868             //  contents)
6869             Store (0x1234, Index (C179, 2, ))               //  C179[2] = 0x1234
6870             Store (DerefOf (Index (C179, 2, )), Local2) //  Local2 = C179[2]
6871             if (LNotEqual (Local2, 0x1234))
6872                 {   Return (0x1234) }
6873                                                                         //  Local2 = C178[0,2]
6874             Store (DerefOf (Index (DerefOf (Index (C178, 0, )), 2, )), Local2)
6875             if (LNotEqual (Local2, 0x966B))
6876                 {   Return (0x1234) }
6878             // Restore data to allow iterative execution
6879             Store (0x966B, Index (C179, 2, ))               //  C179[2] = 0x966B
6881                                                                         //  C178[0,3] = 0x5678
6882             Store (0x5678, Index (DerefOf (Index (C178, 0, )), 3, ))
6883                                                                         //  Local2 = C178[0,3]
6884             Store (DerefOf (Index (DerefOf (Index (C178, 0, )), 3, )), Local2)
6885             if (LNotEqual (Local2, 0x5678))
6886                 {   Return (0x5678) }
6888             Store (DerefOf (Index (C179, 3, )), Local2) //  Local2 = C179[3]
6889             if (LNotEqual (Local2, 0x4190))
6890                 {   Return (0x5678) }
6892             // Restore data to allow iterative execution
6893             Store (0x4190, Index (DerefOf (Index (C178, 0, )), 3, ))    //  C179[2] = 0x4190
6895             Return (C17C)
6896         }   //  C17B:   _BIF implementation
6898         Device (C154)
6899         {   //  C154:   Battery 0
6900             Name (_HID, "*PNP0C0A")     //  Control Method Battey ID
6901             Name (_UID, 0)                  //  first instance
6903             Method (_BIF)
6904             {   //  _BIF
6905                 Return (C17B (48))
6906             }   //  _BIF
6907         }   //  C154:   Battery 0
6909         Device (IDX3)
6910         {
6911             Method (LCLB,, Serialized)
6912             {   //  LCLB control method: test Index(Local#) where Local# is buffer
6913                 //  Local0 is index counter
6914                 //  Local1 is buffer
6915                 //  Local2 receives BUFR[Local0] via Deref(Index(Local1...))
6916                 //  Local3 is Local1 or Local2 object type
6917                 //  Local4 is return error code
6919                 Name (BUFR, Buffer ()   {0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
6921                 //  save PKG into Local1
6922                 Store (BUFR, Local1)
6924                 //  save Local2 object type value into Local3
6925                 Store (ObjectType (Local1), Local3)
6927                 //  validate Local1 is a Buffer
6928                 If (LNotEqual (Local3, 3))      //  Buffer type is 3
6929                     {   Return (0x9F)   }
6932                 Store (0, Local0)
6933                 While (LLess (Local0, 5))
6934                 {   //  While (Local0 < 5)
6935                     //  Local2 = Local1[Local0]
6936                     Store (DerefOf (Index (Local1, Local0, )), Local2)
6938                     //  save Local2 object type value into Local3
6939                     Store (ObjectType (Local2), Local3)
6941                     //  validate Local2 is a Number
6942                     If (LNotEqual (Local3, 1))      //  Number type is 1
6943                         {   Return (0x9E)   }
6945                     //  validate Local1[Local0] value == Local0
6946                     If (LNotEqual (Local0, Local2))
6947                     {   //  Local0 != Local2 == PKG[Local0]
6948                         //  Local4 = 0x90 + loop index (Local0)
6949                         Add (0x90, Local0, Local4)
6951                         //  return 0x90 + loop index
6952                         Return (Local4)
6953                     }
6955                     Increment (Local0)
6956                 }   //  While (Local0 < 5)
6958                 Store ("DerefOf(Index(LocalBuffer,,)) PASS", Debug)
6960                 Return (0)  //  Pass
6961             }   //  LCLB control method: test Index(Local#) where Local# is buffer
6963             Method (LCLP,, Serialized)
6964             {   //  LCLP control method: test Index(Local#) where Local# is package
6965                 //  Local0 is index counter
6966                 //  Local1 is package
6967                 //  Local2 receives PKG[Local0] via Deref(Index(Local1...))
6968                 //  Local3 is Local1 or Local2 object type
6969                 //  Local4 is return error code
6971                 Name (PKG, Package ()   {0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
6973                 //  save PKG into Local1
6974                 Store (PKG, Local1)
6976                 //  save Local2 object type value into Local3
6977                 Store (ObjectType (Local1), Local3)
6979                 //  validate Local1 is a Package
6980                 If (LNotEqual (Local3, 4))      //  Package type is 4
6981                     {   Return (0x8F)   }
6984                 Store (0, Local0)
6985                 While (LLess (Local0, 5))
6986                 {   //  While (Local0 < 5)
6987                     //  Local2 = Local1[Local0]
6988                     Store (DerefOf (Index (Local1, Local0, )), Local2)
6990                     //  save Local2 object type value into Local3
6991                     Store (ObjectType (Local2), Local3)
6993                     //  validate Local2 is a Number
6994                     If (LNotEqual (Local3, 1))      //  Number type is 1
6995                         {   Return (0x8E)   }
6997                     //  validate Local1[Local0] value == Local0
6998                     If (LNotEqual (Local0, Local2))
6999                     {   //  Local0 != Local2 == PKG[Local0]
7000                         //  Local4 = 0x80 + loop index (Local0)
7001                         Add (0x80, Local0, Local4)
7003                         //  return 0x80 + loop index
7004                         Return (Local4)
7005                     }
7007                     Increment (Local0)
7008                 }   //  While (Local0 < 5)
7010                 Store ("DerefOf(Index(LocalPackage,,)) PASS", Debug)
7012                 Return (0)  //  Pass
7013             }   //  LCLP control method: test Index(Local#) where Local# is package
7015             Method (TEST)
7016             {
7018                 Store ("++++++++ IndexOp3 Test", Debug)
7020                 //  store _BIF package return value into Local0
7021                 Store (\_SB.C154._BIF, Local0)
7023                 //  save Local0 object type value into Local1
7024                 Store (ObjectType (Local0), Local1)
7026                 //  validate Local0 is a Package
7027                 If (LNotEqual (Local1, 4))      //  Package type is 4
7028                 {   //  failure: did not return a Package (type 4)
7029                     //  if Local0 is a Number, it contains an error code
7030                     If (LEqual (Local1, 1))     //  Number type is 1
7031                         {   Return (Local0) }   //  return Local0 error code
7032                     Else                                //  Local0 is not a Number
7033                         {   Return (1)  }           //  return default error code
7034                 }   //  failure: did not return a Package (type 4)
7036                 //  save LCLB control method return value into Local2
7037                 Store (LCLB, Local2)
7038                 If (LNotEqual (Local2, 0))
7039                     {   Return (Local2) }   //  return failure code
7041                 //  save LCLP control method return value into Local2
7042                 Store (LCLP, Local2)
7043                 If (LNotEqual (Local2, 0))
7044                     {   Return (Local2) }   //  return failure code
7046                 Return (0)  //  Pass
7047             }   //  TEST
7048         }   //  IDX3:   Test device name
7049     }   //  _SB system bus
7052 // MTL developed test to exercise Indexes into buffers
7054     Device(IDX7)
7055     {
7057         Name (PKG4, Package() {
7058                 0x2,
7059                 "A short string",
7060                 Buffer() {0xA, 0xB, 0xC, 0xD},
7061                 0x1234,
7062                 Package() {IDX7, 0x3}
7063                 })
7065         //
7066         // Generic Test method
7067         //
7068         // This test returns 0xE (14) - ObjectType = Buffer Field
7069         Method(TST1,, Serialized)
7070         {
7071             Name (DEST, Buffer ()                           //  62 characters plus NULL
7072                 {"Destination buffer that is longer than the short source buffer"})
7074             //  verify object type returned by Index(Buffer,Element,)
7075             Store (Index (DEST, 2, ), Local1)
7076             Store (ObjectType (Local1), Local2)
7077             If (LEqual(Local2, 14))
7078             {
7079                 Return(0)
7080             }
7081             Else
7082             {
7083                 Return(0x1)
7084             }
7086         }
7088         Method(TST2,, Serialized)
7089         {
7090             Name (BUF0, Buffer() {0x1, 0x2, 0x3, 0x4, 0x5})
7091             Store(0x55, Index(BUF0, 2))
7092             Store(DerefOf(Index(BUF0, 2)), Local0)
7093             If (LEqual(Local0, 0x55))
7094             {
7095                 Return(0)
7096             }
7097             Else
7098             {
7099                 Return(0x2)
7100             }
7103         }
7105         Method(TST3,, Serialized)
7106         {
7107             Name (BUF1, Buffer() {0x1, 0x2, 0x3, 0x4, 0x5})
7108             Store(Index(BUF1, 1), Local0)
7109             Store(DerefOf(Local0), Local1)
7110             If (LEqual(Local1, 0x2))
7111             {
7112                 Return(0)
7113             }
7114             Else
7115             {
7116                 Return(0x3)
7117             }
7119         }
7121         Method(TST4)
7122         {
7123             // Index (PKG4, 0) is a Number
7124             Store (Index (PKG4, 0), Local0)
7125             Store (ObjectType(Local0), Local1)
7126             If (LEqual(Local1, 0x1))
7127             {
7128                 Return(0)
7129             }
7130             Else
7131             {
7132                 Return(0x4)
7133             }
7135         }
7137         Method(TST5)
7138         {
7139             // Index (PKG4, 1) is a String
7140             Store (Index (PKG4, 1), Local0)
7141             Store (ObjectType(Local0), Local1)
7142             If (LEqual(Local1, 0x2))
7143             {
7144                 Return(0)
7145             }
7146             Else
7147             {
7148                 Return(0x5)
7149             }
7151         }
7153         Method(TST6)
7154         {
7155             // Index (PKG4, 2) is a Buffer
7156             Store (Index (PKG4, 2), Local0)
7157             Store (ObjectType(Local0), Local1)
7158             If (LEqual(Local1, 0x3))
7159             {
7160                 Return(0)
7161             }
7162             Else
7163             {
7164                 Return(0x6)
7165             }
7167         }
7169         Method(TST7)
7170         {
7171             // Index (PKG4, 3) is a Number
7172             Store (Index (PKG4, 3), Local0)
7173             Store (ObjectType(Local0), Local1)
7174             If (LEqual(Local1, 0x1))
7175             {
7176                 Return(0)
7177             }
7178             Else
7179             {
7180                 Return(0x7)
7181             }
7183         }
7185         Method(TST8)
7186         {
7187             // Index (PKG4, 4) is a Package
7188             Store (Index (PKG4, 4), Local0)
7189             Store (ObjectType(Local0), Local1)
7190             If (LEqual(Local1, 0x4))
7191             {
7192                 Return(0)
7193             }
7194             Else
7195             {
7196                 Return(0x8)
7197             }
7199         }
7201         Method(TST9)
7202         {
7203             // DerefOf (Index (PKG4, 0)) is a Number
7204             Store (DerefOf (Index (PKG4, 0)), Local0)
7205             If (LEqual(Local0, 0x2))
7206             {
7207                 Return(0)
7208             }
7209             Else
7210             {
7211                 Return(0x9)
7212             }
7214         }
7216         Method(TSTA)
7217         {
7218             // DerefOf (Index (PKG4, 1)) is a String
7219             Store (DerefOf (Index (PKG4, 1)), Local0)
7220             Store (SizeOf(Local0), Local1)
7221             If (LEqual(Local1, 0xE))
7222             {
7223                 Return(0)
7224             }
7225             Else
7226             {
7227                 Return(0xA)
7228             }
7230         }
7232         Method(TSTB)
7233         {
7234             // DerefOf (Index (PKG4, 2)) is a Buffer
7235             Store (DerefOf (Index (PKG4, 2)), Local0)
7236             Store (SizeOf(Local0), Local1)
7237             If (LEqual(Local1, 0x4))
7238             {
7239                 Return(0)
7240             }
7241             Else
7242             {
7243                 Return(0xB)
7244             }
7246         }
7248         Method(TSTC)
7249         {
7250             // DerefOf (Index (PKG4, 3)) is a Number
7251             Store (DerefOf (Index (PKG4, 3)), Local0)
7252             If (LEqual(Local0, 0x1234))
7253             {
7254                 Return(0)
7255             }
7256             Else
7257             {
7258                 Return(0xC)
7259             }
7261         }
7263         Method(TSTD)
7264         {
7265             // DerefOf (Index (PKG4, 4)) is a Package
7266             Store (DerefOf (Index (PKG4, 4)), Local0)
7267             Store (SizeOf(Local0), Local1)
7268             If (LEqual(Local1, 0x2))
7269             {
7270                 Return(0)
7271             }
7272             Else
7273             {
7274                 Return(0xD)
7275             }
7277         }
7279         Method(TSTE)
7280         {
7281             // DerefOf (Index (PKG4, 2)) is a Buffer
7282             Store (DerefOf (Index (PKG4, 2)), Local0)
7283             // DerefOf (Index (Local0, 1)) is a Number
7284             Store (DerefOf (Index (Local0, 1)), Local1)
7285             If (LEqual(Local1, 0xB))
7286             {
7287                 Return(0)
7288             }
7289             Else
7290             {
7291                 Return(0xE)
7292             }
7294         }
7296         Method (TSTF,, Serialized)
7297         {
7298             Name (SRCB, Buffer (12) {}) //  12 characters
7299             Store ("Short Buffer", SRCB)
7301             Name (DEST, Buffer ()                       //  62 characters plus NULL
7302                 {"Destination buffer that is longer than the short source buffer"})
7304             //  overwrite DEST contents, starting at buffer position 2
7305             Store (SRCB, Index (DEST, 2))
7307             //
7308             //  The DEST buffer element should be replaced with the last element of
7309             //      the SRCB element (i.e. 's'->'r')
7310             Store (DerefOf (Index (DEST, 2)), Local0)
7312             If (LNotEqual (Local0, 0x72))       //  'r'
7313             {
7314                 //  DEST element does not match the value from SRCB
7315                 Return(Or(Local0, 0x1000))
7316             }
7318             Return(0)
7319         }
7321         Method (TSTG,, Serialized)
7322         {
7324             Name (SRCB, Buffer (12) {}) //  12 characters
7325             Store ("Short Buffer", SRCB)
7327             Name (DEST, Buffer ()                       //  62 characters plus NULL
7328                 {"Destination buffer that is longer than the short source buffer"})
7330             //  overwrite DEST contents, starting at buffer position 2
7331             Store (SRCB, Index (DEST, 2))
7333             //
7334             // The next element of DEST should be unchanged
7335             //
7336             Store (DerefOf (Index (DEST, 3)), Local0)
7338             If (LNotEqual (Local0, 0x74))       //  't'
7339             {
7340                 //  DEST has been changed
7341                 Return(Or(Local0, 0x2000))
7342             }
7344             //
7345             // The next element of DEST should be unchanged
7346             //
7347             Store (DerefOf (Index (DEST, 4)), Local0)
7349             If (LNotEqual (Local0, 0x69))       //  'i'
7350             {
7351                 //  DEST has been changed
7352                 Return(Or(Local0, 0x2100))
7353             }
7355             //
7356             // The next element of DEST should be unchanged
7357             //
7358             Store (DerefOf (Index (DEST, 5)), Local0)
7360             If (LNotEqual (Local0, 0x6E))       //  'n'
7361             {
7362                 //  DEST has been changed
7363                 Return(Or(Local0, 0x2200))
7364             }
7366             //
7367             // The next element of DEST should be unchanged
7368             //
7369             Store (DerefOf (Index (DEST, 6)), Local0)
7371             If (LNotEqual (Local0, 0x61))       //  'a'
7372             {
7373                 //  DEST has been changed
7374                 Return(Or(Local0, 0x2300))
7375             }
7377             //
7378             // The next element of DEST should be unchanged
7379             //
7380             Store (DerefOf (Index (DEST, 7)), Local0)
7382             If (LNotEqual (Local0, 0x74))       //  't'
7383             {
7384                 //  DEST has been changed
7385                 Return(Or(Local0, 0x2400))
7386             }
7388             //
7389             //  Verify DEST elements beyond end of SRCB buffer copy
7390             //  have not been changed
7391             Store (DerefOf (Index (DEST, 14)), Local0)
7393             If (LNotEqual (Local0, 0x66))       // 'f'
7394             {
7395                 //  DEST has been changed
7396                 Return(Or(Local0, 0x2400))
7397             }
7399             Return(0)
7400         }
7402         //
7403         // This test shows that MS ACPI.SYS stores only the lower 8-bits of a 32-bit
7404         //  number into the index'ed buffer
7405         //
7406         Method (TSTH,, Serialized)
7407         {
7408             // Create a Destination Buffer
7409             Name (DBUF, Buffer () {"abcdefghijklmnopqrstuvwxyz"})
7411             // Store a number > UINT8 into an index of the buffer
7412             Store (0x12345678, Index(DBUF, 2))
7414             // Check the results
7415             Store (DerefOf (Index (DBUF, 2)), Local0)
7416             If (LNotEqual (Local0, 0x78))   // 0x78
7417             {
7418                 Return(Or(Local0, 0x3000))
7419             }
7421             Store (DerefOf (Index (DBUF, 3)), Local0)
7422             If (LNotEqual (Local0, 0x64))   // 'd'
7423             {
7424                 Return(Or(Local0, 0x3100))
7425             }
7427             Store (DerefOf (Index (DBUF, 4)), Local0)
7428             If (LNotEqual (Local0, 0x65))   // 'e'
7429             {
7430                 Return(Or(Local0, 0x3200))
7431             }
7433             Store (DerefOf (Index (DBUF, 5)), Local0)
7434             If (LNotEqual (Local0, 0x66))   // 'f'
7435             {
7436                 Return(Or(Local0, 0x3300))
7437             }
7439             Return(0)
7440         }
7442         Method (TSTI,, Serialized)
7443         {
7444             // Create a Destination Buffer
7445             Name (DBUF, Buffer () {"abcdefghijklmnopqrstuvwxyz"})
7447             // Store a String into an index of the buffer
7448             Store ("ABCDEFGH", Index(DBUF, 2))
7450             // Check the results
7451             Store (DerefOf (Index (DBUF, 2)), Local0)
7452             If (LNotEqual (Local0, 0x48))   // 'H'
7453             {
7454                 Return(Or(Local0, 0x4000))
7455             }
7457             Store (DerefOf (Index (DBUF, 3)), Local0)
7458             If (LNotEqual (Local0, 0x64))   // 'd'
7459             {
7460                 Return(Or(Local0, 0x4100))
7461             }
7463             Store (DerefOf (Index (DBUF, 4)), Local0)
7464             If (LNotEqual (Local0, 0x65))   // 'e'
7465             {
7466                 Return(Or(Local0, 0x4200))
7467             }
7469             Store (DerefOf (Index (DBUF, 5)), Local0)
7470             If (LNotEqual (Local0, 0x66))   // 'f'
7471             {
7472                 Return(Or(Local0, 0x4300))
7473             }
7475             Return(0)
7476         }
7478         Method(TSTJ,, Serialized)
7479         {
7480             // Create a Destination Buffer
7481             Name (DBUF, Buffer () {"abcdefghijklmnopqrstuvwxyz"})
7483             // Store a number > UINT8 into an index of the buffer
7484             Store (0x1234, Index(DBUF, 2))
7486             // Check the results
7487             Store (DerefOf (Index (DBUF, 2)), Local0)
7488             If (LNotEqual (Local0, 0x34))   // 0x34
7489             {
7490                 Return(Or(Local0, 0x3000))
7491             }
7493             Store (DerefOf (Index (DBUF, 3)), Local0)
7494             If (LNotEqual (Local0, 0x64))   // 'd'
7495             {
7496                 Return(Or(Local0, 0x3100))
7497             }
7499             Store (DerefOf (Index (DBUF, 4)), Local0)
7500             If (LNotEqual (Local0, 0x65))   // 'e'
7501             {
7502                 Return(Or(Local0, 0x3200))
7503             }
7505             Store (DerefOf (Index (DBUF, 5)), Local0)
7506             If (LNotEqual (Local0, 0x66))   // 'f'
7507             {
7508                 Return(Or(Local0, 0x3300))
7509             }
7511             Return(0)
7512         }
7514         Method(TSTK,, Serialized)
7515         {
7516             // Create a Destination Buffer
7517             Name (DBUF, Buffer () {"abcdefghijklmnopqrstuvwxyz"})
7519             // Store a number > UINT8 into an index of the buffer
7520             Store (0x123456, Index(DBUF, 2))
7522             // Check the results
7523             Store (DerefOf (Index (DBUF, 2)), Local0)
7524             If (LNotEqual (Local0, 0x56))   // 0x56
7525             {
7526                 Return(Or(Local0, 0x3000))
7527             }
7529             Store (DerefOf (Index (DBUF, 3)), Local0)
7530             If (LNotEqual (Local0, 0x64))   // 'd'
7531             {
7532                 Return(Or(Local0, 0x3100))
7533             }
7535             Store (DerefOf (Index (DBUF, 4)), Local0)
7536             If (LNotEqual (Local0, 0x65))   // 'e'
7537             {
7538                 Return(Or(Local0, 0x3200))
7539             }
7541             Store (DerefOf (Index (DBUF, 5)), Local0)
7542             If (LNotEqual (Local0, 0x66))   // 'f'
7543             {
7544                 Return(Or(Local0, 0x3300))
7545             }
7547             Return(0)
7548         }
7550         Method(TSTL,, Serialized)
7551         {
7552             // Create a Destination Buffer
7553             Name (DBUF, Buffer () {"abcdefghijklmnopqrstuvwxyz"})
7555             // Store a number > UINT8 into an index of the buffer
7556             Store (0x12, Index(DBUF, 2))
7558             // Check the results
7559             Store (DerefOf (Index (DBUF, 2)), Local0)
7560             If (LNotEqual (Local0, 0x12))   // 0x12
7561             {
7562                 Return(Or(Local0, 0x3000))
7563             }
7565             Store (DerefOf (Index (DBUF, 3)), Local0)
7566             If (LNotEqual (Local0, 0x64))   // 'd'
7567             {
7568                 Return(Or(Local0, 0x3100))
7569             }
7571             Store (DerefOf (Index (DBUF, 4)), Local0)
7572             If (LNotEqual (Local0, 0x65))   // 'e'
7573             {
7574                 Return(Or(Local0, 0x3200))
7575             }
7577             Store (DerefOf (Index (DBUF, 5)), Local0)
7578             If (LNotEqual (Local0, 0x66))   // 'f'
7579             {
7580                 Return(Or(Local0, 0x3300))
7581             }
7583             Return(0)
7584         }
7586         Method(TEST)
7587         {
7588             Store ("++++++++ IndexOp7 Test", Debug)
7590             Store(TST1(), Local0)
7591             if (LGreater (Local0, 0))
7592             {
7593                 Return(Local0)
7594             }
7596             Store(TST2(), Local0)
7597             if (LGreater (Local0, 0))
7598             {
7599                 Return(Local0)
7600             }
7602             Store(TST3(), Local0)
7603             if (LGreater (Local0, 0))
7604             {
7605                 Return(Local0)
7606             }
7608             Store(TST4(), Local0)
7609             if (LGreater (Local0, 0))
7610             {
7611                 Return(Local0)
7612             }
7614             Store(TST5(), Local0)
7615             if (LGreater (Local0, 0))
7616             {
7617                 Return(Local0)
7618             }
7620             Store(TST6(), Local0)
7621             if (LGreater (Local0, 0))
7622             {
7623                 Return(Local0)
7624             }
7626             Store(TST7(), Local0)
7627             if (LGreater (Local0, 0))
7628             {
7629                 Return(Local0)
7630             }
7632             Store(TST8(), Local0)
7633             if (LGreater (Local0, 0))
7634             {
7635                 Return(Local0)
7636             }
7638             Store(TST9(), Local0)
7639             if (LGreater (Local0, 0))
7640             {
7641                 Return(Local0)
7642             }
7644             Store(TSTA(), Local0)
7645             if (LGreater (Local0, 0))
7646             {
7647                 Return(Local0)
7648             }
7650             Store(TSTB(), Local0)
7651             if (LGreater (Local0, 0))
7652             {
7653                 Return(Local0)
7654             }
7656             Store(TSTC(), Local0)
7657             if (LGreater (Local0, 0))
7658             {
7659                 Return(Local0)
7660             }
7662             Store(TSTD(), Local0)
7663             if (LGreater (Local0, 0))
7664             {
7665                 Return(Local0)
7666             }
7668             Store(TSTE(), Local0)
7669             if (LGreater (Local0, 0))
7670             {
7671                 Return(Local0)
7672             }
7674     /* No longer ACPI compliant */
7675     /*
7676             Store(TSTF(), Local0)
7677             if (LGreater (Local0, 0))
7678             {
7679                 Return(Local0)
7680             }
7681     */
7683             Store(TSTG(), Local0)
7684             if (LGreater (Local0, 0))
7685             {
7686                 Return(Local0)
7687             }
7689             Store(TSTH(), Local0)
7690             if (LGreater (Local0, 0))
7691             {
7692                 Return(Local0)
7693             }
7695     /* No longer ACPI compliant */
7696     /*
7697             Store(TSTI(), Local0)
7698             if (LGreater (Local0, 0))
7699             {
7700                 Return(Local0)
7701             }
7702     */
7703             Store(TSTJ(), Local0)
7704             if (LGreater (Local0, 0))
7705             {
7706                 Return(Local0)
7707             }
7709             Store(TSTK(), Local0)
7710             if (LGreater (Local0, 0))
7711             {
7712                 Return(Local0)
7713             }
7715             Store(TSTL(), Local0)
7716             if (LGreater (Local0, 0))
7717             {
7718                 Return(Local0)
7719             }
7721             Return(Local0)
7723         }
7725     } // Device(IDX7)
7728 // test MatchOp.asl
7730 //  MatchOp test cases that utilize nested DerefOf(Index(...)) to validate
7731 //  MatchOp, DerefOfOp, and IndexOp of nested packages.
7733     Device (MTCH)
7734     {
7736         Method (TEST,, Serialized)
7737         {
7738             Store ("++++++++ MatchOp Test", Debug)
7740             Name (TIM0, Package ()
7741                 {
7742                     Package ()  {0x78, 0xB4, 0xF0, 0x0384},
7743                     Package ()  {0x23, 0x21, 0x10, 0},
7744                     Package ()  {0x0B, 9, 4, 0},
7745                     Package ()  {0x70, 0x49, 0x36, 0x27, 0x19},
7746                     Package ()  {0, 1, 2, 1, 2},
7747                     Package ()  {0, 0, 0, 1, 1},
7748                     Package ()  {4, 3, 2, 0},
7749                     Package ()  {2, 1, 0, 0}
7750                 })  //  TIM0
7752             Name (TMD0, Buffer (20) {0xFF, 0xFF, 0xFF, 0xFF })
7753             CreateDWordField (TMD0, 0, PIO0)    //  0xFFFFFFFF
7754             CreateDWordField (TMD0, 4, DMA0)
7755             CreateDWordField (TMD0, 8, PIO1)
7756             CreateDWordField (TMD0, 12, DMA1)
7757             CreateDWordField (TMD0, 16, CHNF)
7760             //  validate PIO0 value
7761             Store (PIO0, Local3)
7763             //  save Local3 object type value into Local2
7764             Store (ObjectType (Local3), Local2)
7766             //  validate Local3 is a Number
7767             If (LNotEqual (Local2, 1))  //  Number type is 1
7768                 {   Return (2)  }   //  failure
7770             //  validate Local3 Number value
7771             If (LNotEqual (Local3, 0xFFFFFFFF)) //  Number value 0xFFFFFFFF
7772                 {   Return (3)  }   //  failure
7774             Store ("DWordField PASS", Debug)
7777             Store (0, Local5)
7778             Store (Match (DerefOf (Index (TIM0, 1, )), MLE, Local5, MTR, 0, 0), Local6)
7780             //  save Local6 object type value into Local2
7781             Store (ObjectType (Local6), Local2)
7783             //  validate Local6 is a Number
7784             If (LNotEqual (Local2, 1))  //  Number type is 1
7785                 {   Return (4)  }   //  failure
7787             Store ("Match(DerefOf(Index(TIM0,1)),... PASS", Debug)
7790             //  validate following produces a nested package to validate
7791             //  that MatchOp did not corrupt SearchPackage (TIM0)
7792             Store (DerefOf (Index (TIM0, 1, )), Local4)
7794             //  save Local4 object type value into Local2
7795             Store (ObjectType (Local4), Local2)
7797             //  validate Local4 is a Package
7798             If (LNotEqual (Local2, 4))  //  Package type is 4
7799                 {   Return (5)  }   //  failure
7801             Store ("DerefOf(Index(TIM0,1)),... PASS", Debug)
7804             And (Match (DerefOf (Index (TIM0, 0, )), MGE, PIO0, MTR, 0, 0), 3, Local0)
7806             //  save Local0 object type value into Local2
7807             Store (ObjectType (Local0), Local2)
7809             //  validate Local0 is a Number
7810             If (LNotEqual (Local2, 1))  //  Number type is 1
7811                 {   Return (6)  }   //  failure
7813             //  validate Local0 Number value
7814             If (LNotEqual (Local0, 3))  //  Number value 3
7815                 {   Return (7)  }   //  failure
7817             Store ("And(Match(DerefOf(Index(TIM0,0)),... PASS", Debug)
7820             //  again, validate following produces a nested package
7821             Store (DerefOf (Index (TIM0, 1, )), Local4)
7823             //  save Local4 object type value into Local2
7824             Store (ObjectType (Local4), Local2)
7826             //  validate Local4 is a Package
7827             If (LNotEqual (Local2, 4))  //  Package type is 4
7828                 {   Return (8)  }   //  failure
7830             Store ("DerefOf(Index(TIM0,1)),... PASS again", Debug)
7833             //  again, validate following produces a nested package
7834             Store (DerefOf (Index (TIM0, 1, )), Local4)
7836             //  save Local4 object type value into Local2
7837             Store (ObjectType (Local4), Local2)
7839             //  validate Local4 is a Package
7840             If (LNotEqual (Local2, 4))  //  Package type is 4
7841                 {   Return (9)  }   //  failure
7843             Store ("DerefOf(Index(TIM0,1)),... PASS again", Debug)
7846             //  test nested DerefOf(Index) operators
7847             Store (DerefOf (Index (DerefOf (Index (TIM0, 1, )), Local0, )), Local1)
7849             //  save Local1 object type value into Local2
7850             Store (ObjectType (Local1), Local2)
7852             //  validate Local1 is a Number
7853             If (LNotEqual (Local2, 1))  //  Number type is 1
7854                 {   Return (10) }   //  failure
7856             //  zero indicates pass, non-zero is an error code
7857             If (LNotEqual (Local1, 0))
7858                 {   Return (11) }   //  failure
7860             Store ("DerefOf(Index(DerefOf(Index(TIM0,1)),... PASS", Debug)
7863             //  again, validate following produces a nested package
7864             Store (DerefOf (Index (TIM0, 1, )), Local4)
7866             //  save Local4 object type value into Local2
7867             Store (ObjectType (Local4), Local2)
7869             //  validate Local4 is a Package
7870             If (LNotEqual (Local2, 4))  //  Package type is 4
7871                 {   Return (12) }   //  failure
7873             Store ("DerefOf(Index(TIM0,1)),... PASS again", Debug)
7876             //  retest nested DerefOf(Index) operators
7877             Store (DerefOf (Index (DerefOf (Index (TIM0, 1, )), Local0, )), Local1)
7879             //  save Local1 object type value into Local2
7880             Store (ObjectType (Local1), Local2)
7882             //  validate Local1 is a Number
7883             If (LNotEqual (Local2, 1))  //  Number type is 1
7884                 {   Return (13) }   //  failure
7886             //  zero indicates pass, non-zero is an error code
7887             If (LNotEqual (Local1, 0))
7888                 {   Return (14) }   //  failure
7890             Store ("DerefOf(Index(DerefOf(Index(TIM0,1)),... PASS again", Debug)
7893             //  again, validate following produces a nested package
7894             Store (DerefOf (Index (TIM0, 1, )), Local4)
7896             //  save Local4 object type value into Local2
7897             Store (ObjectType (Local4), Local2)
7899             //  validate Local4 is a Package
7900             If (LNotEqual (Local2, 4))  //  Package type is 4
7901                 {   Return (15) }   //  failure
7903             Store ("DerefOf(Index(TIM0,1)),... PASS again", Debug)
7906             Return (0)  //  pass
7907         }   //  TEST
7908     }   // MTCH
7911 // test WhileBrk.asl
7913 //  This code tests the Break term and While term
7915 //  Syntax of Break term
7916 //      BreakTerm := Break
7917 //  The break operation causes the current package execution to complete.
7919 //  Syntax of While Term
7920 //      WhileTerm   := While(
7921 //          Predicate   //TermArg=>Integer
7922 //      ) {TermList}
7923 //  Predicate is evaluated as an integer.
7924 //  If the integer is non-zero, the list of terms in TermList is executed.
7925 //  The operation repeats until the Predicate evaluates to zero.
7927 // MTL NOTE: This test has been modified to reflect ACPI 2.0 break
7928 // NOTE: This test, when run under the MS ACPI.SYS grinds the system to
7929 //  a halt.
7931     Device (WHLB)
7932     {
7933         Name (CNT0, 0)
7934         Name (CNT1, 0)
7936         Method (TEST)
7937         {
7938             //  Check Break statement nested in If nested in While nested in
7939             //  While only exits inner-most While loop
7940             Store (0, CNT0)
7942             While (LLess (CNT0, 4))
7943             {
7944                 Store (0, CNT1)
7945                 While (LLess (CNT1, 10))
7946                 {
7947                     if (LEqual (CNT1, 1))
7948                     {
7949                         Break       //  exit encompassing loop
7950                     }
7952                     Increment (CNT1)
7953                 }
7955                 If (LNotEqual (CNT1, 1))
7956                 {
7957                     //  failure
7958                     Return (7)
7959                 }
7961                 Increment (CNT0)
7962             }
7964             //  Verify Break only exited inner-most While loop
7966             If (LNotEqual (CNT0, 4))
7967             {
7968                 //  failure
7969                 Return (8)
7970             }
7972             Store ("While/While/If/Break PASS", Debug)
7974             Store ("++++++++ WhileBrk Test", Debug)
7976             //  Check Break statement nested in While
7977             Store (0, CNT0)
7979             While (LLess (CNT0, 10))
7980             {
7981                 Break       //  exit encompassing package
7982                 Increment (CNT0)
7983             }
7985             If (LNotEqual (CNT0, 0))    //  instruction after Break executed
7986             {
7987                 Return (4)
7988             }
7991             Store (0, CNT0)
7993             //  Test While Term
7994             While (LLess (CNT0, 10))
7995             {
7996                 Increment (CNT0)
7997             }
7999             //  Check if the while loop was executed until the condition is satisfied.
8000             If (LNotEqual (CNT0, 10))
8001             {
8002                 Return (1)
8003             }
8006             //  While loop in a reverse order
8007             While (LGreater (CNT0, 0))
8008             {
8009                 Decrement (CNT0)
8010             }
8012             //  Check if the while loop was executed until the condition is satisfied.
8013             If (LNotEqual (CNT0, 0))
8014             {
8015                 Return (2)
8016             }
8019             Store ("While/Break PASS", Debug)
8022             //  Check Break statement nested in If nested in While
8023             Store (0, CNT0)
8025             While (LLess (CNT0, 10))
8026             {
8027                 if (LEqual (CNT0, 5))
8028                 {
8029                     Break       //  exit encompassing Package (If)
8031                     //  if we execute the next instruction,
8032                     //  Break did not exit the loop
8033                     Store (20, CNT0)    //  exit While loop with value larger
8034                                             //  than above
8035                 }
8037                 Increment (CNT0)    //  check if Break exited both If and While
8038             }   //  While
8040             If (LGreater (CNT0, 19))
8041             {   //  instruction after Break inside IfOp executed
8042                 Return (5)
8043             }
8045             //
8046             // Break will exit out of the while loop, therefore
8047             //  the CNT0 counter should still Increment until 5
8048             //
8049             If (LNotEqual (CNT0, 5))
8050             {   //  instruction after Break inside WhileOp executed
8051                 Return (6)
8052             }
8053             Store ("While/If/Break PASS", Debug)
8056             //  All the conditions passed
8057             Return (0)
8058         }   //  TEST
8059     }   //  WHLB
8063 // test IndexOp2.asl
8065 //  Additional IndexOp test cases to support ACPICMB (control method battery
8066 //  test) on Toshiba Portege 7020CT. Test cases include appropriate bit
8067 //  shifting of Field elements and reading Field elements greater than 64 bits.
8069 // MTL NOTE: This test has been modified slightly from the original test
8070 //  to take into account ACPI specification limitations.
8072     Scope (\_SB)    //  System Bus
8073     {   //  _SB system bus
8075         Device (MEM)
8076         {   //  MEM
8077             Name (_HID, 0x010CD041)
8078             Name (_STA, 0x0F)
8080             OperationRegion (SMEM, SystemMemory, 0x800000, 0x100)
8081             Field (SMEM, AnyAcc, NoLock, Preserve)
8082             {   //  Field:  SMEM overlay using 32-bit field elements
8083                 SMD0,   32, //  32-bits
8084                 SMD1,   32,     //  32-bits
8085                 SMD2,   32,     //  32-bits
8086                 SMD3,   32  //  32-bits
8087             }   //  Field:  SMEM overlay using 32-bit field elements
8088             Field (SMEM, AnyAcc, NoLock, Preserve)
8089             {   //  Field:  SMEM overlay using greater than 32-bit field elements
8090                 SME0,   69, //  larger than an integer (32 or 64)
8091                 SME1,   97  //  larger than an integer
8092             }   //  Field:  SMEM overlay using greater than 32-bit field elements
8094             OperationRegion (SRAM, SystemMemory, 0x100B0000, 0xF000)
8095             Field (SRAM, AnyAcc, NoLock, Preserve)
8096             {   //  Field:  SRAM overlay
8097                     ,   0x34000,    //  skip
8098                 IEAX,   0x20,
8099                 IEBX,   0x20,
8100                 IECX,   0x20,
8101                 IEDX,   0x20,
8102                 IESI,   0x20,
8103                 IEDI,   0x20,
8104                 IEBP,   0x20,
8105                     ,   0x20,
8106                 OEAX,   0x20,
8107                 OEBX,   0x20,
8108                 OECX,   0x20,
8109                 OEDX,   0x20,
8110                 OESI,   0x20,
8111                 OEDI,   0x20,
8112                 OEBP,   0x20,
8113                     ,   0x618,  //  skip
8114                 ACST,   1,
8115                 BES1,   1,
8116                 BES2,   1,
8117                     ,   5,          //  skip
8118                 BMN1,   0x68,
8119                 BSN1,   0x58,
8120                 BTP1,   0x48,
8121                 BPU1,   0x20,
8122                 BDC1,   0x20,
8123                 BLF1,   0x20,
8124                 BTC1,   0x20,
8125                 BDV1,   0x20,
8126                 BST1,   0x20,
8127                 BPR1,   0x20,
8128                 BRC1,   0x20,
8129                 BPV1,   0x20,
8130                     ,   0x20,
8131                 BCW1,   0x20,
8132                 BCL1,   0x20,
8133                 BG11,   0x20,
8134                 BG21,   0x20,
8135                 BOI1,   0x20,
8136                     ,   0x530,  //  skip
8137                 BMN2,   0x68,
8138                 BSN2,   0x58,
8139                 BTP2,   0x48,
8140                 BPU2,   0x20,
8141                 BDC2,   0x20,
8142                 BLF2,   0x20,
8143                 BTC2,   0x20,
8144                 BDV2,   0x20,
8145                 BST2,   0x20,
8146                 BPR2,   0x20,
8147                 BRC2,   0x20,
8148                 BPV2,   0x20,
8149                     ,   0x20,
8150                 BCW2,   0x20,
8151                 BCL2,   0x20,
8152                 BG12,   0x20,
8153                 BG22,   0x20,
8154                 BOI2,   0x20,
8155                     ,   0x518,  //  skip
8156                 AC01,   0x10,
8157                 AC11,   0x10,
8158                 PSV1,   0x10,
8159                 CRT1,   0x10,
8160                 TMP1,   0x10,
8161                 AST1,   0x10,
8162                 AC21,   0x10,
8163                 AC31,   0x10,
8164                 AC02,   0x10,
8165                 AC12,   0x10,
8166                 PSV2,   0x10,
8167                 CRT2,   0x10,
8168                 TMP2,   0x10,
8169                 AST2,   0x10,
8170                 AC22,   0x10,
8171                 AC32,   0x10,
8172                 AC03,   0x10,
8173                 AC13,   0x10,
8174                 PSV3,   0x10,
8175                 CRT3,   0x10,
8176                 TMP3,   0x10,
8177                 AST3,   0x10,
8178                 AC23,   0x10,
8179                 AC33,   0x10,
8180                     ,   0x80,       //  skip
8181                 TMPF,   0x10,
8182                     ,   0x570,  //  skip
8183                 FANH,   1,
8184                 FANL,   7,
8185                 TF11,   1,
8186                 TF21,   1,
8187                 TF31,   1,
8188                     ,   1,
8189                 TF10,   1,
8190                 TF20,   1,
8191                 TF30,   1,
8192                     ,   1,
8193                 TP11,   1,
8194                 TP21,   1,
8195                 TP31,   1,
8196                     ,   0x6D,   //  109
8197                 GP50,   1,
8198                 GP51,   1,
8199                 GP52,   1,
8200                 GP53,   1,
8201                     ,   4,
8202                 GP60,   1,
8203                 GP61,   1,
8204                 GP62,   1,
8205                 GP63,   1,
8206                 GP64,   1,
8207                 GP65,   1,
8208                 GP66,   1,
8209                     ,   1,
8210                 GP70,   1,
8211                 GP71,   1,
8212                 GP72,   1,
8213                 GP73,   1,
8214                 GP74,   1,
8215                 GP75,   1,
8216                 GP76,   1,
8217                     ,   1,
8218                 WED0,   1,
8219                 WED1,   1,
8220                 WED2,   1,
8221                 WED3,   1,
8222                 WED4,   1,
8223                     ,   3,
8224                 SBL0,   1,
8225                 SBL1,   1,
8226                 SBL2,   1,
8227                 SBL3,   1,
8228                     ,   4,
8229                 LIDS,   1,
8230                 VALF,   1,
8231                     ,   2,
8232                 DCKI,   1,
8233                 DCKF,   1,
8234                 BT1F,   1,
8235                 BT2F,   1,
8236                     ,   0x7D0,  //  skip
8237                 HKCD,   8,
8238                     ,   8,
8239                 DLID,   0x20,
8240                 DSRN,   0x20,
8241                     ,   0x20,
8242                 BDID,   0x20,
8243                 DSPW,   1,
8244                 VGAF,   1,
8245                 VWE0,   1,
8246                 VWE1,   1,
8247                 PPSC,   1,
8248                 SPSC,   1,
8249                 EWLD,   1,
8250                 EWPS,   1,
8251                     ,   0x1768, //  skip
8252                 PRES,   0x8000
8253             }   //  Field:  SRAM overlay
8254         }   //  MEM
8256         Device (BAT1)
8257         {   //  BAT1
8258             Name (_HID, EISAID ("PNP0C0A"))     //  Control Method Battey ID
8259             Name (_UID, 1)
8260             Name (_PCL, Package (1) {\_SB})
8262             Method (_STA)
8263             {   //  _STA
8264                 If (\_SB.MEM.BES1)
8265                     {   Return (0x1F)   }   //  battery present
8266                 Else
8267                     {   Return (0x0F)   }   //  battery not present
8268             }   //  _STA
8270             Method (_BIF,, Serialized)
8271             {   //  _BIF
8272                 Name (BUFR, Package (13)    {})
8274                 Store (\_SB.MEM.BPU1, Index (BUFR, 0))
8275                 Store (\_SB.MEM.BDC1, Index (BUFR, 1))
8276                 Store (\_SB.MEM.BLF1, Index (BUFR, 2))
8277                 Store (\_SB.MEM.BTC1, Index (BUFR, 3))
8278                 Store (\_SB.MEM.BDV1, Index (BUFR, 4))
8279                 Store (\_SB.MEM.BCW1, Index (BUFR, 5))
8280                 Store (\_SB.MEM.BCL1, Index (BUFR, 6))
8281                 Store (\_SB.MEM.BG11, Index (BUFR, 7))
8282                 Store (\_SB.MEM.BG21, Index (BUFR, 8))
8283                 Store (\_SB.MEM.BMN1, Index (BUFR, 9))
8284                 Store (\_SB.MEM.BSN1, Index (BUFR, 10))
8285                 Store (\_SB.MEM.BTP1, Index (BUFR, 11))
8286                 Store (\_SB.MEM.BOI1, Index (BUFR, 12))
8288                 Return (BUFR)
8289             }   //  _BIF
8290         }   //  BAT1
8292         Device (IDX2)
8293         {
8294             Method (B2IB,, Serialized)
8295             {   //  B2IB:   store from Buffer into Index'ed Buffer
8297                 Name (SRCB, Buffer ()   {"Short Buffer"})   //  12 characters plus NULL
8299                 Name (DEST, Buffer ()                           //  62 characters plus NULL
8300                     {"Destination buffer that is longer than the short source buffer"})
8303                 //  verify object type returned by Index(Buffer,Element,)
8305                 Store (Index (DEST, 2, ), Local1)
8306                 Store (ObjectType (Local1), Local2)
8308                 If (LNotEqual (Local2, 14))     //  Buffer Field is type 14
8309                 {
8310                     //  Local2 indicates Local1 is not a Buffer Field
8312                     Return (0x61)
8313                 }
8315                 //  verify object type and value returned by DerefOf(Index(Buffer,Element,))
8316                 //  should return Number containing element value
8318                 Store (DerefOf (Local1), Local3)
8319                 Store (ObjectType (Local3), Local4)
8321                 If (LNotEqual (Local4, 1))          //  Number is type 1
8322                 {
8323                     //  Local2 indicates Local1 is not a Number
8324                     Return (0x62)
8325                 }
8326                 Else
8327                 {
8328                     If (LNotEqual (Local3, 0x73))       //  expect 's' element from DEST
8329                     {
8330                         Return (0x63)
8331                     }
8332                 }
8334                 Store ("DerefOf(Index(Buffer,,)) PASS", Debug)
8337                 //
8338                 // The following sections have been rewritten because storing into
8339                 // an Indexed buffer only changes one byte - the FIRST byte of the
8340                 // buffer is written to the source index.  This is the ONLY byte
8341                 // written -- as per ACPI 2.0
8342                 //
8343                 // Overwrite DEST contents, at buffer position 2 [only]
8345                 Store (SRCB, Index (DEST, 2, ))
8347                 //
8348                 // Check that the next byte is not changed
8349                 //
8350                 Store (DerefOf (Index (DEST, 3, )), Local0)
8351                 If (LNotEqual (Local0, 0x74))       //  't'
8352                 {
8353                     //  DEST element is not matching original value
8354                     If (LEqual (Local0, 0x68))
8355                     {
8356                         //  DEST element was altered to 'h'
8357                         Return (0x68)
8358                     }
8359                     Else
8360                     {
8361                         // DEST element is an unknown value
8362                         Return (0x69)
8363                     }
8364                 }
8366                 //
8367                 // Check that the elements beyond the SRCB buffer copy
8368                 //  have not been altered.
8369                 //
8370                 Store (DerefOf (Index (DEST, 14)), Local0)
8372                 //
8373                 // This should be an 'f'.
8374                 //
8375                 If (LNotEqual (Local0, 0x66))
8376                 {
8377                     //  DEST element was zero'd by buffer copy
8378                     If (LEqual (Local0, 0))
8379                     {
8380                         //  DEST element is zero
8381                         Return (0x6A)
8382                     }
8383                     Else
8384                     {
8385                         //  DEST element is unknown value
8386                         Return (0x6B)
8387                     }
8388                 }
8390                 Store ("Store(SRCB,Index(Buffer,,)) PASS", Debug)
8392                 //
8393                 //  verify altering SRCB does NOT alter DEST
8394                 //
8395                 Store (0x6A, Index (SRCB, 1))   //  SRCB = "Sjort Buffer"
8397                 Store (DerefOf (Index (SRCB, 1)), Local0)
8399                 If (LNotEqual (Local0, 0x6A))       //  'j'
8400                 {
8401                     //  SRCB element is unaltered
8402                     Return (0x71)
8403                 }
8405                 Store (DerefOf (Index (DEST, 3)), Local0) // DEST = "Destination buffer that...
8407                 If (LNotEqual (Local0, 0x74))       //  't'
8408                 {
8409                     //  DEST element is altered
8410                     If (LEqual (Local0, 0x6A))  //  'j'
8411                     {
8412                         //  SRCB change altered DEST element
8413                         Return (0x72)
8414                     }
8415                     Else
8416                     {
8417                         //  DEST element is unknown value
8418                         Return (0x73)
8419                     }
8420                 }
8422                 //  verify altering DEST does NOT alter SRCB
8424                 Store (0x6B, Index (DEST, 4, )) //  DEST = "DeSkination buffer..."
8426                 Store (DerefOf (Index (DEST, 4, )), Local0)
8428                 If (LNotEqual (Local0, 0x6B))       //  'k'
8429                 {
8430                     //  DEST element is unaltered
8431                     Return (0x74)
8432                 }
8434                 Store (DerefOf (Index (SRCB, 2, )), Local0)
8436                 If (LNotEqual (Local0, 0x6F))       //  'o'
8437                 {   //  SRC element is altered
8438                     If (LEqual (Local0, 0x6B))  //  'k'
8439                     {
8440                         //  DEST change altered SRCB element
8441                         Return (0x75)
8442                     }
8443                     Else
8444                     {
8445                         //  SRCB element is unknown value
8446                         Return (0x76)
8447                     }
8448                 }
8450                 Store ("SRCB and DEST independent PASS", Debug)
8453                 // verify string can be written to Index target/destination
8454                 // Only FIRST byte is written
8456                 Store ("New Buff", Index (DEST, 2, ))   //  DEST = "DeNkination buffer..."
8458                 Store (DerefOf (Index (DEST, 2, )), Local0)
8460                 If (LNotEqual (Local0, 0x4E))       //  'N'
8461                 {
8462                     //  DEST element is unaltered
8463                     Return (0x81)
8464                 }
8466                 Store (DerefOf (Index (DEST, 6, )), Local0)
8468                 If (LNotEqual (Local0, 0x61))       //  'a'
8469                 {
8470                     //  DEST element is unaltered
8471                     Return (0x82)
8472                 }
8474                 Store (DerefOf (Index (DEST, 10, )), Local0)
8476                 If (LNotEqual (Local0, 0x6E))       //  'n'
8477                 {
8478                     //  DEST element is unaltered
8479                     Return (0x83)
8480                 }
8482                 Store ("Store(String,Index) PASS", Debug)
8485                 Return (0)  //  pass
8486             }   //  B2IB:   store from Buffer into Index'ed Buffer
8488             Method (FB2P,, Serialized)
8489             {   //  FB2P:   store from Field Buffer into Index'ed Package
8490                 Name (DEST, Package (2) {})
8492                 //  initialize memory using 32-bit field elements
8493                 Store (0x01234567, \_SB.MEM.SMD0)
8494                 Store (0x89ABCDEF, \_SB.MEM.SMD1)
8495                 Store (0xFEDCBA98, \_SB.MEM.SMD2)
8496                 Store (0x76543210, \_SB.MEM.SMD3)
8498                 //  move greater than 64-bit buffers into DEST package
8499                 Store (\_SB.MEM.SME0, Index (DEST, 0))
8500                 Store (\_SB.MEM.SME1, Index (DEST, 1))
8502                 //  validate DEST contents
8503                 Store (DerefOf (Index (DEST, 0, )), Local0)
8504                 Store (DerefOf (Index (DEST, 1, )), Local1)
8506                 //  verify Local0 and Local1 are Buffers
8507                 Store (ObjectType (Local0), Local2)
8508                 if (LNotEqual (Local2, 3))  //  Buffer type is 3
8509                 {
8510                     Return (0x11)
8511                 }
8513                 Store (ObjectType (Local1), Local3)
8514                 if (LNotEqual (Local3, 3))  //  Buffer type is 3
8515                 {
8516                     Return (0x12)
8517                 }
8519                 //  validate DEST buffer contents
8520                 Store (DerefOf (Index (DerefOf (Index (DEST, 0)), 0)), Local4)
8521                 If (LNotEqual (Local4, 0x67))
8522                 {
8523                     Return (0x13)
8524                 }
8526                 Store (DerefOf (Index (DerefOf (Index (DEST, 0)), 1)), Local4)
8527                 If (LNotEqual (Local4, 0x45))
8528                 {
8529                     Return (0x14)
8530                 }
8532                 Store (DerefOf (Index (DerefOf (Index (DEST, 0)), 4)), Local4)
8533                 If (LNotEqual (Local4, 0xEF))
8534                 {
8535                     Return (0x15)
8536                 }
8538                 Store (DerefOf (Index (DerefOf (Index (DEST, 0, )), 5, )), Local4)
8539                 If (LNotEqual (Local4, 0xCD))
8540                 {
8541                     Return (0x16)
8542                 }
8544                 Store ("Store(Mem,PkgElement) PASS", Debug)
8547                 //  validate changing source \_SB.MEM.SMD* does not impact DEST
8548                 Store (0x12345678, \_SB.MEM.SMD0)
8550                 Store (DerefOf (Index (DerefOf (Index (DEST, 0, )), 0, )), Local5)
8551                 If (LNotEqual (Local5, 0x67))
8552                 {
8553                     Return (0x21)
8554                 }
8556                 Store (DerefOf (Index (DerefOf (Index (DEST, 0, )), 1, )), Local5)
8557                 If (LNotEqual (Local5, 0x45))
8558                 {
8559                     Return (0x22)
8560                 }
8562                 //  validate changing DEST does not impact source \_SB.MEM.SMD*
8563                 Store (0x30, Index (DerefOf (Index (DEST, 0)), 0))
8565                 Store (DerefOf(Index (DerefOf (Index (DEST, 0)), 0)), Local5)
8566                 If (LNotEqual (Local5, 0x30))
8567                 {
8568                     Return (0x23)
8569                 }
8571                 //
8572                 // This section was modified from the original iPCO code because
8573                 //  it attempted to compare two buffers.  This is not allowed until
8574                 //  ACPI v2.0, so the test has been modified to just check the
8575                 //  changed \_SB.MEM.SMD0
8576                 //
8577                 Store (\_SB.MEM.SMD0, Local5)
8579                 If(LNotEqual(Local5, 0x12345678))
8580                 {
8581                     Return (0x24)
8582                 }
8584                 Store ("Mem and Pkg independent PASS", Debug)
8587                 Return (0)
8588             }   //  FB2P:   store from Field Buffer into Index'ed Package
8590             Method (TEST)
8591             {
8592                 Store ("++++++++ IndexOp2 Test", Debug)
8594                 //  store _BIF package return value into Local0
8596                 Store (\_SB.BAT1._BIF, Local0)
8598                 //  save Local0 object type value into Local1
8599                 Store (ObjectType (Local0), Local1)
8601                 //  validate Local0 is a Package
8602                 If (LNotEqual (Local1, 4))  //  Package type is 4
8603                 {
8604                     //  failure
8605                     Return (2)
8606                 }
8608                 //  validate source and destination buffers are independent of each
8609                 //  of each other (i.e., changing one's contents does not change
8610                 //  other's contents) using B2IB (store from Buffer into Index'ed
8611                 //  Buffer) and FB2P (store from Field Buffer into Index'ed Package)
8613                 //  call B2IB (store from Buffer into Index'ed Buffer)
8614                 Store (B2IB, Local2)    //  Local2 is B2IB return value
8616                 //  save Local2 object type value into Local3
8617                 Store (ObjectType (Local2), Local3)
8619                 //  validate Local2 is a Number
8620                 If (LNotEqual (Local3, 1))  //  Number type is 1
8621                 {
8622                     //  failure
8623                     Return (4)
8624                 }
8626                 //  zero indicates pass, non-zero is an error code
8627                 If (LNotEqual (Local2, 0))
8628                 {
8629                     //  return B2IB error code
8630                     Return (Local2)
8631                 }
8633                 //  call FB2P (store from Field Buffer into Index'ed Package)
8634                 Store (FB2P, Local2)    //  Local2 is FB2P return value
8636                 //  save Local2 object type value into Local3
8637                 Store (ObjectType (Local2), Local3)
8639                 //  validate Local2 is a Number
8640                 If (LNotEqual (Local3, 1))  //  Number type is 1
8641                 {
8642                     //  failure
8643                     Return (5)
8644                 }
8646                 //  zero indicates pass, non-zero is an error code
8647                 If (LNotEqual (Local2, 0))
8648                 {
8649                     //  return FB2P error code
8650                     Return (Local2)
8651                 }
8654                 Return (0)
8655             }   //  TEST
8656         }   //  IDX2:   Test device name
8657     }   //  _SB system bus
8660 // test SizeOf.asl
8662 //  Test for SizeOf
8663 //      test cases include following SizeOf arguments:
8664 //          buffer, buffer field;
8665 //          control method argument, control method local variable;
8666 //          control method return values;
8667 //          direct string, string;
8668 //          package;
8669 //          buffer, package, and string package elements
8671 // MTL NOTE: This test has been modified to remove any SizeOf(Index(Buff,...
8672 //  calls because it is not legal to perform a SizeOf operation on a Buffer Field.
8673 //  This test has also been extended to test additional Package element sizes.
8675     Device (SIZO)
8676     {
8677         //  SAR0 control method validates SizeOf(Arg)
8678         //      SAR0 should only be called by SARG
8679         Method (SAR0, 2)
8680         //  Arg0    object to determine size of
8681         //  Arg1    expected Arg length
8682         {   //  SAR0:   SizeOf(Arg) test control method
8683             //  Local0  Arg0 length
8684             //  Local1  Local0 object type
8686             //  Store first string size (Arg0) into Local7
8687             Store (SizeOf (Arg0), Local0)
8689             //  save Local0 object type value into Local1
8690             Store (ObjectType (Local0), Local1)
8692             //  validate Local0 is a Number
8693             If (LNotEqual (Local1, 1))      //  Number type is 1
8694                 {   Return (0x21)   }
8696             //  If strings are not of equal size, return error code
8697             If (LNotEqual (Local0, Arg1))
8698                 {   Return (0x22)   }
8700             Return (0)
8701         }   //  SAR0:   SizeOf(Arg) test control method
8703         Method (SARG,, Serialized)
8704         {   //  SARG:   SizeOf(Arg) test control method
8705             Name (BUFR, Buffer (12) {}) //  uninitialized Buffer
8706             Name (BUF1, Buffer() {0x01, 0x02, 0x03, 0x04, 0x05})
8707             Name (PKG0, Package (4) {}) //  uninitialized Package
8708             Name (STR0, "String")
8709             Name (PKG1, Package (4)
8710             {
8711                 BUFR,
8712                 "String2",
8713                 STR0,
8714                 PKG0
8715             })  //  PKG1
8717             Name (PKG2, Package (4)
8718             {
8719                 Buffer (15) {},
8720                 "String 1",
8721                 Package (2) {}
8722             })  //  PKG2
8724             //  Namespace entry buffer reference
8725             Store (SAR0 (BUFR, 12), Local0)
8727             //  save Local0 object type value into Local1
8728             Store (ObjectType (Local0), Local1)
8730             //  validate Local0 is a Number
8731             If (LNotEqual (Local1, 1))      //  Number type is 1
8732             {
8733                 Return (0x23)
8734             }
8736             If (LNotEqual (Local0, 0))      //  Local0 is SAR0 return error code
8737             {
8738                 Return (Local0)
8739             }
8741             Store ("SizeOf(Arg=BUFR) PASS", Debug)
8744             //  Namespace entry package reference
8745             Store (SAR0 (PKG0, 4), Local0)
8747             //  save Local0 object type value into Local1
8748             Store (ObjectType (Local0), Local1)
8750             //  validate Local0 is a Number
8751             If (LNotEqual (Local1, 1))      //  Number type is 1
8752             {
8753                 Return (0x24)
8754             }
8756             If (LNotEqual (Local0, 0))      //  Local0 is SAR0 return error code
8757             {
8758                 Return (Local0)
8759             }
8761             Store ("SizeOf(Arg=PKG0) PASS", Debug)
8764             //  Namespace entry string reference
8765             Store (SAR0 (STR0, 6), Local0)
8767             //  save Local0 object type value into Local1
8768             Store (ObjectType (Local0), Local1)
8770             //  validate Local0 is a Number
8771             If (LNotEqual (Local1, 1))      //  Number type is 1
8772             {
8773                 Return (0x25)
8774             }
8776             If (LNotEqual (Local0, 0))      //  Local0 is SAR0 return error code
8777             {
8778                 Return (Local0)
8779             }
8781             Store ("SizeOf(Arg=STR0) PASS", Debug)
8784             //  direct string reference
8785             Store (SAR0 ("String", 6), Local0)
8787             //  save Local0 object type value into Local1
8788             Store (ObjectType (Local0), Local1)
8790             //  validate Local0 is a Number
8791             If (LNotEqual (Local1, 1))      //  Number type is 1
8792             {
8793                 Return (0x26)
8794             }
8796             If (LNotEqual (Local0, 0))      //  Local0 is SAR0 return error code
8797             {
8798                 Return (Local0)
8799             }
8801             Store ("SizeOf(Arg=String) PASS", Debug)
8803             Store (0x55, Index (BUF1, 2))
8805             /****************************************************
8806             //
8807             // This section is commented because it is illegal to
8808             //  perform a SizeOf operation on a Buffer Field
8809             //
8810             //  Namespace BufferField reference
8811             Store (SAR0 (Index (BUFR, 2, ), 10), Local0)
8813             //  save Local0 object type value into Local1
8814             Store (ObjectType (Local0), Local1)
8816             //  validate Local0 is a Number
8817             If (LNotEqual (Local1, 1))      //  Number type is 1
8818                 {   Return (0x27)   }
8820             If (LNotEqual (Local0, 0))      //  Local0 is SAR0 return error code
8821                 {   Return (Local0) }
8823             Store ("SizeOf(Arg=BufferField) PASS", Debug)
8824             ****************************************************/
8826             //  Namespace BufferPackageElement reference
8827             //
8828             Store (SAR0 (Index(PKG1, 0), 12), Local0)
8830             //  save Local0 object type value into Local1
8831             Store (ObjectType (Local0), Local1)
8833             //  validate Local0 is a Number
8834             If (LNotEqual (Local1, 1))      //  Number type is 1
8835             {
8836                 Return (0x28)
8837             }
8839             If (LNotEqual (Local0, 0))      //  Local0 is SAR0 return error code
8840             {
8841                 Return (Local0)
8842             }
8844             Store ("SizeOf(Arg=PackageBuffer NTE Reference Element) PASS", Debug)
8847             //  Namespace StringPackageElement reference
8848             Store (SAR0 (Index (PKG1, 1, ), 7), Local0)
8850             //  save Local0 object type value into Local1
8851             Store (ObjectType (Local0), Local1)
8853             //  validate Local0 is a Number
8854             If (LNotEqual (Local1, 1))      //  Number type is 1
8855             {
8856                 Return (0x29)
8857             }
8859             If (LNotEqual (Local0, 0))      //  Local0 is SAR0 return error code
8860             {
8861                 Return (Local0)
8862             }
8864             Store ("SizeOf(Arg=Package String Element) PASS", Debug)
8867             //  Namespace StringPackageElement reference
8868             Store (SAR0 (Index (PKG1, 2, ), 6), Local0)
8870             //  save Local0 object type value into Local1
8871             Store (ObjectType (Local0), Local1)
8873             //  validate Local0 is a Number
8874             If (LNotEqual (Local1, 1))      //  Number type is 1
8875             {
8876                 Return (0x2A)
8877             }
8879             If (LNotEqual (Local0, 0))      //  Local0 is SAR0 return error code
8880             {
8881                 Return (Local0)
8882             }
8884             Store ("SizeOf(Arg=Package String NTE Reference Element) PASS", Debug)
8887             //  Namespace PackagePackageElement reference
8888             Store (SAR0 (Index (PKG1, 3, ), 4), Local0)
8890             //  save Local0 object type value into Local1
8891             Store (ObjectType (Local0), Local1)
8893             //  validate Local0 is a Number
8894             If (LNotEqual (Local1, 1))      //  Number type is 1
8895             {
8896                 Return (0x2B)
8897             }
8899             If (LNotEqual (Local0, 0))      //  Local0 is SAR0 return error code
8900             {
8901                 Return (Local0)
8902             }
8904             Store ("SizeOf(Arg=Package Package NTE Reference Element) PASS", Debug)
8906             // Package Buffer Element
8907             Store (SAR0 (Index (PKG2, 0), 15), Local0)
8909             //  save Local0 object type value into Local1
8910             Store (ObjectType (Local0), Local1)
8912             //  validate Local0 is a Number
8913             If (LNotEqual (Local1, 1))      //  Number type is 1
8914             {
8915                 Return (0x2B)
8916             }
8918             If (LNotEqual (Local0, 0))      //  Local0 is SAR0 return error code
8919             {
8920                 Return (Local0)
8921             }
8923             Store ("SizeOf(Arg=Package Buffer Element) PASS", Debug)
8925             // Package String Element
8926             Store (SAR0 (Index (PKG2, 1), 8), Local0)
8928             //  save Local0 object type value into Local1
8929             Store (ObjectType (Local0), Local1)
8931             //  validate Local0 is a Number
8932             If (LNotEqual (Local1, 1))      //  Number type is 1
8933             {
8934                 Return (0x2B)
8935             }
8937             If (LNotEqual (Local0, 0))      //  Local0 is SAR0 return error code
8938             {
8939                 Return (Local0)
8940             }
8942             Store ("SizeOf(Arg=Package String Element) PASS", Debug)
8944             // Package Package Element
8945             Store (SAR0 (Index (PKG2, 2), 2), Local0)
8947             //  save Local0 object type value into Local1
8948             Store (ObjectType (Local0), Local1)
8950             //  validate Local0 is a Number
8951             If (LNotEqual (Local1, 1))      //  Number type is 1
8952             {
8953                 Return (0x2B)
8954             }
8956             If (LNotEqual (Local0, 0))      //  Local0 is SAR0 return error code
8957             {
8958                 Return (Local0)
8959             }
8961             Store ("SizeOf(Arg=Package Package Element) PASS", Debug)
8963             Store ("SizeOf(Arg) PASS", Debug)
8965             Return (0)
8966         }   //  SARG:   SizeOf(Arg) test control method
8968         Method (SBUF,, Serialized)
8969         {   //  SBUF:   SizeOf(Buffer) test control method
8970             Name (BUFR, Buffer (12) {})
8972             //  store size of BUFR buffer into Local0
8973             Store (SizeOf (BUFR), Local0)
8975             //  save Local0 object type value into Local1
8976             Store (ObjectType (Local0), Local1)
8978             //  validate Local0 is a Number
8979             If (LNotEqual (Local1, 1))      //  Number type is 1
8980             {
8981                 Return (0x31)
8982             }
8984             If (LNotEqual (Local0, 12))     //  BUFR size is 12
8985             {
8986                 Return (0x32)
8987             }
8989             Store ("SizeOf(BUFR) PASS", Debug)
8991             Return (0)
8992         }   //  SBUF:   SizeOf(Buffer) test control method
8995         /****************************************************
8996         //
8997         // This section is commented because it is illegal to
8998         //  perform a SizeOf operation on a Buffer Field
8999         //
9000         Method (SIND)
9001         {   //  SIND:   SizeOf(Index(,,)) test control method
9002             Name (BUFR, Buffer (12) {})
9004             //  store size of Index(BUFR,2,) buffer into Local0
9005             Store (SizeOf (Index (BUFR, 2, )), Local0)
9007             //  save Local0 object type value into Local1
9008             Store (ObjectType (Local0), Local1)
9010             //  validate Local0 is a Number
9011             If (LNotEqual (Local1, 1))      //  Number type is 1
9012             {
9013                 Return (0x41)
9014             }
9016             If (LNotEqual (Local0, 10))     //  12 - 2 = 10
9017             {
9018                 Return (0x42)
9019             }
9021             Store ("SizeOf(Index(BUFR,,)) PASS", Debug)
9023             //  TBD:    strings and packages
9025             Return (0)
9026         }   //  SIND:   SizeOf(Index(,,)) test control method
9027         ****************************************************/
9029         Method (SLOC,, Serialized)
9030         {   //  SLOC:   SizeOf(Local) test control method
9031             Name (BUFR, Buffer (12) {}) //  uninitialized Buffer
9032             Name (STR0, "String")
9033             Name (PKG0, Package (4) {}) //  uninitialized Package
9036             //  store BUFR Buffer into Local2
9037             Store (BUFR, Local2)
9039             //  store size of BUFR buffer into Local0
9040             Store (SizeOf (Local2), Local0)
9042             //  save Local0 object type value into Local1
9043             Store (ObjectType (Local0), Local1)
9045             //  validate Local0 is a Number
9046             If (LNotEqual (Local1, 1))      //  Number type is 1
9047             {
9048                 Return (0x51)
9049             }
9051             If (LNotEqual (Local0, 12)) //  BUFR size is 12
9052             {
9053                 Return (0x52)
9054             }
9056             Store ("SizeOf(Local2=Buffer) PASS", Debug)
9059             //  store STR0 string into Local2
9060             Store (STR0, Local2)
9062             //  store size of STR0 buffer into Local0
9063             Store (SizeOf (Local2), Local0)
9065             //  save Local0 object type value into Local1
9066             Store (ObjectType (Local0), Local1)
9068             //  validate Local0 is a Number
9069             If (LNotEqual (Local1, 1))      //  Number type is 1
9070             {
9071                 Return (0x53)
9072             }
9074             If (LNotEqual (Local0, 6))      //  STR0 size is 6
9075             {
9076                 Return (0x54)
9077             }
9079             Store ("SizeOf(Local2=String) PASS", Debug)
9082             //  store PKG0 Package into Local2
9083             Store (PKG0, Local2)
9085             //  store size of PKG0 buffer into Local0
9086             Store (SizeOf (Local2), Local0)
9088             //  save Local0 object type value into Local1
9089             Store (ObjectType (Local0), Local1)
9091             //  validate Local0 is a Number
9092             If (LNotEqual (Local1, 1))      //  Number type is 1
9093             {
9094                 Return (0x55)
9095             }
9097             If (LNotEqual (Local0, 4))      //  PKG0 size is 4
9098             {
9099                 Return (0x56)
9100             }
9102             Store ("SizeOf(Local2=Package) PASS", Debug)
9105             Return (0)
9106         }   //  SLOC:   SizeOf(Local) test control method
9108         Method (TEST)
9109         {
9110             Store ("++++++++ SizeOf Test", Debug)
9112             //  Store current operating system string into Local0
9113             Store (_OS, Local0)
9115             Store (SizeOf (_OS), Local3)
9117             //  save Local3 object type value into Local4
9118             Store (ObjectType (Local3), Local4)
9120             //  validate Local3 is a Number
9121             If (LNotEqual (Local4, 1))  //  Number type is 1
9122             {
9123                 //  failure
9124                 Return (0x61)
9125             }
9127             //  Store current operating system string into Local0
9128             //  This verifies above SizeOf(_OS) did not corrupt ACPI namespace
9129             Store (_OS, Local0)
9131             //  Store SARG [Validate SizeOf(Arg)] return value into Local1
9132             Store (SARG, Local1)
9134             //  save Local1 object type value into Local2
9135             Store (ObjectType (Local1), Local2)
9137             //  validate Local1 is a Number
9138             If (LNotEqual (Local2, 1))  //  Number type is 1
9139             {
9140                 //  failure
9141                 Return (0x62)
9142             }
9144             //  zero indicates pass, non-zero is an error code
9145             If (LNotEqual (Local1, 0))
9146             {
9147                 //  return SARG error code
9148                 Return (Local1)
9149             }
9152             //  Store SBUF [Validate SizeOf(Buffer)] return value into Local1
9153             Store (SBUF, Local1)
9155             //  save Local1 object type value into Local2
9156             Store (ObjectType (Local1), Local2)
9158             //  validate Local1 is a Number
9159             If (LNotEqual (Local2, 1))  //  Number type is 1
9160             {
9161                 //  failure
9162                 Return (0x63)
9163             }
9165             //  zero indicates pass, non-zero is an error code
9166             If (LNotEqual (Local1, 0))
9167             {
9168                 //  return SBUF error code
9169                 Return (Local1)
9170             }
9172             /****************************************************
9173             //
9174             // This section is commented because it is illegal to
9175             //  perform a SizeOf operation on a Buffer Field
9176             //
9177             //  Store SIND [verify SizeOf(Index(,,))] return value into Local1
9178             Store (SIND, Local1)
9180             //  save Local1 object type value into Local2
9181             Store (ObjectType (Local1), Local2)
9183             //  validate Local1 is a Number
9184             If (LNotEqual (Local2, 1))  //  Number type is 1
9185             {
9186                 //  failure
9187                 Return (0x64)
9188             }
9190             //  zero indicates pass, non-zero is an error code
9191             If (LNotEqual (Local1, 0))
9192             {
9193                 //  return SARG error code
9194                 Return (Local1)
9195             }
9196             ****************************************************/
9198             //  Store SLOC [verify SizeOf(Local)] return value into Local1
9199             Store (SLOC, Local1)
9201             //  save Local1 object type value into Local2
9202             Store (ObjectType (Local1), Local2)
9204             //  validate Local1 is a Number
9205             If (LNotEqual (Local2, 1))  //  Number type is 1
9206             {
9207                 //  failure
9208                 Return (0x65)
9209             }
9211             //  zero indicates pass, non-zero is an error code
9212             If (LNotEqual (Local1, 0))
9213             {
9214                 //  return SLOC error code
9215                 Return (Local1)
9216             }
9219             //  TBD:    SizeOf (METH) -- where METH control method returns
9220             //              buffer, BufferField, string, package, package element
9223             Return (0)
9224         }   //  TEST
9225     }   //  SIZO
9228 // test SmiShare.asl
9230     Scope (\_SB)    //  System Bus
9231     {   //  _SB system bus
9232         //  Declare an OpRegion in Memory starting at offset 0x400000 that is 10 bytes long
9233         OperationRegion(RAM1, SystemMemory, 0x400000, 0xA)
9235         Field (RAM1, AnyAcc, NoLock, Preserve)
9236         {
9237             BI1T, 1,        // Create some bits in memory to access
9238             BI2T, 2,
9239             BI3T, 3,
9240             LST2, 2
9241         }   //  End Field RAM1
9243         Field (RAM1, WordAcc, NoLock, WriteAsZeros)
9244         {
9245             WRD, 16
9246         }   //  End 2nd Field RAM1
9248         Field (RAM1, ByteAcc, NoLock, WriteAsOnes)
9249         {
9250             BYTE, 8
9251         }   //  End 3rd Field RAM1
9253         Field (RAM1, ByteAcc, NoLock, Preserve)
9254         {
9255             SMIC, 8,
9256             SMID, 8
9257         }
9259         Device (MBIT)
9260         {
9261             Method (_INI)
9262             {
9263                 Store (0, BI1T)
9264                 Store (3, BI2T)
9265                 Store (7, BI3T)
9266                 Store (0, LST2)
9267             }   //  End _INI Method
9268         }   //  End Device MBIT
9270         Device (MWRD)
9271         {
9272             Method (_INI)
9273             {
9274                 Store (0, WRD)
9275             }   //  End _INI Method
9276         }   //  End Device MWRD
9278         Device (MBYT)
9279         {
9280             Method (_INI)
9281             {
9282                 Store (0, BYTE)
9283                 Store (0xC, SMIC)
9284                 Store (0xD, SMID)
9285             }   //  End _INI Method
9286         }   //  End Device MBYT
9288     /*
9289         //  Declare an OpRegion in Memory starting at offset 0x400000 that is 10 bytes long
9290         OperationRegion(\RAM1, SystemMemory, 0x400000, 0xA)
9292         Field (\RAM1, AnyAcc, NoLock, Preserve)
9293         {
9294             BI1T, 1,        // Create some bits in memory to access
9295             BI2T, 2,
9296             BI3T, 3,
9297             LST2, 2
9298         }   //  End Field RAM1
9300         Field (\RAM1, WordAcc, NoLock, WriteAsZeros)
9301         {
9302             WRD, 16
9303         }   //  End 2nd Field RAM1
9305         Field (\RAM1, ByteAcc, NoLock, WriteAsOnes)
9306         {
9307             BYTE, 8
9308         }   //  End 3rd Field RAM1
9310         Field (\RAM1, ByteAcc, NoLock, Preserve)
9311         {
9312             SMIC, 8,
9313             SMID, 8
9314         }
9315     */
9316         Method (SMIX)
9317         {
9318             Return (BYTE)
9319         }   //  End SMIX
9321         Method (EVNT)
9322         {
9323             Store (SMIX, Local0)
9325             Notify (\_SB_, 0x29)
9326             If (And (Local0, 0x01))
9327             {   Notify (\_SB_.SMIS, 0x21)}
9329             If (And (Local0, 0x02))
9330             {   Notify (\_SB_.SMIS, 0x22)}
9332             If (And (Local0, 0x04))
9333             {   Notify (\_SB_.SMIS, 0x24)}
9335             If (And (Local0, 0x08))
9336             {   Notify (\_SB_.SMIS, 0x28)}
9338         }   //  End Method EVNT
9340         Method (NTFY)
9341         {
9342             Notify (\_SB_, 1)
9343             Notify (\_TZ_.TZ1, 2)
9344             Notify (\_PR_.CPU0, 3)
9346             Notify (\_SB_, 0x81)
9347             Notify (\_TZ_.TZ1, 0x82)
9348             Notify (\_PR_.CPU0, 0x83)
9349         }
9351         Device (SMIS)
9352         {
9353             Method (BINK)
9354             {
9355                 Store (0, Local0)               //  Zero out Local0
9357                 If (LNotEqual (SMID, 0xD))
9358                 {   Or (0x80, Local0, Local0)}
9360                 If (LNotEqual (SMIC, 0xC))
9361                 {   Or (0x40, Local0, Local0)}
9363                 If (LNotEqual (BYTE, 0))
9364                 {   Or (0x20, Local0, Local0)}
9366                 If (LNotEqual (WRD, 0))
9367                 {   Or (0x10, Local0, Local0)}
9369                 If (LNotEqual (LST2, 0))
9370                 {   Or (0x8, Local0, Local0)}
9372                 If (LNotEqual (BI3T, 0x7))
9373                 {   Or (0x4, Local0, Local0)}
9375                 If (LNotEqual (BI2T, 0x3))
9376                 {   Or (0x2, Local0, Local0)}
9378                 If (LNotEqual (BI1T, 0))
9379                 {   Or (0x1, Local0, Local0)}
9381                 Return (Local0)
9382             }   //  End Method BINK
9384             Method (TEST)
9385             {
9386                 Store ("++++++++ SmiShare Test", Debug)
9388                 //  Expect EVNT to generate Notify value we just previously
9389                 //  stored in BYTE
9391                 Store (0x20, BYTE)
9392                 EVNT ()
9393                 Store (0x21, BYTE)
9394                 EVNT ()
9395                 Store (0x22, BYTE)
9396                 EVNT ()
9397                 Store (0x23, BYTE)
9398                 EVNT ()
9400                 NTFY ()
9401                 Return (0)  //  pass
9402             }   //  End Method TEST
9403         }   //  Device SMIS
9405         Device(CNDT)
9406         {
9407             Method(TEST)
9408             {
9409                 If (ECOK)
9410                 {
9411                     return("Broken")
9412                 }
9413                 Else
9414                 {
9415                     return("Works")
9416                 }
9417             }
9419             Method(ECOK)
9420             {
9421                 Return(0x0)
9422             }
9423         }
9425     }   //  _SB system bus
9428 /* Test a very big buffer */
9430     Name(WQAB, Buffer(6756)
9431     {
9432         0x46,0x4F,0x4D,0x42,0x01,0x00,0x00,0x00,
9433         0x54,0x1A,0x00,0x00,0xBA,0xAD,0x00,0x00,
9434         0x44,0x53,0x00,0x01,0x1A,0x7D,0xDA,0x54,
9435         0x98,0xBD,0x92,0x00,0x01,0x06,0x18,0x42,
9436         0x10,0x47,0x10,0x92,0x46,0x62,0x02,0x89,
9437         0x80,0x90,0x18,0x18,0x14,0x81,0x85,0x00,
9438         0x49,0x02,0x88,0xC4,0x41,0xE1,0x20,0xD4,
9439         0x9F,0x40,0x7E,0x05,0x20,0x74,0x28,0x40,
9440         0xA6,0x00,0x83,0x02,0x9C,0x22,0x88,0xA0,
9441         0x57,0x01,0x36,0x05,0x98,0x14,0x60,0x51,
9442         0x80,0x76,0x01,0x96,0x05,0xE8,0x16,0x20,
9443         0x1D,0x96,0x88,0x04,0x47,0x89,0x01,0x47,
9444         0xE9,0xC4,0x16,0x6E,0xD8,0xE0,0x85,0xA2,
9445         0x68,0x06,0x51,0x12,0x94,0x8B,0x20,0x5D,
9446         0x10,0x52,0x2E,0xC0,0x37,0x82,0x06,0x10,
9447         0xA5,0x77,0x01,0xB6,0x05,0x98,0x86,0x27,
9448         0xD2,0x20,0xE4,0x60,0x08,0x54,0xCE,0x80,
9449         0x20,0x69,0x44,0x21,0x1E,0xA7,0x44,0x08,
9450         0x0A,0x84,0x90,0xD4,0xF1,0xA0,0xA0,0x71,
9451         0x88,0xAD,0xCE,0x46,0x93,0xA9,0x74,0x7E,
9452         0x48,0x82,0x70,0xC6,0x2A,0x7E,0x3A,0x9A,
9453         0xD0,0xD9,0x9C,0x60,0xE7,0x18,0x72,0x3C,
9454         0x48,0xF4,0x20,0xB8,0x00,0x0F,0x1C,0x2C,
9455         0x34,0x84,0x22,0x6B,0x80,0xC1,0x8C,0xDD,
9456         0x63,0xB1,0x0B,0x4E,0x0A,0xEC,0x61,0xB3,
9457         0x01,0x19,0xA2,0x24,0x38,0xD4,0x11,0xC0,
9458         0x12,0x05,0x98,0x1F,0x87,0x0C,0x0F,0x95,
9459         0x8C,0x25,0x24,0x1B,0xAB,0x87,0xC2,0xA5,
9460         0x40,0x68,0x6C,0x27,0xED,0x19,0x45,0x2C,
9461         0x79,0x4A,0x82,0x49,0xE0,0x51,0x44,0x36,
9462         0x1A,0x27,0x28,0x1B,0x1A,0x25,0x03,0x42,
9463         0x9E,0x05,0x58,0x07,0x26,0x04,0x76,0x2F,
9464         0xC0,0x9A,0x00,0x73,0xB3,0x90,0xB1,0xB9,
9465         0xE8,0xFF,0x0F,0x71,0xB0,0x31,0xDA,0x9A,
9466         0xAE,0x90,0xC2,0xC4,0x88,0x12,0x2C,0x5E,
9467         0xC5,0xC3,0x10,0xCA,0x93,0x42,0xA8,0x48,
9468         0x95,0xA1,0x68,0xB4,0x51,0x2A,0x14,0xE0,
9469         0x4C,0x80,0x30,0x5C,0x1D,0x03,0x82,0x46,
9470         0x88,0x15,0x29,0x56,0xFB,0x83,0x20,0xF1,
9471         0x2D,0x40,0x54,0x01,0xA2,0x48,0xA3,0x41,
9472         0x9D,0x03,0x3C,0x5C,0x0F,0xF5,0xF0,0x3D,
9473         0xF6,0x93,0x0C,0x72,0x90,0x67,0xF1,0xA8,
9474         0x70,0x9C,0x06,0x49,0xE0,0x0B,0x80,0x4F,
9475         0x08,0x1E,0x38,0xDE,0x35,0xA0,0x66,0x7C,
9476         0xBC,0x4C,0x10,0x1C,0x6A,0x88,0x1E,0x68,
9477         0xB8,0x13,0x38,0x44,0x06,0xE8,0x49,0x3D,
9478         0x52,0x60,0x07,0x77,0x32,0xEF,0x01,0xAF,
9479         0x0A,0xCD,0x5E,0x12,0x08,0xC1,0xF1,0xF8,
9480         0x7E,0xC0,0x26,0x9C,0xC0,0xF2,0x07,0x81,
9481         0x1A,0x99,0xA1,0x3D,0xCA,0xD3,0x8A,0x19,
9482         0xF2,0x31,0xC1,0x04,0x16,0x0B,0x21,0x05,
9483         0x10,0x1A,0x0F,0xF8,0x6F,0x00,0x8F,0x17,
9484         0xBE,0x12,0xC4,0xF6,0x80,0x12,0x0C,0x0B,
9485         0x21,0x23,0xAB,0xF0,0x78,0xE8,0x28,0x7C,
9486         0x95,0x38,0x9C,0xD3,0x8A,0x67,0x82,0xE1,
9487         0x20,0xF4,0x05,0x90,0x00,0x51,0xE7,0x0C,
9488         0xD4,0x61,0xC1,0xE7,0x04,0x76,0x33,0x38,
9489         0x83,0x47,0x00,0x8F,0xE4,0x84,0xFC,0x2B,
9490         0xF1,0xC0,0xE0,0x03,0xE2,0xEF,0x1F,0xA7,
9491         0xEC,0x11,0x9C,0xA9,0x01,0x7D,0x1C,0xF0,
9492         0xFF,0x7F,0x28,0x7C,0x88,0x1E,0xDF,0x29,
9493         0x1F,0xAF,0x4F,0x17,0x96,0x35,0x4E,0xE8,
9494         0x77,0x08,0x9F,0x38,0x7C,0x64,0x71,0x44,
9495         0x08,0x39,0x39,0x05,0xA0,0x81,0x4F,0xF7,
9496         0xEC,0x22,0x9C,0xAE,0x27,0xE5,0x40,0xC3,
9497         0xA0,0xE3,0x04,0xC7,0x79,0x00,0x1C,0xE3,
9498         0x84,0x7F,0x2E,0x80,0x3F,0x40,0x7E,0xCA,
9499         0x78,0xC5,0x48,0xE0,0x98,0x23,0x44,0x9F,
9500         0x6B,0x3C,0x42,0x2C,0xFC,0x53,0x45,0xE1,
9501         0x03,0x21,0x63,0x04,0x17,0xA0,0xC7,0x08,
9502         0x7C,0x03,0x8E,0x11,0x7D,0x94,0xE0,0xEA,
9503         0x0F,0x1A,0x74,0x80,0xB8,0xFF,0xFF,0x00,
9504         0xE1,0x83,0x7A,0x80,0xC0,0x37,0xFA,0xD1,
9505         0x03,0x3D,0x2E,0x8B,0x3E,0x0F,0xC8,0xF8,
9506         0x89,0x46,0xF3,0xE2,0xA7,0x03,0x7E,0xF8,
9507         0x00,0x0F,0xA8,0x87,0x84,0x03,0xC5,0x4C,
9508         0x9B,0x83,0x3E,0xBB,0x1C,0x3A,0x76,0xB8,
9509         0xE0,0x3F,0x81,0x80,0x4B,0xDE,0x21,0x0C,
9510         0x14,0x23,0xC6,0x9F,0x83,0x7C,0x0A,0x03,
9511         0xFF,0xFF,0xFF,0x14,0x06,0xFE,0xE1,0xF0,
9512         0x20,0x4F,0x07,0x9F,0xB6,0xA8,0x74,0x18,
9513         0xD4,0x81,0x0B,0xB0,0x32,0x89,0x08,0xCF,
9514         0x12,0xB5,0x41,0xE8,0xD4,0xF0,0x36,0xF1,
9515         0xB6,0xE5,0x5B,0x40,0x9C,0xD3,0xEC,0xED,
9516         0xC0,0x45,0x30,0x22,0xD4,0x0C,0x45,0x4E,
9517         0x5A,0x11,0x63,0x44,0x79,0xDC,0x32,0xCA,
9518         0xDB,0xD6,0x0B,0x40,0xBC,0x13,0x7B,0xDE,
9519         0x32,0x46,0xF0,0xC8,0x0F,0x5C,0x2C,0xC6,
9520         0xEA,0xF5,0x5F,0xF3,0x81,0x0B,0x70,0xF6,
9521         0xFF,0x3F,0x70,0x01,0x1C,0x0A,0x7A,0x18,
9522         0x42,0x0F,0xC3,0x53,0x39,0x97,0x87,0xC8,
9523         0x53,0x89,0x18,0x35,0x4C,0xD4,0x67,0x28,
9524         0xDF,0x2D,0x7C,0x20,0x02,0xDF,0x99,0x0B,
9525         0xF8,0xFD,0xFF,0x0F,0x44,0x70,0x8E,0x29,
9526         0xB8,0x33,0x0D,0x78,0x7C,0xCE,0x40,0x20,
9527         0xA7,0xE2,0x43,0x0D,0x60,0x41,0xF4,0x13,
9528         0xC2,0x27,0x1A,0x2A,0x13,0x06,0x75,0xA8,
9529         0x01,0xAC,0x5C,0x61,0x9E,0x46,0xCF,0xF9,
9530         0x59,0xC6,0xA7,0x1A,0x1F,0x4A,0x8D,0x63,
9531         0x88,0x97,0x99,0x87,0x1A,0x1F,0x0B,0x5E,
9532         0x49,0x7D,0xA8,0x31,0x54,0x9C,0x87,0x1A,
9533         0x0F,0x37,0x50,0xD4,0x37,0x9B,0x67,0x1B,
9534         0xA3,0xC7,0xF7,0x0D,0xD5,0x10,0x0F,0x35,
9535         0x4C,0xF2,0x4A,0x35,0x16,0x1F,0x6A,0xC0,
9536         0xF1,0xFF,0x3F,0xD4,0x00,0xFC,0xFF,0xFF,
9537         0x1F,0x6A,0x00,0x47,0x47,0x03,0x38,0x47,
9538         0x46,0xDC,0xD1,0x00,0x5C,0x87,0x52,0xE0,
9539         0x70,0x34,0x00,0x1E,0x47,0x21,0x30,0x5F,
9540         0x68,0x7C,0x14,0x02,0x16,0xFF,0xFF,0xA3,
9541         0x10,0xF8,0x65,0x9F,0x83,0x50,0x42,0x8F,
9542         0x42,0x80,0xA0,0xDB,0xCF,0x53,0xC4,0xB3,
9543         0x8F,0x2F,0x3F,0x0F,0x04,0x11,0x5E,0xF3,
9544         0x7D,0x0A,0xF2,0x21,0xDF,0x47,0x21,0x06,
9545         0x63,0x28,0x5F,0x83,0x7C,0x14,0x62,0x50,
9546         0xAF,0x41,0xBE,0xEF,0x1B,0xE4,0xF1,0x22,
9547         0x48,0xEC,0x67,0x02,0x1F,0x85,0x98,0xE8,
9548         0xA3,0x10,0xA0,0xF0,0xFF,0x7F,0x14,0x02,
9549         0xF8,0xFF,0xFF,0x3F,0x0A,0x01,0xCE,0x02,
9550         0x1C,0x0D,0x40,0x37,0xAD,0x47,0x21,0xF0,
9551         0xDE,0x59,0x4E,0xFB,0x04,0x7C,0x16,0x02,
9552         0xCC,0xFE,0xFF,0xCF,0x42,0xC0,0xEC,0x28,
9553         0x74,0x14,0x67,0xF9,0x2A,0xF4,0x04,0xF0,
9554         0x02,0x10,0x23,0xCC,0x3B,0xD0,0x4B,0x26,
9555         0xBB,0x8B,0x1B,0xE7,0xC9,0xE5,0x2C,0x9E,
9556         0xC4,0x7D,0x09,0xF2,0x81,0xE2,0x59,0xC8,
9557         0x50,0xA7,0x1B,0xF4,0x8D,0xDC,0x03,0x8B,
9558         0x19,0x3F,0xC4,0xF3,0x90,0x21,0x9E,0x85,
9559         0x00,0x76,0xFD,0xFF,0xCF,0x42,0x00,0xFF,
9560         0xFF,0xFF,0x47,0x03,0xF8,0x2F,0x00,0x9F,
9561         0x85,0x80,0xE7,0x09,0xE0,0x41,0xDB,0x67,
9562         0x21,0x80,0x33,0x87,0xCB,0xF3,0x7F,0x05,
9563         0x3A,0x96,0xF7,0x08,0xCF,0xFA,0x24,0x5F,
9564         0x2F,0x3D,0xD3,0x87,0x82,0x67,0x21,0x86,
9565         0x75,0x18,0x3E,0x0B,0x31,0x88,0x17,0x4D,
9566         0x43,0xBC,0x70,0xFA,0x30,0xE0,0xFF,0x3F,
9567         0x5E,0xE0,0x57,0x4E,0x03,0x05,0x09,0xF4,
9568         0x2C,0x04,0x30,0xFE,0xFF,0x7F,0x16,0x02,
9569         0xC8,0xB8,0x46,0x9D,0x85,0x80,0xE5,0x6D,
9570         0xE5,0x19,0xDB,0xA7,0x95,0x04,0xFF,0xFF,
9571         0x67,0x21,0xC0,0x41,0x2E,0x23,0x07,0x21,
9572         0x4C,0xC4,0x87,0x83,0x8F,0x99,0x80,0x9E,
9573         0x29,0xBE,0xB8,0x1B,0xE3,0x09,0xE0,0x45,
9574         0xE2,0x31,0x93,0x1D,0x35,0x0D,0xF3,0x2C,
9575         0x64,0xBC,0xB3,0x78,0x0D,0x78,0x82,0xF7,
9576         0xE4,0x9F,0x85,0x18,0xD8,0x61,0x05,0x7B,
9577         0x14,0x32,0xA8,0xC1,0x63,0x87,0x08,0x13,
9578         0xE8,0x59,0x88,0xC5,0x7D,0xAE,0xE8,0x3C,
9579         0xE1,0xB3,0x10,0xF0,0xFE,0xFF,0x9F,0x25,
9580         0xE0,0x5E,0x0D,0x9E,0x85,0x00,0x13,0x87,
9581         0x0D,0x9F,0x35,0xC0,0x33,0x7C,0x8F,0xEA,
9582         0x1C,0x1E,0x8F,0x81,0x7F,0x56,0x1D,0xE7,
9583         0x04,0x96,0x7B,0xD1,0xB2,0x71,0xA0,0xA1,
9584         0x23,0xB2,0x3A,0x20,0x8D,0x0D,0x73,0x29,
9585         0x89,0x7C,0x72,0x6C,0xD4,0x56,0x04,0xA7,
9586         0x33,0x93,0x4F,0x00,0xD6,0x42,0x21,0x05,
9587         0x34,0x1A,0x8B,0xE1,0x9D,0xF9,0xE8,0x44,
9588         0x41,0x0C,0xE8,0xE3,0x90,0x6D,0x1C,0x0A,
9589         0x50,0x7B,0xD1,0x14,0xC8,0x39,0x07,0xA3,
9590         0x7F,0x76,0x74,0x36,0xBE,0x13,0x70,0x0D,
9591         0x10,0x3A,0x25,0x18,0xDA,0x6A,0x04,0xFC,
9592         0xFF,0x67,0x89,0x01,0x33,0xFE,0x53,0x8C,
9593         0x09,0x7C,0x8E,0xC1,0x1F,0x0C,0xF0,0x03,
9594         0x7F,0x31,0xA8,0xFA,0x5E,0xA0,0xFB,0x82,
9595         0xD5,0xDD,0x64,0x20,0xCC,0xC8,0x04,0xF5,
9596         0x9D,0x0E,0x40,0x01,0xE4,0x0B,0x81,0xCF,
9597         0x51,0x0F,0x05,0x6C,0x22,0x21,0xC2,0x44,
9598         0x33,0x3A,0x62,0xC2,0xA8,0xE8,0x13,0xA6,
9599         0x20,0x9E,0xB0,0x63,0x4D,0x18,0x3D,0x13,
9600         0x5F,0x74,0xD8,0x88,0x31,0x21,0xAE,0x1E,
9601         0xD0,0x26,0x18,0xD4,0x97,0x22,0x58,0x43,
9602         0xE6,0x63,0xF1,0x05,0x02,0x37,0x65,0x30,
9603         0xCE,0x89,0x5D,0x13,0x7C,0xD9,0xC1,0xCD,
9604         0x19,0x8C,0xF0,0x98,0xBB,0x18,0xBF,0x3A,
9605         0x79,0x74,0xFC,0xA0,0xE0,0x1B,0x0E,0xC3,
9606         0x7E,0x32,0xF3,0x8C,0xDE,0xCB,0x7C,0x8D,
9607         0xC3,0xC0,0x7A,0xBC,0x1C,0xD6,0x68,0x61,
9608         0x0F,0xED,0x3D,0xC4,0xFF,0xFF,0x43,0x8C,
9609         0xCF,0x13,0xC6,0x08,0xEB,0xDB,0x0B,0x38,
9610         0xEE,0x59,0xF0,0xEF,0x1A,0xE0,0xB9,0x84,
9611         0xF8,0xAE,0x01,0x30,0xF0,0xFF,0x7F,0xD7,
9612         0x00,0x4E,0xD7,0x04,0xDF,0x35,0x80,0xF7,
9613         0xD0,0x7D,0xD7,0x00,0xAE,0xD9,0xEF,0x1A,
9614         0xA8,0x63,0x80,0x15,0xDE,0x35,0xA0,0x5D,
9615         0xD9,0xDE,0xD7,0x9E,0xB0,0xAC,0xE9,0xB2,
9616         0x81,0x52,0x73,0xD9,0x00,0x14,0xFC,0xFF,
9617         0x2F,0x1B,0x80,0x01,0x29,0x13,0x46,0x85,
9618         0x9F,0x30,0x05,0xF1,0x84,0x1D,0xEC,0xB2,
9619         0x01,0x8A,0x18,0x97,0x0D,0xD0,0x8F,0xED,
9620         0x65,0x03,0x18,0xDC,0x13,0xF8,0x6D,0x03,
9621         0x78,0x43,0xFA,0xB6,0x01,0xD6,0xFF,0xFF,
9622         0x6D,0x03,0xAC,0xF9,0x6F,0x1B,0x28,0x0E,
9623         0xAB,0xBC,0x6D,0x40,0x3C,0xC9,0x33,0x02,
9624         0xAB,0xBA,0x6E,0xA0,0xF4,0x5C,0x37,0x00,
9625         0x12,0x88,0x99,0x30,0x2A,0xFE,0x84,0x29,
9626         0x88,0x27,0xEC,0x68,0xD7,0x0D,0x50,0x04,
9627         0xB9,0x6E,0x80,0x7E,0x5E,0x09,0xFE,0xFF,
9628         0xAF,0x1B,0xC0,0xE0,0xA2,0x80,0xB9,0x6F,
9629         0x00,0x6F,0x58,0x7E,0xDF,0x00,0x7C,0xDC,
9630         0xC4,0x31,0xF7,0x0D,0xC0,0xCC,0xFF,0xFF,
9631         0xBE,0x01,0xB0,0xE7,0xA2,0x80,0xBB,0x6F,
9632         0x00,0xEF,0x8B,0xB4,0xEF,0x1B,0x60,0xFE,
9633         0xFF,0xDF,0x37,0xC0,0x28,0x6D,0xFD,0x1E,
9634         0x1C,0x3D,0x21,0x78,0x7C,0xB8,0xFB,0xA5,
9635         0xC7,0xE7,0xBB,0x39,0x38,0x06,0x79,0x8C,
9636         0x87,0x76,0xC0,0xAF,0xEF,0x9E,0x98,0xEF,
9637         0xE6,0xC0,0xFF,0x4C,0x70,0x3C,0x18,0x68,
9638         0x1C,0x62,0xAB,0x97,0x06,0x72,0x34,0x38,
9639         0x3F,0xDC,0x19,0x81,0x61,0x15,0x7F,0xF2,
9640         0x47,0x38,0xC7,0xD0,0xD9,0xE1,0x20,0xB1,
9641         0x83,0xE0,0xC1,0x56,0x6D,0x02,0x85,0x86,
9642         0x50,0x14,0x18,0x14,0x8B,0x0F,0x18,0xF8,
9643         0x61,0xB3,0xB3,0x00,0x93,0x04,0x87,0x3A,
9644         0x02,0xF8,0x3E,0xD1,0xFC,0x38,0x74,0x37,
9645         0x38,0x54,0x8F,0xE5,0xA1,0x80,0x9E,0x01,
9646         0x71,0xC7,0x0C,0x32,0x69,0xCF,0x28,0xE2,
9647         0x53,0xC2,0x29,0x85,0x49,0xE0,0xF3,0x03,
9648         0x43,0xE3,0x04,0xAF,0x0D,0xA1,0xF9,0xFF,
9649         0xFF,0xA4,0xC0,0x3C,0xDF,0x31,0x04,0x6C,
9650         0x02,0xBB,0xBF,0x64,0xC8,0xDA,0xC0,0x75,
9651         0x4B,0x32,0x44,0x6F,0x38,0xB2,0x85,0xA2,
9652         0xE9,0x44,0x79,0xDF,0x88,0x62,0x67,0x08,
9653         0xC2,0x88,0x12,0x2C,0xC8,0xA3,0x42,0xAC,
9654         0x28,0x2F,0x05,0x46,0x88,0x18,0xE2,0x95,
9655         0x23,0xD0,0x09,0x87,0x0F,0xF2,0xD8,0x14,
9656         0xA7,0xFD,0x41,0x90,0x58,0x4F,0x02,0x8D,
9657         0xC5,0x91,0x46,0x83,0x3A,0x07,0x78,0xB8,
9658         0x3E,0xC4,0x78,0xF8,0x0F,0x21,0x06,0x39,
9659         0xC8,0x73,0x7B,0x54,0x38,0x4E,0x5F,0x25,
9660         0x4C,0xF0,0x02,0xE0,0x83,0x0A,0x1C,0xD7,
9661         0x80,0x9A,0xF1,0x33,0x06,0x58,0x8E,0xE3,
9662         0x3E,0xA9,0xC0,0x1D,0x8F,0xEF,0x07,0x6C,
9663         0xC2,0x09,0x2C,0x7F,0x10,0xA8,0xE3,0x0C,
9664         0x9F,0xE7,0x0B,0x8B,0x21,0x1F,0x13,0x4C,
9665         0x60,0xB1,0x27,0x1B,0x3A,0x1E,0xF0,0xDF,
9666         0x63,0x1E,0x2F,0x7C,0x32,0xF1,0x7C,0x4D,
9667         0x30,0x22,0x84,0x9C,0x8C,0x07,0x7D,0x87,
9668         0xC0,0x5C,0x6F,0xD8,0xB9,0x85,0x8B,0x3A,
9669         0x68,0xA0,0x4E,0x0B,0x3E,0x28,0xB0,0x9B,
9670         0x11,0xE6,0xB8,0xCE,0xCF,0x2A,0x60,0xF8,
9671         0xFF,0x9F,0x55,0x60,0x8F,0x10,0xFE,0xED,
9672         0xC1,0xF3,0xF2,0x95,0xE1,0xD5,0x21,0x81,
9673         0x43,0x8E,0x10,0x3D,0x2E,0x8F,0x10,0x73,
9674         0x3E,0xC2,0x0C,0x11,0x5C,0x67,0x01,0x70,
9675         0x0C,0x11,0xF8,0x1C,0x70,0xC0,0x71,0x69,
9676         0xE2,0x03,0xF5,0x01,0x07,0x70,0x70,0x4D,
9677         0xC3,0x1D,0x70,0xC0,0x71,0x16,0x60,0xFF,
9678         0xFF,0xC3,0x0D,0x2C,0x49,0x26,0x0E,0x23,
9679         0x18,0x11,0x30,0x28,0x02,0x02,0xA4,0xB3,
9680         0x80,0x0F,0x29,0x00,0x1F,0xAE,0x0C,0x0F,
9681         0x29,0xD8,0x93,0x86,0x07,0x8E,0x1B,0x85,
9682         0x07,0x8D,0x0B,0x30,0x68,0x7A,0xE2,0x80,
9683         0x7F,0x4C,0xF0,0x19,0x05,0x1C,0xE3,0x06,
9684         0xDF,0x2A,0x0C,0xFC,0xFF,0x3F,0x30,0xCC,
9685         0xE1,0xC2,0x63,0x39,0x8A,0xA0,0x07,0x1E,
9686         0xD4,0xF7,0x8C,0x33,0xF7,0x24,0x8F,0xD1,
9687         0x51,0x0F,0x27,0xF4,0xE4,0x85,0x3B,0x57,
9688         0xF9,0x0A,0x71,0x14,0x18,0xB8,0x77,0x29,
9689         0x8F,0xCF,0x17,0x2B,0xC3,0x63,0x46,0xFB,
9690         0x1E,0x72,0xD6,0x11,0x02,0xE2,0x2F,0x75,
9691         0x6C,0xC0,0x60,0x39,0x18,0x00,0x87,0x01,
9692         0xE3,0x13,0x0D,0x58,0x67,0x1B,0x3C,0xF4,
9693         0x69,0x31,0xC4,0xE3,0x0B,0xFB,0x56,0x61,
9694         0x82,0xEA,0x41,0x75,0x12,0xF4,0xD0,0xC0,
9695         0x01,0xE8,0xA1,0xC1,0x3F,0xB9,0x90,0xFB,
9696         0x2B,0x1D,0x82,0xB5,0xE2,0x69,0xDE,0x47,
9697         0x1E,0xF3,0xDC,0xA2,0xBC,0x0D,0x3C,0x07,
9698         0xF0,0xD3,0x82,0x87,0xE3,0x63,0x81,0xC7,
9699         0xE9,0x4B,0x58,0x82,0xF7,0x1A,0x9F,0x6C,
9700         0x1E,0x5C,0x58,0xB2,0x21,0xA0,0x06,0xEB,
9701         0x21,0x60,0xA6,0x9A,0xC0,0x49,0x46,0x80,
9702         0xCA,0x00,0xA1,0x1B,0xCB,0xE9,0x3E,0x8B,
9703         0x84,0x38,0xCD,0x47,0x99,0xC7,0x02,0x8F,
9704         0xF5,0xC1,0xC0,0xFF,0x7F,0xCD,0x23,0xD4,
9705         0x7D,0xCD,0x33,0x7B,0x3A,0xC0,0xAC,0x22,
9706         0xDC,0x7B,0xCE,0x1B,0x86,0xD1,0x9E,0x2D,
9707         0x7C,0xCD,0x78,0xD6,0x34,0x42,0x38,0x76,
9708         0x83,0xF3,0x48,0x8C,0xF0,0x82,0xC0,0x4E,
9709         0x0C,0x0F,0x30,0xC6,0x39,0x79,0xC3,0xFA,
9710         0xC2,0xCB,0x40,0x83,0x19,0xDB,0x97,0x01,
9711         0x36,0x2A,0xDF,0x88,0xC0,0x97,0xFC,0x62,
9712         0x00,0x65,0x16,0xBE,0x9E,0xF8,0xA0,0xC4,
9713         0x2E,0x06,0x2C,0xE5,0xC5,0x00,0x54,0x37,
9714         0x0C,0x5F,0x0C,0xE0,0x5F,0x89,0x5E,0x0C,
9715         0xC0,0x70,0x71,0xF2,0x3D,0xC0,0x1E,0xEE,
9716         0xA3,0x74,0x9C,0xBE,0xFD,0xBD,0x19,0xF8,
9717         0x6C,0xC0,0x60,0x3C,0xC3,0x30,0xC6,0x08,
9718         0xE3,0x51,0x86,0x31,0xC1,0xDC,0xB7,0x03,
9719         0xE8,0x39,0x87,0x81,0x4A,0x78,0x3B,0x80,
9720         0x72,0x0E,0xE8,0xF2,0x68,0x42,0x4F,0x01,
9721         0x4F,0x07,0x3E,0x29,0x1A,0xA2,0xAF,0xB1,
9722         0x0A,0x26,0x50,0xC4,0x07,0x0D,0x3E,0xB5,
9723         0x28,0x3E,0x15,0x78,0x2D,0xCF,0x4E,0xE1,
9724         0xE2,0x9C,0x89,0xA7,0x6A,0x38,0x03,0xBD,
9725         0xE6,0x86,0x63,0xFF,0x7F,0x38,0xFC,0xA9,
9726         0xE0,0x35,0x80,0x1D,0x24,0x3D,0x2D,0x23,
9727         0xC2,0x38,0xA4,0x3C,0x32,0xF8,0xB6,0x18,
9728         0xC7,0x90,0x0F,0x91,0xBE,0x13,0x18,0xF2,
9729         0x21,0xEF,0x79,0xC7,0xC0,0xAF,0x08,0x71,
9730         0x9E,0xB2,0x7C,0x67,0xF0,0x65,0x01,0x7C,
9731         0x91,0x2E,0x0B,0x68,0x68,0x9F,0x64,0x7C,
9732         0x41,0x30,0xEC,0x89,0xB3,0x00,0x77,0x05,
9733         0x50,0x81,0xFA,0xAE,0x00,0xFF,0x42,0xF0,
9734         0xAE,0x00,0x86,0x79,0xF9,0x56,0xC0,0x35,
9735         0x1D,0x4A,0xD0,0x67,0x12,0x5F,0x17,0x70,
9736         0x53,0x64,0xA9,0x8E,0x0A,0xD0,0x53,0x4C,
9737         0x02,0x75,0x47,0xF7,0x51,0x01,0xC6,0x4D,
9738         0xD9,0x07,0x54,0x76,0x5A,0x60,0x67,0x21,
9739         0x76,0x1D,0xC1,0x5D,0x49,0x18,0xCA,0xB3,
9740         0x81,0x2F,0x59,0xFC,0x70,0x00,0x03,0xDC,
9741         0xB3,0x38,0xC4,0x08,0xB1,0xD9,0x81,0xEB,
9742         0x75,0xD2,0x70,0x2F,0x44,0xEC,0xFF,0x7F,
9743         0x32,0x00,0xE3,0x51,0x1B,0x1C,0x27,0x9D,
9744         0xF0,0x91,0x9E,0x59,0xF8,0x49,0x19,0x30,
9745         0x71,0xF2,0x03,0xE3,0xC9,0x1A,0xC6,0x00,
9746         0xB8,0xBC,0x57,0x95,0x81,0xFC,0x43,0x90,
9747         0x20,0x18,0xD4,0x29,0x19,0x38,0x1C,0xC5,
9748         0x70,0xA7,0x64,0x78,0x50,0xF8,0xC3,0x00,
9749         0xE6,0x46,0xE8,0x7B,0x82,0xA1,0xDE,0x93,
9750         0x0E,0xE3,0x91,0xD0,0x04,0x3E,0x2D,0xC3,
9751         0xFA,0xFF,0x9F,0x96,0x81,0xD5,0xB1,0xDD,
9752         0x43,0xF6,0x59,0x01,0x77,0x76,0x80,0x3B,
9753         0x3D,0x7E,0x7A,0x00,0x9C,0x00,0x3D,0x3D,
9754         0x80,0xED,0xBC,0x01,0xF7,0x40,0x80,0x38,
9755         0xFE,0xA3,0x82,0x5F,0x59,0x28,0x1C,0x3F,
9756         0xB6,0xF3,0x63,0x09,0xEE,0x70,0xE0,0x23,
9757         0x83,0x0F,0x90,0xB8,0xA1,0xF8,0x50,0x81,
9758         0x3C,0x0B,0x80,0x62,0xF4,0x6C,0x04,0xEC,
9759         0x06,0xF3,0xD2,0x12,0xE5,0xFF,0xFF,0xDE,
9760         0xC0,0x4E,0x29,0xB8,0x83,0x00,0xF8,0x8E,
9761         0x01,0xE0,0x1D,0x0C,0x97,0x35,0x66,0x94,
9762         0x10,0x18,0x8D,0x19,0x77,0x08,0xE1,0x27,
9763         0x02,0xDC,0x98,0x3D,0x6E,0x8F,0x19,0x77,
9764         0x9C,0xE5,0xA3,0x7A,0xCA,0x08,0xE5,0x03,
9765         0x07,0x3B,0x67,0xBC,0x11,0xF0,0xA1,0x03,
9766         0x8F,0x03,0x0C,0xEE,0x48,0x01,0xC6,0xCB,
9767         0x01,0x1B,0x3B,0xB8,0x83,0x90,0x53,0x20,
9768         0x4B,0x87,0xD1,0xD8,0x71,0xB2,0x81,0x74,
9769         0x8C,0xF1,0x21,0xD7,0x63,0xC7,0x0D,0xD6,
9770         0x63,0xC7,0x1D,0x5F,0xB0,0xFF,0xFF,0xE3,
9771         0x0B,0x18,0xC6,0xC0,0xC5,0x0F,0x03,0x7D,
9772         0xF3,0xF3,0xE8,0x0C,0xEE,0x61,0xFB,0x04,
9773         0x13,0xE3,0xF9,0x25,0xC4,0x23,0xCC,0x8B,
9774         0x4B,0x84,0xA3,0x08,0xF2,0xE6,0x12,0xE7,
9775         0xD5,0x20,0xCC,0x63,0x4B,0x94,0x10,0x11,
9776         0x0E,0x26,0xCE,0x13,0x8C,0x11,0x0E,0x3C,
9777         0x8A,0x21,0x22,0x9C,0x40,0x88,0x93,0x3E,
9778         0xD9,0x20,0xE1,0x63,0x84,0x8D,0xF6,0x04,
9779         0xC3,0xC7,0xC2,0xCF,0x2B,0x1E,0x3C,0x3F,
9780         0xAD,0xF9,0x2E,0xE8,0xC9,0x9C,0xE3,0x43,
9781         0x96,0xA7,0xF6,0x38,0xE9,0xC3,0x2C,0x6E,
9782         0x50,0x0F,0x8E,0xEC,0xAE,0xE3,0xE3,0x35,
9783         0xF6,0x14,0xE4,0x21,0xF0,0x13,0x81,0x2F,
9784         0x88,0x9E,0xAC,0xEF,0x7A,0xEC,0x5E,0x66,
9785         0x8C,0xEA,0xA7,0x80,0x3A,0xA6,0x9C,0xC1,
9786         0x2B,0x04,0xBB,0xE7,0xF9,0x90,0xED,0xBB,
9787         0x24,0x1B,0x05,0xEE,0x90,0xE0,0x33,0x12,
9788         0x3F,0x55,0x78,0x18,0x1E,0x05,0x8C,0x19,
9789         0xBC,0x23,0x1C,0x5A,0x88,0x03,0x7E,0xDF,
9790         0x65,0x43,0x8D,0x71,0x7A,0x3E,0x7F,0xB0,
9791         0x41,0xC0,0x87,0x3A,0x54,0x0F,0xF3,0xA8,
9792         0x5E,0x0A,0x19,0xCE,0xD9,0xC1,0x1D,0x04,
9793         0xF6,0xF8,0xE1,0x41,0xF0,0x9B,0x25,0x1F,
9794         0x04,0x3B,0xDF,0xBC,0xC1,0x19,0xE4,0xFF,
9795         0x7F,0x0C,0xB0,0xCF,0x54,0x3E,0x9A,0x20,
9796         0x8E,0x80,0xE8,0xF3,0x87,0xC7,0xF0,0x26,
9797         0xC7,0x87,0x83,0x3D,0x7A,0xE0,0x4E,0x22,
9798         0x70,0x8F,0x5D,0x07,0xED,0x6B,0x9C,0x2F,
9799         0x5A,0x30,0xEE,0x7B,0xCF,0x22,0xE0,0xC7,
9800         0x78,0x6C,0x01,0xC7,0xA1,0x04,0xDC,0xC1,
9801         0x8E,0x6B,0x1C,0x42,0x51,0x60,0x74,0x28,
9802         0xC1,0xC5,0x00,0x12,0x8C,0x63,0x9C,0xD1,
9803         0xD0,0x97,0x48,0x1F,0xD2,0xE0,0x0C,0x1A,
9804         0xF6,0x3C,0x9F,0x50,0xB8,0x3D,0x01,0x8A,
9805         0x4E,0x28,0x20,0xC3,0x7D,0x06,0xC1,0x9E,
9806         0x10,0xF8,0x19,0x84,0xFD,0xFF,0x0F,0x8E,
9807         0x1E,0xF7,0x7B,0xA3,0x4F,0x8D,0x6C,0xEE,
9808         0x0F,0x01,0x27,0x70,0xEE,0xEC,0xD4,0x8C,
9809         0x3B,0x33,0x60,0xCF,0x1F,0x1E,0x02,0x3F,
9810         0x17,0x78,0xF8,0x1E,0x02,0x7E,0xF0,0x0F,
9811         0xCC,0x06,0x07,0xE3,0x29,0xC2,0xD7,0x0E,
9812         0x0E,0xCE,0x4F,0x03,0x06,0xE7,0xAF,0x50,
9813         0x9F,0xE7,0x19,0x38,0xF6,0xD4,0xEB,0x7B,
9814         0x87,0xE7,0xEB,0x43,0x05,0xFE,0xA6,0xE7,
9815         0x43,0x05,0x38,0x0E,0x0F,0xFC,0xB0,0xC2,
9816         0x86,0xF0,0x28,0x80,0x3F,0xB5,0xF8,0xF8,
9817         0x17,0xE7,0x29,0x82,0xDD,0x46,0xB0,0x87,
9818         0x0B,0xC0,0x51,0xB4,0xB3,0x18,0x2A,0xCC,
9819         0x59,0x8C,0xFC,0xFF,0xCF,0x51,0xA8,0xB3,
9820         0x18,0x3D,0x5C,0x00,0x2E,0x04,0x1F,0x0F,
9821         0x40,0x73,0x10,0x78,0x5C,0xF0,0x85,0xE0,
9822         0x48,0x0E,0xE4,0xE9,0x00,0xF0,0x19,0x4A,
9823         0xC3,0xA1,0x09,0x13,0x03,0x06,0x75,0x3E,
9824         0xF0,0x09,0xC5,0xC7,0x0E,0x7E,0x36,0xF0,
9825         0x8D,0xDC,0x43,0xE5,0xA7,0x66,0x5F,0xF2,
9826         0x11,0xE0,0x02,0x75,0xA0,0x61,0xA0,0x46,
9827         0xE4,0x23,0xD2,0xFF,0xFF,0xB9,0x0D,0x1B,
9828         0x60,0x68,0xF4,0x1C,0x0E,0xE3,0x80,0xEB,
9829         0x73,0x38,0x76,0x40,0x3E,0x87,0xC3,0x3F,
9830         0x47,0xC3,0x1F,0x1B,0x3B,0xDD,0xF3,0x81,
9831         0xC1,0xBA,0x7E,0x63,0x06,0x06,0xB6,0x6F,
9832         0x91,0x07,0x06,0x1C,0x51,0xCF,0xC6,0x57,
9833         0x08,0x0F,0x0C,0x6C,0x80,0x1E,0x18,0xF0,
9834         0x89,0x05,0x21,0x27,0x03,0x43,0x9D,0x32,
9835         0x8C,0x1C,0xF3,0x89,0xC3,0xC3,0xF0,0xA1,
9836         0x22,0xEA,0x33,0xC0,0x23,0x1E,0x1B,0x1B,
9837         0xFB,0xFF,0x8F,0x0D,0x2C,0xC7,0x16,0x8F,
9838         0x0D,0xFC,0x47,0x78,0xFC,0xD8,0xE0,0x8C,
9839         0xE5,0xD1,0xC4,0x97,0x99,0x23,0x3B,0x8D,
9840         0x33,0x7B,0x0D,0xF1,0xD1,0xEE,0xF1,0xDB,
9841         0x63,0x03,0x97,0x85,0xB1,0x01,0xA5,0x90,
9842         0x63,0x43,0x1F,0x52,0x7C,0x0A,0xB0,0x71,
9843         0x54,0x32,0x0F,0x1F,0xAF,0x7C,0x62,0x38,
9844         0xBA,0x20,0x6F,0xE8,0xBE,0x5C,0xF8,0x48,
9845         0x63,0x30,0x5F,0x5A,0x7C,0x06,0xE5,0x43,
9846         0x04,0xD7,0x57,0xC5,0x43,0x04,0x3E,0xA1,
9847         0x86,0x88,0x1E,0xCF,0xFF,0xFF,0x11,0xCC,
9848         0x43,0x64,0x43,0x03,0xAF,0x87,0xA1,0x01,
9849         0xA5,0x98,0xC0,0x5E,0x85,0x87,0x46,0x4F,
9850         0x3F,0x3E,0x04,0x30,0x08,0xDF,0x06,0xD8,
9851         0x55,0xC0,0x57,0x21,0x83,0x24,0x18,0xE7,
9852         0x64,0x41,0x07,0x07,0x8E,0x21,0x79,0x70,
9853         0xF0,0x07,0xE3,0x21,0x70,0x60,0xCF,0xE0,
9854         0xB9,0xE8,0x31,0xD8,0xA7,0x1D,0x9F,0x4A,
9855         0xC0,0x77,0xE6,0x04,0xC7,0xE9,0x1D,0x7B,
9856         0x29,0xF0,0x08,0x1E,0xAD,0x3C,0x02,0x7E,
9857         0xB4,0x02,0x66,0xFF,0xFF,0xA3,0x15,0x30,
9858         0x09,0x7A,0xE6,0xA4,0x03,0x77,0x34,0x18,
9859         0xD4,0xD1,0x0A,0x5C,0x11,0xC0,0x75,0xDC,
9860         0xF0,0xD1,0x02,0xCE,0x50,0x0F,0xDA,0x07,
9861         0x65,0xCF,0xDA,0x97,0x21,0x76,0xB4,0x00,
9862         0x97,0x89,0x43,0x08,0xD0,0x04,0x3E,0x89,
9863         0x67,0xEF,0x43,0x03,0xB3,0x8A,0xA1,0x01,
9864         0xA5,0xA3,0x01,0xEE,0x44,0x81,0xFD,0xFF,
9865         0x9F,0x28,0x60,0xDE,0x30,0x70,0x07,0x0A,
9866         0xC0,0xCD,0xE9,0xDB,0xE3,0xE2,0xD0,0x38,
9867         0xC4,0xE7,0xA7,0x73,0xF6,0xD1,0xE8,0x4C,
9868         0x71,0x67,0x11,0x30,0x9C,0x7D,0x11,0x8F,
9869         0x18,0x03,0xF9,0x81,0x21,0x59,0x30,0x28,
9870         0x16,0x0F,0xC5,0x07,0x03,0x0E,0xEC,0x23,
9871         0x02,0x3B,0x17,0xB0,0x73,0xAD,0xE1,0xF8,
9872         0x59,0xC0,0xA7,0x84,0xB7,0xA6,0x17,0x7B,
9873         0x9F,0xD7,0x7D,0xD6,0x08,0xC9,0xCE,0xF4,
9874         0x3E,0x89,0xE2,0x0E,0xA2,0x70,0x4E,0x9F,
9875         0xE0,0x22,0xF0,0x65,0xDF,0xA3,0xE0,0xA7,
9876         0x07,0xCF,0xF1,0x8D,0xC1,0xA7,0x07,0xE6,
9877         0x7E,0xF8,0x9A,0xF1,0x33,0xC3,0xE3,0x43,
9878         0x88,0x27,0xE2,0xDA,0xA6,0x20,0x5B,0x18,
9879         0x42,0x09,0xF4,0xFF,0x8F,0x10,0xE5,0x6D,
9880         0x20,0xCA,0x29,0x44,0x88,0x12,0xA4,0xB1,
9881         0xC9,0x0B,0x35,0xCA,0xD9,0x45,0x6E,0x6D,
9882         0xF6,0x82,0x0B,0x14,0x2A,0x66,0x9C,0x28,
9883         0xEF,0x10,0xB1,0xDA,0x1F,0x04,0x91,0xF4,
9884         0x32,0xD0,0x71,0xC9,0x91,0x0E,0x7D,0xE8,
9885         0x61,0xFB,0x04,0x8C,0x3F,0x48,0xE2,0xAE,
9886         0x2A,0x3E,0x28,0xF8,0x00,0x80,0x77,0x09,
9887         0xA8,0x5B,0x9D,0xC7,0xED,0xF3,0x06,0xF8,
9888         0xAF,0x17,0x58,0x82,0xF2,0x07,0x81,0x1A,
9889         0x99,0xA1,0x3D,0xCC,0xB7,0x19,0x43,0xBE,
9890         0x07,0x1C,0x16,0x3B,0x27,0xF9,0xF0,0x08,
9891         0x1C,0x8E,0x01,0x4F,0x1B,0xBE,0x51,0x7B,
9892         0xBE,0x3E,0x62,0x01,0x8E,0xFE,0xFF,0x47,
9893         0x2C,0x30,0x9D,0xDF,0x7D,0x82,0x01,0xC7,
9894         0xCD,0x82,0x9F,0x61,0x00,0x67,0x40,0xCF,
9895         0x30,0x60,0x1F,0x2A,0x6E,0x08,0x5C,0xEE,
9896         0x8A,0x28,0x90,0x05,0xC2,0xA0,0x0E,0xFD,
9897         0xE4,0x08,0x42,0xCF,0x9C,0x70,0x86,0x72,
9898         0xB2,0xBD,0x5F,0x1D,0xC8,0x2D,0xC2,0x43,
9899         0x3D,0x8B,0xC7,0x04,0x76,0xDA,0x02,0x36,
9900         0xFF,0xFF,0xE3,0x29,0xB0,0x98,0xF7,0xD3,
9901         0x69,0x84,0x63,0x03,0xFB,0x71,0x0B,0x38,
9902         0x1D,0xCC,0xE0,0xDC,0x7F,0xD8,0x2D,0x1A,
9903         0x37,0x34,0xB0,0x0D,0xCC,0x43,0x03,0x3E,
9904         0x27,0x47,0x30,0x9E,0x98,0xF8,0x55,0xE2,
9905         0xE1,0x89,0x1F,0x43,0xC0,0xFA,0xFF,0x3F,
9906         0x99,0x01,0xF6,0x84,0x1E,0xCB,0x50,0xD2,
9907         0x4E,0x66,0x80,0xC0,0xFB,0xD8,0x3B,0xC3,
9908         0x4B,0x83,0xE7,0x74,0xD2,0xCF,0x62,0x3E,
9909         0x99,0x19,0x21,0x0A,0xBB,0x8F,0x19,0xAD,
9910         0x37,0x14,0xCD,0x3C,0xE8,0x3B,0x99,0x51,
9911         0x62,0x46,0x6A,0x0E,0x4C,0x48,0x11,0x0F,
9912         0x27,0x4A,0x88,0x60,0xAF,0x13,0x6F,0x67,
9913         0x4F,0x66,0x4C,0xD6,0xC9,0x0C,0x24,0xFF,
9914         0xFF,0x93,0x19,0x98,0x5C,0x9F,0xCC,0x80,
9915         0xCA,0x39,0x0A,0x7F,0x32,0x03,0x78,0x74,
9916         0xC0,0xC2,0x9D,0xCC,0xC0,0xF2,0xFF,0x3F,
9917         0xC4,0x00,0xCE,0xC7,0x0A,0x63,0x0C,0x3C,
9918         0xDA,0xC1,0x0C,0x15,0xE6,0x6C,0x86,0x0E,
9919         0x72,0x08,0xA1,0xC1,0x0E,0x21,0x50,0xE6,
9920         0x72,0xA0,0xA7,0xF0,0x9A,0xE0,0x73,0x14,
9921         0xD8,0x0F,0x67,0xC0,0xE1,0xD4,0x80,0x0F,
9922         0x74,0xE2,0x42,0x8F,0xC2,0x23,0x0E,0x58,
9923         0xFD,0xC0,0xC8,0xFF,0xFF,0x64,0x06,0x18,
9924         0x78,0x6A,0xF8,0x40,0x82,0x63,0x31,0xEA,
9925         0x1B,0xC4,0x21,0xBE,0x8D,0xF8,0xE8,0xFE,
9926         0x6A,0xE2,0x4B,0x00,0xE6,0x42,0xE2,0xD3,
9927         0x09,0xB3,0x70,0x38,0x03,0x5A,0x43,0x60,
9928         0x57,0x26,0xCF,0x9C,0x0F,0xE1,0x6C,0x3C,
9929         0x7A,0xDC,0xE9,0x04,0xDE,0x38,0x7C,0x3A,
9930         0x01,0x5E,0x07,0x0C,0xCC,0x0C,0xC2,0x3F,
9931         0x84,0xB0,0x21,0x9C,0xAA,0xC7,0x70,0xEE,
9932         0xAF,0x38,0x3E,0x9D,0x80,0xF3,0xFF,0x7F,
9933         0x62,0x03,0x0C,0x0A,0x7E,0x32,0xF8,0xB8,
9934         0x46,0x25,0xC2,0xA0,0x8E,0xE6,0x80,0x7B,
9935         0x98,0x27,0x36,0x26,0x6F,0xC5,0x1A,0x8B,
9936         0x4F,0x6C,0x30,0xFF,0xFF,0x27,0x36,0x80,
9937         0xD1,0x87,0x20,0xB0,0xFD,0xFF,0x0F,0x41,
9938         0x60,0x1C,0xA0,0x0F,0x41,0x80,0x9B,0xD3,
9939         0x09,0xEE,0xC4,0x07,0xB6,0x63,0x10,0x60,
9940         0x6D,0xE8,0x3E,0x06,0x81,0xF9,0xFF,0x3F,
9941         0x5A,0x98,0xA3,0xE0,0xC2,0x8E,0x7C,0x28,
9942         0x29,0xA7,0x3E,0xB4,0x0C,0x20,0x69,0x38,
9943         0xC9,0x01,0x9D,0xD3,0x3D,0x70,0x92,0x75,
9944         0xEA,0x40,0x8F,0xC7,0xA0,0xAF,0x1C,0xBE,
9945         0x12,0xF0,0x23,0x07,0x93,0x00,0xAA,0x41,
9946         0xFA,0xCC,0x07,0x9C,0x8E,0x1C,0xE0,0x38,
9947         0x26,0x05,0xC6,0xDE,0x0E,0xDE,0x22,0x3D,
9948         0x89,0xA7,0xA1,0xE3,0x0C,0x51,0x38,0x26,
9949         0x39,0x18,0x44,0x7A,0x95,0x62,0x03,0x7C,
9950         0xAB,0xF1,0xD9,0xC8,0x07,0x10,0x78,0xE3,
9951         0xF6,0xD8,0x61,0xFF,0xFF,0x0F,0x75,0xC0,
9952         0x01,0xE2,0xA4,0xF8,0x21,0xC3,0x98,0x67,
9953         0xC5,0x0F,0x75,0x80,0xF5,0x18,0x27,0x3A,
9954         0x94,0xF0,0x43,0x1D,0x20,0xE8,0xFF,0x7F,
9955         0xA8,0x03,0x86,0x38,0x6F,0x24,0xD1,0x1E,
9956         0xEA,0x98,0xE8,0x43,0x1D,0x40,0xC8,0xFF,
9957         0xFF,0xA1,0x0E,0x18,0x9E,0x87,0x00,0xAE,
9958         0x9C,0xEF,0xC0,0x7C,0x22,0x02,0xEF,0xFF,
9959         0xFF,0x7C,0x07,0xB8,0x1B,0x2D,0xCC,0x51,
9960         0x70,0x41,0xAF,0x0E,0x03,0x51,0x09,0x30,
9961         0x28,0x02,0xC7,0x5F,0x9B,0x60,0x1C,0xEA,
9962         0x7C,0x87,0x3E,0x2F,0x78,0xD8,0x4F,0x05,
9963         0x9E,0xC4,0xA9,0xFA,0x5A,0x70,0x14,0x4F,
9964         0x00,0x3E,0xE1,0x01,0xFF,0xA1,0xC1,0x9A,
9965         0x44,0xF1,0x43,0x03,0xF5,0x11,0xE4,0xFF,
9966         0x7F,0x68,0xC0,0x28,0xEA,0xF9,0x06,0x7D,
9967         0xCC,0xF2,0xD9,0x20,0xE6,0x0B,0x48,0x84,
9968         0x07,0x10,0x5F,0x1F,0xD8,0x71,0xD2,0x67,
9969         0xA0,0x40,0x51,0xDE,0x37,0xF8,0x09,0x07,
9970         0x5C,0x83,0xF3,0x09,0x07,0xBC,0x87,0x23,
9971         0x1F,0x4B,0xC0,0x77,0xD0,0x84,0x73,0x81,
9972         0xF1,0x8D,0x8D,0x9D,0x06,0xC0,0x76,0x00,
9973         0x06,0xDF,0x69,0x00,0x1C,0xC7,0x24,0x7E,
9974         0x3A,0x04,0x13,0xCC,0xC1,0xBC,0x34,0xFB,
9975         0xFF,0xEF,0xFD,0x94,0x43,0xCF,0x86,0x80,
9976         0x75,0x49,0x07,0x43,0x94,0x88,0xB3,0x21,
9977         0x20,0xFD,0xFF,0x7F,0x36,0xC4,0x20,0xC4,
9978         0x09,0xFC,0x12,0xD1,0xDC,0xD9,0x90,0xAE,
9979         0xD8,0x67,0x43,0x80,0xE1,0xFF,0xFF,0x23,
9980         0x00,0xF6,0x7C,0x04,0x38,0x3D,0x64,0x83,
9981         0xE7,0x14,0x08,0xE3,0xE4,0x03,0x38,0xFE,
9982         0xFF,0x8F,0x15,0xE6,0x18,0x78,0xEA,0x97,
9983         0x9B,0x8F,0x03,0x54,0xD4,0x2B,0xC2,0x30,
9984         0x94,0xC5,0x87,0x05,0x1F,0x11,0xF8,0x61,
9985         0xC1,0x23,0xA8,0x78,0x9C,0xF4,0x74,0xE3,
9986         0x33,0x21,0x3B,0x24,0x38,0xFC,0x20,0xE9,
9987         0x41,0x13,0x3C,0xE7,0x23,0x78,0xB7,0x1E,
9988         0x38,0xA7,0x02,0xC0,0x4D,0xAE,0x27,0xA3,
9989         0x4E,0x17,0x0E,0x70,0x8E,0x92,0x8D,0x63,
9990         0x08,0xE5,0x70,0xCC,0xB7,0x87,0xA6,0xC9,
9991         0x4E,0x56,0x30,0x63,0x41,0xEA,0x24,0xE0,
9992         0x01,0x38,0x10,0x8C,0xB4,0x93,0x68,0x34,
9993         0x86,0xB3,0x5A,0x18,0xC1,0x19,0xC4,0xC7,
9994         0x11,0xE7,0x3A,0x19,0xA1,0x3F,0x07,0x3E,
9995         0x15,0x61,0x82,0xDC,0x4B,0xE8,0xBC,0x7D,
9996         0x37,0xE0,0x57,0x61,0x8F,0xC5,0xFF,0x7F,
9997         0x60,0xDF,0x4E,0xC0,0x31,0x17,0xAB,0x01,
9998         0x45,0x0D,0xC0,0x68,0x98,0x53,0xC0,0x53,
9999         0x09,0xB8,0x82,0xCD,0x0D,0x7D,0x61,0xB1,
10000         0xD6,0xA9,0xE8,0x14,0xF4,0x3E,0x70,0x70,
10001         0xC0,0x63,0xF6,0x1E,0x1C,0x2C,0x34,0x0F,
10002         0x0E,0x6C,0xD9,0x06,0x87,0x56,0x72,0x17,
10003         0x21,0x87,0x0F,0xFC,0xEC,0x80,0x03,0xA0,
10004         0x67,0x07,0x0B,0xC9,0xB3,0x03,0x9B,0xBE,
10005         0xB3,0x08,0x28,0x70,0xFE,0xFF,0x11,0xDE,
10006         0x3B,0x7C,0x6E,0x79,0xF6,0x60,0x63,0x78,
10007         0x74,0x31,0x9A,0xD1,0xB9,0xA6,0xDB,0x04,
10008         0x4A,0xC5,0x6D,0x82,0x82,0xF8,0x06,0xE0,
10009         0x84,0x34,0xBA,0x75,0xE2,0x66,0x62,0xFC,
10010         0x47,0x0C,0x1F,0x11,0x0E,0xE9,0x6C,0x4D,
10011         0x30,0x0F,0xA4,0x9E,0x81,0xBE,0xB3,0xE1,
10012         0x67,0x1F,0xF2,0xC1,0xC5,0xD3,0xF0,0xF5,
10013         0x86,0xDC,0x3B,0xE8,0xB4,0x7D,0x66,0xC0,
10014         0x1C,0x74,0x7D,0x9D,0x7A,0x83,0x27,0x57,
10015         0x09,0xEA,0xE1,0x02,0x42,0x2F,0x34,0xBE,
10016         0xDC,0x25,0x78,0xE0,0xF4,0xE9,0xEE,0xBD,
10017         0x84,0x9D,0xF1,0x12,0xBC,0xE0,0x25,0x98,
10018         0x77,0x10,0xA8,0x51,0x79,0x10,0x98,0xAB,
10019         0x3C,0xCB,0x37,0x06,0x54,0xB2,0x8B,0x16,
10020         0x3D,0xC3,0xBC,0xC3,0xF8,0x92,0xE0,0xEB,
10021         0x87,0xCF,0x2D,0x5E,0xC0,0xEB,0x16,0x0C,
10022         0x82,0x67,0xA0,0x57,0x17,0xDF,0xD9,0x0D,
10023         0xFC,0x2A,0xF0,0x46,0x13,0x22,0x98,0x61,
10024         0x0F,0xFF,0xDD,0xDD,0xA8,0xBE,0xE9,0x18,
10025         0xEB,0x75,0xC4,0x23,0xE5,0xC7,0x96,0x03,
10026         0x8A,0xF4,0xF2,0xE6,0x09,0xF8,0x2C,0xE3,
10027         0x53,0xDD,0x49,0xF9,0x7A,0x68,0xF4,0x57,
10028         0x08,0x1F,0x7E,0x8C,0xEC,0x73,0x0E,0x3B,
10029         0xDF,0xB1,0x41,0x71,0xC4,0x07,0x86,0x97,
10030         0x1A,0x4F,0x85,0x9D,0xBB,0x60,0x1C,0x1C,
10031         0xD8,0xB1,0x08,0x73,0x7C,0x05,0xD7,0xC9,
10032         0xE6,0xFF,0xFF,0xE4,0x00,0x6E,0x78,0xCC,
10033         0xC1,0xD7,0xE7,0x0D,0xDF,0x0C,0x3C,0x2E,
10034         0x7E,0xE4,0xF0,0x49,0xE3,0xA5,0xD3,0xD8,
10035         0xA7,0xE9,0xA3,0xD1,0xCB,0x9B,0x4F,0x2F,
10036         0x18,0x58,0x5F,0x1A,0x38,0xAC,0xD1,0xC2,
10037         0x3E,0x06,0x9C,0xB9,0x2F,0x44,0xB8,0xC3,
10038         0x23,0x58,0x00,0xF1,0xB7,0x92,0x47,0x0E,
10039         0x4F,0xC0,0x80,0x4C,0xD3,0xBA,0x74,0x20,
10040         0xE2,0xA7,0x3C,0x2B,0x5F,0x99,0x2E,0x43,
10041         0x0C,0xE3,0xA9,0xF2,0xF1,0xC3,0xB3,0xF1,
10042         0x51,0xC0,0xC7,0x28,0xCF,0xFC,0x8C,0x22,
10043         0xBD,0x32,0x10,0x50,0x9D,0x88,0xB8,0x42,
10044         0x18,0x89,0xA1,0xD1,0x9D,0x83,0xC7,0x1F,
10045         0x22,0x05,0x31,0xA0,0x6F,0x2E,0xC0,0xF4,
10046         0x4C,0x04,0x5C,0xFE,0xFF,0x37,0x17,0x80,
10047         0xFF,0xFF,0xFF,0x9B,0x0B,0xE0,0xE6,0xFE,
10048         0xE0,0x9B,0x0B,0x70,0x8D,0xB4,0x2A,0x7A,
10049         0x61,0x77,0x08,0x18,0xD4,0x9D,0x1D,0x70,
10050         0x78,0x2B,0x78,0x67,0x87,0xF5,0xFF,0xBF,
10051         0xB3,0xC3,0xC3,0x8C,0x13,0xE5,0x85,0x21,
10052         0xC6,0x3B,0x3B,0x0B,0xF0,0x26,0xD0,0x51,
10053         0xC6,0x77,0x76,0x80,0x1F,0x67,0xD8,0x77,
10054         0x69,0xF0,0x5E,0x75,0x81,0xF5,0xFF,0xFF,
10055         0xAA,0x0B,0x3C,0x04,0xDF,0xA7,0x41,0x3E,
10056         0x5E,0x30,0x8C,0x83,0x2B,0x27,0xA1,0xC7,
10057         0x02,0x6B,0x85,0x41,0xDD,0xA9,0xC1,0xA5,
10058         0x09,0x5C,0x17,0x5F,0x1F,0x6A,0x7C,0xA4,
10059         0xC5,0x9F,0x2F,0x70,0x01,0x86,0x4C,0x4F,
10060         0x65,0x30,0xAE,0x29,0x3E,0x95,0x61,0xEE,
10061         0x0E,0x1E,0x90,0x8F,0x18,0xC0,0x67,0x15,
10062         0x1E,0x18,0xEE,0xB4,0xE0,0x9B,0x92,0x41,
10063         0xCF,0x31,0xA8,0x8F,0x3C,0x27,0xEF,0x7B,
10064         0xC2,0xE3,0x84,0xA3,0x9E,0x83,0xE8,0xD8,
10065         0xC0,0x71,0xDC,0xC0,0xFD,0xFF,0xC7,0x06,
10066         0xEF,0x70,0x83,0x3B,0xE8,0xF8,0x62,0x70,
10067         0x5C,0x18,0xB8,0xE7,0x02,0x0F,0xC3,0x37,
10068         0x1D,0x8F,0x08,0x33,0xFE,0xD7,0x3F,0x23,
10069         0x04,0xC4,0x5F,0x8C,0xD8,0x80,0xC1,0x78,
10070         0x6B,0xF3,0xF5,0x0D,0x37,0x60,0x5F,0x1D,
10071         0x7C,0xC1,0xF0,0x09,0xCC,0xE8,0x2F,0x30,
10072         0x4F,0x62,0x3E,0x36,0x90,0x0B,0x1C,0x1D,
10073         0x30,0x38,0x00,0x3D,0x60,0xF8,0x87,0x8B,
10074         0x77,0x39,0x30,0x5C,0x05,0x7D,0x5C,0xF0,
10075         0xB1,0xC7,0x8A,0xEE,0x72,0xE8,0x9B,0x9C,
10076         0x61,0xE2,0x18,0xE2,0x0D,0x8C,0xDD,0x25,
10077         0xC8,0x61,0x0E,0xEA,0x5D,0xC2,0x73,0xE0,
10078         0x67,0x0B,0x9F,0xE0,0x7C,0xF3,0x09,0x71,
10079         0xAA,0x8F,0x56,0xEF,0x01,0x3E,0x7A,0xBC,
10080         0x77,0xF9,0xEC,0xC4,0x2E,0x02,0x3E,0x72,
10081         0x19,0xC7,0xD3,0xF4,0x15,0xD0,0x43,0x36,
10082         0xD8,0xAB,0x86,0x4F,0x60,0x3E,0xBA,0xE1,
10083         0x8E,0x51,0x9E,0x89,0xA7,0xEF,0x3B,0x08,
10084         0x3B,0x92,0x1C,0x75,0xA8,0x6B,0x7A,0x44,
10085         0xF9,0xFF,0x9F,0xD0,0x81,0xF8,0xD6,0x06,
10086         0xCE,0x68,0xF7,0x0F,0xF4,0x36,0x3D,0x32,
10087         0xCC,0xD1,0x00,0xD6,0x25,0x04,0x5C,0x77,
10088         0x0C,0x5F,0x42,0x80,0x4F,0xD0,0x4B,0x04,
10089         0xFA,0x9A,0xE1,0xD1,0x3D,0x02,0x60,0xAE,
10090         0x18,0xEC,0x58,0xE0,0xC3,0x86,0xAF,0x01,
10091         0xEC,0x5E,0xE0,0x30,0xF7,0x08,0x50,0x81,
10092         0x7A,0x78,0xF0,0xD5,0xDE,0x23,0x40,0x71,
10093         0xB2,0xF4,0xA1,0xC1,0x03,0xB5,0xAA,0x33,
10094         0x26,0x94,0x23,0x26,0x3F,0x9B,0xF9,0x26,
10095         0x81,0xB9,0x5D,0xFA,0x26,0x01,0x37,0xCF,
10096         0x2C,0x50,0x49,0x20,0xF4,0xFF,0xBF,0x49,
10097         0xC0,0x85,0xE9,0xF2,0x32,0x43,0xE7,0x7F,
10098         0xE0,0xBE,0xD5,0x79,0x84,0x3E,0x44,0x30,
10099         0x94,0xF7,0x3C,0x9F,0xC2,0xF8,0x19,0xC2,
10100         0x07,0x4C,0x76,0xA6,0xE0,0x67,0x4D,0xDC,
10101         0x1D,0xC0,0x28,0x6F,0x9E,0x9E,0x00,0x3B,
10102         0x7F,0x1A,0xF9,0xDD,0xE0,0x5D,0xC0,0xD3,
10103         0xF7,0xBD,0x88,0x9F,0x28,0xC0,0x17,0xEC,
10104         0x4E,0x07,0x05,0xFA,0x84,0x3C,0x22,0xA3,
10105         0xFA,0x88,0xC0,0x2F,0x49,0x60,0x3C,0x92,
10106         0xF8,0x40,0x01,0x84,0xEE,0x05,0xA8,0xD3,
10107         0x07,0x47,0x3D,0xE3,0x17,0x54,0x63,0xBE,
10108         0x5B,0x3D,0xC2,0x79,0x72,0x98,0xCB,0x01,
10109         0x8B,0x73,0x4D,0x02,0xD5,0x71,0x97,0x8F,
10110         0x0E,0xEE,0xB5,0x15,0xFB,0xFF,0x27,0x38,
10111         0xB8,0x77,0x96,0x77,0x3E,0x43,0x79,0x90,
10112         0xE0,0xBB,0xB6,0x82,0xE3,0xAA,0x06,0xE3,
10113         0xD8,0xC2,0x2F,0x79,0x80,0x9D,0x61,0x71,
10114         0xC1,0x7F,0x0F,0x03,0x51,0x89,0x30,0x28,
10115         0x02,0xCB,0xBB,0xB7,0x52,0xF8,0x43,0x06,
10116         0xE3,0x4D,0x81,0x4F,0x1A,0x3B,0x6A,0xE0,
10117         0xFB,0xFF,0x1F,0x35,0xD8,0x86,0x8A,0xBB,
10118         0x29,0x82,0x75,0xAA,0x98,0x21,0xF0,0x60,
10119         0x0F,0x00,0x9F,0xAF,0x7C,0x06,0x50,0x14,
10120         0x18,0xD4,0xA1,0x1D,0xCE,0x6D,0x18,0x70,
10121         0x30,0x62,0xDC,0xA5,0x10,0xEE,0x94,0xDF,
10122         0x51,0x62,0x3F,0x97,0xB3,0xE9,0xE2,0xAE,
10123         0xE6,0x3E,0x9D,0xB0,0x0B,0x32,0x8C,0xB3,
10124         0xC0,0x23,0xC0,0xAB,0x39,0xBF,0x20,0x3F,
10125         0x17,0xBF,0x10,0x3C,0x26,0x85,0x78,0x53,
10126         0x7A,0x25,0x36,0xC6,0x93,0x71,0x73,0xB7,
10127         0x62,0x72,0xDE,0x79,0x41,0x36,0xC6,0xD1,
10128         0x44,0x8C,0x72,0x6E,0x0F,0x03,0x91,0x5F,
10129         0x90,0x7D,0x3F,0x79,0x21,0x88,0x18,0xCD,
10130         0x10,0x41,0x9F,0x97,0x8D,0x15,0x28,0xDE,
10131         0x0B,0x32,0x13,0xF8,0x56,0xD0,0xC1,0xC5,
10132         0x17,0x64,0xEC,0xFF,0xFF,0x82,0x0C,0x30,
10133         0xE2,0x64,0x04,0xF8,0x3C,0x71,0xE0,0xCE,
10134         0x35,0x30,0xFE,0xFF,0x97,0x6A,0xD8,0x27,
10135         0x1B,0xC0,0xD9,0xD0,0x7D,0xB2,0x01,0xF7,
10136         0x68,0xE1,0x1D,0x4D,0x10,0x27,0x1B,0x0A,
10137         0xE4,0xE0,0xEB,0xA2,0x70,0x3C,0xF4,0x49,
10138         0x84,0x1E,0x9D,0x7C,0x94,0xC4,0x9D,0x19,
10139         0x3C,0x91,0x77,0x16,0x8F,0xE2,0x65,0xD0,
10140         0xF7,0x82,0x13,0x79,0x7D,0xB0,0x9C,0x63,
10141         0x24,0xA8,0x46,0xE2,0xE3,0x03,0xFC,0xEB,
10142         0x8B,0x8F,0x91,0xF0,0xF9,0xFC,0xC3,0xF2,
10143         0x60,0x0C,0xF9,0xFF,0x7F,0x8A,0xC4,0x80,
10144         0x3C,0xBB,0x3C,0x86,0xF0,0x0B,0x24,0xDC,
10145         0xD3,0xCC,0x01,0x60,0x64,0x5D,0x1E,0xD1,
10146         0x67,0x47,0x8E,0x11,0xD7,0x17,0x45,0x5F,
10147         0x81,0x7D,0x10,0x38,0x9F,0xE7,0x44,0xB0,
10148         0x8E,0x9A,0x1F,0x6D,0xF8,0xF8,0x39,0xF8,
10149         0x5B,0xC1,0x03,0xA5,0x8F,0x45,0x21,0x1E,
10150         0x91,0xF8,0x39,0x11,0x5C,0x26,0xCE,0x89,
10151         0x40,0xE2,0xD0,0x0B,0xE3,0xB4,0x80,0x1B,
10152         0x88,0xCF,0x94,0xD8,0x29,0x9F,0x08,0x3B,
10153         0x97,0x60,0x46,0x07,0xAE,0xCB,0xBD,0x47,
10154         0x07,0xFE,0x93,0x00,0x1E,0xEB,0xFF,0xFF,
10155         0x78,0x07,0xBE,0x93,0xBA,0xEF,0x26,0xBE,
10156         0xC8,0xF8,0x50,0xF4,0x7C,0x07,0xF8,0x0F,
10157         0x77,0xB8,0x43,0xC5,0x39,0xDF,0x01,0xD2,
10158         0xFE,0xFF,0xE7,0x3B,0x60,0x79,0xB6,0x7E,
10159         0xBE,0x03,0xBB,0xC8,0xF3,0x1D,0x40,0xAC,
10160         0xFF,0xFF,0xF9,0x0E,0xB0,0x73,0x46,0xC3,
10161         0x9D,0xEF,0xC0,0x76,0xB4,0x01,0xCC,0x4D,
10162         0xE3,0xD1,0x06,0xDC,0xC3,0x85,0x3D,0x0C,
10163         0xAE,0xD0,0xA6,0x4F,0x8D,0x46,0xAD,0x1A,
10164         0x94,0xA9,0x51,0xE6,0xFF,0xDF,0xA0,0x56,
10165         0x9F,0x4A,0x8D,0x19,0xCB,0x0E,0xA5,0x80,
10166         0x8F,0x0A,0x8D,0xCD,0xF2,0x28,0x04,0x62,
10167         0x31,0xAF,0x06,0x81,0x38,0x2C,0x08,0x8D,
10168         0xF4,0xCA,0x11,0x88,0x25,0x3F,0xFB,0x05,
10169         0x62,0xB9,0x6F,0x06,0x81,0x38,0xE0,0x1B,
10170         0x4C,0xE0,0xE4,0x61,0x25,0x70,0xF2,0x6E,
10171         0x10,0x88,0x23,0x83,0x50,0xA1,0x3A,0x40,
10172         0x58,0x4C,0x10,0x1A,0xCA,0x07,0x08,0x93,
10173         0xFE,0x48,0x10,0x20,0x31,0x02,0xC2,0xC2,
10174         0xBD,0xBF,0x04,0x62,0x69,0xEF,0x09,0x81,
10175         0x58,0x88,0x15,0x10,0x16,0x17,0x84,0x86,
10176         0xD3,0x02,0xC2,0x24,0x99,0x01,0x61,0x81,
10177         0x40,0xA8,0x7C,0x35,0x20,0x4C,0xA4,0x1B,
10178         0x40,0xBA,0x7A,0x81,0x38,0x88,0x1E,0x10,
10179         0x26,0xC3,0x0F,0x08,0x0B,0x0D,0x42,0xA3,
10180         0x3D,0x30,0x04,0x48,0x0C,0x81,0xB0,0xF8,
10181         0x8E,0x40,0x98,0xF8,0x57,0x91,0x40,0x9C,
10182         0xDF,0x12,0xC4,0x4D,0x69,0x88,0x35,0x01,
10183         0x31,0x0D,0x9E,0x80,0x98,0x22,0x10,0x01,
10184         0x39,0xF6,0xD3,0x43,0x40,0xD6,0x60,0x0A,
10185         0x88,0x45,0x07,0x11,0x90,0x85,0xA8,0x02,
10186         0x62,0x79,0x5D,0x01,0xB1,0xF0,0x20,0x02,
10187         0x72,0xE6,0x97,0x9F,0x80,0xAC,0xE0,0xA5,
10188         0xF3,0x10,0xC0,0xDE,0x10,0x81,0x48,0x72,
10189         0x10,0x01,0x39,0xB0,0x2F,0x20,0x16,0x1F,
10190         0x44,0x40,0xCE,0xFA,0x28,0x14,0x90,0x83,
10191         0x83,0x68,0x10,0xE4,0x6B,0x26,0x20,0xA7,
10192         0x07,0x11,0x10,0xF9,0x04,0x05,0x21,0x6A,
10193         0xBD,0x81,0x30,0x3D,0x8F,0x42,0x0D,0x85,
10194         0x80,0x50,0xE5,0xEA,0xCE,0x31,0x2C,0x07,
10195         0x08,0xCD,0x05,0x22,0x30,0xAB,0x70,0x07,
10196         0xC4,0x54,0x81,0x08,0xC8,0x09,0x80,0xC8,
10197         0xFF,0x9F,0x60,0x2A,0x10,0x9A,0x12,0x8C,
10198         0xEA,0x92,0x07,0xC4,0x12,0x80,0xD0,0x54,
10199         0x20,0x34,0x25,0x88,0x00,0xAD,0xCA,0x1E,
10200         0x10,0x53,0x0A,0x42,0x95,0x83,0xD0,0x74,
10201         0x20,0x54,0xB6,0xBE,0xC3,0x02,0x05,0x11,
10202         0x90,0xA3,0x83,0x50,0xE1,0xFE,0x40,0x98,
10203         0xDE,0x97,0x86,0x00,0x9D,0x0E,0x44,0x40,
10204         0x4E,0x0C,0x42,0x15,0x7C,0x32,0x82,0x10,
10205         0xB1,0x20,0x54,0xC1,0x27,0x23,0x28,0xD1,
10206         0xF2,0xB2,0x13,0x90,0xF5,0x81,0x50,0xBD,
10207         0x20,0x02,0x73,0x36,0x20,0x9A,0x17,0x84,
10208         0xE6,0x07,0xA3,0x5A,0x8D,0x02,0x31,0xFD,
10209         0x20,0x34,0x0F,0x88,0xC0,0xAC,0xE0,0xF9,
10210         0x71,0xC0,0x0C,0x84,0xAA,0x04,0x11,0x98,
10211         0x73,0x01,0xD1,0xAC,0x20,0x34,0x3B,0x18,
10212         0xD5,0xFE,0x0F,0xD1,0x00,0x08,0x08,0xCD,
10213         0x07,0xA2,0xC3,0x00,0x79,0x96,0x09,0xC8,
10214         0x1A,0x41,0xA8,0x66,0x10,0x81,0x39,0x27,
10215         0x10,0xCD,0x0E,0x42,0x95,0xFD,0x4D,0x82,
10216         0x91,0x8C,0x0F,0xD0,0x40,0x24,0x37,0x08,
10217         0xD5,0xF1,0x0C,0x0A,0x46,0x74,0x83,0x08,
10218         0xC8,0x59,0x40,0x68,0x36,0x30,0x9A,0x4C,
10219         0xED,0x91,0x80,0xBA,0x05,0x61,0xE9,0x41,
10220         0x68,0x3A,0xBB,0x83,0xA7,0x20,0x54,0x81,
10221         0x5E,0x30,0xA6,0x19,0x44,0x87,0x05,0x02,
10222         0x42,0x73,0x81,0x51,0x1D,0xAF,0x96,0x40,
10223         0x44,0x1B,0x08,0xD5,0x0A,0xA2,0x81,0x93,
10224         0x1F,0x53,0x10,0x92,0x14,0x84,0xFC,0xFF,
10225         0x07,0xAA,0xC7,0x9C,0x40,0xAC,0xFA,0x5B,
10226         0x25,0x50,0x27,0x01,0xA1,0xC9,0x40,0x74,
10227         0x7C,0x20,0x0F,0xB8,0x83,0x64,0x20,0x54,
10228         0x29,0x88,0xC0,0xAC,0xF4,0x63,0xA4,0x23,
10229         0x05,0x51,0x7D,0xBC,0xA0,0x20,0x34,0xD1,
10230         0x3B,0x2C,0x08,0x7B,0xB8,0x69,0xA8,0xE4,
10231         0x59,0xA5,0xA1,0x12,0x10,0x9A,0x0D,0x44,
10232         0xC7,0x04,0xF2,0xAA,0x79,0x4C,0x60,0x20,
10233         0x54,0x2F,0x08,0xCD,0x01,0x42,0x13,0x83,
10234         0x08,0xD4,0xA9,0xBF,0x37,0x1A,0x2A,0xF9,
10235         0x5B,0x09,0xC4,0xCA,0x5E,0x69,0x02,0xB1,
10236         0xDE,0xA7,0x4E,0x20,0xE6,0x1D,0x98,0xA9,
10237         0x05,0xA1,0xEA,0x41,0x04,0xE6,0xB4,0x40,
10238         0x54,0x81,0x78,0x10,0xA6,0x08,0x44,0x60,
10239         0x4E,0x02,0x44,0xD3,0x81,0xD0,0xEC,0x60,
10240         0x54,0xE7,0xA3,0x4D,0x40,0xD6,0x0E,0x42,
10241         0xB3,0x80,0x08,0xCC,0x59,0x1E,0x69,0x02,
10242         0xB1,0x92,0x2F,0x9D,0x0E,0x24,0x04,0x84,
10243         0x26,0xD3,0x7F,0x68,0xA1,0x05,0x80,0x99,
10244         0x84,0x04,0x20,0x4C,0x16,0x88,0x0E,0x27,
10245         0xD6,0x08,0x22,0x40,0xC7,0x01,0xA3,0xD1,
10246         0x40,0x68,0x5C,0x40,0x9A,0x1D,0x90,0x2A,
10247         0x6D,0x00,0xC6,0x54,0x83,0xD0,0x24,0x20,
10248         0x02,0x74,0x2C,0x10,0x01,0x5A,0x74,0x04,
10249         0x30,0x16,0x01,0x84,0x46,0x05,0xA1,0xC9,
10250         0x2A,0x80,0xB2,0x9C,0x20,0x1A,0x20,0xC9,
10251         0x30,0x60,0x0A,0x42,0x33,0x81,0xD0,0x8C,
10252         0x20,0x54,0x7C,0x07,0x10,0x16,0x04,0x84,
10253         0x86,0x03,0xD1,0x00,0xFE,0xFF,0x8F,0x0C,
10254         0x02,0xD1,0x00,0x9C,0x23,0xC4,0x61,0x85,
10255         0x82,0xD0,0xF4,0x20,0x34,0x6C,0x09,0x50,
10256         0x16,0x1D,0x44,0xC7,0x23,0x92,0x02,0x8C,
10257         0x05,0x02,0xA1,0x31,0x41,0x68,0x6C,0x10,
10258         0x1A,0x29,0x06,0x28,0x13,0x54,0xE3,0x50,
10259         0x44,0x7B,0x80,0x31,0x99,0x20,0x54,0x36,
10260         0x88,0xC0,0x1C,0x14,0x88,0x86,0x07,0xA1,
10261         0x62,0x82,0x00,0x52,0x10,0x01,0x12,0x20,
10262         0x1A,0x1E,0x84,0x8A,0x29,0x32,0x74,0x0A,
10263         0x42,0x55,0x24,0x39,0x9A,0x50,0x10,0x1D,
10264         0x4D,0x08,0x08,0xCD,0x07,0x46,0x75,0x35,
10265         0x39,0x6E,0x50,0x10,0xAA,0x1D,0x84,0x06,
10266         0x05,0xA1,0x39,0xA2,0x80,0xB2,0xEC,0x20,
10267         0x02,0xB2,0x9E,0x2A,0x87,0x0A,0x0A,0x22,
10268         0x30,0xA7,0x02,0xA2,0x49,0x41,0xA8,0x8E,
10269         0x2C,0x47,0x0A,0x9A,0x06,0x84,0x25,0x06,
10270         0xA1,0xC9,0xDA,0x80,0xB0,0x0C,0x75,0x0E,
10271         0x24,0x14,0x84,0xE6,0x04,0xA1,0x4A,0xF2,
10272         0x0C,0x8F,0x82,0xE8,0x38,0x42,0x80,0x68,
10273         0x7A,0x10,0xAA,0xA6,0xCF,0x00,0x28,0x88,
10274         0x06,0x40,0x40,0x68,0x4E,0x30,0xAA,0xA8,
10275         0xD1,0xD1,0x84,0x82,0x50,0xDD,0x2F,0x4E,
10276         0x81,0xF8,0xFF,0x0F,
10277     })  // END MBUF
10279 } //end DefinitionBlock