1/*
2 * Some or all of this work - Copyright (c) 2006 - 2021, 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 * Tests exercized during ACPICA to MS implementation comparison
31 */
32
33Name(z179, 179)
34
35/*
36 *
37 * Stuff not working under MS:
38 *
39 *  1) String to Integer Implicit operand conversion, ms10: a063, b063, c063 -
40 *     a failure when a String in a position of an Integer; errors in e063,
41 *     f063, g063, h063 are inverted by q004 flag (Implicit Operand conversion
42 *     on MS contradicts ACPI Spec).
43 *  2) No exception on DerefOf of an arbitrary Source, ms11: b083, d083 -
44 *     an expected failure on DerefOf of an Integer.
45 *  3) Access to FieldObject element of Package causes exception, ms16: f118 -
46 *     a failure when an Integer is stored to a Named Package.
47 *  4) The Read access automatic dereference ... doesn't work, ms17: b126,
48 *     c126 - a failure when a reference in ArgX is used in a position of Data.
49 *  5) CopyObject of immediately passed Index ... is not a reference, ms18:
50 *     a127 - a failure due to the CopyObject operator in AML code.
51 *  6) Copying the RefOf reference to Named object ..., ms19: d128, e128 -
52 *     a failure when a reference is stored to a Package element.
53 *  7) Store to the Index reference ... returned by Method ..., ms1a: a131,
54 *     b131, c131 - a failure when a Method call is the Target of Store.
55 *  8) Read access automatic dereference for Index reference ..., ms1b: a132,
56 *     b132 - a failure when the Index argument is used without Derefof.
57 *  9) Write access automatic dereference for Index reference ..., ms1c: b133 -
58 *     a failure when a String element is to be changed.
59 * 10) Forward reference within a control method, ms20: cmfr - an expected
60 *     failure when a Named Object is accessed before its declaration.
61 * 11) Recursive Serialized method execution, ms21: erec - an expected
62 *     failure for the enough deep recursion.
63 * 12) Implicit return, ms23: emir?, fmir?, gmir - Break in the specifically
64 *     declared while doesn't work.
65 * 13) Store(..., DeRefof(...)) behavior, ms25: a failure when a Refof or
66 *     Derefof is the Target of Store.
67 * 14) IndexField implementation, my27: jife - a failure when the Access type
68 *     of a Field is specified to be QWordAcc.
69 * 15) Acquire/Release, ms29: a hang when used with the Dynamic Mutex.
70 * 16) ToBuffer optional store, ms2a: it looks like ToBuffer does not work.
71 * 17) Package size calculation, ms2b: pac2 actually should be used with
72 *     Package(3){1, 2, 3, 4, 5}) declaration, but iASL reports "Initializer
73 *     list too long" error. Use it with -f iASL option.
74 * 18) Bug 246 issue, ms2f: c246 actually should be used without
75 *     While(1){... Break) declaration, but iASL reports "No enclosing While
76 *     statement" error. Use it with -f iASL option.
77 * 19) Storing of an improper specified Device object ..., ms33:
78 *     a blue screen appears on the MS OS booting if that Device is global.
79 *
80 * 99)
81 */
82
83// Useful for indirect storing
84
85Method(RSTO, 2) {Store(arg0, arg1)}
86
87Method(DSTO, 2) {Store(Derefof(arg0), arg1)}
88
89/*
90 * Bug 63 issue:
91 *
92 * SUMMARY: String to Integer conversion contradicts new April 2005 Conversion Rules
93 */
94Method(ms10, 1, Serialized)
95{
96	Name(ts, "ms10")
97
98	Method(m063, 2)
99	{
100		OUTP("Bug 63: Add(\"0x1111\", 0, Local0) should return 0?")
101
102		OUTP("Addend1:")
103		OUTP(arg0)
104
105		Add(arg0, 0, Local0)
106
107		OUTP("Result (Local0):")
108		OUTP(Local0)
109
110		if (LNotEqual(arg1, Local0)) {
111			err(ts, z179, __LINE__, 0, 0, Local0, arg1)
112		}
113	}
114
115	Method(n063, 3, Serialized)
116	{
117		Name (INT0, 0xffff)
118
119		OUTP("Bug 63upd: Implicit conversion \"0x1111\" to Integer should return 0?")
120
121		OUTP("String:")
122		OUTP(arg0)
123
124		Store(arg0, INT0)
125
126		OUTP("Result (INT0):")
127		OUTP(INT0)
128
129		if (LAnd(ABUU, LNot(q004))) {
130			// Implicit Operand conversion on MS contradicts ACPI Spec
131			if (LNotEqual(arg2, INT0)) {
132				err(ts, z179, __LINE__, 0, 0, INT0, arg2)
133			}
134		} else {
135			if (LNotEqual(arg1, INT0)) {
136				err(ts, z179, __LINE__, 0, 0, INT0, arg1)
137			}
138		}
139	}
140
141	Method(m000)
142	{
143		if (ABUU) {
144		} else {
145			m063("0", 0)
146			m063("0x", 0)
147			m063("0x1111", 0)
148		}
149		m063(1, 1)
150
151		n063("0", 0, 0x30)
152		n063("0x", 0, 0x7830)
153		n063("0x1111", 0, 0x31317830)
154		n063("0x111111111",  0, 0x31317830)
155	}
156
157	CH03(ts, z179, 0x002, __LINE__, 0)
158
159	switch (ToInteger (Arg0)) {
160		case (0) { m000() }
161		case (1) { m063("0", 0) }
162		case (2) { m063("0x", 0) }
163		case (3) { m063("0x1111", 0) }
164		case (4) { m063(1, 1) }
165
166		case (5) { n063("0", 0, 0x30) }
167		case (6) { n063("0x", 0, 0x7830) }
168		case (7) { n063("0x1111", 0, 0x31317830) }
169		case (8) { n063("0x111111111", 0, 0x31317830) }
170	}
171
172	CH03(ts, z179, 0x003, __LINE__, 0)
173}
174
175/* Methods to run manually (for ABBU only) */
176Method(a063) { IIN0() ms10(1) Return(POUT) }
177Method(b063) { IIN0() ms10(2) Return(POUT) }
178Method(c063) { IIN0() ms10(3) Return(POUT) }
179Method(d063) { IIN0() ms10(4) Return(POUT) }
180Method(e063) { IIN0() ms10(5) Return(POUT) }
181Method(f063) { IIN0() ms10(6) Return(POUT) }
182Method(g063) { IIN0() ms10(7) Return(POUT) }
183Method(h063) { IIN0() ms10(8) Return(POUT) }
184
185/*
186 * Bug 83 issue:
187 *
188 * SUMMARY: No exception on DerefOf of an arbitrary Source
189 */
190Method(ms11, 1, Serialized)
191{
192	Name(ts, "ms11")
193
194	Method(m083, 1, Serialized)
195	{
196		Name(i000, 0x89abcdef)
197
198		OUTP("Bug 83: Derefof of non-Ref. (f.e. Integer) should produce exception")
199
200		OUTP("Name(i000, 0x89abcdef)")
201
202		if (arg0) {
203			Store(Derefof(i000), Local0)
204			CH04(ts, 0, 0xff, z179, __LINE__, 0, 0)
205		} else {
206			Store(Derefof(Refof(i000)), Local0)
207			CH03(ts, z179, 0x005, __LINE__, 0)
208		}
209	}
210
211	Method(n083, 1, Serialized)
212	{
213		Name(i000, 0x89abcdef)
214
215		OUTP("Bug 83upd: Derefof of non-Ref. (f.e. Integer) should produce exception")
216
217		if (arg0) {
218			Store(0x89abcdef, Local0)
219			OUTP("Store(0x89abcdef, Local0)")
220		} else {
221			Store(Refof(i000), Local0)
222			OUTP("Store(Refof(i000), Local0)")
223		}
224		Store(Derefof(Local0), Local1)
225		if (arg0) {
226			CH04(ts, 0, 0xff, z179, __LINE__, 0, 0)
227		} else {
228			CH03(ts, z179, 0x007, __LINE__, 0)
229		}
230	}
231
232	Method(m000)
233	{
234		m083(0)
235		if (ABUU) {
236		} else {
237			m083(1)
238		}
239		n083(0)
240		if (ABUU) {
241		} else {
242			n083(1)
243		}
244	}
245
246	CH03(ts, z179, 0x008, __LINE__, 0)
247
248	switch (ToInteger (Arg0)) {
249		case (0) { m000() }
250		case (1) { m083(0) }
251		case (2) { m083(1) }
252		case (3) { n083(0) }
253		case (4) { n083(1) }
254	}
255
256	CH03(ts, z179, 0x009, __LINE__, 0)
257}
258
259/* Methods to run manually (for ABBU only) */
260Method(a083) { IIN0() ms11(1) Return(POUT) }
261Method(b083) { IIN0() ms11(2) Return(POUT) }
262Method(x083) { IIN0() ms11(3) Return(POUT) }
263Method(d083) { IIN0() ms11(4) Return(POUT) }
264
265/*
266 * Bug 100 issue:
267 *
268 * SUMMARY: The specific combination of operators aborts execution
269 */
270Method(ms12,, Serialized)
271{
272	Name(ts, "ms12")
273
274	Method(m100)
275	{
276		Method(m000)
277		{
278			return (0)
279		}
280
281		Method(m001,, Serialized)
282		{
283			m000()
284
285			Device(d000) {}
286
287			Name(i000, 0xabcdef)
288
289			OUTP("Finish of test")
290		}
291
292		OUTP("Bug 100 (fixed for 20050526): some combination of operators aborts execution")
293
294		m001()
295	}
296	CH03(ts, z179, 0x00a, __LINE__, 0)
297	m100()
298	CH03(ts, z179, 0x00b, __LINE__, 0)
299}
300
301/* Methods to run manually (for ABBU only) */
302Method(a100) { IIN0() ms12() Return(POUT) }
303
304/*
305 * Bug 113 issue:
306 *
307 * SUMMARY: Unexpected dereference of Index reference immediately passed to Method
308 */
309
310Method(ms13, 1, Serialized)
311{
312	Name(ts, "ms13")
313
314	Name(p001, Package(){0x10, 0x11, 0x12, 0x13, 0x14})
315	Name(p002, Package(){0x20, 0x21, 0x22, 0x23, 0x24})
316	Name(p003, Package(){0x30, 0x31, 0x32, 0x33, 0x34})
317	Name(p004, Package(){0x40, 0x41, 0x42, 0x43, 0x44})
318	Name(p005, Package(){0x50, 0x51, 0x52, 0x53, 0x54})
319
320	Method(a113)
321	{
322		Method(m000, 2)
323		{
324			Store(Derefof(arg0), Local0)
325			if (CH03(ts, z179, 0x00c, __LINE__, 0)) {
326			} elseif (LNotEqual(Local0, arg1)) {
327				err(ts, z179, __LINE__, 0, 0, Local0, arg1)
328			}
329		}
330
331		OUTP("Bug 113: immediate Indexed Ref. as parameters of Methods are unexpectedly dereferenced 1")
332
333		m000(Index(p001, 0), 0x10)
334	}
335
336	Method(b113)
337	{
338		Method(m000, 2)
339		{
340			Store(Derefof(arg0), Local0)
341			if (CH03(ts, z179, 0x00e, __LINE__, 0)) {
342			} elseif (LNotEqual(Local0, arg1)) {
343				err(ts, z179, __LINE__, 0, 0, Local0, arg1)
344			}
345		}
346
347		OUTP("Bug 113: immediate Indexed Ref. as parameters of Methods are unexpectedly dereferenced 2")
348
349		Store(Index(p001, 0), Local0)
350
351		m000(Local0, 0x10)
352	}
353
354	Method(s113)
355	{
356		Method(m000, 6)
357		{
358			OUTP(Derefof(arg0))
359			CH03(ts, z179, 0x012, __LINE__, 0)
360			OUTP(Derefof(arg1))
361			CH03(ts, z179, 0x013, __LINE__, 0)
362			OUTP(Derefof(arg2))
363			CH03(ts, z179, 0x014, __LINE__, 0)
364			OUTP(Derefof(arg3))
365			CH03(ts, z179, 0x015, __LINE__, 0)
366			OUTP(Derefof(arg4))
367			CH03(ts, z179, 0x016, __LINE__, 0)
368			OUTP(Derefof(arg5))
369			CH03(ts, z179, 0x017, __LINE__, 0)
370		}
371
372		OUTP("Bug 113 MS: immediate Indexed Ref. as parameters of Methods can be dereferenced 3")
373
374		Store(Index(p002, 1), Local0)
375
376		Index(p004, 3, Local1)
377
378		Store(Index(p005, 4, Local2), Local3)
379
380		m000(Index(p001, 0), Local0, Index(p003, 2, Local4), Local1, Local2, Local3)
381
382		OUTP(Derefof(Local4))
383	}
384
385	CH03(ts, z179, 0x018, __LINE__, 0)
386	switch (ToInteger (Arg0)) {
387		case (0) { a113() b113() s113()}
388		case (1) { a113() }
389		case (2) { b113() }
390		case (3) { s113() }
391	}
392	CH03(ts, z179, 0x019, __LINE__, 0)
393}
394
395/* Methods to run manually (for ABBU only) */
396Method(a113) { IIN0() ms13(1) Return(POUT) }
397Method(b113) { IIN0() ms13(2) Return(POUT) }
398Method(c113) { IIN0() ms13(3) Return(POUT) }
399
400/*
401 * Bug 114 issue:
402 *
403 * SUMMARY: Method object as a Source of Index operation is treated by iASL as a call to that Method
404 * Note: M001 will become a method call. No parens needed because it has no argument.
405 */
406Method(ms14, 1, Serialized)
407{
408	Name(ts, "ms14")
409
410	Method(m114, 1)
411	{
412		Method(m000, 1, Serialized)
413		{
414			Name(i001, 0)
415			Name(b001, Buffer(){10,2,3,4,5})
416
417			Method(m001)
418			{
419				Increment(i001)
420				return (Buffer(){10,2,3,4,5})
421			}
422
423			Method(m002)
424			{
425				Increment(i001)
426				return (Package(){10,2,3,4,5})
427			}
428
429			if (LEqual(arg0, 0)) {
430				OUTP("Start of test: Method returns (Buffer(){10,2,3,4,5})")
431				OUTP("Index(m001, 0, Local0)")
432				Index(m001, 0, Local0)
433				if (LAnd(ABUU, LNot(q005))) {
434				} elseif (LNot(i001)) {
435					err(ts, z179, __LINE__, 0, 0, i001, 0)
436				}
437			} elseif (LEqual(arg0, 1)) {
438				OUTP("Start of test: Method returns (Package(){10,2,3,4,5})")
439				OUTP("Index(m001, 0, Local0)")
440				Index(m001, 0, Local0)
441				if (LAnd(ABUU, LNot(q005))) {
442				} elseif (LNot(i001)) {
443					err(ts, z179, __LINE__, 0, 0, i001, 0)
444				}
445			} elseif (LEqual(arg0, 2)) {
446				OUTP("Start of test: Name(b001, Buffer(){10,2,3,4,5})")
447				OUTP("Index(b001, 0, Local0)")
448				Index(b001, 0, Local0)
449				OUTP(i001)
450				Store(DerefOf(Local0), Local1)
451				OUTP(Local1)
452			}
453
454			OUTP("Finish of test")
455		}
456
457		OUTP("Bug 114: Method object as a Source of Index operation")
458		m000(arg0)
459	}
460
461	Method(m000)
462	{
463		m114(0)
464		m114(1)
465		m114(2)
466	}
467
468	CH03(ts, z179, 0x01e, __LINE__, 0)
469	switch (ToInteger (Arg0)) {
470		case (0) { m000()}
471		case (1) { m114(0) }
472		case (2) { m114(1) }
473		case (3) { m114(2) }
474	}
475	CH03(ts, z179, 0x01f, __LINE__, 0)
476}
477
478/* Methods to run manually (for ABBU only) */
479Method(a114) { IIN0() ms14(1) Return(POUT) }
480Method(b114) { IIN0() ms14(2) Return(POUT) }
481Method(c114) { IIN0() ms14(3) Return(POUT) }
482
483/*
484 * Bug 115 issue:
485 *
486 * SUMMARY: Unexpected dereference of Index reference returned by Method and immediately passed to another Method
487 */
488Method(ms15, 1, Serialized)
489{
490	Name(ts, "ms15")
491
492	Name(p001, Package(){0x10})
493	Name(p002, Package(){0x20})
494	Name(p003, Package(){0x30})
495	Name(p004, Package(){0x40})
496	Name(p005, Package(){0x50})
497	Name(p006, Package(){0x60})
498
499	Method(m001) {Return(Index(p001, 0))}
500	Method(m002) {Store(Index(p002, 0), Local0)
501				  Return(Local0)}
502	Method(m003) {Return(Index(p003, 0, Local0))}
503	Method(m004) {Index(p004, 0, Local0)
504				  Return(Local0)}
505
506	Method(m005) {Store(Index(p005, 0, Local0), Local1)
507				  Return(Local1)}
508	Method(m006) {Store(Index(p006, 0, Local0), Local1)
509				  Return(Local0)}
510
511	Method(a115)
512	{
513
514		Method(m000, 2)
515		{
516			Store(Derefof(arg0), Local0)
517			if (CH03(ts, z179, 0x020, __LINE__, 0)) {
518			} elseif (LNotEqual(Local0, arg1)) {
519				err(ts, z179, __LINE__, 0, 0, Local0, arg1)
520			}
521		}
522
523		OUTP("Bug 115: immediately returned Indexed Ref. as parameters of Methods are unexpectedly dereferenced 1")
524
525		m000(m001(), 0x10)
526	}
527
528	Method(b115)
529	{
530
531		Method(m000, 2)
532		{
533			Store(Derefof(arg0), Local0)
534			if (CH03(ts, z179, 0x022, __LINE__, 0)) {
535			} elseif (LNotEqual(Local0, arg1)) {
536				err(ts, z179, __LINE__, 0, 0, Local0, arg1)
537			}
538		}
539
540		OUTP("Bug 115: immediately returned Indexed Ref. as parameters of Methods are unexpectedly dereferenced 2")
541
542		m000(m002(), 0x20)
543	}
544
545	Method(c115)
546	{
547
548		Method(m000, 2)
549		{
550			Store(Derefof(arg0), Local0)
551			if (CH03(ts, z179, 0x024, __LINE__, 0)) {
552			} elseif (LNotEqual(Local0, arg1)) {
553				err(ts, z179, __LINE__, 0, 0, Local0, arg1)
554			}
555		}
556
557		OUTP("Bug 115: immediately returned Indexed Ref. as parameters of Methods are unexpectedly dereferenced 3")
558
559		m000(m003(), 0x30)
560	}
561
562	Method(d115)
563	{
564
565		Method(m000, 2)
566		{
567			Store(Derefof(arg0), Local0)
568			if (CH03(ts, z179, 0x026, __LINE__, 0)) {
569			} elseif (LNotEqual(Local0, arg1)) {
570				err(ts, z179, __LINE__, 0, 0, Local0, arg1)
571			}
572		}
573
574		OUTP("Bug 115: immediately returned Indexed Ref. as parameters of Methods are unexpectedly dereferenced 4")
575
576		m000(m004(), 0x40)
577	}
578
579	Method(e115)
580	{
581
582		Method(m000, 2)
583		{
584			Store(Derefof(arg0), Local0)
585			if (CH03(ts, z179, 0x028, __LINE__, 0)) {
586			} elseif (LNotEqual(Local0, arg1)) {
587				err(ts, z179, __LINE__, 0, 0, Local0, arg1)
588			}
589		}
590
591		OUTP("Bug 115: immediately returned Indexed Ref. as parameters of Methods are unexpectedly dereferenced 5")
592
593		m000(m005(), 0x50)
594	}
595
596	Method(f115)
597	{
598
599		Method(m000, 2)
600		{
601			Store(Derefof(arg0), Local0)
602			if (CH03(ts, z179, 0x02a, __LINE__, 0)) {
603			} elseif (LNotEqual(Local0, arg1)) {
604				err(ts, z179, __LINE__, 0, 0, Local0, arg1)
605			}
606		}
607
608		OUTP("Bug 115: immediately returned Indexed Ref. as parameters of Methods are unexpectedly dereferenced 6")
609
610		m000(m006(), 0x60)
611	}
612
613	CH03(ts, z179, 0x02c, __LINE__, 0)
614	switch (ToInteger (Arg0)) {
615		case (0) { a115() b115() c115() d115() e115() f115()}
616		case (1) { a115() }
617		case (2) { b115() }
618		case (3) { c115() }
619		case (4) { d115() }
620		case (5) { e115() }
621		case (6) { f115() }
622	}
623	CH03(ts, z179, 0x02d, __LINE__, 0)
624}
625
626/* Methods to run manually (for ABBU only) */
627Method(a115) { IIN0() ms15(1) Return(POUT) }
628Method(b115) { IIN0() ms15(2) Return(POUT) }
629Method(c115) { IIN0() ms15(3) Return(POUT) }
630Method(d115) { IIN0() ms15(4) Return(POUT) }
631Method(e115) { IIN0() ms15(5) Return(POUT) }
632Method(f115) { IIN0() ms15(6) Return(POUT) }
633
634/*
635 * Bug 118 issue:
636 *
637 * SUMMARY: Access to FieldObject element of Package causes exception
638 */
639Method(ms16, 1, Serialized)
640{
641	Name(ts, "ms16")
642
643	Method(a118,, Serialized)
644	{
645		Name(p90d, Package() {0xd650a284})
646
647		// Access to the Integer data as an element of Package
648		Method(m000)
649		{
650			OUTP("Test m000 started")
651
652			Store(Index(p90d, 0), Local0)
653			Store(DerefOf(Local0), Local1)
654			Store(ObjectType(Local1), Local2)
655
656			if (LNotEqual(Local2, 1)) {
657				err(ts, z179, __LINE__, 0, 0, Local2, 1)
658				if (LEqual(Local2, 2)) {
659					OUTP(Local1)
660				} else {
661					OUTP(Local2)
662				}
663			} else {
664				OUTP(Local1)
665				if (LNotEqual(Local1, 0xd650a284)) {
666					err(ts, z179, __LINE__, 0, 0, Local1, 0xd650a284)
667				} else {
668					OUTP("Ok")
669				}
670			}
671
672			OUTP("Test m000 finished")
673		}
674
675		OUTP("Bug 118: Integer data as an element of Package")
676
677		m000()
678	}
679
680	Method(b118,, Serialized)
681	{
682		Name(i900, 0xd650a284)
683
684		Name(p90d, Package() {i900})
685
686		// Access to the named Integer object as an element of Package
687		Method(m000)
688		{
689			OUTP("Test m000 started")
690
691			Store(Index(p90d, 0), Local0)
692			Store(DerefOf(Local0), Local1)
693			Store(ObjectType(Local1), Local2)
694
695			if (LAnd(ABUU, LNot(q006))) {
696				if (LNotEqual(Local2, 2)) {
697					err(ts, z179, __LINE__, 0, 0, Local2, 2)
698				}
699			} elseif (LNotEqual(Local2, 1)) {
700				err(ts, z179, __LINE__, 0, 0, Local2, 1)
701			} else {
702				OUTP(Local1)
703				if (LNotEqual(Local1, 0xd650a284)) {
704					err(ts, z179, __LINE__, 0, 0, Local1, 0xd650a284)
705				} else {
706					OUTP("Ok")
707				}
708			}
709
710			OUTP("Test m000 finished")
711		}
712
713		OUTP("Bug 118: Named Integer Object reference in Package")
714
715		m000()
716	}
717
718	Method(c118,, Serialized)
719	{
720		Name(b900, Buffer() {10,2,3,4,5,6,7,8,9})
721
722		CreateField(b900, 0, 8, bf90)
723
724		Name(p915, Package() {bf90})
725
726		// Access to the Buffer Field object as an element of Package
727		Method(m001)
728		{
729			OUTP("Test m001 started")
730
731			Store(Index(p915, 0), Local0)
732			Store(DerefOf(Local0), Local1)
733			Store(ObjectType(Local1), Local2)
734
735			if (LAnd(ABUU, LNot(q006))) {
736				if (LNotEqual(Local2, 2)) {
737					err(ts, z179, __LINE__, 0, 0, Local2, 2)
738				}
739			} elseif (LNotEqual(Local2, 0x3)) {
740				err(ts, z179, __LINE__, 0, 0, Local2, 0x3)
741			} elseif (y118) {
742				OUTP(Local1)
743				if (LNotEqual(Local1, 10)) {
744					err(ts, z179, __LINE__, 0, 0, Local1, 10)
745				} else {
746					OUTP("Ok")
747				}
748			}
749
750			OUTP("Test m001 finished")
751		}
752
753		OUTP("Bug 118: Named Buffer Field Object reference in Package")
754
755		m001()
756	}
757
758	Method(d118,, Serialized)
759	{
760		Name(b900, Buffer() {10,2,3,4,5,6,7,8,9})
761
762		CreateField(b900, 0, 8, bf90)
763
764		// Access to the Buffer Field object by Reference
765		Method(m001)
766		{
767			OUTP("Test m001 started: Store bf90 to Local1")
768
769			Store(bf90, Local1)
770			Store(ObjectType(Local1), Local2)
771
772			if (LAnd(ABUU, LNot(q007))) {
773				if (LNotEqual(Local2, 3)) {
774					err(ts, z179, __LINE__, 0, 0, Local2, 3)
775				}
776			} elseif (LNotEqual(Local2, 0x3)) {
777				err(ts, z179, __LINE__, 0, 0, Local2, 0x3)
778			} else {
779				OUTP(Local1)
780				if (LNotEqual(Local1, Buffer(){0xA})) {
781					err(ts, z179, __LINE__, 0, 0, Local1, Buffer(){0xA})
782				} else {
783					OUTP("Ok")
784				}
785			}
786
787			OUTP("Test m001 finished")
788		}
789
790		OUTP("Bug 118 issue: Fields are immediately resolved to integers/buffers.")
791
792		m001()
793	}
794
795	Method(e118,, Serialized)
796	{
797		Name(b900, Buffer() {10,2,3,4,5,6,7,8,9})
798
799		CreateField(b900, 0, 8, bf90)
800
801		// Access to the Buffer Field object by Reference
802		Method(m001)
803		{
804			OUTP("Test m001 started: Store DerefOf(Refof(bf90)) to Local1")
805
806			Store(Refof(bf90), Local0)
807			Store(DerefOf(Local0), Local1)
808			Store(ObjectType(Local1), Local2)
809
810			if (LAnd(ABUU, LNot(q007))) {
811				if (LNotEqual(Local2, 3)) {
812					err(ts, z179, __LINE__, 0, 0, Local2, 3)
813				}
814			} elseif (LNotEqual(Local2, 0x3)) {
815				err(ts, z179, __LINE__, 0, 0, Local2, 0x3)
816			} else {
817				OUTP(Local1)
818				if (LNotEqual(Local1, Buffer(){0xA})) {
819					err(ts, z179, __LINE__, 0, 0, Local1, Buffer(){0xA})
820				} else {
821					OUTP("Ok")
822				}
823			}
824
825			OUTP("Test m001 finished")
826		}
827
828		OUTP("Bug 118 issue: Fields are immediately resolved to integers/buffers.")
829
830		m001()
831	}
832
833	Method(f118,, Serialized)
834	{
835		Name(b900, Buffer() {10,2,3,4,5,6,7,8,9})
836
837		CreateField(b900, 0, 8, bf90)
838
839		Name(p915, Package(1) {})
840
841		// Access to the Buffer Field object by Reference
842		Method(m001)
843		{
844			Method(m000, 1) {return(arg0)}
845
846			OUTP("Test m001 started: Store DerefOf(Refof(bf90)) to Named Package")
847
848			Store(Refof(bf90), Local0)
849			Store(DerefOf(Local0), p915)
850			Store(ObjectType(p915), Local2)
851
852			if (LNotEqual(Local2, 1)) {
853				err(ts, z179, __LINE__, 0, 0, Local2, 1)
854			} else {
855				OUTP(p915)
856				if (LNotEqual(m000(p915), 10)) {
857					err(ts, z179, __LINE__, 0, 0, p915, 10)
858				} else {
859					OUTP("Ok")
860				}
861			}
862
863			OUTP("Test m001 finished")
864		}
865
866		OUTP("Bug 118 issue: Fields are immediately resolved to integers/buffers.")
867
868		m001()
869	}
870
871	Method(g118,, Serialized)
872	{
873		Name(i900, 0xd650a284)
874
875		Name(p90d, Package() {i900})
876
877		// Access to the named Integer object as an element of Package
878		Method(m000)
879		{
880			OUTP("Test m000 started")
881
882			Store(Index(p90d, 0), Local0)
883			Store(DerefOf(Local0), Local1)
884			Store(ObjectType(Local1), Local2)
885
886			if (LAnd(ABUU, LNot(q006))) {
887				if (LNotEqual(Local2, 2)) {
888					err(ts, z179, __LINE__, 0, 0, Local2, 2)
889				}
890			} elseif (LNotEqual(Local2, 1)) {
891				err(ts, z179, __LINE__, 0, 0, Local2, 1)
892			} else {
893				OUTP(Local1)
894				if (LNotEqual(Local1, 0xd650a284)) {
895					err(ts, z179, __LINE__, 0, 0, Local1, 0xd650a284)
896				} else {
897					OUTP("Ok")
898				}
899			}
900
901			OUTP("Test m000 finished")
902		}
903
904		OUTP("Bug 118: DerefOf Named Integer Object reference in Package")
905
906		m000()
907	}
908
909	Method(m000)
910	{
911		a118()
912		b118()
913		c118()
914		d118()
915		e118()
916		if (ABUU) {
917		} else {
918			f118()
919		}
920		g118()
921	}
922
923	CH03(ts, z179, 0x03c, __LINE__, 0)
924	switch (ToInteger (Arg0)) {
925		case (0) { m000() }
926		case (1) { a118() }
927		case (2) { b118() }
928		case (3) { c118() }
929		case (4) { d118() }
930		case (5) { e118() }
931		case (6) { f118() }
932		case (7) { g118() }
933	}
934	CH03(ts, z179, 0x03d, __LINE__, 0)
935}
936
937/* Methods to run manually (for ABBU only) */
938Method(a118) { IIN0() ms16(1) Return(POUT) }
939Method(b118) { IIN0() ms16(2) Return(POUT) }
940Method(c118) { IIN0() ms16(3) Return(POUT) }
941Method(d118) { IIN0() ms16(4) Return(POUT) }
942Method(e118) { IIN0() ms16(5) Return(POUT) }
943Method(f118) { IIN0() ms16(6) Return(POUT) }
944Method(g118) { IIN0() ms16(7) Return(POUT) }
945
946/*
947 * Bug 126 issue:
948 *
949 * SUMMARY: The Read access automatic dereference for RefOf reference doesn't work
950 */
951Method(ms17, 1, Serialized)
952{
953	Name(ts, "ms17")
954
955	Method(m126, 1, Serialized)
956	{
957		Method(m000, 1, Serialized)
958		{
959			Name(i001, 0)
960
961			OUTP("m000 started, apply DerefOf()")
962
963			Store(DerefOf(arg0), Local0)
964			Add(Local0, 1, Local6)
965			CH03(ts, z179, 0x03e, __LINE__, 0)
966			OUTP(Local6)
967
968			Store(DerefOf(arg0), i001)
969			OUTP(i001)
970			Add(i001, 1, Local7)
971			CH03(ts, z179, 0x03f, __LINE__, 0)
972			OUTP(Local7)
973
974			if (LNotEqual(Local6, Local7)) {
975				err(ts, z179, __LINE__, 0, 0, Local6, Local7)
976			}
977
978			OUTP("m000 finished")
979		}
980
981		Method(m001, 1, Serialized)
982		{
983
984			Name(i001, 0)
985
986			OUTP("m001 started, DON'T apply DerefOf()")
987
988			Store(arg0, Local0)
989			OUTP("Before Add")
990			Add(Local0, 1, Local6)
991			CH03(ts, z179, 0x041, __LINE__, 0)
992			OUTP("After Add")
993			OUTP(Local6)
994
995			OUTP("sit 1")
996
997			Store(arg0, i001)
998			CH03(ts, z179, 0x042, __LINE__, 0)
999			OUTP(i001)
1000			Add(i001, 1, Local7)
1001			CH03(ts, z179, 0x043, __LINE__, 0)
1002			if (LNotEqual(Local6, Local7)) {
1003				err(ts, z179, __LINE__, 0, 0, Local6, Local7)
1004			}
1005
1006			OUTP("m001 finished")
1007		}
1008
1009		Method(m002, 1)
1010		{
1011			OUTP("m002 started, immediate Arg")
1012
1013			OUTP("Before Add")
1014			Add(arg0, 1, Local7)
1015			CH03(ts, z179, 0x045, __LINE__, 0)
1016			OUTP("After Add")
1017			if (LNotEqual(8, Local7)) {
1018				err(ts, z179, __LINE__, 0, 0, Local7, 8)
1019			}
1020
1021			OUTP("m002 finished")
1022		}
1023
1024		Method(m003, 1)
1025		{
1026			OUTP("m003 started, apply DerefOf(Arg)")
1027
1028			OUTP("Before Add")
1029			Add(DerefOf(arg0), 1, Local7)
1030			CH03(ts, z179, 0x047, __LINE__, 0)
1031			OUTP("After Add")
1032			if (LNotEqual(8, Local7)) {
1033				err(ts, z179, __LINE__, 0, 0, Local7, 8)
1034			}
1035
1036			OUTP("m003 finished")
1037		}
1038
1039		Name(i000, 7)
1040		Name(i001, 7)
1041		Name(i002, 7)
1042		Name(i003, 7)
1043
1044
1045		OUTP("Bug 126: automatic dereference on reading issue")
1046		if (LEqual(arg0, 0)) {
1047			m000(RefOf(i000))
1048		} elseif (LEqual(arg0, 1)) {
1049			m001(RefOf(i001))
1050		} elseif (LEqual(arg0, 2)) {
1051			m002(RefOf(i002))
1052		} elseif (LEqual(arg0, 3)) {
1053			m003(RefOf(i003))
1054		}
1055	}
1056
1057	Method(m000)
1058	{
1059		m126(0)
1060		if (ABUU) {
1061		} else {
1062			m126(1)
1063			m126(2)
1064		}
1065		m126(3)
1066	}
1067
1068	CH03(ts, z179, 0x049, __LINE__, 0)
1069	switch (ToInteger (Arg0)) {
1070		case (0) { m000() }
1071		case (1) { m126(0) }
1072		case (2) { m126(1) }
1073		case (3) { m126(2) }
1074		case (4) { m126(3) }
1075	}
1076	CH03(ts, z179, 0x04a, __LINE__, 0)
1077}
1078
1079/* Methods to run manually (for ABBU only) */
1080Method(a126) { IIN0() ms17(1) Return(POUT) }
1081Method(b126) { IIN0() ms17(2) Return(POUT) }
1082Method(c126) { IIN0() ms17(3) Return(POUT) }
1083Method(d126) { IIN0() ms17(4) Return(POUT) }
1084
1085
1086/*
1087 * Bug 127 issue:
1088 *
1089 * SUMMARY: Unexpectedly CopyObject of immediately passed Index reference is not reference
1090 */
1091Method(ms18,, Serialized)
1092{
1093	Name(ts, "ms18")
1094
1095	Method(m127,, Serialized)
1096	{
1097		Name (p000, Package(2) {1, 2})
1098
1099		OUTP("Bug 127: CopyObject unexpectedly performs dereference")
1100
1101		OUTP("Store(Index(p000, 0, Local0), Local1):")
1102
1103		Store(Index(p000, 0, Local0), Local1)
1104
1105		Store(Derefof(Local0), Local4)
1106		CH03(ts, z179, 0x04b, __LINE__, 0)
1107
1108		Store(Derefof(Local1), Local4)
1109		CH03(ts, z179, 0x04c, __LINE__, 0)
1110
1111		OUTP("CopyObject(Index(p000, 0, Local2), Local3):")
1112
1113		CopyObject(Index(p000, 0, Local2), Local3)
1114
1115		Store(Derefof(Local2), Local4)
1116		CH03(ts, z179, 0x04d, __LINE__, 0)
1117
1118		Store(Derefof(Local3), Local4)
1119		CH03(ts, z179, 0x04e, __LINE__, 0)
1120	}
1121
1122	CH03(ts, z179, 0x04f, __LINE__, 0)
1123	m127()
1124	CH03(ts, z179, 0x050, __LINE__, 0)
1125}
1126
1127/* Methods to run manually (for ABBU only) */
1128Method(a127) { IIN0() ms18() Return(POUT) }
1129
1130/*
1131 * Bug 128 issue:
1132 *
1133 * SUMMARY: Copying the RefOf reference to Named object spoils that reference
1134 */
1135Method(ms19, 1, Serialized)
1136{
1137	Name(ts, "ms19")
1138
1139	// Store Object_Reference to LocalX (No exception, Ok)
1140	Method(a128,, Serialized)
1141	{
1142		Name(i000, 0x1234)
1143
1144		OUTP("Bug 128:")
1145
1146		OUTP("a128 started: Store Object_Reference to LocalX (No exception, Ok)")
1147
1148		Store(RefOf(i000), Local0)
1149
1150		Store(DerefOf(Local0), Local1)
1151
1152		if (LNotEqual(Local1, 0x1234)) {
1153			err(ts, z179, __LINE__, 0, 0, Local1, 0x1234)
1154		}
1155
1156		OUTP("a128 finished")
1157	}
1158
1159	// Store Object_Reference to NamedX (Exception, Ok)
1160	Method(b128,, Serialized)
1161	{
1162		Name(i000, 0x1234)
1163		Name(ref0, 0)
1164
1165		OUTP("Bug 128:")
1166
1167		OUTP("b128 started: Store Object_Reference to NamedX (Exception, Ok)")
1168
1169		Store(RefOf(i000), ref0)
1170		CH04(ts, 0, 0xff, z179, __LINE__, 0, 0)
1171
1172		OUTP("b128 finished")
1173	}
1174
1175	// CopyObject Object_Reference to NamedX (Exception, Bug)
1176	Method(c128,, Serialized)
1177	{
1178		Name(i000, 0x1234)
1179		Name(ref0, 0)
1180
1181		OUTP("Bug 128:")
1182
1183		OUTP("c128 started: CopyObject Object_Reference to NamedX (Exception, Bug)")
1184
1185		CopyObject(RefOf(i000), ref0)
1186		if (CH04(ts, 0, 0xff, z179, __LINE__, 0, 0)) {
1187			return
1188		}
1189
1190		// When an invocation of a Method tries to return a Package,
1191		// where some reference was saved, the AE_TYPE exception occurs.
1192		//OUTP(ref0)
1193
1194		Store(DerefOf(ref0), Local1)
1195
1196		if (LNotEqual(Local1, 0x1234)) {
1197			err(ts, z179, __LINE__, 0, 0, Local1, 0x1234)
1198		}
1199
1200		OUTP("c128 finished")
1201	}
1202
1203	// Store Object_Reference to uninit Package element (No exception, Ok)
1204	Method(d128,, Serialized)
1205	{
1206		Name(i000, 0x1234)
1207		Name(p000, Package(1){})
1208
1209		OUTP("Bug 128:")
1210
1211		OUTP("d128 started: Store Object_Reference to uninit Package element (No exception, Ok)")
1212
1213		Store(RefOf(i000), Index(p000, 0))
1214
1215		Store(DerefOf(DerefOf(Index(p000, 0))), Local1)
1216
1217		if (LNotEqual(Local1, 0x1234)) {
1218			err(ts, z179, __LINE__, 0, 0, Local1, 0x1234)
1219		}
1220
1221		OUTP("d128 finished")
1222	}
1223
1224	// Store Object_Reference to init Package element (No exception, Ok)
1225	Method(e128,, Serialized)
1226	{
1227		Name(i000, 0x1234)
1228		Name(p000, Package(1){0x5678})
1229
1230		OUTP("Bug 128:")
1231
1232		OUTP("d128 started: Store Object_Reference to init Package element (No exception, Ok)")
1233
1234		Store(RefOf(i000), Index(p000, 0))
1235
1236		Store(DerefOf(DerefOf(Index(p000, 0))), Local1)
1237
1238		if (LNotEqual(Local1, 0x1234)) {
1239			err(ts, z179, __LINE__, 0, 0, Local1, 0x1234)
1240		}
1241
1242		OUTP("d128 finished")
1243	}
1244
1245	Method(m000)
1246	{
1247		a128()
1248
1249		// Causes exception
1250		if (ABUU) {
1251		} else {
1252			b128()
1253		}
1254
1255		// Causes exception
1256		if (ABUU) {
1257		} else {
1258			c128()
1259		}
1260
1261		if (ABUU) {
1262		} else {
1263			d128()
1264		}
1265
1266		if (ABUU) {
1267		} else {
1268			e128()
1269		}
1270	}
1271
1272	CH03(ts, z179, 0x057, __LINE__, 0)
1273	switch (ToInteger (Arg0)) {
1274		case (0) { m000() }
1275		case (1) { a128() }
1276		case (2) { b128() }
1277		case (3) { c128() }
1278		case (4) { d128() }
1279		case (5) { e128() }
1280	}
1281	CH03(ts, z179, 0x058, __LINE__, 0)
1282}
1283
1284/* Methods to run manually (for ABBU only) */
1285Method(a128) { IIN0() ms19(1) Return(POUT) }
1286Method(b128) { IIN0() ms19(2) Return(POUT) }
1287Method(c128) { IIN0() ms19(3) Return(POUT) }
1288Method(d128) { IIN0() ms19(4) Return(POUT) }
1289Method(e128) { IIN0() ms19(5) Return(POUT) }
1290
1291/*
1292 * Bug 131 issue:
1293 *
1294 * SUMMARY: Store to the Index reference immediately returned by Method doesn't work
1295 */
1296Method(ms1a, 1, Serialized)
1297{
1298	Name(ts, "ms1a")
1299
1300	Method(a131,, Serialized)
1301	{
1302		Name(i000, 0x77)
1303		Name(i001, 0)
1304
1305		Method(m000)
1306		{
1307			Increment(i001)
1308			return (RefOf(i000))
1309		}
1310
1311		Method(m001)
1312		{
1313			Increment(i001)
1314			Store(RefOf(i000), Local0)
1315			return (Local0)
1316		}
1317
1318		OUTP("Case return (RefOf(i000))")
1319
1320/*
1321// Removed 09/2015. iASL store to method invocation is not supported
1322		Store(5, m000())
1323*/
1324
1325		if (LEqual(i001, 0)) {
1326			err(ts, z179, __LINE__, 0, 0, i001, 0)
1327		} elseif (LNotEqual(i000, 5)) {
1328			err(ts, z179, __LINE__, 0, 0, i000, 5)
1329		} else {
1330			OUTP("Ok a131")
1331		}
1332	}
1333
1334	Method(b131,, Serialized)
1335	{
1336		Name(i000, 0x77)
1337		Name(i001, 0)
1338
1339		Method(m000)
1340		{
1341			Increment(i001)
1342			return (RefOf(i000))
1343		}
1344
1345		Method(m001)
1346		{
1347			Increment(i001)
1348			Store(RefOf(i000), Local0)
1349			return (Local0)
1350		}
1351
1352		OUTP("Case return (Local0) (= RefOf(i000))")
1353
1354/*
1355// Removed 09/2015. iASL store to method invocation not supported
1356
1357		Store(0x15, m001())
1358*/
1359
1360		if (LEqual(i001, 0)) {
1361			err(ts, z179, __LINE__, 0, 0, i001, 0)
1362		} elseif (LNotEqual(i000, 0x15)) {
1363			err(ts, z179, __LINE__, 0, 0, i000, 0x15)
1364		} else {
1365			OUTP("Ok b131")
1366		}
1367	}
1368
1369	Method(c131,, Serialized)
1370	{
1371		Name(i000, 0x77)
1372		Name(i001, 0)
1373
1374		Method(m000)
1375		{
1376			Increment(i001)
1377			return (RefOf(i000))
1378		}
1379
1380		Method(m001)
1381		{
1382			Increment(i001)
1383			Store(RefOf(i000), Local0)
1384			return (Local0)
1385		}
1386
1387		Store(Refof(Local0), Local1)
1388
1389		OUTP("Case Store(return (RefOf(i000)), Local0)")
1390
1391		Store(m000(), Local0)
1392
1393		Store(0x25, Derefof(Local1))
1394
1395		if (LEqual(i001, 0)) {
1396			err(ts, z179, __LINE__, 0, 0, i001, 0)
1397		} elseif (LNotEqual(i000, 0x25)) {
1398			err(ts, z179, __LINE__, 0, 0, i000, 0x25)
1399		} else {
1400			OUTP("Ok c131")
1401		}
1402	}
1403
1404	Method(d131,, Serialized)
1405	{
1406		Name(i000, 0x77)
1407		Name(i001, 0)
1408
1409		Method(m000)
1410		{
1411			Increment(i001)
1412			return (RefOf(i000))
1413		}
1414
1415		Method(m001)
1416		{
1417			Increment(i001)
1418			Store(RefOf(i000), Local0)
1419			return (Local0)
1420		}
1421
1422		OUTP("Case - test tools proper work indication")
1423
1424		RSTO(0x35, m000())
1425
1426		if (LEqual(i001, 0)) {
1427			err(ts, z179, __LINE__, 0, 0, i001, 0)
1428		} elseif (LNotEqual(i000, 0x35)) {
1429			err(ts, z179, __LINE__, 0, 0, i000, 0x35)
1430		} else {
1431			OUTP("Ok d131")
1432		}
1433	}
1434
1435	Method(e131,, Serialized)
1436	{
1437		Name(i000, 0x77)
1438		Name(i001, 0)
1439
1440		Method(m000)
1441		{
1442			Increment(i001)
1443			return (RefOf(i000))
1444		}
1445
1446		OUTP("Case Store(return (RefOf(i000)), Local0), step 1")
1447
1448		Store(m000(), Local0)
1449
1450		if (LEqual(i001, 0)) {
1451			err(ts, z179, __LINE__, 0, 0, i001, 0)
1452		} else {
1453			OUTP("Ok e131")
1454		}
1455	}
1456
1457	Method(m000)
1458	{
1459		if (ABUU) {
1460		} else {
1461			a131()
1462		}
1463
1464		if (ABUU) {
1465		} else {
1466			b131()
1467		}
1468
1469		if (ABUU) {
1470		} else {
1471			c131()
1472		}
1473
1474		d131()
1475		e131()
1476	}
1477
1478	OUTP("Bug 131: Writing to the reference immediately returned by Method")
1479
1480	CH03(ts, z179, 0x062, __LINE__, 0)
1481	switch (ToInteger (Arg0)) {
1482		case (0) { m000() }
1483		case (1) { a131() }
1484		case (2) { b131() }
1485		case (3) { c131() }
1486		case (4) { d131() }
1487		case (5) { e131() }
1488	}
1489	CH03(ts, z179, 0x063, __LINE__, 0)
1490}
1491
1492/* Methods to run manually (for ABBU only) */
1493Method(a131) { IIN0() ms1a(1) Return(POUT) }
1494Method(b131) { IIN0() ms1a(2) Return(POUT) }
1495Method(c131) { IIN0() ms1a(3) Return(POUT) }
1496Method(d131) { IIN0() ms1a(4) Return(POUT) }
1497Method(e131) { IIN0() ms1a(4) Return(POUT) }
1498
1499/*
1500 * Bug 132 issue:
1501 *
1502 * SUMMARY: The Read access automatic dereference for Index reference doesn't work
1503 */
1504Method(ms1b, 1, Serialized)
1505{
1506	Name(ts, "ms1b")
1507
1508	Method(m132, 2, Serialized)
1509	{
1510		Name(p000, Package(1) {0x77})
1511
1512		Method(m000, 2)
1513		{
1514
1515			OUTP("m000 started")
1516
1517			if (arg1) {
1518				Add(DerefOf(arg0), 1, Local7)
1519			} else {
1520				Add(arg0, 1, Local7)
1521			}
1522			CH03(ts, z179, 0x064, __LINE__, 0)
1523
1524			OUTP("After Add")
1525
1526			if (LNotEqual(Local7, 0x78)) {
1527				err(ts, z179, __LINE__, 0, 0, Local7, 0x78)
1528			} else {
1529				OUTP("Ok 0")
1530			}
1531			OUTP(Local7)
1532
1533			if (arg1) {
1534				OUTP("Accessed with DerefOf properly!")
1535			} else {
1536				OUTP("Accessed without DerefOf properly!")
1537			}
1538		}
1539
1540		OUTP("Bug 132: read access \"Automatic dereference\" for Index Reference")
1541
1542		if (arg0) {
1543			OUTP("Transfer Index reference by LocalX:")
1544			Index(p000, 0, Local0)
1545			m000(Local0, arg1)
1546		} else {
1547			OUTP("Specify Index reference immediately:")
1548			m000(Index(p000, 0), arg1)
1549		}
1550	}
1551
1552	Method(m000)
1553	{
1554		if (ABUU) {
1555		} else {
1556			m132(0, 0)
1557		}
1558
1559		if (ABUU) {
1560		} else {
1561			m132(1, 0)
1562		}
1563
1564		m132(0, 1)
1565		m132(1, 1)
1566	}
1567
1568	CH03(ts, z179, 0x066, __LINE__, 0)
1569	switch (ToInteger (Arg0)) {
1570		case (0) { m000() }
1571		case (1) { m132(0, 0) }
1572		case (2) { m132(1, 0) }
1573		case (3) { m132(0, 1) }
1574		case (4) { m132(1, 1) }
1575	}
1576	CH03(ts, z179, 0x067, __LINE__, 0)
1577}
1578
1579/* Methods to run manually (for ABBU only) */
1580Method(a132) { IIN0() ms1b(1) Return(POUT) }
1581Method(b132) { IIN0() ms1b(2) Return(POUT) }
1582Method(c132) { IIN0() ms1b(3) Return(POUT) }
1583Method(d132) { IIN0() ms1b(4) Return(POUT) }
1584
1585/*
1586 * Bug 133 issue:
1587 *
1588 * SUMMARY: The Write access automatic dereference for Index reference doesn't work
1589 */
1590Method(ms1c, 1, Serialized)
1591{
1592	Name(ts, "ms1c")
1593
1594	Method(m133, 1, Serialized)
1595	{
1596		Name(i000, 0)
1597		Name(s000, "q_er0000")
1598		Name(b000, Buffer(4) {1,0,3,4})
1599		Name(p000, Package(3) {5,0,7})
1600
1601		Method(m000, 1)
1602		{
1603			Store(0x77, arg0)
1604		}
1605
1606		OUTP("Bug 133: WRITE access to the initial object by reference in ArgX")
1607
1608		if (LEqual(arg0, 0)) {
1609			OUTP("Writing by RefOf reference to Integer")
1610
1611			Store(RefOf(i000), Local0)
1612			m000(Local0)
1613			if (LNotEqual(i000, 0x77)) {
1614				err(ts, z179, __LINE__, 0, 0, i000, 0x77)
1615			} else {
1616				OUTP("Ok 0")
1617			}
1618			OUTP(i000)
1619
1620		} elseif (LEqual(arg0, 1)) {
1621			OUTP("Writing by Index to String")
1622
1623			Index(s000, 1, Local0)
1624			m000(Local0)
1625			Store(Derefof(Local0), Local1)
1626			if (LNotEqual(Local1, 0x77)) {
1627				err(ts, z179, __LINE__, 0, 0, Local1, 0x77)
1628			} else {
1629				OUTP("Ok 1")
1630			}
1631			OUTP(s000)
1632
1633		} elseif (LEqual(arg0, 2)) {
1634			OUTP("Writing by Index to Buffer")
1635
1636			Index(b000, 1, Local0)
1637			m000(Local0)
1638
1639			Store(Derefof(Local0), Local1)
1640			if (LNotEqual(Local1, 0x77)) {
1641				err(ts, z179, __LINE__, 0, 0, Local1, 0x77)
1642			} else {
1643				OUTP("Ok 2")
1644			}
1645			OUTP(b000)
1646
1647		} elseif (LEqual(arg0, 3)) {
1648			OUTP("Check Index of Package")
1649
1650			Index(p000, 1, Local0)
1651
1652			Store(DerefOf(Local0), Local1)
1653			if (LNotEqual(Local1, 0)) {
1654				err(ts, z179, __LINE__, 0, 0, Local1, 0)
1655			} else {
1656				OUTP("Ok 3")
1657			}
1658			OUTP(Local1)
1659
1660		} elseif (LEqual(arg0, 4)) {
1661			OUTP("Writing by Index to Package")
1662
1663			Index(p000, 1, Local0)
1664			m000(Local0)
1665
1666			Store(DerefOf(Local0), Local1)
1667
1668			if (LNotEqual(Local1, 0x77)) {
1669				err(ts, z179, __LINE__, 0, 0, Local1, 0x77)
1670			} else {
1671				OUTP("Ok 4")
1672			}
1673			OUTP(Local1)
1674		}
1675	}
1676
1677	Method(m000)
1678	{
1679		m133(0)
1680
1681		if (ABUU) {
1682		} else {
1683			m133(1)
1684		}
1685
1686		m133(2)
1687		m133(3)
1688		m133(4)
1689	}
1690
1691	CH03(ts, z179, 0x06d, __LINE__, 0)
1692	switch (ToInteger (Arg0)) {
1693		case (0) { m000() }
1694		case (1) { m133(0) }
1695		case (2) { m133(1) }
1696		case (3) { m133(2) }
1697		case (4) { m133(3) }
1698		case (5) { m133(4) }
1699	}
1700	CH03(ts, z179, 0x06e, __LINE__, 0)
1701}
1702
1703/* Methods to run manually (for ABBU only) */
1704Method(a133) { IIN0() ms1c(1) Return(POUT) }
1705Method(b133) { IIN0() ms1c(2) Return(POUT) }
1706Method(c133) { IIN0() ms1c(3) Return(POUT) }
1707Method(d133) { IIN0() ms1c(4) Return(POUT) }
1708Method(e133) { IIN0() ms1c(5) Return(POUT) }
1709
1710/*
1711 * Bug 134 issue:
1712 *
1713 * SUMMARY: Writing RefOf reference from inside Method breaks effectively local Arg
1714 */
1715Method(ms1d, 1, Serialized)
1716{
1717	Name(ts, "ms1d")
1718
1719	Method(m134, 1, Serialized)
1720	{
1721		Name(i000, 0x11)
1722		Name(i001, 0x22)
1723		Name(i002, 0x33)
1724		Name(i003, 0x44)
1725		Name(i004, 0x55)
1726		Name(i005, 0x66)
1727		Name(i006, 0x77)
1728
1729		Method(m000, 7)
1730		{
1731			OUTP("LocalX case of Method started:")
1732
1733			Store(RefOf(i000), Local0)
1734			Store(Local0, Local1)
1735			Store(Local1, Local2)
1736			Store(Local2, Local3)
1737			Store(Local3, Local4)
1738			Store(Local4, Local5)
1739			Store(Local5, Local6)
1740
1741			Store(0x88, Local6)
1742
1743			if (LAnd(ABUU, LNot(q008))) {
1744				if (LNotEqual(i000, 0x88)) {
1745					err(ts, z179, __LINE__, 0, 0, i000, 0x88)
1746				}
1747			} elseif (LNotEqual(i000, 0x11)) {
1748				err(ts, z179, __LINE__, 0, 0, i000, 0x11)
1749			} else {
1750				if (LNotEqual(Local6, 0x88)) {
1751					err(ts, z179, __LINE__, 0, 0, Local6, 0x88)
1752				} else {
1753					OUTP("Ok 0:")
1754				}
1755				OUTP(Local6)
1756			}
1757
1758			OUTP("LocalX case of Method finished")
1759		}
1760
1761		Method(m001, 7)
1762		{
1763			OUTP("ArgX case of Method started:")
1764
1765			Store(RefOf(i000), arg0)
1766			Store(arg0, arg1)
1767			Store(arg1, arg2)
1768			Store(arg2, arg3)
1769			Store(arg3, arg4)
1770			Store(arg4, arg5)
1771			Store(arg5, arg6)
1772
1773			Store(0x88, arg6)
1774
1775			if (LAnd(ABUU, LNot(q008))) {
1776				if (LNotEqual(i000, 0x88)) {
1777					err(ts, z179, __LINE__, 0, 0, i000, 0x88)
1778				}
1779			} elseif (LNotEqual(i000, 0x11)) {
1780				err(ts, z179, __LINE__, 0, 0, i000, 0x11)
1781			} else {
1782				if (LNotEqual(arg6, 0x88)) {
1783					err(ts, z179, __LINE__, 0, 0, arg6, 0x88)
1784				} else {
1785					OUTP("Ok 1:")
1786				}
1787				OUTP(arg6)
1788			}
1789
1790			OUTP("ArgX case of Method finished")
1791		}
1792
1793		Method(m002, 7)
1794		{
1795			OUTP("references in ArgX case of Method started:")
1796
1797			Store(RefOf(i000), arg0)
1798			Store(arg0, arg1)
1799			Store(arg1, arg2)
1800			Store(arg2, arg3)
1801			Store(arg3, arg4)
1802			Store(arg4, arg5)
1803			Store(arg5, arg6)
1804
1805			Store(0x88, arg6)
1806
1807			if (LAnd(ABUU, LNot(q008))) {
1808				if (LNotEqual(i000, 0x88)) {
1809					err(ts, z179, __LINE__, 0, 0, i000, 0x88)
1810				}
1811			} elseif (LNotEqual(i000, 0x11)) {
1812				err(ts, z179, __LINE__, 0, 0, i000, 0x11)
1813				OUTP(i000)
1814			} else {
1815				Store(DerefOf(arg6), Local1)
1816				if (LNotEqual(Local1, 0x88)) {
1817					err(ts, z179, __LINE__, 0, 0, Local1, 0x88)
1818				} else {
1819					OUTP("Ok 1:")
1820				}
1821				OUTP(arg6)
1822			}
1823
1824			OUTP("ArgX case of Method finished")
1825		}
1826
1827		OUTP("Bug 134: ArgX term effectively becomes a LocalX term")
1828
1829		if (LEqual(arg0, 0)) {
1830			m000(i000,i001,i002,i003,i004,i005,i006)
1831		} elseif (LEqual(arg0, 1)) {
1832			m001(i000,i001,i002,i003,i004,i005,i006)
1833		} elseif (LEqual(arg0, 2)) {
1834			m002(Refof(Local0),Refof(Local1),Refof(Local2),Refof(Local3),Refof(Local4),
1835				Refof(Local5),Refof(Local6))
1836		}
1837	}
1838
1839	Method(m000)
1840	{
1841		m134(0)
1842		m134(1)
1843		m134(2)
1844	}
1845
1846	CH03(ts, z179, 0x075, __LINE__, 0)
1847	switch (ToInteger (Arg0)) {
1848		case (0) { m000() }
1849		case (1) { m134(0) }
1850		case (2) { m134(1) }
1851		case (3) { m134(2) }
1852	}
1853	CH03(ts, z179, 0x076, __LINE__, 0)
1854}
1855
1856/* Methods to run manually (for ABBU only) */
1857Method(a134) { IIN0() ms1d(1) Return(POUT) }
1858Method(b134) { IIN0() ms1d(2) Return(POUT) }
1859Method(c134) { IIN0() ms1d(3) Return(POUT) }
1860
1861/*
1862 * Bug 136 issue:
1863 *
1864 * SUMMARY: CopyObject of named Buffer to the longer named Buffer works incorrectly
1865 */
1866Method(ms1e,, Serialized)
1867{
1868	Name(ts, "ms1e")
1869
1870	Method(m136,, Serialized)
1871	{
1872		Name(b000, Buffer(1){0x3c})
1873		Name(b001, Buffer(3){0x01, 0x02, 0x03})
1874
1875		OUTP("Bug 136: CopyObject does not perform an implicit store")
1876
1877		CopyObject(b000, b001)
1878
1879		if (LEqual(b000, b001)) {
1880			OUTP("Ok")
1881		} else {
1882			err(ts, z179, __LINE__, 0, 0, b000, b001)
1883		}
1884		OUTP(b000)
1885		OUTP(b001)
1886	}
1887
1888	CH03(ts, z179, 0x078, __LINE__, 0)
1889	m136()
1890	CH03(ts, z179, 0x079, __LINE__, 0)
1891}
1892
1893/* Methods to run manually (for ABBU only) */
1894Method(a136) { IIN0() ms1e() Return(POUT) }
1895
1896/*
1897 * Hot issue:
1898 *
1899 * Checks store of a Local Reference into the Package
1900 */
1901Method(ms1f, 1, Serialized)
1902{
1903	Name(ts, "ms1f")
1904
1905	Name(I999, 0)
1906	Name(PREF, Package(4) {0xa5a5a5a5, I999, I999})
1907
1908	Method(mlrp, 2)
1909	{
1910		Store(ObjectType(Arg0), Local0)
1911		Store(Arg0, Index(PREF, Arg1))
1912		CH03(ts, z179, 0x07a, __LINE__, 0)
1913		Store(ObjectType(Index(PREF, Arg1)), Local1)
1914		if (LNotEqual(Local0, Local1)) {
1915			err(ts, z179, __LINE__, 0, 0, Local1, Local0)
1916		}
1917	}
1918
1919	Method(mlr0)
1920	{
1921		OUTP("Store a Local Reference to Uninit Package element")
1922
1923		Store("Local0", Local0)
1924
1925		mlrp(Refof(Local0), 3)
1926	}
1927
1928	Method(mlr1)
1929	{
1930		OUTP("Store a Local Reference to Integer Package element")
1931
1932		Store("Local0", Local0)
1933
1934		mlrp(Refof(Local0), 0)
1935	}
1936
1937	Method(mlr2)
1938	{
1939		OUTP("Store a Local Reference to Reference Package element")
1940
1941		Store("Local0", Local0)
1942
1943		mlrp(Refof(Local0), 1)
1944	}
1945
1946	Method(mlr3)
1947	{
1948		OUTP("Store a Integer to Reference Package element")
1949
1950		Store("Local0", Local0)
1951
1952		mlrp(3, 2)
1953	}
1954
1955	Method(m000)
1956	{
1957		mlr0()
1958		mlr1()
1959		mlr2()
1960		mlr3()
1961	}
1962
1963	CH03(ts, z179, 0x07c, __LINE__, 0)
1964	switch (ToInteger (Arg0)) {
1965		case (0) { m000() }
1966		case (1) { mlr0() }
1967		case (2) { mlr1() }
1968		case (3) { mlr2() }
1969		case (4) { mlr3() }
1970	}
1971	CH03(ts, z179, 0x07d, __LINE__, 0)
1972}
1973
1974/* Methods to run manually (for ABBU only) */
1975Method(alrp) { IIN0() ms1f(1) Return(POUT) }
1976Method(blrp) { IIN0() ms1f(2) Return(POUT) }
1977Method(clrp) { IIN0() ms1f(3) Return(POUT) }
1978Method(dlrp) { IIN0() ms1f(4) Return(POUT) }
1979Method(elrp) { IIN0() ms1f(0) Return(POUT) }
1980
1981/*
1982 * Hot issue:
1983 *
1984 * Forward reference within a control method
1985 */
1986Method(ms20, 1, Serialized)
1987{
1988	Name(ts, "ms20")
1989
1990    Name (Y, 2)
1991
1992	Method(mfr0,, Serialized)
1993	{
1994		OUTP("Forward reference within a control method 0")
1995
1996	    Store (Y, Local0)
1997		if (LNotEqual(Local0, 2)) {
1998			err(ts, z179, __LINE__, 0, 0, Local0, 2)
1999		}
2000
2001	    Name (Y, 1)
2002
2003	    Store (Y, Local0)
2004		if (LNotEqual(Local0, 1)) {
2005			err(ts, z179, __LINE__, 0, 0, Local0, 1)
2006		}
2007	}
2008	Method(mfr1,, Serialized)
2009	{
2010		OUTP("Natural reference within a control method")
2011
2012	    Name (Y, 1)
2013
2014	    Store (^Y, Local0)
2015
2016		if (LNotEqual(Local0, 2)) {
2017			err(ts, z179, __LINE__, 0, 0, Local0, 2)
2018		}
2019
2020	    Store (Y, Local0)
2021		if (LNotEqual(Local0, 1)) {
2022			err(ts, z179, __LINE__, 0, 0, Local0, 1)
2023		}
2024	}
2025
2026	Method(mfr2,, Serialized)
2027	{
2028		OUTP("Forward reference within a control method 2")
2029
2030	    Store (^mfr2.Y, Local0)
2031		CH04(ts, 0, 0xff, z179, __LINE__, "^mfr2.Y", Local0)
2032
2033	    Name (Y, 1)
2034
2035	    Store (^mfr2.Y, Local0)
2036		if (LNotEqual(Local0, 1)) {
2037			err(ts, z179, __LINE__, 0, 0, Local0, 1)
2038		}
2039	}
2040
2041	Method(mfr3,, Serialized)
2042	{
2043		OUTP("Forward reference within a control method 3")
2044
2045	    Name (Y, 1)
2046
2047	    Store (^mfr3.Y, Local0)
2048		if (LNotEqual(Local0, 1)) {
2049			err(ts, z179, __LINE__, 0, 0, Local0, 1)
2050		}
2051	}
2052
2053	Method(m000)
2054	{
2055		mfr0()
2056		mfr1()
2057
2058		if (ABUU) {
2059		} else {
2060			mfr2()
2061		}
2062
2063		mfr3()
2064	}
2065
2066	CH03(ts, z179, 0x085, __LINE__, 0)
2067	switch (ToInteger (Arg0)) {
2068		case (0) { m000() }
2069		case (1) { mfr0() }
2070		case (2) { mfr1() }
2071		case (3) { mfr2() }
2072		case (4) { mfr3() }
2073	}
2074	CH03(ts, z179, 0x086, __LINE__, 0)
2075}
2076
2077/* Methods to run manually (for ABBU only) */
2078Method(amfr) { IIN0() ms20(1) Return(POUT) }
2079Method(bmfr) { IIN0() ms20(2) Return(POUT) }
2080Method(cmfr) { IIN0() ms20(3) Return(POUT) }
2081Method(dmfr) { IIN0() ms20(4) Return(POUT) }
2082
2083/*
2084 * Hot issue: AE_AML_METHOD_LIMIT
2085 *
2086 * Recursive Serialized method execution
2087 */
2088Method(ms21, 1, Serialized)
2089{
2090	Name(ts, "ms21")
2091
2092	Method(aact, 1, Serialized)
2093	{
2094		if (Arg0) {
2095			Return (Add(Arg0, aact(Subtract(Arg0, 1))))
2096		} else {
2097			Return (0)
2098		}
2099	}
2100
2101	Method(mac0)
2102	{
2103		OUTP("Recursive method execution aact(0)")
2104		OUTP(aact(0))
2105	}
2106
2107	Method(mac1)
2108	{
2109		OUTP("Recursive method execution aact(1)")
2110		OUTP(aact(1))
2111	}
2112
2113	Method(mac2)
2114	{
2115		OUTP("Recursive method execution aact(2)")
2116		OUTP(aact(2))
2117	}
2118
2119	Method(mac3)
2120	{
2121		OUTP("Recursive method execution aact(6)")
2122		OUTP(aact(6))
2123	}
2124
2125	Method(mac4)
2126	{
2127		OUTP("Recursive method execution aact(513)")
2128		OUTP(aact(513))
2129		CH04(ts, 0, 0xff, z179, __LINE__, "recursion", 513)
2130	}
2131
2132	Method(m000)
2133	{
2134		mac0()
2135		mac1()
2136		mac2()
2137		mac3()
2138
2139		if (ABUU) {
2140		} else {
2141			mac4()
2142		}
2143	}
2144
2145	CH03(ts, z179, 0x088, __LINE__, 0)
2146	switch (ToInteger (Arg0)) {
2147		case (0) { m000() }
2148		case (1) { mac0() }
2149		case (2) { mac1() }
2150		case (3) { mac2() }
2151		case (4) { mac3() }
2152		case (5) { mac4() }
2153	}
2154	CH03(ts, z179, 0x089, __LINE__, 0)
2155}
2156
2157/* Methods to run manually (for ABBU only) */
2158Method(arec) { IIN0() ms21(1) Return(POUT) }
2159Method(brec) { IIN0() ms21(2) Return(POUT) }
2160Method(crec) { IIN0() ms21(3) Return(POUT) }
2161Method(drec) { IIN0() ms21(4) Return(POUT) }
2162Method(erec) { IIN0() ms21(5) Return(POUT) }
2163
2164/*
2165 * Hot issue:
2166 *
2167 * Conditional reference within a control method
2168 */
2169Method(ms22, 1, Serialized)
2170{
2171	Name(ts, "ms22")
2172
2173	Name(iact, 0)
2174
2175	Method(cact, 1, Serialized)
2176	{
2177		if (Arg0) {
2178			Name(iact, 0xffffffff)
2179		}
2180		Return (iact)
2181	}
2182
2183	Method(m000)
2184	{
2185		OUTP("Conditional reference within a control method 0")
2186
2187		OUTP("expected iact 0:")
2188		Store(cact(0), Local0)
2189
2190		if (LNotEqual(Local0, 0)) {
2191			err(ts, z179, __LINE__, 0, 0, Local0, 0)
2192		}
2193	}
2194
2195	Method(m001)
2196	{
2197		OUTP("Conditional reference within a control method 1")
2198
2199		OUTP("expected iact 0xffffffff:")
2200		Store(cact(1), Local0)
2201
2202		if (LNotEqual(Local0, 0xffffffff)) {
2203			err(ts, z179, __LINE__, 0, 0, Local0, 0xffffffff)
2204		}
2205	}
2206
2207	CH03(ts, z179, 0x08c, __LINE__, 0)
2208	switch (ToInteger (Arg0)) {
2209		case (0) { m000() m001() }
2210		case (1) { m000() }
2211		case (2) { m001() }
2212	}
2213	CH03(ts, z179, 0x08d, __LINE__, 0)
2214}
2215
2216/* Methods to run manually (for ABBU only) */
2217Method(amcr) { IIN0() ms22(1) Return(POUT) }
2218Method(bmcr) { IIN0() ms22(2) Return(POUT) }
2219
2220/*
2221 * Hot issue:
2222 *
2223 * Implicit return
2224 */
2225Method(ms23, 1, Serialized)
2226{
2227	Name(ts, "ms23")
2228
2229	Method(mir0,, Serialized)
2230	{
2231		Name(fl00, 0)
2232
2233		Method(m001)
2234		{
2235			if (fl00) {
2236				Store(Add (0xabcd, 0), Local1)
2237			} elseif (0) {
2238				return (1)
2239			}
2240
2241		}
2242
2243		OUTP("Implicit return no operator")
2244
2245		OUTP("An exception is expected: ...")
2246		Store(m001(), Local0)
2247		CH04(ts, 0, 0xff, z179, __LINE__, 0, 0)
2248	}
2249
2250	Method(mir1,, Serialized)
2251	{
2252		Name(fl00, 1)
2253
2254		Method(m001)
2255		{
2256			if (fl00) {
2257				Store(Add (0xabcd, 0), Local1)
2258			} else {
2259				return (1)
2260			}
2261		}
2262
2263		OUTP("Implicit return after Add")
2264
2265		OUTP("0xabcd expected: ...")
2266		Store(m001(), Local0)
2267
2268		if (SLCK) {
2269			if (CH03(ts, z179, 0x08f, __LINE__, 0)) {return}
2270			if (LNotEqual(Local0, 0xabcd)) {
2271				err(ts, z179, __LINE__, 0, 0, Local0, 0xabcd)
2272			}
2273		} else {
2274			CH04(ts, 0, 0xff, z179, __LINE__, 0, 0)
2275		}
2276	}
2277
2278	Method(mir2,, Serialized)
2279	{
2280		Name(fl00, 0)
2281
2282		Method(m001)
2283		{
2284			if (fl00) {
2285				Return (0xabce)
2286			} elseif (0) {
2287				return (1)
2288			}
2289		}
2290
2291		OUTP("Implicit return no operator 2")
2292
2293		OUTP("An exception is expected: ...")
2294		Store(m001(), Local0)
2295		CH04(ts, 0, 0xff, z179, __LINE__, 0, 0)
2296	}
2297
2298	Method(mir3,, Serialized)
2299	{
2300		Name(fl00, 1)
2301
2302		Method(m001)
2303		{
2304			if (fl00) {
2305				Return (0xabce)
2306			} else {
2307				return (1)
2308			}
2309		}
2310
2311		OUTP("Explicit return conditionally")
2312
2313		OUTP("0xabce expected: ...")
2314		Store(m001(), Local0)
2315
2316		if (SLCK) {
2317			if (CH03(ts, z179, 0x093, __LINE__, 0)) {return}
2318			if (LNotEqual(Local0, 0xabce)) {
2319				err(ts, z179, __LINE__, 0, 0, Local0, 0xabce)
2320			}
2321		} else {
2322			CH04(ts, 0, 0xff, z179, __LINE__, 0, 0)
2323		}
2324	}
2325
2326	Method(mir4,, Serialized)
2327	{
2328		Name(fl00, 0)
2329		Name(i000, 0xabcd0000)
2330		Name(i001, 0xabcd0001)
2331
2332		Method(m000, 0, Serialized)
2333		{
2334			Switch (ToInteger (Store(0xabcd000f, i001))) {
2335				Case (0) {
2336					if (fl00) {
2337						Return (0)
2338					}
2339				}
2340			}
2341		}
2342
2343		OUTP("Implicit return on Switch")
2344
2345		Store(0xdddd9000, i000)
2346
2347		Store(m000, i000)
2348
2349		if (SLCK) {
2350			if (CH03(ts, z179, 0x096, __LINE__, 0)) {return}
2351
2352			//y901: Predicate generates Implicit Return since ACPICA release 20080926
2353			if (y901) {
2354				Store(0, Local0)
2355			} else {
2356				Store(0xabcd000f, Local0)
2357			}
2358			if (LNotEqual(i000, Local0)) {
2359				err(ts, z179, __LINE__, 0, 0, i000, Local0)
2360			}
2361		} else {
2362			CH04(ts, 0, 0xff, z179, __LINE__, 0, 0)
2363		}
2364	}
2365
2366	Method(mir5,, Serialized)
2367	{
2368		Name(fl00, 0)
2369		Name(i000, 0xabcd0000)
2370		Name(i001, 0xabcd0001)
2371
2372		Method(m000)
2373		{
2374			if (Store(0xabcd000d, i001)) {
2375				if (fl00) {
2376					Return (0)
2377				}
2378			}
2379		}
2380
2381		OUTP("Implicit return on If")
2382
2383		Store(0xdddd9000, i000)
2384
2385		Store(m000, i000)
2386
2387		if (SLCK) {
2388			if (CH03(ts, z179, 0x099, __LINE__, 0)) {return}
2389
2390			//y901: Predicate generates Implicit Return since ACPICA release 20080926
2391			if (y901) {
2392				Store(0, Local0)
2393			} else {
2394				Store(0xabcd000d, Local0)
2395			}
2396			if (LNotEqual(i000, Local0)) {
2397				err(ts, z179, __LINE__, 0, 0, i000, Local0)
2398			}
2399		} else {
2400			CH04(ts, 0, 0xff, z179, __LINE__, 0, 0)
2401		}
2402	}
2403
2404	Method(mir6,, Serialized)
2405	{
2406		Name(fl00, 0)
2407		Name(i000, 0xabcd0000)
2408		Name(i001, 0xabcd0001)
2409
2410		Method(m000)
2411		{
2412			While (Store(0xabcd000e, i001)) {
2413				if (fl00) {
2414					Return (0)
2415				}
2416				Break
2417			}
2418		}
2419
2420		OUTP("Implicit return on While")
2421
2422		Store(0xdddd9000, i000)
2423
2424		Store(m000, i000)
2425
2426		if (SLCK) {
2427			if (CH03(ts, z179, 0x09c, __LINE__, 0)) {return}
2428
2429			//y901: Predicate generates Implicit Return since ACPICA release 20080926
2430			if (y901) {
2431				Store(0, Local0)
2432			} else {
2433				Store(0xabcd000e, Local0)
2434			}
2435			if (LNotEqual(i000, Local0)) {
2436				err(ts, z179, __LINE__, 0, 0, i000, Local0)
2437			}
2438		} else {
2439			CH04(ts, 0, 0xff, z179, __LINE__, 0, 0)
2440		}
2441	}
2442
2443	Method(m000)
2444	{
2445		mir0()
2446		mir1()
2447		mir2()
2448		mir3()
2449
2450		if (ABUU) {
2451		} else {
2452			mir4()
2453		}
2454
2455		if (ABUU) {
2456		} else {
2457			mir5()
2458		}
2459
2460		if (ABUU) {
2461		} else {
2462			mir6()
2463		}
2464	}
2465
2466	CH03(ts, z179, 0x09f, __LINE__, 0)
2467	switch (ToInteger (Arg0)) {
2468		case (0) { m000() }
2469		case (1) { mir0() }
2470		case (2) { mir1() }
2471		case (3) { mir2() }
2472		case (4) { mir3() }
2473		case (5) { mir4() }
2474		case (6) { mir5() }
2475		case (7) { mir6() }
2476	}
2477	CH03(ts, z179, 0x0a0, __LINE__, 0)
2478}
2479
2480/* Methods to run manually (for ABBU only) */
2481Method(amir) { IIN0() ms23(1) Return(POUT) }
2482Method(bmir) { IIN0() ms23(2) Return(POUT) }
2483Method(cmir) { IIN0() ms23(3) Return(POUT) }
2484Method(dmir) { IIN0() ms23(4) Return(POUT) }
2485Method(emir) { IIN0() ms23(5) Return(POUT) }
2486Method(fmir) { IIN0() ms23(6) Return(POUT) }
2487Method(gmir) { IIN0() ms23(7) Return(POUT) }
2488
2489/*
2490 * Hot issue:
2491 *
2492 * Increment/Decrement with String/Buffer
2493 */
2494Method(ms24,, Serialized)
2495{
2496	Name(ts, "ms24")
2497
2498	Method(mmid,, Serialized)
2499	{
2500		Name(s000, "0321")
2501		Name(s001, "0321")
2502		Name(b000, Buffer(3){0x21, 0x03, 0x00})
2503		Name(b001, Buffer(3){0x21, 0x03, 0x00})
2504
2505		OUTP("Increment/Decrement with String/Buffer")
2506
2507		OUTP(s000)
2508		OUTP(s001)
2509		Subtract(s000, 1, s000)
2510		Decrement(s001)
2511
2512		Store(ObjectType(s000), Local0)
2513		Store(ObjectType(s001), Local1)
2514
2515		if (LNotEqual(Local0, Local1)) {
2516			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2517		} elseif (LNotEqual(s000, s001)) {
2518			err(ts, z179, __LINE__, 0, 0, s000, s001)
2519		} else {
2520			OUTP("Ok Subtract/Decrement for String")
2521		}
2522
2523		OUTP("======")
2524
2525		OUTP(b000)
2526		OUTP(b001)
2527		Add(b000, 1, b000)
2528		Increment(b001)
2529
2530		Store(ObjectType(b000), Local0)
2531		Store(ObjectType(b001), Local1)
2532
2533		if (LNotEqual(Local0, Local1)) {
2534			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2535		} elseif (LNotEqual(b000, b001)) {
2536			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2537		} else {
2538			OUTP("Ok Add/Increment for Buffer")
2539		}
2540	}
2541
2542	CH03(ts, z179, 0x0a5, __LINE__, 0)
2543	mmid()
2544	CH03(ts, z179, 0x0a6, __LINE__, 0)
2545}
2546
2547/* Methods to run manually (for ABBU only) */
2548Method(amid) { IIN0() ms24() Return(POUT) }
2549
2550
2551/*
2552 * Hot issue:
2553 *
2554 * Check Store(..., DeRefof(...)) behavior
2555 */
2556Method(ms25, 1, Serialized)
2557{
2558	Name(ts, "ms25")
2559
2560	Method(msd0,, Serialized)
2561	{
2562		Name(i000, 0xffffffff)
2563		Name(i001, 0x12345678)
2564
2565		OUTP("Check Store(..., DeRefof(...)) behavior: none DeRefof")
2566
2567		Store(i001, Refof(i000))
2568		CH03(ts, z179, 0x0a7, __LINE__, 0)
2569		if (LNotEqual(i000, 0x12345678)) {
2570			err(ts, z179, __LINE__, 0, 0, i000, 0x12345678)
2571		}
2572	}
2573
2574	Method(msd1,, Serialized)
2575	{
2576		Name(i000, 0xffffffff)
2577		Name(i001, 0x12345678)
2578
2579		OUTP("Check Store(..., DeRefof(...)) behavior: Refof(Named)")
2580
2581		Store(i001, DeRefof(Refof(i000)))
2582		CH03(ts, z179, 0x0a9, __LINE__, 0)
2583		if (LNotEqual(i000, 0x12345678)) {
2584			err(ts, z179, __LINE__, 0, 0, i000, 0x12345678)
2585		}
2586	}
2587
2588	Method(msd2,, Serialized)
2589	{
2590		Name(i000, 0xffffffff)
2591		Name(i001, 0x12345678)
2592
2593		OUTP("Check Store(..., DeRefof(...)) behavior: Refof in LocalX")
2594
2595		Store(Refof(i000), Local2)
2596
2597		Store(i001, DeRefof(Local2))
2598		CH03(ts, z179, 0x0ab, __LINE__, 0)
2599		if (LNotEqual(i000, 0x12345678)) {
2600			err(ts, z179, __LINE__, 0, 0, i000, 0x12345678)
2601		}
2602	}
2603
2604	Method(msd3,, Serialized)
2605	{
2606		Name(i000, 0xffffffff)
2607		Name(i001, 0x12345678)
2608
2609		OUTP("Check Store(..., DeRefof(...)) behavior: DeRefof(2xRefof)")
2610
2611		Store(Refof(i000), Local1)
2612		Store(Refof(Local1), Local2)
2613
2614		Store(i001, DeRefof(Local2))
2615		CH03(ts, z179, 0x0ad, __LINE__, 0)
2616
2617		if (LNotEqual(i000, 0xffffffff)) {
2618			err(ts, z179, __LINE__, 0, 0, i000, 0xffffffff)
2619		}
2620
2621		Store(Derefof(Local1), Local4)
2622		if (CH04(ts, 0, 0xff, z179, __LINE__, 0, 0)) {
2623		} elseif (LNotEqual(Local1, 0x12345678)) {
2624			err(ts, z179, __LINE__, 0, 0, Local1, 0x12345678)
2625		}
2626	}
2627
2628	CH03(ts, z179, 0x0b1, __LINE__, 0)
2629	switch (ToInteger (Arg0)) {
2630		case (0) { msd0() msd1() msd2() msd3() }
2631		case (1) { msd0() }
2632		case (2) { msd1() }
2633		case (3) { msd2() }
2634		case (4) { msd3() }
2635	}
2636	CH03(ts, z179, 0x0b2, __LINE__, 0)
2637}
2638
2639/* Methods to run manually (for ABBU only) */
2640Method(amsd) { IIN0() ms25(1) Return(POUT) }
2641Method(bmsd) { IIN0() ms25(2) Return(POUT) }
2642Method(cmsd) { IIN0() ms25(3) Return(POUT) }
2643Method(dmsd) { IIN0() ms25(4) Return(POUT) }
2644
2645// Video memory address to maintain SystemMemory OpRegions
2646// Name(VMEM, 0xA0000) // VGA memory
2647// Name(VMEM, 0xF0000000) // T22 Savage3
2648// Name(VMEM, 0xD0000000) // IntelliStation Z Pro NVidia
2649Name(VMEM, 0xA0000) // VGA memory
2650
2651// SystemMemory OpRegions base address is maintained flag
2652Name(SMBA, 1)
2653
2654/*
2655 * Hot issue:
2656 *
2657 * Exceeding Field Unit
2658 */
2659Method(ms26, 1, Serialized)
2660{
2661	Name(ts, "ms26")
2662
2663	OperationRegion(OPR0, SystemMemory, VMEM, 256)
2664
2665	Method(rfu0,, Serialized)
2666	{
2667		Field(OPR0, ByteAcc, NoLock, Preserve) {
2668			g001, 0x80,
2669		}
2670
2671		Field(OPR0, ByteAcc, NoLock, Preserve) {
2672			Offset(0x8), FU01, 8,
2673		}
2674
2675		OUTP("Store Integer exceeding Field Unit")
2676
2677		Store(0, g001)
2678
2679		Store(FU01, Local0)
2680		Store(0, Local1)
2681		if (LNotEqual(Local0, Local1)) {
2682			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2683		}
2684
2685		Store(0x5a, FU01)
2686		Store(FU01, Local0)
2687		Store(0x5a, Local1)
2688		if (LNotEqual(Local0, Local1)) {
2689			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2690		}
2691
2692		Store(0x3c69, FU01)
2693		Store(FU01, Local0)
2694		Store(0x69, Local1)
2695		if (LNotEqual(Local0, Local1)) {
2696			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2697		}
2698	}
2699
2700	Method(rfu1,, Serialized)
2701	{
2702		Field(OPR0, ByteAcc, NoLock, Preserve) {
2703			g001, 0x80,
2704		}
2705
2706		Field(OPR0, ByteAcc, NoLock, Preserve) {
2707			Offset(0x8), FU01, 8,
2708		}
2709
2710		OUTP("Store Buffer exceeding Field Unit")
2711
2712		Store(0, g001)
2713
2714		Store(FU01, Local0)
2715		Store(0, Local1)
2716		if (LNotEqual(Local0, Local1)) {
2717			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2718		}
2719
2720		Store(0x5a, FU01)
2721		Store(FU01, Local0)
2722		Store(0x5a, Local1)
2723		if (LNotEqual(Local0, Local1)) {
2724			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2725		}
2726
2727		Store(Buffer(){0x3c, 0x69}, FU01)
2728		Store(FU01, Local0)
2729		Store(0x3c, Local1)
2730		if (LAnd(ABUU, LNot(q009))) {
2731			Store(0x69, Local1)
2732			if (LNotEqual(Local0, Local1)) {
2733				err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2734			}
2735		} elseif (LNotEqual(Local0, Local1)) {
2736			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2737		}
2738	}
2739
2740	Method(rfu2,, Serialized)
2741	{
2742		Field(OPR0, ByteAcc, NoLock, Preserve) {
2743			g001, 0x80,
2744		}
2745
2746		Field(OPR0, ByteAcc, NoLock, Preserve) {
2747			Offset(0x8), FU01, 8,
2748		}
2749
2750		OUTP("Store String exceeding Field Unit")
2751
2752		Store(0, g001)
2753
2754		Store(FU01, Local0)
2755		Store(0, Local1)
2756		if (LNotEqual(Local0, Local1)) {
2757			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2758		}
2759
2760		Store(0x5a, FU01)
2761		Store(FU01, Local0)
2762		Store(0x5a, Local1)
2763		if (LNotEqual(Local0, Local1)) {
2764			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2765		}
2766
2767		Store("79", FU01)
2768		Store(FU01, Local0)
2769		Store(0x37, Local1)
2770		if (LAnd(ABUU, LNot(q009))) {
2771			Store(0x39, Local1)
2772			if (LNotEqual(Local0, Local1)) {
2773				err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2774			}
2775		} elseif (LNotEqual(Local0, Local1)) {
2776			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2777		}
2778	}
2779
2780	Method(rfu3,, Serialized)
2781	{
2782		Field(OPR0, ByteAcc, NoLock, Preserve) {
2783			g001, 0x80,
2784		}
2785
2786		Field(OPR0, ByteAcc, NoLock, Preserve) {
2787			Offset(0x8), FU01, 6, FU02, 2
2788		}
2789
2790		OUTP("Store Buffer exceeding 6-bit Field Unit")
2791
2792		Store(0, g001)
2793
2794		Store(FU01, Local0)
2795		Store(0, Local1)
2796		if (LNotEqual(Local0, Local1)) {
2797			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2798		}
2799
2800		Store(0x5a, FU01)
2801		Store(FU01, Local0)
2802		Store(0x1a, Local1)
2803		if (LNotEqual(Local0, Local1)) {
2804			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2805		}
2806
2807		Store(Buffer(){0x7c, 0x69}, FU01)
2808		Store(FU01, Local0)
2809		Store(0x3c, Local1)
2810		if (LAnd(ABUU, LNot(q009))) {
2811			Store(0x29, Local1)
2812			if (LNotEqual(Local0, Local1)) {
2813				err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2814			}
2815		} elseif (LNotEqual(Local0, Local1)) {
2816			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2817		}
2818
2819		Store(FU02, Local0)
2820		Store(0, Local1)
2821		if (LAnd(ABUU, LNot(q009))) {
2822			Store(0x01, Local1)
2823			if (LNotEqual(Local0, Local1)) {
2824				err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2825			}
2826		} elseif (LNotEqual(Local0, Local1)) {
2827			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2828		}
2829	}
2830
2831	Method(rfu4,, Serialized)
2832	{
2833		Field(OPR0, ByteAcc, NoLock, Preserve) {
2834			g001, 0x80,
2835		}
2836
2837		Field(OPR0, ByteAcc, NoLock, Preserve) {
2838			Offset(0x8), FU01, 6, FU02, 2
2839		}
2840
2841		OUTP("Store String exceeding 6-bit Field Unit")
2842
2843		Store(0, g001)
2844
2845		Store(FU01, Local0)
2846		Store(0, Local1)
2847		if (LNotEqual(Local0, Local1)) {
2848			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2849		}
2850
2851		Store(0x5a, FU01)
2852		Store(FU01, Local0)
2853		Store(0x1a, Local1)
2854		if (LNotEqual(Local0, Local1)) {
2855			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2856		}
2857
2858		Store("79", FU01)
2859		Store(FU01, Local0)
2860		Store(0x37, Local1)
2861		if (LAnd(ABUU, LNot(q009))) {
2862			Store(0x39, Local1)
2863			if (LNotEqual(Local0, Local1)) {
2864				err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2865			}
2866		} elseif (LNotEqual(Local0, Local1)) {
2867			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2868		}
2869
2870		Store(FU02, Local0)
2871		Store(0, Local1)
2872		if (LAnd(ABUU, LNot(q009))) {
2873			Store(0x01, Local1)
2874			if (LNotEqual(Local0, Local1)) {
2875				err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2876			}
2877		} elseif (LNotEqual(Local0, Local1)) {
2878			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2879		}
2880	}
2881
2882	Method(rfu5,, Serialized)
2883	{
2884		Field(OPR0, ByteAcc, NoLock, Preserve) {
2885			g001, 0x80,
2886		}
2887
2888		Field(OPR0, ByteAcc, NoLock, Preserve) {
2889			Offset(0x8), FU01, 10, FU02, 6
2890		}
2891
2892		OUTP("Store Buffer exceeding 10-bit Field Unit")
2893
2894		Store(0, g001)
2895
2896		Store(FU01, Local0)
2897		Store(0, Local1)
2898		if (LNotEqual(Local0, Local1)) {
2899			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2900		}
2901
2902		Store(0x5a, FU01)
2903		Store(FU01, Local0)
2904		Store(0x5a, Local1)
2905		if (LNotEqual(Local0, Local1)) {
2906			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2907		}
2908
2909		Store(Buffer(){0x3c, 0x69}, FU01)
2910		Store(FU01, Local0)
2911		Store(0x13c, Local1)
2912		if (LNotEqual(Local0, Local1)) {
2913			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2914		}
2915
2916		Store(FU02, Local0)
2917		Store(0, Local1)
2918		if (LAnd(ABUU, LNot(q009))) {
2919			Store(0x1a, Local1)
2920			if (LNotEqual(Local0, Local1)) {
2921				err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2922			}
2923		} elseif (LNotEqual(Local0, Local1)) {
2924			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2925		}
2926	}
2927
2928	Method(rfu6,, Serialized)
2929	{
2930		Field(OPR0, ByteAcc, NoLock, Preserve) {
2931			g001, 0x80,
2932		}
2933
2934		Field(OPR0, ByteAcc, NoLock, Preserve) {
2935			Offset(0x8), FU01, 10, FU02, 6
2936		}
2937
2938		OUTP("Store String exceeding 10-bit Field Unit")
2939
2940		Store(0, g001)
2941
2942		Store(FU01, Local0)
2943		Store(0, Local1)
2944		if (LNotEqual(Local0, Local1)) {
2945			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2946		}
2947
2948		Store(0x5a, FU01)
2949		Store(FU01, Local0)
2950		Store(0x5a, Local1)
2951		if (LNotEqual(Local0, Local1)) {
2952			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2953		}
2954
2955		Store("79", FU01)
2956		Store(FU01, Local0)
2957		Store(0x137, Local1)
2958		if (LNotEqual(Local0, Local1)) {
2959			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2960		}
2961
2962		Store(FU02, Local0)
2963		Store(0, Local1)
2964		if (LAnd(ABUU, LNot(q009))) {
2965			Store(0x0e, Local1)
2966			if (LNotEqual(Local0, Local1)) {
2967				err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2968			}
2969		} elseif (LNotEqual(Local0, Local1)) {
2970			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2971		}
2972	}
2973
2974	Method(rfu7,, Serialized)
2975	{
2976		Field(OPR0, ByteAcc, NoLock, Preserve) {
2977			g001, 0x80,
2978		}
2979
2980		Field(OPR0, ByteAcc, NoLock, Preserve) {
2981			Offset(0x8), FU01, 10, FU02, 6
2982		}
2983
2984		OUTP("Store 3-byte Buffer exceeding 10-bit Field Unit")
2985
2986		Store(0, g001)
2987
2988		Store(FU01, Local0)
2989		Store(0, Local1)
2990		if (LNotEqual(Local0, Local1)) {
2991			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2992		}
2993
2994		Store(0x5a, FU01)
2995		Store(FU01, Local0)
2996		Store(0x5a, Local1)
2997		if (LNotEqual(Local0, Local1)) {
2998			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
2999		}
3000
3001		Store(Buffer(){0x3c, 0x69, 0xa5}, FU01)
3002		Store(FU01, Local0)
3003		Store(0x13c, Local1)
3004		if (LAnd(ABUU, LNot(q009))) {
3005			Store(0xa5, Local1)
3006			if (LNotEqual(Local0, Local1)) {
3007				err(ts, z179, __LINE__, 0, 0, Local0, Local1)
3008			}
3009		} elseif (LNotEqual(Local0, Local1)) {
3010			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
3011		}
3012
3013		Store(FU02, Local0)
3014		Store(0, Local1)
3015		if (LAnd(ABUU, LNot(q009))) {
3016			Store(0x1a, Local1)
3017			if (LNotEqual(Local0, Local1)) {
3018				err(ts, z179, __LINE__, 0, 0, Local0, Local1)
3019			}
3020		} elseif (LNotEqual(Local0, Local1)) {
3021			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
3022		}
3023	}
3024
3025	Method(rfu8,, Serialized)
3026	{
3027		Field(OPR0, ByteAcc, NoLock, Preserve) {
3028			g001, 0x80,
3029		}
3030
3031		Field(OPR0, ByteAcc, NoLock, Preserve) {
3032			Offset(0x8), FU01, 10, FU02, 6
3033		}
3034
3035		OUTP("Store 3-char String exceeding 10-bit Field Unit")
3036
3037		Store(0, g001)
3038
3039		Store(FU01, Local0)
3040		Store(0, Local1)
3041		if (LNotEqual(Local0, Local1)) {
3042			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
3043		}
3044
3045		Store(0x5a, FU01)
3046		Store(FU01, Local0)
3047		Store(0x5a, Local1)
3048		if (LNotEqual(Local0, Local1)) {
3049			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
3050		}
3051
3052		Store("795", FU01)
3053		Store(FU01, Local0)
3054		Store(0x137, Local1)
3055		if (LAnd(ABUU, LNot(q009))) {
3056			Store(0x35, Local1)
3057			if (LNotEqual(Local0, Local1)) {
3058				err(ts, z179, __LINE__, 0, 0, Local0, Local1)
3059			}
3060		} elseif (LNotEqual(Local0, Local1)) {
3061			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
3062		}
3063
3064		Store(FU02, Local0)
3065		Store(0, Local1)
3066		if (LAnd(ABUU, LNot(q009))) {
3067			Store(0x0e, Local1)
3068			if (LNotEqual(Local0, Local1)) {
3069				err(ts, z179, __LINE__, 0, 0, Local0, Local1)
3070			}
3071		} elseif (LNotEqual(Local0, Local1)) {
3072			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
3073		}
3074	}
3075
3076	Method(m000)
3077	{
3078		rfu0()
3079		rfu1()
3080		rfu2()
3081		rfu3()
3082		rfu4()
3083		rfu5()
3084		rfu6()
3085		rfu7()
3086		rfu8()
3087	}
3088
3089	CH03(ts, z179, 0x0d4, __LINE__, 0)
3090	switch (ToInteger (Arg0)) {
3091		case (0) { m000() }
3092		case (1) { rfu0() }
3093		case (2) { rfu1() }
3094		case (3) { rfu2() }
3095		case (4) { rfu3() }
3096		case (5) { rfu4() }
3097		case (6) { rfu5() }
3098		case (7) { rfu6() }
3099		case (8) { rfu7() }
3100		case (9) { rfu8() }
3101	}
3102	CH03(ts, z179, 0x0d5, __LINE__, 0)
3103}
3104
3105/* Methods to run manually (for ABBU only) */
3106Method(arfu) { IIN0() ms26(1) Return(POUT) }
3107Method(brfu) { IIN0() ms26(2) Return(POUT) }
3108Method(crfu) { IIN0() ms26(3) Return(POUT) }
3109Method(drfu) { IIN0() ms26(4) Return(POUT) }
3110Method(erfu) { IIN0() ms26(5) Return(POUT) }
3111Method(frfu) { IIN0() ms26(6) Return(POUT) }
3112Method(grfu) { IIN0() ms26(7) Return(POUT) }
3113Method(hrfu) { IIN0() ms26(8) Return(POUT) }
3114Method(irfu) { IIN0() ms26(9) Return(POUT) }
3115
3116
3117/*
3118 * Hot issue:
3119 *
3120 * Check IndexField implementation
3121 */
3122Method(ms27, 1, Serialized)
3123{
3124	Name(ts, "ms27")
3125
3126	OperationRegion(OPR0, SystemMemory, VMEM, 256)
3127
3128	Field(OPR0, ByteAcc, NoLock, Preserve) {
3129		tot0, 32,
3130		tot1, 32,
3131	}
3132
3133	Method(ifd0,, Serialized)
3134	{
3135		Field(OPR0, ByteAcc, NoLock, WriteAsZeros) {
3136			idx1, 4,
3137			dta1, 3,
3138		}
3139
3140		IndexField(idx1, dta1, ByteAcc, NoLock, WriteAsZeros) {
3141			re10, 3,
3142			re11, 3,
3143			re12, 3,
3144			re13, 3,
3145		}
3146
3147		Method(TRY0, 3, Serialized)
3148		{
3149			Store(Zero, tot0)
3150			switch (ToInteger (Arg0)) {
3151			Case (0) {Store(Ones, ^re10)}
3152			Case (1) {Store(Ones, ^re11)}
3153			Case (2) {Store(Ones, ^re12)}
3154			Case (3) {Store(Ones, ^re13)}
3155			}
3156
3157			Store(idx1, Local0)
3158			Store(dta1, Local1)
3159
3160			Multiply(arg0, 2, Local2)
3161			if (LNotEqual(Local0, arg1)) {
3162				err(ts, z179, __LINE__, 0, 0, Local0, arg1)
3163			}
3164			if (LNotEqual(Local1, arg2)) {
3165				err(ts, z179, __LINE__, 0, 0, Local1, arg2)
3166			}
3167		}
3168
3169		OUTP("Check IndexField ByteAcc 4-3 Ones write 3-3-3-3")
3170
3171		TRY0(0, 0, 0x7)
3172		TRY0(1, 0, 0x0)
3173
3174		Store(0x1, Local0)
3175		if (LAnd(ABUU, LNot(q00a))) {
3176			Store(0x07, Local0)
3177		}
3178		TRY0(2, 0, Local0)
3179
3180		TRY0(3, 0, 0x06)
3181	}
3182
3183	Method(ifd1,, Serialized)
3184	{
3185		Field(OPR0, ByteAcc, NoLock, WriteAsZeros) {
3186			idx1, 8,
3187			dta1, 8,
3188		}
3189
3190		IndexField(idx1, dta1, ByteAcc, NoLock, WriteAsZeros) {
3191			re10, 8,
3192			re11, 8,
3193			re12, 8,
3194			re13, 8,
3195		}
3196
3197		Method(TRY0, 3, Serialized)
3198		{
3199			Store(Zero, tot0)
3200			switch (ToInteger (Arg0)) {
3201			Case (0) {Store(0x12345678, ^re10)}
3202			Case (1) {Store(0x12345678, ^re11)}
3203			Case (2) {Store(0x12345678, ^re12)}
3204			Case (3) {Store(0x12345678, ^re13)}
3205			}
3206
3207			Store(idx1, Local0)
3208			Store(dta1, Local1)
3209
3210			Multiply(arg0, 2, Local2)
3211			if (LNotEqual(Local0, arg1)) {
3212				err(ts, z179, __LINE__, 0, 0, Local0, arg1)
3213			}
3214			if (LNotEqual(Local1, arg2)) {
3215				err(ts, z179, __LINE__, 0, 0, Local1, arg2)
3216			}
3217		}
3218
3219		OUTP("Check IndexField ByteAcc 0x12345678 write 8-8-8-8")
3220
3221		TRY0(0, 0, 0x78)
3222		TRY0(1, 1, 0x78)
3223		TRY0(2, 2, 0x78)
3224		TRY0(3, 3, 0x78)
3225	}
3226
3227	Method(ifd2,, Serialized)
3228	{
3229		Field(OPR0, ByteAcc, NoLock, WriteAsZeros) {
3230			idx1, 8,
3231			dta1, 8,
3232		}
3233
3234		IndexField(idx1, dta1, ByteAcc, NoLock, WriteAsZeros) {
3235			, 7,
3236			re10, 1,
3237			re11, 1,
3238			Offset(2),
3239			re12, 4,
3240			re13, 4,
3241		}
3242
3243		Method(TRY0, 3, Serialized)
3244		{
3245			Store(Zero, tot0)
3246			switch (ToInteger (Arg0)) {
3247			Case (0) {Store(Ones, ^re10)}
3248			Case (1) {Store(Ones, ^re11)}
3249			Case (2) {Store(Ones, ^re12)}
3250			Case (3) {Store(Ones, ^re13)}
3251			}
3252
3253			Store(idx1, Local0)
3254			Store(dta1, Local1)
3255
3256			Multiply(arg0, 2, Local2)
3257			if (LNotEqual(Local0, arg1)) {
3258				err(ts, z179, __LINE__, 0, 0, Local0, arg1)
3259			}
3260			if (LNotEqual(Local1, arg2)) {
3261				err(ts, z179, __LINE__, 0, 0, Local1, arg2)
3262			}
3263		}
3264
3265		OUTP("Check IndexField ByteAcc Ones write Offset (0:7)1-(1:0)1-(2:0)4-4")
3266
3267		TRY0(0, 0, 0x80)
3268
3269		Store(0x01, Local0)
3270		if (LAnd(ABUU, LNot(q00a))) {
3271			Store(0xff, Local0)
3272		}
3273		TRY0(1, 1, Local0)
3274
3275		Store(0x0f, Local0)
3276		if (LAnd(ABUU, LNot(q00a))) {
3277			Store(0xff, Local0)
3278		}
3279		TRY0(2, 2, Local0)
3280
3281		TRY0(3, 2, 0xf0)
3282	}
3283
3284	Method(ifd3,, Serialized)
3285	{
3286		Field(OPR0, ByteAcc, NoLock, WriteAsZeros) {
3287			idx1, 8,
3288			dta1, 8,
3289		}
3290
3291		IndexField(idx1, dta1, ByteAcc, NoLock, WriteAsZeros) {
3292			Offset(1),
3293			re10, 8,
3294			Offset(2),
3295			re11, 8,
3296			Offset(7),
3297			re12, 8,
3298			Offset(16),
3299			re13, 8,
3300		}
3301
3302		Method(TRY0, 3, Serialized)
3303		{
3304			Store(Zero, tot0)
3305			switch (ToInteger (Arg0)) {
3306			Case (0) {Store(0x12345678, ^re10)}
3307			Case (1) {Store(0x12345678, ^re11)}
3308			Case (2) {Store(0x12345678, ^re12)}
3309			Case (3) {Store(0x12345678, ^re13)}
3310			}
3311
3312			Store(idx1, Local0)
3313			Store(dta1, Local1)
3314
3315			Multiply(arg0, 2, Local2)
3316			if (LNotEqual(Local0, arg1)) {
3317				err(ts, z179, __LINE__, 0, 0, Local0, arg1)
3318			}
3319			if (LNotEqual(Local1, arg2)) {
3320				err(ts, z179, __LINE__, 0, 0, Local1, arg2)
3321			}
3322		}
3323
3324		OUTP("Check IndexField ByteAcc 0x12345678 write Offset (1:0)8-(2:0)8-(7:0)8-(16:0)8")
3325
3326		TRY0(0, 1, 0x78)
3327		TRY0(1, 2, 0x78)
3328		TRY0(2, 7, 0x78)
3329		TRY0(3, 16, 0x78)
3330	}
3331
3332	CH03(ts, z179, 0x0e6, __LINE__, 0)
3333	switch (ToInteger (Arg0)) {
3334		case (0) {
3335			ifd0()
3336			ifd1()
3337			ifd2()
3338			ifd3()
3339		}
3340		case (1) { ifd0() }
3341		case (2) { ifd1() }
3342		case (3) { ifd2() }
3343		case (4) { ifd3() }
3344	}
3345	CH03(ts, z179, 0x0e7, __LINE__, 0)
3346}
3347
3348Method(mt27, 1, Serialized)
3349{
3350	Name(ts, "mt27")
3351
3352	OperationRegion(OPR0, SystemMemory, VMEM, 256)
3353
3354	Field(OPR0, ByteAcc, NoLock, Preserve) {
3355		tot0, 32,
3356		tot1, 32,
3357	}
3358
3359	Method(ifd4,, Serialized)
3360	{
3361		Field(OPR0, WordAcc, NoLock, WriteAsZeros) {
3362			idx1, 16,
3363			dta1, 16,
3364		}
3365
3366		IndexField(idx1, dta1, WordAcc, NoLock, WriteAsZeros) {
3367			re10, 8,
3368			re11, 8,
3369			re12, 8,
3370			re13, 8,
3371		}
3372
3373		Method(TRY0, 3, Serialized)
3374		{
3375			Store(Zero, tot0)
3376			switch (ToInteger (Arg0)) {
3377			Case (0) {Store(0x12345678, ^re10)}
3378			Case (1) {Store(0x12345678, ^re11)}
3379			Case (2) {Store(0x12345678, ^re12)}
3380			Case (3) {Store(0x12345678, ^re13)}
3381			}
3382
3383			Store(idx1, Local0)
3384			Store(dta1, Local1)
3385
3386			Multiply(arg0, 2, Local2)
3387			if (LNotEqual(Local0, arg1)) {
3388				err(ts, z179, __LINE__, 0, 0, Local0, arg1)
3389			}
3390			if (LNotEqual(Local1, arg2)) {
3391				err(ts, z179, __LINE__, 0, 0, Local1, arg2)
3392			}
3393		}
3394
3395		OUTP("Check IndexField WordAcc Ones write 8-8-8-8")
3396
3397		Store(0x0078, Local0)
3398		if (LAnd(ABUU, LNot(q00a))) {
3399			Store(0x5678, Local0)
3400		}
3401		TRY0(0, 0, Local0)
3402
3403		TRY0(1, 0, 0x7800)
3404
3405		Store(0x0078, Local0)
3406		if (LAnd(ABUU, LNot(q00a))) {
3407			Store(0x5678, Local0)
3408		}
3409		TRY0(2, 2, Local0)
3410
3411		TRY0(3, 2, 0x7800)
3412	}
3413
3414	Method(ifd5,, Serialized)
3415	{
3416		Field(OPR0, ByteAcc, NoLock, WriteAsZeros) {
3417			idx1, 8,
3418			dta1, 8,
3419		}
3420
3421		IndexField(idx1, dta1, ByteAcc, NoLock, WriteAsZeros) {
3422			, 1,
3423			re10, 8,
3424			, 1,
3425			re11, 8,
3426			, 1,
3427			re12, 8,
3428			, 1,
3429			re13, 8,
3430		}
3431
3432		Method(TRY0, 3, Serialized)
3433		{
3434			Store(Zero, tot0)
3435			switch (ToInteger (Arg0)) {
3436			Case (0) {Store(Ones, ^re10)}
3437			Case (1) {Store(Ones, ^re11)}
3438			Case (2) {Store(Ones, ^re12)}
3439			Case (3) {Store(Ones, ^re13)}
3440			}
3441
3442			Store(idx1, Local0)
3443			Store(dta1, Local1)
3444
3445			Multiply(arg0, 2, Local2)
3446			if (LNotEqual(Local0, arg1)) {
3447				err(ts, z179, __LINE__, 0, 0, Local0, arg1)
3448			}
3449			if (LNotEqual(Local1, arg2)) {
3450				err(ts, z179, __LINE__, 0, 0, Local1, arg2)
3451			}
3452		}
3453
3454		OUTP("Check IndexField ByteAcc Ones write (:1)8-(:1)8-(:1)8-(:1)8")
3455
3456		TRY0(0, 1, 0x1)
3457		TRY0(1, 2, 0x3)
3458		TRY0(2, 3, 0x7)
3459		TRY0(3, 4, 0xf)
3460	}
3461
3462	Method(ifd6,, Serialized)
3463	{
3464		Field(OPR0, DWordAcc, NoLock, WriteAsZeros) {
3465			idx1, 32,
3466			dta1, 32,
3467		}
3468
3469		IndexField(idx1, dta1, DWordAcc, NoLock, WriteAsZeros) {
3470			re10, 8,
3471			re11, 8,
3472			re12, 8,
3473			re13, 8,
3474		}
3475
3476		Method(TRY0, 3, Serialized)
3477		{
3478			Store(Zero, tot0)
3479			Store(Zero, tot1)
3480			switch (ToInteger (Arg0)) {
3481			Case (0) {Store(Ones, ^re10)}
3482			Case (1) {Store(Ones, ^re11)}
3483			Case (2) {Store(Ones, ^re12)}
3484			Case (3) {Store(Ones, ^re13)}
3485			}
3486
3487			Store(idx1, Local0)
3488			Store(dta1, Local1)
3489
3490			Multiply(arg0, 2, Local2)
3491			if (LNotEqual(Local0, arg1)) {
3492				err(ts, z179, __LINE__, 0, 0, Local0, arg1)
3493			}
3494			if (LNotEqual(Local1, arg2)) {
3495				err(ts, z179, __LINE__, 0, 0, Local1, arg2)
3496			}
3497		}
3498
3499		OUTP("Check IndexField DWordAcc Ones write 8-8-8-8")
3500
3501		Store(0xff, Local0)
3502		if (LAnd(ABUU, LNot(q00a))) {
3503			Store(0xffffffff, Local0)
3504		}
3505		TRY0(0, 0, Local0)
3506
3507		Store(0xff00, Local0)
3508		if (LAnd(ABUU, LNot(q00a))) {
3509			Store(0xffffff00, Local0)
3510		}
3511		TRY0(1, 0, Local0)
3512
3513		Store(0xff0000, Local0)
3514		if (LAnd(ABUU, LNot(q00a))) {
3515			Store(0xffff0000, Local0)
3516		}
3517		TRY0(2, 0, Local0)
3518
3519		TRY0(3, 0, 0xff000000)
3520	}
3521
3522	Method(ifd7,, Serialized)
3523	{
3524		Field(OPR0, ByteAcc, NoLock, WriteAsZeros) {
3525			idx1, 8,
3526			dta1, 8,
3527		}
3528
3529		IndexField(idx1, dta1, ByteAcc, NoLock, WriteAsZeros) {
3530			, 2,
3531			re10, 7,
3532			, 2,
3533			re11, 7,
3534			, 2,
3535			re12, 7,
3536			, 2,
3537			re13, 7,
3538		}
3539
3540		Method(TRY0, 3, Serialized)
3541		{
3542			Store(Zero, tot0)
3543			switch (ToInteger (Arg0)) {
3544			Case (0) {Store(Ones, ^re10)}
3545			Case (1) {Store(Ones, ^re11)}
3546			Case (2) {Store(Ones, ^re12)}
3547			Case (3) {Store(Ones, ^re13)}
3548			}
3549
3550			Store(idx1, Local0)
3551			Store(dta1, Local1)
3552
3553			Multiply(arg0, 2, Local2)
3554			if (LNotEqual(Local0, arg1)) {
3555				err(ts, z179, __LINE__, 0, 0, Local0, arg1)
3556			}
3557			if (LNotEqual(Local1, arg2)) {
3558				err(ts, z179, __LINE__, 0, 0, Local1, arg2)
3559			}
3560		}
3561
3562		OUTP("Check IndexField ByteAcc Ones write (:2)7-(:2)7-(:2)7-(:2)7")
3563
3564		Store(0x1, Local0)
3565		if (LAnd(ABUU, LNot(q00a))) {
3566			Store(0x3, Local0)
3567		}
3568		TRY0(0, 1, Local0)
3569
3570		Store(0x3, Local0)
3571		if (LAnd(ABUU, LNot(q00a))) {
3572			Store(0x7, Local0)
3573		}
3574		TRY0(1, 2, Local0)
3575
3576		Store(0x7, Local0)
3577		if (LAnd(ABUU, LNot(q00a))) {
3578			Store(0xf, Local0)
3579		}
3580		TRY0(2, 3, Local0)
3581
3582		Store(0xf, Local0)
3583		if (LAnd(ABUU, LNot(q00a))) {
3584			Store(0x1f, Local0)
3585		}
3586		TRY0(3, 4, Local0)
3587	}
3588
3589	CH03(ts, z179, 0x0e8, __LINE__, 0)
3590	switch (ToInteger (Arg0)) {
3591		case (0) {
3592			ifd4()
3593			ifd5()
3594			ifd6()
3595			ifd7()
3596		}
3597		case (5) { ifd4() }
3598		case (6) { ifd5() }
3599		case (7) { ifd6() }
3600		case (8) { ifd7() }
3601	}
3602	CH03(ts, z179, 0x0e9, __LINE__, 0)
3603}
3604
3605Method(mu27, 1, Serialized)
3606{
3607	Name(ts, "mu27")
3608
3609	OperationRegion(OPR0, SystemMemory, VMEM, 256)
3610
3611	Field(OPR0, ByteAcc, NoLock, Preserve) {
3612		tot0, 32,
3613		tot1, 32,
3614	}
3615
3616	Method(ifd8,, Serialized)
3617	{
3618		Field(OPR0, DWordAcc, NoLock, WriteAsZeros) {
3619			idx1, 32,
3620			dta1, 32,
3621		}
3622
3623		IndexField(idx1, dta1, DWordAcc, NoLock, WriteAsZeros) {
3624			Offset(1),
3625			re10, 8,
3626			Offset(4),
3627			re11, 8,
3628			Offset(9),
3629			re12, 8,
3630			Offset(12),
3631			re13, 8,
3632		}
3633
3634		Method(TRY0, 3, Serialized)
3635		{
3636			Store(Zero, tot0)
3637			Store(Zero, tot1)
3638			switch (ToInteger (Arg0)) {
3639			Case (0) {Store(0x12345678, ^re10)}
3640			Case (1) {Store(0x12345678, ^re11)}
3641			Case (2) {Store(0x12345678, ^re12)}
3642			Case (3) {Store(0x12345678, ^re13)}
3643			}
3644
3645			Store(idx1, Local0)
3646			Store(dta1, Local1)
3647
3648			Multiply(arg0, 2, Local2)
3649			if (LNotEqual(Local0, arg1)) {
3650				err(ts, z179, __LINE__, 0, 0, Local0, arg1)
3651			}
3652			if (LNotEqual(Local1, arg2)) {
3653				err(ts, z179, __LINE__, 0, 0, Local1, arg2)
3654			}
3655		}
3656
3657		OUTP("Check IndexField DWordAcc 0x12345678 write Offset (1)8-(4)8-(9)8-(12)8")
3658
3659		Store(0x7800, Local0)
3660		if (LAnd(ABUU, LNot(q00a))) {
3661			Store(0x34567800, Local0)
3662		}
3663		TRY0(0, 0, Local0)
3664
3665		Store(0x78, Local0)
3666		if (LAnd(ABUU, LNot(q00a))) {
3667			Store(0x12345678, Local0)
3668		}
3669		TRY0(1, 4, Local0)
3670
3671		Store(0x7800, Local0)
3672		if (LAnd(ABUU, LNot(q00a))) {
3673			Store(0x34567800, Local0)
3674		}
3675		TRY0(2, 8, Local0)
3676
3677		Store(0x78, Local0)
3678		if (LAnd(ABUU, LNot(q00a))) {
3679			Store(0x12345678, Local0)
3680		}
3681		TRY0(3, 12, Local0)
3682	}
3683
3684	Method(ifd9,, Serialized)
3685	{
3686		Field(OPR0, WordAcc, NoLock, WriteAsZeros) {
3687			idx1, 16,
3688			dta1, 16,
3689		}
3690
3691		IndexField(idx1, dta1, WordAcc, NoLock, WriteAsZeros) {
3692			Offset(1),
3693			re10, 8,
3694			Offset(4),
3695			re11, 8,
3696			Offset(9),
3697			re12, 8,
3698			Offset(12),
3699			re13, 8,
3700		}
3701
3702		Method(TRY0, 3, Serialized)
3703		{
3704			Store(Zero, tot0)
3705			switch (ToInteger (Arg0)) {
3706			Case (0) {Store(0x12345678, ^re10)}
3707			Case (1) {Store(0x12345678, ^re11)}
3708			Case (2) {Store(0x12345678, ^re12)}
3709			Case (3) {Store(0x12345678, ^re13)}
3710			}
3711
3712			Store(idx1, Local0)
3713			Store(dta1, Local1)
3714
3715			Multiply(arg0, 2, Local2)
3716			if (LNotEqual(Local0, arg1)) {
3717				err(ts, z179, __LINE__, 0, 0, Local0, arg1)
3718			}
3719			if (LNotEqual(Local1, arg2)) {
3720				err(ts, z179, __LINE__, 0, 0, Local1, arg2)
3721			}
3722		}
3723
3724		OUTP("Check IndexField WordAcc 0x12345678 write Offset (1)8-(4)8-(9)8-(12)8")
3725
3726		TRY0(0, 0, 0x7800)
3727
3728		Store(0x78, Local0)
3729		if (LAnd(ABUU, LNot(q00a))) {
3730			Store(0x5678, Local0)
3731		}
3732		TRY0(1, 4, Local0)
3733
3734		TRY0(2, 8, 0x7800)
3735
3736		Store(0x78, Local0)
3737		if (LAnd(ABUU, LNot(q00a))) {
3738			Store(0x5678, Local0)
3739		}
3740		TRY0(3, 12, Local0)
3741	}
3742
3743	Method(ifda,, Serialized)
3744	{
3745		Field(OPR0, ByteAcc, NoLock, WriteAsZeros) {
3746			idx1, 16,
3747			dta1, 16,
3748		}
3749
3750		IndexField(idx1, dta1, ByteAcc, NoLock, WriteAsZeros) {
3751			Offset(1),
3752			re10, 8,
3753			Offset(4),
3754			re11, 8,
3755			Offset(9),
3756			re12, 8,
3757			Offset(12),
3758			re13, 8,
3759		}
3760
3761		Method(TRY0, 3, Serialized)
3762		{
3763			Store(Zero, tot0)
3764			switch (ToInteger (Arg0)) {
3765			Case (0) {Store(0x12345678, ^re10)}
3766			Case (1) {Store(0x12345678, ^re11)}
3767			Case (2) {Store(0x12345678, ^re12)}
3768			Case (3) {Store(0x12345678, ^re13)}
3769			}
3770
3771			Store(idx1, Local0)
3772			Store(dta1, Local1)
3773
3774			Multiply(arg0, 2, Local2)
3775			if (LNotEqual(Local0, arg1)) {
3776				err(ts, z179, __LINE__, 0, 0, Local0, arg1)
3777			}
3778			if (LNotEqual(Local1, arg2)) {
3779				err(ts, z179, __LINE__, 0, 0, Local1, arg2)
3780			}
3781		}
3782
3783		OUTP("Check IndexField ByteAcc 0x12345678 write Offset (1)8-(4)8-(9)8-(12)8")
3784
3785		TRY0(0, 1, 0x78)
3786		TRY0(1, 4, 0x78)
3787		TRY0(2, 9, 0x78)
3788		TRY0(3, 12, 0x78)
3789	}
3790
3791	Method(ifdb,, Serialized)
3792	{
3793		Field(OPR0, AnyAcc, NoLock, WriteAsZeros) {
3794			idx1, 16,
3795			dta1, 16,
3796		}
3797
3798		IndexField(idx1, dta1, AnyAcc, NoLock, WriteAsZeros) {
3799			Offset(1),
3800			re10, 8,
3801			Offset(4),
3802			re11, 8,
3803			Offset(9),
3804			re12, 8,
3805			Offset(12),
3806			re13, 8,
3807		}
3808
3809		Method(TRY0, 3, Serialized)
3810		{
3811			Store(Zero, tot0)
3812			switch (ToInteger (Arg0)) {
3813			Case (0) {Store(0x12345678, ^re10)}
3814			Case (1) {Store(0x12345678, ^re11)}
3815			Case (2) {Store(0x12345678, ^re12)}
3816			Case (3) {Store(0x12345678, ^re13)}
3817			}
3818
3819			Store(idx1, Local0)
3820			Store(dta1, Local1)
3821
3822			Multiply(arg0, 2, Local2)
3823			if (LNotEqual(Local0, arg1)) {
3824				err(ts, z179, __LINE__, 0, 0, Local0, arg1)
3825			}
3826			if (LNotEqual(Local1, arg2)) {
3827				err(ts, z179, __LINE__, 0, 0, Local1, arg2)
3828			}
3829		}
3830
3831		OUTP("Check IndexField AnyAcc 0x12345678 write Offset (1)8-(4)8-(9)8-(12)8")
3832
3833		TRY0(0, 1, 0x78)
3834		TRY0(1, 4, 0x78)
3835		TRY0(2, 9, 0x78)
3836		TRY0(3, 12, 0x78)
3837	}
3838
3839	CH03(ts, z179, 0x0ea, __LINE__, 0)
3840	switch (ToInteger (Arg0)) {
3841		case (0) {
3842			ifd8()
3843			ifd9()
3844			ifda()
3845			ifdb()
3846		}
3847		case (9) { ifd8() }
3848		case (10) { ifd9() }
3849		case (11) { ifda() }
3850		case (12) { ifdb() }
3851	}
3852	CH03(ts, z179, 0x0eb, __LINE__, 0)
3853}
3854
3855Method(mv27, 1, Serialized)
3856{
3857	Name(ts, "mv27")
3858
3859	OperationRegion(OPR0, SystemMemory, VMEM, 256)
3860
3861	Field(OPR0, ByteAcc, NoLock, Preserve) {
3862		tot0, 32,
3863		tot1, 32,
3864	}
3865
3866	Method(ifdc,, Serialized)
3867	{
3868		Field(OPR0, WordAcc, NoLock, WriteAsZeros) {
3869			idx0, 16,
3870			dta0, 16,
3871		}
3872		IndexField(idx0, dta0, WordAcc, NoLock, WriteAsZeros) {
3873			idf0, 8,
3874			Offset(3),
3875			idf1, 8,
3876			Offset(6),
3877			idf2, 8,
3878			Offset(11),
3879			idf3, 8,
3880		}
3881
3882		Method(TRY0, 4)
3883		{
3884			Store(idx0, Local0)
3885			Store(dta0, Local1)
3886
3887			Multiply(arg0, 2, Local2)
3888			if (LNotEqual(Local0, arg1)) {
3889				err(ts, z179, __LINE__, 0, 0, Local0, arg1)
3890			}
3891			if (LNotEqual(Local1, arg2)) {
3892				err(ts, z179, __LINE__, 0, 0, Local1, arg2)
3893			}
3894		}
3895
3896		OUTP("Check IndexField WordAcc read")
3897
3898		Store(0x1234ffff, tot0)
3899		TRY0(0, 0, 0x1234, idf0)
3900
3901		Store(0x5678ffff, tot0)
3902		TRY0(2, 2, 0x5678, idf1)
3903
3904		Store(0x9abcffff, tot0)
3905		TRY0(3, 6, 0x9abc, idf2)
3906
3907		Store(0xde01ffff, tot0)
3908		TRY0(4, 10, 0xde01, idf3)
3909	}
3910
3911	Method(TRY4, 5)
3912	{
3913		Method(TRY0, 3)
3914		{
3915			Store(arg0, tot0)
3916			Store(Derefof(arg1), Local0)
3917			Store(tot0, Local1)
3918			Store(DeRefof(Index(arg2, 0)), Local2)
3919			Store(DeRefof(Index(arg2, 1)), Local3)
3920			Store(DeRefof(Index(arg2, 2)), Local4)
3921
3922			Add(0x140, Multiply(Local2, 2), Local2)
3923			if (LNotEqual(Local0, Local3)) {
3924				err(ts, z179, __LINE__, 0, 0, Local0, Local3)
3925			}
3926			if (LNotEqual(Local1, Local4)) {
3927				err(ts, z179, __LINE__, 0, 0, Local1, Local4)
3928			}
3929		}
3930
3931		Store(DeRefof(Index(arg0, 0)), Local0)
3932		TRY0(Local0, arg1, DeRefof(Index(arg0, 1)))
3933		TRY0(Local0, arg2, DeRefof(Index(arg0, 2)))
3934		TRY0(Local0, arg3, DeRefof(Index(arg0, 3)))
3935		TRY0(Local0, arg4, DeRefof(Index(arg0, 4)))
3936	}
3937
3938	Method(ifdd,, Serialized)
3939	{
3940		Field(OPR0, ByteAcc, NoLock, Preserve) {
3941			idx1, 8,
3942			dta1, 8,
3943		}
3944
3945		IndexField(idx1, dta1, ByteAcc, NoLock, Preserve) {
3946			, 4,
3947			re10, 1,
3948			re11, 1,
3949			re12, 3,
3950			re13, 3,
3951		}
3952
3953		OUTP("Check IndexField implementation ByteAcc 4,1-1-3-3")
3954
3955		Store(Package(){0xa5a5a5a5,
3956				Package(){0, 0x0, 0xa5a5a500},
3957				Package(){1, 0x1, 0xa5a5a500},
3958				Package(){2, 0x6, 0xa5a5a501},
3959				Package(){3, 0x2, 0xa5a5a501},},
3960			Local0)
3961
3962		if (LAnd(ABUU, LNot(q00a))) {
3963			Store(0x96, Index(DeRefof(Index(Local0, 3)), 1))
3964		}
3965
3966		TRY4(Local0, Refof(re10), Refof(re11), Refof(re12), Refof(re13))
3967
3968
3969		Store(Package(){0x5a5a5a5a,
3970				Package(){4, 0x1, 0x5a5a5a00},
3971				Package(){5, 0x0, 0x5a5a5a00},
3972				Package(){6, 0x1, 0x5a5a5a01},
3973				Package(){7, 0x5, 0x5a5a5a01},},
3974			Local0)
3975
3976		if (LAnd(ABUU, LNot(q00a))) {
3977			Store(0x169, Index(DeRefof(Index(Local0, 3)), 1))
3978		}
3979
3980		TRY4(Local0, Refof(re10), Refof(re11), Refof(re12), Refof(re13))
3981	}
3982
3983	Method(ifde,, Serialized)
3984	{
3985		Field(OPR0, WordAcc, NoLock, Preserve) {
3986			idx1, 16,
3987			dta1, 16,
3988		}
3989
3990		IndexField(idx1, dta1, WordAcc, NoLock, Preserve) {
3991			, 4,
3992			re10, 1,
3993			re11, 1,
3994			re12, 3,
3995			re13, 3,
3996		}
3997
3998		OUTP("Check IndexField implementation WordAcc 4,1-1-3-3")
3999
4000		Store(Package(){0xa5a5a5a5,
4001				Package(){8, 0x0, 0xa5a50000},
4002				Package(){9, 0x1, 0xa5a50000},
4003				Package(){10, 0x6, 0xa5a50000},
4004				Package(){11, 0x2, 0xa5a50000},},
4005			Local0)
4006		TRY4(Local0, Refof(re10), Refof(re11), Refof(re12), Refof(re13))
4007
4008
4009		Store(Package(){0x5a5a5a5a,
4010				Package(){12, 0x1, 0x5a5a0000},
4011				Package(){13, 0x0, 0x5a5a0000},
4012				Package(){14, 0x1, 0x5a5a0000},
4013				Package(){15, 0x5, 0x5a5a0000},},
4014			Local0)
4015		TRY4(Local0, Refof(re10), Refof(re11), Refof(re12), Refof(re13))
4016	}
4017
4018	Method(ifdf,, Serialized)
4019	{
4020		Field(OPR0, ByteAcc, NoLock, Preserve) {
4021			idx1, 8,
4022			dta1, 8,
4023		}
4024
4025		IndexField(idx1, dta1, ByteAcc, NoLock, Preserve) {
4026			, 7,
4027			re10, 1,
4028			re11, 1,
4029			Offset(2),
4030			re12, 4,
4031			re13, 4,
4032		}
4033
4034		OUTP("Check IndexField implementation ByteAcc 7,1-1,O2,4-4")
4035
4036		Store(Package(){0xa5a5a5a5,
4037				Package(){16, 0x1, 0xa5a5a500},
4038				Package(){17, 0x1, 0xa5a5a501},
4039				Package(){18, 0x5, 0xa5a5a502},
4040				Package(){19, 0xa, 0xa5a5a502},},
4041			Local0)
4042		TRY4(Local0, Refof(re10), Refof(re11), Refof(re12), Refof(re13))
4043
4044
4045		Store(Package(){0x5a5a5a5a,
4046				Package(){20, 0x0, 0x5a5a5a00},
4047				Package(){21, 0x0, 0x5a5a5a01},
4048				Package(){22, 0xa, 0x5a5a5a02},
4049				Package(){23, 0x5, 0x5a5a5a02},},
4050			Local0)
4051		TRY4(Local0, Refof(re10), Refof(re11), Refof(re12), Refof(re13))
4052	}
4053
4054	CH03(ts, z179, 0x0ec, __LINE__, 0)
4055	switch (ToInteger (Arg0)) {
4056		case (0) {
4057			ifdc()
4058			ifdd()
4059			ifde()
4060			ifdf()
4061		}
4062		case (13) { ifdc() }
4063		case (14) { ifdd() }
4064		case (15) { ifde() }
4065		case (16) { ifdf() }
4066	}
4067	CH03(ts, z179, 0x0ed, __LINE__, 0)
4068}
4069
4070Method(mw27, 1, Serialized)
4071{
4072	Name(ts, "mw27")
4073
4074	OperationRegion(OPR0, SystemMemory, VMEM, 256)
4075
4076	Field(OPR0, ByteAcc, NoLock, Preserve) {
4077		tot0, 32,
4078		tot1, 32,
4079	}
4080
4081	Method(ife0,, Serialized)
4082	{
4083		Field(OPR0, ByteAcc, NoLock, WriteAsZeros) {
4084			idx0, 16,
4085			dta0, 16,
4086		}
4087		IndexField(idx0, dta0, ByteAcc, NoLock, WriteAsZeros) {
4088			idf0, 1, , 6, idf1, 1,
4089			idf2, 1, , 6, idf3, 1,
4090			idf4, 1, , 6, idf5, 1,
4091			idf6, 1, , 6, idf7, 1,
4092		}
4093		Method(m000, 5)
4094		{
4095			Store(arg0, tot0)
4096			Store(Derefof(arg1), Local0)
4097			Store(tot0, Local1)
4098
4099			if (LNotEqual(Local0, arg3)) {
4100				err(ts, z179, __LINE__, 0, 0, Local0, arg3)
4101			}
4102			if (LNotEqual(Local1, arg4)) {
4103				err(ts, z179, __LINE__, 0, 0, Local1, arg4)
4104			}
4105		}
4106
4107		OUTP("Check IndexField implementation: ByteAcc2")
4108
4109		m000(0x0001ffff, Refof(idf0), 0x150, 0x1, 0x00010000)
4110		m000(0x0080ffff, Refof(idf1), 0x152, 0x1, 0x00800000)
4111		m000(0x0001ffff, Refof(idf2), 0x154, 0x1, 0x00010001)
4112		m000(0x0080ffff, Refof(idf3), 0x156, 0x1, 0x00800001)
4113		m000(0x0001ffff, Refof(idf4), 0x158, 0x1, 0x00010002)
4114		m000(0x0080ffff, Refof(idf5), 0x15a, 0x1, 0x00800002)
4115		m000(0x0001ffff, Refof(idf6), 0x15c, 0x1, 0x00010003)
4116		m000(0x0080ffff, Refof(idf7), 0x15e, 0x1, 0x00800003)
4117	}
4118
4119	Method(ife1,, Serialized)
4120	{
4121		Field(OPR0, WordAcc, NoLock, WriteAsZeros) {
4122			idx0, 16,
4123			dta0, 16,
4124		}
4125		IndexField(idx0, dta0, ByteAcc, NoLock, WriteAsZeros) {
4126			idf0, 1, , 6, idf1, 1,
4127			idf2, 1, , 6, idf3, 1,
4128			idf4, 1, , 6, idf5, 1,
4129			idf6, 1, , 6, idf7, 1,
4130		}
4131		Method(m000, 5)
4132		{
4133			Store(arg0, tot0)
4134			Store(Derefof(arg1), Local0)
4135			Store(tot0, Local1)
4136
4137			if (LNotEqual(Local0, arg3)) {
4138				err(ts, z179, __LINE__, 0, 0, Local0, arg3)
4139			}
4140			if (LNotEqual(Local1, arg4)) {
4141				err(ts, z179, __LINE__, 0, 0, Local1, arg4)
4142			}
4143		}
4144
4145		OUTP("Check IndexField implementation: WordAccByteAcc")
4146
4147		m000(0x0001ffff, Refof(idf0), 0x160, 0x1, 0x00010000)
4148		m000(0x0080ffff, Refof(idf1), 0x162, 0x1, 0x00800000)
4149		m000(0x0001ffff, Refof(idf2), 0x164, 0x1, 0x00010001)
4150		m000(0x0080ffff, Refof(idf3), 0x166, 0x1, 0x00800001)
4151		m000(0x0001ffff, Refof(idf4), 0x168, 0x1, 0x00010002)
4152		m000(0x0080ffff, Refof(idf5), 0x16a, 0x1, 0x00800002)
4153		m000(0x0001ffff, Refof(idf6), 0x16c, 0x1, 0x00010003)
4154		m000(0x0080ffff, Refof(idf7), 0x16e, 0x1, 0x00800003)
4155	}
4156
4157	Method(ife2,, Serialized)
4158	{
4159		Field(OPR0, ByteAcc, NoLock, WriteAsZeros) {
4160			idx0, 16,
4161			dta0, 16,
4162		}
4163		IndexField(idx0, dta0, WordAcc, NoLock, WriteAsZeros) {
4164			idf0, 1, , 6, idf1, 1,
4165			idf2, 1, , 6, idf3, 1,
4166			idf4, 1, , 6, idf5, 1,
4167			idf6, 1, , 6, idf7, 1,
4168		}
4169		Method(m000, 5)
4170		{
4171			Store(arg0, tot0)
4172			Store(Derefof(arg1), Local0)
4173			Store(tot0, Local1)
4174
4175			if (LNotEqual(Local0, arg3)) {
4176				err(ts, z179, __LINE__, 0, 0, Local0, arg3)
4177			}
4178			if (LNotEqual(Local1, arg4)) {
4179				err(ts, z179, __LINE__, 0, 0, Local1, arg4)
4180			}
4181		}
4182
4183		OUTP("Check IndexField implementation: ByteAccWordAcc")
4184
4185		m000(0x0001ffff, Refof(idf0), 0x170, 0x1, 0x00010000)
4186		m000(0x0080ffff, Refof(idf1), 0x172, 0x1, 0x00800000)
4187		m000(0x0001ffff, Refof(idf2), 0x174, 0x0, 0x00010000)
4188		m000(0x0080ffff, Refof(idf3), 0x176, 0x0, 0x00800000)
4189		m000(0x0001ffff, Refof(idf4), 0x178, 0x1, 0x00010002)
4190		m000(0x0080ffff, Refof(idf5), 0x17a, 0x1, 0x00800002)
4191		m000(0x0001ffff, Refof(idf6), 0x17c, 0x0, 0x00010002)
4192		m000(0x0080ffff, Refof(idf7), 0x17e, 0x0, 0x00800002)
4193	}
4194
4195	Method(ife3,, Serialized)
4196	{
4197		Field(OPR0, WordAcc, NoLock, WriteAsZeros) {
4198			idx0, 16,
4199			dta0, 16,
4200		}
4201		IndexField(idx0, dta0, WordAcc, NoLock, WriteAsZeros) {
4202			idf0, 1, , 6, idf1, 1,
4203			idf2, 1, , 6, idf3, 1,
4204			idf4, 1, , 6, idf5, 1,
4205			idf6, 1, , 6, idf7, 1,
4206		}
4207		Method(m000, 5)
4208		{
4209			Store(arg0, tot0)
4210			Store(Derefof(arg1), Local0)
4211			Store(tot0, Local1)
4212
4213			if (LNotEqual(Local0, arg3)) {
4214				err(ts, z179, __LINE__, 0, 0, Local0, arg3)
4215			}
4216			if (LNotEqual(Local1, arg4)) {
4217				err(ts, z179, __LINE__, 0, 0, Local1, arg4)
4218			}
4219		}
4220
4221		OUTP("Check IndexField implementation: WordAcc2")
4222
4223		m000(0x0001ffff, Refof(idf0), 0x180, 0x1, 0x00010000)
4224		m000(0x0080ffff, Refof(idf1), 0x182, 0x1, 0x00800000)
4225		m000(0x0001ffff, Refof(idf2), 0x184, 0x0, 0x00010000)
4226		m000(0x0080ffff, Refof(idf3), 0x186, 0x0, 0x00800000)
4227		m000(0x0001ffff, Refof(idf4), 0x188, 0x1, 0x00010002)
4228		m000(0x0080ffff, Refof(idf5), 0x18a, 0x1, 0x00800002)
4229		m000(0x0001ffff, Refof(idf6), 0x18c, 0x0, 0x00010002)
4230		m000(0x0080ffff, Refof(idf7), 0x18e, 0x0, 0x00800002)
4231	}
4232
4233
4234	CH03(ts, z179, 0x0ee, __LINE__, 0)
4235	switch (ToInteger (Arg0)) {
4236		case (0) {
4237			ife0()
4238			ife1()
4239			ife2()
4240			ife3()
4241		}
4242		case (17) { ife0() }
4243		case (18) { ife1() }
4244		case (19) { ife2() }
4245		case (20) { ife3() }
4246	}
4247	CH03(ts, z179, 0x0ef, __LINE__, 0)
4248}
4249
4250Method(mx27, 1, Serialized)
4251{
4252	Name(ts, "mx27")
4253
4254	OperationRegion(OPR0, SystemMemory, VMEM, 256)
4255
4256	Field(OPR0, ByteAcc, NoLock, Preserve) {
4257		tot0, 32,
4258		tot1, 32,
4259	}
4260
4261	Method(ife4,, Serialized)
4262	{
4263		Field(OPR0, ByteAcc, NoLock, WriteAsZeros) {
4264			idx0, 16,
4265			dta0, 4,
4266		}
4267		IndexField(idx0, dta0, ByteAcc, NoLock, WriteAsZeros) {
4268			idf0, 1, , 6, idf1, 1,
4269			idf2, 1, , 6, idf3, 1,
4270			idf4, 1, , 6, idf5, 1,
4271			idf6, 1, , 6, idf7, 1,
4272		}
4273		Method(m000, 5)
4274		{
4275			Store(arg0, tot0)
4276			Store(Derefof(arg1), Local0)
4277			Store(tot0, Local1)
4278
4279			if (LNotEqual(Local0, arg3)) {
4280				err(ts, z179, __LINE__, 0, 0, Local0, arg3)
4281			}
4282			if (LNotEqual(Local1, arg4)) {
4283				err(ts, z179, __LINE__, 0, 0, Local1, arg4)
4284			}
4285		}
4286
4287		OUTP("Check IndexField implementation: ByteAcc2, dta0:4")
4288
4289		m000(0x0001ffff, Refof(idf0), 0x190, 0x1, 0x00010000)
4290		m000(0xffffffff, Refof(idf1), 0x192, 0x0, 0xffff0000)
4291		m000(0x0001ffff, Refof(idf2), 0x194, 0x1, 0x00010001)
4292		m000(0xffffffff, Refof(idf3), 0x196, 0x0, 0xffff0001)
4293		m000(0x0001ffff, Refof(idf4), 0x198, 0x1, 0x00010002)
4294		m000(0xffffffff, Refof(idf5), 0x19a, 0x0, 0xffff0002)
4295		m000(0x0001ffff, Refof(idf6), 0x19c, 0x1, 0x00010003)
4296		m000(0xffffffff, Refof(idf7), 0x19e, 0x0, 0xffff0003)
4297	}
4298
4299	Method(ife5,, Serialized)
4300	{
4301		Field(OPR0, ByteAcc, NoLock, WriteAsZeros) {
4302			idx0, 8,
4303			dta0, 8,
4304		}
4305		IndexField(idx0, dta0, WordAcc, NoLock, WriteAsZeros) {
4306			idf0, 1, , 6, idf1, 1,
4307			idf2, 1, , 6, idf3, 1,
4308			idf4, 1, , 6, idf5, 1,
4309			idf6, 1, , 6, idf7, 1,
4310		}
4311		Method(m000, 5)
4312		{
4313			Store(arg0, tot0)
4314			Store(Derefof(arg1), Local0)
4315			Store(tot0, Local1)
4316
4317			if (LNotEqual(Local0, arg3)) {
4318				err(ts, z179, __LINE__, 0, 0, Local0, arg3)
4319			}
4320			if (LNotEqual(Local1, arg4)) {
4321				err(ts, z179, __LINE__, 0, 0, Local1, arg4)
4322			}
4323		}
4324
4325		OUTP("Check IndexField implementation: ByteAccWordAcc, idx0, 8, dta0, 8")
4326
4327		m000(0x000001ff, Refof(idf0), 0x1a0, 0x1, 0x00000100)
4328		m000(0x000080ff, Refof(idf1), 0x1a2, 0x1, 0x00008000)
4329		m000(0xffffffff, Refof(idf2), 0x1a4, 0x0, 0xffffff00)
4330		m000(0xffffffff, Refof(idf3), 0x1a6, 0x0, 0xffffff00)
4331		m000(0x000001ff, Refof(idf4), 0x1a8, 0x1, 0x00000102)
4332		m000(0x000080ff, Refof(idf5), 0x1aa, 0x1, 0x00008002)
4333		m000(0xffffffff, Refof(idf6), 0x1ac, 0x0, 0xffffff02)
4334		m000(0xffffffff, Refof(idf7), 0x1ae, 0x0, 0xffffff02)
4335	}
4336
4337	Method(ife6,, Serialized)
4338	{
4339		Field(OPR0, ByteAcc, NoLock, WriteAsZeros) {
4340			idx0, 32,
4341			dta0, 32,
4342		}
4343		IndexField(idx0, dta0, WordAcc, NoLock, WriteAsZeros) {
4344			idf0, 1, , 6, idf1, 1,
4345			idf2, 1, , 6, idf3, 1,
4346			idf4, 1, , 6, idf5, 1,
4347			idf6, 1, , 6, idf7, 1,
4348		}
4349		Method(m000, 6)
4350		{
4351			Store(0xffffffff, tot0)
4352			Store(arg0, tot1)
4353			Store(Derefof(arg1), Local0)
4354			Store(tot1, Local1)
4355			Store(tot0, Local2)
4356
4357			if (LNotEqual(Local0, arg3)) {
4358				err(ts, z179, __LINE__, 0, 0, Local0, arg3)
4359			}
4360			if (LNotEqual(Local1, arg4)) {
4361				err(ts, z179, __LINE__, 0, 0, Local1, arg4)
4362			}
4363			if (LNotEqual(Local2, arg5)) {
4364				err(ts, z179, __LINE__, 0, 0, Local2, arg5)
4365			}
4366		}
4367
4368		OUTP("Check IndexField implementation: ByteAccWordAcc, idx0, 32, dta0, 32")
4369
4370		m000(0x00000001, Refof(idf0), 0x1b0, 0x1, 0x00000001, 0)
4371		m000(0x00000080, Refof(idf1), 0x1b3, 0x1, 0x00000080, 0)
4372		m000(0x00000100, Refof(idf2), 0x1b6, 0x1, 0x00000100, 0)
4373		m000(0x00008000, Refof(idf3), 0x1b9, 0x1, 0x00008000, 0)
4374		m000(0x00000001, Refof(idf4), 0x1bc, 0x1, 0x00000001, 2)
4375		m000(0x00000080, Refof(idf5), 0x1bf, 0x1, 0x00000080, 2)
4376		m000(0x00000100, Refof(idf6), 0x1c2, 0x1, 0x00000100, 2)
4377		m000(0x00008000, Refof(idf7), 0x1c5, 0x1, 0x00008000, 2)
4378	}
4379
4380	Method(ife7,, Serialized)
4381	{
4382		Field(OPR0, DWordAcc, NoLock, WriteAsZeros) {
4383			idx0, 32,
4384			dta0, 32,
4385		}
4386		IndexField(idx0, dta0, WordAcc, NoLock, WriteAsZeros) {
4387			idf0, 1, , 6, idf1, 1,
4388			idf2, 1, , 6, idf3, 1,
4389			idf4, 1, , 6, idf5, 1,
4390			idf6, 1, , 6, idf7, 1,
4391		}
4392		Method(m000, 6)
4393		{
4394			Store(0xffffffff, tot0)
4395			Store(arg0, tot1)
4396			Store(Derefof(arg1), Local0)
4397			Store(tot1, Local1)
4398			Store(tot0, Local2)
4399
4400			if (LNotEqual(Local0, arg3)) {
4401				err(ts, z179, __LINE__, 0, 0, Local0, arg3)
4402			}
4403			if (LNotEqual(Local1, arg4)) {
4404				err(ts, z179, __LINE__, 0, 0, Local1, arg4)
4405			}
4406			if (LNotEqual(Local2, arg5)) {
4407				err(ts, z179, __LINE__, 0, 0, Local2, arg5)
4408			}
4409		}
4410
4411		OUTP("Check IndexField implementation: DWordAccWordAcc, idx0, 32, dta0, 32")
4412
4413		m000(0x00000001, Refof(idf0), 0x1f0, 0x1, 0x00000001, 0)
4414		m000(0x00000080, Refof(idf1), 0x1f3, 0x1, 0x00000080, 0)
4415		m000(0x00000100, Refof(idf2), 0x1f6, 0x1, 0x00000100, 0)
4416		m000(0x00008000, Refof(idf3), 0x1f9, 0x1, 0x00008000, 0)
4417		m000(0x00000001, Refof(idf4), 0x1fc, 0x1, 0x00000001, 2)
4418		m000(0x00000080, Refof(idf5), 0x1ff, 0x1, 0x00000080, 2)
4419		m000(0x00000100, Refof(idf6), 0x202, 0x1, 0x00000100, 2)
4420		m000(0x00008000, Refof(idf7), 0x215, 0x1, 0x00008000, 2)
4421	}
4422
4423	CH03(ts, z179, 0x1c8, __LINE__, 0)
4424	switch (ToInteger (Arg0)) {
4425		case (0) {
4426			ife4()
4427			ife5()
4428			ife6()
4429			ife7()
4430		}
4431		case (21) { ife4() }
4432		case (22) { ife5() }
4433		case (23) { ife6() }
4434		case (24) { ife7() }
4435	}
4436	CH03(ts, z179, 0x1c9, __LINE__, 0)
4437}
4438
4439Method(my27, 1, Serialized)
4440{
4441	Name(ts, "my27")
4442
4443	OperationRegion(OPR0, SystemMemory, VMEM, 256)
4444
4445	Field(OPR0, ByteAcc, NoLock, Preserve) {
4446		tot0, 32,
4447		tot1, 32,
4448	}
4449
4450	Method(ife8,, Serialized)
4451	{
4452		Field(OPR0, ByteAcc, NoLock, WriteAsZeros) {
4453			idx0, 32,
4454			dta0, 32,
4455		}
4456		IndexField(idx0, dta0, DWordAcc, NoLock, WriteAsZeros) {
4457			idf0, 1, , 14, idf1, 1,
4458			idf2, 1, , 14, idf3, 1,
4459			idf4, 1, , 14, idf5, 1,
4460			idf6, 1, , 14, idf7, 1,
4461		}
4462		Method(m000, 6)
4463		{
4464			Store(0xffffffff, tot0)
4465			Store(arg0, tot1)
4466			Store(Derefof(arg1), Local0)
4467			Store(tot1, Local1)
4468			Store(tot0, Local2)
4469
4470			if (LNotEqual(Local0, arg3)) {
4471				err(ts, z179, __LINE__, 0, 0, Local0, arg3)
4472			}
4473			if (LNotEqual(Local1, arg4)) {
4474				err(ts, z179, __LINE__, 0, 0, Local1, arg4)
4475			}
4476			if (LNotEqual(Local2, arg5)) {
4477				err(ts, z179, __LINE__, 0, 0, Local2, arg5)
4478			}
4479		}
4480
4481		OUTP("Check IndexField implementation: ByteAccDWordAcc, idx0, 32, dta0, 32")
4482
4483		m000(0x00000001, Refof(idf0), 0x200, 0x1, 0x00000001, 0)
4484		m000(0x00008000, Refof(idf1), 0x203, 0x1, 0x00008000, 0)
4485		m000(0x00010000, Refof(idf2), 0x206, 0x1, 0x00010000, 0)
4486		m000(0x80000000, Refof(idf3), 0x209, 0x1, 0x80000000, 0)
4487		m000(0x00000001, Refof(idf4), 0x20c, 0x1, 0x00000001, 4)
4488		m000(0x00008000, Refof(idf5), 0x20f, 0x1, 0x00008000, 4)
4489		m000(0x00010000, Refof(idf6), 0x212, 0x1, 0x00010000, 4)
4490		m000(0x80000000, Refof(idf7), 0x215, 0x1, 0x80000000, 4)
4491	}
4492
4493	Method(ife9,, Serialized)
4494	{
4495		Field(OPR0, ByteAcc, NoLock, WriteAsZeros) {
4496			idx0, 32,
4497			dta0, 32,
4498		}
4499		IndexField(idx0, dta0, QWordAcc, NoLock, WriteAsZeros) {
4500			idf0, 1, , 14, idf1, 1,
4501			idf2, 1, , 14, idf3, 1,
4502			idf4, 1, , 14, idf5, 1,
4503			idf6, 1, , 14, idf7, 1,
4504		}
4505		Method(m000, 6)
4506		{
4507			Store(0xffffffff, tot0)
4508			Store(arg0, tot1)
4509			Store(Derefof(arg1), Local0)
4510			Store(tot1, Local1)
4511			Store(tot0, Local2)
4512
4513			if (LNotEqual(Local0, arg3)) {
4514				err(ts, z179, __LINE__, 0, 0, Local0, arg3)
4515			}
4516			if (LNotEqual(Local1, arg4)) {
4517				err(ts, z179, __LINE__, 0, 0, Local1, arg4)
4518			}
4519			if (LNotEqual(Local2, arg5)) {
4520				err(ts, z179, __LINE__, 0, 0, Local2, arg5)
4521			}
4522		}
4523
4524		OUTP("Check IndexField implementation: ByteAccQWordAcc, idx0, 32, dta0, 32")
4525
4526		m000(0x00000001, Refof(idf0), 0x220, 0x1, 0x00000001, 0)
4527		m000(0x00008000, Refof(idf1), 0x223, 0x1, 0x00008000, 0)
4528		m000(0x00010000, Refof(idf2), 0x226, 0x1, 0x00010000, 0)
4529		m000(0x80000000, Refof(idf3), 0x229, 0x1, 0x80000000, 0)
4530		m000(0xffffffff, Refof(idf4), 0x22c, 0x0, 0xffffffff, 0)
4531		m000(0xffffffff, Refof(idf5), 0x22f, 0x0, 0xffffffff, 0)
4532		m000(0xffffffff, Refof(idf6), 0x232, 0x0, 0xffffffff, 0)
4533		m000(0xffffffff, Refof(idf7), 0x235, 0x0, 0xffffffff, 0)
4534	}
4535
4536	Method(ifea,, Serialized)
4537	{
4538		Field(OPR0, ByteAcc, NoLock, WriteAsZeros) {
4539			idx0, 16,
4540			dta0, 16,
4541		}
4542		IndexField(idx0, dta0, ByteAcc, NoLock, WriteAsZeros) {
4543			idf0, 1, , 6, idf1, 1,
4544			idf2, 1, , 6, idf3, 1,
4545			idf4, 1, , 6, idf5, 1,
4546			idf6, 1, , 6, idf7, 1,
4547		}
4548		Method(m000, 4, Serialized)
4549		{
4550			Store(arg0, tot0)
4551			switch (ToInteger (Arg1)) {
4552			case (0) {Store(1, idf0)}
4553			case (1) {Store(1, idf1)}
4554			case (2) {Store(1, idf2)}
4555			case (3) {Store(1, idf3)}
4556			case (4) {Store(1, idf4)}
4557			case (5) {Store(1, idf5)}
4558			case (6) {Store(1, idf6)}
4559			case (7) {Store(1, idf7)}
4560			}
4561			Store(tot0, Local0)
4562
4563			if (LNotEqual(Local0, arg3)) {
4564				err(ts, z179, __LINE__, 0, 0, Local0, arg3)
4565			}
4566		}
4567
4568		OUTP("Check IndexField implementation: ByteAcc2, Store")
4569
4570		m000(0xffffffff, 0, 0x240, 0x00010000)
4571		m000(0xffffffff, 1, 0x241, 0x00800000)
4572		m000(0xffffffff, 2, 0x242, 0x00010001)
4573		m000(0xffffffff, 3, 0x243, 0x00800001)
4574		m000(0xffffffff, 4, 0x244, 0x00010002)
4575		m000(0xffffffff, 5, 0x245, 0x00800002)
4576		m000(0xffffffff, 6, 0x246, 0x00010003)
4577		m000(0xffffffff, 7, 0x247, 0x00800003)
4578	}
4579
4580	Method(ifeb,, Serialized)
4581	{
4582		Field(OPR0, ByteAcc, NoLock, WriteAsZeros) {
4583			idx0, 16,
4584			dta0, 16,
4585		}
4586		IndexField(idx0, dta0, WordAcc, NoLock, WriteAsZeros) {
4587			idf0, 1, , 6, idf1, 1,
4588			idf2, 1, , 6, idf3, 1,
4589			idf4, 1, , 6, idf5, 1,
4590			idf6, 1, , 6, idf7, 1,
4591		}
4592		Method(m000, 4, Serialized)
4593		{
4594			Store(arg0, tot0)
4595			switch (ToInteger (Arg1)) {
4596			case (0) {Store(1, idf0)}
4597			case (1) {Store(1, idf1)}
4598			case (2) {Store(1, idf2)}
4599			case (3) {Store(1, idf3)}
4600			case (4) {Store(1, idf4)}
4601			case (5) {Store(1, idf5)}
4602			case (6) {Store(1, idf6)}
4603			case (7) {Store(1, idf7)}
4604			}
4605			Store(tot0, Local0)
4606
4607			if (LNotEqual(Local0, arg3)) {
4608				err(ts, z179, __LINE__, 0, 0, Local0, arg3)
4609			}
4610		}
4611
4612		OUTP("Check IndexField implementation: ByteAccWordAcc, Store")
4613
4614		m000(0xffffffff, 0, 0x248, 0x00010000)
4615		m000(0xffffffff, 1, 0x249, 0x00800000)
4616		m000(0xffffffff, 2, 0x24a, 0x01000000)
4617		m000(0xffffffff, 3, 0x24b, 0x80000000)
4618		m000(0xffffffff, 4, 0x24c, 0x00010002)
4619		m000(0xffffffff, 5, 0x24d, 0x00800002)
4620		m000(0xffffffff, 6, 0x24e, 0x01000002)
4621		m000(0xffffffff, 7, 0x24f, 0x80000002)
4622	}
4623
4624	CH03(ts, z179, 0x1ca, __LINE__, 0)
4625	switch (ToInteger (Arg0)) {
4626		case (0) {
4627			ife8()
4628
4629			if (ABUU) {
4630			} else {
4631				ife9()
4632			}
4633
4634			if (ABUU) {
4635			} else {
4636				ifea()
4637			}
4638
4639			if (ABUU) {
4640			} else {
4641				ifeb()
4642			}
4643		}
4644		case (25) { ife8() }
4645		case (26) { ife9() }
4646		case (27) { ifea() }
4647		case (28) { ifeb() }
4648	}
4649	CH03(ts, z179, 0x1cb, __LINE__, 0)
4650}
4651
4652Method(mz27, 1, Serialized)
4653{
4654	Name(ts, "mz27")
4655
4656	OperationRegion(OPR0, SystemMemory, VMEM, 256)
4657
4658	Field(OPR0, ByteAcc, NoLock, Preserve) {
4659		tot0, 32,
4660		tot1, 32,
4661	}
4662
4663	Method(ifec,, Serialized)
4664	{
4665		Field(OPR0, ByteAcc, NoLock, WriteAsZeros) {
4666			idx0, 32,
4667			dta0, 32,
4668		}
4669		IndexField(idx0, dta0, DWordAcc, NoLock, WriteAsZeros) {
4670			idf0, 1, , 14, idf1, 1,
4671			idf2, 1, , 14, idf3, 1,
4672			idf4, 1, , 14, idf5, 1,
4673			idf6, 1, , 14, idf7, 1,
4674		}
4675		Method(m000, 5, Serialized)
4676		{
4677			Store(0xffffffff, tot0)
4678			Store(arg0, tot1)
4679			switch (ToInteger (Arg1)) {
4680			case (0) {Store(1, idf0)}
4681			case (1) {Store(1, idf1)}
4682			case (2) {Store(1, idf2)}
4683			case (3) {Store(1, idf3)}
4684			case (4) {Store(1, idf4)}
4685			case (5) {Store(1, idf5)}
4686			case (6) {Store(1, idf6)}
4687			case (7) {Store(1, idf7)}
4688			}
4689			Store(tot1, Local0)
4690			Store(tot0, Local1)
4691
4692			if (LNotEqual(Local0, arg3)) {
4693				err(ts, z179, __LINE__, 0, 0, Local0, arg3)
4694			}
4695			if (LNotEqual(Local1, arg4)) {
4696				err(ts, z179, __LINE__, 0, 0, Local1, arg4)
4697			}
4698		}
4699
4700		OUTP("Check IndexField implementation: ByteAccDWordAcc, Store")
4701
4702		m000(0xffffffff, 0, 0x250, 0x00000001, 0)
4703		m000(0xffffffff, 1, 0x252, 0x00008000, 0)
4704		m000(0xffffffff, 2, 0x254, 0x00010000, 0)
4705		m000(0xffffffff, 3, 0x256, 0x80000000, 0)
4706		m000(0xffffffff, 4, 0x258, 0x00000001, 4)
4707		m000(0xffffffff, 5, 0x25a, 0x00008000, 4)
4708		m000(0xffffffff, 6, 0x25c, 0x00010000, 4)
4709		m000(0xffffffff, 7, 0x25e, 0x80000000, 4)
4710	}
4711
4712	Method(ifed,, Serialized)
4713	{
4714		Field(OPR0, ByteAcc, NoLock, WriteAsZeros) {
4715			idx0, 8,
4716			dta0, 24,
4717		}
4718		IndexField(idx0, dta0, ByteAcc, NoLock, WriteAsZeros) {
4719			, 15,
4720			idf0, 1
4721		}
4722
4723		OUTP("Check IndexField implementation: dta wider than idf Access width")
4724
4725		Store(0x3FF, idf0)
4726
4727		Store(tot0, Local0)
4728		if (LNotEqual(Local0, 0x8001)) {
4729			err(ts, z179, __LINE__, 0, 0, Local0, 0x8001)
4730		}
4731	}
4732
4733	Method(ifee,, Serialized)
4734	{
4735		Field(OPR0, ByteAcc, NoLock, WriteAsZeros) {
4736			idx0, 8,
4737			dta0, 24,
4738		}
4739		IndexField(idx0, dta0, ByteAcc, NoLock, WriteAsZeros) {
4740			, 7,
4741			idf0, 1
4742		}
4743
4744		OUTP("Check IndexField implementation: dta wider than idf Access width 2")
4745
4746		Store(0xFF, idf0)
4747
4748		Store(tot0, Local0)
4749		if (LNotEqual(Local0, 0x8000)) {
4750			err(ts, z179, __LINE__, 0, 0, Local0, 0x8000)
4751		}
4752	}
4753
4754	Method(ifef,, Serialized)
4755	{
4756		Field(OPR0, ByteAcc, NoLock, WriteAsZeros) {
4757			idx1, 8,
4758			dta1, 8,
4759		}
4760
4761		IndexField(idx1, dta1, ByteAcc, NoLock, WriteAsZeros) {
4762			, 2,
4763			re10, 6,
4764			, 3,
4765			re11, 5,
4766			, 4,
4767			re12, 4,
4768			, 5,
4769			re13, 3,
4770		}
4771
4772		Method(TRY0, 3, Serialized)
4773		{
4774			Store(Zero, tot0)
4775			switch (ToInteger (Arg0)) {
4776			Case (0) {Store(Ones, ^re10)}
4777			Case (1) {Store(Ones, ^re11)}
4778			Case (2) {Store(Ones, ^re12)}
4779			Case (3) {Store(Ones, ^re13)}
4780			}
4781
4782			Store(idx1, Local0)
4783			Store(dta1, Local1)
4784
4785			Multiply(arg0, 2, Local2)
4786			if (LNotEqual(Local0, arg1)) {
4787				err(ts, z179, __LINE__, 0, 0, Local0, arg1)
4788			}
4789			if (LNotEqual(Local1, arg2)) {
4790				err(ts, z179, __LINE__, 0, 0, Local1, arg2)
4791			}
4792		}
4793
4794		OUTP("Check IndexField ByteAcc Ones write (:2)6-(:3)5-(:4)4-(:5)3")
4795
4796		TRY0(0, 0, 0xfc)
4797		TRY0(1, 1, 0xf8)
4798		TRY0(2, 2, 0xf0)
4799		TRY0(3, 3, 0xe0)
4800	}
4801
4802	CH03(ts, z179, 0x1cc, __LINE__, 0)
4803	switch (ToInteger (Arg0)) {
4804		case (0) {
4805			ifec()
4806			ifed()
4807			ifee()
4808			ifef()
4809		}
4810		case (29) { ifec() }
4811		case (30) { ifed() }
4812		case (31) { ifee() }
4813		case (32) { ifef() }
4814	}
4815	CH03(ts, z179, 0x1cd, __LINE__, 0)
4816}
4817
4818/* Methods to run manually (for ABBU only) */
4819Method(aifd) { IIN0() ms27(1) Return(POUT) }
4820Method(bifd) { IIN0() ms27(2) Return(POUT) }
4821Method(cifd) { IIN0() ms27(3) Return(POUT) }
4822Method(difd) { IIN0() ms27(4) Return(POUT) }
4823Method(sifd) { IIN0() ms27(0) Return(POUT) }
4824Method(eifd) { IIN0() mt27(5) Return(POUT) }
4825Method(fifd) { IIN0() mt27(6) Return(POUT) }
4826Method(gifd) { IIN0() mt27(7) Return(POUT) }
4827Method(hifd) { IIN0() mt27(8) Return(POUT) }
4828Method(tifd) { IIN0() mt27(0) Return(POUT) }
4829Method(iifd) { IIN0() mu27(9) Return(POUT) }
4830Method(jifd) { IIN0() mu27(10) Return(POUT) }
4831Method(kifd) { IIN0() mu27(11) Return(POUT) }
4832Method(lifd) { IIN0() mu27(12) Return(POUT) }
4833Method(uifd) { IIN0() mu27(0) Return(POUT) }
4834Method(mifd) { IIN0() mv27(13) Return(POUT) }
4835Method(nifd) { IIN0() mv27(14) Return(POUT) }
4836Method(oifd) { IIN0() mv27(15) Return(POUT) }
4837Method(pifd) { IIN0() mv27(16) Return(POUT) }
4838Method(vifd) { IIN0() mv27(0) Return(POUT) }
4839Method(aife) { IIN0() mw27(17) Return(POUT) }
4840Method(bife) { IIN0() mw27(18) Return(POUT) }
4841Method(cife) { IIN0() mw27(19) Return(POUT) }
4842Method(dife) { IIN0() mw27(20) Return(POUT) }
4843Method(wife) { IIN0() mw27(0) Return(POUT) }
4844Method(eife) { IIN0() mx27(21) Return(POUT) }
4845Method(fife) { IIN0() mx27(22) Return(POUT) }
4846Method(gife) { IIN0() mx27(23) Return(POUT) }
4847Method(hife) { IIN0() mx27(24) Return(POUT) }
4848Method(xife) { IIN0() mx27(0) Return(POUT) }
4849Method(iife) { IIN0() my27(25) Return(POUT) }
4850Method(jife) { IIN0() my27(26) Return(POUT) }
4851Method(kife) { IIN0() my27(27) Return(POUT) }
4852Method(life) { IIN0() my27(28) Return(POUT) }
4853Method(yife) { IIN0() my27(0) Return(POUT) }
4854Method(mife) { IIN0() mz27(29) Return(POUT) }
4855Method(nife) { IIN0() mz27(30) Return(POUT) }
4856Method(oife) { IIN0() mz27(31) Return(POUT) }
4857Method(pife) { IIN0() mz27(32) Return(POUT) }
4858Method(zife) { IIN0() mz27(0) Return(POUT) }
4859
4860/*
4861 * Hot issue:
4862 *
4863 * Check BankField implementation
4864 */
4865Method(ms28,, Serialized)
4866{
4867	Name(ts, "ms28")
4868
4869	OperationRegion(OPR0, SystemMemory, 0, 256)
4870
4871	Field(OPR0, ByteAcc, NoLock, Preserve) {
4872		tot0, 32,
4873		tot1, 32,
4874	}
4875
4876	Method(bfd0,, Serialized)
4877	{
4878		Field (OPR0, ByteAcc, NoLock, Preserve) {
4879			bnk0, 8
4880		}
4881		Field (OPR0, ByteAcc, NoLock, Preserve) {
4882			tot0, 80
4883		}
4884
4885		BankField (OPR0, bnk0, 0, ByteAcc, NoLock, Preserve) {
4886			Offset(8),
4887			bf00, 8,
4888		}
4889
4890		BankField (OPR0, bnk0, 1, ByteAcc, NoLock, Preserve) {
4891			Offset(9),
4892			bf01, 8,
4893		}
4894
4895		OUTP("Check BankField implementation")
4896
4897		// Deal with 0-th bank layout:
4898
4899		Store(0, bnk0)
4900		if (LNotEqual(bnk0, 0)) {
4901			err(ts, z179, __LINE__, 0, 0, bnk0, 0)
4902		}
4903
4904		Store(0x87, bf00)
4905		if (LNotEqual(bnk0, 0)) {
4906			err(ts, z179, __LINE__, 0, 0, bnk0, 0)
4907		}
4908
4909		if (LNotEqual(bf00, 0x87)) {
4910			err(ts, z179, __LINE__, 0, 0, bf00, 0x87)
4911		}
4912
4913		// Deal with 1-th bank layout:
4914
4915		Store(1, bnk0)
4916		if (LNotEqual(bnk0, 1)) {
4917			err(ts, z179, __LINE__, 0, 0, bnk0, 1)
4918		}
4919
4920		Store(0x96, bf01)
4921
4922		if (LNotEqual(bnk0, 1)) {
4923			err(ts, z179, __LINE__, 0, 0, bnk0, 1)
4924		}
4925
4926		if (LNotEqual(bf01, 0x96)) {
4927			err(ts, z179, __LINE__, 0, 0, bf01, 0x96)
4928		}
4929	}
4930
4931	CH03(ts, z179, 0x276, __LINE__, 0)
4932	bfd0()
4933	CH03(ts, z179, 0x277, __LINE__, 0)
4934}
4935
4936/* Methods to run manually (for ABBU only) */
4937Method(abfd) { IIN0() ms28() Return(POUT) }
4938
4939Mutex (C152, 0)
4940Mutex (C153, 0)
4941Mutex (C154, 0)
4942Mutex (C155, 0)
4943Mutex (C156, 0)
4944Mutex (C159, 0)
4945
4946/*
4947 * Hot issue:
4948 *
4949 * Check Acquire/Release
4950 */
4951Method(ms29, 1, Serialized)
4952{
4953	Name(ts, "ms29")
4954
4955	Method (C157, 1, NotSerialized)
4956	{
4957		if (arg0) {
4958			Store(Acquire (C154, 0xFFFF), Local0)
4959		} else {
4960			Store(Acquire (C154, 0), Local0)
4961		}
4962		Return (Local0)
4963	}
4964
4965	Method (C158, 0, NotSerialized)
4966	{
4967		Release (C154)
4968	}
4969
4970	Method (C160, 0, NotSerialized)
4971	{
4972		Release (C152)
4973	}
4974
4975	Method(mut0)
4976	{
4977		OUTP("Check Release by different ASL Methods")
4978		C160()
4979		CH04(ts, 0, 0xff, z179, __LINE__, 0, 0)
4980	}
4981
4982	Method(mut1)
4983	{
4984		OUTP("Check Acquire/Release by different ASL Methods")
4985
4986		OUTP("Acquire")
4987		Store(C157(1), Local0)
4988
4989		if (LNotEqual(Local0, 0)) {
4990			err(ts, z179, __LINE__, 0, 0, Local0, 0)
4991		}
4992
4993		OUTP("Release")
4994		C158()
4995	}
4996
4997	Method(mut2)
4998	{
4999		OUTP("Check Acquire/Acquire by the different Method's calls")
5000
5001		OUTP("Acquire 1")
5002		Store(C157(1), Local0)
5003
5004		if (LNotEqual(Local0, 0)) {
5005			err(ts, z179, __LINE__, 0, 0, Local0, 0)
5006		}
5007
5008		OUTP("Acquire 2")
5009		Store(C157(1), Local0)
5010
5011		if (LNotEqual(Local0, 0)) {
5012			err(ts, z179, __LINE__, 0, 0, Local0, 0)
5013		}
5014	}
5015
5016	Method(mut3)
5017	{
5018		OUTP("Check Acquire/Acquire in one Method")
5019
5020		OUTP("Acquire 1")
5021        Store(Acquire (C155, 0xFFFF), Local0)
5022
5023		if (LNotEqual(Local0, 0)) {
5024			err(ts, z179, __LINE__, 0, 0, Local0, 0)
5025		}
5026
5027		OUTP("Acquire 2")
5028        Store(Acquire (C155, 0xFFFF), Local0)
5029
5030
5031		if (LNotEqual(Local0, 0)) {
5032			err(ts, z179, __LINE__, 0, 0, Local0, 0)
5033		}
5034	}
5035
5036	Method(mut4)
5037	{
5038		OUTP("Check Acquire/Release/Release by different ASL Methods")
5039
5040		OUTP("Acquire")
5041		Store(C157(1), Local0)
5042
5043		if (LNotEqual(Local0, 0)) {
5044			err(ts, z179, __LINE__, 0, 0, Local0, 0)
5045		}
5046
5047		OUTP("Release 1")
5048		C158()
5049
5050		OUTP("Release 2")
5051		C158()
5052
5053		CH04(ts, 0, 0xff, z179, __LINE__, 0, 0)
5054	}
5055
5056	Method(mut5)
5057	{
5058		OUTP("Check Acquire(,0xFFFF)/Acquire(,0) in one Method")
5059
5060		OUTP("Acquire( , 0xFFFF) 1")
5061        Store(Acquire (C156, 0xFFFF), Local0)
5062
5063		if (LNotEqual(Local0, 0)) {
5064			err(ts, z179, __LINE__, 0, 0, Local0, 0)
5065		}
5066
5067		OUTP("Acquire( , 0) 2")
5068        Store(Acquire (C156, 0), Local0)
5069
5070		if (LNotEqual(Local0, 0)) {
5071			err(ts, z179, __LINE__, 0, 0, Local0, 0)
5072		}
5073	}
5074
5075	Method(mut6)
5076	{
5077		OUTP("Check Acquire2/Release2 in one Method")
5078
5079		OUTP("Acquire 1")
5080        Store(Acquire (C153, 0xFFFF), Local0)
5081
5082		if (LNotEqual(Local0, 0)) {
5083			err(ts, z179, __LINE__, 0, 0, Local0, 0)
5084		}
5085
5086		OUTP("Acquire 2")
5087        Store(Acquire (C153, 0xFFFF), Local0)
5088
5089
5090		if (LNotEqual(Local0, 0)) {
5091			err(ts, z179, __LINE__, 0, 0, Local0, 0)
5092		}
5093
5094		OUTP("Release 1")
5095		Release (C153)
5096
5097		OUTP("Release 2")
5098		Release (C153)
5099	}
5100
5101	Method(mut7)
5102	{
5103		OUTP("Check Acquire2/Release3 in one Method")
5104
5105		OUTP("Acquire 1")
5106        Store(Acquire (C159, 0xFFFF), Local0)
5107
5108		if (LNotEqual(Local0, 0)) {
5109			err(ts, z179, __LINE__, 0, 0, Local0, 0)
5110		}
5111
5112		OUTP("Acquire 2")
5113        Store(Acquire (C159, 0xFFFF), Local0)
5114
5115
5116		if (LNotEqual(Local0, 0)) {
5117			err(ts, z179, __LINE__, 0, 0, Local0, 0)
5118		}
5119
5120		OUTP("Release 1")
5121		Release (C159)
5122
5123		OUTP("Release 2")
5124		Release (C159)
5125
5126		OUTP("Release 3")
5127		Release (C159)
5128		CH04(ts, 0, 0xff, z179, __LINE__, 0, 0)
5129	}
5130
5131	Method(mut8)
5132	{
5133		OUTP("Check Acquire2/Release2 in one Method")
5134
5135		OUTP("Acquire 1")
5136        Store(Acquire (C153, 0xFFFF), Local0)
5137
5138		if (LNotEqual(Local0, 0)) {
5139			err(ts, z179, __LINE__, 0, 0, Local0, 0)
5140		}
5141
5142		OUTP("Acquire 2")
5143        Store(Acquire (C153, 0xFFFF), Local0)
5144
5145
5146		if (LNotEqual(Local0, 0)) {
5147			err(ts, z179, __LINE__, 0, 0, Local0, 0)
5148		}
5149
5150		OUTP("Release 1")
5151		Release (C153)
5152
5153		OUTP("Release 2")
5154		Release (C153)
5155	}
5156
5157	Method(mut9,, Serialized)
5158	{
5159		Mutex (C159, 0)
5160
5161		OUTP("Check Acquire2/Release2 in one Method for dynamic Mutex")
5162
5163		OUTP("Acquire 1")
5164        Store(Acquire (C159, 0xFFFF), Local0)
5165
5166		if (LNotEqual(Local0, 0)) {
5167			err(ts, z179, __LINE__, 0, 0, Local0, 0)
5168		}
5169
5170		OUTP("Acquire 2")
5171        Store(Acquire (C159, 0xFFFF), Local0)
5172
5173
5174		if (LNotEqual(Local0, 0)) {
5175			err(ts, z179, __LINE__, 0, 0, Local0, 0)
5176		}
5177
5178		OUTP("Release 1")
5179		Release (C159)
5180
5181		OUTP("Release 2")
5182		Release (C159)
5183
5184		OUTP("Release 3")
5185		Release (C159)
5186		CH04(ts, 0, 0xff, z179, __LINE__, 0, 0)
5187	}
5188
5189	Method(m000)
5190	{
5191		if (ABUU) {
5192		} else {
5193			mut0()
5194		}
5195
5196		mut1()
5197
5198		if (ABUU) {
5199		} else {
5200			mut3()
5201		}
5202
5203		if (ABUU) {
5204		} else {
5205			mut4()
5206		}
5207
5208		mut5()
5209		mut6()
5210
5211		if (ABUU) {
5212		} else {
5213			mut7()
5214		}
5215
5216		mut8()
5217
5218		if (ABUU) {
5219		} else {
5220			mut9()
5221		}
5222	}
5223
5224	CH03(ts, z179, 0x292, __LINE__, 0)
5225	switch (ToInteger (Arg0)) {
5226		case (0) { m000() }
5227		case (1) { mut0() }
5228		case (2) { mut1() }
5229		case (3) { mut2() }
5230		case (4) { mut3() }
5231		case (5) { mut4() }
5232		case (6) { mut5() }
5233		case (7) { mut6() }
5234		case (8) { mut7() }
5235		case (9) { mut8() }
5236		case (10) { mut9() }
5237	}
5238	CH03(ts, z179, 0x293, __LINE__, 0)
5239}
5240
5241/* Methods to run manually (for ABBU only) */
5242Method(amut) { IIN0() ms29(1) Return(POUT) }
5243Method(bmut) { IIN0() ms29(2) Return(POUT) }
5244Method(cmut) { IIN0() ms29(3) Return(POUT) }
5245Method(dmut) { IIN0() ms29(4) Return(POUT) }
5246Method(emut) { IIN0() ms29(5) Return(POUT) }
5247Method(fmut) { IIN0() ms29(6) Return(POUT) }
5248Method(gmut) { IIN0() ms29(7) Return(POUT) }
5249Method(hmut) { IIN0() ms29(8) Return(POUT) }
5250Method(imut) { IIN0() ms29(9) Return(POUT) }
5251Method(jmut) { IIN0() ms29(10) Return(POUT) }
5252Method(kmut) { IIN0() ms29(0) Return(POUT) }
5253
5254// LEqual implementation for Buffers to use on MS
5255Method(BCMP, 2)
5256{
5257	if (ABUU) {
5258		Store(Sizeof(Arg0), Local0)
5259
5260		if (LNotEqual(Local0, Sizeof(Arg1))) {
5261			return (0)
5262		}
5263
5264		Store(Sizeof(Arg0), Local0)
5265
5266		while(Local0) {
5267			Decrement(Local0)
5268			Store(Derefof(Index(Arg0, Local0)), Local1)
5269			Store(Derefof(Index(Arg1, Local0)), Local2)
5270			if (LNotEqual(Local1, Local2)) {
5271				return (0)
5272			}
5273		}
5274		return (1)
5275	} else {
5276		return (LEqual(arg0, arg1))
5277	}
5278}
5279
5280/*
5281 * Hot issue:
5282 *
5283 * Check ToBuffer optional store (Bug 194)
5284 */
5285Method(ms2a, 1, Serialized)
5286{
5287	Name(ts, "ms2a")
5288	Name(F64, 0)
5289
5290	Method(tob0)
5291	{
5292
5293		Method(m000, 1, Serialized)
5294		{
5295			Name(b000, Buffer(1){0x3c})
5296			Name(b001, Buffer(3){0x01, 0x02, 0x03})
5297
5298			if (arg0) {
5299				OUTP("ToBuffer(b001, b000)")
5300				ToBuffer(b001, b000)
5301			} else {
5302				OUTP("ToBuffer(b000, b001)")
5303				ToBuffer(b000, b001)
5304			}
5305
5306			if (LNot(BCMP(b000, b001))) {
5307				err(ts, z179, __LINE__, 0, 0, b000, b001)
5308			}
5309		}
5310
5311		OUTP("Check ToBuffer optional store behaves like CopyObject")
5312
5313		m000(0)
5314		m000(1)
5315	}
5316
5317	Method(tob1)
5318	{
5319		OUTP("Check ToBuffer(0x456789ab)")
5320		Store(ToBuffer(0x456789ab), Local0)
5321		if (F64) {
5322			Store(Buffer(8){0xab, 0x89, 0x67, 0x45}, Local1)
5323		} else {
5324			Store(Buffer(4){0xab, 0x89, 0x67, 0x45}, Local1)
5325		}
5326		if (LNot(BCMP(Local1, Local0))) {
5327			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
5328		}
5329	}
5330
5331	Method(tob2)
5332	{
5333		OUTP("Check ToBuffer(\"456789ab\")")
5334		Store(ToBuffer("456789ab"), Local0)
5335		Store(Buffer(){"456789ab"}, Local1)
5336		if (LNot(BCMP(Local1, Local0))) {
5337			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
5338		}
5339	}
5340
5341	Method(tob3)
5342	{
5343		OUTP("Check ToBuffer(Buffer(4){0x45, 0x67, 0x89, 0xab})")
5344		Store(ToBuffer(Buffer(4){0x45, 0x67, 0x89, 0xab}), Local0)
5345		Store(Buffer(4){0x45, 0x67, 0x89, 0xab}, Local1)
5346		if (LNot(BCMP(Local1, Local0))) {
5347			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
5348		}
5349	}
5350
5351	Method(tob4)
5352	{
5353		OUTP("Check ToBuffer(0x456789ab, Local0)")
5354		ToBuffer(0x456789ab, Local0)
5355		if (F64) {
5356			Store(Buffer(8){0xab, 0x89, 0x67, 0x45}, Local1)
5357		} else {
5358			Store(Buffer(4){0xab, 0x89, 0x67, 0x45}, Local1)
5359		}
5360		if (LNot(BCMP(Local1, Local0))) {
5361			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
5362		}
5363	}
5364
5365	Method(tob5)
5366	{
5367		OUTP("Check ToBuffer(\"456789ab\", Local0)")
5368		ToBuffer("456789ab", Local0)
5369		Store(Buffer(){"456789ab"}, Local1)
5370		if (LNot(BCMP(Local1, Local0))) {
5371			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
5372		}
5373	}
5374
5375	Method(tob6)
5376	{
5377		OUTP("Check ToBuffer(Buffer(4){0x45, 0x67, 0x89, 0xab}, Local0)")
5378		ToBuffer(Buffer(4){0x45, 0x67, 0x89, 0xab}, Local0)
5379		Store(Buffer(4){0x45, 0x67, 0x89, 0xab}, Local1)
5380		if (LNot(BCMP(Local1, Local0))) {
5381			err(ts, z179, __LINE__, 0, 0, Local0, Local1)
5382		}
5383	}
5384
5385	Method(tob7,, Serialized)
5386	{
5387		Name(i000, 0)
5388
5389		OUTP("Check ToBuffer(0x456789ab, i000)")
5390		ToBuffer(0x456789ab, i000)
5391		if (F64) {
5392			Store(Buffer(8){0xab, 0x89, 0x67, 0x45}, Local1)
5393		} else {
5394			Store(Buffer(4){0xab, 0x89, 0x67, 0x45}, Local1)
5395		}
5396		Store(ObjectType(i000), Local2)
5397		if (LNotEqual(Local2, 3)) {
5398			err(ts, z179, __LINE__, 0, 0, Local2, 3)
5399		} elseif (LNot(BCMP(Local1, i000))) {
5400			err(ts, z179, __LINE__, 0, 0, i000, Local1)
5401		}
5402	}
5403
5404	Method(tob8,, Serialized)
5405	{
5406		Name(s000, "s000")
5407
5408		OUTP("Check ToBuffer(\"456789ab\", s000)")
5409		ToBuffer("456789ab", s000)
5410		Store(Buffer(){"456789ab"}, Local1)
5411		Store(ObjectType(s000), Local2)
5412		if (LNotEqual(Local2, 3)) {
5413			err(ts, z179, __LINE__, 0, 0, Local2, 3)
5414		} elseif (LNot(BCMP(Local1, s000))) {
5415			err(ts, z179, __LINE__, 0, 0, s000, Local1)
5416		}
5417	}
5418
5419	Method(tob9,, Serialized)
5420	{
5421		Name(b000, Buffer(2){})
5422
5423		OUTP("Check ToBuffer(Buffer(4){0x45, 0x67, 0x89, 0xab}, b000)")
5424		ToBuffer(Buffer(4){0x45, 0x67, 0x89, 0xab}, b000)
5425		Store(Buffer(4){0x45, 0x67, 0x89, 0xab}, Local1)
5426		Store(ObjectType(b000), Local2)
5427		if (LNotEqual(Local2, 3)) {
5428			err(ts, z179, __LINE__, 0, 0, Local2, 3)
5429		} elseif (LNot(BCMP(Local1, b000))) {
5430			err(ts, z179, __LINE__, 0, 0, b000, Local1)
5431		}
5432	}
5433
5434	Method(toba)
5435	{
5436
5437		Method(m000, 1, Serialized)
5438		{
5439			Name(b000, Buffer(1){0x3c})
5440			Name(b001, Buffer(3){0x01, 0x02, 0x03})
5441
5442			if (arg0) {
5443				OUTP("Store(b001, b000)")
5444				Store(b001, b000)
5445
5446				Store(Buffer(1){0x01}, Local0)
5447				if (LNot(BCMP(b000, Local0))) {
5448					err(ts, z179, __LINE__, 0, 0, b000, Local0)
5449				}
5450			} else {
5451				OUTP("Store(b000, b001)")
5452				Store(b000, b001)
5453
5454				Store(Buffer(3){0x3c}, Local0)
5455				if (LNot(BCMP(b001, Local0))) {
5456					err(ts, z179, __LINE__, 0, 0, b001, Local0)
5457				}
5458			}
5459		}
5460
5461		OUTP("Check if Store fails the same way as ToBuffer optional store")
5462
5463		m000(0)
5464		m000(1)
5465	}
5466
5467	Method(m000)
5468	{
5469		if (ABUU) {
5470		} else {
5471			tob0()
5472			tob1()
5473			tob2()
5474			tob3()
5475			tob4()
5476			tob5()
5477			tob6()
5478			tob7()
5479			tob8()
5480			tob9()
5481		}
5482
5483		toba()
5484	}
5485
5486	if (ABUU) {
5487	} elseif (LEqual(SizeOf(F64), 8)) {
5488		Store (1, F64)
5489	}
5490
5491	CH03(ts, z179, 0x2a4, __LINE__, 0)
5492	switch (ToInteger (Arg0)) {
5493		case (0) { m000() }
5494		case (1) { tob0() }
5495		case (2) { tob1() }
5496		case (3) { tob2() }
5497		case (4) { tob3() }
5498		case (5) { tob4() }
5499		case (6) { tob5() }
5500		case (7) { tob6() }
5501		case (8) { tob7() }
5502		case (9) { tob8() }
5503		case (10) { tob9() }
5504		case (11) { toba() }
5505	}
5506	CH03(ts, z179, 0x2a5, __LINE__, 0)
5507}
5508
5509/* Methods to run manually (for ABBU only) */
5510Method(atob) { IIN0() ms2a(1) Return(POUT) }
5511Method(btob) { IIN0() ms2a(2) Return(POUT) }
5512Method(ctob) { IIN0() ms2a(3) Return(POUT) }
5513Method(dtob) { IIN0() ms2a(4) Return(POUT) }
5514Method(etob) { IIN0() ms2a(5) Return(POUT) }
5515Method(ftob) { IIN0() ms2a(6) Return(POUT) }
5516Method(gtob) { IIN0() ms2a(7) Return(POUT) }
5517Method(htob) { IIN0() ms2a(8) Return(POUT) }
5518Method(itob) { IIN0() ms2a(9) Return(POUT) }
5519Method(jtob) { IIN0() ms2a(10) Return(POUT) }
5520Method(ktob) { IIN0() ms2a(11) Return(POUT) }
5521
5522/*
5523 * Hot issue:
5524 *
5525 * Check Package size calculation
5526 */
5527Method(ms2b, 1, Serialized)
5528{
5529	Name(ts, "ms2b")
5530
5531	Method(pac0,, Serialized)
5532	{
5533		Name(p000, Package(5){1, 2, 3})
5534
5535		OUTP("Check if Package list < explicit size the last is in use")
5536
5537		Store(SizeOf(p000), Local0)
5538		if (LNotEqual(Local0, 5)) {
5539			err(ts, z179, __LINE__, 0, 0, Local0, 5)
5540		}
5541	}
5542
5543	Method(pac1,, Serialized)
5544	{
5545		Name(p000, Package(5){1, 2, 3})
5546
5547		OUTP("Check if Package list < explicit size there are undef elements")
5548
5549		Store(ObjectType(Index(p000, 2)), Local0)
5550		if (Local0) {
5551		} else {
5552			err(ts, z179, __LINE__, 0, 0, Local0, 1)
5553		}
5554
5555		Store(ObjectType(Index(p000, 3)), Local0)
5556		if (Local0) {
5557			err(ts, z179, __LINE__, 0, 0, Local0, 0)
5558		}
5559	}
5560
5561	// This test actually should be used with Package(3){1, 2, 3, 4, 5})
5562	// declaration, but iASL reports "Initializer list too long" error.
5563	// Uncomment, set 'fopt' below to 1 and use it with -f iASL option
5564	Method(pac2,, Serialized)
5565	{
5566		Name(fopt, 0)
5567//		Name(p000, Package(3){1, 2, 3, 4, 5})
5568		Name(p000, Package(3){1, 2, 3})
5569
5570		OUTP("Check if Package list > explicit size the former is in use")
5571
5572		if (fopt) {
5573			Store(SizeOf(p000), Local0)
5574		} else {
5575			Store(5, Local0)
5576		}
5577		if (LNotEqual(Local0, 5)) {
5578			err(ts, z179, __LINE__, 0, 0, Local0, 5)
5579		}
5580	}
5581
5582	CH03(ts, z179, 0x2ab, __LINE__, 0)
5583	switch (ToInteger (Arg0)) {
5584		case (0) { pac0() pac1() pac2() }
5585		case (1) { pac0() }
5586		case (2) { pac1() }
5587		case (3) { pac2() }
5588	}
5589	CH03(ts, z179, 0x2ac, __LINE__, 0)
5590}
5591
5592/* Methods to run manually (for ABBU only) */
5593Method(apac) { IIN0() ms2b(1) Return(POUT) }
5594Method(bpac) { IIN0() ms2b(2) Return(POUT) }
5595Method(cpac) { IIN0() ms2b(3) Return(POUT) }
5596
5597/*
5598 * Hot issue:
5599 *
5600 * Check Switch implementation
5601 *
5602 * isw0 test should expectedly fail
5603 */
5604Method(ms2c, 1, Serialized)
5605{
5606	Name(ts, "ms2c")
5607
5608	Method(sw00, 0, Serialized)
5609	{
5610		Method(m000, 1, Serialized)
5611		{
5612			Store(0, Local1)
5613
5614			switch (ToInteger (Arg0)) {
5615				case (1) { Store(1, Local1) }
5616				case (2) { Store(2, Local1) }
5617			}
5618
5619			return (Local1)
5620		}
5621
5622		OUTP("Check Switch implementation 0: standalone")
5623
5624		Store(2, Local0)
5625		Store(0, Local1)
5626
5627		switch (ToInteger (Local0)) {
5628			case (1) { Store(1, Local1) }
5629			case (2) { Store(2, Local1) }
5630		}
5631
5632		if (LNotEqual(Local1, 2)) {
5633			err(ts, z179, __LINE__, 0, 0, Local1, 2)
5634		}
5635
5636		Store(m000(1), Local1)
5637
5638		if (LNotEqual(Local1, 1)) {
5639			err(ts, z179, __LINE__, 0, 0, Local1, 1)
5640		}
5641	}
5642
5643	Method(sw01)
5644	{
5645		OUTP("Check While implementation 1: standalone")
5646
5647		Store(2, Local0)
5648		Store(0, Local1)
5649
5650		while (Local0) {
5651			if (LEqual(Local0, 1)) {
5652				Increment(Local1)
5653			} else {
5654				Increment(Local1)
5655			}
5656			Decrement(Local0)
5657		}
5658		if (LNotEqual(Local1, 2)) {
5659			err(ts, z179, __LINE__, 0, 0, Local1, 2)
5660		}
5661	}
5662
5663	Method(sw02, 0, Serialized)
5664	{
5665		OUTP("Check Switch implementation 2: inside While (1 step)")
5666
5667		Store(1, Local0)
5668		Store(0, Local1)
5669		Store(0, Local2)
5670
5671		while (Local0) {
5672			switch (ToInteger (Local0)) {
5673				case (1) { Increment(Local1) }
5674				case (2) { Increment(Local2) }
5675			}
5676			Decrement(Local0)
5677		}
5678		if (LNotEqual(Local1, 1)) {
5679			err(ts, z179, __LINE__, 0, 0, Local1, 1)
5680		}
5681		if (LNotEqual(Local2, 0)) {
5682			err(ts, z179, __LINE__, 0, 0, Local2, 0)
5683		}
5684	}
5685
5686	Method(sw03, 0, Serialized)
5687	{
5688		OUTP("Check Switch implementation 3: inside While (2 steps)")
5689
5690		Store(2, Local0)
5691		Store(0, Local1)
5692		Store(0, Local2)
5693
5694		while (Local0) {
5695			switch (ToInteger (Local0)) {
5696				case (1) { Increment(Local1) }
5697				case (2) { Increment(Local2) }
5698			}
5699			Decrement(Local0)
5700		}
5701		if (LNotEqual(Local1, 1)) {
5702			err(ts, z179, __LINE__, 0, 0, Local1, 1)
5703		}
5704		if (LNotEqual(Local2, 1)) {
5705			err(ts, z179, __LINE__, 0, 0, Local2, 1)
5706		}
5707	}
5708
5709	Method(sw04, 0, Serialized)
5710	{
5711		OUTP("Check Switch implementation 4: inside While 2, 2 Breaks")
5712
5713		Store(2, Local0)
5714		Store(0, Local1)
5715		Store(0, Local2)
5716
5717		while (Local0) {
5718			switch (ToInteger (Local0)) {
5719				case (1) {
5720				 Increment(Local1)
5721				 Break
5722				}
5723				case (2) {
5724				 Increment(Local2)
5725				 Break
5726				}
5727			}
5728			Decrement(Local0)
5729		}
5730		if (LNotEqual(Local0, 0)) {
5731			err(ts, z179, __LINE__, 0, 0, Local0, 0)
5732		}
5733		if (LNotEqual(Local1, 1)) {
5734			err(ts, z179, __LINE__, 0, 0, Local1, 1)
5735		}
5736		if (LNotEqual(Local2, 1)) {
5737			err(ts, z179, __LINE__, 0, 0, Local2, 1)
5738		}
5739	}
5740
5741	Method(sw05, 0, Serialized)
5742	{
5743		OUTP("Check Switch implementation 5: inside While 1, 2 Breaks")
5744
5745		Store(1, Local0)
5746		Store(0, Local1)
5747		Store(0, Local2)
5748
5749		while (Local0) {
5750			switch (ToInteger (Local0)) {
5751				case (1) {
5752				 Increment(Local1)
5753				 Break
5754				}
5755				case (2) {
5756				 Increment(Local2)
5757				 Break
5758				}
5759			}
5760			Decrement(Local0)
5761		}
5762		if (LNotEqual(Local0, 0)) {
5763			err(ts, z179, __LINE__, 0, 0, Local0, 0)
5764		}
5765		if (LNotEqual(Local1, 1)) {
5766			err(ts, z179, __LINE__, 0, 0, Local1, 1)
5767		}
5768		if (LNotEqual(Local2, 0)) {
5769			err(ts, z179, __LINE__, 0, 0, Local2, 0)
5770		}
5771	}
5772
5773
5774	Method(sw06, 0, Serialized)
5775	{
5776		OUTP("Check Switch implementation 6: inside While 2, 1 Break")
5777
5778		Store(2, Local0)
5779		Store(0, Local1)
5780		Store(0, Local2)
5781
5782		while (Local0) {
5783			switch (ToInteger (Local0)) {
5784				case (1) {
5785				 Increment(Local1)
5786				}
5787				case (2) {
5788				 Increment(Local2)
5789				 Break
5790				}
5791			}
5792			Decrement(Local0)
5793		}
5794		if (LNotEqual(Local0, 0)) {
5795			err(ts, z179, __LINE__, 0, 0, Local0, 0)
5796		}
5797		if (LNotEqual(Local1, 1)) {
5798			err(ts, z179, __LINE__, 0, 0, Local1, 1)
5799		}
5800		if (LNotEqual(Local2, 1)) {
5801			err(ts, z179, __LINE__, 0, 0, Local2, 1)
5802		}
5803	}
5804
5805	Method(sw07,, Serialized)
5806	{
5807		OUTP("Check While implementation 7: Name inside, 1 step")
5808
5809		Store(1, Local0)
5810		Store(0, Local1)
5811
5812		Name(WHIN, Ones)
5813
5814		while (Local0) {
5815			if (Local1) {
5816				CH04(ts, 0, 0xff, z179, __LINE__, 0, 0)
5817			} else {
5818				CH03(ts, z179, 0x2be, __LINE__, 0)
5819			}
5820			Store(Local1, WHIN)
5821			Decrement(Local0)
5822			Increment(Local1)
5823		}
5824	}
5825
5826	Method(sw08,, Serialized)
5827	{
5828		OUTP("Check While implementation 8: Name inside, 2 steps")
5829
5830		Store(2, Local0)
5831		Store(0, Local1)
5832
5833		Name(WHIN, Ones)
5834
5835		while (Local0) {
5836			if (LGreater(Local1, 2)) {
5837				CH04(ts, 0, 0xff, z179, __LINE__, 0, 0)
5838			} else {
5839				CH03(ts, z179, 0x2c0, __LINE__, 0)
5840			}
5841			Store(Local1, WHIN)
5842			Decrement(Local0)
5843			Increment(Local1)
5844		}
5845	}
5846
5847	Method(m000)
5848	{
5849		sw00()
5850		sw01()
5851		sw02()
5852		sw03()
5853
5854		if (LAnd(ABUU, LNot(q00a))) {
5855		} else {
5856			sw04()
5857			sw05()
5858			sw06()
5859		}
5860
5861		sw07()
5862
5863		if (ABUU) {
5864		} else {
5865			sw08()
5866		}
5867	}
5868
5869	CH03(ts, z179, 0x2c1, __LINE__, 0)
5870	switch (ToInteger (Arg0)) {
5871		case (0) { m000() }
5872		case (1) { sw00() }
5873		case (2) { sw01() }
5874		case (3) { sw02() }
5875		case (4) { sw03() }
5876		case (5) { sw04() }
5877		case (6) { sw05() }
5878		case (7) { sw06() }
5879		case (8) { sw07() }
5880		case (9) { sw08() }
5881	}
5882	CH03(ts, z179, 0x2c2, __LINE__, 0)
5883}
5884
5885/* Methods to run manually (for ABBU only) */
5886Method(asw0) { IIN0() ms2c(1) Return(POUT) }
5887Method(bsw0) { IIN0() ms2c(2) Return(POUT) }
5888Method(csw0) { IIN0() ms2c(3) Return(POUT) }
5889Method(dsw0) { IIN0() ms2c(4) Return(POUT) }
5890Method(esw0) { IIN0() ms2c(5) Return(POUT) }
5891Method(fsw0) { IIN0() ms2c(6) Return(POUT) }
5892Method(gsw0) { IIN0() ms2c(7) Return(POUT) }
5893Method(hsw0) { IIN0() ms2c(8) Return(POUT) }
5894Method(isw0) { IIN0() ms2c(9) Return(POUT) }
5895
5896/*
5897 * Hot issue:
5898 *
5899 * Recursive method with local named
5900 *
5901 * bwac & cwac tests should expectedly fail
5902 */
5903Method(ms2d, 1, Serialized)
5904{
5905	Name(ts, "ms2d")
5906	Name(Y, 0)
5907
5908	Method (M001, 1, NotSerialized)
5909	{
5910		Name (X, Zero)
5911
5912		If (Y) {
5913			If (y300) {
5914				CH03(ts, z179, 0x3c3, __LINE__, 0)
5915			} else {
5916				CH04(ts, 0, 0xff, z179, __LINE__, 0, 0)
5917			}
5918		} else {
5919			CH03(ts, z179, 0x2c4, __LINE__, 0)
5920		}
5921
5922		Increment (Y)
5923		Increment (X)
5924
5925		Decrement (Arg0)
5926		If (LGreater (Arg0, Zero)) {
5927			M001 (Arg0)
5928		}
5929	}
5930
5931	Method(wac0)
5932	{
5933		OUTP("Recursive method with local named execution 1")
5934
5935		Store(0, Y)
5936		M001 (0x1)
5937	}
5938
5939	Method(wac1)
5940	{
5941		OUTP("Recursive method with local named execution 2")
5942
5943		Store(0, Y)
5944		M001 (0x2)
5945	}
5946
5947	Method(wac2)
5948	{
5949		OUTP("Recursive method with local named execution 4")
5950
5951		Store(0, Y)
5952		M001 (0x4)
5953	}
5954
5955	Method(m000)
5956	{
5957		wac0()
5958
5959		if (ABUU) {
5960		} else {
5961			wac1()
5962		}
5963
5964		if (ABUU) {
5965		} else {
5966			wac2()
5967		}
5968	}
5969
5970	CH03(ts, z179, 0x2c5, __LINE__, 0)
5971	switch (ToInteger (Arg0)) {
5972		case (0) { m000() }
5973		case (1) { wac0() }
5974		case (2) { wac1() }
5975		case (3) { wac2() }
5976	}
5977	CH03(ts, z179, 0x2c6, __LINE__, 0)
5978}
5979
5980/* Methods to run manually (for ABBU only) */
5981Method(awac) { IIN0() ms2d(1) Return(POUT) }
5982Method(bwac) { IIN0() ms2d(2) Return(POUT) }
5983Method(cwac) { IIN0() ms2d(3) Return(POUT) }
5984Method(dwac) { IIN0() ms2d(4) Return(POUT) }
5985
5986/*
5987 * Hot issue:
5988 *
5989 * Recursive method with local named: handmade asynchronous test:
5990 * - bzac can be called many times
5991 * - after azac any bzac should fail, but then after czac succeed again
5992 * - 3 consecutive execution of dzac in the different instances of ABBU
5993 *   should show actual behavior, on acpiexec run "thr 4 1 dzac"
5994 */
5995
5996Event(EV00)
5997
5998Method (MZAC, 1, NotSerialized)
5999{
6000	Name (X, Zero)
6001	Increment (X)
6002	OUTP(X)
6003
6004	If (LGreater (Arg0, Zero))
6005	{
6006		// Block on event
6007		Wait(EV00, 0xFFFF)
6008	}
6009}
6010
6011Method(zac0)
6012{
6013	OUTP("Method with local named execution 1: Block")
6014
6015	MZAC (0x1)
6016}
6017
6018Method(zac1)
6019{
6020	OUTP("Method with local named execution 2: Pass")
6021
6022	MZAC (0x0)
6023}
6024
6025Method(zac2)
6026{
6027	Sleep(5000)
6028
6029	OUTP("Method with local named execution 3: Signal")
6030
6031	Signal (EV00)
6032}
6033
6034Name(zacz, 5)
6035Method(zac3)
6036{
6037	Sleep(1000)
6038	Decrement(zacz)
6039
6040	if (LEqual(zacz, 4)) {zac0()}
6041	elseif (LEqual(zacz, 2)) {zac2()}
6042	else {zac1()}
6043
6044	Return (zacz)
6045}
6046
6047/* Methods to run manually (for ABBU only) */
6048Method(azac) { IIN0() zac0() Return(POUT) }
6049Method(bzac) { IIN0() zac1() Return(POUT) }
6050Method(czac) { IIN0() zac2() Return(POUT) }
6051Method(dzac) { IIN0() zac3() Return(POUT) }
6052
6053/*
6054 * Hot issue:
6055 *
6056 * Example from Bob,
6057 * Buffer is not shortened on storing short string
6058 */
6059Method(ms2e,, Serialized)
6060{
6061	Name(ts, "ms2e")
6062
6063	Name (BUF0, Buffer (12) {})
6064
6065	OUTP("Buffer is not shortened on storing short string")
6066
6067	CH03(ts, z179, 0x2c7, __LINE__, 0)
6068
6069	Store ("ABCD", BUF0)
6070
6071	Store(SizeOf (BUF0), Local0)
6072
6073	if (LNotEqual(Local0, 12)) {
6074		err(ts, z179, __LINE__, 0, 0, Local0, 12)
6075	}
6076
6077	CH03(ts, z179, 0x2c9, __LINE__, 0)
6078}
6079
6080/* Methods to run manually (for ABBU only) */
6081Method(abuf) { IIN0() ms2e() Return(POUT) }
6082
6083/*
6084 * Bug 246 issue:
6085 *
6086 * SUMMARY: Switch implementation can cause AE_ALREADY_EXISTS exception
6087 *          when Switch is within While
6088 */
6089Method(ms2f, 1, Serialized)
6090{
6091	Name(ts, "ms2f")
6092
6093	Method(B246, 0, Serialized)
6094	{
6095		Name(LN00, 2)
6096
6097		OUTP("Switch implementation can cause AE_ALREADY_EXISTS 1")
6098
6099		Store(0, Local1)
6100
6101		while (LN00) {
6102			switch (ToInteger (LN00)) {
6103				case (1) {
6104					Add(Local1, 1, Local1)
6105				}
6106				case (2) {
6107					Add(Local1, 2, Local1)
6108				}
6109			}
6110			Decrement(LN00)
6111		}
6112
6113		if (LNotEqual(Local1, 3)) {
6114			err(ts, z179, __LINE__, 0, 0, Local1, 3)
6115		}
6116	}
6117
6118	Method(U246, 0, Serialized)
6119	{
6120		Name(LN00, 1)
6121
6122		OUTP("Switch implementation can cause AE_ALREADY_EXISTS 2")
6123
6124		Store(0, Local1)
6125
6126		while (LN00) {
6127			switch (ToInteger (LN00)) {
6128				case (1) {
6129					Add(Local1, 1, Local1)
6130				}
6131				case (2) {
6132					Add(Local1, 2, Local1)
6133				}
6134			}
6135			Decrement(LN00)
6136		}
6137
6138		if (LNotEqual(Local1, 1)) {
6139			err(ts, z179, __LINE__, 0, 0, Local1, 1)
6140		}
6141	}
6142
6143	CH03(ts, z179, 0x2cc, __LINE__, 0)
6144	switch (ToInteger (Arg0)) {
6145		case (0) { b246() u246() }
6146		case (1) { b246() }
6147		case (2) { u246() }
6148	}
6149	CH03(ts, z179, 0x2cd, __LINE__, 0)
6150}
6151
6152/* Methods to run manually (for ABBU only) */
6153Method(a246) { IIN0() ms2f(1) Return(POUT) }
6154Method(b246) { IIN0() ms2f(2) Return(POUT) }
6155
6156/*
6157 * Bug 247 issue:
6158 *
6159 * SUMMARY: ASL compiler incorrectly implements Break within Switch
6160 */
6161Method(ms30,, Serialized)
6162{
6163	Name(ts, "ms30")
6164
6165	// This test actually should be used without "while (1) { ... Break}"
6166	// wrapping, but iASL reports "Initializer list too long" error.
6167	// Comment the wrappers and compile with -f iASL option.
6168	Method(B247)
6169	{
6170		Method(m000, 4, Serialized)
6171		{
6172			Name(LN00, 2)
6173			Name(CH10, 0)
6174			Name(CH11, 0)
6175			Name(CH20, 0)
6176			Name(CH21, 0)
6177
6178			OUTP(arg0)
6179
6180// Workaround for "No enclosing While statement" iASl error
6181while (1) {
6182			switch (ToInteger (arg3)) {
6183				case (1) {
6184					if (Arg1) {
6185						Store(1, CH10)
6186						Break
6187					}
6188					Store(1, CH11)
6189				}
6190				case (2) {
6191					if (Arg2) {
6192						Store(1, CH20)
6193						Break
6194					}
6195					Store(1, CH21)
6196				}
6197			}
6198Break }
6199
6200			if (LEqual(Arg3, 1)) {
6201				if (LNotEqual(CH10, Arg1)) {
6202					err(ts, z179, __LINE__, 0, 0, CH10, Arg1)
6203				}
6204				if (LEqual(CH11, Arg1)) {
6205					err(ts, z179, __LINE__, 0, 0, CH11, Arg1)
6206				}
6207			}
6208			if (LEqual(Arg3, 2)) {
6209				if (LNotEqual(CH20, Arg2)) {
6210					err(ts, z179, __LINE__, 0, 0, CH20, Arg2)
6211				}
6212				if (LEqual(CH21, Arg2)) {
6213					err(ts, z179, __LINE__, 0, 0, CH21, Arg2)
6214				}
6215			}
6216		}
6217
6218		OUTP("Switch implementation can cause AE_ALREADY_EXISTS 3")
6219
6220		m000("Break 100", 0, 0, 1)
6221		m000("Break 101", 0, 1, 1)
6222		m000("Break 110", 1, 0, 1)
6223		m000("Break 111", 1, 1, 1)
6224		m000("Break 200", 0, 0, 2)
6225		m000("Break 201", 0, 1, 2)
6226		m000("Break 210", 1, 0, 2)
6227		m000("Break 211", 1, 1, 2)
6228	}
6229
6230	CH03(ts, z179, 0x2d2, __LINE__, 0)
6231	b247()
6232	CH03(ts, z179, 0x2d3, __LINE__, 0)
6233}
6234
6235/* Methods to run manually (for ABBU only) */
6236Method(a247) { IIN0() ms30() Return(POUT) }
6237
6238/*
6239 * Hot issue:
6240 *
6241 * Load ASL operator
6242 */
6243Method(ms31, 1, Serialized)
6244{
6245	Name(ts, "ms31")
6246
6247	// Originated from table/ssdt0.asl: iasl -tc ssdt0.asl
6248	Name(BUF0, Buffer() {
6249		0x53,0x53,0x44,0x54,0x34,0x00,0x00,0x00,  /* 00000000    "SSDT4..." */
6250		0x02,0xDE,0x49,0x6E,0x74,0x65,0x6C,0x00,  /* 00000008    "..Intel." */
6251		0x4D,0x61,0x6E,0x79,0x00,0x00,0x00,0x00,  /* 00000010    "Many...." */
6252		0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
6253		0x15,0x12,0x06,0x20,0x14,0x0F,0x5C,0x53,  /* 00000020    "... ..\S" */
6254		0x53,0x30,0x30,0x00,0xA4,0x0D,0x5C,0x53,  /* 00000028    "S00...\S" */
6255		0x53,0x30,0x30,0x00,
6256	})
6257
6258	OperationRegion (IST0, SystemMemory, VMEM, 0x34)
6259
6260	Field(IST0, ByteAcc, NoLock, Preserve) {
6261		RFU0, 0x1a0,
6262	}
6263
6264	Name(DDBH, 0)
6265
6266	External(\SS00)
6267
6268	Method(m000)
6269	{
6270		OUTP("ldt0: Simple Load/Unload(Field, LocalX) test")
6271
6272		Store(BUF0, RFU0)
6273
6274		Load(RFU0, Local0)
6275		CH03(ts, z179, 0x2d4, __LINE__, 0)
6276		OUTP("SSDT loaded")
6277
6278		UnLoad(Local0)
6279		CH03(ts, z179, 0x2d5, __LINE__, 0)
6280		OUTP("SSDT unloaded")
6281	}
6282
6283	// Manual test for ABBU
6284	Method(m001)
6285	{
6286		OUTP("ldt1: Simple Load(OpRegion, LocalX) test")
6287
6288		Store(BUF0, RFU0)
6289
6290		Load(IST0, Local0)
6291		CH03(ts, z179, 0x2d6, __LINE__, 0)
6292		OUTP("SSDT loaded")
6293	}
6294
6295	Method(m002)
6296	{
6297		OUTP("ldt2: Simple Load/Unload(OpRegion, LocalX) test")
6298
6299		Store(BUF0, RFU0)
6300
6301		Load(IST0, DDBH)
6302		CH03(ts, z179, 0x2d7, __LINE__, 0)
6303		OUTP("SSDT loaded")
6304
6305		Unload(DDBH)
6306		CH03(ts, z179, 0x2d8, __LINE__, 0)
6307		OUTP("SSDT unloaded")
6308	}
6309
6310	Method(m003)
6311	{
6312		OUTP("ldt3: Simple Load/ObjectType(DDBHandle) test")
6313
6314		Store(BUF0, RFU0)
6315
6316		Load(IST0, Local0)
6317		CH03(ts, z179, 0x2d9, __LINE__, 0)
6318		OUTP("SSDT loaded")
6319
6320		Store(ObjectType(Local0), Local1)
6321		if (LNotEqual(15, Local1)) {
6322			err(ts, z179, __LINE__, 0, 0, Local1, 15)
6323		}
6324
6325		Unload(DDBH)
6326		CH03(ts, z179, 0x2db, __LINE__, 0)
6327		OUTP("SSDT unloaded")
6328	}
6329
6330	// Manual test for ABBU: hangs on MS
6331	Method(m013)
6332	{
6333		OUTP("ldt13: Simple Load/ObjectType(DDBHandle) test")
6334
6335		Store(BUF0, RFU0)
6336
6337		Load(IST0, Local0)
6338		CH03(ts, z179, 0x2dc, __LINE__, 0)
6339		OUTP("SSDT loaded")
6340
6341		Store(ObjectType(Local0), Local1)
6342		if (LNotEqual(15, Local1)) {
6343			err(ts, z179, __LINE__, 0, 0, Local1, 15)
6344		}
6345	}
6346
6347	Method(m004,, Serialized)
6348	{
6349		Name(DDBH, 0)
6350
6351		OUTP("ldt4: Simple Load/ObjectType(Named DDBHandle) test")
6352
6353		Store(BUF0, RFU0)
6354
6355		Load(IST0, DDBH)
6356		CH03(ts, z179, 0x2de, __LINE__, 0)
6357		OUTP("SSDT loaded")
6358
6359		Store(ObjectType(DDBH), Local1)
6360		if (LNotEqual(15, Local1)) {
6361			err(ts, z179, __LINE__, 0, 0, Local1, 15)
6362		}
6363
6364		UnLoad(DDBH)
6365		CH03(ts, z179, 0x2e0, __LINE__, 0)
6366		OUTP("SSDT unloaded")
6367	}
6368
6369	// Manual test for ABBU: hangs on MS
6370	Method(m014,, Serialized)
6371	{
6372		Name(DDBH, 0)
6373
6374		OUTP("ldt14: Simple Load/ObjectType(Named DDBHandle) test")
6375
6376		Store(BUF0, RFU0)
6377
6378		Load(IST0, DDBH)
6379		CH03(ts, z179, 0x2e1, __LINE__, 0)
6380		OUTP("SSDT loaded")
6381
6382		Store(ObjectType(DDBH), Local1)
6383		if (LNotEqual(15, Local1)) {
6384			err(ts, z179, __LINE__, 0, 0, Local1, 15)
6385		}
6386	}
6387
6388	Method(m005,, Serialized)
6389	{
6390		Name(PAC0, Package(1){})
6391
6392		OUTP("ldt5: Simple Load(OpRegion, Indexed DDBHandle) test")
6393
6394		Store(BUF0, RFU0)
6395
6396		Load(IST0, Index(PAC0, 0))
6397		CH03(ts, z179, 0x2e3, __LINE__, 0)
6398		OUTP("SSDT loaded")
6399
6400		Store(Derefof(Index(PAC0, 0)), Local0)
6401
6402		UnLoad(Local0)
6403		CH03(ts, z179, 0x2e4, __LINE__, 0)
6404		OUTP("SSDT unloaded")
6405	}
6406
6407	// Manual test for ABBU
6408	Method(m015,, Serialized)
6409	{
6410		Name(PAC0, Package(1){})
6411
6412		OUTP("ldt15: Simple Load(OpRegion, Indexed DDBHandle) test")
6413
6414		Store(BUF0, RFU0)
6415
6416		Load(IST0, Index(PAC0, 0))
6417		CH03(ts, z179, 0x2e5, __LINE__, 0)
6418		OUTP("SSDT loaded")
6419	}
6420
6421	Method(m006)
6422	{
6423		OUTP("ldt6: Complex Load(OpRegion, LocalX) - CondRefof test")
6424
6425		Store(BUF0, RFU0)
6426
6427		Store(CondRefof(\SS00, Local1), Local2)
6428		OUTP("CondRefof before Load")
6429		if (Local2) {
6430			err(ts, z179, __LINE__, 0, 0, Local2, 0)
6431		}
6432
6433		Load(IST0, Local0)
6434		CH03(ts, z179, 0x2e7, __LINE__, 0)
6435
6436		Store(CondRefof(\SS00, Local3), Local4)
6437		OUTP("CondRefof after Load")
6438		if (Local4) {
6439		} else {
6440			err(ts, z179, __LINE__, 0, 0, Local4, 1)
6441		}
6442
6443		UnLoad(Local0)
6444		CH03(ts, z179, 0x2e9, __LINE__, 0)
6445
6446		Store(CondRefof(\SS00, Local5), Local6)
6447		OUTP("CondRefof after UnLoad")
6448		if (Local6) {
6449			err(ts, z179, __LINE__, 0, 0, Local6, 0)
6450		}
6451	}
6452
6453	// Manual test for ABBU
6454	Method(m016)
6455	{
6456		OUTP("ldt16: Complex Load(OpRegion, LocalX) - CondRefof test")
6457
6458		Store(BUF0, RFU0)
6459
6460		Store(CondRefof(\SS00, Local1), Local2)
6461		OUTP("CondRefof before Load")
6462		if (Local2) {
6463			err(ts, z179, __LINE__, 0, 0, Local2, 0)
6464		}
6465
6466		Load(IST0, Local0)
6467		CH03(ts, z179, 0x2ec, __LINE__, 0)
6468
6469		Store(CondRefof(\SS00, Local3), Local4)
6470		OUTP("CondRefof after Load")
6471		if (Local4) {
6472		} else {
6473			err(ts, z179, __LINE__, 0, 0, Local4, 1)
6474		}
6475	}
6476
6477	Method(m010)
6478	{
6479		m000()
6480
6481		if (y290) {
6482			m002()
6483			m003()
6484			m004()
6485		}
6486
6487		if (LAnd(y261, y290)) {
6488			m005()
6489		}
6490
6491		if (y290) {
6492			m006()
6493		}
6494	}
6495
6496	CH03(ts, z179, 0x2ee, __LINE__, 0)
6497	switch (ToInteger (Arg0)) {
6498		case (0) { m010() }
6499		case (1) { m000() }
6500		case (2) { m001() }
6501		case (3) { m002() }
6502		case (4) { m003() }
6503		case (5) { m004() }
6504		case (6) { m005() }
6505		case (7) { m006() }
6506		case (8) { m013() }
6507		case (9) { m014() }
6508		case (10) { m015() }
6509		case (11) { m016() }
6510	}
6511	CH03(ts, z179, 0x2ef, __LINE__, 0)
6512}
6513
6514/* Methods to run manually (for ABBU only) */
6515Method(aldt) { IIN0() ms31(1) Return(POUT) }
6516Method(bldt) { IIN0() ms31(2) Return(POUT) }
6517Method(cldt) { IIN0() ms31(3) Return(POUT) }
6518Method(dldt) { IIN0() ms31(4) Return(POUT) }
6519Method(eldt) { IIN0() ms31(5) Return(POUT) }
6520Method(fldt) { IIN0() ms31(6) Return(POUT) }
6521Method(gldt) { IIN0() ms31(7) Return(POUT) }
6522Method(hldt) { IIN0() ms31(8) Return(POUT) }
6523Method(ildt) { IIN0() ms31(9) Return(POUT) }
6524Method(jldt) { IIN0() ms31(10) Return(POUT) }
6525Method(kldt) { IIN0() ms31(11) Return(POUT) }
6526
6527/*
6528 * Hot issue:
6529 *
6530 * CondRefOf ASL operator
6531 */
6532Method(ms32, 1, Serialized)
6533{
6534	Name(ts, "ms32")
6535
6536	Method(m000)
6537	{
6538		OUTP("cnr0: Simple CondRefof() positive test")
6539
6540		Store(CondRefof(\_SB.ABBU.IMAX), Local0)
6541		CH03(ts, z179, 0x2f0, __LINE__, 0)
6542	}
6543
6544	Method(m001)
6545	{
6546		OUTP("cnr1: Simple CondRefof( , ) positive test 2")
6547
6548		Store(CondRefof(\_SB.ABBU._HID, Local1), Local0)
6549		CH03(ts, z179, 0x2f1, __LINE__, 0)
6550
6551		if (Local0) {
6552		} else {
6553			err(ts, z179, __LINE__, 0, 0, Local0, 1)
6554		}
6555	}
6556
6557	Method(m002,, Serialized)
6558	{
6559		Name(I000, 0x76543210)
6560
6561		OUTP("cnr2: Simple CondRefof( , ) positive test for dynamic object")
6562
6563		Store(CondRefof(^m002.I000, Local1), Local0)
6564		if (Local0) {
6565			Store(Derefof(Local1), Local2)
6566			if (LNotEqual(0x76543210, Local2)) {
6567				err(ts, z179, __LINE__, 0, 0, Local2, 0x76543210)
6568			}
6569		} else {
6570			err(ts, z179, __LINE__, 0, 0, Local0, 1)
6571		}
6572	}
6573
6574	Method(m003,, Serialized)
6575	{
6576		OUTP("cnr3: Simple CondRefof( , ) negative test for dynamic object")
6577
6578		Store(CondRefof(^M003.I000, Local1), Local0)
6579		if (Local0) {
6580			err(ts, z179, __LINE__, 0, 0, Local0, 1)
6581		}
6582
6583		Name(I000, 1)
6584
6585		Store(CondRefof(^M003.I000, Local1), Local0)
6586		if (Local0) {
6587		} else {
6588			err(ts, z179, __LINE__, 0, 0, Local0, 0)
6589		}
6590	}
6591
6592	Method(m004)
6593	{
6594		OUTP("cnr4: Simple CondRefof(_OSI, Local0) test")
6595
6596		OUTP("if (CondRefOf (_OSI, Local0))")
6597		if (CondRefOf (_OSI, Local0))
6598		{
6599			OUTP("True")
6600			OUTP("_OSI (\"Windows 2001\"):")
6601			if (\_OSI ("Windows 2001"))
6602			{
6603				OUTP("True")
6604			} else {
6605				OUTP("False")
6606			}
6607		} else {
6608			OUTP("False")
6609		}
6610		CH03(ts, z179, 0x2f7, __LINE__, 0)
6611	}
6612
6613	Method(m010)
6614	{
6615		m000()
6616		m001()
6617		m002()
6618		m003()
6619		m004()
6620	}
6621
6622	CH03(ts, z179, 0x2f8, __LINE__, 0)
6623	switch (ToInteger (Arg0)) {
6624		case (0) { m010() }
6625		case (1) { m000() }
6626		case (2) { m001() }
6627		case (3) { m002() }
6628		case (4) { m003() }
6629		case (5) { m004() }
6630	}
6631	CH03(ts, z179, 0x2f9, __LINE__, 0)
6632}
6633
6634/* Methods to run manually (for ABBU only) */
6635Method(acnr) { IIN0() ms32(1) Return(POUT) }
6636Method(bcnr) { IIN0() ms32(2) Return(POUT) }
6637Method(ccnr) { IIN0() ms32(3) Return(POUT) }
6638Method(dcnr) { IIN0() ms32(4) Return(POUT) }
6639Method(ecnr) { IIN0() ms32(5) Return(POUT) }
6640
6641/*
6642 * Hot issue:
6643 *
6644 * Check storing of a Device into LocalX
6645 */
6646Method(ms33, 1, Serialized)
6647{
6648	Name(ts, "ms33")
6649
6650	Method(asdl)
6651	{
6652/*
6653// Removed 09/2015. iASL now disallows these stores
6654
6655		OUTP("Store _SB.ABBU Device object into LocalX, don't check the type")
6656
6657		Store(\_SB.ABBU, Local0)
6658*/
6659
6660		if (LOr(ABUU, SLCK)) {
6661			CH03(ts, z179, 0x2fa, __LINE__, 0)
6662		} else {
6663			CH04(ts, 0, 0xff, z179, __LINE__, 0, 0)
6664		}
6665	}
6666
6667	Method(bsdl)
6668	{
6669/*
6670// Removed 09/2015. iASL now disallows these stores
6671		OUTP("Store _SB.ABBU Device object into LocalX")
6672
6673		Store(\_SB.ABBU, Local0)
6674*/
6675
6676		if (LOr(ABUU, SLCK)) {
6677			Store(ObjectType(Local0), Local1)
6678			if (LNotEqual(6, Local1)) {
6679				err(ts, z179, __LINE__, 0, 0, Local1, 6)
6680			}
6681		} else {
6682			CH04(ts, 0, 0xff, z179, __LINE__, 0, 0)
6683		}
6684	}
6685
6686	Method(csdl,, Serialized)
6687	{
6688		Device(DLOC) {}
6689
6690/*
6691// Removed 09/2015. iASL now disallows these stores
6692
6693		OUTP("Store an improper dynamic Device object into LocalX")
6694
6695		Store(DLOC, Local0)
6696*/
6697
6698		if (LOr(ABUU, SLCK)) {
6699			Store(ObjectType(Local0), Local1)
6700			if (LNotEqual(6, Local1)) {
6701				err(ts, z179, __LINE__, 0, 0, Local1, 6)
6702			} else {
6703				OUTP("Ok: ObjectType succeeded")
6704			}
6705		} else {
6706			CH04(ts, 0, 0xff, z179, __LINE__, 0, 0)
6707		}
6708	}
6709
6710	Method(dsdl)
6711	{
6712		External(\_SB.LNKA)
6713
6714		OUTP("Store _SB.LNKA Device object into LocalX")
6715
6716		if (CondRefof(\_SB.LNKA, Local2)) {
6717		} else {
6718			OUTP("CondRefof for _SB.LNKA returns FALSE")
6719			return
6720		}
6721
6722		Store(\_SB.LNKA, Local0)
6723
6724		if (LOr(ABUU, SLCK)) {
6725			Store(ObjectType(Local0), Local1)
6726			if (LNotEqual(6, Local1)) {
6727				err(ts, z179, __LINE__, 0, 0, Local1, 6)
6728			}
6729		} else {
6730			CH04(ts, 0, 0xff, z179, __LINE__, 0, 0)
6731		}
6732	}
6733
6734	CH03(ts, z179, 0x2a2, __LINE__, 0)
6735	switch (ToInteger (Arg0)) {
6736		case (0) {
6737			asdl()
6738			bsdl()
6739			csdl()
6740			dsdl()
6741		}
6742		case (1) { asdl() }
6743		case (2) { bsdl() }
6744		case (3) { csdl() }
6745		case (4) { dsdl() }
6746	}
6747	CH03(ts, z179, 0x2a3, __LINE__, 0)
6748}
6749
6750/* Methods to run manually (for ABBU only) */
6751Method(asdl) { IIN0() ms33(1) Return(POUT) }
6752Method(bsdl) { IIN0() ms33(2) Return(POUT) }
6753Method(csdl) { IIN0() ms33(3) Return(POUT) }
6754Method(dsdl) { IIN0() ms33(4) Return(POUT) }
6755
6756Method(msfe)
6757{
6758	// Bug 63 issues
6759	SRMT("ms10")
6760	ms10(0)
6761
6762	// Bug 83 issues
6763	SRMT("ms11")
6764	ms11(0)
6765
6766	// Bug 100 issues
6767	SRMT("ms12")
6768	ms12()
6769
6770	// Bug 113 issues
6771	SRMT("ms13")
6772	ms13(0)
6773
6774	// Bug 114 issues
6775	SRMT("ms14")
6776	ms14(0)
6777
6778	// Bug 115 issues
6779	SRMT("ms15")
6780	ms15(0)
6781
6782	// Bug 118 issues
6783	SRMT("ms16")
6784	ms16(0)
6785
6786	// Bug 126 issues
6787	SRMT("ms17")
6788	ms17(0)
6789
6790	// Bug 127 issues
6791	SRMT("ms18")
6792	if (ABUU) {
6793		BLCK()
6794	} else {
6795		ms18()
6796	}
6797
6798	// Bug 128 issues
6799	SRMT("ms19")
6800	ms19(0)
6801
6802	// Bug 131 issues
6803	SRMT("ms1a")
6804	ms1a(0)
6805
6806	// Bug 132 issues
6807	SRMT("ms1b")
6808	ms1b(0)
6809
6810	// Bug 133 issues
6811	SRMT("ms1c")
6812	ms1c(0)
6813
6814	// Bug 134 issues
6815	SRMT("ms1d")
6816	ms1d(0)
6817
6818	// Bug 136 issues
6819	SRMT("ms1e")
6820	if (ABUU) {
6821		BLCK()
6822	} else {
6823		ms1e()
6824	}
6825
6826	// Local Reference into the Package issues
6827	SRMT("ms1f")
6828	ms1f(0)
6829
6830	// Forward reference within a control method
6831	SRMT("ms20")
6832	ms20(0)
6833
6834	// Recursive method execution
6835	SRMT("ms21")
6836	ms21(0)
6837
6838	// Conditional reference within a control method
6839	SRMT("ms22")
6840	ms22(0)
6841
6842	// Implicit return
6843	SRMT("ms23")
6844	ms23(0)
6845
6846	// Increment/Decrement with String/Buffer
6847	SRMT("ms24")
6848	if (ABUU) {
6849		BLCK()
6850	} else {
6851		ms24()
6852	}
6853
6854	// Check Store(..., DeRefof(...)) behavior
6855	SRMT("ms25")
6856	if (ABUU) {
6857		BLCK()
6858	} else {
6859		ms25(0)
6860	}
6861
6862	// Exceeding Field Unit
6863	SRMT("ms26")
6864	if (SMBA) {
6865		ms26(0)
6866	} else {
6867		BLCK()
6868	}
6869
6870	// Check IndexField implementation
6871	SRMT("ms27")
6872	if (SMBA) {
6873		ms27(0)
6874	} else {
6875		BLCK()
6876	}
6877
6878	SRMT("mt27")
6879	if (SMBA) {
6880		mt27(0)
6881	} else {
6882		BLCK()
6883	}
6884
6885	SRMT("mu27")
6886	if (SMBA) {
6887		mu27(0)
6888	} else {
6889		BLCK()
6890	}
6891
6892	SRMT("mv27")
6893	if (SMBA) {
6894		mv27(0)
6895	} else {
6896		BLCK()
6897	}
6898
6899	SRMT("mw27")
6900	if (SMBA) {
6901		mw27(0)
6902	} else {
6903		BLCK()
6904	}
6905
6906	SRMT("mx27")
6907	if (SMBA) {
6908		mx27(0)
6909	} else {
6910		BLCK()
6911	}
6912
6913	SRMT("my27")
6914	if (SMBA) {
6915		my27(0)
6916	} else {
6917		BLCK()
6918	}
6919
6920	SRMT("mz27")
6921	if (SMBA) {
6922		mz27(0)
6923	} else {
6924		BLCK()
6925	}
6926
6927	// Check BankField implementation
6928	SRMT("ms28")
6929	if (SMBA) {
6930		ms28()
6931	} else {
6932		BLCK()
6933	}
6934
6935	// Check Acquire/Release
6936	SRMT("ms29")
6937	ms29(0)
6938
6939	// Check ToBuffer optional store
6940	SRMT("ms2a")
6941	ms2a(0)
6942
6943	// Check Package size calculation
6944	SRMT("ms2b")
6945	ms2b(0)
6946
6947	// Check Switch implementation
6948	SRMT("ms2c")
6949	ms2c(0)
6950
6951	// Recursive method with local named
6952	SRMT("ms2d")
6953	ms2d(0)
6954
6955	// Buffer is not shortened on storing short string
6956	SRMT("ms2e")
6957	ms2e()
6958
6959	// Bug 246 issues
6960	SRMT("ms2f")
6961	ms2f(0)
6962
6963	// Bug 247 issues
6964	SRMT("ms30")
6965	if (ABUU) {
6966		BLCK()
6967	} else {
6968		ms30()
6969	}
6970
6971	// Load ASL operator
6972	SRMT("ms31")
6973	if (ABUU) {
6974		BLCK()
6975	} else {
6976		ms31(0)
6977	}
6978
6979	// CondRefOf ASL operator
6980	SRMT("ms32")
6981	ms32(0)
6982
6983	// Storing of a Device into LocalX
6984	SRMT("ms33")
6985	ms33(0)
6986}
6987