grammar.asl revision 1.1.1.1 1 /*
2 * Some or all of this work - Copyright (c) 2006 - 2010, 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 */
28
29 //
30 //
31 // Grammar.asl - Minimally excercises most ASL constructs
32 //
33 // NOTE -- use: iasl -f -of grammar.asl to compile
34 //
35 // This 1) Ignores errors (checks compiler error handling)
36 // 2) Disables constant folding
37 //
38 //
39
40 /*******************************************************************************
41 Compilation should look like this:
42
43 C:\acpica\tests\misc>iasl -f -of grammar.asl
44
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
49
50 grammar.asl 187: Name (_NPK, Package (8)
51 Warning 1098 - ^ Unknown reserved name (_NPK)
52
53 grammar.asl 510: NAME (ESC1, "abcdefg\x00hijklmn")
54 Warning 1042 - ^ Invalid Hex/Octal Escape - Non-ASCII or NULL
55
56 grammar.asl 511: NAME (ESC2, "abcdefg\000hijklmn")
57 Warning 1042 - ^ Invalid Hex/Octal Escape - Non-ASCII or NULL
58
59 grammar.asl 601: Method (RCIV, 1)
60 Warning 1087 - ^ Not all control paths return a value (RCIV)
61
62 grammar.asl 608: RCIV (Subtract (Arg0, 1))
63 Remark 5073 - ^ Recursive method call (RCIV)
64
65 grammar.asl 937: Method (_ERR, 2)
66 Warning 1077 - ^ Reserved method has too few arguments (_ERR requires 3)
67
68 grammar.asl 1377: Store (0x1234567887654321, QWD2)
69 Warning 1032 - ^ 64-bit integer in 32-bit table, truncating
70
71 grammar.asl 1379: if (LNotEqual (Local0, 0x1234567887654321))
72 Warning 1032 - 64-bit integer in 32-bit table, truncating ^
73
74 grammar.asl 1459: SizeOf (BUFO)
75 Warning 1105 - ^ Result is not used, operator has no effect
76
77 grammar.asl 1485: Acquire (MTX2, 1)
78 Warning 1104 - ^ Possible operator timeout is ignored
79
80 grammar.asl 1633: Add (Local0, Local1)
81 Warning 1105 - ^ Result is not used, operator has no effect
82
83 grammar.asl 1804: Method (COND)
84 Warning 1087 - ^ Not all control paths return a value (COND)
85
86 grammar.asl 6010: Name (_HID, "*PNP0A06")
87 Error 4001 - ^ String must be entirely alphanumeric (*PNP0A06)
88
89 grammar.asl 6461: Name (_CRS, Buffer(26) {"\_SB_.PCI2._CRS..........."})
90 Warning 1038 - Invalid or unknown escape sequence ^
91
92 grammar.asl 6800: And (Local0, 1, Local0) // Local0 &= 1
93 Error 4050 - ^ Method local variable is not initialized (Local0)
94
95 grammar.asl 6886: Name (_HID, "*PNP0C0A") // Control Method Battey ID
96 Error 4001 - ^ String must be entirely alphanumeric (*PNP0C0A)
97
98 ASL Input: grammar.asl - 10254 lines, 322162 bytes, 4810 keywords
99 AML Output: grammar.aml - 43392 bytes, 669 named objects, 4141 executable opcodes
100
101 Compilation complete. 3 Errors, 12 Warnings, 1 Remarks, 1101 Optimizations
102
103 ***************************************************************************************************/
104
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 )
113 {
114
115 External (\ABCD, UnknownObj)
116
117
118 /* Device with _STA and _INI */
119
120 Device (A1)
121 {
122 Method (_STA)
123 {
124 Return (0x0F)
125 }
126
127 Method (_INI)
128 {
129 Return
130 }
131 }
132
133 /* Device with no _STA, has _INI */
134
135 Device (A2)
136 {
137 Method (_INI)
138 {
139 Return
140 }
141 }
142
143 /* Device with _STA, no _INI */
144
145 Device (A3)
146 {
147 Method (_STA)
148 {
149 Return (0x0F)
150 }
151 }
152
153 /* Device with _STA and _INI, but not present */
154
155 Device (A4)
156 {
157 Method (_STA)
158 {
159 Return (Zero)
160 }
161
162 Method (_INI)
163 {
164 Return
165 }
166 }
167
168
169 /* Resource descriptors */
170
171 Device (IRES)
172 {
173 Name (PRT0, ResourceTemplate ()
174 {
175 IRQ (Edge, ActiveHigh, Exclusive) {3,4,5,6,7,9,10,11,14,15}
176
177 StartDependentFn (1,1)
178 {
179 IRQNoFlags () {0,1,2}
180 }
181 EndDependentFn ()
182 })
183
184 Method (_CRS, 0, NotSerialized)
185 {
186 Store ("_CRS:", Debug)
187 Store (PRT0, Debug)
188 Return (PRT0)
189 }
190
191 Method (_SRS, 1, Serialized)
192 {
193 Store ("_SRS:", Debug)
194 Store (Arg0, Debug)
195 Return (Zero)
196 }
197 }
198
199 Name (_NPK, Package ()
200 {
201 0x1111,
202 0x2222,
203 0x3333,
204 0x4444
205 })
206
207
208 Device (RES)
209 {
210 Name (_PRT, Package (0x04)
211 {
212 Package (0x04)
213 {
214 0x0002FFFF,
215 Zero,
216 Zero,
217 Zero
218 },
219
220 Package (0x04)
221 {
222 0x0002FFFF,
223 One,
224 Zero,
225 Zero
226 },
227
228 Package (0x04)
229 {
230 0x000AFFFF,
231 Zero,
232 Zero,
233 Zero
234 },
235
236 Package (0x04)
237 {
238 0x000BFFFF,
239 Zero,
240 Zero,
241 Zero
242 }
243 })
244
245 Method (_CRS, 0, NotSerialized)
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 }
403
404 Method (_PRS, 0, NotSerialized)
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 }
437
438 Method (_SRS, 1, Serialized)
439 {
440 Return (Zero)
441 }
442 }
443
444
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 })
469
470 /* Examine this table header (DSDT) */
471
472 /*
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 }
486
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 }
499
500 */
501 Name (SIZE, 0)
502
503 /* Custom operation region */
504
505 OperationRegion(MYOP,0x80,0xFD60,0x6)
506 Field(MYOP,ByteAcc,NoLock,Preserve)
507 {
508 MFLD,8
509 }
510
511 Method (TCOP)
512 {
513 Name (_STR, Unicode ("test"))
514 Store (4, MFLD)
515 Store (MFLD, Local0)
516 }
517
518 Name (ERRS, 0x0)
519
520 /* Warning should be issued for premature string termination */
521
522 NAME (ESC1, "abcdefg\x00hijklmn")
523 NAME (ESC2, "abcdefg\000hijklmn")
524 Name (ESC3, "abc\a\bdef\f\n\r\t\v\x03ffff\432")
525
526
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)
532
533 })
534 Name(CRSB,ResourceTemplate()
535 {
536 DWORDMemory(ResourceProducer,PosDecode,MinFixed,MaxFixed,NonCacheable,ReadWrite,0x00000000,0xD8000000,0xDBFFFFFF,0x00000000,0x04000000)
537
538 })
539
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 })
548
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 }
559
560
561 //
562 // Unnamed scope
563 //
564 Scope (\)
565 {
566 Name(Bxxx,0xFFFFFFFF)
567 }
568
569 Name (LANS, 0x0)
570
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 }
591
592
593 /* Can a method define another method? */
594
595 /**********************************
596 Method (TASK, 2, SERIALIZED)
597 {
598 Sleep (100)
599
600 Method (TAS2)
601 {
602 Sleep (100)
603 }
604
605 TAS2()
606 Return
607
608 }
609 ************************************/
610
611 /* A recursive method */
612
613 Method (RCIV, 1)
614 {
615 Store (Arg0, Debug)
616 If (Lequal (Arg0, 0))
617 {
618 Return ()
619 }
620 RCIV (Subtract (Arg0, 1))
621 }
622
623 Method (RTOP)
624 {
625 RCIV (100)
626 }
627
628
629 Scope(\_PR)
630 {
631 Processor(CPU0,0x0,0xFFFFFFFF,0x0) {}
632 }
633
634 Name(B1TP,0xFFFFFFFF)
635
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)
650
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 })
667
668 Method(SMWE, 4)
669 {
670 return(ONES)
671 }
672
673 Method(SMRE, 4)
674 {
675 return(ONES)
676 }
677
678 /*
679 Method(RDBT,0,Serialized){
680 If(LNot(SMWE(0x09,0x15,1,1))){
681 Store(0x18,Local2)
682 }
683 }
684 */
685 Scope(_SB)
686 {
687
688 Name (SBUF, Buffer (128) {})
689
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)
698
699 Method (_INI)
700 {
701 CreateField (\_SB_.SBUF, 148, 96, FLDV)
702 }
703
704
705 Device(PCI0)
706 {
707 Name(_HID,EISAID("PNP0A03"))
708 Name(_ADR,0x0)
709
710 Method(_CRS)
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
725
726 CreateWordField(PRT0, BUS0._MIN, BMIN) //Minimum bus number suported under this bridge.
727
728 Store(3, BMIN)
729 Return(PRT0)
730
731 } // _CRS
732
733 Method(_SRS)
734 {
735 Return ()
736 }
737
738 Device(EIO)
739 {
740 OperationRegion(FJIO,SystemIO,0xFD60,0x6)
741 Field(FJIO,ByteAcc,NoLock,Preserve)
742 {
743 GIDX,8,
744
745 GDTA,8,
746
747 PIDX,8,
748
749 PDTA,8,
750
751 SIDX,8,
752
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,
766
767 Offset(0xA),
768 B1P,1,
769
770 B2P,1,
771
772 B1C,1,
773
774 B2C,1,
775
776 B1ER,1,
777
778 B2ER,1,
779
780 Offset(0xB),
781 B1CP,8,
782
783 B2CP,8,
784
785 BCP,8,
786
787 B1VH,8,
788
789 B1VL,8,
790
791 B2VH,8,
792
793 B2VL,8,
794
795 B1TM,8,
796
797 B2TM,8,
798
799 B1CH,8,
800
801 B1CL,8,
802
803 B2CH,8,
804
805 B2CL,8
806 }
807 }
808 }
809 }
810
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 }
842
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)
855
856 Method(_INI)
857 {
858 Store(B1P, B1PS)
859 Store(B1CP,B1RS)
860 Store(B1C, B1CS)
861 }
862
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 }
872
873 Method(_BST) {
874
875 _INI()
876
877 Store(Zero,Local0)
878
879 if (LAnd(B1P,LNot(B1C))){
880 Or(Local0,1,Local0)
881 }
882
883 if (LAnd(B1P,B1C)) {
884 Or(Local0,2,Local0)
885 }
886
887 if (LLessEqual(B1CP,1)) {
888 Or(Local0,4,Local0)
889 }
890
891 Store(MKWD(B1CL,B1CH),Local1)
892
893 Store(Divide(Add(Multiply(B1CP,B1LF),99),100),Local2)
894
895 Store(MKWD(B1VL,B1VH),Local3)
896
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))
902
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 }
910
911 }
912
913 Device (DEV1)
914 {
915 }
916
917 Scope(\_TZ)
918 {
919 ThermalZone(TZ1)
920 {
921 Name(_PSL,Package()
922 {
923 \_PR.CPU0
924 })
925 }
926 }
927
928 Method (TZ2, 0, SERIALIZED)
929 {
930 Name(_PSL,Package()
931 {
932 \_PR.CPU0
933 })
934
935 Return (_PSL)
936 }
937
938 ThermalZone (THM1)
939 {
940 }
941
942 Method (NOTI)
943 {
944 Notify (\DEV1, 0)
945 Notify (\THM1, 0)
946 Notify (\_PR.CPU0, 0)
947 }
948
949 Method (_ERR, 2)
950 {
951 Increment (ERRS)
952 Store ("Run-time exception:", Debug)
953 Store (Arg0, Debug)
954 Store (Arg1, Debug)
955
956 Return (0) // Map error to AE_OK
957 }
958
959 Method (DIV0)
960 {
961 Store (1, Local0)
962 Store (0, Local1)
963 Divide (Local0, Local1, Local3)
964
965 Store ("DIV0 - noabort", Debug)
966 }
967
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 }
982
983 Notify (DEV1, Arg0)
984 Increment (ERRS)
985 }
986
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 }
1012
1013 Method (MAIN)
1014 {
1015
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()
1029
1030 //
1031 // iPCO tests added
1032 //
1033 Store (\IFEL.TEST(), Local0)
1034 if (LGreater (Local0, 0))
1035 {
1036 ERR_ (1)
1037 Return(Local0)
1038 }
1039
1040 Store (\NOSV.TEST(), Local0)
1041 if (LGreater (Local0, 0))
1042 {
1043 ERR_ (1)
1044 Return(Local0)
1045 }
1046
1047 Store (\IDXF.TEST(), Local0)
1048 if (LGreater (Local0, 0))
1049 {
1050 ERR_ (1)
1051 Return(Local0)
1052 }
1053
1054 Store (\_SB_.NSTL.TEST(), Local0)
1055 if (LGreater (Local0, 0))
1056 {
1057 ERR_ (1)
1058 Return(Local0)
1059 }
1060
1061 Store (\RTBF.TEST(), Local0)
1062 if (LGreater (Local0, 0))
1063 {
1064 ERR_ (1)
1065 Return(Local0)
1066 }
1067
1068 Store (\_SB_.RTLV.TEST(), Local0)
1069 if (LGreater (Local0, 0))
1070 {
1071 ERR_ (1)
1072 Return(Local0)
1073 }
1074
1075 Store (\_SB_.RETP.TEST(), Local0)
1076 if (LGreater (Local0, 0))
1077 {
1078 ERR_ (1)
1079 Return(Local0)
1080 }
1081
1082 Store (\WHLR.TEST(), Local0)
1083 if (LGreater (Local0, 0))
1084 {
1085 ERR_ (1)
1086 Return(Local0)
1087 }
1088
1089 Store (\ANDO.TEST(), Local0)
1090 if (LGreater (Local0, 0))
1091 {
1092 ERR_ (1)
1093 Return(Local0)
1094 }
1095
1096 Store (\BRKP.TEST(), Local0)
1097 if (LGreater (Local0, 0))
1098 {
1099 ERR_ (1)
1100 Return(Local0)
1101 }
1102
1103 Store (\ADSU.TEST(), Local0)
1104 if (LGreater (Local0, 0))
1105 {
1106 ERR_ (1)
1107 Return(Local0)
1108 }
1109
1110 Store (\INDC.TEST(), Local0)
1111 if (LGreater (Local0, 0))
1112 {
1113 ERR_ (1)
1114 Return(Local0)
1115 }
1116
1117 Store (\LOPS.TEST(), Local0)
1118 if (LGreater (Local0, 0))
1119 {
1120 ERR_ (1)
1121 Return(Local0)
1122 }
1123
1124 Store (\FDSO.TEST(), Local0)
1125 if (LGreater (Local0, 0))
1126 {
1127 ERR_ (1)
1128 Return(Local0)
1129 }
1130
1131 Store (\MLDV.TEST(), Local0)
1132 if (LGreater (Local0, 0))
1133 {
1134 ERR_ (1)
1135 Return(Local0)
1136 }
1137
1138 Store (\NBIT.TEST(), Local0)
1139 if (LGreater (Local0, 0))
1140 {
1141 ERR_ (1)
1142 Return(Local0)
1143 }
1144
1145 Store (\SHFT.TEST(), Local0)
1146 if (LGreater (Local0, 0))
1147 {
1148 ERR_ (1)
1149 Return(Local0)
1150 }
1151
1152 Store (\XORD.TEST(), Local0)
1153 if (LGreater (Local0, 0))
1154 {
1155 ERR_ (1)
1156 Return(Local0)
1157 }
1158
1159 Store (\CRBF.TEST(), Local0)
1160 if (LGreater (Local0, 0))
1161 {
1162 ERR_ (1)
1163 Return(Local0)
1164 }
1165
1166 Store (\IDX4.TEST(), Local0)
1167 if (LGreater (Local0, 0))
1168 {
1169 ERR_ (1)
1170 Return(Local0)
1171 }
1172
1173 Store (\EVNT.TEST(), Local0)
1174 if (LGreater (Local0, 0))
1175 {
1176 ERR_ (1)
1177 Return(Local0)
1178 }
1179
1180 Store (\SZLV.TEST(), Local0)
1181 if (LGreater (Local0, 0))
1182 {
1183 ERR_ (1)
1184 Return(Local0)
1185 }
1186
1187 Store (\_SB_.BYTF.TEST(), Local0)
1188 if (LGreater (Local0, 0))
1189 {
1190 ERR_ (1)
1191 Return(Local0)
1192 }
1193
1194 Store (\DWDF.TEST(), Local0)
1195 if (LGreater (Local0, 0))
1196 {
1197 ERR_ (1)
1198 Return(Local0)
1199 }
1200
1201 Store (\DVAX.TEST(), Local0)
1202 if (LGreater (Local0, 0))
1203 {
1204 ERR_ (1)
1205 Return(Local0)
1206 }
1207
1208 Store (\IDX6.TEST(), Local0)
1209 if (LGreater (Local0, 0))
1210 {
1211 ERR_ (1)
1212 Return(Local0)
1213 }
1214
1215 Store (\IDX5.TEST(), Local0)
1216 if (LGreater (Local0, 0))
1217 {
1218 ERR_ (1)
1219 Return(Local0)
1220 }
1221
1222 Store (\_SB_.IDX0.TEST(), Local0)
1223 if (LGreater (Local0, 0))
1224 {
1225 ERR_ (1)
1226 Return(Local0)
1227 }
1228
1229 Store (\_SB_.IDX3.TEST(), Local0)
1230 if (LGreater (Local0, 0))
1231 {
1232 ERR_ (1)
1233 Return(Local0)
1234 }
1235
1236 Store (\IDX7.TEST(), Local0)
1237 if (LGreater (Local0, 0))
1238 {
1239 ERR_ (1)
1240 Return(Local0)
1241 }
1242
1243 Store (\MTCH.TEST(), Local0)
1244 if (LGreater (Local0, 0))
1245 {
1246 ERR_ (1)
1247 Return(Local0)
1248 }
1249
1250 Store (\WHLB.TEST(), Local0)
1251 if (LGreater (Local0, 0))
1252 {
1253 ERR_ (1)
1254 Return(Local0)
1255 }
1256
1257 Store (\_SB_.IDX2.TEST(), Local0)
1258 if (LGreater (Local0, 0))
1259 {
1260 ERR_ (1)
1261 Return(Local0)
1262 }
1263
1264 Store (\SIZO.TEST(), Local0)
1265 if (LGreater (Local0, 0))
1266 {
1267 ERR_ (1)
1268 Return(Local0)
1269 }
1270
1271 Store (\_SB_.SMIS.TEST(), Local0)
1272 if (LGreater (Local0, 0))
1273 {
1274 ERR_ (1)
1275 Return(Local0)
1276 }
1277
1278 if (LGreater (ERRS, 0))
1279 {
1280 Store ("****** There were errors during the execution of the test ******", Debug)
1281 }
1282
1283 //
1284 // Last Test
1285 //
1286
1287 Return(0) // Success
1288 }
1289
1290
1291 Method (OBJ1, 1, SERIALIZED)
1292 {
1293
1294 Store (3, Local0)
1295 Name(BUFR, Buffer (Local0) {})
1296 Name(BUF1, Buffer (4) {1,2,3,4})
1297 Name(BUF2, Buffer (4) {})
1298
1299 Store (BUF1, BUF2)
1300 Mutex (MTX1, 4)
1301
1302 Alias (MTX1, MTX2)
1303 }
1304
1305
1306 Mutex (MTXT, 0)
1307 Mutex (MTXX, 0)
1308
1309 /*
1310 * Field Creation
1311 */
1312
1313 Method (FLDS)
1314 {
1315 Store ("++++++++ Creating BufferFields", Debug)
1316 Name (BUF2, Buffer (128) {})
1317
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)
1325
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 }
1344
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 }
1355
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 }
1366
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 }
1377
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 }
1388
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 }
1400
1401
1402 /* Field execution */
1403
1404 Method (FLDX)
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 }
1419
1420
1421 Method (MTX_, )
1422 {
1423 /* Test "Force release" of mutex on method exit */
1424
1425 Acquire (MTXT, 0xFFFF)
1426 Acquire (MTXX, 0xFFFF)
1427
1428 Store ("++++++++ Acquiring Mutex MTX2", Debug)
1429 Acquire (_GL_, 0xFFFF)
1430
1431
1432 Store ("++++++++ Releasing Mutex MTX2", Debug)
1433 Release (_GL_)
1434 }
1435
1436
1437 Method (OBJ2, 1)
1438 {
1439 Store ("++++++++ Creating Buffer BUFO", Debug)
1440 Name (BUFO, Buffer (32) {})
1441
1442 Store ("++++++++ Creating OpRegion OPR2", Debug)
1443 OperationRegion (OPR2, SystemMemory, Arg0, 256)
1444
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 }
1452
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 }
1462
1463 Store ("++++++++ Creating IndexField", Debug)
1464 IndexField (IDX2, DAT2, ByteAcc, NoLock, Preserve)
1465 {
1466 FET2, 4,
1467 FET3, 3
1468 }
1469
1470 Store ("++++++++ SizeOf (BUFO)", Debug)
1471 SizeOf (BUFO)
1472
1473 Store ("++++++++ Store (SizeOf (BUFO), Local0)", Debug)
1474 Store (SizeOf (BUFO), Local0)
1475
1476 Store ("++++++++ Concatenate (\"abd\", \"def\", Local0)", Debug)
1477 Concatenate ("abd", "def", Local0)
1478 Store (Local0, Debug)
1479
1480 Store ("++++++++ Concatenate (\"abd\", 0x7B, Local0)", Debug)
1481 Concatenate ("abd", 0x7B, Local0)
1482 Store (Local0, Debug)
1483
1484 Store ("++++++++ Creating Event EVT2", Debug)
1485 Event (EVT2)
1486
1487 Store ("++++++++ Creating Mutex MTX2", Debug)
1488 Mutex (MTX2, 0)
1489
1490 Store ("++++++++ Creating Alias MTXA to MTX2", Debug)
1491 Alias (MTX2, MTXA)
1492
1493 Store ("++++++++ Acquiring Mutex MTX2", Debug)
1494 Acquire (MTX2, 0xFFFF)
1495
1496 Store ("++++++++ Acquiring Mutex MTX2 (2nd acquire)", Debug)
1497 Acquire (MTX2, 1)
1498
1499 Store ("++++++++ Releasing Mutex MTX2", Debug)
1500 Release (MTX2)
1501
1502 // Type 1 opcodes
1503
1504 Store ("++++++++ Signalling Event EVT2", Debug)
1505 Signal (EVT2)
1506
1507 Store ("++++++++ Resetting Event EVT2", Debug)
1508 Reset (EVT2)
1509
1510 Store ("++++++++ Signalling Event EVT2", Debug)
1511 Signal (EVT2)
1512
1513 Store ("++++++++ Waiting Event EVT2", Debug)
1514 Wait (EVT2, 0xFFFF)
1515
1516 Store ("++++++++ Sleep", Debug)
1517 Sleep (100)
1518
1519 Store ("++++++++ Stall", Debug)
1520 Stall (254)
1521
1522 Store ("++++++++ NoOperation", Debug)
1523 Noop
1524
1525 // Type 2 Opcodes
1526
1527 Store ("++++++++ Return from Method OBJ2", Debug)
1528 return (4)
1529 }
1530
1531
1532 Method (NUM1, 0)
1533 {
1534 /* ADD */
1535
1536 Store ("++++++++ Add (0x12345678, 0x11111111, Local0)", Debug)
1537 Add (0x12345678, 0x11111111, Local0)
1538
1539 Store ("++++++++ Store (Add (0x12345678, 0x11111111), Local1)", Debug)
1540 Store (Add (0x12345678, 0x11111111), Local1)
1541
1542 Store ("++++++++ Checking result from ADD", Debug)
1543 if (LNotEqual (Local0, Local1))
1544 {
1545 ERR_ (0)
1546 }
1547
1548
1549 /* SUBTRACT */
1550
1551 Store ("++++++++ Subtract (0x87654321, 0x11111111, Local4)", Debug)
1552 Subtract (0x87654321, 0x11111111, Local4)
1553
1554 Store ("++++++++ Store (Subtract (0x87654321, 0x11111111), Local5)", Debug)
1555 Store (Subtract (0x87654321, 0x11111111), Local5)
1556
1557 Store ("++++++++ Checking result from SUBTRACT", Debug)
1558 if (LNotEqual (Local4, Local5))
1559 {
1560 ERR_ (0)
1561 }
1562
1563
1564 /* MULTIPLY */
1565
1566 Store ("++++++++ Multiply (33, 10, Local6)", Debug)
1567 Multiply (33, 10, Local6)
1568
1569 Store ("++++++++ Store (Multiply (33, 10), Local7)", Debug)
1570 Store (Multiply (33, 10), Local7)
1571
1572
1573 Store ("++++++++ Checking result from MULTIPLY", Debug)
1574 if (LNotEqual (Local6, Local7))
1575 {
1576 ERR_ (0)
1577 }
1578
1579
1580 /* DIVIDE */
1581
1582 Store ("++++++++ Divide (100, 9, Local1, Local2)", Debug)
1583 Divide (100, 9, Local1, Local2)
1584
1585 Store ("++++++++ Store (Divide (100, 9), Local3)", Debug)
1586 Store (Divide (100, 9), Local3)
1587
1588 Store ("++++++++ Checking (quotient) result from DIVIDE", Debug)
1589 if (LNotEqual (Local2, Local3))
1590 {
1591 ERR_ (0)
1592 }
1593
1594
1595 /* INCREMENT */
1596
1597 Store ("++++++++ Increment (Local0)", Debug)
1598 Store (1, Local0)
1599 Store (2, Local1)
1600 Increment (Local0)
1601
1602 Store ("++++++++ Checking result from INCREMENT", Debug)
1603 if (LNotEqual (Local0, Local1))
1604 {
1605 ERR_ (0)
1606 }
1607
1608
1609 /* DECREMENT */
1610
1611 Store ("++++++++ Decrement (Local0)", Debug)
1612 Store (2, Local0)
1613 Store (1, Local1)
1614 Decrement (Local0)
1615
1616 Store ("++++++++ Checking result from DECREMENT", Debug)
1617 if (LNotEqual (Local0, Local1))
1618 {
1619 ERR_ (0)
1620 }
1621
1622
1623 /* TOBCD */
1624 /* FROMBCD */
1625
1626 Store ("++++++++ ToBCD (0x1234, Local5)", Debug)
1627 ToBCD (0x1234, Local5)
1628
1629 Store ("++++++++ FromBCD (Local5, Local6)", Debug)
1630 FromBCD (Local5, Local6)
1631
1632 Store ("++++++++ Return (Local6)", Debug)
1633 Return (Local6)
1634 }
1635
1636
1637 Method (CHEK)
1638 {
1639
1640 Store (3, Local0)
1641 Store (3, Debug)
1642 Store (Local0, Debug)
1643 Store (7, Local1)
1644
1645 Add (Local0, Local1)
1646 if (LNotEqual (Local0, 3))
1647 {
1648 ERR_ (2)
1649 }
1650 if (LNotEqual (Local1, 7))
1651 {
1652 ERR_ (2)
1653 }
1654
1655
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 }
1666
1667
1668 Method (RET1)
1669 {
1670 Store (3, Local0)
1671 Return (Local0)
1672 }
1673
1674 Method (RET2)
1675 {
1676 Return (RET1())
1677 }
1678
1679 Method (RETZ)
1680 {
1681 RET2 ()
1682 }
1683
1684
1685 Method (BITZ)
1686 {
1687 Store ("++++++++ FindSetLeftBit (0x00100100, Local0)", Debug)
1688 FindSetLeftBit (0x00100100, Local0)
1689 if (LNotEqual (Local0, 21))
1690 {
1691 ERR_ (1)
1692 }
1693
1694 Store ("++++++++ FindSetRightBit (0x00100100, Local1)", Debug)
1695 FindSetRightBit (0x00100100, Local1)
1696 if (LNotEqual (Local1, 9))
1697 {
1698 ERR_ (1)
1699 }
1700
1701 Store ("++++++++ And (0xF0F0F0F0, 0x11111111, Local2)", Debug)
1702 And (0xF0F0F0F0, 0x11111111, Local2)
1703 if (LNotEqual (Local2, 0x10101010))
1704 {
1705 ERR_ (1)
1706 }
1707
1708 Store ("++++++++ NAnd (0xF0F0F0F0, 0x11111111, Local3)", Debug)
1709 NAnd (0xF0F0F0F0, 0x11111111, Local3)
1710 if (LNotEqual (Local3, 0xEFEFEFEF))
1711 {
1712 ERR_ (1)
1713 }
1714
1715 Store ("++++++++ Or (0x11111111, 0x22222222, Local4)", Debug)
1716 Or (0x11111111, 0x22222222, Local4)
1717 if (LNotEqual (Local4, 0x33333333))
1718 {
1719 ERR_ (1)
1720 }
1721
1722 Store ("++++++++ NOr (0x11111111, 0x22222222, Local5)", Debug)
1723 NOr (0x11111111, 0x22222222, Local5)
1724 if (LNotEqual (Local5, 0xCCCCCCCC))
1725 {
1726 ERR_ (1)
1727 }
1728
1729 Store ("++++++++ XOr (0x11113333, 0x22222222, Local6)", Debug)
1730 XOr (0x11113333, 0x22222222, Local6)
1731 if (LNotEqual (Local6, 0x33331111))
1732 {
1733 ERR_ (1)
1734 }
1735
1736 Store ("++++++++ ShiftLeft (0x11112222, 2, Local7)", Debug)
1737 ShiftLeft (0x11112222, 2, Local7)
1738 if (LNotEqual (Local7, 0x44448888))
1739 {
1740 ERR_ (1)
1741 }
1742
1743 Store ("++++++++ ShiftRight (Local7, 2, Local7)", Debug)
1744 ShiftRight (Local7, 2, Local7)
1745 if (LNotEqual (Local7, 0x11112222))
1746 {
1747 ERR_ (1)
1748 }
1749
1750
1751 Store ("++++++++ Not (Local0, Local1)", Debug)
1752 Store (0x22224444, Local0)
1753 Not (Local0, Local1)
1754 if (LNotEqual (Local0, 0x22224444))
1755 {
1756 ERR_ (2)
1757 }
1758
1759 if (LNotEqual (Local1, 0xDDDDBBBB))
1760 {
1761 ERR_ (1)
1762 }
1763
1764 Return (Local7)
1765 }
1766
1767
1768 Method (LOGS)
1769 {
1770
1771 Store ("++++++++ Store (LAnd (0xFFFFFFFF, 0x11111111), Local0)", Debug)
1772 Store (LAnd (0xFFFFFFFF, 0x11111111), Local0)
1773
1774 Store ("++++++++ Store (LEqual (0xFFFFFFFF, 0x11111111), Local)", Debug)
1775 Store (LEqual (0xFFFFFFFF, 0x11111111), Local1)
1776
1777 Store ("++++++++ Store (LGreater (0xFFFFFFFF, 0x11111111), Local2)", Debug)
1778 Store (LGreater (0xFFFFFFFF, 0x11111111), Local2)
1779
1780 Store ("++++++++ Store (LGreaterEqual (0xFFFFFFFF, 0x11111111), Local3)", Debug)
1781 Store (LGreaterEqual (0xFFFFFFFF, 0x11111111), Local3)
1782
1783 Store ("++++++++ Store (LLess (0xFFFFFFFF, 0x11111111), Local4)", Debug)
1784 Store (LLess (0xFFFFFFFF, 0x11111111), Local4)
1785
1786 Store ("++++++++ Store (LLessEqual (0xFFFFFFFF, 0x11111111), Local5)", Debug)
1787 Store (LLessEqual (0xFFFFFFFF, 0x11111111), Local5)
1788
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 }
1796
1797 if (LNotEqual (Local7, 0x0))
1798 {
1799 ERR_ (1)
1800 }
1801
1802
1803 Store ("++++++++ Store (LNotEqual (0xFFFFFFFF, 0x11111111), Local7)", Debug)
1804 Store (LNotEqual (0xFFFFFFFF, 0x11111111), Local7)
1805
1806 Store ("++++++++ Lor (0x0, 0x1)", Debug)
1807 if (Lor (0x0, 0x1))
1808 {
1809 Store ("+_+_+_+_+ Lor (0x0, 0x1) returned TRUE", Debug)
1810 }
1811
1812 return (Local7)
1813 }
1814
1815
1816 Method (COND)
1817 {
1818 Store ("++++++++ Store (0x4, Local0)", Debug)
1819 Store (0x4, Local0)
1820
1821 Store ("++++++++ While (Local0)", Debug)
1822 While (Local0)
1823 {
1824 Store ("++++++++ Decrement (Local0)", Debug)
1825 Decrement (Local0)
1826 }
1827
1828
1829 Store ("++++++++ Store (0x3, Local6)", Debug)
1830 Store (0x3, Local6)
1831
1832 Store ("++++++++ While (Subtract (Local6, 1))", Debug)
1833 While (Subtract (Local6, 1))
1834 {
1835 Store ("++++++++ Decrement (Local6)", Debug)
1836 Decrement (Local6)
1837 }
1838
1839
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 }
1848
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 }
1862
1863 else
1864 {
1865 Store ("++++++++ Exiting from nested IF/ELSE statements", Debug)
1866 }
1867 }
1868 }
1869 }
1870 }
1871
1872
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 }
1881
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 }
1895
1896 else
1897 {
1898 Store ("++++++++ Returning from nested IF/ELSE statements", Debug)
1899 Return (Local6)
1900 }
1901 }
1902 }
1903 }
1904 }
1905
1906 }
1907
1908
1909 Method (REFS)
1910 {
1911 Name (BBUF, Buffer() {0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7})
1912
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 })
1924
1925 /* Parser thinks this is a method invocation!! */
1926
1927 Store (RefOf (MAIN), Local5)
1928
1929 // For this to work, ABCD must NOT exist.
1930
1931 Store (CondRefOf (ABCD, Local0), Local1)
1932 if (LNotEqual (Local1, 0))
1933 {
1934 ERR_ (2)
1935 }
1936
1937 Store (CondRefOf (BBUF, Local0), Local1)
1938 if (LNotEqual (Local1, Ones))
1939 {
1940 ERR_ (2)
1941 }
1942
1943 Store (DeRefOf (Index (BBUF, 3)), Local6)
1944 if (LNotEqual (Local6, 0xB3))
1945 {
1946 ERR_ (2)
1947 }
1948
1949 Store (DeRefOf (Index (DeRefOf (Index (NEST, 1)), 3)), Local0)
1950 if (LNotEqual (Local0, 0x14))
1951 {
1952 ERR_ (2)
1953 }
1954
1955
1956 Store (0x11223344, Local0)
1957 Store (RefOf (Local0), Local1)
1958
1959 Store (DerefOf (Local1), Local2)
1960 If (LNotEqual (Local2, 0x11223344))
1961 {
1962 ERR_ (2)
1963 }
1964
1965
1966 /* Parser thinks this is a method invocation!! */
1967
1968 // RefOf (MAIN)
1969
1970
1971 // RefOf (R___)
1972 // RefOf (BBUF)
1973
1974 // Store (RefOf (Local0), Local1)
1975
1976 // CondRefOf (BBUF, Local2)
1977 // CondRefOf (R___, Local3)
1978
1979 // Store (DerefOf (Local1), Local4)
1980
1981 // Return (Local4)
1982 }
1983
1984
1985 Method (INDX, 0)
1986 {
1987 Name(STAT,Package(4){})
1988 Store(0x44443333,Index(STAT,0))
1989 }
1990
1991 //=================================================================
1992 //=================================================================
1993 //===================== iPCO TESTS ================================
1994 //=================================================================
1995 //=================================================================
1996 //
1997 //
1998 // test IfElseOp.asl
1999 //
2000 // test for IfOp and ElseOp, including validation of object stack cleanup
2001 //
2002 Device (IFEL)
2003 {
2004 Name (DWRD, 1)
2005 Name (RSLT, 0)
2006
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
2017
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
2027
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
2040
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
2053
2054 // IFRT control method executes IfOp branch with nested Return with
2055 // no Else branch
2056 Method (IFRT)
2057
2058 {
2059 If (LEqual (DWRD, 1))
2060 {
2061 Return (0)
2062 }
2063 Return (DWRD)
2064 } // IFRT
2065
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
2079
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
2092
2093 Method (TEST)
2094 {
2095 Store ("++++++++ IfElseOp Test", Debug)
2096
2097 // IfOp with NO return value
2098 IFNR()
2099 If (LNotEqual (RSLT, 0))
2100 {
2101 Return (RSLT)
2102 }
2103
2104 // IfOp with NO return value
2105 NINR()
2106 If (LNotEqual (RSLT, 0))
2107 {
2108 Return (RSLT)
2109 }
2110
2111 // IfOp with NO return value
2112 IENR()
2113 If (LNotEqual (RSLT, 0))
2114 {
2115 Return (RSLT)
2116 }
2117
2118 // ElseOp with NO return value
2119 ELNR()
2120 If (LNotEqual (RSLT, 0))
2121 {
2122 Return (RSLT)
2123 }
2124
2125 // IfOp with return value
2126 Store (IFRT, RSLT)
2127 If (LNotEqual (RSLT, 0))
2128 {
2129 Return (RSLT)
2130 }
2131
2132 // IfOp with return value
2133 Store (IERT, RSLT)
2134 If (LNotEqual (RSLT, 0))
2135 {
2136 Return (RSLT)
2137 }
2138
2139 // ElseOp with return value
2140 Store (ELRT, RSLT)
2141 If (LNotEqual (RSLT, 0))
2142 {
2143 Return (RSLT)
2144 }
2145
2146 Return (0)
2147 } // TEST
2148 } // IFEL
2149
2150 //
2151 // test NoSave.asl
2152 //
2153 //
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.
2158 //
2159 Device (NOSV)
2160 {
2161 Method (TEST)
2162 {
2163 Store ("++++++++ NoSave Test", Debug)
2164
2165 Name (WRD, 0x1234)
2166
2167 //
2168 // Begin test of nested operators without saving results
2169 //
2170
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 }
2180
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 }
2190
2191
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 }
2201
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 }
2211
2212
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 }
2222
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 }
2232
2233
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 }
2243
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 }
2253
2254
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 }
2264
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 }
2274
2275
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 }
2285
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 }
2295
2296
2297 //
2298 // Begin test of logical operators with no destination operands
2299 //
2300
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 }
2310
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 }
2320
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 }
2330
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 }
2340
2341
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 }
2351
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 }
2361
2362
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 }
2372
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 }
2382
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 }
2392
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 }
2402
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 }
2412
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 }
2422
2423
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 }
2433
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 }
2443
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 }
2453
2454
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 }
2464
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 }
2474
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 }
2484
2485
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 }
2495
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 }
2505
2506
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 }
2516
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 }
2526
2527
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 }
2537
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 }
2547
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 }
2557
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 }
2567
2568 Return (0)
2569 } // TEST
2570 } // NOSV
2571
2572
2573 //
2574 // test IndxFld.asl
2575 //
2576 // IndexFld test
2577 // This is just a subset of the many RegionOp/Index Field test cases.
2578 // Tests index field element AccessAs macro.
2579 //
2580 Device (IDXF)
2581 { // Test device name
2582
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 }
2603
2604 Method (TEST)
2605 {
2606 Store ("++++++++ IndxFld Test", Debug)
2607
2608 Store (IFE0, Local0)
2609 Store (IFE1, Local1)
2610 Store (IFE2, Local2)
2611
2612 Return (0)
2613 } // TEST
2614 } // IDXF
2615
2616 //
2617 // test NestdLor.asl
2618 //
2619 Scope (\_SB) // System Bus
2620 { // _SB system bus
2621
2622 Name (ZER0, 0)
2623 Name (ZER1, 0)
2624 Name (ZER2, 0)
2625 Name (ONE0, 1)
2626
2627 Device (NSTL)
2628 {
2629 Method (TEST)
2630 {
2631 Store ("++++++++ NestdLor Test", Debug)
2632
2633 If (Lor (ZER0, Lor (ZER1, Lor (ZER2, ONE0))))
2634 { // Indicate Pass
2635 Store (0x00, Local0)
2636 }
2637
2638 Else
2639 { // Indicate Fail
2640 Store (0x01, Local0)
2641 }
2642
2643 Return (Local0)
2644 } // End Method TEST
2645 } // Device NSTL
2646 } // _SB system bus
2647
2648 //
2649 // test RetBuf.asl
2650 //
2651 // Test ReturnOp(Buffer)
2652 // This is required to support Control Method Batteries on
2653 // Dell Latitude Laptops (e.g., CP1-A)
2654 //
2655 Device (RTBF)
2656 {
2657 Method (SUBR, 1)
2658 {
2659 Return (Arg0)
2660 }
2661
2662 Method (RBUF)
2663 { // RBUF: Return Buffer from local variable
2664 Name (ABUF, Buffer() {"ARBITRARY_BUFFER"})
2665
2666 // store local buffer ABUF into Local0
2667 Store (ABUF, Local0)
2668
2669 // save Local0 object type value into Local1
2670 Store (ObjectType (Local0), Local1)
2671
2672 // validate Local0 is a Buffer
2673 If (LNotEqual (Local1, 3)) // Buffer type is 3
2674 {
2675 Return (1) // failure
2676 }
2677
2678 // store value returned by control method SUBR into Local0
2679 Store (SUBR (ABUF), Local0)
2680
2681 // save Local0 object type value into Local1
2682 Store (ObjectType (Local0), Local1)
2683
2684 // validate Local0 is a Buffer
2685 If (LNotEqual (Local1, 3)) // Buffer type is 3
2686 {
2687 Return (2) // failure
2688 }
2689
2690 // allocate buffer using Local1 as buffer size (run-time evaluation)
2691 Store (5, Local1)
2692 Name (BUFR, Buffer(Local1) {})
2693
2694 // store value returned by control method SUBR into Local0
2695 Store (SUBR (BUFR), Local0)
2696
2697 // save Local0 object type value into Local1
2698 Store (ObjectType (Local0), Local1)
2699
2700 // validate Local0 is a Buffer
2701 If (LNotEqual (Local1, 3)) // Buffer type is 3
2702 {
2703 Return (3) // failure
2704 }
2705
2706 // store BUFR Buffer into Local0
2707 Store (BUFR, Local0)
2708
2709 // save Local0 object type value into Local1
2710 Store (ObjectType (Local0), Local1)
2711
2712 // validate Local0 is a Buffer
2713 If (LNotEqual (Local1, 3)) // Buffer type is 3
2714 {
2715 Return (4) // failure
2716 }
2717
2718
2719 // return Local0 Buffer
2720 Return (Local0)
2721 } // RBUF
2722
2723 Method (TEST)
2724 {
2725 Store ("++++++++ RetBuf Test", Debug)
2726
2727 // store RBUF Buffer return value into Local0
2728 Store (RBUF, Local0)
2729
2730 // save Local0 object type value into Local1
2731 Store (ObjectType (Local0), Local1)
2732
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
2744
2745 //
2746 // test RetLVal.asl
2747 //
2748 // Test ReturnOp(Lvalue)
2749 // This is required to support _PSR on IBM ThinkPad 560D and
2750 // _DCK on Toshiba Tecra 8000.
2751 //
2752
2753 Device (GPE2)
2754 {
2755 Method (_L03)
2756 {
2757 Store ("Method GPE2._L03 invoked", Debug)
2758 Return ()
2759 }
2760
2761 Method (_E05)
2762 {
2763 Store ("Method GPE2._E05 invoked", Debug)
2764 Return ()
2765 }
2766 }
2767
2768 Device (PRW2)
2769 {
2770 Name (_PRW, Package(2) {Package(2){\GPE2, 0x05}, 3})
2771 }
2772
2773
2774 Scope (\_GPE)
2775 {
2776 Name (ACST, 0xFF)
2777
2778 Method (_L08)
2779 {
2780 Store ("Method _GPE._L08 invoked", Debug)
2781 Return ()
2782 }
2783
2784 Method (_E09)
2785 {
2786 Store ("Method _GPE._E09 invoked", Debug)
2787 Return ()
2788 }
2789
2790 Method (_E11)
2791 {
2792 Store ("Method _GPE._E11 invoked", Debug)
2793 Notify (\PRW1, 2)
2794 }
2795
2796 Method (_L22)
2797 {
2798 Store ("Method _GPE._L22 invoked", Debug)
2799 Return ()
2800 }
2801
2802 Method (_L33)
2803 {
2804 Store ("Method _GPE._L33 invoked", Debug)
2805 Return ()
2806 }
2807
2808 Method (_E64)
2809 {
2810 Store ("Method _GPE._E64 invoked", Debug)
2811 Return ()
2812 }
2813
2814 } // _GPE
2815
2816 Device (PRW1)
2817 {
2818 Name (_PRW, Package(2) {0x11, 3})
2819 }
2820
2821 Device (PWRB)
2822 {
2823 Name (_HID, EISAID("PNP0C0C"))
2824 Name (_PRW, Package(2) {0x33, 3})
2825 }
2826
2827
2828 Scope (\_SB) // System Bus
2829 { // _SB system bus
2830
2831 Device (ACAD)
2832 { // ACAD: AC adapter device
2833 Name (_HID, "ACPI0003") // AC adapter device
2834
2835 Name (_PCL, Package () {\_SB})
2836
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
2853
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
2868
2869 Method (_STA)
2870 {
2871 Return (0x0F)
2872 }
2873
2874 Method (_INI)
2875 {
2876 Store (ACIN, \_GPE.ACST)
2877 }
2878 } // ACAD: AC adapter device
2879
2880 // test implicit return from control method
2881 Method (DIS_, 1)
2882 {
2883 Store (Arg0, Local0)
2884 }
2885
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)
2895
2896 If (Local0)
2897 {
2898 DIS_ (0x23)
2899 Return (1)
2900 }
2901
2902 Return (0)
2903 } // dock
2904 Else
2905 { // undock
2906 Store (Arg0, Local0)
2907
2908 If (Local0)
2909 {
2910 DIS_ (0x23)
2911 Return (1)
2912 }
2913
2914 Return (0)
2915 } // undock
2916 } // _DCK control method
2917
2918 Method (TEST)
2919 {
2920 Store ("++++++++ RetLVal Test", Debug)
2921
2922 // store _PSR return value into Local0
2923 Store (\_SB_.ACAD._PSR, Local0)
2924
2925 // save Local0 object type value into Local1
2926 Store (ObjectType (Local0), Local1)
2927
2928 // validate Local0 is a Number
2929 If (LNotEqual (Local1, 1)) // Number/Integer type is 1
2930 {
2931 Return (1) // failure
2932 }
2933
2934 // test implicit return inside nested if with explicit return of Lvalue
2935 Store (_DCK (1), Local2)
2936
2937 // save Local2 object type value into Local3
2938 Store (ObjectType (Local2), Local3)
2939
2940 // validate Local2 is a Number
2941 If (LNotEqual (Local3, 1)) // Number/Integer type is 1
2942 {
2943 Return (2) // failure
2944 }
2945
2946 If (LNotEqual (Local2, 1))
2947 {
2948 Return (3) // failure
2949 }
2950
2951 Return (0) // success
2952 } // TEST
2953 } // RTLV
2954 } // _SB system bus
2955
2956 //
2957 // test RetPkg.asl
2958 //
2959 // Test ReturnOp(Package)
2960 // This is required to support _PRT on Dell Optiplex Workstations (e.g. GX1)
2961 //
2962
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 }
2985
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)
2991
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 })
3007
3008 Device (PX40)
3009 { // Map f0 space, Start PX40
3010 Name (_ADR,0x00070000) // Address+function.
3011 }
3012 } // PCI0: Root PCI Bus
3013
3014 Device (RETP)
3015 {
3016 Method (RPKG)
3017 { // RPKG: Return Package from local variable
3018
3019 // store _PRT package into Local0
3020 Store (\_SB_.PCI1._PRT, Local0)
3021
3022 // return Local0 Package
3023 Return (Local0)
3024 } // RPKG
3025
3026 Method (TEST)
3027 {
3028 Store ("++++++++ RetPkg Test", Debug)
3029
3030 // store RPKG package return value into Local0
3031 Store (RPKG, Local0)
3032
3033 // save Local0 object type value into Local1
3034 Store (ObjectType (Local0), Local1)
3035
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_
3044
3045 //
3046 // test WhileRet.asl
3047 //
3048 // WhileRet.asl tests a ReturnOp nested in a IfOp nested in a WhileOp.
3049 //
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 }
3061
3062 Increment (LCNT)
3063 }
3064
3065 Return (LCNT)
3066 } // WIR: control method that returns inside of IfOp inside of WhileOp
3067
3068 Method (TEST)
3069 {
3070 Store ("++++++++ WhileRet Test", Debug)
3071
3072 Store (WIR, Local0)
3073
3074 Return (Local0)
3075 } // TEST
3076 } // WHLR
3077
3078 //
3079 // test AndOrOp.asl
3080 //
3081 //This code tests the bitwise AndOp and OrOp Operator terms
3082 //
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.
3093 //
3094 //
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
3105 //
3106 Device (ANDO)
3107 {
3108 OperationRegion (TMEM, SystemMemory, 0xC4, 0x02)
3109 Field (TMEM, ByteAcc, NoLock, Preserve)
3110 {
3111 , 3,
3112 TOUD, 13
3113 }
3114
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)
3123
3124
3125 //And with Byte Data
3126 Name (BYT1, 0xff)
3127 Name (BYT2, 0xff)
3128 Name (BRSL, 0x00)
3129
3130 //And with Word Data
3131 Name (WRD1, 0xffff)
3132 Name (WRD2, 0xffff)
3133 Name (WRSL, 0x0000)
3134
3135 //And with DWord Data
3136 Name (DWD1, 0xffffffff)
3137 Name (DWD2, 0xffffffff)
3138 Name (DRSL, 0x00000000)
3139
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)}
3146
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 }
3153
3154 //Check with 1 And 1 Dword
3155 And(DWD1, DWD2, DRSL)
3156 if(LNotEqual(DRSL,0xffffffff))
3157 {
3158 Return (1) // failure
3159 }
3160
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 }
3170
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 }
3180
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 }
3190
3191
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 }
3201
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 }
3211
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 }
3221
3222 Store (0x1FFF, TOUD)
3223 Store (TOUD, Local0)
3224 if(LNotEqual(Local0,0x1FFF))
3225 {
3226 Return (1) // failure
3227 }
3228
3229 //TBD- Do We need to check for system memory data also for each test case ??
3230
3231 Return(0)
3232
3233 }//ANDP
3234
3235 Method (OROP)
3236 {
3237
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 }
3247
3248
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 }
3258
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 }
3268
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 }
3278
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 }
3288
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 }
3298
3299
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 }
3309
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 }
3319
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 }
3329
3330 //TBD - Do We need to check for system memory data also for each test case ??
3331
3332 Return(0)
3333
3334 }//OROP
3335
3336 Method(TEST)
3337 {
3338 Store ("++++++++ AndOrOp Test", Debug)
3339
3340 Name(RSLT,1)
3341 //Call Andop method
3342 Store(ANDP,RSLT)
3343 if(LEqual(RSLT,1))
3344 {
3345 Return (RSLT)
3346 }
3347
3348 //Call OrOp Method
3349 Store(OROP,RSLT)
3350 if(LEqual(RSLT,1))
3351 {
3352 Return(RSLT)
3353 }
3354
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)
3367
3368 Return(0)
3369 } //TEST
3370 } //ANDO
3371
3372 //
3373 // test BreakPnt.asl
3374 //
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.
3379 //
3380 Device (BRKP)
3381 {
3382 Name(CNT0,0)
3383
3384 Method (BK1)
3385 {
3386 BreakPoint
3387 Return(0)
3388 }
3389
3390 Method (TEST)
3391 {
3392 Store ("++++++++ BreakPnt Test", Debug)
3393
3394 Store(0,CNT0)
3395
3396 //Check BreakPoint statement
3397 While(LLess(CNT0,10))
3398 {
3399 Increment(CNT0)
3400 }
3401
3402 //Check the BreakPoint statement
3403 If(LEqual(CNT0,10))
3404 {
3405 // BreakPoint
3406 Return(0)
3407 }
3408
3409 //failed
3410 Return(1)
3411 }
3412 }
3413
3414 //
3415 // test AddSubOp.asl
3416 //
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)
3427
3428 Method (TEST)
3429 {
3430 Store ("++++++++ AddSubOp Test", Debug)
3431
3432 Name (DWRD, 0x12345678)
3433 Name (WRD, 0x1234)
3434 Name (BYT, 0x12)
3435
3436 // Test AddOp with DWORD data
3437 Store (0x12345678, DWRD)
3438 Add (DWRD, 7, DWRD)
3439 If (LNotEqual (DWRD, 0x1234567F))
3440 { Return (DWRD) }
3441
3442 // Test AddOp with WORD data
3443 Add (WRD, 5, WRD)
3444 If (LNotEqual (WRD, 0x1239))
3445 { Return (WRD) }
3446
3447 // Test AddOp with BYTE data
3448 Add (BYT, 3, BYT)
3449 If (LNotEqual (BYT, 0x15))
3450 { Return (BYT) }
3451
3452 // Test SubtractOp with DWORD data
3453 Subtract (DWRD, 7, DWRD)
3454 If (LNotEqual (DWRD, 0x12345678))
3455 { Return (DWRD) }
3456
3457 // Test SubtractOp with WORD data
3458 Subtract (WRD, 3, WRD)
3459 If (LNotEqual (WRD, 0x1236))
3460 { Return (WRD) }
3461
3462 // Test SubtractOp with BYTE data
3463 Subtract (BYT, 3, BYT)
3464 If (LNotEqual (BYT, 0x12))
3465 { Return (BYT) }
3466
3467
3468 // test AddOp with DWORD SystemMemory OpRegion
3469 Store (0x01234567, SMDW)
3470 Add (SMDW, 8, SMDW)
3471 If (LNotEqual (SMDW, 0x0123456F))
3472 { Return (SMDW) }
3473
3474 // test SubtractOp with DWORD SystemMemory OpRegion
3475 Subtract (SMDW, 7, SMDW)
3476 If (LNotEqual (SMDW, 0x01234568))
3477 { Return (SMDW) }
3478
3479
3480 // test AddOp with WORD SystemMemory OpRegion
3481 Store (0x0123, SMWD)
3482 Add (SMWD, 6, SMWD)
3483 If (LNotEqual (SMWD, 0x0129))
3484 { Return (SMWD) }
3485
3486 // test SubtractOp with WORD SystemMemory OpRegion
3487 Subtract (SMWD, 5, SMWD)
3488 If (LNotEqual (SMWD, 0x0124))
3489 { Return (SMWD) }
3490
3491
3492 // test AddOp with BYTE SystemMemory OpRegion
3493 Store (0x01, SMBY)
3494 Add (SMBY, 4, SMBY)
3495 If (LNotEqual (SMBY, 0x05))
3496 { Return (SMBY) }
3497
3498 // test SubtractOp with BYTE SystemMemory OpRegion
3499 Subtract (SMBY, 3, SMBY)
3500 If (LNotEqual (SMBY, 0x02))
3501 { Return (SMBY) }
3502
3503 Return (0)
3504 } // TEST
3505 } // ADSU
3506
3507 //
3508 // test IncDecOp.asl
3509 //
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)
3520
3521 Method (TEST)
3522 {
3523 Store ("++++++++ IncDecOp Test", Debug)
3524
3525 Name (DWRD, 0x12345678)
3526 Name (WRD, 0x1234)
3527 Name (BYT, 0x12)
3528
3529 // Test IncrementOp with DWORD data
3530 Store (0x12345678, DWRD)
3531 Increment (DWRD)
3532 If (LNotEqual (DWRD, 0x12345679))
3533 { Return (DWRD) }
3534
3535 // Test IncrementOp with WORD data
3536 Increment (WRD)
3537 If (LNotEqual (WRD, 0x1235))
3538 { Return (WRD) }
3539
3540 // Test IncrementOp with BYTE data
3541 Increment (BYT)
3542 If (LNotEqual (BYT, 0x13))
3543 { Return (BYT) }
3544
3545 // Test DecrementOp with DWORD data
3546 Decrement (DWRD)
3547 If (LNotEqual (DWRD, 0x12345678))
3548 { Return (DWRD) }
3549
3550 // Test DecrementOp with WORD data
3551 Decrement (WRD)
3552 If (LNotEqual (WRD, 0x1234))
3553 { Return (WRD) }
3554
3555 // Test DecrementOp with BYTE data
3556 Decrement (BYT)
3557 If (LNotEqual (BYT, 0x12))
3558 { Return (BYT) }
3559
3560
3561 // test IncrementOp with DWORD SystemMemory OpRegion
3562 Store (0x01234567, SMDW)
3563 Increment (SMDW)
3564 If (LNotEqual (SMDW, 0x01234568))
3565 { Return (SMDW) }
3566
3567 // test DecrementOp with DWORD SystemMemory OpRegion
3568 Decrement (SMDW)
3569 If (LNotEqual (SMDW, 0x01234567))
3570 { Return (SMDW) }
3571
3572
3573 // test IncrementOp with WORD SystemMemory OpRegion
3574 Store (0x0123, SMWD)
3575 Increment (SMWD)
3576 If (LNotEqual (SMWD, 0x0124))
3577 { Return (SMWD) }
3578
3579 // test DecrementOp with WORD SystemMemory OpRegion
3580 Decrement (SMWD)
3581 If (LNotEqual (SMWD, 0x0123))
3582 { Return (SMWD) }
3583
3584
3585 // test IncrementOp with BYTE SystemMemory OpRegion
3586 Store (0x01, SMBY)
3587 Increment (SMBY)
3588 If (LNotEqual (SMBY, 0x02))
3589 { Return (SMBY) }
3590
3591 // test DecrementOp with BYTE SystemMemory OpRegion
3592 Decrement (SMBY)
3593 If (LNotEqual (SMBY, 0x01))
3594 { Return (SMBY) }
3595
3596 Return (0)
3597 } // TEST
3598 } // INDC
3599
3600 //
3601 // test LOps.asl
3602 //
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
3607
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)
3618
3619 //And with Byte Data
3620 Name (BYT1, 0xff)
3621 Name (BYT2, 0xff)
3622 Name (BRSL, 0x00)
3623
3624 //And with Word Data
3625 Name (WRD1, 0xffff)
3626 Name (WRD2, 0xffff)
3627 Name (WRSL, 0x0000)
3628
3629 //And with DWord Data
3630 Name (DWD1, 0xffffffff)
3631 Name (DWD2, 0xffffffff)
3632 Name (DRSL, 0x00000000)
3633
3634 Name(RSLT,1)
3635
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 }
3644
3645 //test with he locals
3646 Store(Arg0,Local0)
3647 Store(Arg1,Local1)
3648
3649 if(LEqual(Local0,Local1))
3650 {
3651 Store(LAnd(Local0,Local1),RSLT)
3652 if(LNotEqual(Ones,RSLT))
3653 {Return(12)}
3654 }
3655
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 }
3662
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 }
3669
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 }
3676
3677 //Test for system memory data for each test case.
3678
3679 Store(0xff,BYT1)
3680 Store(0xff,SMBY)
3681 Store(0x00,BRSL)
3682
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 }
3689
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 }
3699
3700 Store(0x000000,DRSL)
3701 Store (0xffffff,DWD1)
3702 Store(0xffffff,SMDW)
3703
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 }
3710
3711 Return(0)
3712
3713 }//ANDL
3714
3715 //Test the LOr Operator
3716
3717 Method (ORL_,2)
3718 {//ORL_
3719
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 }
3729
3730 //test with he locals
3731 Store(Arg0,Local0)
3732 Store(Arg1,Local1)
3733
3734 if(LEqual(Local0,Local1))
3735 {
3736 Store(LOr(Local0,Local1),RSLT)
3737 if(LNotEqual(Ones,RSLT))
3738 {Return(22)}
3739 }
3740
3741 //Check with 1 LOred with 0 on byte data
3742 Store(0xff,BYT1)
3743 Store(0x00,BYT2)
3744 Store(0x00,BRSL)
3745
3746 if(LNotEqual(BYT1, BYT2))
3747 {
3748 Store(LOr(BYT1, BYT2), BRSL)
3749 if(LNotEqual(Ones,BRSL))
3750 {Return(23)}
3751 }
3752
3753 //Check with 1 LOred with 0 on WORD data
3754 Store(0xffff,WRD1)
3755 Store(0x0000,WRD2)
3756 Store(0x0000,WRSL)
3757
3758 if(LNotEqual(WRD1, WRD2))
3759 {
3760 Store(LOr(WRD1, WRD2), WRSL)
3761 if(LNotEqual(Ones,WRSL))
3762 {Return(24)}
3763 }
3764
3765 //Check with 1 LOred with 0 on DWORD data
3766 Store(0xffffffff,DWD1)
3767 Store(0x00000000,DWD2)
3768 Store(0x00000000,DRSL)
3769
3770 if(LNotEqual(DWD1, DWD2))
3771 {
3772 Store(LOr(DWD1, DWD2), DRSL)
3773 if(LNotEqual(Ones,DRSL))
3774 {Return(25)}
3775 }
3776
3777 Store(0x00,BYT1)
3778 Store(0xff,SMBY)
3779 Store(0x00,BRSL)
3780
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 }
3787
3788 Store (0x0000,WRD1)
3789 Store(0xffff,SMWD)
3790 Store(0x0000,WRSL)
3791
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 }
3798
3799
3800 Store(0x00000000,DWD1)
3801 Store(0xffffffff,SMDW)
3802 Store(0x00000000,DRSL)
3803
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)
3811
3812 }//ORL_
3813
3814 //This method tests LGreater and LNot operator
3815 Method(LSGR,2)
3816 {//LSGR
3817
3818 //Test on arguements passed
3819
3820 //in test data, Arg1 > Arg0
3821 if(LEqual(Ones,LNot(LGreater(Arg1,Arg0))))
3822 {Return(31)}
3823
3824 //test LLessEqual
3825 if(LEqual(Ones,LNot(LGreaterEqual(Arg1,Arg0))))
3826 {Return(32)}
3827
3828 if(LEqual(Ones,LLess(Arg1,Arg0)))
3829 {Return(33)}
3830
3831 //test LLessEqual
3832 if(LEqual(Ones,LLessEqual(Arg1,Arg0)))
3833 {Return(34)}
3834
3835 Store(Arg0,Local0)
3836 Store(Arg1,Local1)
3837
3838 //test with the locals
3839 if(LNot(LGreater(Local1,Local0)))
3840 {Return(35)}
3841
3842 //test on Byte data
3843 Store(0x12,BYT1)
3844 Store(0x21,BYT2)
3845
3846 if(LNot(LGreater(BYT2,BYT1)))
3847 {Return(36)}
3848
3849 if(LNot(LLess(BYT1,BYT2)))
3850 {Return(37)}
3851
3852 //test LGreaterEqual with byte data
3853 if(LNot(LGreaterEqual(BYT2,BYT1)))
3854 {Return(38)}
3855
3856 //test LLessEqual byte data
3857 if(LNot(LLessEqual(BYT1,BYT2)))
3858 {Return(39)}
3859
3860
3861 //test on Word data
3862 Store(0x1212,WRD1)
3863 Store(0x2121,WRD2)
3864
3865 if(LNot(LGreater(WRD2,WRD1)))
3866 {Return(310)}
3867
3868 if(LNot(LLess(WRD1,WRD2)))
3869 {Return(311)}
3870
3871 //Test LGreaterEqual with Word Data
3872 if(LNot(LGreaterEqual(WRD2,WRD1)))
3873 {Return(312)}
3874
3875
3876 //Test LLessEqual with Word Data
3877 if(LNot(LLessEqual(WRD1,WRD2)))
3878 {Return(313)}
3879
3880 //test on DWord data
3881 Store(0x12121212,DWD1)
3882 Store(0x21212121,DWD2)
3883
3884 if(LNot(LGreater(DWD2,DWD1)))
3885 {Return(314)}
3886
3887 if(LNot(LLess(DWD1,DWD2)))
3888 {Return(315)}
3889
3890
3891 //Test LGreaterEqual with Dword
3892 if(LNot(LGreaterEqual(DWD2,DWD1)))
3893 {Return(316)}
3894
3895 //Test LLessEqual DWord
3896 if(LNot(LLessEqual(DWD1,DWD2)))
3897 {Return(317)}
3898
3899 Return(0)
3900 }//LSGR
3901
3902 //The test method
3903 Method(TEST)
3904 {
3905 Store ("++++++++ LOps Test", Debug)
3906
3907 Store(0,RSLT)
3908 //Call LAndOp method
3909 Store(ANDL(2,2),RSLT)
3910 if(LNotEqual(RSLT,0))
3911 {Return(RSLT)}
3912
3913 //Call LOrOp Method
3914 Store(ORL_(5,5),RSLT)
3915 if(LNotEqual(RSLT,0))
3916 {Return(RSLT)}
3917
3918 //Call LSGR Method
3919 Store(LSGR(5,7),RSLT)
3920 if(LNotEqual(RSLT,0))
3921 {Return(RSLT)}
3922
3923 Return(0)
3924 }//TEST
3925 }//LOPS
3926
3927 //
3928 // test FdSetOps.asl
3929 //
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
3940
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.
3949
3950 // If the Control method is success Zero is returned. Otherwise a non-zero
3951 // number is returned.
3952 //
3953 Device (FDSO)
3954 { // FDSO
3955
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)
3964
3965 // Byte Data
3966 Name (BYT1, 1)
3967 Name (BRSL, 0x00)
3968
3969 // Word Data
3970 Name (WRD1, 0x100)
3971 Name (WRSL, 0x0000)
3972
3973 // DWord Data
3974 Name (DWD1, 0x10000)
3975 Name (DRSL, 0x00000000)
3976 Name (RSLT, 1)
3977 Name (CNTR, 1)
3978
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)
3984
3985 FindSetLeftBit (Arg0, BRSL)
3986 If (LNotEqual (BRSL, Arg1))
3987 { Return (0x11) }
3988 If (LNotEqual (Arg0, Local0))
3989 { Return (0x12) }
3990
3991 FindSetLeftBit (Local0, BRSL)
3992 If (LNotEqual (BRSL, Local1))
3993 { Return (0x13) }
3994 If (LNotEqual (Arg0, Local0))
3995 { Return (0x14) }
3996
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) }
4004
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) }
4012
4013 // Shift the bits to check the same
4014 ShiftLeft (BYT1, 1, BYT1)
4015 Increment (CNTR)
4016 } // FindSetLeftBit check loop for byte data
4017
4018
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) }
4026
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) }
4034
4035 ShiftLeft (BYT1, 1, BYT1)
4036 Increment (CNTR)
4037 } // FindSetRightBit check loop for byte data
4038
4039
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) }
4049
4050 // Shift the bits to check the same
4051 ShiftLeft (WRD1, 1, WRD1)
4052 Increment (CNTR)
4053 } // FindSetLeftBit check loop for Word data
4054
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) }
4064
4065 ShiftLeft (WRD1, 1, WRD1)
4066 Increment (CNTR)
4067 } // FindSetRightBit check loop for Word data
4068
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) }
4078
4079 // Shift the bits to check the same
4080 ShiftLeft (DWD1, 1, DWD1)
4081 Increment (CNTR)
4082 } // FindSetLeftBit check loop for Dword
4083
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) }
4092
4093 ShiftLeft (DWD1, 1, DWD1)
4094 Increment (CNTR)
4095 } // FindSetRightBit Check loop for DWORD
4096
4097 Return (0)
4098 } // SHFT
4099
4100 // Test method called from amlexec
4101 Method (TEST)
4102 { // TEST
4103
4104 Store ("++++++++ FdSetOps Test", Debug)
4105
4106 Store (SHFT (0x80, 8), RSLT)
4107 If (LNotEqual (RSLT, 0))
4108 { Return (RSLT) }
4109
4110 Return (0) // pass
4111 } // TEST
4112 } // Device FDSO
4113
4114 //
4115 // test MulDivOp.asl
4116 //
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)
4127
4128 Method (TEST)
4129 {
4130 Store ("++++++++ MulDivOp Test", Debug)
4131
4132 Name (RMDR, 0)
4133 Name (DWRD, 0x12345678)
4134 Name (WRD, 0x1234)
4135 Name (BYT, 0x12)
4136
4137 // Test MultiplyOp with DWORD data
4138 Store (0x12345678, DWRD)
4139 Multiply (DWRD, 3, DWRD)
4140 If (LNotEqual (DWRD, 0x369D0368))
4141 { Return (DWRD) }
4142
4143 // Test MultiplyOp with WORD data
4144 Multiply (WRD, 4, WRD)
4145 If (LNotEqual (WRD, 0x48D0))
4146 { Return (WRD) }
4147
4148 // Test MultiplyOp with BYTE data
4149 Multiply (BYT, 5, BYT)
4150 If (LNotEqual (BYT, 0x5A))
4151 { Return (BYT) }
4152
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) }
4159
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) }
4166
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) }
4173
4174
4175 // test MultiplyOp with DWORD SystemMemory OpRegion
4176 Store (0x01234567, SMDW)
4177 Multiply (SMDW, 2, SMDW)
4178 If (LNotEqual (SMDW, 0x02468ACE))
4179 { Return (SMDW) }
4180
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) }
4187
4188
4189 // test MultiplyOp with WORD SystemMemory OpRegion
4190 Store (0x0123, SMWD)
4191 Multiply (SMWD, 3, SMWD)
4192 If (LNotEqual (SMWD, 0x369))
4193 { Return (SMWD) }
4194
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) }
4201
4202
4203 // test MultiplyOp with BYTE SystemMemory OpRegion
4204 Store (0x01, SMBY)
4205 Multiply (SMBY, 7, SMBY)
4206 If (LNotEqual (SMBY, 0x07))
4207 { Return (SMBY) }
4208
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) }
4215
4216 Return (0)
4217 } // TEST
4218 } // MLDV
4219
4220 //
4221 // test NBitOps.asl
4222 //
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.
4231
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.
4247
4248 //If the Control method is success Zero is returned else a non-zero number is returned
4249
4250 Device (NBIT)
4251 {//NBIT
4252
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)
4261
4262
4263 //And with Byte Data
4264 Name (BYT1, 0xff)
4265 Name (BYT2, 0xff)
4266 Name (BRSL, 0x00)
4267
4268 //And with Word Data
4269 Name (WRD1, 0xffff)
4270 Name (WRD2, 0xffff)
4271 Name (WRSL, 0x0000)
4272
4273 //And with DWord Data
4274 Name (DWD1, 0xffffffff)
4275 Name (DWD2, 0xffffffff)
4276 Name (DRSL, 0x00000000)
4277 Name(RSLT,1)
4278
4279
4280 Name(ARSL,0x00)
4281 Name(LRSL,0x00)
4282
4283 Method(NNDB,2)
4284 {//NNDB
4285
4286 Store(0xffffffff,SMDW)
4287 Store(0xffff,SMWD)
4288 Store(0xff,SMBY)
4289
4290
4291 NAnd(Arg0,Arg1,ARSL)
4292 if(LNotEqual(ARSL,0xfffffffd))
4293 {Return(11)}
4294
4295 Store(Arg0,local0)
4296 Store(Arg1,Local1)
4297
4298 NAnd(Local0,Local1,LRSL)
4299 if(LNotEqual(LRSL,0xfffffffd))
4300 {Return(12)}
4301
4302
4303 //Byte data
4304 NAnd(BYT1,BYT2,BRSL)
4305 if(LNotEqual(BRSL,0xffffff00))
4306 {Return(13)}
4307
4308 //Word Data
4309 NAnd(WRD1,WRD2,WRSL)
4310 if(LNotEqual(WRSL,0xffff0000))
4311 {Return(14)}
4312
4313 //DWord Data
4314 NAnd(DWD1,DWD2,DRSL)
4315 if(LNotEqual(DRSL,0x00000000))
4316 {Return(15)}
4317
4318 //Byte data
4319 NAnd(SMBY,0xff,BRSL)
4320 if(LNotEqual(BRSL,0xffffff00))
4321 {Return(16)}
4322
4323 //Word Data
4324 NAnd(SMWD,0xffff,WRSL)
4325 if(LNotEqual(WRSL,0xffff0000))
4326 {Return(17)}
4327
4328 //DWord Data
4329 NAnd(SMDW,0xffffffff,DRSL)
4330 if(LNotEqual(DRSL,0x00000000))
4331 {Return(18)}
4332
4333 Return(0)
4334
4335 }//NNDB
4336
4337 Method(NNOR,2)
4338 {//NNOR
4339
4340 NOr(Arg0,Arg1,ARSL)
4341 if(LNotEqual(ARSL,0xfffffffd))
4342 {Return(21)}
4343
4344 Store(Arg0,local0)
4345 Store(Arg1,Local1)
4346
4347 NOr(Local0,Local1,LRSL)
4348 if(LNotEqual(LRSL,0xfffffffd))
4349 {Return(22)}
4350
4351
4352 //Byte data
4353 NOr(BYT1,BYT2,BRSL)
4354 if(LNotEqual(BRSL,0xffffff00))
4355 {Return(23)}
4356
4357 //Word Data
4358 NOr(WRD1,WRD2,WRSL)
4359 if(LNotEqual(WRSL,0xffff0000))
4360 {Return(24)}
4361
4362 //DWord Data
4363 NOr(DWD1,DWD2,DRSL)
4364 if(LNotEqual(DRSL,0x00000000))
4365 {Return(25)}
4366
4367 //System Memory Byte data
4368 NOr(SMBY,0xff,BRSL)
4369 if(LNotEqual(BRSL,0xffffff00))
4370 {Return(26)}
4371
4372 //System Memory Word Data
4373 NOr(SMWD,0xffff,WRSL)
4374 if(LNotEqual(WRSL,0xffff0000))
4375 {Return(27)}
4376
4377 //System Memory DWord Data
4378 NOr(SMDW,0xffffffff,DRSL)
4379 if(LNotEqual(DRSL,0x00000000))
4380 {Return(28)}
4381
4382 Return(0)
4383
4384 }//NNOR
4385
4386 Method(NNOT,2)
4387 {//NNOT
4388
4389 Or(Arg0,Arg1,ARSL)
4390 Not(ARSL,ARSL)
4391 if(LNotEqual(ARSL,0xfffffffd))
4392 {Return(31)}
4393
4394 Store(Arg0,local0)
4395 Store(Arg1,Local1)
4396
4397 Or(Local0,Local1,LRSL)
4398 Not(LRSL,LRSL)
4399 if(LNotEqual(LRSL,0xfffffffd))
4400 {Return(32)}
4401
4402
4403 //Byte data
4404 Or(BYT1,BYT2,BRSL)
4405 Not(BRSL,BRSL)
4406 if(LNotEqual(BRSL,0xffffff00))
4407 {Return(33)}
4408
4409 //Word Data
4410 Or(WRD1,WRD2,WRSL)
4411 Not(WRSL,WRSL)
4412 if(LNotEqual(WRSL,0xffff0000))
4413 {Return(34)}
4414
4415 //DWord Data
4416 Or(DWD1,DWD2,DRSL)
4417 Not(DRSL,DRSL)
4418 if(LNotEqual(DRSL,0x00000000))
4419 {Return(35)}
4420
4421 //System Memory Byte data
4422 Or(SMBY,0xff,BRSL)
4423 Not(BRSL,BRSL)
4424 if(LNotEqual(BRSL,0xffffff00))
4425 {Return(36)}
4426
4427 //System Memory Word Data
4428 Or(SMWD,0xffff,WRSL)
4429 Not(WRSL,WRSL)
4430 if(LNotEqual(WRSL,0xffff0000))
4431 {Return(37)}
4432
4433 //System Memory DWord Data
4434 Or(SMDW,0xffffffff,DRSL)
4435 Not(DRSL,DRSL)
4436 if(LNotEqual(DRSL,0x00000000))
4437 {Return(38)}
4438
4439 Return(0)
4440 }//NNOT
4441
4442
4443 Method(TEST)
4444 {
4445
4446 Store ("++++++++ NBitOps Test", Debug)
4447
4448 Store(NNDB(2,2),RSLT)
4449 if(LNotEqual(RSLT,0))
4450 {Return(RSLT)}
4451
4452 Store(NNOR(2,2),RSLT)
4453 if(LNotEqual(RSLT,0))
4454 {Return(RSLT)}
4455
4456 Store(NNOT(2,2),RSLT)
4457 if(LNotEqual(RSLT,0))
4458 {Return(RSLT)}
4459
4460
4461 Return(0)
4462 }
4463
4464 }//Device NBIT
4465
4466 //
4467 // test ShftOp.asl
4468 //
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.
4476
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.
4484
4485 //If the Control method is success Zero is returned else a non-zero number is returned
4486 Device (SHFT)
4487 {//SHFT
4488
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)
4497
4498
4499 Name(SHFC,0x00)
4500
4501 //And with Byte Data
4502 Name (BYT1, 0xff)
4503 Name (BRSL, 0x00)
4504
4505 //And with Word Data
4506 Name (WRD1, 0xffff)
4507 Name (WRSL, 0x0000)
4508
4509 //And with DWord Data
4510 Name (DWD1, 0xffffffff)
4511 Name (DRSL, 0x00000000)
4512
4513 Name(RSLT,1)
4514
4515 Name(ARSL,0x00)
4516 Name(LRSL,0x00)
4517
4518 Method(SLFT,2)
4519 {//SLFT
4520
4521 Store(0xffffffff,SMDW)
4522 Store(0xffff,SMWD)
4523 Store(0xff,SMBY)
4524
4525
4526 //Arg0-> 2 & Arg1->2
4527 ShiftLeft(Arg0,Arg1,ARSL)
4528 if(LNotEqual(ARSL,8))
4529 {Return(11)}
4530
4531 Store(Arg0,local0)
4532 Store(Arg1,Local1)
4533
4534 //Local0->8 and Local1->2
4535 ShiftLeft(Local0,Local1,LRSL)
4536 if(LNotEqual(LRSL,8))
4537 {Return(12)}
4538
4539 Store(2,SHFC)
4540 //Byte data
4541 ShiftLeft(BYT1,SHFC,BRSL)
4542 if(LNotEqual(BRSL,0x3FC))
4543 {Return(13)}
4544
4545 Store(4,SHFC)
4546 //Word Data
4547 ShiftLeft(WRD1,SHFC,WRSL)
4548 if(LNotEqual(WRSL,0xFFFF0))
4549 {Return(14)}
4550
4551 Store(8,SHFC)
4552 //DWord Data
4553 ShiftLeft(DWD1,SHFC,DRSL)
4554 if(LNotEqual(DRSL,0xFFFFFF00))
4555 {Return(15)}
4556
4557
4558 //System Memory Byte data
4559 Store(4,SHFC)
4560 ShiftLeft(SMBY,SHFC,BRSL)
4561 if(LNotEqual(BRSL,0xFF0))
4562 {Return(16)}
4563
4564 //Word Data
4565 Store(4,SHFC)
4566 ShiftLeft(SMWD,SHFC,WRSL)
4567 if(LNotEqual(WRSL,0xffff0))
4568 {Return(17)}
4569
4570 //DWord Data
4571 Store(8,SHFC)
4572 ShiftLeft(SMDW,SHFC,DRSL)
4573 if(LNotEqual(DRSL,0xFFFFFF00))
4574 {Return(18)}
4575
4576 Return(0)
4577
4578 }//SLFT
4579
4580 Method(SRGT,2)
4581 {//SRGT
4582 //And with Byte Data
4583 Store (0xff,BYT1)
4584 Store (0x00,BRSL)
4585
4586 //And with Word Data
4587 Store (0xffff,WRD1)
4588 Store (0x0000,WRSL)
4589
4590 //And with DWord Data
4591 Store(0xffffffff,DWD1)
4592 Store (0x00000000,DRSL)
4593
4594 //Reinitialize the result objects
4595 Store(0x00,ARSL)
4596 Store(0x00,LRSL)
4597
4598 Store(0xffffffff,SMDW)
4599 Store(0xffff,SMWD)
4600 Store(0xff,SMBY)
4601
4602 //Arg0-> 2 & Arg1->2
4603 ShiftRight(Arg0,Arg1,ARSL)
4604 if(LNotEqual(ARSL,0))
4605 {Return(21)}
4606
4607 Store(Arg0,local0)
4608 Store(Arg1,Local1)
4609
4610 //Local0->8 and Local1->2
4611 ShiftRight(Local0,Local1,LRSL)
4612 if(LNotEqual(LRSL,0))
4613 {Return(22)}
4614
4615 Store(2,SHFC)
4616 //Byte data
4617 ShiftRight(BYT1,SHFC,BRSL)
4618 if(LNotEqual(BRSL,0x3F))
4619 {Return(23)}
4620
4621 Store(4,SHFC)
4622 //Word Data
4623 ShiftRight(WRD1,SHFC,WRSL)
4624 if(LNotEqual(WRSL,0xFFF))
4625 {Return(24)}
4626
4627 Store(8,SHFC)
4628 //DWord Data
4629 ShiftRight(DWD1,SHFC,DRSL)
4630 if(LNotEqual(DRSL,0xFFFFFF))
4631 {Return(25)}
4632
4633 //System Memory Byte data
4634 Store(4,SHFC)
4635 ShiftRight(SMBY,SHFC,BRSL)
4636 if(LNotEqual(BRSL,0xF))
4637 {Return(26)}
4638
4639 //Word Data
4640 Store(4,SHFC)
4641 ShiftRight(SMWD,SHFC,WRSL)
4642 if(LNotEqual(WRSL,0xFFF))
4643 {Return(27)}
4644
4645 //DWord Data
4646 Store(8,SHFC)
4647 ShiftRight(SMDW,SHFC,DRSL)
4648 if(LNotEqual(DRSL,0xFFFFFF))
4649 {Return(28)}
4650
4651 Return(0)
4652 }//SRGT
4653
4654 //Test method called from amlexec
4655 Method(TEST)
4656 {
4657 Store ("++++++++ ShftOp Test", Debug)
4658
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 }
4667
4668 }//Device SHFT
4669
4670 //
4671 // test Xor.asl and slightly modified
4672 //
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)
4686 {
4687 Store ("++++++++ Xor Test", Debug)
4688
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 }
4707
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)
4714
4715 // Check the stored single bits
4716 if(LNotEqual(RES1, 1))
4717 {
4718 Return(1)
4719 }
4720
4721 if(LNotEqual(RES2, 1))
4722 {
4723 Return(1)
4724 }
4725
4726 if(LNotEqual(RES3, 1))
4727 {
4728 Return(1)
4729 }
4730
4731 if(LNotEqual(RES4, 1))
4732 {
4733 Return(1)
4734 }
4735
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)}
4744
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)}
4752
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)}
4760
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)}
4768
4769 Store(0x12,BYT1)
4770 Store(0xED,BYT2)
4771
4772 XOr(BYT1,BYT2,Local0)
4773 Store (Local0, RBYT)
4774 if(LNotEqual(RBYT,0xFF))
4775 {
4776 Return(1)
4777 }
4778
4779 // Store known values for checking later
4780 Store(0x12, BYT1)
4781 if(LNotEqual(BYT1, 0x12))
4782 {
4783 Return(1)
4784 }
4785
4786 Store(0xFE, BYT2)
4787 if(LNotEqual(BYT2, 0xFE))
4788 {
4789 Return(1)
4790 }
4791
4792 Store(0xAB, RBYT)
4793 if(LNotEqual(RBYT, 0xAB))
4794 {
4795 Return(1)
4796 }
4797
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)}
4805
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)}
4812
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)}
4819
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)}
4826
4827 Store(0x1234,WRD1)
4828 Store(0xEDCB,WRD2)
4829 XOr(WRD1,WRD2,RWRD)
4830 if(LNotEqual(RWRD,0xFFFF))
4831 { Return(1)}
4832
4833 // Store known values for checking later
4834 Store(0x1234, WRD1)
4835 if(LNotEqual(WRD1, 0x1234))
4836 {
4837 Return(1)
4838 }
4839
4840 Store(0xFEDC, WRD2)
4841 if(LNotEqual(WRD2, 0xFEDC))
4842 {
4843 Return(1)
4844 }
4845
4846 Store(0x87AB, RWRD)
4847 if(LNotEqual(RWRD, 0x87AB))
4848 {
4849 Return(1)
4850 }
4851
4852
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)}
4860
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)}
4867
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)}
4874
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)}
4881
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)}
4888
4889 Store(0x12345678,DWD1)
4890 if(LNotEqual(DWD1,0x12345678))
4891 {
4892 Return(1)
4893 }
4894
4895 Store(0xFEDCBA98,DWD2)
4896 if(LNotEqual(DWD2,0xFEDCBA98))
4897 {
4898 Return(1)
4899 }
4900
4901 Store(0x91827364,RDWD)
4902 if(LNotEqual(RDWD,0x91827364))
4903 {
4904 Return(1)
4905 }
4906
4907 //****************************************************
4908 // Check the stored single bits
4909 if(LNotEqual(RES1, 1))
4910 {
4911 Return(1)
4912 }
4913
4914 if(LNotEqual(RES2, 1))
4915 {
4916 Return(1)
4917 }
4918
4919 if(LNotEqual(RES3, 1))
4920 {
4921 Return(1)
4922 }
4923
4924 if(LNotEqual(RES4, 1))
4925 {
4926 Return(1)
4927 }
4928
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)
4934
4935 // Now, check all of the fields
4936
4937 // Byte
4938 if(LNotEqual(BYT1, 0x12))
4939 {
4940 Return(1)
4941 }
4942
4943 if(LNotEqual(BYT2, 0xFE))
4944 {
4945 Return(1)
4946 }
4947
4948 if(LNotEqual(RBYT, 0xAB))
4949 {
4950 Return(1)
4951 }
4952
4953 // Word
4954 if(LNotEqual(WRD1, 0x1234))
4955 {
4956 Return(1)
4957 }
4958
4959 if(LNotEqual(WRD2, 0xFEDC))
4960 {
4961 Return(1)
4962 }
4963
4964 if(LNotEqual(RWRD, 0x87AB))
4965 {
4966 Return(1)
4967 }
4968
4969 // Dword
4970 if(LNotEqual(DWD1, 0x12345678))
4971 {
4972 Return(1)
4973 }
4974
4975 if(LNotEqual(DWD2, 0xFEDCBA98))
4976 {
4977 Return(1)
4978 }
4979
4980 if(LNotEqual(RDWD, 0x91827364))
4981 {
4982 Return(1)
4983 }
4984
4985 // Bits
4986 if(LNotEqual(RES1, 0))
4987 {
4988 Return(1)
4989 }
4990
4991 if(LNotEqual(RES2, 0))
4992 {
4993 Return(1)
4994 }
4995
4996 if(LNotEqual(RES3, 0))
4997 {
4998 Return(1)
4999 }
5000
5001 if(LNotEqual(RES4, 0))
5002 {
5003 Return(1)
5004 }
5005
5006
5007 Return(0)
5008 } // TEST
5009 } // XORD
5010
5011 //
5012 // test CrBytFld.asl
5013 //
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.
5018 //
5019 Device (CRBF)
5020 { // Test device name
5021 Method (TEST)
5022 {
5023 Store ("++++++++ CrBytFld Test", Debug)
5024
5025 // Local0 is unitialized buffer with 4 elements
5026 Store (Buffer (4) {}, Local0)
5027
5028 // create Byte Field named BF0 based on Local0 element 0
5029 CreateByteField (Local0, 0, BF0)
5030
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) }
5035
5036 // store something into BF0
5037 Store (1, BF0)
5038
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) }
5043
5044 // verify that the Store into BF0 was successful
5045 If (LNotEqual (BF0, 1))
5046 { Return (4) }
5047
5048
5049 // create Byte Field named BF1 based on Local0 element 1
5050 CreateByteField (Local0, 1, BF1)
5051
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) }
5056
5057 // store something into BF1
5058 Store (5, BF1)
5059
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) }
5064
5065 // verify that the Store into BF1 was successful
5066 If (LNotEqual (BF1, 5))
5067 { Return (12) }
5068
5069 // verify that the Store into BF1 did not alter BF0
5070 If (LNotEqual (BF0, 1))
5071 { Return (13) }
5072
5073
5074 // store something into BF0
5075 Store (0xFFFF, BF0)
5076
5077 // verify that the Store into BF0 was successful
5078 If (LNotEqual (BF0, 0xFF))
5079 { Return (20) }
5080
5081 // verify that the Store into BF0 did not alter BF1
5082 If (LNotEqual (BF1, 5))
5083 { Return (21) }
5084
5085
5086 Return (0)
5087 } // TEST
5088 } // CRBF
5089
5090 //
5091 // test IndexOp4.asl
5092 //
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.
5096 //
5097 Device (IDX4)
5098 { // Test device name
5099
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) // 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
5155
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
5175
5176 // initialize memory contents using aligned field entries
5177 Store (0x5AA55AA5, DWD0)
5178 Store (0x5AA55AA5, DWD1)
5179
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) }
5188
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) }
5197
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) }
5206
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) }
5215
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) }
5224
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) }
5233
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) }
5242
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) }
5251
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) }
5260
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) }
5269
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) }
5278
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) }
5287
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) }
5296
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) }
5305
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) }
5314
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) }
5323
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) }
5332
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) }
5341
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) }
5350
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) }
5359
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) }
5368
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) }
5377
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) }
5386
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) }
5395
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) }
5404
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) }
5413
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) }
5422
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) }
5431
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) }
5440
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) }
5449
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) }
5458
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) }
5467
5468
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) }
5477
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) }
5486
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) }
5495
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) }
5504
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) }
5513
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) }
5522
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) }
5531
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) }
5540
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) }
5549
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) }
5558
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) }
5567
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) }
5576
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) }
5585
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) }
5594
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) }
5603
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) }
5612
5613
5614 Return (0) // pass
5615 } // MADM: Misaligned Dynamic RAM SystemMemory OperationRegion
5616
5617 Method (TEST)
5618 {
5619 Store ("++++++++ IndexOp4 Test", Debug)
5620
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
5626
5627 Return (Local0)
5628 } // TEST
5629 } // IDX4
5630
5631 //
5632 // test Event.asl
5633 //
5634 // EventOp, ResetOp, SignalOp, and WaitOp test cases.
5635 //
5636 Device (EVNT)
5637 {
5638 Event (EVNT) // event synchronization object
5639
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)
5645
5646 // prime EVNT with two outstanding signals
5647 Signal (EVNT)
5648 Signal (EVNT)
5649
5650
5651 // acquire existing signal
5652 Store (Wait (EVNT, Arg0), Local0)
5653
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
5658
5659 If (LNotEqual (Local0, 0)) // Number is type 1
5660 { Return (0x22) } // timeout occurred without acquiring signal
5661
5662 Store ("Acquire 1st existing signal PASS", Debug)
5663
5664
5665 // acquire existing signal
5666 Store (Wait (EVNT, Arg0), Local0)
5667
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
5672
5673 If (LNotEqual (Local0, 0)) // Number is type 1
5674 { Return (0x32) } // timeout occurred without acquiring signal
5675
5676 Store ("Acquire 2nd existing signal PASS", Debug)
5677
5678
5679 // ensure WaitOp timeout test cases do not hang
5680 if (LEqual (Arg0, 0xFFFF))
5681 { Store (0xFFFE, Arg0) }
5682
5683 // acquire non-existing signal
5684 Store (Wait (EVNT, Arg0), Local0)
5685
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
5690
5691 If (LEqual (Local0, 0)) // Number is type 1
5692 { Return (0x42) } // non-existant signal was acquired
5693
5694 Store ("Acquire signal timeout PASS", Debug)
5695
5696
5697 // prime EVNT with two outstanding signals
5698 Signal (EVNT)
5699 Signal (EVNT)
5700
5701 // reset EVNT to initialization (zero) state
5702 Reset (EVNT)
5703
5704 // acquire non-existing signal
5705 Store (Wait (EVNT, Arg0), Local0)
5706
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
5711
5712 If (LEqual (Local0, 0)) // Number is type 1
5713 { Return (0x52) } // non-existant signal was acquired
5714
5715 Store ("Reset signal PASS", Debug)
5716
5717
5718 // acquire non-existing signal using Lvalue timeout
5719 Store (Wait (EVNT, Zero), Local0)
5720
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
5725
5726 If (LEqual (Local0, 0)) // Number is type 1
5727 { Return (0x62) } // non-existant signal was acquired
5728
5729 Store ("Zero Lvalue PASS", Debug)
5730
5731
5732 // acquire non-existing signal using Lvalue timeout
5733 Store (Wait (EVNT, One), Local0)
5734
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
5739
5740 If (LEqual (Local0, 0)) // Number is type 1
5741 { Return (0x72) } // non-existant signal was acquired
5742
5743 Store ("One Lvalue PASS", Debug)
5744
5745 // Lvalue Event test cases
5746 // ILLEGAL SOURCE OPERAND Store (EVNT, Local2)
5747
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
5752
5753 // reset EVNT to initialization (zero) state
5754 Reset (EVNT)
5755
5756 // prime EVNT with two outstanding signals
5757 Signal (EVNT)
5758
5759 // acquire existing signal
5760 Store (Wait (EVNT, Arg0), Local0)
5761
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
5766
5767 If (LNotEqual (Local0, 0)) // Number is type 1
5768 { Return (0x83) } // timeout occurred without acquiring signal
5769
5770 Store ("Acquire Lvalue existing signal PASS", Debug)
5771
5772
5773 // acquire non-existing signal
5774 Store (Wait (EVNT, Arg0), Local0)
5775
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
5780
5781 If (LEqual (Local0, 0)) // Number is type 1
5782 { Return (0x85) } // non-existant signal was acquired
5783
5784 Store ("Acquire Lvalue signal timeout PASS", Debug)
5785
5786
5787 Return (0) // success
5788 } // TEVN control method to test ResetOp, SignalOp, and WaitOp
5789
5790 Method (TEST)
5791 {
5792 Store ("++++++++ Event Test", Debug)
5793
5794 Store (TEVN (100), Local0)
5795
5796 Return (Local0)
5797 } // TEST
5798 } // EVNT
5799
5800 //
5801 // test SizeOfLv.asl
5802 //
5803 // Test for SizeOf (Lvalue)
5804 //
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.
5812
5813 Name (PKG0,
5814 Package (3)
5815 {0x0123, 0x4567, 0x89AB}
5816 ) // PKG0
5817
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
5826
5827 Name (PKG2,
5828 Package (4)
5829 {0x0123, 0x4567, 0x89AB, 0x8888}
5830 ) // PKG2
5831
5832 Name (PKG3,
5833 Package (5)
5834 {0x0123, 0x4567, 0x89AB, 0x8888, 0x7777}
5835 ) // PKG3
5836
5837 // End Packages **********************************************************
5838
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.
5842
5843 Name (STR0, "ACPI permits very flexible methods of expressing a system")
5844
5845 Name (STR1, "MIKE permits very flexible methods of expressing a system")
5846
5847 Name (STR2, "Needless to say, Mike and ACPI are frequently at odds")
5848
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")
5852
5853 // End Strings **********************************************************
5854
5855 // The following section will declare the buffers that will be used to exercise
5856 // the SizeOf operator.
5857
5858 Name (BUF0, Buffer (10) {})
5859 Name (BUF1, Buffer (10) {})
5860 Name (BUF2, Buffer (8) {})
5861 Name (BUF3, Buffer (5) {})
5862
5863 // End Buffers **********************************************************
5864 Device (SZLV)
5865 {
5866
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.
5871
5872 Store (0x01, Local0)
5873
5874 if (LEqual (SizeOf(Arg0), SizeOf(Arg1)))
5875 {
5876 Store (0x00, Local0)
5877 }
5878
5879 return (Local0)
5880 } // CMPR
5881
5882
5883 Method (TEST)
5884 {
5885
5886 Store ("++++++++ SizeOfLv Test", Debug)
5887
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,
5896
5897 // TBD: SLOC [SizeOf (Local0)] -- dup SARG
5898
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 }
5905
5906 if (LNotEqual (0x00, CMPR (STR3, BUF3)))
5907 {
5908 Return (0x02)
5909 }
5910
5911 if (LNotEqual (0x00, CMPR (STR3, PKG3)))
5912 {
5913 Return (0x03)
5914 }
5915
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)
5921
5922 if (LNotEqual (SizeOf (Local0), SizeOf (Local1)))
5923 {
5924 Return (0x04)
5925 }
5926
5927 // Now create a case where Local0 and Local1 are different
5928 Store (STR2, Local1)
5929
5930 if (LEqual (SizeOf (Local0), SizeOf (Local1)))
5931 {
5932 Return (0x05)
5933 }
5934
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 }
5942
5943 Return (0)
5944 } // TEST
5945 } // SZLV
5946
5947
5948 //
5949 // test BytField.asl
5950 //
5951 // BytField test
5952 // This is just a subset of the many RegionOp/Index Field test cases.
5953 // Tests access of TBD.
5954 //
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)
5962
5963 Return (\_TZ.C19B.RSLT)
5964 } // TEST
5965 } // BYTF
5966
5967 Device (C005)
5968 { // Device C005
5969 Device (C013)
5970 { // Device C013
5971 } // Device C013
5972 } // Device C005
5973
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
5987
5988 OperationRegion (C018, SystemIO, 0x5028, 4)
5989 Field (C018, AnyAcc, NoLock, Preserve)
5990 { // Field overlaying C018
5991 C019, 32
5992 } // Field overlaying C018
5993
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
6002
6003 Mutex (\C01F, 0)
6004 Name (\C020, 0)
6005 Name (\C021, 0)
6006
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
6019
6020 Scope (\_SB.C005.C013)
6021 { // Scope \_SB.C005.C013
6022 Device (C058)
6023 { // Device C058
6024 Name (_HID, "*PNP0A06")
6025
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
6032
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
6076
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
6083
6084 OperationRegion (C082, SystemIO, 0xE0, 1)
6085 Field (C082, ByteAcc, NoLock, Preserve)
6086 { // Field overlaying C082
6087 C083, 8
6088 } // Field overlaying C082
6089
6090 OperationRegion (C084, SystemIO, 0xFF, 1)
6091 Field (C084, ByteAcc, NoLock, Preserve)
6092 { // Field overlaying C084
6093 C085, 8
6094 } // Field overlaying C084
6095
6096 OperationRegion (C086, SystemIO, 0xFD, 1)
6097 Field (C086, ByteAcc, NoLock, Preserve)
6098 { // Field overlaying C086
6099 C087, 8
6100 } // Field overlaying C086
6101
6102 Mutex (C088, 0)
6103 Mutex (C089, 0)
6104 Mutex (C08A, 0)
6105 Mutex (C08B, 0)
6106 Mutex (C08C, 0)
6107 Mutex (C08D, 0)
6108
6109 Name (C08E, 0xFFFFFFFD)
6110 Name (C08F, 0)
6111
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
6146
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
6162
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
6171
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)
6186
6187 Device (C19B)
6188 { // Device C19B
6189 Name (RSLT, 0) // default to zero
6190
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)
6205
6206 Store (1, RSLT) // set RSLT to 1 if _INI control method completes
6207 } // _INI control method
6208
6209 // PowerResource (C19D) {...}
6210 } // Device C19B
6211
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
6234
6235
6236 //
6237 // test DwrdFld.asl
6238 //
6239 Name (BUFR, buffer(10) {0,0,0,0,0,0,0,0,0,0} )
6240
6241 Device (DWDF)
6242 {
6243 Method (TEST)
6244 {
6245 Store ("++++++++ DwrdFld Test", Debug)
6246
6247 CreateByteField (BUFR, 0, BYTE)
6248 Store (0xAA, BYTE)
6249
6250 CreateWordField (BUFR, 1, WORD)
6251 Store (0xBBCC, WORD)
6252
6253 CreateDWordField (BUFR, 3, DWRD)
6254 Store (0xDDEEFF00, DWRD)
6255
6256 CreateByteField (BUFR, 7, BYT2)
6257 Store (0x11, BYT2)
6258
6259 CreateWordField (BUFR, 8, WRD2)
6260 Store (0x2233, WRD2)
6261
6262 Return (0)
6263
6264 } // End Method TEST
6265 } // Device DWDF
6266
6267 //
6268 // test DivAddx.asl
6269 //
6270 Name (B1LO, 0xAA)
6271 Name (B1HI, 0xBB)
6272
6273 Method (MKW_, 2)
6274 { // This control method will take two bytes and make them into a WORD
6275
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
6279
6280 } // MKW_
6281
6282 Device (DVAX)
6283 {
6284 Method (TEST)
6285 {
6286
6287 Store ("++++++++ DivAddx Test", Debug)
6288
6289 Store (25, B1LO)
6290 Store (0, B1HI)
6291
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
6301
6302 If (LAnd (LEqual (74, Local4), LEqual (1, Local2)))
6303 { // Indicate Pass
6304 Store (0x00, Local0)
6305 }
6306
6307 Else
6308 { // Indicate Fail
6309 Store (0x01, Local0)
6310 }
6311
6312 Return (Local0)
6313 } // End Method TEST
6314 } // Device DVAX
6315
6316 //
6317 // test IndexFld.asl (IndexOp6.asl)
6318 //
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.
6324 //
6325 Device (IDX6)
6326 { // Test device name
6327
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 }
6348
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
6363
6364 Method (TEST)
6365 {
6366 Store ("++++++++ IndexOp6 Test", Debug)
6367
6368 Store (IFE0, Local0)
6369 Store (IFE1, Local1)
6370 Store (IFE2, Local2)
6371
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)
6378
6379 Return (0)
6380 } // TEST
6381 } // IDX6
6382
6383 //
6384 // test IndexOp5.asl
6385 //
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.
6389 //
6390 Device (IDX5)
6391 { // Test device name
6392
6393 Name (OSFL, 0) // 0 == Windows 98, 1 == Windows NT
6394
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) // 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
6404
6405 // check if first string's length is less than second string's length
6406 If (LLess (SizeOf (Arg0), SizeOf (Arg1)))
6407 { Return (0) }
6408
6409 // increment length to include NULL termination character
6410 Add (SizeOf (Arg0), 1, Local0) // Local0 = strlen(Arg0) + 1
6411
6412 // create two buffers of size Local0 [strlen(Arg0)+1]
6413 Name (BUF0, Buffer (Local0) {})
6414 Name (BUF1, Buffer (Local0) {})
6415
6416 // copy strings into buffers
6417 Store (Arg0, BUF0)
6418 Store (Arg1, BUF1)
6419
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) }
6427
6428 // Decrement because the Index base below is zero based
6429 // while Local0 length is one based.
6430 Decrement (Local0)
6431
6432 While (Local0)
6433 { // loop through all BUF0 buffer elements
6434 Decrement (Local0)
6435
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
6443
6444 Return (One) // strings / buffers match
6445 } // MCTH: Control Method to compare two strings
6446
6447
6448 Method (TEST)
6449 {
6450 Store ("++++++++ IndexOp5 Test", Debug)
6451
6452 If (MCTH (\_OS, "Microsoft Windows NT"))
6453 { Store (1, OSFL) }
6454
6455 If (LNotEqual (OSFL, 1))
6456 { Return (11) }
6457
6458 Return (0)
6459 } // TEST
6460 } // IDX5
6461
6462 //
6463 // test IndexOp.asl
6464 //
6465 Scope (\_SB) // System Bus
6466 { // _SB system bus
6467
6468 Method (C097)
6469 { Return (1) }
6470
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)}
6477
6478 Device (ISA)
6479 { // ISA bridge
6480 Name (_ADR, 0x00030000) // ISA bus ID
6481
6482 Device (EC0)
6483 { // Embedded Controller
6484 Name (_GPE, 0) // EC use GPE0
6485 Name (_ADR, 0x0030000) // PCI address
6486
6487 Method (_STA,0) // EC Status
6488 { Return(0xF) } // EC is functioning
6489
6490 Name (_CRS, ResourceTemplate()
6491 {
6492 IO (Decode16, 0x62, 0x62, 1, 1)
6493 IO (Decode16, 0x66, 0x66, 1, 1)
6494 }
6495 )
6496
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
6507
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
6534
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
6548
6549 Method (_BIF)
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
6561
6562 Store ("", Index (BUFR,9)) // Model Number
6563
6564 Store ("", Index (BUFR,10)) // Serial Number
6565
6566 Store ("LiOn", Index (BUFR,11)) // Battery Type
6567
6568 Store ("Chicony", Index (BUFR,12)) // OEM Information
6569
6570 Return (BUFR)
6571 } // _BIF
6572
6573 Method (_BST)
6574 {
6575 Name (BUFR, Package(4) {1, 0x100, 0x76543210, 0x180})
6576 Return (BUFR)
6577 } // _BST
6578
6579 Method (_BTP,1)
6580 {
6581 Store (arg0, \_SB.PCI2.ISA.EC0.BTP0) // Set Battery Trip point
6582 }
6583
6584 Method (TEST)
6585 {
6586
6587 Store ("++++++++ IndexOp Test", Debug)
6588
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))
6595
6596 // verify values stored into uninitialized package elements
6597 If (LNotEqual (DerefOf (Index (PBUF,0)), 0x01234567))
6598 { Return (0x10) }
6599
6600 If (LNotEqual (DerefOf (Index (PBUF,1)), 0x89ABCDEF))
6601 { Return (0x11) }
6602
6603 If (LNotEqual (DerefOf (Index (PBUF,2)), 0xFEDCBA98))
6604 { Return (0x12) }
6605
6606 If (LNotEqual (DerefOf (Index (PBUF,3)), 0x76543210))
6607 { Return (0x13) }
6608
6609
6610 // store _BIF package return value into Local0
6611 Store (_BIF, Local0)
6612
6613 // save Local0 object type value into Local1
6614 Store (ObjectType (Local0), Local1)
6615
6616 // validate Local0 is a Package
6617 If (LNotEqual (Local1, 4)) // Package type is 4
6618 { Return (0x21) } // failure
6619
6620
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
6633
6634 // verify storing into buffer field elements
6635 If (LNotEqual (DerefOf (Index (BUFR,0)), 0x67))
6636 { Return (0x30) }
6637
6638 If (LNotEqual (DerefOf (Index (BUFR,1)), 0))
6639 { Return (0x31) }
6640
6641 If (LNotEqual (DerefOf (Index (BUFR,4)), 0xEF))
6642 { Return (0x34) }
6643
6644 If (LNotEqual (DerefOf (Index (BUFR,8)), 0x98))
6645 { Return (0x38) }
6646
6647 If (LNotEqual (DerefOf (Index (BUFR,12)), 0x10))
6648 { Return (0x3C) }
6649
6650
6651 Return (0) // pass
6652 } // TEST
6653 } // IDX0
6654 } // _SB system bus
6655
6656 //
6657 // test BitIndex.asl
6658 //
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.
6664 //
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 }
6705
6706 Device (BITI)
6707 { // Test device name
6708
6709 Method (MBIT) // Test single bit memory accesses
6710 {
6711
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)
6720
6721 // set memory contents to known values using DWORD field
6722 Store (0x5A5A5A5A, DWRD)
6723
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
6727
6728 If (BIT0)
6729 {
6730 Or (Local0, 0x01, Local0)
6731 }
6732
6733 If (LNot (BIT1))
6734 {
6735 Or (Local0, 0x02, Local0)
6736 }
6737
6738 If (BIT2)
6739 {
6740 Or (Local0, 0x04, Local0)
6741 }
6742
6743 If (LNot (BIT3))
6744 {
6745 Or (Local0, 0x08, Local0)
6746 }
6747
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 }
6754
6755 If (BIT5)
6756 {
6757 Or (Local0, 0x20, Local0)
6758 }
6759
6760 If (LNot (BIT6))
6761 {
6762 Or (Local0, 0x40, Local0)
6763 }
6764
6765 If (BIT7)
6766 {
6767 Or (Local0, 0x80, Local0)
6768 }
6769 } // End Else DWRD zeroed out
6770
6771 Return (Local0)
6772 } // MBIT: Test single bit memory accesses
6773
6774 Method (TEST)
6775 {
6776
6777 Store ("++++++++ BitIndex Test", Debug)
6778
6779 // Zero out DWRD
6780 Store (0x00000000, DWRD)
6781
6782 // MBIT returns zero if successful
6783 // This may be causing problems -- Return (MBIT)
6784 Store (MBIT, Local0)
6785
6786 Return (Local0)
6787 } // TEST
6788 } // BITI
6789 } // _SB system bus
6790
6791 //
6792 // test IndexOp3.asl
6793 //
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.
6798 //
6799 Scope (\_SB) // System Bus
6800 { // _SB system bus
6801
6802 Name (C174, 13)
6803 Name (C175, 8)
6804
6805 Device (C158)
6806 { // C158: AC Adapter device
6807 Name (_HID, "ACPI0003") // AC Adapter device
6808 Name (_PCL, Package (1) {\_SB})
6809
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
6818
6819 Name (C176, Package (4) {"Primary", "MultiBay", "DockRight", "DockLeft"})
6820
6821 Name (C177, Package (4) {0x99F5, 0x99F5, 0x995F, 0x995F})
6822
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
6830
6831 Name (C179, Package (4) {0, 0, 0x966B, 0x4190})
6832
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
6840
6841 Method (C17B, 1)
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
6859
6860 And (Arg0, 7, Local0) // Local0 = Arg0 & 7
6861
6862 ShiftRight (Local0, 1, Local4) // Local4 = Local0 >> 1
6863
6864 Store (C179, Index (C178, Local4, )) // C178->Local4 = C179
6865
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) }
6877
6878 // Restore data to allow iterative execution
6879 Store (0x966B, Index (C179, 2, )) // C179[2] = 0x966B
6880
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) }
6887
6888 Store (DerefOf (Index (C179, 3, )), Local2) // Local2 = C179[3]
6889 if (LNotEqual (Local2, 0x4190))
6890 { Return (0x5678) }
6891
6892 // Restore data to allow iterative execution
6893 Store (0x4190, Index (DerefOf (Index (C178, 0, )), 3, )) // C179[2] = 0x4190
6894
6895 Return (C17C)
6896 } // C17B: _BIF implementation
6897
6898 Device (C154)
6899 { // C154: Battery 0
6900 Name (_HID, "*PNP0C0A") // Control Method Battey ID
6901 Name (_UID, 0) // first instance
6902
6903 Method (_BIF)
6904 { // _BIF
6905 Return (C17B (48))
6906 } // _BIF
6907 } // C154: Battery 0
6908
6909 Device (IDX3)
6910 {
6911 Method (LCLB)
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
6918
6919 Name (BUFR, Buffer () {0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
6920
6921 // save PKG into Local1
6922 Store (BUFR, Local1)
6923
6924 // save Local2 object type value into Local3
6925 Store (ObjectType (Local1), Local3)
6926
6927 // validate Local1 is a Buffer
6928 If (LNotEqual (Local3, 3)) // Buffer type is 3
6929 { Return (0x9F) }
6930
6931
6932 Store (0, Local0)
6933 While (LLess (Local0, 5))
6934 { // While (Local0 < 5)
6935 // Local2 = Local1[Local0]
6936 Store (DerefOf (Index (Local1, Local0, )), Local2)
6937
6938 // save Local2 object type value into Local3
6939 Store (ObjectType (Local2), Local3)
6940
6941 // validate Local2 is a Number
6942 If (LNotEqual (Local3, 1)) // Number type is 1
6943 { Return (0x9E) }
6944
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)
6950
6951 // return 0x90 + loop index
6952 Return (Local4)
6953 }
6954
6955 Increment (Local0)
6956 } // While (Local0 < 5)
6957
6958 Store ("DerefOf(Index(LocalBuffer,,)) PASS", Debug)
6959
6960 Return (0) // Pass
6961 } // LCLB control method: test Index(Local#) where Local# is buffer
6962
6963 Method (LCLP)
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
6970
6971 Name (PKG, Package () {0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
6972
6973 // save PKG into Local1
6974 Store (PKG, Local1)
6975
6976 // save Local2 object type value into Local3
6977 Store (ObjectType (Local1), Local3)
6978
6979 // validate Local1 is a Package
6980 If (LNotEqual (Local3, 4)) // Package type is 4
6981 { Return (0x8F) }
6982
6983
6984 Store (0, Local0)
6985 While (LLess (Local0, 5))
6986 { // While (Local0 < 5)
6987 // Local2 = Local1[Local0]
6988 Store (DerefOf (Index (Local1, Local0, )), Local2)
6989
6990 // save Local2 object type value into Local3
6991 Store (ObjectType (Local2), Local3)
6992
6993 // validate Local2 is a Number
6994 If (LNotEqual (Local3, 1)) // Number type is 1
6995 { Return (0x8E) }
6996
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)
7002
7003 // return 0x80 + loop index
7004 Return (Local4)
7005 }
7006
7007 Increment (Local0)
7008 } // While (Local0 < 5)
7009
7010 Store ("DerefOf(Index(LocalPackage,,)) PASS", Debug)
7011
7012 Return (0) // Pass
7013 } // LCLP control method: test Index(Local#) where Local# is package
7014
7015 Method (TEST)
7016 {
7017
7018 Store ("++++++++ IndexOp3 Test", Debug)
7019
7020 // store _BIF package return value into Local0
7021 Store (\_SB.C154._BIF, Local0)
7022
7023 // save Local0 object type value into Local1
7024 Store (ObjectType (Local0), Local1)
7025
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)
7035
7036 // save LCLB control method return value into Local2
7037 Store (LCLB, Local2)
7038 If (LNotEqual (Local2, 0))
7039 { Return (Local2) } // return failure code
7040
7041 // save LCLP control method return value into Local2
7042 Store (LCLP, Local2)
7043 If (LNotEqual (Local2, 0))
7044 { Return (Local2) } // return failure code
7045
7046 Return (0) // Pass
7047 } // TEST
7048 } // IDX3: Test device name
7049 } // _SB system bus
7050
7051 //
7052 // MTL developed test to exercise Indexes into buffers
7053 //
7054 Device(IDX7)
7055 {
7056
7057 Name (PKG4, Package() {
7058 0x2,
7059 "A short string",
7060 Buffer() {0xA, 0xB, 0xC, 0xD},
7061 0x1234,
7062 Package() {IDX7, 0x3}
7063 })
7064
7065 //
7066 // Generic Test method
7067 //
7068 // This test returns 0xE (14) - ObjectType = Buffer Field
7069 Method(TST1)
7070 {
7071 Name (DEST, Buffer () // 62 characters plus NULL
7072 {"Destination buffer that is longer than the short source buffer"})
7073
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 }
7085
7086 }
7087
7088 Method(TST2)
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 }
7101
7102
7103 }
7104
7105 Method(TST3)
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 }
7118
7119 }
7120
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 }
7134
7135 }
7136
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 }
7150
7151 }
7152
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 }
7166
7167 }
7168
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 }
7182
7183 }
7184
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 }
7198
7199 }
7200
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 }
7213
7214 }
7215
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 }
7229
7230 }
7231
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 }
7245
7246 }
7247
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 }
7260
7261 }
7262
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 }
7276
7277 }
7278
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 }
7293
7294 }
7295
7296 Method (TSTF)
7297 {
7298 Name (SRCB, Buffer (12) {}) // 12 characters
7299 Store ("Short Buffer", SRCB)
7300
7301 Name (DEST, Buffer () // 62 characters plus NULL
7302 {"Destination buffer that is longer than the short source buffer"})
7303
7304 // overwrite DEST contents, starting at buffer position 2
7305 Store (SRCB, Index (DEST, 2))
7306
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)
7311
7312 If (LNotEqual (Local0, 0x72)) // 'r'
7313 {
7314 // DEST element does not match the value from SRCB
7315 Return(Or(Local0, 0x1000))
7316 }
7317
7318 Return(0)
7319 }
7320
7321 Method (TSTG)
7322 {
7323
7324 Name (SRCB, Buffer (12) {}) // 12 characters
7325 Store ("Short Buffer", SRCB)
7326
7327 Name (DEST, Buffer () // 62 characters plus NULL
7328 {"Destination buffer that is longer than the short source buffer"})
7329
7330 // overwrite DEST contents, starting at buffer position 2
7331 Store (SRCB, Index (DEST, 2))
7332
7333 //
7334 // The next element of DEST should be unchanged
7335 //
7336 Store (DerefOf (Index (DEST, 3)), Local0)
7337
7338 If (LNotEqual (Local0, 0x74)) // 't'
7339 {
7340 // DEST has been changed
7341 Return(Or(Local0, 0x2000))
7342 }
7343
7344 //
7345 // The next element of DEST should be unchanged
7346 //
7347 Store (DerefOf (Index (DEST, 4)), Local0)
7348
7349 If (LNotEqual (Local0, 0x69)) // 'i'
7350 {
7351 // DEST has been changed
7352 Return(Or(Local0, 0x2100))
7353 }
7354
7355 //
7356 // The next element of DEST should be unchanged
7357 //
7358 Store (DerefOf (Index (DEST, 5)), Local0)
7359
7360 If (LNotEqual (Local0, 0x6E)) // 'n'
7361 {
7362 // DEST has been changed
7363 Return(Or(Local0, 0x2200))
7364 }
7365
7366 //
7367 // The next element of DEST should be unchanged
7368 //
7369 Store (DerefOf (Index (DEST, 6)), Local0)
7370
7371 If (LNotEqual (Local0, 0x61)) // 'a'
7372 {
7373 // DEST has been changed
7374 Return(Or(Local0, 0x2300))
7375 }
7376
7377 //
7378 // The next element of DEST should be unchanged
7379 //
7380 Store (DerefOf (Index (DEST, 7)), Local0)
7381
7382 If (LNotEqual (Local0, 0x74)) // 't'
7383 {
7384 // DEST has been changed
7385 Return(Or(Local0, 0x2400))
7386 }
7387
7388 //
7389 // Verify DEST elements beyond end of SRCB buffer copy
7390 // have not been changed
7391 Store (DerefOf (Index (DEST, 14)), Local0)
7392
7393 If (LNotEqual (Local0, 0x66)) // 'f'
7394 {
7395 // DEST has been changed
7396 Return(Or(Local0, 0x2400))
7397 }
7398
7399 Return(0)
7400 }
7401
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)
7407 {
7408 // Create a Destination Buffer
7409 Name (DBUF, Buffer () {"abcdefghijklmnopqrstuvwxyz"})
7410
7411 // Store a number > UINT8 into an index of the buffer
7412 Store (0x12345678, Index(DBUF, 2))
7413
7414 // Check the results
7415 Store (DerefOf (Index (DBUF, 2)), Local0)
7416 If (LNotEqual (Local0, 0x78)) // 0x78
7417 {
7418 Return(Or(Local0, 0x3000))
7419 }
7420
7421 Store (DerefOf (Index (DBUF, 3)), Local0)
7422 If (LNotEqual (Local0, 0x64)) // 'd'
7423 {
7424 Return(Or(Local0, 0x3100))
7425 }
7426
7427 Store (DerefOf (Index (DBUF, 4)), Local0)
7428 If (LNotEqual (Local0, 0x65)) // 'e'
7429 {
7430 Return(Or(Local0, 0x3200))
7431 }
7432
7433 Store (DerefOf (Index (DBUF, 5)), Local0)
7434 If (LNotEqual (Local0, 0x66)) // 'f'
7435 {
7436 Return(Or(Local0, 0x3300))
7437 }
7438
7439 Return(0)
7440 }
7441
7442 Method (TSTI)
7443 {
7444 // Create a Destination Buffer
7445 Name (DBUF, Buffer () {"abcdefghijklmnopqrstuvwxyz"})
7446
7447 // Store a String into an index of the buffer
7448 Store ("ABCDEFGH", Index(DBUF, 2))
7449
7450 // Check the results
7451 Store (DerefOf (Index (DBUF, 2)), Local0)
7452 If (LNotEqual (Local0, 0x48)) // 'H'
7453 {
7454 Return(Or(Local0, 0x4000))
7455 }
7456
7457 Store (DerefOf (Index (DBUF, 3)), Local0)
7458 If (LNotEqual (Local0, 0x64)) // 'd'
7459 {
7460 Return(Or(Local0, 0x4100))
7461 }
7462
7463 Store (DerefOf (Index (DBUF, 4)), Local0)
7464 If (LNotEqual (Local0, 0x65)) // 'e'
7465 {
7466 Return(Or(Local0, 0x4200))
7467 }
7468
7469 Store (DerefOf (Index (DBUF, 5)), Local0)
7470 If (LNotEqual (Local0, 0x66)) // 'f'
7471 {
7472 Return(Or(Local0, 0x4300))
7473 }
7474
7475 Return(0)
7476 }
7477
7478 Method(TSTJ)
7479 {
7480 // Create a Destination Buffer
7481 Name (DBUF, Buffer () {"abcdefghijklmnopqrstuvwxyz"})
7482
7483 // Store a number > UINT8 into an index of the buffer
7484 Store (0x1234, Index(DBUF, 2))
7485
7486 // Check the results
7487 Store (DerefOf (Index (DBUF, 2)), Local0)
7488 If (LNotEqual (Local0, 0x34)) // 0x34
7489 {
7490 Return(Or(Local0, 0x3000))
7491 }
7492
7493 Store (DerefOf (Index (DBUF, 3)), Local0)
7494 If (LNotEqual (Local0, 0x64)) // 'd'
7495 {
7496 Return(Or(Local0, 0x3100))
7497 }
7498
7499 Store (DerefOf (Index (DBUF, 4)), Local0)
7500 If (LNotEqual (Local0, 0x65)) // 'e'
7501 {
7502 Return(Or(Local0, 0x3200))
7503 }
7504
7505 Store (DerefOf (Index (DBUF, 5)), Local0)
7506 If (LNotEqual (Local0, 0x66)) // 'f'
7507 {
7508 Return(Or(Local0, 0x3300))
7509 }
7510
7511 Return(0)
7512 }
7513
7514 Method(TSTK)
7515 {
7516 // Create a Destination Buffer
7517 Name (DBUF, Buffer () {"abcdefghijklmnopqrstuvwxyz"})
7518
7519 // Store a number > UINT8 into an index of the buffer
7520 Store (0x123456, Index(DBUF, 2))
7521
7522 // Check the results
7523 Store (DerefOf (Index (DBUF, 2)), Local0)
7524 If (LNotEqual (Local0, 0x56)) // 0x56
7525 {
7526 Return(Or(Local0, 0x3000))
7527 }
7528
7529 Store (DerefOf (Index (DBUF, 3)), Local0)
7530 If (LNotEqual (Local0, 0x64)) // 'd'
7531 {
7532 Return(Or(Local0, 0x3100))
7533 }
7534
7535 Store (DerefOf (Index (DBUF, 4)), Local0)
7536 If (LNotEqual (Local0, 0x65)) // 'e'
7537 {
7538 Return(Or(Local0, 0x3200))
7539 }
7540
7541 Store (DerefOf (Index (DBUF, 5)), Local0)
7542 If (LNotEqual (Local0, 0x66)) // 'f'
7543 {
7544 Return(Or(Local0, 0x3300))
7545 }
7546
7547 Return(0)
7548 }
7549
7550 Method(TSTL)
7551 {
7552 // Create a Destination Buffer
7553 Name (DBUF, Buffer () {"abcdefghijklmnopqrstuvwxyz"})
7554
7555 // Store a number > UINT8 into an index of the buffer
7556 Store (0x12, Index(DBUF, 2))
7557
7558 // Check the results
7559 Store (DerefOf (Index (DBUF, 2)), Local0)
7560 If (LNotEqual (Local0, 0x12)) // 0x12
7561 {
7562 Return(Or(Local0, 0x3000))
7563 }
7564
7565 Store (DerefOf (Index (DBUF, 3)), Local0)
7566 If (LNotEqual (Local0, 0x64)) // 'd'
7567 {
7568 Return(Or(Local0, 0x3100))
7569 }
7570
7571 Store (DerefOf (Index (DBUF, 4)), Local0)
7572 If (LNotEqual (Local0, 0x65)) // 'e'
7573 {
7574 Return(Or(Local0, 0x3200))
7575 }
7576
7577 Store (DerefOf (Index (DBUF, 5)), Local0)
7578 If (LNotEqual (Local0, 0x66)) // 'f'
7579 {
7580 Return(Or(Local0, 0x3300))
7581 }
7582
7583 Return(0)
7584 }
7585
7586 Method(TEST)
7587 {
7588 Store ("++++++++ IndexOp7 Test", Debug)
7589
7590 Store(TST1(), Local0)
7591 if (LGreater (Local0, 0))
7592 {
7593 Return(Local0)
7594 }
7595
7596 Store(TST2(), Local0)
7597 if (LGreater (Local0, 0))
7598 {
7599 Return(Local0)
7600 }
7601
7602 Store(TST3(), Local0)
7603 if (LGreater (Local0, 0))
7604 {
7605 Return(Local0)
7606 }
7607
7608 Store(TST4(), Local0)
7609 if (LGreater (Local0, 0))
7610 {
7611 Return(Local0)
7612 }
7613
7614 Store(TST5(), Local0)
7615 if (LGreater (Local0, 0))
7616 {
7617 Return(Local0)
7618 }
7619
7620 Store(TST6(), Local0)
7621 if (LGreater (Local0, 0))
7622 {
7623 Return(Local0)
7624 }
7625
7626 Store(TST7(), Local0)
7627 if (LGreater (Local0, 0))
7628 {
7629 Return(Local0)
7630 }
7631
7632 Store(TST8(), Local0)
7633 if (LGreater (Local0, 0))
7634 {
7635 Return(Local0)
7636 }
7637
7638 Store(TST9(), Local0)
7639 if (LGreater (Local0, 0))
7640 {
7641 Return(Local0)
7642 }
7643
7644 Store(TSTA(), Local0)
7645 if (LGreater (Local0, 0))
7646 {
7647 Return(Local0)
7648 }
7649
7650 Store(TSTB(), Local0)
7651 if (LGreater (Local0, 0))
7652 {
7653 Return(Local0)
7654 }
7655
7656 Store(TSTC(), Local0)
7657 if (LGreater (Local0, 0))
7658 {
7659 Return(Local0)
7660 }
7661
7662 Store(TSTD(), Local0)
7663 if (LGreater (Local0, 0))
7664 {
7665 Return(Local0)
7666 }
7667
7668 Store(TSTE(), Local0)
7669 if (LGreater (Local0, 0))
7670 {
7671 Return(Local0)
7672 }
7673
7674 /* No longer ACPI compliant */
7675 /*
7676 Store(TSTF(), Local0)
7677 if (LGreater (Local0, 0))
7678 {
7679 Return(Local0)
7680 }
7681 */
7682
7683 Store(TSTG(), Local0)
7684 if (LGreater (Local0, 0))
7685 {
7686 Return(Local0)
7687 }
7688
7689 Store(TSTH(), Local0)
7690 if (LGreater (Local0, 0))
7691 {
7692 Return(Local0)
7693 }
7694
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 }
7708
7709 Store(TSTK(), Local0)
7710 if (LGreater (Local0, 0))
7711 {
7712 Return(Local0)
7713 }
7714
7715 Store(TSTL(), Local0)
7716 if (LGreater (Local0, 0))
7717 {
7718 Return(Local0)
7719 }
7720
7721 Return(Local0)
7722
7723 }
7724
7725 } // Device(IDX7)
7726
7727 //
7728 // test MatchOp.asl
7729 //
7730 // MatchOp test cases that utilize nested DerefOf(Index(...)) to validate
7731 // MatchOp, DerefOfOp, and IndexOp of nested packages.
7732 //
7733 Device (MTCH)
7734 {
7735
7736 Method (TEST)
7737 {
7738 Store ("++++++++ MatchOp Test", Debug)
7739
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
7751
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)
7758
7759
7760 // validate PIO0 value
7761 Store (PIO0, Local3)
7762
7763 // save Local3 object type value into Local2
7764 Store (ObjectType (Local3), Local2)
7765
7766 // validate Local3 is a Number
7767 If (LNotEqual (Local2, 1)) // Number type is 1
7768 { Return (2) } // failure
7769
7770 // validate Local3 Number value
7771 If (LNotEqual (Local3, 0xFFFFFFFF)) // Number value 0xFFFFFFFF
7772 { Return (3) } // failure
7773
7774 Store ("DWordField PASS", Debug)
7775
7776
7777 Store (0, Local5)
7778 Store (Match (DerefOf (Index (TIM0, 1, )), MLE, Local5, MTR, 0, 0), Local6)
7779
7780 // save Local6 object type value into Local2
7781 Store (ObjectType (Local6), Local2)
7782
7783 // validate Local6 is a Number
7784 If (LNotEqual (Local2, 1)) // Number type is 1
7785 { Return (4) } // failure
7786
7787 Store ("Match(DerefOf(Index(TIM0,1)),... PASS", Debug)
7788
7789
7790 // validate following produces a nested package to validate
7791 // that MatchOp did not corrupt SearchPackage (TIM0)
7792 Store (DerefOf (Index (TIM0, 1, )), Local4)
7793
7794 // save Local4 object type value into Local2
7795 Store (ObjectType (Local4), Local2)
7796
7797 // validate Local4 is a Package
7798 If (LNotEqual (Local2, 4)) // Package type is 4
7799 { Return (5) } // failure
7800
7801 Store ("DerefOf(Index(TIM0,1)),... PASS", Debug)
7802
7803
7804 And (Match (DerefOf (Index (TIM0, 0, )), MGE, PIO0, MTR, 0, 0), 3, Local0)
7805
7806 // save Local0 object type value into Local2
7807 Store (ObjectType (Local0), Local2)
7808
7809 // validate Local0 is a Number
7810 If (LNotEqual (Local2, 1)) // Number type is 1
7811 { Return (6) } // failure
7812
7813 // validate Local0 Number value
7814 If (LNotEqual (Local0, 3)) // Number value 3
7815 { Return (7) } // failure
7816
7817 Store ("And(Match(DerefOf(Index(TIM0,0)),... PASS", Debug)
7818
7819
7820 // again, validate following produces a nested package
7821 Store (DerefOf (Index (TIM0, 1, )), Local4)
7822
7823 // save Local4 object type value into Local2
7824 Store (ObjectType (Local4), Local2)
7825
7826 // validate Local4 is a Package
7827 If (LNotEqual (Local2, 4)) // Package type is 4
7828 { Return (8) } // failure
7829
7830 Store ("DerefOf(Index(TIM0,1)),... PASS again", Debug)
7831
7832
7833 // again, validate following produces a nested package
7834 Store (DerefOf (Index (TIM0, 1, )), Local4)
7835
7836 // save Local4 object type value into Local2
7837 Store (ObjectType (Local4), Local2)
7838
7839 // validate Local4 is a Package
7840 If (LNotEqual (Local2, 4)) // Package type is 4
7841 { Return (9) } // failure
7842
7843 Store ("DerefOf(Index(TIM0,1)),... PASS again", Debug)
7844
7845
7846 // test nested DerefOf(Index) operators
7847 Store (DerefOf (Index (DerefOf (Index (TIM0, 1, )), Local0, )), Local1)
7848
7849 // save Local1 object type value into Local2
7850 Store (ObjectType (Local1), Local2)
7851
7852 // validate Local1 is a Number
7853 If (LNotEqual (Local2, 1)) // Number type is 1
7854 { Return (10) } // failure
7855
7856 // zero indicates pass, non-zero is an error code
7857 If (LNotEqual (Local1, 0))
7858 { Return (11) } // failure
7859
7860 Store ("DerefOf(Index(DerefOf(Index(TIM0,1)),... PASS", Debug)
7861
7862
7863 // again, validate following produces a nested package
7864 Store (DerefOf (Index (TIM0, 1, )), Local4)
7865
7866 // save Local4 object type value into Local2
7867 Store (ObjectType (Local4), Local2)
7868
7869 // validate Local4 is a Package
7870 If (LNotEqual (Local2, 4)) // Package type is 4
7871 { Return (12) } // failure
7872
7873 Store ("DerefOf(Index(TIM0,1)),... PASS again", Debug)
7874
7875
7876 // retest nested DerefOf(Index) operators
7877 Store (DerefOf (Index (DerefOf (Index (TIM0, 1, )), Local0, )), Local1)
7878
7879 // save Local1 object type value into Local2
7880 Store (ObjectType (Local1), Local2)
7881
7882 // validate Local1 is a Number
7883 If (LNotEqual (Local2, 1)) // Number type is 1
7884 { Return (13) } // failure
7885
7886 // zero indicates pass, non-zero is an error code
7887 If (LNotEqual (Local1, 0))
7888 { Return (14) } // failure
7889
7890 Store ("DerefOf(Index(DerefOf(Index(TIM0,1)),... PASS again", Debug)
7891
7892
7893 // again, validate following produces a nested package
7894 Store (DerefOf (Index (TIM0, 1, )), Local4)
7895
7896 // save Local4 object type value into Local2
7897 Store (ObjectType (Local4), Local2)
7898
7899 // validate Local4 is a Package
7900 If (LNotEqual (Local2, 4)) // Package type is 4
7901 { Return (15) } // failure
7902
7903 Store ("DerefOf(Index(TIM0,1)),... PASS again", Debug)
7904
7905
7906 Return (0) // pass
7907 } // TEST
7908 } // MTCH
7909
7910 //
7911 // test WhileBrk.asl
7912 //
7913 // This code tests the Break term and While term
7914 //
7915 // Syntax of Break term
7916 // BreakTerm := Break
7917 // The break operation causes the current package execution to complete.
7918 //
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.
7926 //
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.
7930 //
7931 Device (WHLB)
7932 {
7933 Name (CNT0, 0)
7934 Name (CNT1, 0)
7935
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)
7941
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 }
7951
7952 Increment (CNT1)
7953 }
7954
7955 If (LNotEqual (CNT1, 1))
7956 {
7957 // failure
7958 Return (7)
7959 }
7960
7961 Increment (CNT0)
7962 }
7963
7964 // Verify Break only exited inner-most While loop
7965
7966 If (LNotEqual (CNT0, 4))
7967 {
7968 // failure
7969 Return (8)
7970 }
7971
7972 Store ("While/While/If/Break PASS", Debug)
7973
7974 Store ("++++++++ WhileBrk Test", Debug)
7975
7976 // Check Break statement nested in While
7977 Store (0, CNT0)
7978
7979 While (LLess (CNT0, 10))
7980 {
7981 Break // exit encompassing package
7982 Increment (CNT0)
7983 }
7984
7985 If (LNotEqual (CNT0, 0)) // instruction after Break executed
7986 {
7987 Return (4)
7988 }
7989
7990
7991 Store (0, CNT0)
7992
7993 // Test While Term
7994 While (LLess (CNT0, 10))
7995 {
7996 Increment (CNT0)
7997 }
7998
7999 // Check if the while loop was executed until the condition is satisfied.
8000 If (LNotEqual (CNT0, 10))
8001 {
8002 Return (1)
8003 }
8004
8005
8006 // While loop in a reverse order
8007 While (LGreater (CNT0, 0))
8008 {
8009 Decrement (CNT0)
8010 }
8011
8012 // Check if the while loop was executed until the condition is satisfied.
8013 If (LNotEqual (CNT0, 0))
8014 {
8015 Return (2)
8016 }
8017
8018
8019 Store ("While/Break PASS", Debug)
8020
8021
8022 // Check Break statement nested in If nested in While
8023 Store (0, CNT0)
8024
8025 While (LLess (CNT0, 10))
8026 {
8027 if (LEqual (CNT0, 5))
8028 {
8029 Break // exit encompassing Package (If)
8030
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 }
8036
8037 Increment (CNT0) // check if Break exited both If and While
8038 } // While
8039
8040 If (LGreater (CNT0, 19))
8041 { // instruction after Break inside IfOp executed
8042 Return (5)
8043 }
8044
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)
8054
8055
8056 // All the conditions passed
8057 Return (0)
8058 } // TEST
8059 } // WHLB
8060
8061
8062 //
8063 // test IndexOp2.asl
8064 //
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.
8068 //
8069 // MTL NOTE: This test has been modified slightly from the original test
8070 // to take into account ACPI specification limitations.
8071 //
8072 Scope (\_SB) // System Bus
8073 { // _SB system bus
8074
8075 Device (MEM)
8076 { // MEM
8077 Name (_HID, 0x010CD041)
8078 Name (_STA, 0x0F)
8079
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
8093
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
8255
8256 Device (BAT1)
8257 { // BAT1
8258 Name (_HID, EISAID ("PNP0C0A")) // Control Method Battey ID
8259 Name (_UID, 1)
8260 Name (_PCL, Package (1) {\_SB})
8261
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
8269
8270 Method (_BIF)
8271 { // _BIF
8272 Name (BUFR, Package (13) {})
8273
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))
8287
8288 Return (BUFR)
8289 } // _BIF
8290 } // BAT1
8291
8292 Device (IDX2)
8293 {
8294 Method (B2IB)
8295 { // B2IB: store from Buffer into Index'ed Buffer
8296
8297 Name (SRCB, Buffer () {"Short Buffer"}) // 12 characters plus NULL
8298
8299 Name (DEST, Buffer () // 62 characters plus NULL
8300 {"Destination buffer that is longer than the short source buffer"})
8301
8302
8303 // verify object type returned by Index(Buffer,Element,)
8304
8305 Store (Index (DEST, 2, ), Local1)
8306 Store (ObjectType (Local1), Local2)
8307
8308 If (LNotEqual (Local2, 14)) // Buffer Field is type 14
8309 {
8310 // Local2 indicates Local1 is not a Buffer Field
8311
8312 Return (0x61)
8313 }
8314
8315 // verify object type and value returned by DerefOf(Index(Buffer,Element,))
8316 // should return Number containing element value
8317
8318 Store (DerefOf (Local1), Local3)
8319 Store (ObjectType (Local3), Local4)
8320
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 }
8333
8334 Store ("DerefOf(Index(Buffer,,)) PASS", Debug)
8335
8336
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]
8344
8345 Store (SRCB, Index (DEST, 2, ))
8346
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 }
8365
8366 //
8367 // Check that the elements beyond the SRCB buffer copy
8368 // have not been altered.
8369 //
8370 Store (DerefOf (Index (DEST, 14)), Local0)
8371
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 }
8389
8390 Store ("Store(SRCB,Index(Buffer,,)) PASS", Debug)
8391
8392 //
8393 // verify altering SRCB does NOT alter DEST
8394 //
8395 Store (0x6A, Index (SRCB, 1)) // SRCB = "Sjort Buffer"
8396
8397 Store (DerefOf (Index (SRCB, 1)), Local0)
8398
8399 If (LNotEqual (Local0, 0x6A)) // 'j'
8400 {
8401 // SRCB element is unaltered
8402 Return (0x71)
8403 }
8404
8405 Store (DerefOf (Index (DEST, 3)), Local0) // DEST = "Destination buffer that...
8406
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 }
8421
8422 // verify altering DEST does NOT alter SRCB
8423
8424 Store (0x6B, Index (DEST, 4, )) // DEST = "DeSkination buffer..."
8425
8426 Store (DerefOf (Index (DEST, 4, )), Local0)
8427
8428 If (LNotEqual (Local0, 0x6B)) // 'k'
8429 {
8430 // DEST element is unaltered
8431 Return (0x74)
8432 }
8433
8434 Store (DerefOf (Index (SRCB, 2, )), Local0)
8435
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 }
8449
8450 Store ("SRCB and DEST independent PASS", Debug)
8451
8452
8453 // verify string can be written to Index target/destination
8454 // Only FIRST byte is written
8455
8456 Store ("New Buff", Index (DEST, 2, )) // DEST = "DeNkination buffer..."
8457
8458 Store (DerefOf (Index (DEST, 2, )), Local0)
8459
8460 If (LNotEqual (Local0, 0x4E)) // 'N'
8461 {
8462 // DEST element is unaltered
8463 Return (0x81)
8464 }
8465
8466 Store (DerefOf (Index (DEST, 6, )), Local0)
8467
8468 If (LNotEqual (Local0, 0x61)) // 'a'
8469 {
8470 // DEST element is unaltered
8471 Return (0x82)
8472 }
8473
8474 Store (DerefOf (Index (DEST, 10, )), Local0)
8475
8476 If (LNotEqual (Local0, 0x6E)) // 'n'
8477 {
8478 // DEST element is unaltered
8479 Return (0x83)
8480 }
8481
8482 Store ("Store(String,Index) PASS", Debug)
8483
8484
8485 Return (0) // pass
8486 } // B2IB: store from Buffer into Index'ed Buffer
8487
8488 Method (FB2P)
8489 { // FB2P: store from Field Buffer into Index'ed Package
8490 Name (DEST, Package (2) {})
8491
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)
8497
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))
8501
8502 // validate DEST contents
8503 Store (DerefOf (Index (DEST, 0, )), Local0)
8504 Store (DerefOf (Index (DEST, 1, )), Local1)
8505
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 }
8512
8513 Store (ObjectType (Local1), Local3)
8514 if (LNotEqual (Local3, 3)) // Buffer type is 3
8515 {
8516 Return (0x12)
8517 }
8518
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 }
8525
8526 Store (DerefOf (Index (DerefOf (Index (DEST, 0)), 1)), Local4)
8527 If (LNotEqual (Local4, 0x45))
8528 {
8529 Return (0x14)
8530 }
8531
8532 Store (DerefOf (Index (DerefOf (Index (DEST, 0)), 4)), Local4)
8533 If (LNotEqual (Local4, 0xEF))
8534 {
8535 Return (0x15)
8536 }
8537
8538 Store (DerefOf (Index (DerefOf (Index (DEST, 0, )), 5, )), Local4)
8539 If (LNotEqual (Local4, 0xCD))
8540 {
8541 Return (0x16)
8542 }
8543
8544 Store ("Store(Mem,PkgElement) PASS", Debug)
8545
8546
8547 // validate changing source \_SB.MEM.SMD* does not impact DEST
8548 Store (0x12345678, \_SB.MEM.SMD0)
8549
8550 Store (DerefOf (Index (DerefOf (Index (DEST, 0, )), 0, )), Local5)
8551 If (LNotEqual (Local5, 0x67))
8552 {
8553 Return (0x21)
8554 }
8555
8556 Store (DerefOf (Index (DerefOf (Index (DEST, 0, )), 1, )), Local5)
8557 If (LNotEqual (Local5, 0x45))
8558 {
8559 Return (0x22)
8560 }
8561
8562 // validate changing DEST does not impact source \_SB.MEM.SMD*
8563 Store (0x30, Index (DerefOf (Index (DEST, 0)), 0))
8564
8565 Store (DerefOf(Index (DerefOf (Index (DEST, 0)), 0)), Local5)
8566 If (LNotEqual (Local5, 0x30))
8567 {
8568 Return (0x23)
8569 }
8570
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)
8578
8579 If(LNotEqual(Local5, 0x12345678))
8580 {
8581 Return (0x24)
8582 }
8583
8584 Store ("Mem and Pkg independent PASS", Debug)
8585
8586
8587 Return (0)
8588 } // FB2P: store from Field Buffer into Index'ed Package
8589
8590 Method (TEST)
8591 {
8592 Store ("++++++++ IndexOp2 Test", Debug)
8593
8594 // store _BIF package return value into Local0
8595
8596 Store (\_SB.BAT1._BIF, Local0)
8597
8598 // save Local0 object type value into Local1
8599 Store (ObjectType (Local0), Local1)
8600
8601 // validate Local0 is a Package
8602 If (LNotEqual (Local1, 4)) // Package type is 4
8603 {
8604 // failure
8605 Return (2)
8606 }
8607
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)
8612
8613 // call B2IB (store from Buffer into Index'ed Buffer)
8614 Store (B2IB, Local2) // Local2 is B2IB return value
8615
8616 // save Local2 object type value into Local3
8617 Store (ObjectType (Local2), Local3)
8618
8619 // validate Local2 is a Number
8620 If (LNotEqual (Local3, 1)) // Number type is 1
8621 {
8622 // failure
8623 Return (4)
8624 }
8625
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 }
8632
8633 // call FB2P (store from Field Buffer into Index'ed Package)
8634 Store (FB2P, Local2) // Local2 is FB2P return value
8635
8636 // save Local2 object type value into Local3
8637 Store (ObjectType (Local2), Local3)
8638
8639 // validate Local2 is a Number
8640 If (LNotEqual (Local3, 1)) // Number type is 1
8641 {
8642 // failure
8643 Return (5)
8644 }
8645
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 }
8652
8653
8654 Return (0)
8655 } // TEST
8656 } // IDX2: Test device name
8657 } // _SB system bus
8658
8659 //
8660 // test SizeOf.asl
8661 //
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
8670 //
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.
8674 //
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
8685
8686 // Store first string size (Arg0) into Local7
8687 Store (SizeOf (Arg0), Local0)
8688
8689 // save Local0 object type value into Local1
8690 Store (ObjectType (Local0), Local1)
8691
8692 // validate Local0 is a Number
8693 If (LNotEqual (Local1, 1)) // Number type is 1
8694 { Return (0x21) }
8695
8696 // If strings are not of equal size, return error code
8697 If (LNotEqual (Local0, Arg1))
8698 { Return (0x22) }
8699
8700 Return (0)
8701 } // SAR0: SizeOf(Arg) test control method
8702
8703 Method (SARG)
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
8716
8717 Name (PKG2, Package (4)
8718 {
8719 Buffer (15) {},
8720 "String 1",
8721 Package (2) {}
8722 }) // PKG2
8723
8724 // Namespace entry buffer reference
8725 Store (SAR0 (BUFR, 12), Local0)
8726
8727 // save Local0 object type value into Local1
8728 Store (ObjectType (Local0), Local1)
8729
8730 // validate Local0 is a Number
8731 If (LNotEqual (Local1, 1)) // Number type is 1
8732 {
8733 Return (0x23)
8734 }
8735
8736 If (LNotEqual (Local0, 0)) // Local0 is SAR0 return error code
8737 {
8738 Return (Local0)
8739 }
8740
8741 Store ("SizeOf(Arg=BUFR) PASS", Debug)
8742
8743
8744 // Namespace entry package reference
8745 Store (SAR0 (PKG0, 4), Local0)
8746
8747 // save Local0 object type value into Local1
8748 Store (ObjectType (Local0), Local1)
8749
8750 // validate Local0 is a Number
8751 If (LNotEqual (Local1, 1)) // Number type is 1
8752 {
8753 Return (0x24)
8754 }
8755
8756 If (LNotEqual (Local0, 0)) // Local0 is SAR0 return error code
8757 {
8758 Return (Local0)
8759 }
8760
8761 Store ("SizeOf(Arg=PKG0) PASS", Debug)
8762
8763
8764 // Namespace entry string reference
8765 Store (SAR0 (STR0, 6), Local0)
8766
8767 // save Local0 object type value into Local1
8768 Store (ObjectType (Local0), Local1)
8769
8770 // validate Local0 is a Number
8771 If (LNotEqual (Local1, 1)) // Number type is 1
8772 {
8773 Return (0x25)
8774 }
8775
8776 If (LNotEqual (Local0, 0)) // Local0 is SAR0 return error code
8777 {
8778 Return (Local0)
8779 }
8780
8781 Store ("SizeOf(Arg=STR0) PASS", Debug)
8782
8783
8784 // direct string reference
8785 Store (SAR0 ("String", 6), Local0)
8786
8787 // save Local0 object type value into Local1
8788 Store (ObjectType (Local0), Local1)
8789
8790 // validate Local0 is a Number
8791 If (LNotEqual (Local1, 1)) // Number type is 1
8792 {
8793 Return (0x26)
8794 }
8795
8796 If (LNotEqual (Local0, 0)) // Local0 is SAR0 return error code
8797 {
8798 Return (Local0)
8799 }
8800
8801 Store ("SizeOf(Arg=String) PASS", Debug)
8802
8803 Store (0x55, Index (BUF1, 2))
8804
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)
8812
8813 // save Local0 object type value into Local1
8814 Store (ObjectType (Local0), Local1)
8815
8816 // validate Local0 is a Number
8817 If (LNotEqual (Local1, 1)) // Number type is 1
8818 { Return (0x27) }
8819
8820 If (LNotEqual (Local0, 0)) // Local0 is SAR0 return error code
8821 { Return (Local0) }
8822
8823 Store ("SizeOf(Arg=BufferField) PASS", Debug)
8824 ****************************************************/
8825
8826 // Namespace BufferPackageElement reference
8827 //
8828 Store (SAR0 (Index(PKG1, 0), 12), Local0)
8829
8830 // save Local0 object type value into Local1
8831 Store (ObjectType (Local0), Local1)
8832
8833 // validate Local0 is a Number
8834 If (LNotEqual (Local1, 1)) // Number type is 1
8835 {
8836 Return (0x28)
8837 }
8838
8839 If (LNotEqual (Local0, 0)) // Local0 is SAR0 return error code
8840 {
8841 Return (Local0)
8842 }
8843
8844 Store ("SizeOf(Arg=PackageBuffer NTE Reference Element) PASS", Debug)
8845
8846
8847 // Namespace StringPackageElement reference
8848 Store (SAR0 (Index (PKG1, 1, ), 7), Local0)
8849
8850 // save Local0 object type value into Local1
8851 Store (ObjectType (Local0), Local1)
8852
8853 // validate Local0 is a Number
8854 If (LNotEqual (Local1, 1)) // Number type is 1
8855 {
8856 Return (0x29)
8857 }
8858
8859 If (LNotEqual (Local0, 0)) // Local0 is SAR0 return error code
8860 {
8861 Return (Local0)
8862 }
8863
8864 Store ("SizeOf(Arg=Package String Element) PASS", Debug)
8865
8866
8867 // Namespace StringPackageElement reference
8868 Store (SAR0 (Index (PKG1, 2, ), 6), Local0)
8869
8870 // save Local0 object type value into Local1
8871 Store (ObjectType (Local0), Local1)
8872
8873 // validate Local0 is a Number
8874 If (LNotEqual (Local1, 1)) // Number type is 1
8875 {
8876 Return (0x2A)
8877 }
8878
8879 If (LNotEqual (Local0, 0)) // Local0 is SAR0 return error code
8880 {
8881 Return (Local0)
8882 }
8883
8884 Store ("SizeOf(Arg=Package String NTE Reference Element) PASS", Debug)
8885
8886
8887 // Namespace PackagePackageElement reference
8888 Store (SAR0 (Index (PKG1, 3, ), 4), Local0)
8889
8890 // save Local0 object type value into Local1
8891 Store (ObjectType (Local0), Local1)
8892
8893 // validate Local0 is a Number
8894 If (LNotEqual (Local1, 1)) // Number type is 1
8895 {
8896 Return (0x2B)
8897 }
8898
8899 If (LNotEqual (Local0, 0)) // Local0 is SAR0 return error code
8900 {
8901 Return (Local0)
8902 }
8903
8904 Store ("SizeOf(Arg=Package Package NTE Reference Element) PASS", Debug)
8905
8906 // Package Buffer Element
8907 Store (SAR0 (Index (PKG2, 0), 15), Local0)
8908
8909 // save Local0 object type value into Local1
8910 Store (ObjectType (Local0), Local1)
8911
8912 // validate Local0 is a Number
8913 If (LNotEqual (Local1, 1)) // Number type is 1
8914 {
8915 Return (0x2B)
8916 }
8917
8918 If (LNotEqual (Local0, 0)) // Local0 is SAR0 return error code
8919 {
8920 Return (Local0)
8921 }
8922
8923 Store ("SizeOf(Arg=Package Buffer Element) PASS", Debug)
8924
8925 // Package String Element
8926 Store (SAR0 (Index (PKG2, 1), 8), Local0)
8927
8928 // save Local0 object type value into Local1
8929 Store (ObjectType (Local0), Local1)
8930
8931 // validate Local0 is a Number
8932 If (LNotEqual (Local1, 1)) // Number type is 1
8933 {
8934 Return (0x2B)
8935 }
8936
8937 If (LNotEqual (Local0, 0)) // Local0 is SAR0 return error code
8938 {
8939 Return (Local0)
8940 }
8941
8942 Store ("SizeOf(Arg=Package String Element) PASS", Debug)
8943
8944 // Package Package Element
8945 Store (SAR0 (Index (PKG2, 2), 2), Local0)
8946
8947 // save Local0 object type value into Local1
8948 Store (ObjectType (Local0), Local1)
8949
8950 // validate Local0 is a Number
8951 If (LNotEqual (Local1, 1)) // Number type is 1
8952 {
8953 Return (0x2B)
8954 }
8955
8956 If (LNotEqual (Local0, 0)) // Local0 is SAR0 return error code
8957 {
8958 Return (Local0)
8959 }
8960
8961 Store ("SizeOf(Arg=Package Package Element) PASS", Debug)
8962
8963 Store ("SizeOf(Arg) PASS", Debug)
8964
8965 Return (0)
8966 } // SARG: SizeOf(Arg) test control method
8967
8968 Method (SBUF)
8969 { // SBUF: SizeOf(Buffer) test control method
8970 Name (BUFR, Buffer (12) {})
8971
8972 // store size of BUFR buffer into Local0
8973 Store (SizeOf (BUFR), Local0)
8974
8975 // save Local0 object type value into Local1
8976 Store (ObjectType (Local0), Local1)
8977
8978 // validate Local0 is a Number
8979 If (LNotEqual (Local1, 1)) // Number type is 1
8980 {
8981 Return (0x31)
8982 }
8983
8984 If (LNotEqual (Local0, 12)) // BUFR size is 12
8985 {
8986 Return (0x32)
8987 }
8988
8989 Store ("SizeOf(BUFR) PASS", Debug)
8990
8991 Return (0)
8992 } // SBUF: SizeOf(Buffer) test control method
8993
8994
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) {})
9003
9004 // store size of Index(BUFR,2,) buffer into Local0
9005 Store (SizeOf (Index (BUFR, 2, )), Local0)
9006
9007 // save Local0 object type value into Local1
9008 Store (ObjectType (Local0), Local1)
9009
9010 // validate Local0 is a Number
9011 If (LNotEqual (Local1, 1)) // Number type is 1
9012 {
9013 Return (0x41)
9014 }
9015
9016 If (LNotEqual (Local0, 10)) // 12 - 2 = 10
9017 {
9018 Return (0x42)
9019 }
9020
9021 Store ("SizeOf(Index(BUFR,,)) PASS", Debug)
9022
9023 // TBD: strings and packages
9024
9025 Return (0)
9026 } // SIND: SizeOf(Index(,,)) test control method
9027 ****************************************************/
9028
9029 Method (SLOC)
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
9034
9035
9036 // store BUFR Buffer into Local2
9037 Store (BUFR, Local2)
9038
9039 // store size of BUFR buffer into Local0
9040 Store (SizeOf (Local2), Local0)
9041
9042 // save Local0 object type value into Local1
9043 Store (ObjectType (Local0), Local1)
9044
9045 // validate Local0 is a Number
9046 If (LNotEqual (Local1, 1)) // Number type is 1
9047 {
9048 Return (0x51)
9049 }
9050
9051 If (LNotEqual (Local0, 12)) // BUFR size is 12
9052 {
9053 Return (0x52)
9054 }
9055
9056 Store ("SizeOf(Local2=Buffer) PASS", Debug)
9057
9058
9059 // store STR0 string into Local2
9060 Store (STR0, Local2)
9061
9062 // store size of STR0 buffer into Local0
9063 Store (SizeOf (Local2), Local0)
9064
9065 // save Local0 object type value into Local1
9066 Store (ObjectType (Local0), Local1)
9067
9068 // validate Local0 is a Number
9069 If (LNotEqual (Local1, 1)) // Number type is 1
9070 {
9071 Return (0x53)
9072 }
9073
9074 If (LNotEqual (Local0, 6)) // STR0 size is 6
9075 {
9076 Return (0x54)
9077 }
9078
9079 Store ("SizeOf(Local2=String) PASS", Debug)
9080
9081
9082 // store PKG0 Package into Local2
9083 Store (PKG0, Local2)
9084
9085 // store size of PKG0 buffer into Local0
9086 Store (SizeOf (Local2), Local0)
9087
9088 // save Local0 object type value into Local1
9089 Store (ObjectType (Local0), Local1)
9090
9091 // validate Local0 is a Number
9092 If (LNotEqual (Local1, 1)) // Number type is 1
9093 {
9094 Return (0x55)
9095 }
9096
9097 If (LNotEqual (Local0, 4)) // PKG0 size is 4
9098 {
9099 Return (0x56)
9100 }
9101
9102 Store ("SizeOf(Local2=Package) PASS", Debug)
9103
9104
9105 Return (0)
9106 } // SLOC: SizeOf(Local) test control method
9107
9108 Method (TEST)
9109 {
9110 Store ("++++++++ SizeOf Test", Debug)
9111
9112 // Store current operating system string into Local0
9113 Store (_OS, Local0)
9114
9115 Store (SizeOf (_OS), Local3)
9116
9117 // save Local3 object type value into Local4
9118 Store (ObjectType (Local3), Local4)
9119
9120 // validate Local3 is a Number
9121 If (LNotEqual (Local4, 1)) // Number type is 1
9122 {
9123 // failure
9124 Return (0x61)
9125 }
9126
9127 // Store current operating system string into Local0
9128 // This verifies above SizeOf(_OS) did not corrupt ACPI namespace
9129 Store (_OS, Local0)
9130
9131 // Store SARG [Validate SizeOf(Arg)] return value into Local1
9132 Store (SARG, Local1)
9133
9134 // save Local1 object type value into Local2
9135 Store (ObjectType (Local1), Local2)
9136
9137 // validate Local1 is a Number
9138 If (LNotEqual (Local2, 1)) // Number type is 1
9139 {
9140 // failure
9141 Return (0x62)
9142 }
9143
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 }
9150
9151
9152 // Store SBUF [Validate SizeOf(Buffer)] return value into Local1
9153 Store (SBUF, Local1)
9154
9155 // save Local1 object type value into Local2
9156 Store (ObjectType (Local1), Local2)
9157
9158 // validate Local1 is a Number
9159 If (LNotEqual (Local2, 1)) // Number type is 1
9160 {
9161 // failure
9162 Return (0x63)
9163 }
9164
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 }
9171
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)
9179
9180 // save Local1 object type value into Local2
9181 Store (ObjectType (Local1), Local2)
9182
9183 // validate Local1 is a Number
9184 If (LNotEqual (Local2, 1)) // Number type is 1
9185 {
9186 // failure
9187 Return (0x64)
9188 }
9189
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 ****************************************************/
9197
9198 // Store SLOC [verify SizeOf(Local)] return value into Local1
9199 Store (SLOC, Local1)
9200
9201 // save Local1 object type value into Local2
9202 Store (ObjectType (Local1), Local2)
9203
9204 // validate Local1 is a Number
9205 If (LNotEqual (Local2, 1)) // Number type is 1
9206 {
9207 // failure
9208 Return (0x65)
9209 }
9210
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 }
9217
9218
9219 // TBD: SizeOf (METH) -- where METH control method returns
9220 // buffer, BufferField, string, package, package element
9221
9222
9223 Return (0)
9224 } // TEST
9225 } // SIZO
9226
9227 //
9228 // test SmiShare.asl
9229 //
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)
9234
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
9242
9243 Field (RAM1, WordAcc, NoLock, WriteAsZeros)
9244 {
9245 WRD, 16
9246 } // End 2nd Field RAM1
9247
9248 Field (RAM1, ByteAcc, NoLock, WriteAsOnes)
9249 {
9250 BYTE, 8
9251 } // End 3rd Field RAM1
9252
9253 Field (RAM1, ByteAcc, NoLock, Preserve)
9254 {
9255 SMIC, 8,
9256 SMID, 8
9257 }
9258
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
9269
9270 Device (MWRD)
9271 {
9272 Method (_INI)
9273 {
9274 Store (0, WRD)
9275 } // End _INI Method
9276 } // End Device MWRD
9277
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
9287
9288 /*
9289 // Declare an OpRegion in Memory starting at offset 0x400000 that is 10 bytes long
9290 OperationRegion(\RAM1, SystemMemory, 0x400000, 0xA)
9291
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
9299
9300 Field (\RAM1, WordAcc, NoLock, WriteAsZeros)
9301 {
9302 WRD, 16
9303 } // End 2nd Field RAM1
9304
9305 Field (\RAM1, ByteAcc, NoLock, WriteAsOnes)
9306 {
9307 BYTE, 8
9308 } // End 3rd Field RAM1
9309
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
9320
9321 Method (EVNT)
9322 {
9323 Store (SMIX, Local0)
9324
9325 If (And (Local0, 0x01))
9326 { Notify (\_SB_.SMIS, 0x21)}
9327
9328 If (And (Local0, 0x02))
9329 { Notify (\_SB_.SMIS, 0x22)}
9330
9331 If (And (Local0, 0x04))
9332 { Notify (\_SB_.SMIS, 0x24)}
9333
9334 If (And (Local0, 0x08))
9335 { Notify (\_SB_.SMIS, 0x28)}
9336
9337 } // End Method EVNT
9338
9339 Device (SMIS)
9340 {
9341 Method (BINK)
9342 {
9343 Store (0, Local0) // Zero out Local0
9344
9345 If (LNotEqual (SMID, 0xD))
9346 { Or (0x80, Local0, Local0)}
9347
9348 If (LNotEqual (SMIC, 0xC))
9349 { Or (0x40, Local0, Local0)}
9350
9351 If (LNotEqual (BYTE, 0))
9352 { Or (0x20, Local0, Local0)}
9353
9354 If (LNotEqual (WRD, 0))
9355 { Or (0x10, Local0, Local0)}
9356
9357 If (LNotEqual (LST2, 0))
9358 { Or (0x8, Local0, Local0)}
9359
9360 If (LNotEqual (BI3T, 0x7))
9361 { Or (0x4, Local0, Local0)}
9362
9363 If (LNotEqual (BI2T, 0x3))
9364 { Or (0x2, Local0, Local0)}
9365
9366 If (LNotEqual (BI1T, 0))
9367 { Or (0x1, Local0, Local0)}
9368
9369 Return (Local0)
9370 } // End Method BINK
9371
9372 Method (TEST)
9373 {
9374 Store ("++++++++ SmiShare Test", Debug)
9375
9376 // Expect EVNT to generate Notify value we just previously
9377 // stored in BYTE
9378 Store (0x20, BYTE)
9379 EVNT ()
9380 Store (0x21, BYTE)
9381 EVNT ()
9382 Store (0x22, BYTE)
9383 EVNT ()
9384 Store (0x23, BYTE)
9385 EVNT ()
9386
9387 Return (0) // pass
9388 } // End Method TEST
9389 } // Device SMIS
9390
9391 Device(CNDT)
9392 {
9393 Method(TEST)
9394 {
9395 If (ECOK)
9396 {
9397 return("Broken")
9398 }
9399 Else
9400 {
9401 return("Works")
9402 }
9403 }
9404
9405 Method(ECOK)
9406 {
9407 Return(0x0)
9408 }
9409 }
9410
9411 } // _SB system bus
9412
9413
9414 /* Test a very big buffer */
9415
9416 Name(WQAB, Buffer(6756)
9417 {
9418 0x46,0x4F,0x4D,0x42,0x01,0x00,0x00,0x00,
9419 0x54,0x1A,0x00,0x00,0xBA,0xAD,0x00,0x00,
9420 0x44,0x53,0x00,0x01,0x1A,0x7D,0xDA,0x54,
9421 0x98,0xBD,0x92,0x00,0x01,0x06,0x18,0x42,
9422 0x10,0x47,0x10,0x92,0x46,0x62,0x02,0x89,
9423 0x80,0x90,0x18,0x18,0x14,0x81,0x85,0x00,
9424 0x49,0x02,0x88,0xC4,0x41,0xE1,0x20,0xD4,
9425 0x9F,0x40,0x7E,0x05,0x20,0x74,0x28,0x40,
9426 0xA6,0x00,0x83,0x02,0x9C,0x22,0x88,0xA0,
9427 0x57,0x01,0x36,0x05,0x98,0x14,0x60,0x51,
9428 0x80,0x76,0x01,0x96,0x05,0xE8,0x16,0x20,
9429 0x1D,0x96,0x88,0x04,0x47,0x89,0x01,0x47,
9430 0xE9,0xC4,0x16,0x6E,0xD8,0xE0,0x85,0xA2,
9431 0x68,0x06,0x51,0x12,0x94,0x8B,0x20,0x5D,
9432 0x10,0x52,0x2E,0xC0,0x37,0x82,0x06,0x10,
9433 0xA5,0x77,0x01,0xB6,0x05,0x98,0x86,0x27,
9434 0xD2,0x20,0xE4,0x60,0x08,0x54,0xCE,0x80,
9435 0x20,0x69,0x44,0x21,0x1E,0xA7,0x44,0x08,
9436 0x0A,0x84,0x90,0xD4,0xF1,0xA0,0xA0,0x71,
9437 0x88,0xAD,0xCE,0x46,0x93,0xA9,0x74,0x7E,
9438 0x48,0x82,0x70,0xC6,0x2A,0x7E,0x3A,0x9A,
9439 0xD0,0xD9,0x9C,0x60,0xE7,0x18,0x72,0x3C,
9440 0x48,0xF4,0x20,0xB8,0x00,0x0F,0x1C,0x2C,
9441 0x34,0x84,0x22,0x6B,0x80,0xC1,0x8C,0xDD,
9442 0x63,0xB1,0x0B,0x4E,0x0A,0xEC,0x61,0xB3,
9443 0x01,0x19,0xA2,0x24,0x38,0xD4,0x11,0xC0,
9444 0x12,0x05,0x98,0x1F,0x87,0x0C,0x0F,0x95,
9445 0x8C,0x25,0x24,0x1B,0xAB,0x87,0xC2,0xA5,
9446 0x40,0x68,0x6C,0x27,0xED,0x19,0x45,0x2C,
9447 0x79,0x4A,0x82,0x49,0xE0,0x51,0x44,0x36,
9448 0x1A,0x27,0x28,0x1B,0x1A,0x25,0x03,0x42,
9449 0x9E,0x05,0x58,0x07,0x26,0x04,0x76,0x2F,
9450 0xC0,0x9A,0x00,0x73,0xB3,0x90,0xB1,0xB9,
9451 0xE8,0xFF,0x0F,0x71,0xB0,0x31,0xDA,0x9A,
9452 0xAE,0x90,0xC2,0xC4,0x88,0x12,0x2C,0x5E,
9453 0xC5,0xC3,0x10,0xCA,0x93,0x42,0xA8,0x48,
9454 0x95,0xA1,0x68,0xB4,0x51,0x2A,0x14,0xE0,
9455 0x4C,0x80,0x30,0x5C,0x1D,0x03,0x82,0x46,
9456 0x88,0x15,0x29,0x56,0xFB,0x83,0x20,0xF1,
9457 0x2D,0x40,0x54,0x01,0xA2,0x48,0xA3,0x41,
9458 0x9D,0x03,0x3C,0x5C,0x0F,0xF5,0xF0,0x3D,
9459 0xF6,0x93,0x0C,0x72,0x90,0x67,0xF1,0xA8,
9460 0x70,0x9C,0x06,0x49,0xE0,0x0B,0x80,0x4F,
9461 0x08,0x1E,0x38,0xDE,0x35,0xA0,0x66,0x7C,
9462 0xBC,0x4C,0x10,0x1C,0x6A,0x88,0x1E,0x68,
9463 0xB8,0x13,0x38,0x44,0x06,0xE8,0x49,0x3D,
9464 0x52,0x60,0x07,0x77,0x32,0xEF,0x01,0xAF,
9465 0x0A,0xCD,0x5E,0x12,0x08,0xC1,0xF1,0xF8,
9466 0x7E,0xC0,0x26,0x9C,0xC0,0xF2,0x07,0x81,
9467 0x1A,0x99,0xA1,0x3D,0xCA,0xD3,0x8A,0x19,
9468 0xF2,0x31,0xC1,0x04,0x16,0x0B,0x21,0x05,
9469 0x10,0x1A,0x0F,0xF8,0x6F,0x00,0x8F,0x17,
9470 0xBE,0x12,0xC4,0xF6,0x80,0x12,0x0C,0x0B,
9471 0x21,0x23,0xAB,0xF0,0x78,0xE8,0x28,0x7C,
9472 0x95,0x38,0x9C,0xD3,0x8A,0x67,0x82,0xE1,
9473 0x20,0xF4,0x05,0x90,0x00,0x51,0xE7,0x0C,
9474 0xD4,0x61,0xC1,0xE7,0x04,0x76,0x33,0x38,
9475 0x83,0x47,0x00,0x8F,0xE4,0x84,0xFC,0x2B,
9476 0xF1,0xC0,0xE0,0x03,0xE2,0xEF,0x1F,0xA7,
9477 0xEC,0x11,0x9C,0xA9,0x01,0x7D,0x1C,0xF0,
9478 0xFF,0x7F,0x28,0x7C,0x88,0x1E,0xDF,0x29,
9479 0x1F,0xAF,0x4F,0x17,0x96,0x35,0x4E,0xE8,
9480 0x77,0x08,0x9F,0x38,0x7C,0x64,0x71,0x44,
9481 0x08,0x39,0x39,0x05,0xA0,0x81,0x4F,0xF7,
9482 0xEC,0x22,0x9C,0xAE,0x27,0xE5,0x40,0xC3,
9483 0xA0,0xE3,0x04,0xC7,0x79,0x00,0x1C,0xE3,
9484 0x84,0x7F,0x2E,0x80,0x3F,0x40,0x7E,0xCA,
9485 0x78,0xC5,0x48,0xE0,0x98,0x23,0x44,0x9F,
9486 0x6B,0x3C,0x42,0x2C,0xFC,0x53,0x45,0xE1,
9487 0x03,0x21,0x63,0x04,0x17,0xA0,0xC7,0x08,
9488 0x7C,0x03,0x8E,0x11,0x7D,0x94,0xE0,0xEA,
9489 0x0F,0x1A,0x74,0x80,0xB8,0xFF,0xFF,0x00,
9490 0xE1,0x83,0x7A,0x80,0xC0,0x37,0xFA,0xD1,
9491 0x03,0x3D,0x2E,0x8B,0x3E,0x0F,0xC8,0xF8,
9492 0x89,0x46,0xF3,0xE2,0xA7,0x03,0x7E,0xF8,
9493 0x00,0x0F,0xA8,0x87,0x84,0x03,0xC5,0x4C,
9494 0x9B,0x83,0x3E,0xBB,0x1C,0x3A,0x76,0xB8,
9495 0xE0,0x3F,0x81,0x80,0x4B,0xDE,0x21,0x0C,
9496 0x14,0x23,0xC6,0x9F,0x83,0x7C,0x0A,0x03,
9497 0xFF,0xFF,0xFF,0x14,0x06,0xFE,0xE1,0xF0,
9498 0x20,0x4F,0x07,0x9F,0xB6,0xA8,0x74,0x18,
9499 0xD4,0x81,0x0B,0xB0,0x32,0x89,0x08,0xCF,
9500 0x12,0xB5,0x41,0xE8,0xD4,0xF0,0x36,0xF1,
9501 0xB6,0xE5,0x5B,0x40,0x9C,0xD3,0xEC,0xED,
9502 0xC0,0x45,0x30,0x22,0xD4,0x0C,0x45,0x4E,
9503 0x5A,0x11,0x63,0x44,0x79,0xDC,0x32,0xCA,
9504 0xDB,0xD6,0x0B,0x40,0xBC,0x13,0x7B,0xDE,
9505 0x32,0x46,0xF0,0xC8,0x0F,0x5C,0x2C,0xC6,
9506 0xEA,0xF5,0x5F,0xF3,0x81,0x0B,0x70,0xF6,
9507 0xFF,0x3F,0x70,0x01,0x1C,0x0A,0x7A,0x18,
9508 0x42,0x0F,0xC3,0x53,0x39,0x97,0x87,0xC8,
9509 0x53,0x89,0x18,0x35,0x4C,0xD4,0x67,0x28,
9510 0xDF,0x2D,0x7C,0x20,0x02,0xDF,0x99,0x0B,
9511 0xF8,0xFD,0xFF,0x0F,0x44,0x70,0x8E,0x29,
9512 0xB8,0x33,0x0D,0x78,0x7C,0xCE,0x40,0x20,
9513 0xA7,0xE2,0x43,0x0D,0x60,0x41,0xF4,0x13,
9514 0xC2,0x27,0x1A,0x2A,0x13,0x06,0x75,0xA8,
9515 0x01,0xAC,0x5C,0x61,0x9E,0x46,0xCF,0xF9,
9516 0x59,0xC6,0xA7,0x1A,0x1F,0x4A,0x8D,0x63,
9517 0x88,0x97,0x99,0x87,0x1A,0x1F,0x0B,0x5E,
9518 0x49,0x7D,0xA8,0x31,0x54,0x9C,0x87,0x1A,
9519 0x0F,0x37,0x50,0xD4,0x37,0x9B,0x67,0x1B,
9520 0xA3,0xC7,0xF7,0x0D,0xD5,0x10,0x0F,0x35,
9521 0x4C,0xF2,0x4A,0x35,0x16,0x1F,0x6A,0xC0,
9522 0xF1,0xFF,0x3F,0xD4,0x00,0xFC,0xFF,0xFF,
9523 0x1F,0x6A,0x00,0x47,0x47,0x03,0x38,0x47,
9524 0x46,0xDC,0xD1,0x00,0x5C,0x87,0x52,0xE0,
9525 0x70,0x34,0x00,0x1E,0x47,0x21,0x30,0x5F,
9526 0x68,0x7C,0x14,0x02,0x16,0xFF,0xFF,0xA3,
9527 0x10,0xF8,0x65,0x9F,0x83,0x50,0x42,0x8F,
9528 0x42,0x80,0xA0,0xDB,0xCF,0x53,0xC4,0xB3,
9529 0x8F,0x2F,0x3F,0x0F,0x04,0x11,0x5E,0xF3,
9530 0x7D,0x0A,0xF2,0x21,0xDF,0x47,0x21,0x06,
9531 0x63,0x28,0x5F,0x83,0x7C,0x14,0x62,0x50,
9532 0xAF,0x41,0xBE,0xEF,0x1B,0xE4,0xF1,0x22,
9533 0x48,0xEC,0x67,0x02,0x1F,0x85,0x98,0xE8,
9534 0xA3,0x10,0xA0,0xF0,0xFF,0x7F,0x14,0x02,
9535 0xF8,0xFF,0xFF,0x3F,0x0A,0x01,0xCE,0x02,
9536 0x1C,0x0D,0x40,0x37,0xAD,0x47,0x21,0xF0,
9537 0xDE,0x59,0x4E,0xFB,0x04,0x7C,0x16,0x02,
9538 0xCC,0xFE,0xFF,0xCF,0x42,0xC0,0xEC,0x28,
9539 0x74,0x14,0x67,0xF9,0x2A,0xF4,0x04,0xF0,
9540 0x02,0x10,0x23,0xCC,0x3B,0xD0,0x4B,0x26,
9541 0xBB,0x8B,0x1B,0xE7,0xC9,0xE5,0x2C,0x9E,
9542 0xC4,0x7D,0x09,0xF2,0x81,0xE2,0x59,0xC8,
9543 0x50,0xA7,0x1B,0xF4,0x8D,0xDC,0x03,0x8B,
9544 0x19,0x3F,0xC4,0xF3,0x90,0x21,0x9E,0x85,
9545 0x00,0x76,0xFD,0xFF,0xCF,0x42,0x00,0xFF,
9546 0xFF,0xFF,0x47,0x03,0xF8,0x2F,0x00,0x9F,
9547 0x85,0x80,0xE7,0x09,0xE0,0x41,0xDB,0x67,
9548 0x21,0x80,0x33,0x87,0xCB,0xF3,0x7F,0x05,
9549 0x3A,0x96,0xF7,0x08,0xCF,0xFA,0x24,0x5F,
9550 0x2F,0x3D,0xD3,0x87,0x82,0x67,0x21,0x86,
9551 0x75,0x18,0x3E,0x0B,0x31,0x88,0x17,0x4D,
9552 0x43,0xBC,0x70,0xFA,0x30,0xE0,0xFF,0x3F,
9553 0x5E,0xE0,0x57,0x4E,0x03,0x05,0x09,0xF4,
9554 0x2C,0x04,0x30,0xFE,0xFF,0x7F,0x16,0x02,
9555 0xC8,0xB8,0x46,0x9D,0x85,0x80,0xE5,0x6D,
9556 0xE5,0x19,0xDB,0xA7,0x95,0x04,0xFF,0xFF,
9557 0x67,0x21,0xC0,0x41,0x2E,0x23,0x07,0x21,
9558 0x4C,0xC4,0x87,0x83,0x8F,0x99,0x80,0x9E,
9559 0x29,0xBE,0xB8,0x1B,0xE3,0x09,0xE0,0x45,
9560 0xE2,0x31,0x93,0x1D,0x35,0x0D,0xF3,0x2C,
9561 0x64,0xBC,0xB3,0x78,0x0D,0x78,0x82,0xF7,
9562 0xE4,0x9F,0x85,0x18,0xD8,0x61,0x05,0x7B,
9563 0x14,0x32,0xA8,0xC1,0x63,0x87,0x08,0x13,
9564 0xE8,0x59,0x88,0xC5,0x7D,0xAE,0xE8,0x3C,
9565 0xE1,0xB3,0x10,0xF0,0xFE,0xFF,0x9F,0x25,
9566 0xE0,0x5E,0x0D,0x9E,0x85,0x00,0x13,0x87,
9567 0x0D,0x9F,0x35,0xC0,0x33,0x7C,0x8F,0xEA,
9568 0x1C,0x1E,0x8F,0x81,0x7F,0x56,0x1D,0xE7,
9569 0x04,0x96,0x7B,0xD1,0xB2,0x71,0xA0,0xA1,
9570 0x23,0xB2,0x3A,0x20,0x8D,0x0D,0x73,0x29,
9571 0x89,0x7C,0x72,0x6C,0xD4,0x56,0x04,0xA7,
9572 0x33,0x93,0x4F,0x00,0xD6,0x42,0x21,0x05,
9573 0x34,0x1A,0x8B,0xE1,0x9D,0xF9,0xE8,0x44,
9574 0x41,0x0C,0xE8,0xE3,0x90,0x6D,0x1C,0x0A,
9575 0x50,0x7B,0xD1,0x14,0xC8,0x39,0x07,0xA3,
9576 0x7F,0x76,0x74,0x36,0xBE,0x13,0x70,0x0D,
9577 0x10,0x3A,0x25,0x18,0xDA,0x6A,0x04,0xFC,
9578 0xFF,0x67,0x89,0x01,0x33,0xFE,0x53,0x8C,
9579 0x09,0x7C,0x8E,0xC1,0x1F,0x0C,0xF0,0x03,
9580 0x7F,0x31,0xA8,0xFA,0x5E,0xA0,0xFB,0x82,
9581 0xD5,0xDD,0x64,0x20,0xCC,0xC8,0x04,0xF5,
9582 0x9D,0x0E,0x40,0x01,0xE4,0x0B,0x81,0xCF,
9583 0x51,0x0F,0x05,0x6C,0x22,0x21,0xC2,0x44,
9584 0x33,0x3A,0x62,0xC2,0xA8,0xE8,0x13,0xA6,
9585 0x20,0x9E,0xB0,0x63,0x4D,0x18,0x3D,0x13,
9586 0x5F,0x74,0xD8,0x88,0x31,0x21,0xAE,0x1E,
9587 0xD0,0x26,0x18,0xD4,0x97,0x22,0x58,0x43,
9588 0xE6,0x63,0xF1,0x05,0x02,0x37,0x65,0x30,
9589 0xCE,0x89,0x5D,0x13,0x7C,0xD9,0xC1,0xCD,
9590 0x19,0x8C,0xF0,0x98,0xBB,0x18,0xBF,0x3A,
9591 0x79,0x74,0xFC,0xA0,0xE0,0x1B,0x0E,0xC3,
9592 0x7E,0x32,0xF3,0x8C,0xDE,0xCB,0x7C,0x8D,
9593 0xC3,0xC0,0x7A,0xBC,0x1C,0xD6,0x68,0x61,
9594 0x0F,0xED,0x3D,0xC4,0xFF,0xFF,0x43,0x8C,
9595 0xCF,0x13,0xC6,0x08,0xEB,0xDB,0x0B,0x38,
9596 0xEE,0x59,0xF0,0xEF,0x1A,0xE0,0xB9,0x84,
9597 0xF8,0xAE,0x01,0x30,0xF0,0xFF,0x7F,0xD7,
9598 0x00,0x4E,0xD7,0x04,0xDF,0x35,0x80,0xF7,
9599 0xD0,0x7D,0xD7,0x00,0xAE,0xD9,0xEF,0x1A,
9600 0xA8,0x63,0x80,0x15,0xDE,0x35,0xA0,0x5D,
9601 0xD9,0xDE,0xD7,0x9E,0xB0,0xAC,0xE9,0xB2,
9602 0x81,0x52,0x73,0xD9,0x00,0x14,0xFC,0xFF,
9603 0x2F,0x1B,0x80,0x01,0x29,0x13,0x46,0x85,
9604 0x9F,0x30,0x05,0xF1,0x84,0x1D,0xEC,0xB2,
9605 0x01,0x8A,0x18,0x97,0x0D,0xD0,0x8F,0xED,
9606 0x65,0x03,0x18,0xDC,0x13,0xF8,0x6D,0x03,
9607 0x78,0x43,0xFA,0xB6,0x01,0xD6,0xFF,0xFF,
9608 0x6D,0x03,0xAC,0xF9,0x6F,0x1B,0x28,0x0E,
9609 0xAB,0xBC,0x6D,0x40,0x3C,0xC9,0x33,0x02,
9610 0xAB,0xBA,0x6E,0xA0,0xF4,0x5C,0x37,0x00,
9611 0x12,0x88,0x99,0x30,0x2A,0xFE,0x84,0x29,
9612 0x88,0x27,0xEC,0x68,0xD7,0x0D,0x50,0x04,
9613 0xB9,0x6E,0x80,0x7E,0x5E,0x09,0xFE,0xFF,
9614 0xAF,0x1B,0xC0,0xE0,0xA2,0x80,0xB9,0x6F,
9615 0x00,0x6F,0x58,0x7E,0xDF,0x00,0x7C,0xDC,
9616 0xC4,0x31,0xF7,0x0D,0xC0,0xCC,0xFF,0xFF,
9617 0xBE,0x01,0xB0,0xE7,0xA2,0x80,0xBB,0x6F,
9618 0x00,0xEF,0x8B,0xB4,0xEF,0x1B,0x60,0xFE,
9619 0xFF,0xDF,0x37,0xC0,0x28,0x6D,0xFD,0x1E,
9620 0x1C,0x3D,0x21,0x78,0x7C,0xB8,0xFB,0xA5,
9621 0xC7,0xE7,0xBB,0x39,0x38,0x06,0x79,0x8C,
9622 0x87,0x76,0xC0,0xAF,0xEF,0x9E,0x98,0xEF,
9623 0xE6,0xC0,0xFF,0x4C,0x70,0x3C,0x18,0x68,
9624 0x1C,0x62,0xAB,0x97,0x06,0x72,0x34,0x38,
9625 0x3F,0xDC,0x19,0x81,0x61,0x15,0x7F,0xF2,
9626 0x47,0x38,0xC7,0xD0,0xD9,0xE1,0x20,0xB1,
9627 0x83,0xE0,0xC1,0x56,0x6D,0x02,0x85,0x86,
9628 0x50,0x14,0x18,0x14,0x8B,0x0F,0x18,0xF8,
9629 0x61,0xB3,0xB3,0x00,0x93,0x04,0x87,0x3A,
9630 0x02,0xF8,0x3E,0xD1,0xFC,0x38,0x74,0x37,
9631 0x38,0x54,0x8F,0xE5,0xA1,0x80,0x9E,0x01,
9632 0x71,0xC7,0x0C,0x32,0x69,0xCF,0x28,0xE2,
9633 0x53,0xC2,0x29,0x85,0x49,0xE0,0xF3,0x03,
9634 0x43,0xE3,0x04,0xAF,0x0D,0xA1,0xF9,0xFF,
9635 0xFF,0xA4,0xC0,0x3C,0xDF,0x31,0x04,0x6C,
9636 0x02,0xBB,0xBF,0x64,0xC8,0xDA,0xC0,0x75,
9637 0x4B,0x32,0x44,0x6F,0x38,0xB2,0x85,0xA2,
9638 0xE9,0x44,0x79,0xDF,0x88,0x62,0x67,0x08,
9639 0xC2,0x88,0x12,0x2C,0xC8,0xA3,0x42,0xAC,
9640 0x28,0x2F,0x05,0x46,0x88,0x18,0xE2,0x95,
9641 0x23,0xD0,0x09,0x87,0x0F,0xF2,0xD8,0x14,
9642 0xA7,0xFD,0x41,0x90,0x58,0x4F,0x02,0x8D,
9643 0xC5,0x91,0x46,0x83,0x3A,0x07,0x78,0xB8,
9644 0x3E,0xC4,0x78,0xF8,0x0F,0x21,0x06,0x39,
9645 0xC8,0x73,0x7B,0x54,0x38,0x4E,0x5F,0x25,
9646 0x4C,0xF0,0x02,0xE0,0x83,0x0A,0x1C,0xD7,
9647 0x80,0x9A,0xF1,0x33,0x06,0x58,0x8E,0xE3,
9648 0x3E,0xA9,0xC0,0x1D,0x8F,0xEF,0x07,0x6C,
9649 0xC2,0x09,0x2C,0x7F,0x10,0xA8,0xE3,0x0C,
9650 0x9F,0xE7,0x0B,0x8B,0x21,0x1F,0x13,0x4C,
9651 0x60,0xB1,0x27,0x1B,0x3A,0x1E,0xF0,0xDF,
9652 0x63,0x1E,0x2F,0x7C,0x32,0xF1,0x7C,0x4D,
9653 0x30,0x22,0x84,0x9C,0x8C,0x07,0x7D,0x87,
9654 0xC0,0x5C,0x6F,0xD8,0xB9,0x85,0x8B,0x3A,
9655 0x68,0xA0,0x4E,0x0B,0x3E,0x28,0xB0,0x9B,
9656 0x11,0xE6,0xB8,0xCE,0xCF,0x2A,0x60,0xF8,
9657 0xFF,0x9F,0x55,0x60,0x8F,0x10,0xFE,0xED,
9658 0xC1,0xF3,0xF2,0x95,0xE1,0xD5,0x21,0x81,
9659 0x43,0x8E,0x10,0x3D,0x2E,0x8F,0x10,0x73,
9660 0x3E,0xC2,0x0C,0x11,0x5C,0x67,0x01,0x70,
9661 0x0C,0x11,0xF8,0x1C,0x70,0xC0,0x71,0x69,
9662 0xE2,0x03,0xF5,0x01,0x07,0x70,0x70,0x4D,
9663 0xC3,0x1D,0x70,0xC0,0x71,0x16,0x60,0xFF,
9664 0xFF,0xC3,0x0D,0x2C,0x49,0x26,0x0E,0x23,
9665 0x18,0x11,0x30,0x28,0x02,0x02,0xA4,0xB3,
9666 0x80,0x0F,0x29,0x00,0x1F,0xAE,0x0C,0x0F,
9667 0x29,0xD8,0x93,0x86,0x07,0x8E,0x1B,0x85,
9668 0x07,0x8D,0x0B,0x30,0x68,0x7A,0xE2,0x80,
9669 0x7F,0x4C,0xF0,0x19,0x05,0x1C,0xE3,0x06,
9670 0xDF,0x2A,0x0C,0xFC,0xFF,0x3F,0x30,0xCC,
9671 0xE1,0xC2,0x63,0x39,0x8A,0xA0,0x07,0x1E,
9672 0xD4,0xF7,0x8C,0x33,0xF7,0x24,0x8F,0xD1,
9673 0x51,0x0F,0x27,0xF4,0xE4,0x85,0x3B,0x57,
9674 0xF9,0x0A,0x71,0x14,0x18,0xB8,0x77,0x29,
9675 0x8F,0xCF,0x17,0x2B,0xC3,0x63,0x46,0xFB,
9676 0x1E,0x72,0xD6,0x11,0x02,0xE2,0x2F,0x75,
9677 0x6C,0xC0,0x60,0x39,0x18,0x00,0x87,0x01,
9678 0xE3,0x13,0x0D,0x58,0x67,0x1B,0x3C,0xF4,
9679 0x69,0x31,0xC4,0xE3,0x0B,0xFB,0x56,0x61,
9680 0x82,0xEA,0x41,0x75,0x12,0xF4,0xD0,0xC0,
9681 0x01,0xE8,0xA1,0xC1,0x3F,0xB9,0x90,0xFB,
9682 0x2B,0x1D,0x82,0xB5,0xE2,0x69,0xDE,0x47,
9683 0x1E,0xF3,0xDC,0xA2,0xBC,0x0D,0x3C,0x07,
9684 0xF0,0xD3,0x82,0x87,0xE3,0x63,0x81,0xC7,
9685 0xE9,0x4B,0x58,0x82,0xF7,0x1A,0x9F,0x6C,
9686 0x1E,0x5C,0x58,0xB2,0x21,0xA0,0x06,0xEB,
9687 0x21,0x60,0xA6,0x9A,0xC0,0x49,0x46,0x80,
9688 0xCA,0x00,0xA1,0x1B,0xCB,0xE9,0x3E,0x8B,
9689 0x84,0x38,0xCD,0x47,0x99,0xC7,0x02,0x8F,
9690 0xF5,0xC1,0xC0,0xFF,0x7F,0xCD,0x23,0xD4,
9691 0x7D,0xCD,0x33,0x7B,0x3A,0xC0,0xAC,0x22,
9692 0xDC,0x7B,0xCE,0x1B,0x86,0xD1,0x9E,0x2D,
9693 0x7C,0xCD,0x78,0xD6,0x34,0x42,0x38,0x76,
9694 0x83,0xF3,0x48,0x8C,0xF0,0x82,0xC0,0x4E,
9695 0x0C,0x0F,0x30,0xC6,0x39,0x79,0xC3,0xFA,
9696 0xC2,0xCB,0x40,0x83,0x19,0xDB,0x97,0x01,
9697 0x36,0x2A,0xDF,0x88,0xC0,0x97,0xFC,0x62,
9698 0x00,0x65,0x16,0xBE,0x9E,0xF8,0xA0,0xC4,
9699 0x2E,0x06,0x2C,0xE5,0xC5,0x00,0x54,0x37,
9700 0x0C,0x5F,0x0C,0xE0,0x5F,0x89,0x5E,0x0C,
9701 0xC0,0x70,0x71,0xF2,0x3D,0xC0,0x1E,0xEE,
9702 0xA3,0x74,0x9C,0xBE,0xFD,0xBD,0x19,0xF8,
9703 0x6C,0xC0,0x60,0x3C,0xC3,0x30,0xC6,0x08,
9704 0xE3,0x51,0x86,0x31,0xC1,0xDC,0xB7,0x03,
9705 0xE8,0x39,0x87,0x81,0x4A,0x78,0x3B,0x80,
9706 0x72,0x0E,0xE8,0xF2,0x68,0x42,0x4F,0x01,
9707 0x4F,0x07,0x3E,0x29,0x1A,0xA2,0xAF,0xB1,
9708 0x0A,0x26,0x50,0xC4,0x07,0x0D,0x3E,0xB5,
9709 0x28,0x3E,0x15,0x78,0x2D,0xCF,0x4E,0xE1,
9710 0xE2,0x9C,0x89,0xA7,0x6A,0x38,0x03,0xBD,
9711 0xE6,0x86,0x63,0xFF,0x7F,0x38,0xFC,0xA9,
9712 0xE0,0x35,0x80,0x1D,0x24,0x3D,0x2D,0x23,
9713 0xC2,0x38,0xA4,0x3C,0x32,0xF8,0xB6,0x18,
9714 0xC7,0x90,0x0F,0x91,0xBE,0x13,0x18,0xF2,
9715 0x21,0xEF,0x79,0xC7,0xC0,0xAF,0x08,0x71,
9716 0x9E,0xB2,0x7C,0x67,0xF0,0x65,0x01,0x7C,
9717 0x91,0x2E,0x0B,0x68,0x68,0x9F,0x64,0x7C,
9718 0x41,0x30,0xEC,0x89,0xB3,0x00,0x77,0x05,
9719 0x50,0x81,0xFA,0xAE,0x00,0xFF,0x42,0xF0,
9720 0xAE,0x00,0x86,0x79,0xF9,0x56,0xC0,0x35,
9721 0x1D,0x4A,0xD0,0x67,0x12,0x5F,0x17,0x70,
9722 0x53,0x64,0xA9,0x8E,0x0A,0xD0,0x53,0x4C,
9723 0x02,0x75,0x47,0xF7,0x51,0x01,0xC6,0x4D,
9724 0xD9,0x07,0x54,0x76,0x5A,0x60,0x67,0x21,
9725 0x76,0x1D,0xC1,0x5D,0x49,0x18,0xCA,0xB3,
9726 0x81,0x2F,0x59,0xFC,0x70,0x00,0x03,0xDC,
9727 0xB3,0x38,0xC4,0x08,0xB1,0xD9,0x81,0xEB,
9728 0x75,0xD2,0x70,0x2F,0x44,0xEC,0xFF,0x7F,
9729 0x32,0x00,0xE3,0x51,0x1B,0x1C,0x27,0x9D,
9730 0xF0,0x91,0x9E,0x59,0xF8,0x49,0x19,0x30,
9731 0x71,0xF2,0x03,0xE3,0xC9,0x1A,0xC6,0x00,
9732 0xB8,0xBC,0x57,0x95,0x81,0xFC,0x43,0x90,
9733 0x20,0x18,0xD4,0x29,0x19,0x38,0x1C,0xC5,
9734 0x70,0xA7,0x64,0x78,0x50,0xF8,0xC3,0x00,
9735 0xE6,0x46,0xE8,0x7B,0x82,0xA1,0xDE,0x93,
9736 0x0E,0xE3,0x91,0xD0,0x04,0x3E,0x2D,0xC3,
9737 0xFA,0xFF,0x9F,0x96,0x81,0xD5,0xB1,0xDD,
9738 0x43,0xF6,0x59,0x01,0x77,0x76,0x80,0x3B,
9739 0x3D,0x7E,0x7A,0x00,0x9C,0x00,0x3D,0x3D,
9740 0x80,0xED,0xBC,0x01,0xF7,0x40,0x80,0x38,
9741 0xFE,0xA3,0x82,0x5F,0x59,0x28,0x1C,0x3F,
9742 0xB6,0xF3,0x63,0x09,0xEE,0x70,0xE0,0x23,
9743 0x83,0x0F,0x90,0xB8,0xA1,0xF8,0x50,0x81,
9744 0x3C,0x0B,0x80,0x62,0xF4,0x6C,0x04,0xEC,
9745 0x06,0xF3,0xD2,0x12,0xE5,0xFF,0xFF,0xDE,
9746 0xC0,0x4E,0x29,0xB8,0x83,0x00,0xF8,0x8E,
9747 0x01,0xE0,0x1D,0x0C,0x97,0x35,0x66,0x94,
9748 0x10,0x18,0x8D,0x19,0x77,0x08,0xE1,0x27,
9749 0x02,0xDC,0x98,0x3D,0x6E,0x8F,0x19,0x77,
9750 0x9C,0xE5,0xA3,0x7A,0xCA,0x08,0xE5,0x03,
9751 0x07,0x3B,0x67,0xBC,0x11,0xF0,0xA1,0x03,
9752 0x8F,0x03,0x0C,0xEE,0x48,0x01,0xC6,0xCB,
9753 0x01,0x1B,0x3B,0xB8,0x83,0x90,0x53,0x20,
9754 0x4B,0x87,0xD1,0xD8,0x71,0xB2,0x81,0x74,
9755 0x8C,0xF1,0x21,0xD7,0x63,0xC7,0x0D,0xD6,
9756 0x63,0xC7,0x1D,0x5F,0xB0,0xFF,0xFF,0xE3,
9757 0x0B,0x18,0xC6,0xC0,0xC5,0x0F,0x03,0x7D,
9758 0xF3,0xF3,0xE8,0x0C,0xEE,0x61,0xFB,0x04,
9759 0x13,0xE3,0xF9,0x25,0xC4,0x23,0xCC,0x8B,
9760 0x4B,0x84,0xA3,0x08,0xF2,0xE6,0x12,0xE7,
9761 0xD5,0x20,0xCC,0x63,0x4B,0x94,0x10,0x11,
9762 0x0E,0x26,0xCE,0x13,0x8C,0x11,0x0E,0x3C,
9763 0x8A,0x21,0x22,0x9C,0x40,0x88,0x93,0x3E,
9764 0xD9,0x20,0xE1,0x63,0x84,0x8D,0xF6,0x04,
9765 0xC3,0xC7,0xC2,0xCF,0x2B,0x1E,0x3C,0x3F,
9766 0xAD,0xF9,0x2E,0xE8,0xC9,0x9C,0xE3,0x43,
9767 0x96,0xA7,0xF6,0x38,0xE9,0xC3,0x2C,0x6E,
9768 0x50,0x0F,0x8E,0xEC,0xAE,0xE3,0xE3,0x35,
9769 0xF6,0x14,0xE4,0x21,0xF0,0x13,0x81,0x2F,
9770 0x88,0x9E,0xAC,0xEF,0x7A,0xEC,0x5E,0x66,
9771 0x8C,0xEA,0xA7,0x80,0x3A,0xA6,0x9C,0xC1,
9772 0x2B,0x04,0xBB,0xE7,0xF9,0x90,0xED,0xBB,
9773 0x24,0x1B,0x05,0xEE,0x90,0xE0,0x33,0x12,
9774 0x3F,0x55,0x78,0x18,0x1E,0x05,0x8C,0x19,
9775 0xBC,0x23,0x1C,0x5A,0x88,0x03,0x7E,0xDF,
9776 0x65,0x43,0x8D,0x71,0x7A,0x3E,0x7F,0xB0,
9777 0x41,0xC0,0x87,0x3A,0x54,0x0F,0xF3,0xA8,
9778 0x5E,0x0A,0x19,0xCE,0xD9,0xC1,0x1D,0x04,
9779 0xF6,0xF8,0xE1,0x41,0xF0,0x9B,0x25,0x1F,
9780 0x04,0x3B,0xDF,0xBC,0xC1,0x19,0xE4,0xFF,
9781 0x7F,0x0C,0xB0,0xCF,0x54,0x3E,0x9A,0x20,
9782 0x8E,0x80,0xE8,0xF3,0x87,0xC7,0xF0,0x26,
9783 0xC7,0x87,0x83,0x3D,0x7A,0xE0,0x4E,0x22,
9784 0x70,0x8F,0x5D,0x07,0xED,0x6B,0x9C,0x2F,
9785 0x5A,0x30,0xEE,0x7B,0xCF,0x22,0xE0,0xC7,
9786 0x78,0x6C,0x01,0xC7,0xA1,0x04,0xDC,0xC1,
9787 0x8E,0x6B,0x1C,0x42,0x51,0x60,0x74,0x28,
9788 0xC1,0xC5,0x00,0x12,0x8C,0x63,0x9C,0xD1,
9789 0xD0,0x97,0x48,0x1F,0xD2,0xE0,0x0C,0x1A,
9790 0xF6,0x3C,0x9F,0x50,0xB8,0x3D,0x01,0x8A,
9791 0x4E,0x28,0x20,0xC3,0x7D,0x06,0xC1,0x9E,
9792 0x10,0xF8,0x19,0x84,0xFD,0xFF,0x0F,0x8E,
9793 0x1E,0xF7,0x7B,0xA3,0x4F,0x8D,0x6C,0xEE,
9794 0x0F,0x01,0x27,0x70,0xEE,0xEC,0xD4,0x8C,
9795 0x3B,0x33,0x60,0xCF,0x1F,0x1E,0x02,0x3F,
9796 0x17,0x78,0xF8,0x1E,0x02,0x7E,0xF0,0x0F,
9797 0xCC,0x06,0x07,0xE3,0x29,0xC2,0xD7,0x0E,
9798 0x0E,0xCE,0x4F,0x03,0x06,0xE7,0xAF,0x50,
9799 0x9F,0xE7,0x19,0x38,0xF6,0xD4,0xEB,0x7B,
9800 0x87,0xE7,0xEB,0x43,0x05,0xFE,0xA6,0xE7,
9801 0x43,0x05,0x38,0x0E,0x0F,0xFC,0xB0,0xC2,
9802 0x86,0xF0,0x28,0x80,0x3F,0xB5,0xF8,0xF8,
9803 0x17,0xE7,0x29,0x82,0xDD,0x46,0xB0,0x87,
9804 0x0B,0xC0,0x51,0xB4,0xB3,0x18,0x2A,0xCC,
9805 0x59,0x8C,0xFC,0xFF,0xCF,0x51,0xA8,0xB3,
9806 0x18,0x3D,0x5C,0x00,0x2E,0x04,0x1F,0x0F,
9807 0x40,0x73,0x10,0x78,0x5C,0xF0,0x85,0xE0,
9808 0x48,0x0E,0xE4,0xE9,0x00,0xF0,0x19,0x4A,
9809 0xC3,0xA1,0x09,0x13,0x03,0x06,0x75,0x3E,
9810 0xF0,0x09,0xC5,0xC7,0x0E,0x7E,0x36,0xF0,
9811 0x8D,0xDC,0x43,0xE5,0xA7,0x66,0x5F,0xF2,
9812 0x11,0xE0,0x02,0x75,0xA0,0x61,0xA0,0x46,
9813 0xE4,0x23,0xD2,0xFF,0xFF,0xB9,0x0D,0x1B,
9814 0x60,0x68,0xF4,0x1C,0x0E,0xE3,0x80,0xEB,
9815 0x73,0x38,0x76,0x40,0x3E,0x87,0xC3,0x3F,
9816 0x47,0xC3,0x1F,0x1B,0x3B,0xDD,0xF3,0x81,
9817 0xC1,0xBA,0x7E,0x63,0x06,0x06,0xB6,0x6F,
9818 0x91,0x07,0x06,0x1C,0x51,0xCF,0xC6,0x57,
9819 0x08,0x0F,0x0C,0x6C,0x80,0x1E,0x18,0xF0,
9820 0x89,0x05,0x21,0x27,0x03,0x43,0x9D,0x32,
9821 0x8C,0x1C,0xF3,0x89,0xC3,0xC3,0xF0,0xA1,
9822 0x22,0xEA,0x33,0xC0,0x23,0x1E,0x1B,0x1B,
9823 0xFB,0xFF,0x8F,0x0D,0x2C,0xC7,0x16,0x8F,
9824 0x0D,0xFC,0x47,0x78,0xFC,0xD8,0xE0,0x8C,
9825 0xE5,0xD1,0xC4,0x97,0x99,0x23,0x3B,0x8D,
9826 0x33,0x7B,0x0D,0xF1,0xD1,0xEE,0xF1,0xDB,
9827 0x63,0x03,0x97,0x85,0xB1,0x01,0xA5,0x90,
9828 0x63,0x43,0x1F,0x52,0x7C,0x0A,0xB0,0x71,
9829 0x54,0x32,0x0F,0x1F,0xAF,0x7C,0x62,0x38,
9830 0xBA,0x20,0x6F,0xE8,0xBE,0x5C,0xF8,0x48,
9831 0x63,0x30,0x5F,0x5A,0x7C,0x06,0xE5,0x43,
9832 0x04,0xD7,0x57,0xC5,0x43,0x04,0x3E,0xA1,
9833 0x86,0x88,0x1E,0xCF,0xFF,0xFF,0x11,0xCC,
9834 0x43,0x64,0x43,0x03,0xAF,0x87,0xA1,0x01,
9835 0xA5,0x98,0xC0,0x5E,0x85,0x87,0x46,0x4F,
9836 0x3F,0x3E,0x04,0x30,0x08,0xDF,0x06,0xD8,
9837 0x55,0xC0,0x57,0x21,0x83,0x24,0x18,0xE7,
9838 0x64,0x41,0x07,0x07,0x8E,0x21,0x79,0x70,
9839 0xF0,0x07,0xE3,0x21,0x70,0x60,0xCF,0xE0,
9840 0xB9,0xE8,0x31,0xD8,0xA7,0x1D,0x9F,0x4A,
9841 0xC0,0x77,0xE6,0x04,0xC7,0xE9,0x1D,0x7B,
9842 0x29,0xF0,0x08,0x1E,0xAD,0x3C,0x02,0x7E,
9843 0xB4,0x02,0x66,0xFF,0xFF,0xA3,0x15,0x30,
9844 0x09,0x7A,0xE6,0xA4,0x03,0x77,0x34,0x18,
9845 0xD4,0xD1,0x0A,0x5C,0x11,0xC0,0x75,0xDC,
9846 0xF0,0xD1,0x02,0xCE,0x50,0x0F,0xDA,0x07,
9847 0x65,0xCF,0xDA,0x97,0x21,0x76,0xB4,0x00,
9848 0x97,0x89,0x43,0x08,0xD0,0x04,0x3E,0x89,
9849 0x67,0xEF,0x43,0x03,0xB3,0x8A,0xA1,0x01,
9850 0xA5,0xA3,0x01,0xEE,0x44,0x81,0xFD,0xFF,
9851 0x9F,0x28,0x60,0xDE,0x30,0x70,0x07,0x0A,
9852 0xC0,0xCD,0xE9,0xDB,0xE3,0xE2,0xD0,0x38,
9853 0xC4,0xE7,0xA7,0x73,0xF6,0xD1,0xE8,0x4C,
9854 0x71,0x67,0x11,0x30,0x9C,0x7D,0x11,0x8F,
9855 0x18,0x03,0xF9,0x81,0x21,0x59,0x30,0x28,
9856 0x16,0x0F,0xC5,0x07,0x03,0x0E,0xEC,0x23,
9857 0x02,0x3B,0x17,0xB0,0x73,0xAD,0xE1,0xF8,
9858 0x59,0xC0,0xA7,0x84,0xB7,0xA6,0x17,0x7B,
9859 0x9F,0xD7,0x7D,0xD6,0x08,0xC9,0xCE,0xF4,
9860 0x3E,0x89,0xE2,0x0E,0xA2,0x70,0x4E,0x9F,
9861 0xE0,0x22,0xF0,0x65,0xDF,0xA3,0xE0,0xA7,
9862 0x07,0xCF,0xF1,0x8D,0xC1,0xA7,0x07,0xE6,
9863 0x7E,0xF8,0x9A,0xF1,0x33,0xC3,0xE3,0x43,
9864 0x88,0x27,0xE2,0xDA,0xA6,0x20,0x5B,0x18,
9865 0x42,0x09,0xF4,0xFF,0x8F,0x10,0xE5,0x6D,
9866 0x20,0xCA,0x29,0x44,0x88,0x12,0xA4,0xB1,
9867 0xC9,0x0B,0x35,0xCA,0xD9,0x45,0x6E,0x6D,
9868 0xF6,0x82,0x0B,0x14,0x2A,0x66,0x9C,0x28,
9869 0xEF,0x10,0xB1,0xDA,0x1F,0x04,0x91,0xF4,
9870 0x32,0xD0,0x71,0xC9,0x91,0x0E,0x7D,0xE8,
9871 0x61,0xFB,0x04,0x8C,0x3F,0x48,0xE2,0xAE,
9872 0x2A,0x3E,0x28,0xF8,0x00,0x80,0x77,0x09,
9873 0xA8,0x5B,0x9D,0xC7,0xED,0xF3,0x06,0xF8,
9874 0xAF,0x17,0x58,0x82,0xF2,0x07,0x81,0x1A,
9875 0x99,0xA1,0x3D,0xCC,0xB7,0x19,0x43,0xBE,
9876 0x07,0x1C,0x16,0x3B,0x27,0xF9,0xF0,0x08,
9877 0x1C,0x8E,0x01,0x4F,0x1B,0xBE,0x51,0x7B,
9878 0xBE,0x3E,0x62,0x01,0x8E,0xFE,0xFF,0x47,
9879 0x2C,0x30,0x9D,0xDF,0x7D,0x82,0x01,0xC7,
9880 0xCD,0x82,0x9F,0x61,0x00,0x67,0x40,0xCF,
9881 0x30,0x60,0x1F,0x2A,0x6E,0x08,0x5C,0xEE,
9882 0x8A,0x28,0x90,0x05,0xC2,0xA0,0x0E,0xFD,
9883 0xE4,0x08,0x42,0xCF,0x9C,0x70,0x86,0x72,
9884 0xB2,0xBD,0x5F,0x1D,0xC8,0x2D,0xC2,0x43,
9885 0x3D,0x8B,0xC7,0x04,0x76,0xDA,0x02,0x36,
9886 0xFF,0xFF,0xE3,0x29,0xB0,0x98,0xF7,0xD3,
9887 0x69,0x84,0x63,0x03,0xFB,0x71,0x0B,0x38,
9888 0x1D,0xCC,0xE0,0xDC,0x7F,0xD8,0x2D,0x1A,
9889 0x37,0x34,0xB0,0x0D,0xCC,0x43,0x03,0x3E,
9890 0x27,0x47,0x30,0x9E,0x98,0xF8,0x55,0xE2,
9891 0xE1,0x89,0x1F,0x43,0xC0,0xFA,0xFF,0x3F,
9892 0x99,0x01,0xF6,0x84,0x1E,0xCB,0x50,0xD2,
9893 0x4E,0x66,0x80,0xC0,0xFB,0xD8,0x3B,0xC3,
9894 0x4B,0x83,0xE7,0x74,0xD2,0xCF,0x62,0x3E,
9895 0x99,0x19,0x21,0x0A,0xBB,0x8F,0x19,0xAD,
9896 0x37,0x14,0xCD,0x3C,0xE8,0x3B,0x99,0x51,
9897 0x62,0x46,0x6A,0x0E,0x4C,0x48,0x11,0x0F,
9898 0x27,0x4A,0x88,0x60,0xAF,0x13,0x6F,0x67,
9899 0x4F,0x66,0x4C,0xD6,0xC9,0x0C,0x24,0xFF,
9900 0xFF,0x93,0x19,0x98,0x5C,0x9F,0xCC,0x80,
9901 0xCA,0x39,0x0A,0x7F,0x32,0x03,0x78,0x74,
9902 0xC0,0xC2,0x9D,0xCC,0xC0,0xF2,0xFF,0x3F,
9903 0xC4,0x00,0xCE,0xC7,0x0A,0x63,0x0C,0x3C,
9904 0xDA,0xC1,0x0C,0x15,0xE6,0x6C,0x86,0x0E,
9905 0x72,0x08,0xA1,0xC1,0x0E,0x21,0x50,0xE6,
9906 0x72,0xA0,0xA7,0xF0,0x9A,0xE0,0x73,0x14,
9907 0xD8,0x0F,0x67,0xC0,0xE1,0xD4,0x80,0x0F,
9908 0x74,0xE2,0x42,0x8F,0xC2,0x23,0x0E,0x58,
9909 0xFD,0xC0,0xC8,0xFF,0xFF,0x64,0x06,0x18,
9910 0x78,0x6A,0xF8,0x40,0x82,0x63,0x31,0xEA,
9911 0x1B,0xC4,0x21,0xBE,0x8D,0xF8,0xE8,0xFE,
9912 0x6A,0xE2,0x4B,0x00,0xE6,0x42,0xE2,0xD3,
9913 0x09,0xB3,0x70,0x38,0x03,0x5A,0x43,0x60,
9914 0x57,0x26,0xCF,0x9C,0x0F,0xE1,0x6C,0x3C,
9915 0x7A,0xDC,0xE9,0x04,0xDE,0x38,0x7C,0x3A,
9916 0x01,0x5E,0x07,0x0C,0xCC,0x0C,0xC2,0x3F,
9917 0x84,0xB0,0x21,0x9C,0xAA,0xC7,0x70,0xEE,
9918 0xAF,0x38,0x3E,0x9D,0x80,0xF3,0xFF,0x7F,
9919 0x62,0x03,0x0C,0x0A,0x7E,0x32,0xF8,0xB8,
9920 0x46,0x25,0xC2,0xA0,0x8E,0xE6,0x80,0x7B,
9921 0x98,0x27,0x36,0x26,0x6F,0xC5,0x1A,0x8B,
9922 0x4F,0x6C,0x30,0xFF,0xFF,0x27,0x36,0x80,
9923 0xD1,0x87,0x20,0xB0,0xFD,0xFF,0x0F,0x41,
9924 0x60,0x1C,0xA0,0x0F,0x41,0x80,0x9B,0xD3,
9925 0x09,0xEE,0xC4,0x07,0xB6,0x63,0x10,0x60,
9926 0x6D,0xE8,0x3E,0x06,0x81,0xF9,0xFF,0x3F,
9927 0x5A,0x98,0xA3,0xE0,0xC2,0x8E,0x7C,0x28,
9928 0x29,0xA7,0x3E,0xB4,0x0C,0x20,0x69,0x38,
9929 0xC9,0x01,0x9D,0xD3,0x3D,0x70,0x92,0x75,
9930 0xEA,0x40,0x8F,0xC7,0xA0,0xAF,0x1C,0xBE,
9931 0x12,0xF0,0x23,0x07,0x93,0x00,0xAA,0x41,
9932 0xFA,0xCC,0x07,0x9C,0x8E,0x1C,0xE0,0x38,
9933 0x26,0x05,0xC6,0xDE,0x0E,0xDE,0x22,0x3D,
9934 0x89,0xA7,0xA1,0xE3,0x0C,0x51,0x38,0x26,
9935 0x39,0x18,0x44,0x7A,0x95,0x62,0x03,0x7C,
9936 0xAB,0xF1,0xD9,0xC8,0x07,0x10,0x78,0xE3,
9937 0xF6,0xD8,0x61,0xFF,0xFF,0x0F,0x75,0xC0,
9938 0x01,0xE2,0xA4,0xF8,0x21,0xC3,0x98,0x67,
9939 0xC5,0x0F,0x75,0x80,0xF5,0x18,0x27,0x3A,
9940 0x94,0xF0,0x43,0x1D,0x20,0xE8,0xFF,0x7F,
9941 0xA8,0x03,0x86,0x38,0x6F,0x24,0xD1,0x1E,
9942 0xEA,0x98,0xE8,0x43,0x1D,0x40,0xC8,0xFF,
9943 0xFF,0xA1,0x0E,0x18,0x9E,0x87,0x00,0xAE,
9944 0x9C,0xEF,0xC0,0x7C,0x22,0x02,0xEF,0xFF,
9945 0xFF,0x7C,0x07,0xB8,0x1B,0x2D,0xCC,0x51,
9946 0x70,0x41,0xAF,0x0E,0x03,0x51,0x09,0x30,
9947 0x28,0x02,0xC7,0x5F,0x9B,0x60,0x1C,0xEA,
9948 0x7C,0x87,0x3E,0x2F,0x78,0xD8,0x4F,0x05,
9949 0x9E,0xC4,0xA9,0xFA,0x5A,0x70,0x14,0x4F,
9950 0x00,0x3E,0xE1,0x01,0xFF,0xA1,0xC1,0x9A,
9951 0x44,0xF1,0x43,0x03,0xF5,0x11,0xE4,0xFF,
9952 0x7F,0x68,0xC0,0x28,0xEA,0xF9,0x06,0x7D,
9953 0xCC,0xF2,0xD9,0x20,0xE6,0x0B,0x48,0x84,
9954 0x07,0x10,0x5F,0x1F,0xD8,0x71,0xD2,0x67,
9955 0xA0,0x40,0x51,0xDE,0x37,0xF8,0x09,0x07,
9956 0x5C,0x83,0xF3,0x09,0x07,0xBC,0x87,0x23,
9957 0x1F,0x4B,0xC0,0x77,0xD0,0x84,0x73,0x81,
9958 0xF1,0x8D,0x8D,0x9D,0x06,0xC0,0x76,0x00,
9959 0x06,0xDF,0x69,0x00,0x1C,0xC7,0x24,0x7E,
9960 0x3A,0x04,0x13,0xCC,0xC1,0xBC,0x34,0xFB,
9961 0xFF,0xEF,0xFD,0x94,0x43,0xCF,0x86,0x80,
9962 0x75,0x49,0x07,0x43,0x94,0x88,0xB3,0x21,
9963 0x20,0xFD,0xFF,0x7F,0x36,0xC4,0x20,0xC4,
9964 0x09,0xFC,0x12,0xD1,0xDC,0xD9,0x90,0xAE,
9965 0xD8,0x67,0x43,0x80,0xE1,0xFF,0xFF,0x23,
9966 0x00,0xF6,0x7C,0x04,0x38,0x3D,0x64,0x83,
9967 0xE7,0x14,0x08,0xE3,0xE4,0x03,0x38,0xFE,
9968 0xFF,0x8F,0x15,0xE6,0x18,0x78,0xEA,0x97,
9969 0x9B,0x8F,0x03,0x54,0xD4,0x2B,0xC2,0x30,
9970 0x94,0xC5,0x87,0x05,0x1F,0x11,0xF8,0x61,
9971 0xC1,0x23,0xA8,0x78,0x9C,0xF4,0x74,0xE3,
9972 0x33,0x21,0x3B,0x24,0x38,0xFC,0x20,0xE9,
9973 0x41,0x13,0x3C,0xE7,0x23,0x78,0xB7,0x1E,
9974 0x38,0xA7,0x02,0xC0,0x4D,0xAE,0x27,0xA3,
9975 0x4E,0x17,0x0E,0x70,0x8E,0x92,0x8D,0x63,
9976 0x08,0xE5,0x70,0xCC,0xB7,0x87,0xA6,0xC9,
9977 0x4E,0x56,0x30,0x63,0x41,0xEA,0x24,0xE0,
9978 0x01,0x38,0x10,0x8C,0xB4,0x93,0x68,0x34,
9979 0x86,0xB3,0x5A,0x18,0xC1,0x19,0xC4,0xC7,
9980 0x11,0xE7,0x3A,0x19,0xA1,0x3F,0x07,0x3E,
9981 0x15,0x61,0x82,0xDC,0x4B,0xE8,0xBC,0x7D,
9982 0x37,0xE0,0x57,0x61,0x8F,0xC5,0xFF,0x7F,
9983 0x60,0xDF,0x4E,0xC0,0x31,0x17,0xAB,0x01,
9984 0x45,0x0D,0xC0,0x68,0x98,0x53,0xC0,0x53,
9985 0x09,0xB8,0x82,0xCD,0x0D,0x7D,0x61,0xB1,
9986 0xD6,0xA9,0xE8,0x14,0xF4,0x3E,0x70,0x70,
9987 0xC0,0x63,0xF6,0x1E,0x1C,0x2C,0x34,0x0F,
9988 0x0E,0x6C,0xD9,0x06,0x87,0x56,0x72,0x17,
9989 0x21,0x87,0x0F,0xFC,0xEC,0x80,0x03,0xA0,
9990 0x67,0x07,0x0B,0xC9,0xB3,0x03,0x9B,0xBE,
9991 0xB3,0x08,0x28,0x70,0xFE,0xFF,0x11,0xDE,
9992 0x3B,0x7C,0x6E,0x79,0xF6,0x60,0x63,0x78,
9993 0x74,0x31,0x9A,0xD1,0xB9,0xA6,0xDB,0x04,
9994 0x4A,0xC5,0x6D,0x82,0x82,0xF8,0x06,0xE0,
9995 0x84,0x34,0xBA,0x75,0xE2,0x66,0x62,0xFC,
9996 0x47,0x0C,0x1F,0x11,0x0E,0xE9,0x6C,0x4D,
9997 0x30,0x0F,0xA4,0x9E,0x81,0xBE,0xB3,0xE1,
9998 0x67,0x1F,0xF2,0xC1,0xC5,0xD3,0xF0,0xF5,
9999 0x86,0xDC,0x3B,0xE8,0xB4,0x7D,0x66,0xC0,
10000 0x1C,0x74,0x7D,0x9D,0x7A,0x83,0x27,0x57,
10001 0x09,0xEA,0xE1,0x02,0x42,0x2F,0x34,0xBE,
10002 0xDC,0x25,0x78,0xE0,0xF4,0xE9,0xEE,0xBD,
10003 0x84,0x9D,0xF1,0x12,0xBC,0xE0,0x25,0x98,
10004 0x77,0x10,0xA8,0x51,0x79,0x10,0x98,0xAB,
10005 0x3C,0xCB,0x37,0x06,0x54,0xB2,0x8B,0x16,
10006 0x3D,0xC3,0xBC,0xC3,0xF8,0x92,0xE0,0xEB,
10007 0x87,0xCF,0x2D,0x5E,0xC0,0xEB,0x16,0x0C,
10008 0x82,0x67,0xA0,0x57,0x17,0xDF,0xD9,0x0D,
10009 0xFC,0x2A,0xF0,0x46,0x13,0x22,0x98,0x61,
10010 0x0F,0xFF,0xDD,0xDD,0xA8,0xBE,0xE9,0x18,
10011 0xEB,0x75,0xC4,0x23,0xE5,0xC7,0x96,0x03,
10012 0x8A,0xF4,0xF2,0xE6,0x09,0xF8,0x2C,0xE3,
10013 0x53,0xDD,0x49,0xF9,0x7A,0x68,0xF4,0x57,
10014 0x08,0x1F,0x7E,0x8C,0xEC,0x73,0x0E,0x3B,
10015 0xDF,0xB1,0x41,0x71,0xC4,0x07,0x86,0x97,
10016 0x1A,0x4F,0x85,0x9D,0xBB,0x60,0x1C,0x1C,
10017 0xD8,0xB1,0x08,0x73,0x7C,0x05,0xD7,0xC9,
10018 0xE6,0xFF,0xFF,0xE4,0x00,0x6E,0x78,0xCC,
10019 0xC1,0xD7,0xE7,0x0D,0xDF,0x0C,0x3C,0x2E,
10020 0x7E,0xE4,0xF0,0x49,0xE3,0xA5,0xD3,0xD8,
10021 0xA7,0xE9,0xA3,0xD1,0xCB,0x9B,0x4F,0x2F,
10022 0x18,0x58,0x5F,0x1A,0x38,0xAC,0xD1,0xC2,
10023 0x3E,0x06,0x9C,0xB9,0x2F,0x44,0xB8,0xC3,
10024 0x23,0x58,0x00,0xF1,0xB7,0x92,0x47,0x0E,
10025 0x4F,0xC0,0x80,0x4C,0xD3,0xBA,0x74,0x20,
10026 0xE2,0xA7,0x3C,0x2B,0x5F,0x99,0x2E,0x43,
10027 0x0C,0xE3,0xA9,0xF2,0xF1,0xC3,0xB3,0xF1,
10028 0x51,0xC0,0xC7,0x28,0xCF,0xFC,0x8C,0x22,
10029 0xBD,0x32,0x10,0x50,0x9D,0x88,0xB8,0x42,
10030 0x18,0x89,0xA1,0xD1,0x9D,0x83,0xC7,0x1F,
10031 0x22,0x05,0x31,0xA0,0x6F,0x2E,0xC0,0xF4,
10032 0x4C,0x04,0x5C,0xFE,0xFF,0x37,0x17,0x80,
10033 0xFF,0xFF,0xFF,0x9B,0x0B,0xE0,0xE6,0xFE,
10034 0xE0,0x9B,0x0B,0x70,0x8D,0xB4,0x2A,0x7A,
10035 0x61,0x77,0x08,0x18,0xD4,0x9D,0x1D,0x70,
10036 0x78,0x2B,0x78,0x67,0x87,0xF5,0xFF,0xBF,
10037 0xB3,0xC3,0xC3,0x8C,0x13,0xE5,0x85,0x21,
10038 0xC6,0x3B,0x3B,0x0B,0xF0,0x26,0xD0,0x51,
10039 0xC6,0x77,0x76,0x80,0x1F,0x67,0xD8,0x77,
10040 0x69,0xF0,0x5E,0x75,0x81,0xF5,0xFF,0xFF,
10041 0xAA,0x0B,0x3C,0x04,0xDF,0xA7,0x41,0x3E,
10042 0x5E,0x30,0x8C,0x83,0x2B,0x27,0xA1,0xC7,
10043 0x02,0x6B,0x85,0x41,0xDD,0xA9,0xC1,0xA5,
10044 0x09,0x5C,0x17,0x5F,0x1F,0x6A,0x7C,0xA4,
10045 0xC5,0x9F,0x2F,0x70,0x01,0x86,0x4C,0x4F,
10046 0x65,0x30,0xAE,0x29,0x3E,0x95,0x61,0xEE,
10047 0x0E,0x1E,0x90,0x8F,0x18,0xC0,0x67,0x15,
10048 0x1E,0x18,0xEE,0xB4,0xE0,0x9B,0x92,0x41,
10049 0xCF,0x31,0xA8,0x8F,0x3C,0x27,0xEF,0x7B,
10050 0xC2,0xE3,0x84,0xA3,0x9E,0x83,0xE8,0xD8,
10051 0xC0,0x71,0xDC,0xC0,0xFD,0xFF,0xC7,0x06,
10052 0xEF,0x70,0x83,0x3B,0xE8,0xF8,0x62,0x70,
10053 0x5C,0x18,0xB8,0xE7,0x02,0x0F,0xC3,0x37,
10054 0x1D,0x8F,0x08,0x33,0xFE,0xD7,0x3F,0x23,
10055 0x04,0xC4,0x5F,0x8C,0xD8,0x80,0xC1,0x78,
10056 0x6B,0xF3,0xF5,0x0D,0x37,0x60,0x5F,0x1D,
10057 0x7C,0xC1,0xF0,0x09,0xCC,0xE8,0x2F,0x30,
10058 0x4F,0x62,0x3E,0x36,0x90,0x0B,0x1C,0x1D,
10059 0x30,0x38,0x00,0x3D,0x60,0xF8,0x87,0x8B,
10060 0x77,0x39,0x30,0x5C,0x05,0x7D,0x5C,0xF0,
10061 0xB1,0xC7,0x8A,0xEE,0x72,0xE8,0x9B,0x9C,
10062 0x61,0xE2,0x18,0xE2,0x0D,0x8C,0xDD,0x25,
10063 0xC8,0x61,0x0E,0xEA,0x5D,0xC2,0x73,0xE0,
10064 0x67,0x0B,0x9F,0xE0,0x7C,0xF3,0x09,0x71,
10065 0xAA,0x8F,0x56,0xEF,0x01,0x3E,0x7A,0xBC,
10066 0x77,0xF9,0xEC,0xC4,0x2E,0x02,0x3E,0x72,
10067 0x19,0xC7,0xD3,0xF4,0x15,0xD0,0x43,0x36,
10068 0xD8,0xAB,0x86,0x4F,0x60,0x3E,0xBA,0xE1,
10069 0x8E,0x51,0x9E,0x89,0xA7,0xEF,0x3B,0x08,
10070 0x3B,0x92,0x1C,0x75,0xA8,0x6B,0x7A,0x44,
10071 0xF9,0xFF,0x9F,0xD0,0x81,0xF8,0xD6,0x06,
10072 0xCE,0x68,0xF7,0x0F,0xF4,0x36,0x3D,0x32,
10073 0xCC,0xD1,0x00,0xD6,0x25,0x04,0x5C,0x77,
10074 0x0C,0x5F,0x42,0x80,0x4F,0xD0,0x4B,0x04,
10075 0xFA,0x9A,0xE1,0xD1,0x3D,0x02,0x60,0xAE,
10076 0x18,0xEC,0x58,0xE0,0xC3,0x86,0xAF,0x01,
10077 0xEC,0x5E,0xE0,0x30,0xF7,0x08,0x50,0x81,
10078 0x7A,0x78,0xF0,0xD5,0xDE,0x23,0x40,0x71,
10079 0xB2,0xF4,0xA1,0xC1,0x03,0xB5,0xAA,0x33,
10080 0x26,0x94,0x23,0x26,0x3F,0x9B,0xF9,0x26,
10081 0x81,0xB9,0x5D,0xFA,0x26,0x01,0x37,0xCF,
10082 0x2C,0x50,0x49,0x20,0xF4,0xFF,0xBF,0x49,
10083 0xC0,0x85,0xE9,0xF2,0x32,0x43,0xE7,0x7F,
10084 0xE0,0xBE,0xD5,0x79,0x84,0x3E,0x44,0x30,
10085 0x94,0xF7,0x3C,0x9F,0xC2,0xF8,0x19,0xC2,
10086 0x07,0x4C,0x76,0xA6,0xE0,0x67,0x4D,0xDC,
10087 0x1D,0xC0,0x28,0x6F,0x9E,0x9E,0x00,0x3B,
10088 0x7F,0x1A,0xF9,0xDD,0xE0,0x5D,0xC0,0xD3,
10089 0xF7,0xBD,0x88,0x9F,0x28,0xC0,0x17,0xEC,
10090 0x4E,0x07,0x05,0xFA,0x84,0x3C,0x22,0xA3,
10091 0xFA,0x88,0xC0,0x2F,0x49,0x60,0x3C,0x92,
10092 0xF8,0x40,0x01,0x84,0xEE,0x05,0xA8,0xD3,
10093 0x07,0x47,0x3D,0xE3,0x17,0x54,0x63,0xBE,
10094 0x5B,0x3D,0xC2,0x79,0x72,0x98,0xCB,0x01,
10095 0x8B,0x73,0x4D,0x02,0xD5,0x71,0x97,0x8F,
10096 0x0E,0xEE,0xB5,0x15,0xFB,0xFF,0x27,0x38,
10097 0xB8,0x77,0x96,0x77,0x3E,0x43,0x79,0x90,
10098 0xE0,0xBB,0xB6,0x82,0xE3,0xAA,0x06,0xE3,
10099 0xD8,0xC2,0x2F,0x79,0x80,0x9D,0x61,0x71,
10100 0xC1,0x7F,0x0F,0x03,0x51,0x89,0x30,0x28,
10101 0x02,0xCB,0xBB,0xB7,0x52,0xF8,0x43,0x06,
10102 0xE3,0x4D,0x81,0x4F,0x1A,0x3B,0x6A,0xE0,
10103 0xFB,0xFF,0x1F,0x35,0xD8,0x86,0x8A,0xBB,
10104 0x29,0x82,0x75,0xAA,0x98,0x21,0xF0,0x60,
10105 0x0F,0x00,0x9F,0xAF,0x7C,0x06,0x50,0x14,
10106 0x18,0xD4,0xA1,0x1D,0xCE,0x6D,0x18,0x70,
10107 0x30,0x62,0xDC,0xA5,0x10,0xEE,0x94,0xDF,
10108 0x51,0x62,0x3F,0x97,0xB3,0xE9,0xE2,0xAE,
10109 0xE6,0x3E,0x9D,0xB0,0x0B,0x32,0x8C,0xB3,
10110 0xC0,0x23,0xC0,0xAB,0x39,0xBF,0x20,0x3F,
10111 0x17,0xBF,0x10,0x3C,0x26,0x85,0x78,0x53,
10112 0x7A,0x25,0x36,0xC6,0x93,0x71,0x73,0xB7,
10113 0x62,0x72,0xDE,0x79,0x41,0x36,0xC6,0xD1,
10114 0x44,0x8C,0x72,0x6E,0x0F,0x03,0x91,0x5F,
10115 0x90,0x7D,0x3F,0x79,0x21,0x88,0x18,0xCD,
10116 0x10,0x41,0x9F,0x97,0x8D,0x15,0x28,0xDE,
10117 0x0B,0x32,0x13,0xF8,0x56,0xD0,0xC1,0xC5,
10118 0x17,0x64,0xEC,0xFF,0xFF,0x82,0x0C,0x30,
10119 0xE2,0x64,0x04,0xF8,0x3C,0x71,0xE0,0xCE,
10120 0x35,0x30,0xFE,0xFF,0x97,0x6A,0xD8,0x27,
10121 0x1B,0xC0,0xD9,0xD0,0x7D,0xB2,0x01,0xF7,
10122 0x68,0xE1,0x1D,0x4D,0x10,0x27,0x1B,0x0A,
10123 0xE4,0xE0,0xEB,0xA2,0x70,0x3C,0xF4,0x49,
10124 0x84,0x1E,0x9D,0x7C,0x94,0xC4,0x9D,0x19,
10125 0x3C,0x91,0x77,0x16,0x8F,0xE2,0x65,0xD0,
10126 0xF7,0x82,0x13,0x79,0x7D,0xB0,0x9C,0x63,
10127 0x24,0xA8,0x46,0xE2,0xE3,0x03,0xFC,0xEB,
10128 0x8B,0x8F,0x91,0xF0,0xF9,0xFC,0xC3,0xF2,
10129 0x60,0x0C,0xF9,0xFF,0x7F,0x8A,0xC4,0x80,
10130 0x3C,0xBB,0x3C,0x86,0xF0,0x0B,0x24,0xDC,
10131 0xD3,0xCC,0x01,0x60,0x64,0x5D,0x1E,0xD1,
10132 0x67,0x47,0x8E,0x11,0xD7,0x17,0x45,0x5F,
10133 0x81,0x7D,0x10,0x38,0x9F,0xE7,0x44,0xB0,
10134 0x8E,0x9A,0x1F,0x6D,0xF8,0xF8,0x39,0xF8,
10135 0x5B,0xC1,0x03,0xA5,0x8F,0x45,0x21,0x1E,
10136 0x91,0xF8,0x39,0x11,0x5C,0x26,0xCE,0x89,
10137 0x40,0xE2,0xD0,0x0B,0xE3,0xB4,0x80,0x1B,
10138 0x88,0xCF,0x94,0xD8,0x29,0x9F,0x08,0x3B,
10139 0x97,0x60,0x46,0x07,0xAE,0xCB,0xBD,0x47,
10140 0x07,0xFE,0x93,0x00,0x1E,0xEB,0xFF,0xFF,
10141 0x78,0x07,0xBE,0x93,0xBA,0xEF,0x26,0xBE,
10142 0xC8,0xF8,0x50,0xF4,0x7C,0x07,0xF8,0x0F,
10143 0x77,0xB8,0x43,0xC5,0x39,0xDF,0x01,0xD2,
10144 0xFE,0xFF,0xE7,0x3B,0x60,0x79,0xB6,0x7E,
10145 0xBE,0x03,0xBB,0xC8,0xF3,0x1D,0x40,0xAC,
10146 0xFF,0xFF,0xF9,0x0E,0xB0,0x73,0x46,0xC3,
10147 0x9D,0xEF,0xC0,0x76,0xB4,0x01,0xCC,0x4D,
10148 0xE3,0xD1,0x06,0xDC,0xC3,0x85,0x3D,0x0C,
10149 0xAE,0xD0,0xA6,0x4F,0x8D,0x46,0xAD,0x1A,
10150 0x94,0xA9,0x51,0xE6,0xFF,0xDF,0xA0,0x56,
10151 0x9F,0x4A,0x8D,0x19,0xCB,0x0E,0xA5,0x80,
10152 0x8F,0x0A,0x8D,0xCD,0xF2,0x28,0x04,0x62,
10153 0x31,0xAF,0x06,0x81,0x38,0x2C,0x08,0x8D,
10154 0xF4,0xCA,0x11,0x88,0x25,0x3F,0xFB,0x05,
10155 0x62,0xB9,0x6F,0x06,0x81,0x38,0xE0,0x1B,
10156 0x4C,0xE0,0xE4,0x61,0x25,0x70,0xF2,0x6E,
10157 0x10,0x88,0x23,0x83,0x50,0xA1,0x3A,0x40,
10158 0x58,0x4C,0x10,0x1A,0xCA,0x07,0x08,0x93,
10159 0xFE,0x48,0x10,0x20,0x31,0x02,0xC2,0xC2,
10160 0xBD,0xBF,0x04,0x62,0x69,0xEF,0x09,0x81,
10161 0x58,0x88,0x15,0x10,0x16,0x17,0x84,0x86,
10162 0xD3,0x02,0xC2,0x24,0x99,0x01,0x61,0x81,
10163 0x40,0xA8,0x7C,0x35,0x20,0x4C,0xA4,0x1B,
10164 0x40,0xBA,0x7A,0x81,0x38,0x88,0x1E,0x10,
10165 0x26,0xC3,0x0F,0x08,0x0B,0x0D,0x42,0xA3,
10166 0x3D,0x30,0x04,0x48,0x0C,0x81,0xB0,0xF8,
10167 0x8E,0x40,0x98,0xF8,0x57,0x91,0x40,0x9C,
10168 0xDF,0x12,0xC4,0x4D,0x69,0x88,0x35,0x01,
10169 0x31,0x0D,0x9E,0x80,0x98,0x22,0x10,0x01,
10170 0x39,0xF6,0xD3,0x43,0x40,0xD6,0x60,0x0A,
10171 0x88,0x45,0x07,0x11,0x90,0x85,0xA8,0x02,
10172 0x62,0x79,0x5D,0x01,0xB1,0xF0,0x20,0x02,
10173 0x72,0xE6,0x97,0x9F,0x80,0xAC,0xE0,0xA5,
10174 0xF3,0x10,0xC0,0xDE,0x10,0x81,0x48,0x72,
10175 0x10,0x01,0x39,0xB0,0x2F,0x20,0x16,0x1F,
10176 0x44,0x40,0xCE,0xFA,0x28,0x14,0x90,0x83,
10177 0x83,0x68,0x10,0xE4,0x6B,0x26,0x20,0xA7,
10178 0x07,0x11,0x10,0xF9,0x04,0x05,0x21,0x6A,
10179 0xBD,0x81,0x30,0x3D,0x8F,0x42,0x0D,0x85,
10180 0x80,0x50,0xE5,0xEA,0xCE,0x31,0x2C,0x07,
10181 0x08,0xCD,0x05,0x22,0x30,0xAB,0x70,0x07,
10182 0xC4,0x54,0x81,0x08,0xC8,0x09,0x80,0xC8,
10183 0xFF,0x9F,0x60,0x2A,0x10,0x9A,0x12,0x8C,
10184 0xEA,0x92,0x07,0xC4,0x12,0x80,0xD0,0x54,
10185 0x20,0x34,0x25,0x88,0x00,0xAD,0xCA,0x1E,
10186 0x10,0x53,0x0A,0x42,0x95,0x83,0xD0,0x74,
10187 0x20,0x54,0xB6,0xBE,0xC3,0x02,0x05,0x11,
10188 0x90,0xA3,0x83,0x50,0xE1,0xFE,0x40,0x98,
10189 0xDE,0x97,0x86,0x00,0x9D,0x0E,0x44,0x40,
10190 0x4E,0x0C,0x42,0x15,0x7C,0x32,0x82,0x10,
10191 0xB1,0x20,0x54,0xC1,0x27,0x23,0x28,0xD1,
10192 0xF2,0xB2,0x13,0x90,0xF5,0x81,0x50,0xBD,
10193 0x20,0x02,0x73,0x36,0x20,0x9A,0x17,0x84,
10194 0xE6,0x07,0xA3,0x5A,0x8D,0x02,0x31,0xFD,
10195 0x20,0x34,0x0F,0x88,0xC0,0xAC,0xE0,0xF9,
10196 0x71,0xC0,0x0C,0x84,0xAA,0x04,0x11,0x98,
10197 0x73,0x01,0xD1,0xAC,0x20,0x34,0x3B,0x18,
10198 0xD5,0xFE,0x0F,0xD1,0x00,0x08,0x08,0xCD,
10199 0x07,0xA2,0xC3,0x00,0x79,0x96,0x09,0xC8,
10200 0x1A,0x41,0xA8,0x66,0x10,0x81,0x39,0x27,
10201 0x10,0xCD,0x0E,0x42,0x95,0xFD,0x4D,0x82,
10202 0x91,0x8C,0x0F,0xD0,0x40,0x24,0x37,0x08,
10203 0xD5,0xF1,0x0C,0x0A,0x46,0x74,0x83,0x08,
10204 0xC8,0x59,0x40,0x68,0x36,0x30,0x9A,0x4C,
10205 0xED,0x91,0x80,0xBA,0x05,0x61,0xE9,0x41,
10206 0x68,0x3A,0xBB,0x83,0xA7,0x20,0x54,0x81,
10207 0x5E,0x30,0xA6,0x19,0x44,0x87,0x05,0x02,
10208 0x42,0x73,0x81,0x51,0x1D,0xAF,0x96,0x40,
10209 0x44,0x1B,0x08,0xD5,0x0A,0xA2,0x81,0x93,
10210 0x1F,0x53,0x10,0x92,0x14,0x84,0xFC,0xFF,
10211 0x07,0xAA,0xC7,0x9C,0x40,0xAC,0xFA,0x5B,
10212 0x25,0x50,0x27,0x01,0xA1,0xC9,0x40,0x74,
10213 0x7C,0x20,0x0F,0xB8,0x83,0x64,0x20,0x54,
10214 0x29,0x88,0xC0,0xAC,0xF4,0x63,0xA4,0x23,
10215 0x05,0x51,0x7D,0xBC,0xA0,0x20,0x34,0xD1,
10216 0x3B,0x2C,0x08,0x7B,0xB8,0x69,0xA8,0xE4,
10217 0x59,0xA5,0xA1,0x12,0x10,0x9A,0x0D,0x44,
10218 0xC7,0x04,0xF2,0xAA,0x79,0x4C,0x60,0x20,
10219 0x54,0x2F,0x08,0xCD,0x01,0x42,0x13,0x83,
10220 0x08,0xD4,0xA9,0xBF,0x37,0x1A,0x2A,0xF9,
10221 0x5B,0x09,0xC4,0xCA,0x5E,0x69,0x02,0xB1,
10222 0xDE,0xA7,0x4E,0x20,0xE6,0x1D,0x98,0xA9,
10223 0x05,0xA1,0xEA,0x41,0x04,0xE6,0xB4,0x40,
10224 0x54,0x81,0x78,0x10,0xA6,0x08,0x44,0x60,
10225 0x4E,0x02,0x44,0xD3,0x81,0xD0,0xEC,0x60,
10226 0x54,0xE7,0xA3,0x4D,0x40,0xD6,0x0E,0x42,
10227 0xB3,0x80,0x08,0xCC,0x59,0x1E,0x69,0x02,
10228 0xB1,0x92,0x2F,0x9D,0x0E,0x24,0x04,0x84,
10229 0x26,0xD3,0x7F,0x68,0xA1,0x05,0x80,0x99,
10230 0x84,0x04,0x20,0x4C,0x16,0x88,0x0E,0x27,
10231 0xD6,0x08,0x22,0x40,0xC7,0x01,0xA3,0xD1,
10232 0x40,0x68,0x5C,0x40,0x9A,0x1D,0x90,0x2A,
10233 0x6D,0x00,0xC6,0x54,0x83,0xD0,0x24,0x20,
10234 0x02,0x74,0x2C,0x10,0x01,0x5A,0x74,0x04,
10235 0x30,0x16,0x01,0x84,0x46,0x05,0xA1,0xC9,
10236 0x2A,0x80,0xB2,0x9C,0x20,0x1A,0x20,0xC9,
10237 0x30,0x60,0x0A,0x42,0x33,0x81,0xD0,0x8C,
10238 0x20,0x54,0x7C,0x07,0x10,0x16,0x04,0x84,
10239 0x86,0x03,0xD1,0x00,0xFE,0xFF,0x8F,0x0C,
10240 0x02,0xD1,0x00,0x9C,0x23,0xC4,0x61,0x85,
10241 0x82,0xD0,0xF4,0x20,0x34,0x6C,0x09,0x50,
10242 0x16,0x1D,0x44,0xC7,0x23,0x92,0x02,0x8C,
10243 0x05,0x02,0xA1,0x31,0x41,0x68,0x6C,0x10,
10244 0x1A,0x29,0x06,0x28,0x13,0x54,0xE3,0x50,
10245 0x44,0x7B,0x80,0x31,0x99,0x20,0x54,0x36,
10246 0x88,0xC0,0x1C,0x14,0x88,0x86,0x07,0xA1,
10247 0x62,0x82,0x00,0x52,0x10,0x01,0x12,0x20,
10248 0x1A,0x1E,0x84,0x8A,0x29,0x32,0x74,0x0A,
10249 0x42,0x55,0x24,0x39,0x9A,0x50,0x10,0x1D,
10250 0x4D,0x08,0x08,0xCD,0x07,0x46,0x75,0x35,
10251 0x39,0x6E,0x50,0x10,0xAA,0x1D,0x84,0x06,
10252 0x05,0xA1,0x39,0xA2,0x80,0xB2,0xEC,0x20,
10253 0x02,0xB2,0x9E,0x2A,0x87,0x0A,0x0A,0x22,
10254 0x30,0xA7,0x02,0xA2,0x49,0x41,0xA8,0x8E,
10255 0x2C,0x47,0x0A,0x9A,0x06,0x84,0x25,0x06,
10256 0xA1,0xC9,0xDA,0x80,0xB0,0x0C,0x75,0x0E,
10257 0x24,0x14,0x84,0xE6,0x04,0xA1,0x4A,0xF2,
10258 0x0C,0x8F,0x82,0xE8,0x38,0x42,0x80,0x68,
10259 0x7A,0x10,0xAA,0xA6,0xCF,0x00,0x28,0x88,
10260 0x06,0x40,0x40,0x68,0x4E,0x30,0xAA,0xA8,
10261 0xD1,0xD1,0x84,0x82,0x50,0xDD,0x2F,0x4E,
10262 0x81,0xF8,0xFF,0x0F,
10263 }) // END MBUF
10264
10265 } //end DefinitionBlock
10266
10267