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     * Miscellaneous named object creation
30     */
31    Name (Z134, 0x86)
32    /*
33     * This sub-test is intended to comprehensively verify
34     * the Function declaration syntax implementation.
35     *
36     * Declare the Function Control Method Objects of different,
37     * signature check that properly specified or default arguments
38     * values provide required functionality.
39     *
40     * The overall functionality of the Function Objects is indirectly
41     * verified by other tests as far as "Functions are equivalent to a
42     * Method that specifies NotSerialized".
43     *
44     *    17.5.49    Function (Declare Control Method)
45     *    Syntax
46     * Function (FunctionName, ReturnType, ParameterTypes) {TermList}
47     *
48     *    Validated Assertions:
49     *
50     * - Function declaration creates an Object in the ACPI
51     *   namespace which can be referred by the specified FunctionName
52     *   either to initiate its invocation or to obtain its AML Object
53     *   type. Also FunctionName can be used to save a copy of the Object
54     *   or a reference to it in another AML Object.
55     *
56     * - ASL compiler should allow only a Namestring data type in the
57     *   FunctionName position.
58     *
59     * - ASL compiler should allow only an ObjectTypeKeyword or
60     *   a comma-separated ObjectTypeKeywords enclosed with curly
61     *   brackets (OTK package) in the ReturnType position. ReturnType
62     *   is optional argument. If no ReturnType is specified, ReturnType
63     *   UnknownObj is assumed.
64     *   ObjectTypeKeyword := UnknownObj | IntObj | StrObj | BuffObj |
65     *                        PkgObj | FieldUnitObj | DeviceObj | EventObj |
66     *                        MethodObj | MutexObj | OpRegionObj | PowerResObj |
67     *                        ThermalZoneObj | BuffFieldObj | DDBHandleObj
68     *
69     * - ASL compiler should report an error when an actual Object specified
70     *   to be returned is of inappropriate type.
71     *
72     * - ASL compiler should report an error when there is at least one
73     *   control path in the method that returns no any actual Object.
74     *
75     * - ASL compiler should report an error when some different from
76     *   UnknownObj ObjectType Keyword specified in the ReturnType position
77     *   but no any actual Object specified to be returned.
78     *
79     * - ASL compiler should allow only an OTK package or a package
80     *   containing OTK packages along with ObjectTypeKeywords in the
81     *   ParameterTypes position.
82     *
83     * - ASL compiler should report an error when ParameterTypes is specified
84     *   and the number of members in the ParameterTypes package exceeds 7.
85     *
86     * - If ParameterTypes is not specified, then the number of parameters
87     *   is Zero.
88     *
89     * - ASL compiler should report an error when an actual Object
90     *   specified to be a respective argument of the Method is of
91     *   inappropriate type.
92     *
93     * - System software should execute a Function control method
94     *   by referencing the objects in the Function body in order.
95     *
96     * - Function opens a name scope. All namespace references that occur
97     *   during the method execution are relative to the Function package
98     *   location.
99     *
100     * - All namespace objects created by a Function should be destroyed
101     *   when Function execution exits.
102     *
103     */
104    Scope (\_SB)
105    {
106        Method (M20D, 0, NotSerialized)
107        {
108        }
109    }
110
111    Method (M20E, 0, Serialized)
112    {
113        Method (M316, 0, NotSerialized)
114        {
115            Method (MM00, 0, NotSerialized)
116            {
117                Return ("\\m20e.m316.mm00")
118            }
119
120            Method (\_SB.M20D.MM00, 0, NotSerialized)
121            {
122                Return ("\\_SB.m20d.mm00")
123            }
124
125            M205 (__METHOD__, 0x01, ObjectType (MM00), 0x08)
126            M205 (__METHOD__, 0x02, MM00 (), "\\m20e.m316.mm00")
127            M205 (__METHOD__, 0x03, ObjectType (\M20E.M316.MM00), 0x08)
128            M205 (__METHOD__, 0x04, \M20E.M316.MM00 (), "\\m20e.m316.mm00")
129            M205 (__METHOD__, 0x05, ObjectType (^M316.MM00), 0x08)
130            M205 (__METHOD__, 0x06, ^M316.MM00 (), "\\m20e.m316.mm00")
131            M205 (__METHOD__, 0x07, ObjectType (\_SB.M20D.MM00), 0x08)
132            M205 (__METHOD__, 0x08, \_SB.M20D.MM00 (), "\\_SB.m20d.mm00")
133        }
134
135        Method (M317, 0, NotSerialized)
136        {
137            Method (MM10, 0, NotSerialized)
138            {
139                Return ("\\m20e.m317.mm10")
140            }
141
142            Method (MM20, 0, NotSerialized)
143            {
144                Return ("\\m20e.m317.mm20")
145            }
146
147            Method (MM30, 0, NotSerialized)
148            {
149                Return ("\\m20e.m317.mm30")
150            }
151
152            M205 (__METHOD__, 0x09, ObjectType (MM10), 0x08)
153            M205 (__METHOD__, 0x0A, MM10 (), "\\m20e.m317.mm10")
154            M205 (__METHOD__, 0x0B, ObjectType (MM20), 0x08)
155            M205 (__METHOD__, 0x0C, MM20 (), "\\m20e.m317.mm20")
156            M205 (__METHOD__, 0x0D, ObjectType (MM30), 0x08)
157            If (Y157)
158            {
159                M205 (__METHOD__, 0x0E, MM30 (), "\\m20e.m317.mm30")
160            }
161        }
162
163        /* Integer */
164
165        Name (INT0, 0xFEDCBA9876543210)
166        /* String */
167
168        Name (STR0, "source string")
169        /* Buffer */
170
171        Name (BUF0, Buffer (0x09)
172        {
173            /* 0000 */  0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02,  // ........
174            /* 0008 */  0x01                                             // .
175        })
176        /* Initializer of Fields */
177
178        Name (BUF2, Buffer (0x09)
179        {
180            /* 0000 */  0x95, 0x85, 0x75, 0x65, 0x55, 0x45, 0x35, 0x25,  // ..ueUE5%
181            /* 0008 */  0x15                                             // .
182        })
183        /* Base of Buffer Fields */
184
185        Name (BUFZ, Buffer (0x30){})
186        /* Package */
187
188        Name (PAC0, Package (0x03)
189        {
190            0xFEDCBA987654321F,
191            "test package",
192            Buffer (0x09)
193            {
194                /* 0000 */  0x13, 0x12, 0x11, 0x10, 0x0F, 0x0E, 0x0D, 0x0C,  // ........
195                /* 0008 */  0x0B                                             // .
196            }
197        })
198        /* Operation Region */
199
200        OperationRegion (OPR0, SystemMemory, 0x00, 0x30)
201        /* Field Unit */
202
203        Field (OPR0, ByteAcc, NoLock, Preserve)
204        {
205            FLU0,   69,
206            FLU2,   64,
207            FLU4,   32
208        }
209
210        /* Device */
211
212        Device (DEV0)
213        {
214            Name (S000, "DEV0")
215        }
216
217        /* Event */
218
219        Event (EVE0)
220        /* Method */
221
222        Method (MMM0, 0, NotSerialized)
223        {
224            Return ("ff0X")
225        }
226
227        /* Mutex */
228
229        Mutex (MTX0, 0x00)
230        /* Power Resource */
231
232        PowerResource (PWR0, 0x00, 0x0000)
233        {
234            Name (S000, "PWR0")
235        }
236
237        /* Processor */
238
239        Processor (CPU0, 0x00, 0xFFFFFFFF, 0x00)
240        {
241            Name (S000, "CPU0")
242        }
243
244        /* Thermal Zone */
245
246        ThermalZone (TZN0)
247        {
248            Name (S000, "TZN0")
249        }
250
251        /* Buffer Field */
252
253        CreateField (BUFZ, 0x00, 0x45, BFL0)
254        CreateField (BUFZ, 0x50, 0x40, BFL2)
255        CreateField (BUFZ, 0xA0, 0x20, BFL4)
256        /* DDBHandle */
257
258        Name (DDB0, Ones)
259        /* Reference */
260
261        Name (ORF0, "ORF0")
262        Name (REF0, Package (0x01){})
263        Method (M318, 0, NotSerialized)
264        {
265            Method (MM00, 1, NotSerialized)
266            {
267                Arg0 = (DerefOf (Arg0) + 0x01)
268            }
269
270            Method (MM01, 0, NotSerialized)
271            {
272                Return (INT0) /* \M20E.INT0 */
273            }
274
275            Method (MM11, 0, NotSerialized)
276            {
277                Return (INT0) /* \M20E.INT0 */
278            }
279
280            Method (MM02, 0, NotSerialized)
281            {
282                Return (STR0) /* \M20E.STR0 */
283            }
284
285            Method (MM03, 0, NotSerialized)
286            {
287                Return (BUF0) /* \M20E.BUF0 */
288            }
289
290            Method (MM04, 0, NotSerialized)
291            {
292                Return (PAC0) /* \M20E.PAC0 */
293            }
294
295            Method (MM05, 0, NotSerialized)
296            {
297                Return (FLU0) /* \M20E.FLU0 */
298            }
299
300            Method (MM06, 0, NotSerialized)
301            {
302                Return (DEV0) /* \M20E.DEV0 */
303            }
304
305            Method (MM07, 0, NotSerialized)
306            {
307                Return (EVE0) /* \M20E.EVE0 */
308            }
309
310            Method (MM08, 0, NotSerialized)
311            {
312                CopyObject (MMM0 (), Local0)
313                Return (Local0)
314            }
315
316            Method (MM09, 0, NotSerialized)
317            {
318                Return (MTX0) /* \M20E.MTX0 */
319            }
320
321            Method (MM0A, 0, NotSerialized)
322            {
323                Return (OPR0) /* \M20E.OPR0 */
324            }
325
326            Method (MM0B, 0, NotSerialized)
327            {
328                Return (PWR0) /* \M20E.PWR0 */
329            }
330
331            Method (MM0C, 0, NotSerialized)
332            {
333                Return (CPU0) /* \M20E.CPU0 */
334            }
335
336            Method (MM0D, 0, NotSerialized)
337            {
338                Return (TZN0) /* \M20E.TZN0 */
339            }
340
341            Method (MM0E, 0, NotSerialized)
342            {
343                Return (BFL0) /* \M20E.BFL0 */
344            }
345
346            Method (MM0F, 0, NotSerialized)
347            {
348                Return (DDB0) /* \M20E.DDB0 */
349            }
350
351            /* Formal declaration */
352            /*		Function(mm0g, DebugObj) {Return (Debug)} */
353            Method (MM0H, 0, NotSerialized)
354            {
355                Return (RefOf (ORF0))
356            }
357
358            Local0 = 0xFEDCBA9876543210
359            M205 (__METHOD__, 0x0F, ObjectType (MM00), 0x08)
360            /*
361             // Bug 148
362             mm00(Refof(Local0))
363             m205(ts, 16, Local0, 0xfedcba9876543211)
364             */
365            M205 (__METHOD__, 0x11, ObjectType (MM01), 0x08)
366            M205 (__METHOD__, 0x12, MM01 (), INT0)
367            M205 (__METHOD__, 0x13, ObjectType (MM02), 0x08)
368            M205 (__METHOD__, 0x14, MM02 (), STR0)
369            M205 (__METHOD__, 0x15, ObjectType (MM03), 0x08)
370            M205 (__METHOD__, 0x16, MM03 (), BUF0)
371            M205 (__METHOD__, 0x17, ObjectType (MM04), 0x08)
372            M205 (__METHOD__, 0x18, MM04 (), PAC0)
373            M205 (__METHOD__, 0x19, ObjectType (MM05), 0x08)
374            M205 (__METHOD__, 0x1A, MM05 (), FLU0)
375            M205 (__METHOD__, 0x1B, ObjectType (MM06), 0x08)
376            M205 (__METHOD__, 0x1C, MM06 (), DEV0)
377            M205 (__METHOD__, 0x1D, ObjectType (MM07), 0x08)
378            M205 (__METHOD__, 0x1E, MM07 (), EVE0)
379            M205 (__METHOD__, 0x1F, ObjectType (MM08), 0x08)
380            CopyObject (MMM0 (), Local0)
381            M205 (__METHOD__, 0x20, MM08 (), Local0)
382            M205 (__METHOD__, 0x21, ObjectType (MM09), 0x08)
383            M205 (__METHOD__, 0x22, MM09 (), MTX0)
384            M205 (__METHOD__, 0x23, ObjectType (MM0A), 0x08)
385            M205 (__METHOD__, 0x24, MM0A (), OPR0)
386            M205 (__METHOD__, 0x25, ObjectType (MM0B), 0x08)
387            M205 (__METHOD__, 0x26, MM0B (), PWR0)
388            M205 (__METHOD__, 0x27, ObjectType (MM0C), 0x08)
389            M205 (__METHOD__, 0x28, MM0C (), CPU0)
390            M205 (__METHOD__, 0x29, ObjectType (MM0D), 0x08)
391            If (Y350)
392            {
393                M205 (__METHOD__, 0x2A, MM0D (), TZN0)
394            }
395
396            M205 (__METHOD__, 0x2B, ObjectType (MM0E), 0x08)
397            M205 (__METHOD__, 0x2C, MM0E (), BFL0)
398            M205 (__METHOD__, 0x2D, ObjectType (MM0F), 0x08)
399            M205 (__METHOD__, 0x2E, MM0F (), DDB0)
400            /*
401             m205(ts, 47, ObjectType(mm0g), 8)
402             m205(ts, 48, mm0g(), Debug)
403             */
404            M205 (__METHOD__, 0x31, ObjectType (MM0H), 0x08)
405            M205 (__METHOD__, 0x32, DerefOf (MM0H ()), ORF0)
406        }
407
408        Method (M319, 0, NotSerialized)
409        {
410            Method (MM00, 0, NotSerialized)
411            {
412                Return (STR0) /* \M20E.STR0 */
413            }
414
415            Method (MM01, 0, NotSerialized)
416            {
417                Return (INT0) /* \M20E.INT0 */
418            }
419
420            M205 (__METHOD__, 0x33, ObjectType (MM00), 0x08)
421            M205 (__METHOD__, 0x34, MM00 (), STR0)
422            M205 (__METHOD__, 0x35, ObjectType (MM01), 0x08)
423            M205 (__METHOD__, 0x36, MM01 (), INT0)
424        }
425
426        Method (M31A, 0, Serialized)
427        {
428            Name (FLAG, Ones)
429            /* List of types of the parameters contains the same keyword */
430
431            Method (MM00, 1, NotSerialized)
432            {
433                FLAG = 0x00
434            }
435
436            Method (MM01, 1, NotSerialized)
437            {
438                FLAG = 0x01
439            }
440
441            Method (MM02, 2, NotSerialized)
442            {
443                FLAG = 0x02
444            }
445
446            Method (MM03, 3, NotSerialized)
447            {
448                FLAG = 0x03
449            }
450
451            Method (MM04, 4, NotSerialized)
452            {
453                FLAG = 0x04
454            }
455
456            Method (MM05, 5, NotSerialized)
457            {
458                FLAG = 0x05
459            }
460
461            Method (MM06, 6, NotSerialized)
462            {
463                FLAG = 0x06
464            }
465
466            Method (MM07, 7, NotSerialized)
467            {
468                FLAG = 0x07
469            }
470
471            /* List of types of the parameters contains the UnknownObj keyword */
472
473            Method (MM08, 1, NotSerialized)
474            {
475                FLAG = 0x08
476            }
477
478            Method (MM09, 1, NotSerialized)
479            {
480                FLAG = 0x09
481            }
482
483            Method (MM0A, 7, NotSerialized)
484            {
485                FLAG = 0x0A
486            }
487
488            /* List of types of the parameters contains different keywords */
489
490            Method (MM10, 2, NotSerialized)
491            {
492                FLAG = 0x10
493            }
494
495            Method (MM11, 2, NotSerialized)
496            {
497                FLAG = 0x11
498            }
499
500            Method (MM12, 2, NotSerialized)
501            {
502                FLAG = 0x12
503            }
504
505            Method (MM13, 3, NotSerialized)
506            {
507                FLAG = 0x13
508            }
509
510            Method (MM14, 4, NotSerialized)
511            {
512                FLAG = 0x14
513            }
514
515            Method (MM15, 5, NotSerialized)
516            {
517                FLAG = 0x15
518            }
519
520            Method (MM16, 6, NotSerialized)
521            {
522                FLAG = 0x16
523            }
524
525            Method (MM17, 7, NotSerialized)
526            {
527                FLAG = 0x17
528            }
529
530            Method (MM18, 7, NotSerialized)
531            {
532                FLAG = 0x18
533            }
534
535            /* List of types of the parameters contains keyword packages */
536            /* along with different keywords */
537            Method (MM20, 1, NotSerialized)
538            {
539                FLAG = 0x20
540            }
541
542            Method (MM21, 2, NotSerialized)
543            {
544                FLAG = 0x21
545            }
546
547            /*
548             // Bug 148
549             Function(mm22, , {{IntObj, StrObj, BuffObj, PkgObj,
550             FieldUnitObj, DeviceObj, EventObj, MethodObj,
551             MutexObj, OpRegionObj, PowerResObj, ProcessorObj,
552             ThermalZoneObj, BuffFieldObj, DDBHandleObj}}) {Store(34, Flag)}
553             */
554            Method (MM23, 2, NotSerialized)
555            {
556                FLAG = 0x23
557            }
558
559            Method (MM24, 2, NotSerialized)
560            {
561                FLAG = 0x24
562            }
563
564            Method (MM25, 2, NotSerialized)
565            {
566                FLAG = 0x25
567            }
568
569            Method (MM26, 2, NotSerialized)
570            {
571                FLAG = 0x26
572            }
573
574            Method (MM27, 2, NotSerialized)
575            {
576                FLAG = 0x27
577            }
578
579            Method (MM28, 2, NotSerialized)
580            {
581                FLAG = 0x28
582            }
583
584            Method (MM29, 2, NotSerialized)
585            {
586                FLAG = 0x29
587            }
588                /*
589         // Bug 148
590         Function(mm3a, , {
591         {IntObj, StrObj, BuffObj, PkgObj, FieldUnitObj, DeviceObj, EventObj, MethodObj,
592         MutexObj, OpRegionObj, PowerResObj, ThermalZoneObj, BuffFieldObj, DDBHandleObj},
593         {IntObj, StrObj, BuffObj, PkgObj, FieldUnitObj, DeviceObj, EventObj, MethodObj,
594         MutexObj, OpRegionObj, PowerResObj, ThermalZoneObj, BuffFieldObj, DDBHandleObj},
595         {IntObj, StrObj, BuffObj, PkgObj, FieldUnitObj, DeviceObj, EventObj, MethodObj,
596         MutexObj, OpRegionObj, PowerResObj, ThermalZoneObj, BuffFieldObj, DDBHandleObj},
597         {IntObj, StrObj, BuffObj, PkgObj, FieldUnitObj, DeviceObj, EventObj, MethodObj,
598         MutexObj, OpRegionObj, PowerResObj, ThermalZoneObj, BuffFieldObj, DDBHandleObj},
599         {IntObj, StrObj, BuffObj, PkgObj, FieldUnitObj, DeviceObj, EventObj, MethodObj,
600         MutexObj, OpRegionObj, PowerResObj, ThermalZoneObj, BuffFieldObj, DDBHandleObj},
601         {IntObj, StrObj, BuffObj, PkgObj, FieldUnitObj, DeviceObj, EventObj, MethodObj,
602         MutexObj, OpRegionObj, PowerResObj, ThermalZoneObj, BuffFieldObj, DDBHandleObj},
603         {IntObj, StrObj, BuffObj, PkgObj, FieldUnitObj, DeviceObj, EventObj, MethodObj,
604         MutexObj, OpRegionObj, PowerResObj, ThermalZoneObj, BuffFieldObj, DDBHandleObj},
605         }) {Store(42, Flag)}
606         */
607        /*
608         // Bug 148
609         // List of types of the parameters contains the same keyword
610         m205(ts, 55, ObjectType(mm00), 8)
611         mm00(1)
612         m205(ts, 56, Flag, 0)
613         m205(ts, 57, ObjectType(mm01), 8)
614         mm01(1)
615         m205(ts, 58, Flag, 1)
616         m205(ts, 59, ObjectType(mm02), 8)
617         mm02(1, 2)
618         m205(ts, 60, Flag, 2)
619         m205(ts, 61, ObjectType(mm03), 8)
620         mm03(1, 2, 3)
621         m205(ts, 62, Flag, 3)
622         m205(ts, 63, ObjectType(mm04), 8)
623         mm04(1, 2, 3, 4)
624         m205(ts, 64, Flag, 4)
625         m205(ts, 65, ObjectType(mm05), 8)
626         mm05(1, 2, 3, 4, 5)
627         m205(ts, 66, Flag, 5)
628         m205(ts, 67, ObjectType(mm06), 8)
629         mm06(1, 2, 3, 4, 5, 6)
630         m205(ts, 68, Flag, 6)
631         m205(ts, 69, ObjectType(mm07), 8)
632         mm07(1, 2, 3, 4, 5, 6, 7)
633         m205(ts, 70, Flag, 7)
634         // List of types of the parameters contains the UnknownObj keyword
635         m205(ts, 71, ObjectType(mm08), 8)
636         mm08(1)
637         m205(ts, 72, Flag, 8)
638         m205(ts, 73, ObjectType(mm09), 8)
639         mm09(1)
640         m205(ts, 74, Flag, 9)
641         m205(ts, 75, ObjectType(mm0a), 8)
642         mm08(1, 2, 3, 4, 5, 6, 7)
643         m205(ts, 76, Flag, 10)
644         // List of types of the parameters contains different keywords
645         m205(ts, 77, ObjectType(mm10), 8)
646         mm10(1, 2)
647         m205(ts, 78, Flag, 16)
648         m205(ts, 79, ObjectType(mm11), 8)
649         mm11(1, 2)
650         m205(ts, 80, Flag, 17)
651         m205(ts, 81, ObjectType(mm12), 8)
652         mm12(1, 2)
653         m205(ts, 82, Flag, 18)
654         m205(ts, 83, ObjectType(mm13), 8)
655         mm13(1, 2, 3)
656         m205(ts, 84, Flag, 19)
657         m205(ts, 85, ObjectType(mm14), 8)
658         mm14(1, 2, 3, 4)
659         m205(ts, 86, Flag, 20)
660         m205(ts, 87, ObjectType(mm15), 8)
661         mm15(1, 2, 3, 4, 5)
662         m205(ts, 88, Flag, 21)
663         m205(ts, 89, ObjectType(mm16), 8)
664         mm16(1, 2, 3, 4, 5, 6)
665         m205(ts, 90, Flag, 22)
666         m205(ts, 91, ObjectType(mm17), 8)
667         mm17(1, 2, 3, 4, 5, 6, 7)
668         m205(ts, 92, Flag, 23)
669         m205(ts, 93, ObjectType(mm18), 8)
670         mm18(1, 2, 3, 4, 5, 6, 7)
671         m205(ts, 94, Flag, 24)
672         // List of types of the parameters contains keyword packages
673         // along with different keywords
674         m205(ts, 95, ObjectType(mm20), 8)
675         mm20(1)
676         m205(ts, 96, Flag, 32)
677         m205(ts, 97, ObjectType(mm21), 8)
678         mm21(1)
679         m205(ts, 98, Flag, 33)
680         m205(ts, 99, ObjectType(mm22), 8)
681         mm22(1)
682         m205(ts, 100, Flag, 34)
683         m205(ts, 101, ObjectType(mm23), 8)
684         mm23(1, 2)
685         m205(ts, 102, Flag, 35)
686         m205(ts, 103, ObjectType(mm24), 8)
687         mm24(1, 2)
688         m205(ts, 104, Flag, 36)
689         m205(ts, 105, ObjectType(mm25), 8)
690         mm25(1, 2)
691         m205(ts, 106, Flag, 37)
692         m205(ts, 107, ObjectType(mm26), 8)
693         mm26(1, 2)
694         m205(ts, 108, Flag, 38)
695         m205(ts, 109, ObjectType(mm27), 8)
696         mm27(1, 2)
697         m205(ts, 110, Flag, 39)
698         m205(ts, 149, ObjectType(mm28), 8)
699         mm28(1, 2)
700         m205(ts, 111, Flag, 40)
701         m205(ts, 112, ObjectType(mm29), 8)
702         mm29(1, 2)
703         m205(ts, 113, Flag, 41)
704         m205(ts, 114, ObjectType(mm2a), 8)
705         mm2a(1, 2, 3, 4, 5, 6, 7)
706         m205(ts, 115, Flag, 42)
707         */
708        }
709
710        SRMT ("m316")
711        M316 ()
712        SRMT ("m317")
713        M317 ()
714        SRMT ("m318")
715        M318 ()
716        SRMT ("m319")
717        M319 ()
718        SRMT ("m31a")
719        M31A ()
720    }
721
722    /* Run-method */
723
724    Method (NM02, 0, NotSerialized)
725    {
726        Debug = "TEST: NM02, Declare Function Control Method Named Object"
727        M20E ()
728        CH03 ("NM02", Z134, __LINE__, 0x00, 0x00)
729    }
730