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     *  Integer
30     *
31     * (verify exceptions caused by the imprope use of Integer type objects)
32     */
33    Name (Z093, 0x5D)
34    Name (I100, 0xABCD1234)
35    /* Expected exceptions: */
36    /* */
37    /* 47 - AE_AML_OPERAND_TYPE */
38    /* Note: an object reference is defined by spec */
39    /* to be an Integer, nevertheless it is supposed */
40    /* that the product should distinguish Integer Data */
41    /* from a reference. */
42    /* */
43    Method (M4B1, 1, Serialized)
44    {
45        Name (I000, 0x76543210)
46        Event (E000)
47        /* Local Named Object */
48
49        Method (M000, 1, Serialized)
50        {
51            Name (I000, 0x89ABCDEF)
52            /* DerefOf */
53
54            If (Y083)
55            {
56                Local1 = DerefOf (I000)
57                CH06 (Arg0, 0x00, 0x2F)
58            }
59
60            /* Index */
61
62            Local1 = I000 [0x00]
63            CH06 (Arg0, 0x02, 0x2F)
64            /* ConcatenateResTemplate */
65
66            ConcatenateResTemplate (I000, Buffer (0x02)
67                {
68                     0x79, 0x00                                       // y.
69                }, Local1)
70            CH06 (Arg0, 0x05, 0x2F)
71            ConcatenateResTemplate (Buffer (0x02)
72                {
73                     0x79, 0x00                                       // y.
74                }, I000, Local1)
75            CH06 (Arg0, 0x06, 0x2F)
76        }
77
78        /* Global Named Object */
79
80        Method (M001, 1, NotSerialized)
81        {
82            /* DerefOf */
83
84            If (Y083)
85            {
86                Local1 = DerefOf (I100)
87                CH06 (Arg0, 0x07, 0x2F)
88            }
89
90            /* Index */
91
92            Local1 = I100 [0x00]
93            CH06 (Arg0, 0x09, 0x2F)
94            /* ConcatenateResTemplate */
95
96            ConcatenateResTemplate (I100, Buffer (0x02)
97                {
98                     0x79, 0x00                                       // y.
99                }, Local1)
100            CH06 (Arg0, 0x0C, 0x2F)
101            ConcatenateResTemplate (Buffer (0x02)
102                {
103                     0x79, 0x00                                       // y.
104                }, I100, Local1)
105            CH06 (Arg0, 0x0D, 0x2F)
106        }
107
108        /* Argument */
109
110        Method (M002, 2, NotSerialized)
111        {
112            /* DerefOf */
113
114            Local1 = DerefOf (Arg1)
115            CH06 (Arg0, 0x0E, 0x2F)
116            /* Release */
117
118            Release (Arg1)
119            CH06 (Arg0, 0x0F, 0x2F)
120            /* Reset */
121
122            Reset (Arg1)
123            CH06 (Arg0, 0x10, 0x2F)
124            /* Signal */
125
126            Signal (Arg1)
127            CH06 (Arg0, 0x11, 0x2F)
128            /* Acquire */
129
130            Local1 = Acquire (Arg1, 0x0000)
131            CH06 (Arg0, 0x12, 0x2F)
132            /* ConcatenateResTemplate */
133
134            ConcatenateResTemplate (Arg1, Buffer (0x02)
135                {
136                     0x79, 0x00                                       // y.
137                }, Local1)
138            CH06 (Arg0, 0x15, 0x2F)
139            ConcatenateResTemplate (Buffer (0x02)
140                {
141                     0x79, 0x00                                       // y.
142                }, Arg1, Local1)
143            CH06 (Arg0, 0x16, 0x2F)
144            /* Index */
145
146            Local1 = Arg1 [0x00]
147            CH06 (Arg0, 0x18, 0x2F)
148            /* Wait */
149
150            Local1 = Wait (Arg1, 0x00)
151            CH06 (Arg0, 0x19, 0x2F)
152            /* Match */
153
154            Local1 = Match (Arg1, MTR, 0x00, MTR, 0x00, 0x00)
155            CH06 (Arg0, 0x1A, 0x2F)
156        }
157
158        /* Local */
159
160        Method (M003, 1, NotSerialized)
161        {
162            Local0 = 0x89ABCDEF
163            /* DerefOf */
164
165            Local1 = DerefOf (Local0)
166            CH06 (Arg0, 0x1B, 0x2F)
167            /* Release */
168
169            Release (Local0)
170            CH06 (Arg0, 0x1C, 0x2F)
171            /* Reset */
172
173            Reset (Local0)
174            CH06 (Arg0, 0x1D, 0x2F)
175            /* Signal */
176
177            Signal (Local0)
178            CH06 (Arg0, 0x1E, 0x2F)
179            /* Acquire */
180
181            Local1 = Acquire (Local0, 0x0000)
182            CH06 (Arg0, 0x1F, 0x2F)
183            /* ConcatenateResTemplate */
184
185            ConcatenateResTemplate (Local0, Buffer (0x02)
186                {
187                     0x79, 0x00                                       // y.
188                }, Local1)
189            CH06 (Arg0, 0x22, 0x2F)
190            ConcatenateResTemplate (Buffer (0x02)
191                {
192                     0x79, 0x00                                       // y.
193                }, Local0, Local1)
194            CH06 (Arg0, 0x23, 0x2F)
195            /* Index */
196
197            Local1 = Local0 [0x00]
198            CH06 (Arg0, 0x25, 0x2F)
199            /* Wait */
200
201            Local1 = Wait (Local0, 0x00)
202            CH06 (Arg0, 0x26, 0x2F)
203            /* Match */
204
205            Local1 = Match (Local0, MTR, 0x00, MTR, 0x00, 0x00)
206            CH06 (Arg0, 0x27, 0x2F)
207        }
208
209        /* An element of Package */
210
211        Method (M004, 1, Serialized)
212        {
213            Name (P000, Package (0x01)
214            {
215                0x89ABCDEF
216            })
217            /* DeRefOf(Index(Package, Ind)) */
218
219            Local1 = DerefOf (DerefOf (P000 [0x00]))
220            CH06 (Arg0, 0x28, 0x2F)
221            Store (DerefOf (P000 [0x00]) [0x00], Local1)
222            CH06 (Arg0, 0x29, 0x2F)
223            Local1 = Match (DerefOf (P000 [0x00]), MTR, 0x00, MTR, 0x00,
224                0x00)
225            CH06 (Arg0, 0x2A, 0x2F)
226            /* DeRefOf(Index(Package, Ind, Dest)) */
227
228            Local1 = DerefOf (DerefOf (Local0 = P000 [0x00]))
229            CH06 (Arg0, 0x2B, 0x2F)
230            Store (DerefOf (Local0 = P000 [0x00]) [0x00], Local1)
231            CH06 (Arg0, 0x2C, 0x2F)
232            Local1 = Match (DerefOf (Local0 = P000 [0x00]), MTR, 0x00, MTR, 0x00,
233                0x00)
234            CH06 (Arg0, 0x2D, 0x2F)
235        }
236
237        /* Reference to Object */
238
239        Method (M005, 2, NotSerialized)
240        {
241            Debug = Arg0
242            Debug = Arg1
243            Local0 = ObjectType (Arg1)
244            If ((Local0 != 0x01))
245            {
246                ERR (Arg0, Z093, __LINE__, 0x00, 0x00, Local0, 0x01)
247                Return (0x01)
248            }
249
250            Local1 = DerefOf (Arg1)
251            CH03 (__METHOD__, Z093, __LINE__, 0x00, 0x00)
252            Local1 = DerefOf (DerefOf (Arg1))
253            CH06 (Arg0, 0x2F, 0x2F)
254            Store (DerefOf (Arg1) [0x00], Local1)
255            CH06 (Arg0, 0x30, 0x2F)
256            Local1 = Match (DerefOf (Arg1), MTR, 0x00, MTR, 0x00, 0x00)
257            CH06 (Arg0, 0x31, 0x2F)
258            Return (0x00)
259        }
260
261        /* Result of Method invocation */
262
263        Method (M006, 1, Serialized)
264        {
265            Name (I000, 0x00) /* Label to check m000 invocations */
266            Method (M000, 1, NotSerialized)
267            {
268                I000 = Arg0
269                Local0 = 0x89ABCDEF
270                Return (Local0)
271            }
272
273            Method (CH00, 2, NotSerialized)
274            {
275                If ((I000 != Arg1))
276                {
277                    ERR (Arg0, Z093, __LINE__, 0x00, 0x00, I000, Arg1)
278                }
279            }
280
281            Local1 = DerefOf (M000 (0x01))
282            CH06 (Arg0, 0x33, 0x2F)
283            CH00 (Arg0, 0x01)
284            Release (M000 (0x02))
285            CH06 (Arg0, 0x34, 0x2F)
286            If (Y600)
287            {
288                CH00 (Arg0, 0x02)
289            }
290
291            Reset (M000 (0x03))
292            CH06 (Arg0, 0x35, 0x2F)
293            If (Y600)
294            {
295                CH00 (Arg0, 0x03)
296            }
297
298            Signal (M000 (0x04))
299            CH06 (Arg0, 0x36, 0x2F)
300            If (Y600)
301            {
302                CH00 (Arg0, 0x04)
303            }
304
305            Local1 = Acquire (M000 (0x05), 0x0000)
306            CH06 (Arg0, 0x37, 0x2F)
307            If (Y600)
308            {
309                CH00 (Arg0, 0x05)
310            }
311
312            Store (M000 (0x06) [0x00], Local1)
313            CH06 (Arg0, 0x38, 0x2F)
314            CH00 (Arg0, 0x06)
315            Local1 = Wait (M000 (0x07), 0x00)
316            CH06 (Arg0, 0x39, 0x2F)
317            If (Y600)
318            {
319                CH00 (Arg0, 0x07)
320            }
321
322            Local1 = Match (M000 (0x08), MTR, 0x00, MTR, 0x00, 0x00)
323            CH06 (Arg0, 0x3A, 0x2F)
324            CH00 (Arg0, 0x08)
325        }
326
327        /* Reference to Object as Result of Method invocation */
328
329        Method (M007, 1, Serialized)
330        {
331            Name (I000, 0x89ABCDEF)
332            Name (I001, 0x00) /* Label to check m000 invocations */
333            Method (M000, 2, NotSerialized)
334            {
335                I001 = Arg0
336                If ((Arg1 == 0x00))
337                {
338                    Local0 = RefOf (I100)
339                }
340                ElseIf ((Arg1 == 0x01))
341                {
342                    Local0 = RefOf (I000)
343                }
344
345                Return (Local0)
346            }
347
348            Method (CH00, 2, NotSerialized)
349            {
350                If ((I001 != Arg1))
351                {
352                    ERR (Arg0, Z093, __LINE__, 0x00, 0x00, I000, Arg1)
353                }
354            }
355
356            Name (LPN0, 0x02)
357            Name (LPC0, 0x00)
358            While (LPN0)
359            {
360                Local0 = (0x03 * LPC0) /* \M4B1.M007.LPC0 */
361                I001 = 0x00
362                Local1 = DerefOf (M000 (0x01, LPC0))
363                CH03 (__METHOD__, Z093, __LINE__, 0x00, 0x00)
364                CH00 (Arg0, 0x01)
365                Local1 = DerefOf (DerefOf (M000 (0x02, LPC0)))
366                CH06 (Arg0, (0x3C + Local0), 0x2F)
367                CH00 (Arg0, 0x02)
368                Store (DerefOf (M000 (0x03, LPC0)) [0x00], Local1)
369                CH06 (Arg0, (0x3D + Local0), 0x2F)
370                CH00 (Arg0, 0x03)
371                Local1 = Match (DerefOf (M000 (0x04, LPC0)), MTR, 0x00, MTR, 0x00, 0x00)
372                CH06 (Arg0, (0x3E + Local0), 0x2F)
373                CH00 (Arg0, 0x04)
374                LPN0--
375                LPC0++
376            }
377        }
378
379        CH03 (__METHOD__, Z093, __LINE__, 0x00, 0x00)
380        /* Local Named Object */
381
382        M000 (__METHOD__)
383        /* Global Named Object */
384
385        M001 (__METHOD__)
386        /* Argument */
387
388        M002 (__METHOD__, 0x76543210)
389        /* Local */
390
391        M003 (__METHOD__)
392        /* An element of Package */
393
394        M004 (__METHOD__)
395        /* Reference to Local Named Object */
396
397        M005 (Concatenate (__METHOD__, "-m005-RefLocName"), RefOf (I000))
398        Local0 = RefOf (I000)
399        M005 (Concatenate (__METHOD__, "-m005-RefLocName2"), Local0)
400        CondRefOf (I000, Local0)
401        M005 (Concatenate (__METHOD__, "-m005-CondRefLocName"), Local0)
402        M005 (Concatenate (__METHOD__, "-m005-RefGlobName"), RefOf (I100))
403        Local0 = RefOf (I100)
404        M005 (Concatenate (__METHOD__, "-m005-RefGlobName2"), Local0)
405        CondRefOf (I100, Local0)
406        M005 (Concatenate (__METHOD__, "-m005-CondRefGlobName"), Local0)
407        /* Reference to Local */
408
409        Local0 = 0x89ABCDEF
410        M005 (Concatenate (__METHOD__, "-m005-RefLocal"), RefOf (Local0))
411        Local1 = RefOf (Local0)
412        M005 (Concatenate (__METHOD__, "-m005-RefLocal2"), Local1)
413        CondRefOf (Local0, Local1)
414        M005 (Concatenate (__METHOD__, "-m005-CondRefLocal"), Local1)
415        /* Reference to Arg */
416
417        M005 (Concatenate (__METHOD__, "-m005-RefArg"), RefOf (Arg0))
418        Local0 = RefOf (Arg0)
419        M005 (Concatenate (__METHOD__, "-m005-RefArg2"), Local0)
420        CondRefOf (Arg0, Local0)
421        M005 (Concatenate (__METHOD__, "-m005-CondRefArg"), Local0)
422        /* Index to Package */
423
424        Name (P000, Package (0x01)
425        {
426            0x76543210
427        })
428        If (Y113)
429        {
430            M005 (Concatenate (__METHOD__, "-m005-Index"), P000 [0x00])
431        }
432
433        Store (P000 [0x00], Local0)
434        M005 (Concatenate (__METHOD__, "-m005-Index2"), Local0)
435        If (Y113)
436        {
437            M005 (Concatenate (__METHOD__, "-m005-Index3"), Local0 = P000 [0x00])
438        }
439
440        Local0 = P000 [0x00]
441        M005 (Concatenate (__METHOD__, "-m005-Index4"), Local0)
442        Local1 = Local0 = P000 [0x00]
443        M005 (Concatenate (__METHOD__, "-m005-Index5"), Local1)
444        /* Result of Method invocation */
445
446        M006 (__METHOD__)
447        /* Reference to Object as Result of Method invocation */
448
449        If (Y500)
450        {
451            M007 (__METHOD__)
452        }
453    }
454