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 * Buffer 30 * 31 * (verify exceptions caused by the imprope use of Buffer type objects) 32 */ 33 Name (Z095, 0x5F) 34 Name (B100, Buffer (0x01) 35 { 36 0x61 // a 37 }) 38 /* Expected exceptions: */ 39 /* */ 40 /* 47 - AE_AML_OPERAND_TYPE */ 41 /* Note: Buffer can be used with Index */ 42 Method (M4B3, 1, Serialized) 43 { 44 Name (B000, Buffer (0x01) 45 { 46 0x62 // b 47 }) 48 /* Local Named Object */ 49 50 Method (M000, 1, Serialized) 51 { 52 Name (B000, Buffer (0x01) 53 { 54 0x63 // c 55 }) 56 If (Y083) 57 { 58 Local1 = DerefOf (B000) 59 CH06 (Arg0, 0x00, 0x2F) 60 } 61 62 Store (B000 [0x00], Local1) 63 CH03 (__METHOD__, Z095, __LINE__, 0x00, 0x00) 64 } 65 66 /* Global Named Object */ 67 68 Method (M001, 1, NotSerialized) 69 { 70 If (Y083) 71 { 72 Local1 = DerefOf (B100) 73 CH06 (Arg0, 0x01, 0x2F) 74 } 75 76 Store (B100 [0x00], Local1) 77 CH03 (__METHOD__, Z095, __LINE__, 0x00, 0x00) 78 } 79 80 /* Argument */ 81 82 Method (M002, 2, NotSerialized) 83 { 84 Local1 = DerefOf (Arg1) 85 CH06 (Arg0, 0x02, 0x2F) 86 Release (Arg1) 87 CH06 (Arg0, 0x03, 0x2F) 88 Reset (Arg1) 89 CH06 (Arg0, 0x04, 0x2F) 90 Signal (Arg1) 91 CH06 (Arg0, 0x05, 0x2F) 92 Local1 = Acquire (Arg1, 0x0000) 93 CH06 (Arg0, 0x06, 0x2F) 94 Store (Arg1 [0x00], Local1) 95 CH03 (__METHOD__, Z095, __LINE__, 0x00, 0x00) 96 Local1 = Wait (Arg1, 0x00) 97 CH06 (Arg0, 0x07, 0x2F) 98 Local1 = Match (Arg1, MTR, 0x00, MTR, 0x00, 0x00) 99 CH06 (Arg0, 0x08, 0x2F) 100 } 101 102 /* Local */ 103 104 Method (M003, 1, NotSerialized) 105 { 106 Local0 = Buffer (0x01) 107 { 108 0x63 // c 109 } 110 Local1 = DerefOf (Local0) 111 CH06 (Arg0, 0x09, 0x2F) 112 Release (Local0) 113 CH06 (Arg0, 0x0A, 0x2F) 114 Reset (Local0) 115 CH06 (Arg0, 0x0B, 0x2F) 116 Signal (Local0) 117 CH06 (Arg0, 0x0C, 0x2F) 118 Local1 = Acquire (Local0, 0x0000) 119 CH06 (Arg0, 0x0D, 0x2F) 120 Store (Local0 [0x00], Local1) 121 CH03 (__METHOD__, Z095, __LINE__, 0x00, 0x00) 122 Local1 = Wait (Local0, 0x00) 123 CH06 (Arg0, 0x0E, 0x2F) 124 Local1 = Match (Local0, MTR, 0x00, MTR, 0x00, 0x00) 125 CH06 (Arg0, 0x0F, 0x2F) 126 } 127 128 /* An element of Package */ 129 130 Method (M004, 1, Serialized) 131 { 132 Name (P000, Package (0x01) 133 { 134 Buffer (0x01) 135 { 136 0x63 // c 137 } 138 }) 139 /* DeRefOf(Index(Package, Ind, Dest)) */ 140 141 Local1 = DerefOf (DerefOf (Local0 = P000 [0x00])) 142 CH06 (Arg0, 0x12, 0x2F) 143 Store (DerefOf (Local0 = P000 [0x00]) [0x00], Local1) 144 CH03 (__METHOD__, Z095, __LINE__, 0x00, 0x00) 145 Local1 = Match (DerefOf (Local0 = P000 [0x00]), MTR, 0x00, MTR, 0x00, 146 0x00) 147 CH06 (Arg0, 0x13, 0x2F) 148 } 149 150 /* Reference to Object */ 151 152 Method (M005, 2, NotSerialized) 153 { 154 Debug = Arg0 155 Debug = Arg1 156 Local0 = ObjectType (Arg1) 157 If ((Local0 != 0x03)) 158 { 159 ERR (Arg0, Z095, __LINE__, 0x00, 0x00, Local0, 0x03) 160 Return (0x01) 161 } 162 163 Local1 = DerefOf (Arg1) 164 CH03 (__METHOD__, Z095, __LINE__, 0x00, 0x00) 165 Local1 = DerefOf (DerefOf (Arg1)) 166 CH06 (Arg0, 0x15, 0x2F) 167 Store (DerefOf (Arg1) [0x00], Local1) 168 CH03 (__METHOD__, Z095, __LINE__, 0x00, 0x00) 169 Local1 = Match (DerefOf (Arg1), MTR, 0x00, MTR, 0x00, 0x00) 170 CH06 (Arg0, 0x16, 0x2F) 171 Return (0x00) 172 } 173 174 /* Result of Method invocation */ 175 176 Method (M006, 1, Serialized) 177 { 178 Name (I000, 0x00) /* Label to check m000 invocations */ 179 Method (M000, 1, NotSerialized) 180 { 181 I000 = Arg0 182 Local0 = Buffer (0x01) 183 { 184 0x63 // c 185 } 186 Return (Local0) 187 } 188 189 Method (CH00, 2, NotSerialized) 190 { 191 If ((I000 != Arg1)) 192 { 193 ERR (Arg0, Z095, __LINE__, 0x00, 0x00, I000, Arg1) 194 } 195 } 196 197 Local1 = DerefOf (M000 (0x01)) 198 CH06 (Arg0, 0x18, 0x2F) 199 CH00 (Arg0, 0x01) 200 Release (M000 (0x02)) 201 CH06 (Arg0, 0x19, 0x2F) 202 If (Y600) 203 { 204 CH00 (Arg0, 0x02) 205 } 206 207 Reset (M000 (0x03)) 208 CH06 (Arg0, 0x1A, 0x2F) 209 If (Y600) 210 { 211 CH00 (Arg0, 0x03) 212 } 213 214 Signal (M000 (0x04)) 215 CH06 (Arg0, 0x1B, 0x2F) 216 If (Y600) 217 { 218 CH00 (Arg0, 0x04) 219 } 220 221 Local1 = Acquire (M000 (0x05), 0x0000) 222 CH06 (Arg0, 0x1C, 0x2F) 223 If (Y600) 224 { 225 CH00 (Arg0, 0x05) 226 } 227 228 CH03 (__METHOD__, Z095, __LINE__, 0x00, 0x00) 229 Store (M000 (0x06) [0x00], Local1) 230 If (Y900) 231 { 232 CH03 (__METHOD__, Z095, __LINE__, 0x00, 0x00) 233 CH00 (Arg0, 0x06) 234 } 235 Else 236 { 237 CH04 (__METHOD__, 0x00, 0x55, Z095, __LINE__, 0x00, 0x00) /* AE_INDEX_TO_NOT_ATTACHED */ 238 } 239 240 Local1 = Wait (M000 (0x07), 0x00) 241 CH06 (Arg0, 0x1D, 0x2F) 242 If (Y600) 243 { 244 CH00 (Arg0, 0x07) 245 } 246 247 Local1 = Match (M000 (0x08), MTR, 0x00, MTR, 0x00, 0x00) 248 CH06 (Arg0, 0x1E, 0x2F) 249 CH00 (Arg0, 0x08) 250 } 251 252 /* Reference to Object as Result of Method invocation */ 253 254 Method (M007, 1, Serialized) 255 { 256 Name (B000, Buffer (0x01) 257 { 258 0x63 // c 259 }) 260 Name (I000, 0x00) /* Label to check m000 invocations */ 261 Method (M000, 2, NotSerialized) 262 { 263 I000 = Arg0 264 If ((Arg1 == 0x00)) 265 { 266 Local0 = RefOf (B100) 267 } 268 ElseIf ((Arg1 == 0x01)) 269 { 270 Local0 = RefOf (B000) 271 } 272 273 Return (Local0) 274 } 275 276 Method (CH00, 2, NotSerialized) 277 { 278 If ((I000 != Arg1)) 279 { 280 ERR (Arg0, Z095, __LINE__, 0x00, 0x00, I000, Arg1) 281 } 282 } 283 284 Name (LPN0, 0x02) 285 Name (LPC0, 0x00) 286 While (LPN0) 287 { 288 Local0 = (0x03 * LPC0) /* \M4B3.M007.LPC0 */ 289 I000 = 0x00 290 Local1 = DerefOf (M000 (0x01, LPC0)) 291 CH03 (__METHOD__, Z095, __LINE__, 0x00, 0x00) 292 CH00 (Arg0, 0x01) 293 Local1 = DerefOf (DerefOf (M000 (0x02, LPC0))) 294 CH06 (Arg0, (0x20 + Local0), 0x2F) 295 CH00 (Arg0, 0x02) 296 Store (DerefOf (M000 (0x03, LPC0)) [0x00], Local1) 297 CH06 (Arg0, (0x21 + Local0), 0x2F) 298 CH00 (Arg0, 0x03) 299 Local1 = Match (DerefOf (M000 (0x04, LPC0)), MTR, 0x00, MTR, 0x00, 0x00) 300 CH06 (Arg0, (0x22 + Local0), 0x2F) 301 CH00 (Arg0, 0x04) 302 LPN0-- 303 LPC0++ 304 } 305 } 306 307 CH03 (__METHOD__, Z095, __LINE__, 0x00, 0x00) 308 /* Local Named Object */ 309 310 M000 (__METHOD__) 311 /* Global Named Object */ 312 313 M001 (__METHOD__) 314 /* Argument */ 315 316 M002 (__METHOD__, Buffer (0x01) 317 { 318 0x62 // b 319 }) 320 /* Local */ 321 322 M003 (__METHOD__) 323 /* An element of Package */ 324 325 M004 (__METHOD__) 326 /* Reference to Local Named Object */ 327 328 M005 (Concatenate (__METHOD__, "-m005-RefLocName"), RefOf (B000)) 329 Local0 = RefOf (B000) 330 M005 (Concatenate (__METHOD__, "-m005-RefLocName2"), Local0) 331 CondRefOf (B000, Local0) 332 M005 (Concatenate (__METHOD__, "-m005-CondRefLocName"), Local0) 333 M005 (Concatenate (__METHOD__, "-m005-RefGlobName"), RefOf (B100)) 334 Local0 = RefOf (B100) 335 M005 (Concatenate (__METHOD__, "-m005-RefGlobName2"), Local0) 336 CondRefOf (B100, Local0) 337 M005 (Concatenate (__METHOD__, "-m005-CondRefGlobName"), Local0) 338 /* Reference to Local */ 339 340 Local0 = Buffer (0x01) 341 { 342 0x62 // b 343 } 344 M005 (Concatenate (__METHOD__, "-m005-RefLocal"), RefOf (Local0)) 345 Local1 = RefOf (Local0) 346 M005 (Concatenate (__METHOD__, "-m005-RefLocal2"), Local1) 347 CondRefOf (Local0, Local1) 348 M005 (Concatenate (__METHOD__, "-m005-CondRefLocal"), Local1) 349 /* Reference to Arg */ 350 351 M005 (Concatenate (__METHOD__, "-m005-RefArg"), RefOf (Arg0)) 352 Local0 = RefOf (Arg0) 353 M005 (Concatenate (__METHOD__, "-m005-RefArg2"), Local0) 354 CondRefOf (Arg0, Local0) 355 M005 (Concatenate (__METHOD__, "-m005-CondRefArg"), Local0) 356 /* Index to Package */ 357 358 Name (P000, Package (0x01) 359 { 360 Buffer (0x01) 361 { 362 0x62 // b 363 } 364 }) 365 If (Y113) 366 { 367 M005 (Concatenate (__METHOD__, "-m005-Index"), P000 [0x00]) 368 } 369 370 Store (P000 [0x00], Local0) 371 M005 (Concatenate (__METHOD__, "-m005-Index2"), Local0) 372 If (Y113) 373 { 374 M005 (Concatenate (__METHOD__, "-m005-Index3"), Local0 = P000 [0x00]) 375 } 376 377 Local0 = P000 [0x00] 378 M005 (Concatenate (__METHOD__, "-m005-Index4"), Local0) 379 Local1 = Local0 = P000 [0x00] 380 M005 (Concatenate (__METHOD__, "-m005-Index5"), Local1) 381 /* Result of Method invocation */ 382 383 M006 (__METHOD__) 384 /* Reference to Object as Result of Method invocation */ 385 386 If (Y500) 387 { 388 M007 (__METHOD__) 389 } 390 } 391