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