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 * Accumulate features which don't work on MS
31 *
32 * This should help to adapt tests to MS
33 *
34 * Stuff not working under MS:
35 *
36 *  1) Mod
37 *  2) Concatenate
38 *  3) CopyObject
39 *  4) POUT - is restricted by abbu, apparently, by byte-size(!),
40 *     not by the number of elements (!), and ABBU reports Failure in
41 *     that case not distinguishable from failures of MS being examined.
42 *  5) Return (Add(i000, m001())) -- !! but this works: Return (Add(Local7, m006()))
43 *  6) Arg instead of i000 (in m001):
44 *     Store(0x07000000, arg1)
45 *     Return (Add(arg1, m007()))
46 *  7) LNotEqual(bf00, 0x80) : bf00 - Buffer Field
47 *
48 *  8) (?) Buffer Field by arg -- doesn't work (?) (see xxx)
49 *  9) Field passed by arg -- doesn't work (see m30c)
50 * 10) Bank Field passed by arg -- doesn't work (see m30d):
51 * 11) Index Field passed by arg -- doesn't work (see m30e):
52 *
53 * 12) write access to element of String by Index/DerefOf
54 * 13) Stack overflow on about 10-12 method calls depth,
55 *     call methods chain is restricted by ~11
56 * 14) Named element of Package is, perhaps, not implemented by MS,
57 *     i000 in Package(){i000} is, on MS, the same as Package(){"i000"},
58 *     (see ns1.asl for example).
59 * 15) Stack (resource) overflow depends very much on other
60 *     reasons, not only the depth of method calls.
61 *     So, trying to wrap methods of ns0.asl into one parent method
62 *     decreases the available number of levels by more than 4 levels.
63 * 16) Internal objects of methods on MS consume some internal
64 *     resources of ACPI MS interpreter. Pulling some internal objects
65 *     of that method helps to prevent breakage of MS interpreter.
66 */
67
68Name(z161, 161)
69
70/*
71 * Named Integer i000
72 */
73
74/*
75 * CopyObject
76 *
77 * fail
78 */
79Method(mf00,, Serialized)
80{
81	Name(ts, "mf00")
82	Name(i000, 0xabcd0000)
83	Name(i001, 0xabcd0001)
84
85	/* Breaks on this command itself */
86	CopyObject(i000, i001)
87
88	if (chk0) {
89		if (LNotEqual(i001, 0xabcd0000)) {
90			err(ts, z161, __LINE__, 0, 0, i001, 0xabcd0000)
91		}
92	}
93
94	Return(POUT)
95}
96
97/*
98 * Concatenate
99 *
100 * success/fail
101 */
102Method(mf01,, Serialized)
103{
104	Name(ts, "mf01")
105	Name(s000, "qwertyuiop")
106	Name(s001, "_sdfghjkl")
107
108	/* Doesn't break on this command itself */
109	Concatenate(s000, s001, Local0)
110
111	OUTP(Local0)
112
113	if (chk0) {
114		/* This LNotEqual breaks */
115		if (LNotEqual(Local0, "qwertyuiop_sdfghjkl")) {
116			err(ts, z161, __LINE__, 0, 0, Local0, "qwertyuiop_sdfghjkl")
117		}
118	}
119
120	Return(POUT)
121}
122
123/*
124 * LEqual of Strings
125 *
126 * fail
127 */
128Method(mf02,, Serialized)
129{
130	Name(ts, "mf02")
131	Name(s000, "qwertyuiop")
132	Name(s001, "_sdfghjkl")
133
134	Store(LEqual("qwerty", "sdfghj"), Local3)
135
136	if (chk0) {
137		/* This LNotEqual breaks */
138		if (LEqual("qwerty", "sdfghj")) {
139			err(ts, z161, __LINE__, 0, 0, "qwerty", "sdfghj")
140		}
141	}
142
143	Return(POUT)
144}
145
146/*
147 * Return (Add(i000, m001()))
148 *
149 * success
150 */
151Method(mf03,, Serialized)
152{
153	Name(ts, "mf03")
154	Name(i000, 0x12340001)
155
156	Method(m000)
157	{
158		Method(m001)
159		{
160			Method(m002)
161			{
162				Return (1)
163			}
164			Return (Add(i000, m002()))
165		}
166		Return (Add(i000, m001()))
167	}
168
169	m000()
170
171	if (chk1) {
172		Store(m000(), Local0)
173		if (LNotEqual(Local0, 0x24680003)) {
174			err(ts, z161, __LINE__, 0, 0, Local0, 0x24680003)
175		}
176	}
177
178	Return(POUT)
179}
180
181/*
182 * Store to uninitialized ArgX (no value passed by that ArgX)
183 *
184 * Store(0x00001000, arg6)
185 * Return (Add(arg6, m007()))
186 *
187 * fail
188 */
189Method(mf04,, Serialized)
190{
191	Name(ts, "mf04")
192	Name(i000, 0xabcd0000)
193
194	Method(m000)
195	{
196		Store(0x00001001, arg6)
197		Return (Add(arg6, 5))
198	}
199
200	Method(m001)
201	{
202		// With this line commented works:
203		// Store(0x00001001, arg6)
204
205		Store(0x00001001, arg6)
206
207		// Doesn't work:
208		// Return (Add(arg6, 5))
209		// Return (0)
210	}
211
212	m001()
213
214	if (chk0) {
215		Store(m000(), Local0)
216		if (LNotEqual(Local0, 0x1006)) {
217			err(ts, z161, __LINE__, 0, 0, Local0, 0x1006)
218		}
219		CH03(ts, z161, 0x00b, __LINE__, 0)
220	}
221
222	Return(POUT)
223}
224
225/*
226 * Store to initialized ArgX (ArgX is passed with Constant Integer)
227 *
228 * Store(0x00001000, arg0)
229 * Return (Add(arg0, m007(0xabcd0000)))
230 *
231 * succeeded
232 */
233Method(mf05,, Serialized)
234{
235	Name(ts, "mf05")
236
237	Method(m000, 1)
238	{
239		Store(0x00001001, arg0)
240		Return (Add(arg0, 5))
241	}
242
243	m000(0xabcd0000)
244
245	if (chk1) {
246		Store(m000(0xabcd0000), Local0)
247		if (LNotEqual(Local0, 0x1006)) {
248			err(ts, z161, __LINE__, 0, 0, Local0, 0x1006)
249		}
250	}
251
252	Return(POUT)
253}
254
255/*
256 * Store to initialized ArgX (ArgX is passed with Named Integer)
257 *
258 * Store(0x00001000, arg0)
259 * Return (Add(arg0, m007(i000)))
260 *
261 * succeeded
262 */
263Method(mf06,, Serialized)
264{
265	Name(ts, "mf06")
266	Name(i000, 0xabcd0000)
267
268	Method(m000, 1)
269	{
270		Store(0x00001001, arg0)
271		Return (Add(arg0, 5))
272	}
273
274	Store(m000(i000), Local0)
275
276	if (chk1) {
277		if (LNotEqual(Local0, 0x1006)) {
278			err(ts, z161, __LINE__, 0, 0, Local0, 0x1006)
279		}
280		if (LNotEqual(i000, 0xabcd0000)) {
281			err(ts, z161, __LINE__, 0, 0, i000, 0xabcd0000)
282		}
283	}
284
285	Return(POUT)
286}
287
288/*
289 * Store to initialized ArgX (ArgX is passed with Integer by LocalX)
290 *
291 * Store(0x00001000, arg0)
292 * Return (Add(arg0, m007(i000)))
293 *
294 * succeeded
295 */
296Method(mf07,, Serialized)
297{
298	Name(ts, "mf07")
299
300	Method(m000, 1)
301	{
302		Store(0x00001001, arg0)
303		Return (Add(arg0, 5))
304	}
305
306	Store(0xabcd0000, Local7)
307	Store(m000(Local7), Local0)
308
309	if (chk1) {
310		if (LNotEqual(Local0, 0x1006)) {
311			err(ts, z161, __LINE__, 0, 0, Local0, 0x1006)
312		}
313		if (LNotEqual(Local7, 0xabcd0000)) {
314			err(ts, z161, __LINE__, 0, 0, Local7, 0xabcd0000)
315		}
316	}
317
318	Return(POUT)
319}
320
321/*
322 * LNotEqual(bf00, 0x80)
323 *   bf00 -- Buffer Field
324 *
325 * fail
326 */
327Method(mf08,, Serialized)
328{
329	Name(ts, "mf08")
330	Name(pr, 1)
331	Name(i001, 0)
332	Name(b000, Buffer(9) {0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18})
333	CreateField(b000, 0, 8, bf00)
334
335	// Doesn't work
336	Store(LNotEqual(bf00, 0x80), Local3)
337
338	if (chk0) {
339
340	// Works
341	Store(bf00, Local0)
342
343	// Doesn't work (!) too:
344	Store(LNotEqual(Local0, 0x80), Local3)
345
346	// Doesn't work (!) too:
347	Store(Local0, Local1)
348	Store(LNotEqual(Local1, 0x80), Local3)
349
350	// Works
351	if (pr) {
352		OUTP(Local0)
353		OUTP(bf00)
354	}
355
356	// Works
357	Store(0x80, bf00)
358
359	// Works
360	if (pr) {
361		// There is ok:
362		OUTP(bf00)
363	}
364
365	Store(0x80, bf00)
366
367	if (LNotEqual(bf00, Buffer(){0x80})) {
368		err(ts, z161, __LINE__, 0, 0, bf00, Buffer(){0x80})
369	}
370
371	} /* if(chk0) */
372
373	Return(POUT)
374}
375
376/*
377 * Write access to element of String by Index operator
378 *
379 * fail
380 */
381Method(mf09,, Serialized)
382{
383	Name(ts, "mf09")
384	Name(s000, "qqqqqqqqqqqqqq")
385
386	Store(0x38, Index(s000, 0))
387
388	if (chk0) {
389		Store(DerefOf(Index(s000, 0)), Local0)
390		if (LNotEqual(Local0, 0x38)) {
391			err(ts, z161, __LINE__, 0, 0, Local0, 0x38)
392		}
393	}
394
395	Return(POUT)
396}
397
398/*
399 * Field passed by agrX doesn't work
400 *
401 * success
402 */
403Method(mf0a,, Serialized)
404{
405	Name(ts, "mf0a")
406	OperationRegion(r000, SystemMemory, 0x100, 0x100)
407	Field(r000, ByteAcc, NoLock, Preserve) { f000, 32 }
408
409	Method(m000, 1)
410	{
411		Method(m001, 1)
412		{
413			Store(0x00000020, arg0)
414			Return (Add(arg0, 5))
415		}
416
417		Add(arg0, 1, Local0)
418
419		Store(Local0, arg0)
420		Store(Add(arg0, m001(arg0)), Local0)
421
422		Return (Local0)
423	}
424
425	Method(m001, 1)
426	{
427		Method(m001, 1)
428		{
429			Return (Add(arg0, 5))
430		}
431
432		Store(Add(arg0, m001(arg0)), Local0)
433
434		Return (Local0)
435	}
436
437	Store(0x12345678, f000)
438	Store(m000(f000), Local0)
439	if (chk1) {
440		if (LNotEqual(Local0, 0x1234569e)) {
441			err(ts, z161, __LINE__, 0, 0, Local0, 0x1234569e)
442		}
443		if (LNotEqual(f000, 0x12345678)) {
444			err(ts, z161, __LINE__, 0, 0, f000, 0x12345678)
445		}
446	}
447
448	Store(0x12345675, f000)
449	Store(m001(f000), Local0)
450	if (chk1) {
451		if (LNotEqual(Local0, 0x2468acef)) {
452			err(ts, z161, __LINE__, 0, 0, Local0, 0x2468acef)
453		}
454		if (LNotEqual(f000, 0x12345675)) {
455			err(ts, z161, __LINE__, 0, 0, f000, 0x12345675)
456		}
457	}
458
459	Return(POUT)
460}
461
462/*
463 * Bank Field passed by agrX doesn't work
464 *
465 * succeeded
466 */
467Method(mf0b,, Serialized)
468{
469	Name(ts, "mf0b")
470	OperationRegion(r000, SystemMemory, 0x100, 0x100)
471	Field(r000, ByteAcc, NoLock, Preserve) { f000,32, f001,32 }
472	BankField(r000, f001, 0, ByteAcc, NoLock, Preserve) { bnk0, 32 }
473
474	Method(m000, 1)
475	{
476		Method(m001, 1)
477		{
478			Store(0x00000020, arg0)
479			Return (Add(arg0, 5))
480		}
481
482		Add(arg0, 1, Local0)
483
484		Store(Local0, arg0)
485		Store(Add(arg0, m001(arg0)), Local0)
486
487		Return (Local0)
488	}
489
490	Method(m001, 1)
491	{
492		Method(m001, 1)
493		{
494			Return (Add(arg0, 5))
495		}
496
497		Store(Add(arg0, m001(arg0)), Local0)
498
499		Return (Local0)
500	}
501
502	Store(0x12345678, bnk0)
503	Store(m000(bnk0), Local0)
504	if (chk1) {
505		if (LNotEqual(Local0, 0x1234569e)) {
506			err(ts, z161, __LINE__, 0, 0, Local0, 0x1234569e)
507		}
508		if (LNotEqual(bnk0, 0x12345678)) {
509			err(ts, z161, __LINE__, 0, 0, bnk0, 0x12345678)
510		}
511	}
512
513	Store(0x12345675, bnk0)
514	Store(m001(bnk0), Local0)
515	if (chk1) {
516		if (LNotEqual(Local0, 0x2468acef)) {
517			err(ts, z161, __LINE__, 0, 0, Local0, 0x2468acef)
518		}
519		if (LNotEqual(bnk0, 0x12345675)) {
520			err(ts, z161, __LINE__, 0, 0, bnk0, 0x12345675)
521		}
522	}
523
524	Return(POUT)
525}
526
527/*
528 * Index Field passed by agrX doesn't work
529 *
530 * succeeded
531 */
532Method(mf0c,, Serialized)
533{
534	Name(ts, "mf0c")
535	OperationRegion(r000, SystemMemory, 0x100, 0x100)
536	Field(r000, ByteAcc, NoLock, Preserve) { f000,32, f001,32 }
537	IndexField(f000, f001, ByteAcc, NoLock, Preserve) { if00, 32 }
538
539	Method(m000, 1)
540	{
541		Method(m001, 1)
542		{
543			Store(0x00000020, arg0)
544			Return (Add(arg0, 5))
545		}
546
547		Add(arg0, 1, Local0)
548
549		Store(Local0, arg0)
550		Store(Add(arg0, m001(arg0)), Local0)
551
552		Return (Local0)
553	}
554
555	Method(m001, 1)
556	{
557		Method(m001, 1)
558		{
559			Return (Add(arg0, 5))
560		}
561
562		Store(Add(arg0, m001(arg0)), Local0)
563
564		Return (Local0)
565	}
566
567	Store(0x12345678, if00)
568	Store(m000(if00), Local0)
569	if (chk1) {
570		if (LNotEqual(Local0, 0x12121238)) {
571			err(ts, z161, __LINE__, 0, 0, Local0, 0x12121238)
572		}
573		if (LNotEqual(if00, 0x12121212)) {
574			err(ts, z161, __LINE__, 0, 0, if00, 0x12121212)
575		}
576	}
577
578	Store(0x12345675, if00)
579	Store(m001(if00), Local0)
580	if (chk1) {
581		if (LNotEqual(Local0, 0x24242429)) {
582			err(ts, z161, __LINE__, 0, 0, Local0, 0x24242429)
583		}
584		if (LNotEqual(if00, 0x12121212)) {
585			err(ts, z161, __LINE__, 0, 0, if00, 0x12121212)
586		}
587	}
588
589	Return(POUT)
590}
591
592/*
593 * Buffer Field passed by agrX
594 *
595 * fail
596 */
597Method(mf0d,, Serialized)
598{
599	Name(ts, "mf0d")
600	Name(b000, Buffer(16) {})
601	CreateField(b000, 5, 32, bf00)
602
603	Method(m000, 1)
604	{
605		Method(m001, 1)
606		{
607			Store(0x00000020, arg0)
608			Return (Add(arg0, 5))
609		}
610
611		Add(arg0, 1, Local0)
612
613		Store(Local0, arg0)
614		Store(Add(arg0, m001(arg0)), Local0)
615
616		Return (Local0)
617	}
618
619	Store(0x12345678, bf00)
620	Store(m000(bf00), Local0)
621	if (chk0) {
622		if (LNotEqual(Local0, 0x1234569e)) {
623			err(ts, z161, __LINE__, 0, 0, Local0, 0x1234569e)
624		}
625		if (LNotEqual(bf00, Buffer(){0x78, 0x56, 0x34, 0x12})) {
626			err(ts, z161, __LINE__, 0, 0, bf00, Buffer(){0x78, 0x56, 0x34, 0x12})
627		}
628	}
629
630	Return(POUT)
631}
632
633/*
634 * Buffer Field passed by agrX
635 *
636 * fail
637 */
638Method(mf0e,, Serialized)
639{
640	Name(ts, "mf0e")
641	Name(b000, Buffer(16) {})
642	CreateField(b000, 5, 32, bf00)
643
644	Method(m001, 1)
645	{
646		Method(m001, 1)
647		{
648			Return (Add(arg0, 5))
649		}
650
651		Store(Add(arg0, m001(arg0)), Local0)
652
653		Return (Local0)
654	}
655
656	Store(0x12345675, bf00)
657	Store(m001(bf00), Local0)
658	if (chk0) {
659		if (LNotEqual(Local0, 0x2468acef)) {
660			err(ts, z161, __LINE__, 0, 0, Local0, 0x2468acef)
661		}
662		if (LNotEqual(bf00, Buffer(){0x75, 0x56, 0x34, 0x12})) {
663			err(ts, z161, __LINE__, 0, 0, bf00, Buffer(){0x75, 0x56, 0x34, 0x12})
664		}
665	}
666
667	Return(POUT)
668}
669
670/*
671 * Buffer Field passed by agrX
672 *
673 * fail
674 */
675Method(mf0f,, Serialized)
676{
677	Name(ts, "mf0f")
678	Name(b000, Buffer(16) {})
679	CreateField(b000, 5, 32, bf00)
680
681	Method(m000, 1)
682	{
683		Method(m001, 1)
684		{
685			Store(0x00000020, arg0)
686			Return (Add(arg0, 5))
687		}
688
689		Add(arg0, 1, Local0)
690
691		Store(Local0, arg0)
692		Store(Add(arg0, m001(arg0)), Local0)
693
694		Return (Local0)
695	}
696
697	Method(m001, 1)
698	{
699		Method(m001, 1)
700		{
701			Return (Add(arg0, 5))
702		}
703
704		Store(Add(arg0, m001(arg0)), Local0)
705
706		Return (Local0)
707	}
708
709	Store(0x12345678, bf00)
710	Store(m000(bf00), Local0)
711	if (chk0) {
712		if (LNotEqual(Local0, 0x1234569e)) {
713			err(ts, z161, __LINE__, 0, 0, Local0, 0x1234569e)
714		}
715		if (LNotEqual(bf00, Buffer(){0x78, 0x56, 0x34, 0x12})) {
716			err(ts, z161, __LINE__, 0, 0, bf00, Buffer(){0x78, 0x56, 0x34, 0x12})
717		}
718	}
719
720	Store(0x12345675, bf00)
721	Store(m001(bf00), Local0)
722	if (chk0) {
723		if (LNotEqual(Local0, 0x2468acef)) {
724			err(ts, z161, __LINE__, 0, 0, Local0, 0x2468acef)
725		}
726		if (LNotEqual(bf00, Buffer(){0x75, 0x56, 0x34, 0x12})) {
727			err(ts, z161, __LINE__, 0, 0, bf00, Buffer(){0x75, 0x56, 0x34, 0x12})
728		}
729	}
730
731	Return(POUT)
732}
733
734/*
735 * Buffer Field passed by agrX
736 *
737 * fail
738 */
739Method(mf10,, Serialized)
740{
741	Name(ts, "mf10")
742	Name(b000, Buffer(16) {})
743	CreateField(b000, 0, 32, bf00)
744
745	Method(m000, 1)
746	{
747		Return (arg0)
748	}
749
750	// Ok
751	OUTP(b000)
752
753	// This write works correctly:
754	Store(0x12345678, bf00)
755
756	// Succeeds:
757	Store(m000(bf00), Local0)
758
759	// Breaks:
760	// LNotEqual(Local0, 0x12345678)
761
762	// Breaks:
763	// Add(Local0, 0)
764
765	// Breaks:
766	// Add(bf00, 0)
767
768	// Ok
769	OUTP(b000)
770
771		if (LNotEqual(Local0, Buffer(){0x78, 0x56, 0x34, 0x12})) {
772			err(ts, z161, __LINE__, 0, 0, Local0, Buffer(){0x78, 0x56, 0x34, 0x12})
773		}
774		if (LNotEqual(bf00, Buffer(){0x78, 0x56, 0x34, 0x12})) {
775			err(ts, z161, __LINE__, 0, 0, bf00, Buffer(){0x78, 0x56, 0x34, 0x12})
776		}
777
778	Return(POUT)
779}
780
781/*
782 * LEqual of Buffers
783 *
784 * fail
785 */
786Method(mf11,, Serialized)
787{
788	Name(ts, "mf11")
789	Name(b000, Buffer(4) {0x10, 0x11, 0x12, 0x13})
790	Name(b001, Buffer(4) {0x10, 0x11, 0x12, 0x13})
791
792	Store(LEqual(b000, b001), Local3)
793
794	Return(POUT)
795}
796
797/*
798 * Method calculation stack overflow
799 *
800 * If remove one level the test succeeds
801 *
802 * fail
803 */
804Method(mf12,, Serialized)
805{
806	Name(ts, "mf12")
807
808	Name(i000, 0)
809	Name(i001, 0)
810	Name(i002, 0)
811	Name(i003, 0)
812	Name(i004, 0)
813	Name(i005, 0)
814	Name(i006, 0)
815	Name(i007, 0)
816	Name(i008, 0)
817	Name(i009, 0)
818	Name(i00a, 0)
819	Name(i00b, 0)
820	Name(i00c, 0)
821
822	Method(m000)
823	{
824		Method(m001)
825		{
826			Method(m002)
827			{
828				Method(m003)
829				{
830					Method(m004)
831					{
832						Method(m005)
833						{
834							Method(m006)
835							{
836								Method(m007)
837								{
838									Method(m008)
839									{
840										Method(m009)
841										{
842											Method(m00a)
843											{
844												Method(m00b)
845												{
846													Method(m00c)
847													{
848														Store(0xabcd000c, i00c)
849													}
850													Store(0xabcd000b, i00b)
851													m00c()
852												}
853												Store(0xabcd000a, i00a)
854												m00b()
855											}
856											Store(0xabcd0009, i009)
857											m00a()
858										}
859										Store(0xabcd0008, i008)
860										m009()
861									}
862									Store(0xabcd0007, i007)
863									m008()
864								}
865								Store(0xabcd0006, i006)
866								m007()
867							}
868							Store(0xabcd0005, i005)
869							m006()
870						}
871						Store(0xabcd0004, i004)
872						m005()
873					}
874					Store(0xabcd0003, i003)
875					m004()
876				}
877				Store(0xabcd0002, i002)
878				m003()
879			}
880			Store(0xabcd0001, i001)
881			m002()
882		}
883		Store(0xabcd0000, i000)
884		m001()
885	}
886
887	/*
888	 * If remove one level the test succeeds
889	 */
890	m000()
891
892	if (LNotEqual(i000, 0xabcd0000)) {
893		err(ts, z161, __LINE__, 0, 0, i000, 0xabcd0000)
894	}
895	if (LNotEqual(i001, 0xabcd0001)) {
896		err(ts, z161, __LINE__, 0, 0, i001, 0xabcd0001)
897	}
898	if (LNotEqual(i002, 0xabcd0002)) {
899		err(ts, z161, __LINE__, 0, 0, i002, 0xabcd0002)
900	}
901	if (LNotEqual(i003, 0xabcd0003)) {
902		err(ts, z161, __LINE__, 0, 0, i003, 0xabcd0003)
903	}
904	if (LNotEqual(i004, 0xabcd0004)) {
905		err(ts, z161, __LINE__, 0, 0, i004, 0xabcd0004)
906	}
907	if (LNotEqual(i005, 0xabcd0005)) {
908		err(ts, z161, __LINE__, 0, 0, i005, 0xabcd0005)
909	}
910	if (LNotEqual(i006, 0xabcd0006)) {
911		err(ts, z161, __LINE__, 0, 0, i006, 0xabcd0006)
912	}
913	if (LNotEqual(i007, 0xabcd0007)) {
914		err(ts, z161, __LINE__, 0, 0, i007, 0xabcd0007)
915	}
916	if (LNotEqual(i008, 0xabcd0008)) {
917		err(ts, z161, __LINE__, 0, 0, i008, 0xabcd0008)
918	}
919	if (LNotEqual(i009, 0xabcd0009)) {
920		err(ts, z161, __LINE__, 0, 0, i009, 0xabcd0009)
921	}
922	if (LNotEqual(i00a, 0xabcd000a)) {
923		err(ts, z161, __LINE__, 0, 0, i00a, 0xabcd000a)
924	}
925	if (LNotEqual(i00b, 0xabcd000b)) {
926		err(ts, z161, __LINE__, 0, 0, i00b, 0xabcd000b)
927	}
928	if (LNotEqual(i00c, 0xabcd000c)) {
929		err(ts, z161, __LINE__, 0, 0, i00c, 0xabcd000c)
930	}
931
932	Return(POUT)
933}
934
935/*
936 * Method calculation stack overflow
937 *
938 * If remove one level the test succeeds
939 *
940 * fail
941 */
942Method(mf13,, Serialized)
943{
944	Name(ts, "mf13")
945
946	Name(i000, 0)
947	Name(i001, 0)
948	Name(i002, 0)
949	Name(i003, 0)
950	Name(i004, 0)
951	Name(i005, 0)
952	Name(i006, 0)
953	Name(i007, 0)
954	Name(i008, 0)
955	Name(i009, 0)
956	Name(i00a, 0)
957	Name(i00b, 0)
958	Name(i00c, 0)
959	Name(i00d, 0)
960	Name(i00e, 0)
961	Name(i00f, 0)
962	Name(i010, 0)
963
964
965	Method(m000)
966	{
967		Store(0xabcd0000, i000)
968	}
969	Method(m001)
970	{
971		Store(0xabcd0001, i001)
972		m000()
973	}
974	Method(m002)
975	{
976		Store(0xabcd0002, i002)
977		m001()
978	}
979	Method(m003)
980	{
981		Store(0xabcd0003, i003)
982		m002()
983	}
984	Method(m004)
985	{
986		Store(0xabcd0004, i004)
987		m003()
988	}
989	Method(m005)
990	{
991		Store(0xabcd0005, i005)
992		m004()
993	}
994	Method(m006)
995	{
996		Store(0xabcd0006, i006)
997		m005()
998	}
999	Method(m007)
1000	{
1001		Store(0xabcd0007, i007)
1002		m006()
1003	}
1004	Method(m008)
1005	{
1006		Store(0xabcd0008, i008)
1007		m007()
1008	}
1009	Method(m009)
1010	{
1011		Store(0xabcd0009, i009)
1012		m008()
1013	}
1014	Method(m00a)
1015	{
1016		Store(0xabcd000a, i00a)
1017		m009()
1018	}
1019	Method(m00b)
1020	{
1021		Store(0xabcd000b, i00b)
1022		m00a()
1023	}
1024	Method(m00c)
1025	{
1026		Store(0xabcd000c, i00c)
1027		m00b()
1028	}
1029	Method(m00d)
1030	{
1031		Store(0xabcd000d, i00d)
1032		m00c()
1033	}
1034	Method(m00e)
1035	{
1036		Store(0xabcd000e, i00e)
1037		m00d()
1038	}
1039	Method(m00f)
1040	{
1041		Store(0xabcd000f, i00f)
1042		m00e()
1043	}
1044	Method(m010)
1045	{
1046		Store(0xabcd0010, i010)
1047		m00f()
1048	}
1049
1050
1051	/*
1052	 * If remove one level the test succeeds
1053	 */
1054	m010()
1055
1056
1057	if (LNotEqual(i000, 0xabcd0000)) {
1058		err(ts, z161, __LINE__, 0, 0, i000, 0xabcd0000)
1059	}
1060	if (LNotEqual(i001, 0xabcd0001)) {
1061		err(ts, z161, __LINE__, 0, 0, i001, 0xabcd0001)
1062	}
1063	if (LNotEqual(i002, 0xabcd0002)) {
1064		err(ts, z161, __LINE__, 0, 0, i002, 0xabcd0002)
1065	}
1066	if (LNotEqual(i003, 0xabcd0003)) {
1067		err(ts, z161, __LINE__, 0, 0, i003, 0xabcd0003)
1068	}
1069	if (LNotEqual(i004, 0xabcd0004)) {
1070		err(ts, z161, __LINE__, 0, 0, i004, 0xabcd0004)
1071	}
1072	if (LNotEqual(i005, 0xabcd0005)) {
1073		err(ts, z161, __LINE__, 0, 0, i005, 0xabcd0005)
1074	}
1075	if (LNotEqual(i006, 0xabcd0006)) {
1076		err(ts, z161, __LINE__, 0, 0, i006, 0xabcd0006)
1077	}
1078	if (LNotEqual(i007, 0xabcd0007)) {
1079		err(ts, z161, __LINE__, 0, 0, i007, 0xabcd0007)
1080	}
1081	if (LNotEqual(i008, 0xabcd0008)) {
1082		err(ts, z161, __LINE__, 0, 0, i008, 0xabcd0008)
1083	}
1084	if (LNotEqual(i009, 0xabcd0009)) {
1085		err(ts, z161, __LINE__, 0, 0, i009, 0xabcd0009)
1086	}
1087	if (LNotEqual(i00a, 0xabcd000a)) {
1088		err(ts, z161, __LINE__, 0, 0, i00a, 0xabcd000a)
1089	}
1090	if (LNotEqual(i00b, 0xabcd000b)) {
1091		err(ts, z161, __LINE__, 0, 0, i00b, 0xabcd000b)
1092	}
1093	if (LNotEqual(i00c, 0xabcd000c)) {
1094		err(ts, z161, __LINE__, 0, 0, i00c, 0xabcd000c)
1095	}
1096	if (LNotEqual(i00d, 0xabcd000d)) {
1097		err(ts, z161, __LINE__, 0, 0, i00d, 0xabcd000d)
1098	}
1099	if (LNotEqual(i00e, 0xabcd000e)) {
1100		err(ts, z161, __LINE__, 0, 0, i00e, 0xabcd000e)
1101	}
1102	if (LNotEqual(i00f, 0xabcd000f)) {
1103		err(ts, z161, __LINE__, 0, 0, i00f, 0xabcd000f)
1104	}
1105	if (LNotEqual(i010, 0xabcd0010)) {
1106		err(ts, z161, __LINE__, 0, 0, i010, 0xabcd0010)
1107	}
1108
1109	Return(POUT)
1110}
1111
1112/*
1113 * Check Timer
1114 *
1115 * fail
1116 */
1117Method(mf14,, Serialized)
1118{
1119	Name(ts, "mf14")
1120	Name(i000, 0)
1121
1122	Store(Timer, i000)
1123	OUTP(i000)
1124
1125	Return(POUT)
1126}
1127
1128/*
1129 * Mod
1130 *
1131 * fail
1132 */
1133Method(mf15,, Serialized)
1134{
1135	Name(ts, "mf15")
1136
1137	Store(0x1234567d, Local1)
1138	Store(8, Local2)
1139
1140	/* This Mod breaks */
1141	Mod(Local1, Local2, Local0)
1142
1143	OUTP(Local0)
1144
1145	if (chk0) {
1146		if (LNotEqual(Local0, 5)) {
1147			err(ts, z161, __LINE__, 0, 0, Local0, 5)
1148		}
1149	}
1150
1151	Return(POUT)
1152}
1153
1154/*
1155 * Return (Package)
1156 *
1157 * success
1158 */
1159Method(mf16,, Serialized)
1160{
1161	Name(ts, "mf16")
1162
1163	Name(p000, Package() {0xabcd0000, 0xabcd0001, 0xabcd0003})
1164
1165	Method(m000, 1)
1166	{
1167		Return (arg0)
1168	}
1169
1170	Store(m000(p000), Local0)
1171	Store(DerefOf(Index(Local0, 1)), Local0)
1172	if (LNotEqual(Local0, 0xabcd0001)) {
1173		err(ts, z161, __LINE__, 0, 0, Local0, 0xabcd0001)
1174	}
1175
1176	Return(POUT)
1177}
1178
1179/*
1180 * Return (Package)
1181 *
1182 * success
1183 */
1184Method(mf17,, Serialized)
1185{
1186	Name(ts, "mf17")
1187	Name(p000, Package() {0xabcd0000, 0xabcd0001, 0xabcd0003})
1188
1189	Method(m000,, Serialized)
1190	{
1191		Name(pp00, Package() {0xabcd0000, 0xabcd0001, 0xabcd0003})
1192
1193		Return (pp00)
1194	}
1195
1196	Store(m000(), Local0)
1197	Store(DerefOf(Index(Local0, 1)), Local0)
1198	if (LNotEqual(Local0, 0xabcd0001)) {
1199		err(ts, z161, __LINE__, 0, 0, Local0, 0xabcd0001)
1200	}
1201
1202	Return(POUT)
1203}
1204
1205/*
1206 * LEqual (String, String)
1207 *
1208 * fail
1209 */
1210Method(mf18,, Serialized)
1211{
1212	Name(ts, "mf18")
1213	Name(s000, "qwertyuiop")
1214	Name(s001, "qwertyuiop")
1215
1216	Store(LEqual(s000, s001), Local3)
1217
1218	if (chk0) {
1219		Store(LEqual(s000, s001), Local0)
1220		if (LNot(Local0)) {
1221			err(ts, z161, __LINE__, 0, 0, Local0, Ones)
1222		}
1223	}
1224
1225	Return(POUT)
1226}
1227
1228/*
1229 * LEqual (Buffer, Buffer)
1230 *
1231 * fail
1232 */
1233Method(mf19,, Serialized)
1234{
1235	Name(ts, "mf19")
1236	Name(b000, Buffer(4) {0x10, 0x11, 0x12, 0x13})
1237	Name(b001, Buffer(4) {0x10, 0x11, 0x12, 0x13})
1238
1239	Store(LEqual(b000, b001), Local3)
1240
1241	if (chk0) {
1242		Store(LEqual(b000, b001), Local0)
1243		if (LNot(Local0)) {
1244			err(ts, z161, __LINE__, 0, 0, Local0, Ones)
1245		}
1246	}
1247
1248	Return(POUT)
1249}
1250
1251/*
1252 * Store (Package, Package)
1253 *
1254 * fail
1255 */
1256Method(mf1a,, Serialized)
1257{
1258	Name(ts, "mf1a")
1259
1260	Name(p000, Package() {0xabcd0000, 0xabcd0001, 0xabcd0003})
1261	Name(pp00, Package(3) {})
1262
1263	Store(p000, pp00)
1264
1265	if (chk0) {
1266		Store(DerefOf(Index(pp00, 1)), Local0)
1267		if (LNotEqual(Local0, 0xabcd0001)) {
1268			err(ts, z161, __LINE__, 0, 0, Local0, 0xabcd0001)
1269		}
1270	}
1271
1272	Return(POUT)
1273}
1274
1275/*
1276 * Add (String, String)
1277 *
1278 * fail
1279 */
1280Method(mf1b,, Serialized)
1281{
1282	Name(ts, "mf1b")
1283	Name(s000, "12345678")
1284	Name(s001, "56789012")
1285
1286	Store(Add(s000, s001), Local3)
1287
1288	if (chk0) {
1289		Store(Add(s000, s001), Local0)
1290		if (LNotEqual(Local0, 0x68ACE68A)) {
1291			err(ts, z161, __LINE__, 0, 0, Local0, 0x68ACE68A)
1292		}
1293	}
1294
1295	Return(POUT)
1296}
1297
1298/*
1299 * Add (Buffer, Buffer)
1300 *
1301 * fail
1302 */
1303Method(mf1c,, Serialized)
1304{
1305	Name(ts, "mf1c")
1306	Name(b000, Buffer(4) {0x10, 0x11, 0x12, 0x13})
1307	Name(b001, Buffer(4) {0x24, 0x35, 0x46, 0x57})
1308
1309	Store(Add(b000, b001), Local3)
1310
1311	if (chk0) {
1312		Store(Add(b000, b001), Local0)
1313		if (LNotEqual(Local0, 0x6A584634)) {
1314			err(ts, z161, __LINE__, 0, 0, Local0, 0x6A584634)
1315		}
1316	}
1317
1318	Return(POUT)
1319}
1320
1321/*
1322 * LEqual (Field, ....)
1323 *
1324 * success
1325 */
1326Method(mf1d,, Serialized)
1327{
1328	Name(ts, "mf1d")
1329	OperationRegion(r000, SystemMemory, 0x100, 0x100)
1330	Field(r000, ByteAcc, NoLock, Preserve) {f000,32}
1331
1332	Store(0xabcd0000, f000)
1333
1334	Store(LEqual(f000, 0xabcd0000), Local3)
1335
1336	Store(LEqual(f000, 0xabcd0000), Local0)
1337	if (LNot(Local0)) {
1338		err(ts, z161, __LINE__, 0, 0, Local0, Ones)
1339	}
1340
1341	Return(POUT)
1342}
1343
1344/*
1345 * LEqual (Field, ....)
1346 *
1347 * success
1348 */
1349Method(mf1e,, Serialized)
1350{
1351	Name(ts, "mf1e")
1352	OperationRegion(r000, SystemMemory, 0x100, 0x100)
1353	Field(r000, ByteAcc, NoLock, Preserve) {f000,32}
1354
1355	Store(0xabcd0000, f000)
1356
1357	Method(m000, 1)
1358	{
1359		Store(LEqual(arg0, 0xabcd0000), Local0)
1360		Return (Local0)
1361	}
1362
1363	m000(f000)
1364
1365	Store(m000(f000), Local0)
1366	if (LNot(Local0)) {
1367		err(ts, z161, __LINE__, 0, 0, Local0, Ones)
1368	}
1369
1370	Return(POUT)
1371}
1372
1373/*
1374 * LNotEqual (Field, ....)
1375 *
1376 * success
1377 */
1378Method(mf1f,, Serialized)
1379{
1380	Name(ts, "mf1f")
1381	OperationRegion(r000, SystemMemory, 0x100, 0x100)
1382	Field(r000, ByteAcc, NoLock, Preserve) {f000,32}
1383
1384	Store(0xabcd0000, f000)
1385
1386	Method(m000, 1)
1387	{
1388		if (LNotEqual(arg0, 0xabcd0000)) {
1389			err(ts, z161, __LINE__, 0, 0, arg0, 0xabcd0000)
1390		}
1391	}
1392
1393	m000(f000)
1394
1395	Return(POUT)
1396}
1397
1398/*
1399 * Add (Field, .......)
1400 *
1401 * success
1402 */
1403Method(mf20,, Serialized)
1404{
1405	Name(ts, "mf20")
1406	OperationRegion(r000, SystemMemory, 0x100, 0x100)
1407	Field(r000, ByteAcc, NoLock, Preserve) {f000,32}
1408
1409	Store(0xabcd0000, f000)
1410
1411	Store(Add(f000, 0x12), Local3)
1412
1413	Store(Add(f000, 0x12), Local0)
1414	if (LNotEqual(Local0, 0xabcd0012)) {
1415		err(ts, z161, __LINE__, 0, 0, Local0, 0xabcd0012)
1416	}
1417
1418	Return(POUT)
1419}
1420
1421/*
1422 * Add (Field, .......)
1423 *
1424 * success
1425 */
1426Method(mf21,, Serialized)
1427{
1428	Name(ts, "mf21")
1429	OperationRegion(r000, SystemMemory, 0x100, 0x100)
1430	Field(r000, ByteAcc, NoLock, Preserve) {f000,32}
1431
1432	Store(0xabcd0000, f000)
1433
1434	Method(m000, 1)
1435	{
1436		Store(Add(arg0, 0x12), Local0)
1437		Return (Local0)
1438	}
1439
1440	m000(f000)
1441
1442	Store(m000(f000), Local0)
1443	if (LNotEqual(Local0, 0xabcd0012)) {
1444		err(ts, z161, __LINE__, 0, 0, Local0, 0xabcd0012)
1445	}
1446
1447	Return(POUT)
1448}
1449
1450/*
1451 * LNotEqual (Index Field, ....)
1452 *
1453 * success
1454 */
1455Method(mf22,, Serialized)
1456{
1457	Name(ts, "mf22")
1458	OperationRegion(r003, SystemMemory, 0x180, 0x080)
1459	Field(r003, ByteAcc, NoLock, Preserve) {f004,32, f005,32}
1460	IndexField(f004, f005, ByteAcc, NoLock, Preserve) {if02,32}
1461
1462	Store(0xabcd0000, if02)
1463
1464	Method(m000, 1)
1465	{
1466		if (LNotEqual(arg0, 0xabababab)) {
1467			err(ts, z161, __LINE__, 0, 0, arg0, 0xabababab)
1468		}
1469	}
1470
1471	m000(if02)
1472
1473	Return(POUT)
1474}
1475
1476/*
1477 * Two the same simultaneously (Index Field, ....)
1478 *
1479 * success
1480 */
1481Method(mf23,, Serialized)
1482{
1483	Name(ts, "mf23")
1484	OperationRegion(r003, SystemMemory, 0x180, 0x080)
1485	Field(r003, ByteAcc, NoLock, Preserve) {f004,32, f005,32}
1486	IndexField(f004, f005, ByteAcc, NoLock, Preserve) {if02,32}
1487
1488	Store(0xabcd0000, if02)
1489
1490	Method(m000, 2)
1491	{
1492		if (LNotEqual(arg0, 0xabababab)) {
1493			err(ts, z161, __LINE__, 0, 0, arg0, 0xabababab)
1494		}
1495		if (LNotEqual(arg1, 0xabababab)) {
1496			err(ts, z161, __LINE__, 0, 0, arg1, 0xabababab)
1497		}
1498	}
1499
1500	m000(if02, if02)
1501
1502	Return(POUT)
1503}
1504
1505/*
1506 * Two the same simultaneously (Index Field, ....)
1507 *
1508 * success
1509 */
1510Method(mf24,, Serialized)
1511{
1512	Name(ts, "mf24")
1513	OperationRegion(r003, SystemMemory, 0x180, 0x080)
1514	Field(r003, ByteAcc, NoLock, Preserve) {f004,32, f005,32}
1515	IndexField(f004, f005, ByteAcc, NoLock, Preserve) {if02,32}
1516
1517	Store(0xabcd0000, if02)
1518
1519	Method(m001, 1)
1520	{
1521		if (LNotEqual(arg0, 0xabababab)) {
1522			err(ts, z161, __LINE__, 0, 0, arg0, 0xabababab)
1523		}
1524		Return (arg0)
1525	}
1526	Method(m002, 2)
1527	{
1528		if (LNotEqual(arg0, 0xabababab)) {
1529			err(ts, z161, __LINE__, 0, 0, arg0, 0xabababab)
1530		}
1531		if (LNotEqual(arg1, 0xabababab)) {
1532			err(ts, z161, __LINE__, 0, 0, arg1, 0xabababab)
1533		}
1534		Return (arg1)
1535	}
1536
1537	Store(m001(if02), Local0)
1538	Store(m002(if02, if02), Local0)
1539
1540	Return(POUT)
1541}
1542
1543/*
1544 * Store (Device, Local)
1545 *
1546 * succeed
1547 */
1548Method(mf25,, Serialized)
1549{
1550/*
1551// Removed 09/2015. iASL now disallows these stores
1552	Name(ts, "mf25")
1553	Device(d000) { Name(id00, 0xabcd0005) }
1554
1555	Store(d000, Local1)
1556
1557	Store(ObjectType(Local1), Local0)
1558	if (LNotEqual(Local0, c00e)) {
1559		err(ts, z161, __LINE__, 0, 0, Local0, c00e)
1560	}
1561*/
1562	Return(POUT)
1563}
1564
1565/*
1566 * Store (Event, Local)
1567 *
1568 * success
1569 */
1570Method(mf27,, Serialized)
1571{
1572/*
1573// Removed 09/2015. iASL now disallows these stores
1574	Name(ts, "mf27")
1575	Event(e000)
1576
1577	Store(e000, Local1)
1578
1579	Store(ObjectType(Local1), Local0)
1580	if (LNotEqual(Local0, c00f)) {
1581		err(ts, z161, __LINE__, 0, 0, Local0, c00f)
1582	}
1583*/
1584	Return(POUT)
1585}
1586
1587/*
1588 * Store (Mutex, Local)
1589 *
1590 * success
1591 */
1592Method(mf28,, Serialized)
1593{
1594/*
1595// Removed 09/2015. iASL now disallows these stores
1596
1597	Name(ts, "mf28")
1598	Mutex(mx00, 0)
1599
1600	Store(mx00, Local1)
1601
1602	Store(ObjectType(Local1), Local0)
1603	if (LNotEqual(Local0, c011)) {
1604		err(ts, z161, __LINE__, 0, 0, Local0, c011)
1605	}
1606*/
1607	Return(POUT)
1608}
1609
1610/*
1611 * Store (Event, Local)
1612 *
1613 * success
1614 */
1615Method(mf29, 1, Serialized)
1616{
1617/*
1618// Removed 09/2015. iASL now disallows these stores
1619
1620	Name(ts, "mf29")
1621	Event(e000)
1622
1623	Store(e000, arg0)
1624
1625	Store(ObjectType(arg0), Local0)
1626	if (LNotEqual(Local0, c00f)) {
1627		err(ts, z161, __LINE__, 0, 0, Local0, c00f)
1628	}
1629*/
1630	Return(POUT)
1631}
1632
1633/*
1634 * Store (Mutex, Local)
1635 *
1636 * success
1637 */
1638Method(mf2a, 1, Serialized)
1639{
1640/*
1641// Removed 09/2015. iASL now disallows these stores
1642
1643	Name(ts, "mf2a")
1644	Mutex(mx00, 0)
1645
1646	Store(mx00, arg0)
1647
1648	Store(ObjectType(arg0), Local0)
1649	if (LNotEqual(Local0, c011)) {
1650		err(ts, z161, __LINE__, 0, 0, Local0, c011)
1651	}
1652*/
1653	Return(POUT)
1654}
1655
1656/*
1657 * Store (Device, Local)
1658 * Store (another type object, into the same Local)
1659 *
1660 * fail
1661 */
1662Method(mf2b,, Serialized)
1663{
1664/*
1665// Removed 09/2015. iASL now disallows these stores
1666
1667	Name(ts, "mf2b")
1668	Device(d000) { Name(id00, 0xabcd0005) }
1669
1670	Store(d000, Local1)
1671	Store(0, Local1)
1672
1673	if (chk0) {
1674		Store(d000, Local1)
1675		Store(ObjectType(Local1), Local0)
1676		if (LNotEqual(Local0, c00e)) {
1677			err(ts, z161, __LINE__, 0, 0, Local0, c00e)
1678		}
1679	}
1680*/
1681	Return(POUT)
1682}
1683
1684/*
1685 * Store (Device, Arg)
1686 * Store (another type object, into the same Arg)
1687 *
1688 * fail
1689 */
1690Method(mf2c, 1, Serialized)
1691{
1692/*
1693// Removed 09/2015. iASL now disallows these stores
1694
1695	Name(ts, "mf2c")
1696	Device(d000) { Name(id00, 0xabcd0005) }
1697
1698	Store(d000, arg0)
1699	Store(0, arg0)
1700
1701	if (chk0) {
1702		Store(d000, arg0)
1703		Store(ObjectType(arg0), Local0)
1704		if (LNotEqual(Local0, c00e)) {
1705			err(ts, z161, __LINE__, 0, 0, Local0, c00e)
1706		}
1707	}
1708*/
1709	Return(POUT)
1710}
1711
1712
1713Method(msf0)
1714{
1715	SRMT("mf00")
1716	if (chk0) {
1717		mf00()
1718	} else {
1719		BLCK()
1720	}
1721	SRMT("mf01")
1722	mf01()
1723	SRMT("mf02")
1724	if (chk0) {
1725		mf02()
1726	} else {
1727		BLCK()
1728	}
1729	SRMT("mf03")
1730	mf03()
1731	SRMT("mf04")
1732	if (LAnd(chk0, y275)) {
1733		mf04()
1734	} else {
1735		BLCK()
1736	}
1737	SRMT("mf05")
1738	mf05()
1739	SRMT("mf06")
1740	mf06()
1741	SRMT("mf07")
1742	mf07()
1743	SRMT("mf08")
1744	if (chk0) {
1745		mf08()
1746	} else {
1747		BLCK()
1748	}
1749	SRMT("mf09")
1750	if (chk0) {
1751		mf09()
1752	} else {
1753		BLCK()
1754	}
1755	SRMT("mf0a")
1756	mf0a()
1757	SRMT("mf0b")
1758	mf0b()
1759	SRMT("mf0c")
1760	mf0c()
1761	SRMT("mf0d")
1762	if (chk0) {
1763		mf0d()
1764	} else {
1765		BLCK()
1766	}
1767	SRMT("mf0e")
1768	if (chk0) {
1769		mf0e()
1770	} else {
1771		BLCK()
1772	}
1773	SRMT("mf0f")
1774	if (chk0) {
1775		mf0f()
1776	} else {
1777		BLCK()
1778	}
1779	SRMT("mf10")
1780	if (chk0) {
1781		mf10()
1782	} else {
1783		BLCK()
1784	}
1785	SRMT("mf11")
1786	if (chk0) {
1787		mf11()
1788	} else {
1789		BLCK()
1790	}
1791	SRMT("mf12")
1792	if (chk0) {
1793		mf12()
1794	} else {
1795		BLCK()
1796	}
1797	SRMT("mf13")
1798	if (chk0) {
1799		mf13()
1800	} else {
1801		BLCK()
1802	}
1803	SRMT("mf14")
1804	if (chk0) {
1805		mf14()
1806	} else {
1807		BLCK()
1808	}
1809	SRMT("mf15")
1810	if (chk0) {
1811		mf15()
1812	} else {
1813		BLCK()
1814	}
1815	SRMT("mf16")
1816	mf16()
1817	SRMT("mf17")
1818	mf17()
1819	SRMT("mf18")
1820	if (chk0) {
1821		mf18()
1822	} else {
1823		BLCK()
1824	}
1825	SRMT("mf19")
1826	if (chk0) {
1827		mf19()
1828	} else {
1829		BLCK()
1830	}
1831	SRMT("mf1a")
1832	if (chk0) {
1833		mf1a()
1834	} else {
1835		BLCK()
1836	}
1837	SRMT("mf1b")
1838	if (chk0) {
1839		mf1b()
1840	} else {
1841		BLCK()
1842	}
1843	SRMT("mf1c")
1844	if (chk0) {
1845		mf1c()
1846	} else {
1847		BLCK()
1848	}
1849	SRMT("mf1d")
1850	mf1d()
1851	SRMT("mf1e")
1852	mf1e()
1853	SRMT("mf1f")
1854	mf1f()
1855	SRMT("mf20")
1856	mf20()
1857	SRMT("mf21")
1858	mf21()
1859	SRMT("mf22")
1860	mf22()
1861	SRMT("mf23")
1862	mf23()
1863	SRMT("mf24")
1864	mf24()
1865	SRMT("mf25")
1866	if (SLC0) {
1867		mf25()
1868	} else {
1869		BLCK()
1870	}
1871	SRMT("mf26")
1872	if (LAnd(SLC0, chk0)) {
1873		mf26()
1874	} else {
1875		BLCK()
1876	}
1877	SRMT("mf27")
1878	if (SLC0) {
1879		mf27()
1880	} else {
1881		BLCK()
1882	}
1883	SRMT("mf28")
1884	if (SLC0) {
1885		mf28()
1886	} else {
1887		BLCK()
1888	}
1889	SRMT("mf29")
1890	if (SLC0) {
1891		mf29(0)
1892	} else {
1893		BLCK()
1894	}
1895	SRMT("mf2a")
1896	if (SLC0) {
1897		mf2a(0)
1898	} else {
1899		BLCK()
1900	}
1901	SRMT("mf2b")
1902	if (LAnd(SLC0, chk0)) {
1903		mf2b()
1904	} else {
1905		BLCK()
1906	}
1907	SRMT("mf2c")
1908	if (LAnd(SLC0, chk0)) {
1909		mf2c(0)
1910	} else {
1911		BLCK()
1912	}
1913}
1914