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 0058:
30     *
31     * SUMMARY: Concatenate of two Integers may operates in 32-bit mode as in 64-bit mode
32     *
33     * These are three appearances probably
34     * of one the same differently looking bug.
35     * Concatenate Operator seems to have
36     * indirect effect in all those cases.
37     */
38    Method (MDF5, 1, NotSerialized)
39    {
40        Debug = "Run mdf5:"
41        If (Arg0)
42        {
43            Debug = "===================== 0:"
44            Local0 = Concatenate (0x01, 0x02)
45            If (F64)
46            {
47                If ((Local0 != Buffer (0x10)
48                            {
49                                /* 0000 */  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // ........
50                                /* 0008 */  0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   // ........
51                            }))
52                {
53                    ERR (__METHOD__, ZFFF, __LINE__, 0x00, 0x00, Local0, Buffer (0x10)
54                        {
55                            /* 0000 */  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // ........
56                            /* 0008 */  0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   // ........
57                        })
58                }
59            }
60            ElseIf ((Local0 != Buffer (0x08)
61                        {
62                             0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00   // ........
63                        }))
64            {
65                ERR (__METHOD__, ZFFF, __LINE__, 0x00, 0x00, Local0, Buffer (0x08)
66                    {
67                         0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00   // ........
68                    })
69            }
70        }
71        Else
72        {
73            Debug = "===================== 1:"
74        }
75    }
76
77    Method (MDF6, 1, NotSerialized)
78    {
79        Debug = "Run mdf6:"
80        If (Arg0)
81        {
82            Debug = "===================== 2:"
83            Local0 = Concatenate (0x1234, 0x7890)
84            If (F64)
85            {
86                If ((Local0 != Buffer (0x10)
87                            {
88                                /* 0000 */  0x34, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // 4.......
89                                /* 0008 */  0x90, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   // .x......
90                            }))
91                {
92                    ERR (__METHOD__, ZFFF, __LINE__, 0x00, 0x00, Local0, Buffer (0x10)
93                        {
94                            /* 0000 */  0x34, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // 4.......
95                            /* 0008 */  0x90, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   // .x......
96                        })
97                }
98            }
99            ElseIf ((Local0 != Buffer (0x08)
100                        {
101                             0x34, 0x12, 0x00, 0x00, 0x90, 0x78, 0x00, 0x00   // 4....x..
102                        }))
103            {
104                ERR (__METHOD__, ZFFF, __LINE__, 0x00, 0x00, Local0, Buffer (0x08)
105                    {
106                         0x34, 0x12, 0x00, 0x00, 0x90, 0x78, 0x00, 0x00   // 4....x..
107                    })
108            }
109        }
110        Else
111        {
112            Debug = "===================== 3:"
113        }
114    }
115
116    Method (MDF7, 0, NotSerialized)
117    {
118        Debug = "Run mdf7:"
119        Local0 = Concatenate (0x01, 0x02)
120        If (F64)
121        {
122            If ((Local0 != Buffer (0x10)
123                        {
124                            /* 0000 */  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // ........
125                            /* 0008 */  0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   // ........
126                        }))
127            {
128                ERR (__METHOD__, ZFFF, __LINE__, 0x00, 0x00, Local0, Buffer (0x10)
129                    {
130                        /* 0000 */  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // ........
131                        /* 0008 */  0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   // ........
132                    })
133            }
134        }
135        ElseIf ((Local0 != Buffer (0x08)
136                    {
137                         0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00   // ........
138                    }))
139        {
140            ERR (__METHOD__, ZFFF, __LINE__, 0x00, 0x00, Local0, Buffer (0x08)
141                {
142                     0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00   // ........
143                })
144        }
145
146        Debug = Local0
147    }
148
149    Method (MDF8, 0, NotSerialized)
150    {
151        MDF5 (0x00)
152        MDF6 (0x00)
153        MDF7 ()
154        MDF5 (0x01)
155        MDF6 (0x01)
156    }
157