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     * Bug 113:
30     *
31     * SUMMARY: Unexpected dereference of Index reference immediately passed to Method
32     */
33    Method (ME79, 6, NotSerialized)
34    {
35        Debug = Arg0
36        Debug = Arg1
37        Debug = Arg2
38        Debug = Arg3
39        Debug = Arg4
40        Debug = Arg5
41        Debug = "Test 0"
42        CH03 (__METHOD__, 0x00, __LINE__, 0x00, 0x00)
43        Store ((Arg0 + 0x01), Local5)
44        CH04 (__METHOD__, 0x01, 0x2F, 0x00, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */
45        Debug = "Test 1"
46        CH03 (__METHOD__, 0x00, __LINE__, 0x00, 0x00)
47        Store ((Arg1 + 0x01), Local5)
48        CH04 (__METHOD__, 0x01, 0x2F, 0x00, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */
49        Debug = "Test 2"
50        CH03 (__METHOD__, 0x00, __LINE__, 0x00, 0x00)
51        Store ((Arg2 + 0x01), Local5)
52        CH04 (__METHOD__, 0x01, 0x2F, 0x00, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */
53        Debug = "Test 3"
54        CH03 (__METHOD__, 0x00, __LINE__, 0x00, 0x00)
55        Store ((Arg3 + 0x01), Local5)
56        CH04 (__METHOD__, 0x01, 0x2F, 0x00, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */
57        Debug = "Test 4"
58        CH03 (__METHOD__, 0x00, __LINE__, 0x00, 0x00)
59        Store ((Arg4 + 0x01), Local5)
60        CH04 (__METHOD__, 0x01, 0x2F, 0x00, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */
61        Debug = "Test 5"
62        CH03 (__METHOD__, 0x00, __LINE__, 0x00, 0x00)
63        Store ((Arg5 + 0x01), Local5)
64        CH04 (__METHOD__, 0x01, 0x2F, 0x00, __LINE__, 0x00, 0x00) /* AE_AML_OPERAND_TYPE */
65    }
66
67    Method (ME7A, 0, Serialized)
68    {
69        Name (P000, Package (0x05)
70        {
71            0x00,
72            0x01,
73            0x02,
74            0x03,
75            0x04
76        })
77        Name (P001, Package (0x05)
78        {
79            0x10,
80            0x11,
81            0x12,
82            0x13,
83            0x14
84        })
85        Name (P002, Package (0x05)
86        {
87            0x20,
88            0x21,
89            0x22,
90            0x23,
91            0x24
92        })
93        Name (P003, Package (0x05)
94        {
95            0x30,
96            0x31,
97            0x32,
98            0x33,
99            0x34
100        })
101        Name (P004, Package (0x05)
102        {
103            0x40,
104            0x41,
105            0x42,
106            0x43,
107            0x44
108        })
109        Store (P002 [0x02], Local0)
110        Local1 = P003 [0x03]
111        Local3 = Local2 = P004 [0x04]
112        ME79 (P000 [0x00], Local4 = P001 [0x01], Local0, Local1, Local2,
113            Local3)
114        Debug = Local4
115    }
116