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     *  Device
30     *
31     * (verify exceptions caused by the imprope use of Device type objects)
32     */
33    Name (Z098, 0x62)
34    Device (DEV0)
35    {
36    }
37
38    /* Expected exceptions: */
39    /* */
40    /* 47 - AE_AML_OPERAND_TYPE */
41    /* */
42    Method (M4B6, 0, Serialized)
43    {
44        Device (DEV1)
45        {
46        }
47
48        Event (E000)
49        Name (I000, 0x00)
50        /* Local Named Object */
51        /* These are now caught by the compiler - Aug 2015
52         Method(m000, 1, Serialized)
53         {
54         Device(dev2) {}
55         Store (DerefOf(dev2), Local1)
56         CH06(arg0, 0, 47)
57         }
58         */
59        /* Global Named Object */
60        /* These are now caught by the compiler - Aug 2015
61         Method(m001, 1)
62         {
63         if (y083) {
64         Store (DerefOf(dev0), Local1)
65         CH06(arg0, 1, 47)
66         }
67         }
68         */
69        /* Local */
70        Method (M002, 1, Serialized)
71        {
72            Device (DEV2)
73            {
74            }
75
76            Event (E000)
77            CopyObject (DEV2, Local0)
78            /* CondRefOf */
79
80            CondRefOf (Local0, Local1)
81            CH03 (__METHOD__, Z098, __LINE__, 0x00, 0x00)
82            /* CopyObject */
83
84            CopyObject (Local0, Local1)
85            CH03 (__METHOD__, Z098, __LINE__, 0x00, 0x00)
86            /* Decrement */
87
88            Local0--
89            CH06 (Arg0, 0x01, 0x2F)
90            /* DerefOf */
91
92            Local1 = DerefOf (Local0)
93            CH06 (Arg0, 0x02, 0x2F)
94            /* FindSetLeftBit */
95
96            FindSetLeftBit (Local0, Local1)
97            CH06 (Arg0, 0x04, 0x2F)
98            /* FindSetRightBit */
99
100            FindSetRightBit (Local0, Local1)
101            CH06 (Arg0, 0x06, 0x2F)
102            /* FromBCD */
103
104            FromBCD (Local0, Local1)
105            CH06 (Arg0, 0x08, 0x2F)
106            /* Increment */
107
108            Local0++
109            CH06 (Arg0, 0x09, 0x2F)
110            /* LNot */
111
112            Local1 = !Local0
113            CH06 (Arg0, 0x0A, 0x2F)
114            /* Not */
115
116            Local1 = ~Local0
117            CH06 (Arg0, 0x0C, 0x2F)
118            /* ObjectType */
119
120            Local1 = ObjectType (Local0)
121            CH03 (__METHOD__, Z098, __LINE__, 0x00, 0x00)
122            /* RefOf */
123
124            Local1 = RefOf (Local0)
125            CH03 (__METHOD__, Z098, __LINE__, 0x00, 0x00)
126            /* Release */
127
128            Release (Local0)
129            CH06 (Arg0, 0x0D, 0x2F)
130            /* Reset */
131
132            Reset (Local0)
133            CH06 (Arg0, 0x0E, 0x2F)
134            /* Signal */
135
136            Signal (Local0)
137            CH06 (Arg0, 0x0F, 0x2F)
138            /* SizeOf */
139
140            Local1 = SizeOf (Local0)
141            CH06 (Arg0, 0x10, 0x2F)
142            /* Sleep */
143
144            Sleep (Local0)
145            CH06 (Arg0, 0x11, 0x2F)
146            /* Stall */
147
148            Stall (Local0)
149            CH06 (Arg0, 0x12, 0x2F)
150            /* Store */
151
152            Local1 = Local0
153            CH06 (Arg0, 0x13, 0x2F)
154            /* ToBCD */
155
156            ToBCD (Local0, Local1)
157            CH06 (Arg0, 0x15, 0x2F)
158            /* ToBuffer */
159
160            ToBuffer (Local0, Local1)
161            CH06 (Arg0, 0x17, 0x2F)
162            /* ToDecimalString */
163
164            ToDecimalString (Local0, Local1)
165            CH06 (Arg0, 0x19, 0x2F)
166            /* ToHexString */
167
168            ToHexString (Local0, Local1)
169            CH06 (Arg0, 0x1B, 0x2F)
170            /* ToInteger */
171
172            ToInteger (Local0, Local1)
173            CH06 (Arg0, 0x1D, 0x2F)
174            /* Acquire */
175
176            Local1 = Acquire (Local0, 0x0064)
177            CH06 (Arg0, 0x1E, 0x2F)
178            /* Add */
179
180            Local1 = (Local0 + I000) /* \M4B6.I000 */
181            CH06 (Arg0, 0x21, 0x2F)
182            Local1 = (I000 + Local0)
183            CH06 (Arg0, 0x22, 0x2F)
184            /* And */
185
186            Local1 = (Local0 & I000) /* \M4B6.I000 */
187            CH06 (Arg0, 0x25, 0x2F)
188            Local1 = (I000 & Local0)
189            CH06 (Arg0, 0x26, 0x2F)
190            /* Concatenate */
191
192            Concatenate (Local0, I000, Local1)
193            CH06 (Arg0, 0x29, 0x2F)
194            Concatenate (I000, Local0, Local1)
195            CH06 (Arg0, 0x2A, 0x2F)
196            /* ConcatenateResTemplate */
197
198            ConcatenateResTemplate (Local0, Buffer (0x02)
199                {
200                     0x79, 0x00                                       // y.
201                }, Local1)
202            CH06 (Arg0, 0x2D, 0x2F)
203            ConcatenateResTemplate (Buffer (0x02)
204                {
205                     0x79, 0x00                                       // y.
206                }, Local0, Local1)
207            CH06 (Arg0, 0x2E, 0x2F)
208            /* Divide */
209
210            Divide (Local0, I000, Local2)
211            CH06 (Arg0, 0x31, 0x2F)
212            Divide (I000, Local0, Local2)
213            CH06 (Arg0, 0x32, 0x2F)
214            Divide (Local0, I000, Local2, Local1)
215            CH06 (Arg0, 0x33, 0x2F)
216            Divide (I000, Local0, Local2, Local1)
217            CH06 (Arg0, 0x34, 0x2F)
218            /* Fatal */
219
220            Fatal (0xFF, 0xFFFFFFFF, Local0)
221            CH06 (Arg0, 0x35, 0x2F)
222            /* Index */
223
224            Local1 = Local0 [0x00]
225            CH06 (Arg0, 0x38, 0x2F)
226            Index ("0", Local0, Local1)
227            CH06 (Arg0, 0x39, 0x2F)
228            /* LEqual */
229
230            Local1 = (Local0 == I000)
231            CH06 (Arg0, 0x3A, 0x2F)
232            Local1 = (I000 == Local0)
233            CH06 (Arg0, 0x3B, 0x2F)
234            /* LGreater */
235
236            Local1 = (Local0 > I000)
237            CH06 (Arg0, 0x3C, 0x2F)
238            Local1 = (I000 > Local0)
239            CH06 (Arg0, 0x3D, 0x2F)
240            /* LGreaterEqual */
241
242            Local1 = (Local0 >= I000)
243            CH06 (Arg0, 0x3E, 0xFF)
244            Local1 = (I000 >= Local0)
245            CH06 (Arg0, 0x3F, 0xFF)
246            /* LLess */
247
248            Local1 = (Local0 < I000)
249            CH06 (Arg0, 0x40, 0x2F)
250            Local1 = (I000 < Local0)
251            CH06 (Arg0, 0x41, 0x2F)
252            /* LLessEqual */
253
254            Local1 = (Local0 <= I000)
255            CH06 (Arg0, 0x42, 0xFF)
256            Local1 = (I000 <= Local0)
257            CH06 (Arg0, 0x43, 0xFF)
258            /* LNotEqual */
259
260            Local1 = (Local0 != I000)
261            CH06 (Arg0, 0x44, 0xFF)
262            Local1 = (I000 != Local0)
263            CH06 (Arg0, 0x45, 0xFF)
264            /* LOr */
265
266            Local1 = (Local0 || I000)
267            CH06 (Arg0, 0x46, 0x2F)
268            Local1 = (I000 || Local0)
269            CH06 (Arg0, 0x47, 0x2F)
270            /* Mod */
271
272            Local1 = (Local0 % I000) /* \M4B6.I000 */
273            CH06 (Arg0, 0x4A, 0x2F)
274            Local1 = (I000 % Local0)
275            CH06 (Arg0, 0x4B, 0x2F)
276            /* Multiply */
277
278            Local1 = (Local0 * I000) /* \M4B6.I000 */
279            CH06 (Arg0, 0x4E, 0x2F)
280            Local1 = (I000 * Local0)
281            CH06 (Arg0, 0x4F, 0x2F)
282            /* NAnd */
283
284            NAnd (Local0, I000, Local1)
285            CH06 (Arg0, 0x52, 0x2F)
286            NAnd (I000, Local0, Local1)
287            CH06 (Arg0, 0x53, 0x2F)
288            /* NOr */
289
290            NOr (Local0, I000, Local1)
291            CH06 (Arg0, 0x56, 0x2F)
292            NOr (I000, Local0, Local1)
293            CH06 (Arg0, 0x57, 0x2F)
294            /* Or */
295
296            Local1 = (Local0 | I000) /* \M4B6.I000 */
297            CH06 (Arg0, 0x5A, 0x2F)
298            Local1 = (I000 | Local0)
299            CH06 (Arg0, 0x5B, 0x2F)
300            /* ShiftLeft */
301
302            Local1 = (Local0 << I000) /* \M4B6.I000 */
303            CH06 (Arg0, 0x5E, 0x2F)
304            Local1 = (I000 << Local0)
305            CH06 (Arg0, 0x5F, 0x2F)
306            /* ShiftRight */
307
308            Local1 = (Local0 >> I000) /* \M4B6.I000 */
309            CH06 (Arg0, 0x62, 0x2F)
310            Local1 = (I000 >> Local0)
311            CH06 (Arg0, 0x63, 0x2F)
312            /* Subtract */
313
314            Local1 = (Local0 - I000) /* \M4B6.I000 */
315            CH06 (Arg0, 0x66, 0x2F)
316            Local1 = (I000 - Local0)
317            CH06 (Arg0, 0x67, 0x2F)
318            /* ToString */
319
320            ToString (Local0, 0x01, Local1)
321            CH06 (Arg0, 0x6A, 0x2F)
322            ToString (I000, Local0, Local1)
323            CH06 (Arg0, 0x6B, 0x2F)
324            /* Wait */
325
326            Local1 = Wait (Local0, I000)
327            CH06 (Arg0, 0x6C, 0x2F)
328            Local1 = Wait (E000, Local0)
329            CH06 (Arg0, 0x6D, 0x2F)
330            /* XOr */
331
332            Local1 = (Local0 ^ I000) /* \M4B6.I000 */
333            CH06 (Arg0, 0x70, 0x2F)
334            Local1 = (I000 ^ Local0)
335            CH06 (Arg0, 0x71, 0x2F)
336            /* Mid */
337
338            Mid (Local0, 0x01, 0x01, Local1)
339            CH06 (Arg0, 0x75, 0x2F)
340            Mid ("123", Local0, 0x01, Local1)
341            CH06 (Arg0, 0x76, 0x2F)
342            Mid ("123", 0x01, Local0, Local1)
343            CH06 (Arg0, 0x77, 0x2F)
344            /* Match */
345
346            Local1 = Match (Local0, MTR, 0x00, MTR, 0x00, 0x00)
347            CH06 (Arg0, 0x78, 0x2F)
348            Local1 = Match (Package (0x01)
349                    {
350                        0x01
351                    }, MTR, Local0, MTR, 0x00, 0x00)
352            CH06 (Arg0, 0x79, 0x2F)
353            Local1 = Match (Package (0x01)
354                    {
355                        0x01
356                    }, MTR, 0x00, MTR, Local0, 0x00)
357            CH06 (Arg0, 0x7A, 0x2F)
358            Local1 = Match (Package (0x01)
359                    {
360                        0x01
361                    }, MTR, 0x00, MTR, 0x00, Local0)
362            CH06 (Arg0, 0x7B, 0x2F)
363        }
364
365        /* Reference to Object */
366
367        Method (M003, 3, Serialized)
368        {
369            Name (EXC0, 0x2F)  /* AE_AML_OPERAND_TYPE */
370            Local0 = ObjectType (Arg1)
371            If ((Local0 != 0x06))
372            {
373                ERR (Arg0, Z098, __LINE__, 0x00, 0x00, Local0, 0x06)
374                Return (0x01)
375            }
376
377            If (Arg2)
378            {
379                If (!Y503)
380                {
381                    EXC0 = 0x3E /* AE_AML_NO_RETURN_VALUE */
382                }
383            }
384
385            Local1 = DerefOf (Arg1)
386            CH03 (__METHOD__, Z098, __LINE__, 0x00, 0x00)
387            /* CondRefOf */
388
389            CondRefOf (DerefOf (Arg1), Local1)
390            CH06 (Arg0, 0x01, EXC0)
391            /* CopyObject */
392
393            CopyObject (DerefOf (Arg1), Local1)
394            CH06 (Arg0, 0x02, EXC0)
395            /* Decrement */
396
397            DerefOf (Arg1)--
398            CH06 (Arg0, 0x03, EXC0)
399            /* DerefOf */
400
401            Local1 = DerefOf (DerefOf (Arg1))
402            CH06 (Arg0, 0x04, EXC0)
403            /* FindSetLeftBit */
404
405            FindSetLeftBit (DerefOf (Arg1), Local1)
406            CH06 (Arg0, 0x06, EXC0)
407            /* FindSetRightBit */
408
409            FindSetRightBit (DerefOf (Arg1), Local1)
410            CH06 (Arg0, 0x08, EXC0)
411            /* FromBCD */
412
413            FromBCD (DerefOf (Arg1), Local1)
414            CH06 (Arg0, 0x0A, EXC0)
415            /* Increment */
416
417            DerefOf (Arg1)++
418            CH06 (Arg0, 0x0B, EXC0)
419            /* LNot */
420
421            Local1 = !DerefOf (Arg1)
422            CH06 (Arg0, 0x0C, EXC0)
423            /* Not */
424
425            Local1 = ~DerefOf (Arg1)
426            CH06 (Arg0, 0x0E, EXC0)
427            /* ObjectType */
428
429            Local1 = ObjectType (DerefOf (Arg1))
430            CH03 (__METHOD__, Z098, __LINE__, 0x00, 0x00)
431            /* RefOf */
432
433            Local1 = RefOf (DerefOf (Arg1))
434            CH06 (Arg0, 0x0F, EXC0)
435            /* Release */
436            /* Reset */
437            /* Signal */
438            /* SizeOf */
439            Local1 = SizeOf (DerefOf (Arg1))
440            CH06 (Arg0, 0x10, EXC0)
441            /* Sleep */
442
443            Sleep (DerefOf (Arg1))
444            CH06 (Arg0, 0x11, EXC0)
445            /* Stall */
446
447            Stall (DerefOf (Arg1))
448            CH06 (Arg0, 0x12, EXC0)
449            /* Store */
450
451            Local1 = DerefOf (Arg1)
452            CH06 (Arg0, 0x13, EXC0)
453            /* ToBCD */
454
455            ToBCD (DerefOf (Arg1), Local1)
456            CH06 (Arg0, 0x15, EXC0)
457            /* ToBuffer */
458
459            ToBuffer (DerefOf (Arg1), Local1)
460            CH06 (Arg0, 0x17, EXC0)
461            /* ToDecimalString */
462
463            ToDecimalString (DerefOf (Arg1), Local1)
464            CH06 (Arg0, 0x19, EXC0)
465            /* ToHexString */
466
467            ToHexString (DerefOf (Arg1), Local1)
468            CH06 (Arg0, 0x1B, EXC0)
469            /* ToInteger */
470
471            ToInteger (DerefOf (Arg1), Local1)
472            CH06 (Arg0, 0x1D, EXC0)
473            /* Acquire */
474            /* Add */
475            Local1 = (DerefOf (Arg1) + I000) /* \M4B6.I000 */
476            CH06 (Arg0, 0x21, EXC0)
477            Local1 = (I000 + DerefOf (Arg1))
478            CH06 (Arg0, 0x22, EXC0)
479            /* And */
480
481            Local1 = (DerefOf (Arg1) & I000) /* \M4B6.I000 */
482            CH06 (Arg0, 0x25, EXC0)
483            Local1 = (I000 & DerefOf (Arg1))
484            CH06 (Arg0, 0x26, EXC0)
485            /* Concatenate */
486
487            Concatenate (DerefOf (Arg1), I000, Local1)
488            CH06 (Arg0, 0x29, EXC0)
489            Concatenate (I000, DerefOf (Arg1), Local1)
490            CH06 (Arg0, 0x2A, EXC0)
491            /* ConcatenateResTemplate */
492
493            ConcatenateResTemplate (DerefOf (Arg1), Buffer (0x02)
494                {
495                     0x79, 0x00                                       // y.
496                }, Local1)
497            CH06 (Arg0, 0x2D, EXC0)
498            ConcatenateResTemplate (Buffer (0x02)
499                {
500                     0x79, 0x00                                       // y.
501                }, DerefOf (Arg1), Local1)
502            CH06 (Arg0, 0x2E, EXC0)
503            /* Divide */
504
505            Divide (DerefOf (Arg1), I000, Local2)
506            CH06 (Arg0, 0x31, EXC0)
507            Divide (I000, DerefOf (Arg1), Local2)
508            CH06 (Arg0, 0x32, EXC0)
509            Divide (DerefOf (Arg1), I000, Local2, Local1)
510            CH06 (Arg0, 0x33, EXC0)
511            Divide (I000, DerefOf (Arg1), Local2, Local1)
512            CH06 (Arg0, 0x34, EXC0)
513            /* Fatal */
514
515            Fatal (0xFF, 0xFFFFFFFF, DerefOf (Arg1))
516            CH06 (Arg0, 0x35, EXC0)
517            /* Index */
518
519            Local1 = DerefOf (Arg1) [0x00]
520            CH06 (Arg0, 0x38, EXC0)
521            Index ("0", DerefOf (Arg1), Local1)
522            CH06 (Arg0, 0x39, EXC0)
523            /* LEqual */
524
525            Local1 = (DerefOf (Arg1) == I000)
526            CH06 (Arg0, 0x3A, EXC0)
527            Local1 = (I000 == DerefOf (Arg1))
528            CH06 (Arg0, 0x3B, EXC0)
529            /* LGreater */
530
531            Local1 = (DerefOf (Arg1) > I000)
532            CH06 (Arg0, 0x3C, EXC0)
533            Local1 = (I000 > DerefOf (Arg1))
534            CH06 (Arg0, 0x3D, EXC0)
535            /* LGreaterEqual */
536
537            Local1 = (DerefOf (Arg1) >= I000)
538            CH06 (Arg0, 0x3E, 0xFF)
539            Local1 = (I000 >= DerefOf (Arg1))
540            CH06 (Arg0, 0x3F, 0xFF)
541            /* LLess */
542
543            Local1 = (DerefOf (Arg1) < I000)
544            CH06 (Arg0, 0x40, EXC0)
545            Local1 = (I000 < DerefOf (Arg1))
546            CH06 (Arg0, 0x41, EXC0)
547            /* LLessEqual */
548
549            Local1 = (DerefOf (Arg1) <= I000)
550            CH06 (Arg0, 0x42, 0xFF)
551            Local1 = (I000 <= DerefOf (Arg1))
552            CH06 (Arg0, 0x43, 0xFF)
553            /* LNotEqual */
554
555            Local1 = (DerefOf (Arg1) != I000)
556            CH06 (Arg0, 0x44, 0xFF)
557            Local1 = (I000 != DerefOf (Arg1))
558            CH06 (Arg0, 0x45, 0xFF)
559            /* LOr */
560
561            Local1 = (DerefOf (Arg1) || I000)
562            CH06 (Arg0, 0x46, EXC0)
563            Local1 = (I000 || DerefOf (Arg1))
564            CH06 (Arg0, 0x47, EXC0)
565            /* Mod */
566
567            Local1 = (DerefOf (Arg1) % I000) /* \M4B6.I000 */
568            CH06 (Arg0, 0x4A, EXC0)
569            Local1 = (I000 % DerefOf (Arg1))
570            CH06 (Arg0, 0x4B, EXC0)
571            /* Multiply */
572
573            Local1 = (DerefOf (Arg1) * I000) /* \M4B6.I000 */
574            CH06 (Arg0, 0x4E, EXC0)
575            Local1 = (I000 * DerefOf (Arg1))
576            CH06 (Arg0, 0x4F, EXC0)
577            /* NAnd */
578
579            NAnd (DerefOf (Arg1), I000, Local1)
580            CH06 (Arg0, 0x52, EXC0)
581            NAnd (I000, DerefOf (Arg1), Local1)
582            CH06 (Arg0, 0x53, EXC0)
583            /* NOr */
584
585            NOr (DerefOf (Arg1), I000, Local1)
586            CH06 (Arg0, 0x56, EXC0)
587            NOr (I000, DerefOf (Arg1), Local1)
588            CH06 (Arg0, 0x57, EXC0)
589            /* Or */
590
591            Local1 = (DerefOf (Arg1) | I000) /* \M4B6.I000 */
592            CH06 (Arg0, 0x5A, EXC0)
593            Local1 = (I000 | DerefOf (Arg1))
594            CH06 (Arg0, 0x5B, EXC0)
595            /* ShiftLeft */
596
597            Local1 = (DerefOf (Arg1) << I000) /* \M4B6.I000 */
598            CH06 (Arg0, 0x5E, EXC0)
599            Local1 = (I000 << DerefOf (Arg1))
600            CH06 (Arg0, 0x5F, EXC0)
601            /* ShiftRight */
602
603            Local1 = (DerefOf (Arg1) >> I000) /* \M4B6.I000 */
604            CH06 (Arg0, 0x62, EXC0)
605            Local1 = (I000 >> DerefOf (Arg1))
606            CH06 (Arg0, 0x63, EXC0)
607            /* Subtract */
608
609            Local1 = (DerefOf (Arg1) - I000) /* \M4B6.I000 */
610            CH06 (Arg0, 0x66, EXC0)
611            Local1 = (I000 - DerefOf (Arg1))
612            CH06 (Arg0, 0x67, EXC0)
613            /* ToString */
614
615            ToString (DerefOf (Arg1), 0x01, Local1)
616            CH06 (Arg0, 0x6A, EXC0)
617            ToString (I000, DerefOf (Arg1), Local1)
618            CH06 (Arg0, 0x6B, EXC0)
619            /* Wait */
620
621            Local1 = Wait (E000, DerefOf (Arg1))
622            CH06 (Arg0, 0x6D, EXC0)
623            /* XOr */
624
625            Local1 = (DerefOf (Arg1) ^ I000) /* \M4B6.I000 */
626            CH06 (Arg0, 0x70, EXC0)
627            Local1 = (I000 ^ DerefOf (Arg1))
628            CH06 (Arg0, 0x71, EXC0)
629            /* Mid */
630
631            Mid (DerefOf (Arg1), 0x01, 0x01, Local1)
632            CH06 (Arg0, 0x75, EXC0)
633            Mid ("123", DerefOf (Arg1), 0x01, Local1)
634            CH06 (Arg0, 0x76, EXC0)
635            Mid ("123", 0x01, DerefOf (Arg1), Local1)
636            CH06 (Arg0, 0x77, EXC0)
637            /* Match */
638
639            Local1 = Match (DerefOf (Arg1), MTR, 0x00, MTR, 0x00, 0x00)
640            CH06 (Arg0, 0x78, EXC0)
641            Local1 = Match (Package (0x01)
642                    {
643                        0x01
644                    }, MTR, DerefOf (Arg1), MTR, 0x00, 0x00)
645            CH06 (Arg0, 0x79, EXC0)
646            Local1 = Match (Package (0x01)
647                    {
648                        0x01
649                    }, MTR, 0x00, MTR, DerefOf (Arg1), 0x00)
650            CH06 (Arg0, 0x7A, EXC0)
651            Local1 = Match (Package (0x01)
652                    {
653                        0x01
654                    }, MTR, 0x00, MTR, 0x00, DerefOf (Arg1))
655            CH06 (Arg0, 0x7B, EXC0)
656            Return (0x00)
657        }
658
659        /* Result of Method invocation */
660
661        Method (M004, 1, Serialized)
662        {
663            Name (I000, 0x00) /* Label to check m000 invocations */
664            Method (M000, 0, NotSerialized)
665            {
666                CopyObject (DEV0, Local0)
667                Return (Local0)
668            }
669
670            /* CondRefOf */
671            /* **** 10/2016 changed method invocation to just a namestring */
672            /* CondRefOf no longer invokes the method */
673            CondRefOf (M000, Local1)
674            CH06 (Arg0, 0x01, 0x2F)
675            /* CopyObject */
676
677            CopyObject (M000 (), Local1)
678            CH03 (__METHOD__, Z098, __LINE__, 0x00, 0x00)
679            /* Decrement */
680
681            M000 ()--
682            CH06 (Arg0, 0x02, 0x2F)
683            /* DerefOf */
684
685            Local1 = DerefOf (M000 ())
686            CH06 (Arg0, 0x03, 0x2F)
687            /* FindSetLeftBit */
688
689            FindSetLeftBit (M000 (), Local1)
690            CH06 (Arg0, 0x05, 0x2F)
691            /* FindSetRightBit */
692
693            FindSetRightBit (M000 (), Local1)
694            CH06 (Arg0, 0x07, 0x2F)
695            /* FromBCD */
696
697            FromBCD (M000 (), Local1)
698            CH06 (Arg0, 0x09, 0x2F)
699            /* Increment */
700
701            M000 ()++
702            CH06 (Arg0, 0x0A, 0x2F)
703            /* LNot */
704
705            Local1 = !M000 ()
706            CH06 (Arg0, 0x0B, 0x2F)
707            /* Not */
708
709            Local1 = ~M000 ()
710            CH06 (Arg0, 0x0D, 0x2F)
711            /* **** ObjectType */
712            /* Nov. 2016: Method invocation as arg to ObjectType is now illegal */
713            Local0 = ObjectType (M000)
714            CH03 (__METHOD__, Z098, __LINE__, 0x00, 0x00)
715            /* RefOf */
716            /* **** Oct. 2016: Method invocation as arg to RefOf is now illegal */
717            /*		Store (RefOf(m000()), Local1) */
718            /*		CH06(arg0, 14, 47) */
719            /* Release */
720            Release (M000 ())
721            CH06 (Arg0, 0x0D, 0x2F)
722            /* Reset */
723
724            Reset (M000 ())
725            CH06 (Arg0, 0x0E, 0x2F)
726            /* Signal */
727
728            Signal (M000 ())
729            CH06 (Arg0, 0x0F, 0x2F)
730            /* SizeOf */
731
732            Local1 = SizeOf (M000 ())
733            CH06 (Arg0, 0x10, 0x2F)
734            /* Sleep */
735
736            Sleep (M000 ())
737            CH06 (Arg0, 0x11, 0x2F)
738            /* Stall */
739
740            Stall (M000 ())
741            CH06 (Arg0, 0x12, 0x2F)
742            /* Store */
743
744            Local1 = M000 ()
745            CH06 (Arg0, 0x13, 0x2F)
746            /* ToBCD */
747
748            ToBCD (M000 (), Local1)
749            CH06 (Arg0, 0x15, 0x2F)
750            /* ToBuffer */
751
752            ToBuffer (M000 (), Local1)
753            CH06 (Arg0, 0x17, 0x2F)
754            /* ToDecimalString */
755
756            ToDecimalString (M000 (), Local1)
757            CH06 (Arg0, 0x19, 0x2F)
758            /* ToHexString */
759
760            ToHexString (M000 (), Local1)
761            CH06 (Arg0, 0x1B, 0x2F)
762            /* ToInteger */
763
764            ToInteger (M000 (), Local1)
765            CH06 (Arg0, 0x1D, 0x2F)
766            /* Acquire */
767
768            Local1 = Acquire (M000 (), 0x0064)
769            CH06 (Arg0, 0x1E, 0x2F)
770            /* Add */
771
772            Local1 = (M000 () + I000) /* \M4B6.M004.I000 */
773            CH06 (Arg0, 0x21, 0x2F)
774            Local1 = (I000 + M000 ())
775            CH06 (Arg0, 0x22, 0x2F)
776            /* And */
777
778            Local1 = (M000 () & I000) /* \M4B6.M004.I000 */
779            CH06 (Arg0, 0x25, 0x2F)
780            Local1 = (I000 & M000 ())
781            CH06 (Arg0, 0x26, 0x2F)
782            /* Concatenate */
783
784            Concatenate (M000 (), I000, Local1)
785            CH06 (Arg0, 0x29, 0x2F)
786            Concatenate (I000, M000 (), Local1)
787            CH06 (Arg0, 0x2A, 0x2F)
788            /* ConcatenateResTemplate */
789
790            ConcatenateResTemplate (M000 (), Buffer (0x02)
791                {
792                     0x79, 0x00                                       // y.
793                }, Local1)
794            CH06 (Arg0, 0x2D, 0x2F)
795            ConcatenateResTemplate (Buffer (0x02)
796                {
797                     0x79, 0x00                                       // y.
798                }, M000 (), Local1)
799            CH06 (Arg0, 0x2E, 0x2F)
800            /* Divide */
801
802            Divide (M000 (), I000, Local2)
803            CH06 (Arg0, 0x31, 0x2F)
804            Divide (I000, M000 (), Local2)
805            CH06 (Arg0, 0x32, 0x2F)
806            Divide (M000 (), I000, Local2, Local1)
807            CH06 (Arg0, 0x33, 0x2F)
808            Divide (I000, M000 (), Local2, Local1)
809            CH06 (Arg0, 0x34, 0x2F)
810            /* Fatal */
811
812            Fatal (0xFF, 0xFFFFFFFF, M000 ())
813            CH06 (Arg0, 0x35, 0x2F)
814            /* Index */
815
816            Local1 = M000 () [0x00]
817            CH06 (Arg0, 0x38, 0x2F)
818            Index ("0", M000 (), Local1)
819            CH06 (Arg0, 0x39, 0x2F)
820            /* LEqual */
821
822            Local1 = (M000 () == I000)
823            CH06 (Arg0, 0x3A, 0x2F)
824            Local1 = (I000 == M000 ())
825            CH06 (Arg0, 0x3B, 0x2F)
826            /* LGreater */
827
828            Local1 = (M000 () > I000)
829            CH06 (Arg0, 0x3C, 0x2F)
830            Local1 = (I000 > M000 ())
831            CH06 (Arg0, 0x3D, 0x2F)
832            /* LGreaterEqual */
833
834            Local1 = (M000 () >= I000)
835            CH06 (Arg0, 0x3E, 0xFF)
836            Local1 = (I000 >= M000 ())
837            CH06 (Arg0, 0x3F, 0xFF)
838            /* LLess */
839
840            Local1 = (M000 () < I000)
841            CH06 (Arg0, 0x40, 0x2F)
842            Local1 = (I000 < M000 ())
843            CH06 (Arg0, 0x41, 0x2F)
844            /* LLessEqual */
845
846            Local1 = (M000 () <= I000)
847            CH06 (Arg0, 0x42, 0xFF)
848            Local1 = (I000 <= M000 ())
849            CH06 (Arg0, 0x43, 0xFF)
850            /* LNotEqual */
851
852            Local1 = (M000 () != I000)
853            CH06 (Arg0, 0x44, 0xFF)
854            Local1 = (I000 != M000 ())
855            CH06 (Arg0, 0x45, 0xFF)
856            /* LOr */
857
858            Local1 = (M000 () || I000)
859            CH06 (Arg0, 0x46, 0x2F)
860            Local1 = (I000 || M000 ())
861            CH06 (Arg0, 0x47, 0x2F)
862            /* Mod */
863
864            Local1 = (M000 () % I000) /* \M4B6.M004.I000 */
865            CH06 (Arg0, 0x4A, 0x2F)
866            Local1 = (I000 % M000 ())
867            CH06 (Arg0, 0x4B, 0x2F)
868            /* Multiply */
869
870            Local1 = (M000 () * I000) /* \M4B6.M004.I000 */
871            CH06 (Arg0, 0x4E, 0x2F)
872            Local1 = (I000 * M000 ())
873            CH06 (Arg0, 0x4F, 0x2F)
874            /* NAnd */
875
876            NAnd (M000 (), I000, Local1)
877            CH06 (Arg0, 0x52, 0x2F)
878            NAnd (I000, M000 (), Local1)
879            CH06 (Arg0, 0x53, 0x2F)
880            /* NOr */
881
882            NOr (M000 (), I000, Local1)
883            CH06 (Arg0, 0x56, 0x2F)
884            NOr (I000, M000 (), Local1)
885            CH06 (Arg0, 0x57, 0x2F)
886            /* Or */
887
888            Local1 = (M000 () | I000) /* \M4B6.M004.I000 */
889            CH06 (Arg0, 0x5A, 0x2F)
890            Local1 = (I000 | M000 ())
891            CH06 (Arg0, 0x5B, 0x2F)
892            /* ShiftLeft */
893
894            Local1 = (M000 () << I000) /* \M4B6.M004.I000 */
895            CH06 (Arg0, 0x5E, 0x2F)
896            Local1 = (I000 << M000 ())
897            CH06 (Arg0, 0x5F, 0x2F)
898            /* ShiftRight */
899
900            Local1 = (M000 () >> I000) /* \M4B6.M004.I000 */
901            CH06 (Arg0, 0x62, 0x2F)
902            Local1 = (I000 >> M000 ())
903            CH06 (Arg0, 0x63, 0x2F)
904            /* Subtract */
905
906            Local1 = (M000 () - I000) /* \M4B6.M004.I000 */
907            CH06 (Arg0, 0x66, 0x2F)
908            Local1 = (I000 - M000 ())
909            CH06 (Arg0, 0x67, 0x2F)
910            /* ToString */
911
912            ToString (M000 (), 0x01, Local1)
913            CH06 (Arg0, 0x6A, 0x2F)
914            ToString (I000, M000 (), Local1)
915            CH06 (Arg0, 0x6B, 0x2F)
916            /* Wait */
917
918            Local1 = Wait (M000 (), I000)
919            CH06 (Arg0, 0x6C, 0x2F)
920            Local1 = Wait (E000, M000 ())
921            CH06 (Arg0, 0x6D, 0x2F)
922            /* XOr */
923
924            Local1 = (M000 () ^ I000) /* \M4B6.M004.I000 */
925            CH06 (Arg0, 0x70, 0x2F)
926            Local1 = (I000 ^ M000 ())
927            CH06 (Arg0, 0x71, 0x2F)
928            /* Mid */
929
930            Mid (M000 (), 0x01, 0x01, Local1)
931            CH06 (Arg0, 0x75, 0x2F)
932            Mid ("123", M000 (), 0x01, Local1)
933            CH06 (Arg0, 0x76, 0x2F)
934            Mid ("123", 0x01, M000 (), Local1)
935            CH06 (Arg0, 0x77, 0x2F)
936            /* Match */
937
938            Local1 = Match (M000 (), MTR, 0x00, MTR, 0x00, 0x00)
939            CH06 (Arg0, 0x78, 0x2F)
940            Local1 = Match (Package (0x01)
941                    {
942                        0x01
943                    }, MTR, M000 (), MTR, 0x00, 0x00)
944            CH06 (Arg0, 0x79, 0x2F)
945            Local1 = Match (Package (0x01)
946                    {
947                        0x01
948                    }, MTR, 0x00, MTR, M000 (), 0x00)
949            CH06 (Arg0, 0x7A, 0x2F)
950            Local1 = Match (Package (0x01)
951                    {
952                        0x01
953                    }, MTR, 0x00, MTR, 0x00, M000 ())
954            CH06 (Arg0, 0x7B, 0x2F)
955        }
956
957        /* Reference to Object as Result of Method invocation */
958
959        Method (M005, 1, Serialized)
960        {
961            Device (DEV2)
962            {
963            }
964
965            Name (I000, 0x00) /* Label to check m000 invocations */
966            Method (M000, 2, NotSerialized)
967            {
968                I000 = Arg0
969                If ((Arg1 == 0x00))
970                {
971                    Local0 = RefOf (DEV0)
972                }
973                ElseIf ((Arg1 == 0x01))
974                {
975                    Local0 = RefOf (DEV2)
976                }
977
978                Return (Local0)
979            }
980
981            Method (CH00, 2, NotSerialized)
982            {
983                If ((I000 != Arg1))
984                {
985                    ERR (Arg0, Z098, __LINE__, 0x00, 0x00, I000, Arg1)
986                }
987            }
988
989            Name (LPN0, 0x02)
990            Name (LPC0, 0x00)
991            While (LPN0)
992            {
993                Local0 = (0x03 * LPC0) /* \M4B6.M005.LPC0 */
994                I000 = 0x00
995                Local1 = DerefOf (M000 (0x01, LPC0))
996                CH03 (__METHOD__, Z098, __LINE__, 0x00, 0x00)
997                CH00 (Arg0, 0x01)
998                Local1 = DerefOf (DerefOf (M000 (0x02, LPC0)))
999                CH06 (Arg0, (0x01 + Local0), 0x2F)
1000                CH00 (Arg0, 0x02)
1001                Store (DerefOf (M000 (0x03, LPC0)) [0x00], Local1)
1002                CH06 (Arg0, (0x02 + Local0), 0x2F)
1003                CH00 (Arg0, 0x03)
1004                Local1 = Match (DerefOf (M000 (0x04, LPC0)), MTR, 0x00, MTR, 0x00, 0x00)
1005                CH06 (Arg0, (0x03 + Local0), 0x2F)
1006                CH00 (Arg0, 0x04)
1007                LPN0--
1008                LPC0++
1009            }
1010        }
1011
1012        CH03 (__METHOD__, Z098, __LINE__, 0x00, 0x00)
1013        /* Local Named Object */
1014        /*	m000(ts) */
1015        /* Global Named Object */
1016        /*	m001(ts) */
1017        /* Local */
1018        M002 (Concatenate (__METHOD__, "-m002"))
1019        /* Reference to Local Named Object */
1020
1021        M003 (Concatenate (__METHOD__, "-m003-RefLocName"), RefOf (DEV1), 0x01)
1022        Local0 = RefOf (DEV1)
1023        M003 (Concatenate (__METHOD__, "-m003-RefLocName2"), Local0, 0x01)
1024        CondRefOf (DEV1, Local0)
1025        M003 (Concatenate (__METHOD__, "-m003-CondRefLocName"), Local0, 0x01)
1026        M003 (Concatenate (__METHOD__, "-m003-RefGlobName"), RefOf (DEV0), 0x01)
1027        Local0 = RefOf (DEV0)
1028        M003 (Concatenate (__METHOD__, "-m003-RefGlobName2"), Local0, 0x01)
1029        CondRefOf (DEV0, Local0)
1030        M003 (Concatenate (__METHOD__, "-m003-CondRefGlobName"), Local0, 0x01)
1031        /* Reference to Object as element of Package */
1032
1033        Name (PP00, Package (0x01)
1034        {
1035            DEV0
1036        })
1037        If (Y113)
1038        {
1039            M003 (Concatenate (__METHOD__, "-m003-Index"), PP00 [0x00], 0x00)
1040        }
1041
1042        Store (PP00 [0x00], Local1)
1043        M003 (Concatenate (__METHOD__, "-m003-Index2"), Local1, 0x00)
1044        If (Y113)
1045        {
1046            M003 (Concatenate (__METHOD__, "-m003-Index3"), Local2 = PP00 [0x00], 0x00)
1047        }
1048
1049        Local3 = PP00 [0x00]
1050        M003 (Concatenate (__METHOD__, "-m003-Index4"), Local3, 0x00)
1051        Local5 = Local4 = PP00 [0x00]
1052        M003 (Concatenate (__METHOD__, "-m003-Index5"), Local5, 0x00)
1053        /* Result of Method invocation */
1054
1055        M004 (Concatenate (__METHOD__, "-m004"))
1056        /* Reference to Object as Result of Method invocation */
1057
1058        M005 (Concatenate (__METHOD__, "-m005"))
1059    }
1060