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 * Create Buffer Field operators 30 */ 31 /* 32 * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 33 * Clean up method m218 after that when errors 65,66,68,69 34 * (in 32-bit mode) will be investigated and resolved 35 * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 36 * 37 * Update needed: 1) add "Common features", see below ... 38 * 2) tune parameters in m21d 39 */ 40 Name (Z001, 0x01) 41 Name (BS00, 0x0100) 42 /* Benchmark Buffers */ 43 44 Name (B000, Buffer (BS00){}) 45 Name (B0FF, Buffer (BS00) 46 { 47 /* 0000 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 48 /* 0008 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 49 /* 0010 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 50 /* 0018 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 51 /* 0020 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 52 /* 0028 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 53 /* 0030 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 54 /* 0038 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 55 /* 0040 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 56 /* 0048 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 57 /* 0050 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 58 /* 0058 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 59 /* 0060 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 60 /* 0068 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 61 /* 0070 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 62 /* 0078 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 63 /* 0080 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 64 /* 0088 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 65 /* 0090 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 66 /* 0098 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 67 /* 00A0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 68 /* 00A8 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 69 /* 00B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 70 /* 00B8 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 71 /* 00C0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 72 /* 00C8 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 73 /* 00D0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 74 /* 00D8 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 75 /* 00E0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 76 /* 00E8 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 77 /* 00F0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // ........ 78 /* 00F8 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF // ........ 79 }) 80 Name (B256, Buffer (BS00) 81 { 82 /* 0000 */ 0x00, 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, // ........ 83 /* 0008 */ 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, // ........ 84 /* 0010 */ 0x00, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, // ........ 85 /* 0018 */ 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, // ........ 86 /* 0020 */ 0x10, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, // .!"#$%&' 87 /* 0028 */ 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, // ()*+,-./ 88 /* 0030 */ 0x20, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, // 1234567 89 /* 0038 */ 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, // 89:;<=>? 90 /* 0040 */ 0x30, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, // 0ABCDEFG 91 /* 0048 */ 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, // HIJKLMNO 92 /* 0050 */ 0x40, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, // @QRSTUVW 93 /* 0058 */ 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, // XYZ[\]^_ 94 /* 0060 */ 0x50, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, // Pabcdefg 95 /* 0068 */ 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, // hijklmno 96 /* 0070 */ 0x60, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, // `qrstuvw 97 /* 0078 */ 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, // xyz{|}~. 98 /* 0080 */ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, // ........ 99 /* 0088 */ 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, // ........ 100 /* 0090 */ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, // ........ 101 /* 0098 */ 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, // ........ 102 /* 00A0 */ 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, // ........ 103 /* 00A8 */ 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, // ........ 104 /* 00B0 */ 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, // ........ 105 /* 00B8 */ 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, // ........ 106 /* 00C0 */ 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, // ........ 107 /* 00C8 */ 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, // ........ 108 /* 00D0 */ 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, // ........ 109 /* 00D8 */ 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, // ........ 110 /* 00E0 */ 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, // ........ 111 /* 00E8 */ 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, // ........ 112 /* 00F0 */ 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, // ........ 113 /* 00F8 */ 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF // ........ 114 }) 115 /* Generated benchmark buffers for comparison with */ 116 117 Name (B010, Buffer (BS00){}) 118 Name (B101, Buffer (BS00){}) 119 Name (B0B0, Buffer (BS00){}) 120 /* Buffer for filling the ground */ 121 122 Name (B0G0, Buffer (BS00){}) 123 /* Buffer for filling the field (over the ground) */ 124 125 Name (B0F0, Buffer (BS00){}) 126 /* CreateBitField */ 127 /* */ 128 /* <test name>, */ 129 /* <index of bit>, */ 130 /* <buf: 00>, */ 131 /* <buf: ff>, */ 132 /* <buf: 010>, */ 133 /* <buf: 101>, */ 134 /* <byte size of buf> */ 135 Method (M210, 7, Serialized) 136 { 137 Name (PR00, 0x00) 138 If (PR00) 139 { 140 Debug = "========:" 141 } 142 143 Name (B001, Buffer (Arg6){}) 144 Name (B002, Buffer (Arg6){}) 145 CreateBitField (B001, Arg1, F001) 146 /*////////////// A. 1->0 (010->000) */ 147 148 B001 = Arg4 149 If (PR00) 150 { 151 Debug = B001 /* \M210.B001 */ 152 } 153 154 F001 = 0xFFFFFFFFFFFFFFFE 155 Local0 = F001 /* \M210.F001 */ 156 If ((Local0 != 0x00)) 157 { 158 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, 0x00) 159 } 160 161 B002 = Arg2 162 If ((B001 != B002)) 163 { 164 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 165 } 166 167 If (PR00) 168 { 169 Debug = B001 /* \M210.B001 */ 170 } 171 172 /*////////////// B. 1->0 (111->101) */ 173 174 B001 = Arg3 175 If (PR00) 176 { 177 Debug = B001 /* \M210.B001 */ 178 } 179 180 F001 = 0x00 181 Local0 = F001 /* \M210.F001 */ 182 If ((Local0 != 0x00)) 183 { 184 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, 0x00) 185 } 186 187 B002 = Arg5 188 If ((B001 != B002)) 189 { 190 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 191 } 192 193 If (PR00) 194 { 195 Debug = B001 /* \M210.B001 */ 196 } 197 198 /*////////////// C. 0->1 (101->111) */ 199 200 B001 = Arg5 201 If (PR00) 202 { 203 Debug = B001 /* \M210.B001 */ 204 } 205 206 F001 = 0x01 207 Local0 = F001 /* \M210.F001 */ 208 If ((Local0 != 0x01)) 209 { 210 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, 0x01) 211 } 212 213 B002 = Arg3 214 If ((B001 != B002)) 215 { 216 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 217 } 218 219 If (PR00) 220 { 221 Debug = B001 /* \M210.B001 */ 222 } 223 224 /*////////////// D. 0->1 (000->010) */ 225 226 B001 = Arg2 227 If (PR00) 228 { 229 Debug = B001 /* \M210.B001 */ 230 } 231 232 F001 = 0xFFFFFFFFFFFFFFFF 233 Local0 = F001 /* \M210.F001 */ 234 If ((Local0 != 0x01)) 235 { 236 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, 0x01) 237 } 238 239 B002 = Arg4 240 If ((B001 != B002)) 241 { 242 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 243 } 244 245 If (PR00) 246 { 247 Debug = B001 /* \M210.B001 */ 248 } 249 250 /* Common features */ 251 252 Local0 = SizeOf (B001) 253 If ((Local0 != Arg6)) 254 { 255 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, Arg6) 256 } 257 258 Local0 = SizeOf (B002) 259 If ((Local0 != Arg6)) 260 { 261 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, Arg6) 262 } 263 264 Local0 = ObjectType (F001) 265 If ((Local0 != C016)) 266 { 267 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, C016) 268 } 269 270 If (PR00) 271 { 272 Debug = Local0 273 } 274 } 275 276 Method (M211, 0, Serialized) 277 { 278 Debug = "TEST: m211, Create 1-Bit Buffer Field:" 279 /* Size of buffer (in bytes) */ 280 281 Name (BSZ0, 0x00) 282 BSZ0 = BS00 /* \BS00 */ 283 /* Max steps to check */ 284 285 Name (BSZ1, 0x00) 286 /* How many elements to check */ 287 288 Name (N000, 0x00) 289 Name (NCUR, 0x00) 290 N000 = (BSZ0 * 0x08) 291 BSZ1 = N000 /* \M211.N000 */ 292 While (N000) 293 { 294 If ((NCUR >= BSZ1)) 295 { 296 ERR (__METHOD__, Z001, __LINE__, 0x00, 0x00, NCUR, BSZ1) 297 Break 298 } 299 300 B010 = B000 /* \B000 */ 301 B101 = B0FF /* \B0FF */ 302 Divide (NCUR, 0x08, Local1, Local0) 303 Local2 = (0x01 << Local1) 304 B010 [Local0] = Local2 305 Local3 = ~Local2 306 B101 [Local0] = Local3 307 M210 (__METHOD__, NCUR, B000, B0FF, B010, B101, BSZ0) 308 N000-- 309 NCUR++ 310 } 311 } 312 313 /* CreateByteField */ 314 /* */ 315 /* <test name>, */ 316 /* <index of byte>, */ 317 /* <byte size of buf> */ 318 Method (M212, 3, Serialized) 319 { 320 Name (PR00, 0x00) 321 If (PR00) 322 { 323 Debug = "========:" 324 } 325 326 Name (B001, Buffer (Arg2){}) 327 Name (B002, Buffer (Arg2){}) 328 /*////////////// A. 1->0 (010->000) */ 329 330 CreateByteField (B001, Arg1, F001) 331 B001 = B010 /* \B010 */ 332 If (PR00) 333 { 334 Debug = B001 /* \M212.B001 */ 335 } 336 337 F001 = 0xFFFFFFFFFFFFFF00 338 Local0 = F001 /* \M212.F001 */ 339 If ((Local0 != 0x00)) 340 { 341 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, 0x00) 342 } 343 344 B002 = B000 /* \B000 */ 345 If ((B001 != B002)) 346 { 347 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 348 } 349 350 If (PR00) 351 { 352 Debug = B001 /* \M212.B001 */ 353 } 354 355 /*////////////// B. 1->0 (111->101) */ 356 357 B001 = B0FF /* \B0FF */ 358 If (PR00) 359 { 360 Debug = B001 /* \M212.B001 */ 361 } 362 363 F001 = 0x00 364 Local0 = F001 /* \M212.F001 */ 365 If ((Local0 != 0x00)) 366 { 367 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, 0x00) 368 } 369 370 B002 = B101 /* \B101 */ 371 If ((B001 != B002)) 372 { 373 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 374 } 375 376 If (PR00) 377 { 378 Debug = B001 /* \M212.B001 */ 379 } 380 381 /*////////////// C. 0->1 (101->111) */ 382 383 B001 = B101 /* \B101 */ 384 If (PR00) 385 { 386 Debug = B001 /* \M212.B001 */ 387 } 388 389 F001 = 0xFF 390 Local0 = F001 /* \M212.F001 */ 391 If ((Local0 != 0xFF)) 392 { 393 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, 0xFF) 394 } 395 396 B002 = B0FF /* \B0FF */ 397 If ((B001 != B002)) 398 { 399 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 400 } 401 402 If (PR00) 403 { 404 Debug = B001 /* \M212.B001 */ 405 } 406 407 /*////////////// D. 0->1 (000->010) */ 408 409 B001 = B000 /* \B000 */ 410 If (PR00) 411 { 412 Debug = B001 /* \M212.B001 */ 413 } 414 415 F001 = 0xFFFFFFFFFFFFFFFF 416 Local0 = F001 /* \M212.F001 */ 417 If ((Local0 != 0xFF)) 418 { 419 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, 0xFF) 420 } 421 422 B002 = B010 /* \B010 */ 423 If ((B001 != B002)) 424 { 425 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 426 } 427 428 If (PR00) 429 { 430 Debug = B001 /* \M212.B001 */ 431 } 432 433 /*////////////// E. 0->1 (000->010) */ 434 435 B001 = B000 /* \B000 */ 436 If (PR00) 437 { 438 Debug = B001 /* \M212.B001 */ 439 } 440 441 F001 = 0xFFFFFFFFFFFFFF96 442 Local0 = F001 /* \M212.F001 */ 443 If ((Local0 != 0x96)) 444 { 445 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, 0x96) 446 } 447 448 B002 = B0B0 /* \B0B0 */ 449 If ((B001 != B002)) 450 { 451 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 452 } 453 454 If (PR00) 455 { 456 Debug = B001 /* \M212.B001 */ 457 } 458 459 /* Common features */ 460 461 Local0 = SizeOf (B001) 462 If ((Local0 != Arg2)) 463 { 464 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, Arg2) 465 } 466 467 Local0 = SizeOf (B002) 468 If ((Local0 != Arg2)) 469 { 470 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, Arg2) 471 } 472 473 Local0 = ObjectType (F001) 474 If ((Local0 != C016)) 475 { 476 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, C016) 477 } 478 479 If (PR00) 480 { 481 Debug = Local0 482 } 483 } 484 485 Method (M213, 0, Serialized) 486 { 487 Debug = "TEST: m213, Create 8-Bit Buffer Field:" 488 /* Size of buffer (in bytes) */ 489 490 Name (BSZ0, 0x00) 491 BSZ0 = BS00 /* \BS00 */ 492 /* Max steps to check */ 493 494 Name (BSZ1, 0x00) 495 /* How many elements to check */ 496 497 Name (N000, 0x00) 498 Name (NCUR, 0x00) 499 N000 = BSZ0 /* \M213.BSZ0 */ 500 BSZ1 = N000 /* \M213.N000 */ 501 While (N000) 502 { 503 If ((NCUR >= BSZ1)) 504 { 505 ERR (__METHOD__, Z001, __LINE__, 0x00, 0x00, NCUR, BSZ1) 506 Break 507 } 508 509 B010 = B000 /* \B000 */ 510 B0B0 = B000 /* \B000 */ 511 B101 = B0FF /* \B0FF */ 512 B010 [NCUR] = 0xFF 513 B0B0 [NCUR] = 0x96 514 B101 [NCUR] = 0x00 515 M212 (__METHOD__, NCUR, BSZ0) 516 N000-- 517 NCUR++ 518 } 519 } 520 521 /* CreateWordField */ 522 /* */ 523 /* <test name>, */ 524 /* <index of byte>, */ 525 /* <byte size of buf> */ 526 Method (M214, 3, Serialized) 527 { 528 Name (PR00, 0x00) 529 If (PR00) 530 { 531 Debug = "========:" 532 Debug = Arg1 533 Debug = Arg2 534 } 535 536 Name (B001, Buffer (Arg2){}) 537 Name (B002, Buffer (Arg2){}) 538 CreateWordField (B001, Arg1, F001) 539 /*////////////// A. 1->0 (010->000) */ 540 541 B001 = B010 /* \B010 */ 542 If (PR00) 543 { 544 Debug = B001 /* \M214.B001 */ 545 } 546 547 F001 = 0xFFFFFFFFFFFF0000 548 Local0 = F001 /* \M214.F001 */ 549 If ((Local0 != 0x00)) 550 { 551 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, 0x00) 552 } 553 554 B002 = B000 /* \B000 */ 555 If ((B001 != B002)) 556 { 557 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 558 } 559 560 If (PR00) 561 { 562 Debug = B001 /* \M214.B001 */ 563 } 564 565 /*////////////// B. 1->0 (111->101) */ 566 567 B001 = B0FF /* \B0FF */ 568 If (PR00) 569 { 570 Debug = B001 /* \M214.B001 */ 571 } 572 573 F001 = 0x00 574 Local0 = F001 /* \M214.F001 */ 575 If ((Local0 != 0x00)) 576 { 577 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, 0x00) 578 } 579 580 B002 = B101 /* \B101 */ 581 If ((B001 != B002)) 582 { 583 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 584 } 585 586 If (PR00) 587 { 588 Debug = B001 /* \M214.B001 */ 589 } 590 591 /*////////////// C. 0->1 (101->111) */ 592 593 B001 = B101 /* \B101 */ 594 If (PR00) 595 { 596 Debug = B001 /* \M214.B001 */ 597 } 598 599 F001 = 0xFFFF 600 Local0 = F001 /* \M214.F001 */ 601 If ((Local0 != 0xFFFF)) 602 { 603 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, 0xFFFF) 604 } 605 606 B002 = B0FF /* \B0FF */ 607 If ((B001 != B002)) 608 { 609 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 610 } 611 612 If (PR00) 613 { 614 Debug = B001 /* \M214.B001 */ 615 } 616 617 /*////////////// D. 0->1 (000->010) */ 618 619 B001 = B000 /* \B000 */ 620 If (PR00) 621 { 622 Debug = B001 /* \M214.B001 */ 623 } 624 625 F001 = 0xFFFFFFFFFFFFFFFF 626 Local0 = F001 /* \M214.F001 */ 627 If ((Local0 != 0xFFFF)) 628 { 629 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, 0xFFFF) 630 } 631 632 B002 = B010 /* \B010 */ 633 If ((B001 != B002)) 634 { 635 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 636 } 637 638 If (PR00) 639 { 640 Debug = B001 /* \M214.B001 */ 641 } 642 643 Local0 = SizeOf (B001) 644 If ((Local0 != Arg2)) 645 { 646 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, Arg2) 647 } 648 649 Local0 = SizeOf (B002) 650 If ((Local0 != Arg2)) 651 { 652 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, Arg2) 653 } 654 655 /*////////////// E. 0->1 (000->010) */ 656 657 B001 = B000 /* \B000 */ 658 If (PR00) 659 { 660 Debug = B001 /* \M214.B001 */ 661 } 662 663 F001 = 0xFFFFFFFFFFFF7698 664 Local0 = F001 /* \M214.F001 */ 665 If ((Local0 != 0x7698)) 666 { 667 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, 0x7698) 668 } 669 670 B002 = B0B0 /* \B0B0 */ 671 If ((B001 != B002)) 672 { 673 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 674 } 675 676 If (PR00) 677 { 678 Debug = B001 /* \M214.B001 */ 679 } 680 681 /* Common features */ 682 683 Local0 = SizeOf (B001) 684 If ((Local0 != Arg2)) 685 { 686 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, Arg2) 687 } 688 689 Local0 = SizeOf (B002) 690 If ((Local0 != Arg2)) 691 { 692 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, Arg2) 693 } 694 695 Local0 = ObjectType (F001) 696 If ((Local0 != C016)) 697 { 698 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, C016) 699 } 700 701 If (PR00) 702 { 703 Debug = Local0 704 } 705 } 706 707 Method (M215, 0, Serialized) 708 { 709 Debug = "TEST: m215, Create 16-Bit Buffer Field:" 710 /* Size of buffer (in bytes) */ 711 712 Name (BSZ0, 0x00) 713 BSZ0 = BS00 /* \BS00 */ 714 /* Max steps to check */ 715 716 Name (BSZ1, 0x00) 717 /* How many elements to check */ 718 719 Name (N000, 0x00) 720 Name (NCUR, 0x00) 721 N000 = (BSZ0 - 0x01) 722 BSZ1 = N000 /* \M215.N000 */ 723 While (N000) 724 { 725 If ((NCUR >= BSZ1)) 726 { 727 ERR (__METHOD__, Z001, __LINE__, 0x00, 0x00, NCUR, BSZ1) 728 Break 729 } 730 731 B010 = B000 /* \B000 */ 732 B0B0 = B000 /* \B000 */ 733 B101 = B0FF /* \B0FF */ 734 Local0 = NCUR /* \M215.NCUR */ 735 B010 [Local0] = 0xFF 736 B0B0 [Local0] = 0x98 737 B101 [Local0] = 0x00 738 Local0++ 739 B010 [Local0] = 0xFF 740 B0B0 [Local0] = 0x76 741 B101 [Local0] = 0x00 742 M214 (__METHOD__, NCUR, BSZ0) 743 N000-- 744 NCUR++ 745 } 746 } 747 748 /* CreateDWordField */ 749 /* */ 750 /* <test name>, */ 751 /* <index of byte>, */ 752 /* <byte size of buf> */ 753 Method (M216, 3, Serialized) 754 { 755 Name (PR00, 0x00) 756 If (PR00) 757 { 758 Debug = "========:" 759 Debug = Arg1 760 Debug = Arg2 761 } 762 763 Name (B001, Buffer (Arg2){}) 764 Name (B002, Buffer (Arg2){}) 765 CreateDWordField (B001, Arg1, F001) 766 /*////////////// A. 1->0 (010->000) */ 767 768 B001 = B010 /* \B010 */ 769 If (PR00) 770 { 771 Debug = B001 /* \M216.B001 */ 772 } 773 774 F001 = 0xFFFFFFFF00000000 775 Local0 = F001 /* \M216.F001 */ 776 If ((Local0 != 0x00)) 777 { 778 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, 0x00) 779 } 780 781 B002 = B000 /* \B000 */ 782 If ((B001 != B002)) 783 { 784 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 785 } 786 787 If (PR00) 788 { 789 Debug = B001 /* \M216.B001 */ 790 } 791 792 /*////////////// B. 1->0 (111->101) */ 793 794 B001 = B0FF /* \B0FF */ 795 If (PR00) 796 { 797 Debug = B001 /* \M216.B001 */ 798 } 799 800 F001 = 0x00 801 Local0 = F001 /* \M216.F001 */ 802 If ((Local0 != 0x00)) 803 { 804 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, 0x00) 805 } 806 807 B002 = B101 /* \B101 */ 808 If ((B001 != B002)) 809 { 810 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 811 } 812 813 If (PR00) 814 { 815 Debug = B001 /* \M216.B001 */ 816 } 817 818 /*////////////// C. 0->1 (101->111) */ 819 820 B001 = B101 /* \B101 */ 821 If (PR00) 822 { 823 Debug = B001 /* \M216.B001 */ 824 } 825 826 F001 = 0xFFFFFFFF 827 Local0 = F001 /* \M216.F001 */ 828 If ((Local0 != 0xFFFFFFFF)) 829 { 830 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, 0xFFFFFFFF) 831 } 832 833 B002 = B0FF /* \B0FF */ 834 If ((B001 != B002)) 835 { 836 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 837 } 838 839 If (PR00) 840 { 841 Debug = B001 /* \M216.B001 */ 842 } 843 844 /*////////////// D. 0->1 (000->010) */ 845 846 B001 = B000 /* \B000 */ 847 If (PR00) 848 { 849 Debug = B001 /* \M216.B001 */ 850 } 851 852 F001 = 0xFFFFFFFFFFFFFFFF 853 Local0 = F001 /* \M216.F001 */ 854 If ((Local0 != 0xFFFFFFFF)) 855 { 856 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, 0xFFFFFFFF) 857 } 858 859 B002 = B010 /* \B010 */ 860 If ((B001 != B002)) 861 { 862 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 863 } 864 865 If (PR00) 866 { 867 Debug = B001 /* \M216.B001 */ 868 } 869 870 Local0 = SizeOf (B001) 871 If ((Local0 != Arg2)) 872 { 873 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, Arg2) 874 } 875 876 Local0 = SizeOf (B002) 877 If ((Local0 != Arg2)) 878 { 879 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, Arg2) 880 } 881 882 /*////////////// E. 0->1 (000->010) */ 883 884 B001 = B000 /* \B000 */ 885 If (PR00) 886 { 887 Debug = B001 /* \M216.B001 */ 888 } 889 890 F001 = 0xFFFFFFFF32547698 891 Local0 = F001 /* \M216.F001 */ 892 If ((Local0 != 0x32547698)) 893 { 894 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, 0x32547698) 895 } 896 897 B002 = B0B0 /* \B0B0 */ 898 If ((B001 != B002)) 899 { 900 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 901 } 902 903 If (PR00) 904 { 905 Debug = B001 /* \M216.B001 */ 906 } 907 908 /* Common features */ 909 910 Local0 = SizeOf (B001) 911 If ((Local0 != Arg2)) 912 { 913 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, Arg2) 914 } 915 916 Local0 = SizeOf (B002) 917 If ((Local0 != Arg2)) 918 { 919 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, Arg2) 920 } 921 922 Local0 = ObjectType (F001) 923 If ((Local0 != C016)) 924 { 925 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, C016) 926 } 927 928 If (PR00) 929 { 930 Debug = Local0 931 } 932 } 933 934 Method (M217, 0, Serialized) 935 { 936 Debug = "TEST: m217, Create 32-Bit Buffer Field:" 937 /* Size of buffer (in bytes) */ 938 939 Name (BSZ0, 0x00) 940 BSZ0 = BS00 /* \BS00 */ 941 /* Max steps to check */ 942 943 Name (BSZ1, 0x00) 944 /* How many elements to check */ 945 946 Name (N000, 0x00) 947 Name (NCUR, 0x00) 948 N000 = (BSZ0 - 0x03) 949 BSZ1 = N000 /* \M217.N000 */ 950 While (N000) 951 { 952 If ((NCUR >= BSZ1)) 953 { 954 ERR (__METHOD__, Z001, __LINE__, 0x00, 0x00, NCUR, BSZ1) 955 Break 956 } 957 958 B010 = B000 /* \B000 */ 959 B0B0 = B000 /* \B000 */ 960 B101 = B0FF /* \B0FF */ 961 Local0 = NCUR /* \M217.NCUR */ 962 B010 [Local0] = 0xFF 963 B0B0 [Local0] = 0x98 964 B101 [Local0] = 0x00 965 Local0++ 966 B010 [Local0] = 0xFF 967 B0B0 [Local0] = 0x76 968 B101 [Local0] = 0x00 969 Local0++ 970 B010 [Local0] = 0xFF 971 B0B0 [Local0] = 0x54 972 B101 [Local0] = 0x00 973 Local0++ 974 B010 [Local0] = 0xFF 975 B0B0 [Local0] = 0x32 976 B101 [Local0] = 0x00 977 M216 (__METHOD__, NCUR, BSZ0) 978 N000-- 979 NCUR++ 980 } 981 } 982 983 /* CreateQWordField */ 984 /* */ 985 /* <test name>, */ 986 /* <index of byte>, */ 987 /* <byte size of buf> */ 988 Method (M218, 3, Serialized) 989 { 990 Name (PR00, 0x00) 991 Name (ERR0, 0x00) 992 ERR0 = ERRS /* \ERRS */ 993 Name (BB00, Buffer (0x08){}) 994 /* Name(bb01, Buffer(8) {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}) */ 995 996 Name (BB01, Buffer (0x08) 997 { 998 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00 // ........ 999 }) 1000 /* Name(bb02, Buffer(8) {0x98,0x76,0x54,0x32,0x10,0xAB,0xCD,0xEF}) */ 1001 1002 Name (BB02, Buffer (0x08) 1003 { 1004 0x98, 0x76, 0x54, 0x32, 0x00, 0x00, 0x00, 0x00 // .vT2.... 1005 }) 1006 If (PR00) 1007 { 1008 Debug = "========:" 1009 Debug = Arg1 1010 Debug = Arg2 1011 } 1012 1013 Name (B001, Buffer (Arg2){}) 1014 Name (B002, Buffer (Arg2){}) 1015 CreateQWordField (B001, Arg1, F001) 1016 /* 1017 * Create Field to the part of b002 which is set to 1018 * zero by storing Integer into f001 in 32-bit mode. 1019 */ 1020 CreateDWordField (B002, (Arg1 + 0x04), F321) 1021 /*////////////// A. 1->0 (010->000) */ 1022 1023 B001 = B010 /* \B010 */ 1024 If (PR00) 1025 { 1026 Debug = "======== 1:" 1027 Debug = B001 /* \M218.B001 */ 1028 } 1029 1030 F001 = 0x00 1031 Local0 = F001 /* \M218.F001 */ 1032 If ((F64 == 0x01)) 1033 { 1034 If ((Local0 != 0x00)) 1035 { 1036 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, 0x00) 1037 } 1038 } 1039 ElseIf ((Local0 != BB00)) 1040 { 1041 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 1042 } 1043 1044 B002 = B000 /* \B000 */ 1045 If ((B001 != B002)) 1046 { 1047 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 1048 } 1049 1050 If (PR00) 1051 { 1052 Debug = "======== 2:" 1053 Debug = B001 /* \M218.B001 */ 1054 } 1055 1056 /*////////////// B. 1->0 (111->101) */ 1057 1058 B001 = B0FF /* \B0FF */ 1059 If (PR00) 1060 { 1061 Debug = "======== 3:" 1062 Debug = B001 /* \M218.B001 */ 1063 } 1064 1065 F001 = 0x00 1066 Local0 = F001 /* \M218.F001 */ 1067 If ((F64 == 0x01)) 1068 { 1069 If ((Local0 != 0x00)) 1070 { 1071 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, 0x00) 1072 } 1073 } 1074 ElseIf ((Local0 != BB00)) 1075 { 1076 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 1077 } 1078 1079 B002 = B101 /* \B101 */ 1080 If ((B001 != B002)) 1081 { 1082 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 1083 } 1084 1085 If (PR00) 1086 { 1087 Debug = "======== 4:" 1088 Debug = B001 /* \M218.B001 */ 1089 } 1090 1091 /*////////////// C. 0->1 (101->111) */ 1092 1093 B001 = B101 /* \B101 */ 1094 If (PR00) 1095 { 1096 Debug = "======== 5:" 1097 Debug = B001 /* \M218.B001 */ 1098 } 1099 1100 F001 = 0xFFFFFFFFFFFFFFFF 1101 /* Store(bb01, f001) */ 1102 1103 Local0 = F001 /* \M218.F001 */ 1104 If ((F64 == 0x01)) 1105 { 1106 If ((Local0 != 0xFFFFFFFFFFFFFFFF)) 1107 { 1108 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, 0xFFFFFFFFFFFFFFFF) 1109 } 1110 } 1111 ElseIf ((Local0 != BB01)) 1112 { 1113 If (PR00) 1114 { 1115 Debug = "=========================:" 1116 Debug = Local0 1117 Debug = BB01 /* \M218.BB01 */ 1118 Debug = "=========================." 1119 } 1120 1121 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 1122 } 1123 1124 B002 = B0FF /* \B0FF */ 1125 If ((F64 == 0x00)) 1126 { 1127 /* 32-bit mode update of b002 */ 1128 1129 F321 = 0x00 1130 } 1131 1132 If ((B001 != B002)) 1133 { 1134 If (PR00) 1135 { 1136 Debug = "=========================:" 1137 Debug = B001 /* \M218.B001 */ 1138 Debug = B002 /* \M218.B002 */ 1139 Debug = "=========================." 1140 } 1141 1142 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 1143 } 1144 1145 If (PR00) 1146 { 1147 Debug = "======== 6:" 1148 Debug = B001 /* \M218.B001 */ 1149 } 1150 1151 /*////////////// D. 0->1 (000->010) */ 1152 1153 B001 = B000 /* \B000 */ 1154 If (PR00) 1155 { 1156 Debug = "======== 7:" 1157 Debug = F001 /* \M218.F001 */ 1158 Debug = B001 /* \M218.B001 */ 1159 Debug = BB01 /* \M218.BB01 */ 1160 } 1161 1162 F001 = 0xFFFFFFFFFFFFFFFF 1163 /* Store(bb01, f001) */ 1164 /* Store(0xefcdab1032547698, f001) */ 1165 /* Store(0x8888888888888888, f001) */ 1166 /* Store(0x7777777777777777, f001) */ 1167 /* Store(0x0f0f0f0f0f0f0f0f, f001) */ 1168 /* Store(0xf0f0f0f0f0f0f0f0, f001) */ 1169 /* Store(0x7fffffffffffffff, f001) */ 1170 If (PR00) 1171 { 1172 Debug = "======== 8:" 1173 Debug = Local0 1174 Debug = F001 /* \M218.F001 */ 1175 Debug = B001 /* \M218.B001 */ 1176 Debug = BB01 /* \M218.BB01 */ 1177 } 1178 1179 Local0 = F001 /* \M218.F001 */ 1180 If ((F64 == 0x01)) 1181 { 1182 If ((Local0 != 0xFFFFFFFFFFFFFFFF)) 1183 { 1184 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, 0xFFFFFFFFFFFFFFFF) 1185 } 1186 } 1187 ElseIf ((Local0 != BB01)) 1188 { 1189 If (PR00) 1190 { 1191 Debug = "=========================:" 1192 Debug = Local0 1193 Debug = BB01 /* \M218.BB01 */ 1194 Debug = "=========================." 1195 } 1196 1197 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 1198 } 1199 1200 B002 = B010 /* \B010 */ 1201 If ((F64 == 0x00)) 1202 { 1203 /* 32-bit mode update of b002 */ 1204 1205 F321 = 0x00 1206 } 1207 1208 If ((B001 != B002)) 1209 { 1210 If (PR00) 1211 { 1212 Debug = "=========================:" 1213 Debug = B001 /* \M218.B001 */ 1214 Debug = B002 /* \M218.B002 */ 1215 Debug = "=========================." 1216 } 1217 1218 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 1219 } 1220 1221 If (PR00) 1222 { 1223 Debug = "======== 9:" 1224 Debug = B001 /* \M218.B001 */ 1225 } 1226 1227 Local0 = SizeOf (B001) 1228 If ((Local0 != Arg2)) 1229 { 1230 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, Arg2) 1231 } 1232 1233 Local0 = SizeOf (B002) 1234 If ((Local0 != Arg2)) 1235 { 1236 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, Arg2) 1237 } 1238 1239 /*////////////// E. 0->1 (000->010) */ 1240 1241 B001 = B000 /* \B000 */ 1242 If (PR00) 1243 { 1244 Debug = "======== 10:" 1245 Debug = F001 /* \M218.F001 */ 1246 Debug = B001 /* \M218.B001 */ 1247 Debug = BB02 /* \M218.BB02 */ 1248 } 1249 1250 F001 = 0xEFCDAB1032547698 1251 /* Store(0xffffffffffffffff, f001) */ 1252 1253 Local0 = F001 /* \M218.F001 */ 1254 If (PR00) 1255 { 1256 Debug = "======== 11:" 1257 Debug = Local0 1258 Debug = F001 /* \M218.F001 */ 1259 Debug = B001 /* \M218.B001 */ 1260 Debug = BB02 /* \M218.BB02 */ 1261 } 1262 1263 If ((F64 == 0x01)) 1264 { 1265 If ((Local0 != 0xEFCDAB1032547698)) 1266 { 1267 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, 0xEFCDAB1032547698) 1268 } 1269 } 1270 ElseIf ((Local0 != BB02)) 1271 { 1272 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 1273 } 1274 1275 B002 = B0B0 /* \B0B0 */ 1276 If ((F64 == 0x00)) 1277 { 1278 /* 32-bit mode update of b002 */ 1279 1280 F321 = 0x00 1281 } 1282 1283 If ((B001 != B002)) 1284 { 1285 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 1286 } 1287 1288 If (PR00) 1289 { 1290 Debug = "======== 12:" 1291 Debug = B001 /* \M218.B001 */ 1292 Debug = B002 /* \M218.B002 */ 1293 } 1294 1295 /* Common features */ 1296 1297 Local0 = SizeOf (B001) 1298 If ((Local0 != Arg2)) 1299 { 1300 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, Arg2) 1301 } 1302 1303 Local0 = SizeOf (B002) 1304 If ((Local0 != Arg2)) 1305 { 1306 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, Arg2) 1307 } 1308 1309 Local0 = ObjectType (F001) 1310 If ((Local0 != C016)) 1311 { 1312 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, C016) 1313 } 1314 1315 If (PR00) 1316 { 1317 Debug = "======== 13:" 1318 Debug = Local0 1319 } 1320 1321 If ((ERRS != ERR0)) 1322 { 1323 Local0 = 0x01 1324 } 1325 Else 1326 { 1327 Local0 = 0x00 1328 } 1329 1330 Return (Local0) 1331 } 1332 1333 Method (M219, 0, Serialized) 1334 { 1335 Debug = "TEST: m219, Create 64-Bit Buffer Field:" 1336 /* Size of buffer (in bytes) */ 1337 1338 Name (BSZ0, 0x00) 1339 BSZ0 = BS00 /* \BS00 */ 1340 /* Max steps to check */ 1341 1342 Name (BSZ1, 0x00) 1343 /* How many elements to check */ 1344 1345 Name (N000, 0x00) 1346 Name (NCUR, 0x00) 1347 N000 = (BSZ0 - 0x07) 1348 BSZ1 = N000 /* \M219.N000 */ 1349 While (N000) 1350 { 1351 If ((NCUR >= BSZ1)) 1352 { 1353 ERR (__METHOD__, Z001, __LINE__, 0x00, 0x00, NCUR, BSZ1) 1354 Break 1355 } 1356 1357 B010 = B000 /* \B000 */ 1358 B0B0 = B000 /* \B000 */ 1359 B101 = B0FF /* \B0FF */ 1360 Local0 = NCUR /* \M219.NCUR */ 1361 B010 [Local0] = 0xFF 1362 B0B0 [Local0] = 0x98 1363 B101 [Local0] = 0x00 1364 Local0++ 1365 B010 [Local0] = 0xFF 1366 B0B0 [Local0] = 0x76 1367 B101 [Local0] = 0x00 1368 Local0++ 1369 B010 [Local0] = 0xFF 1370 B0B0 [Local0] = 0x54 1371 B101 [Local0] = 0x00 1372 Local0++ 1373 B010 [Local0] = 0xFF 1374 B0B0 [Local0] = 0x32 1375 B101 [Local0] = 0x00 1376 Local0++ 1377 B010 [Local0] = 0xFF 1378 B0B0 [Local0] = 0x10 1379 B101 [Local0] = 0x00 1380 Local0++ 1381 B010 [Local0] = 0xFF 1382 B0B0 [Local0] = 0xAB 1383 B101 [Local0] = 0x00 1384 Local0++ 1385 B010 [Local0] = 0xFF 1386 B0B0 [Local0] = 0xCD 1387 B101 [Local0] = 0x00 1388 Local0++ 1389 B010 [Local0] = 0xFF 1390 B0B0 [Local0] = 0xEF 1391 B101 [Local0] = 0x00 1392 If (M218 (__METHOD__, NCUR, BSZ0)) 1393 { 1394 Return (0x01) 1395 } 1396 1397 N000-- 1398 NCUR++ 1399 } 1400 1401 Return (0x00) 1402 } 1403 1404 /* CreateField */ 1405 /* */ 1406 /* <test name>, */ 1407 /* <name of test-package>, */ 1408 /* <index of bit>, */ 1409 /* <num of bits>, */ 1410 /* <byte size of buf> */ 1411 /* <the benchmark buffer for Field comparison with> */ 1412 Method (M21A, 6, Serialized) 1413 { 1414 Name (PR00, 0x00) 1415 If (PR00) 1416 { 1417 Debug = "========:" 1418 Debug = Arg2 1419 Debug = Arg3 1420 } 1421 1422 Name (B001, Buffer (Arg4){}) 1423 Name (B002, Buffer (Arg4){}) 1424 /* Flag of Integer */ 1425 1426 Name (INT1, 0x00) 1427 CreateField (B001, Arg2, Arg3, F001) 1428 1429 /* Check Type */ 1430 1431 Local0 = ObjectType (F001) 1432 If ((Local0 != C016)) 1433 { 1434 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, Local0, C016) 1435 } 1436 1437 /* Fill the entire buffer (ground) */ 1438 1439 B001 = B0G0 /* \B0G0 */ 1440 If (PR00) 1441 { 1442 Debug = B001 /* \M21A.B001 */ 1443 } 1444 1445 /* Fill into the field of buffer */ 1446 1447 F001 = B0F0 /* \B0F0 */ 1448 Local0 = F001 /* \M21A.F001 */ 1449 /* Crash for 20041105 [Nov 5 2004] */ 1450 /* Store("!!!!!!!!!!!! test is crashing */ 1451 /* here when attempting access pr00:", Debug) */ 1452 If (PR00) 1453 { 1454 Debug = "============ 0:" 1455 Debug = B0G0 /* \B0G0 */ 1456 Debug = B0F0 /* \B0F0 */ 1457 Debug = B0B0 /* \B0B0 */ 1458 Debug = Local0 1459 Debug = B001 /* \M21A.B001 */ 1460 Debug = "============." 1461 } 1462 1463 /* Check the contents of field */ 1464 1465 If (Local0 != Arg5) 1466 { 1467 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 1468 } 1469 1470 /* Check the contents of Buffer */ 1471 1472 B002 = B0B0 /* \B0B0 */ 1473 If ((B001 != B002)) 1474 { 1475 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 1476 If (PR00) 1477 { 1478 Debug = "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE:" 1479 Debug = B0G0 /* \B0G0 */ 1480 Debug = B0F0 /* \B0F0 */ 1481 Debug = B0B0 /* \B0B0 */ 1482 Debug = B001 /* \M21A.B001 */ 1483 Debug = "RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR." 1484 } 1485 } 1486 1487 /* Common features */ 1488 /* Add "Common features" here too. */ 1489 Return (Zero) 1490 } 1491 1492 /* <test name>, */ 1493 /* <name of test-package>, */ 1494 /* <index of bit>, */ 1495 /* <num of bits>, */ 1496 /* <opcode of buffer to fill the ground> */ 1497 /* <opcode of buffer to fill the field> */ 1498 Method (M21B, 6, Serialized) 1499 { 1500 Name (PR00, 0x00) 1501 Name (INT2, 0x00) 1502 /* For loop 1 */ 1503 1504 Name (LPN1, 0x00) 1505 Name (LPC1, 0x00) 1506 /* For loop 2 */ 1507 1508 Name (LPN2, 0x00) 1509 Name (LPC2, 0x00) 1510 /* <entire byte size of buffer> */ 1511 1512 Name (BSZ0, 0x00) 1513 BSZ0 = BS00 /* \BS00 */ 1514 /* byte size of field */ 1515 1516 Name (BSF0, 0x00) 1517 /* byte size of buffer affected by field */ 1518 1519 Name (BSB0, 0x00) 1520 /* index of the first byte of field in the buffer */ 1521 1522 Name (FB00, 0x00) 1523 /* index of the last byte of field in the buffer */ 1524 1525 Name (LB00, 0x00) 1526 /* Num of bits have to be non-zero */ 1527 1528 If ((Arg3 == 0x00)) 1529 { 1530 ERR (Arg0, Z001, __LINE__, 0x00, 0x00, 0x00, 0x00) 1531 Return (Ones) 1532 } 1533 1534 BSB0 = MBS0 (Arg2, Arg3) 1535 /* ========================================= */ 1536 /* Prepare the buffer for filling the ground */ 1537 /* ========================================= */ 1538 Switch (ToInteger (Arg4)) 1539 { 1540 Case (0x00) 1541 { 1542 B0G0 = B000 /* \B000 */ 1543 } 1544 Case (0x01) 1545 { 1546 B0G0 = B0FF /* \B0FF */ 1547 } 1548 Default 1549 { 1550 B0G0 = B256 /* \B256 */ 1551 } 1552 1553 } 1554 1555 /* ========================================================== */ 1556 /* Prepare the buffer for filling the field (over the ground) */ 1557 /* ========================================================== */ 1558 Switch (ToInteger (Arg5)) 1559 { 1560 Case (0x00) 1561 { 1562 B0F0 = B000 /* \B000 */ 1563 } 1564 Case (0x01) 1565 { 1566 B0F0 = B0FF /* \B0FF */ 1567 } 1568 Default 1569 { 1570 B0F0 = B256 /* \B256 */ 1571 } 1572 1573 } 1574 1575 /* ====================================================== */ 1576 /* Prepare the benchmark buffer for Field COMPARISON with */ 1577 /* Result in Local6 */ 1578 /* ====================================================== */ 1579 /* lpN1 - number of bytes minus one */ 1580 Local0 = Arg3 1581 Local0-- 1582 Divide (Local0, 0x08, Local7, LPN1) /* \M21B.LPN1 */ 1583 Divide (Arg3, 0x08, Local7, Local0) 1584 BSF0 = LPN1 /* \M21B.LPN1 */ 1585 BSF0++ 1586 Local6 = Buffer (BSF0){} 1587 Local0 = DerefOf (B0F0 [LPN1]) 1588 If (Local7) 1589 { 1590 Local1 = (0x08 - Local7) 1591 Local2 = (Local0 << Local1) 1592 Local3 = (Local2 & 0xFF) 1593 Local0 = (Local3 >> Local1) 1594 } 1595 1596 Local6 [LPN1] = Local0 1597 LPC1 = 0x00 1598 While (LPN1) 1599 { 1600 Local0 = DerefOf (B0F0 [LPC1]) 1601 Local6 [LPC1] = Local0 1602 LPN1-- 1603 LPC1++ 1604 } 1605 1606 /* ================================================ */ 1607 /* Prepare the benchmark buffer for comparison with */ 1608 /* ================================================ */ 1609 B0B0 = B0G0 /* \B0G0 */ 1610 Divide (Arg2, 0x08, Local1, FB00) /* \M21B.FB00 */ 1611 Local2 = DerefOf (B0B0 [FB00]) 1612 LB00 = BSB0 /* \M21B.BSB0 */ 1613 LB00-- 1614 Local3 = DerefOf (B0B0 [LB00]) 1615 Local0 = SFT1 (Local6, Local1, Arg3, Local2, Local3) 1616 Local2 = FB00 /* \M21B.FB00 */ 1617 LPN2 = SizeOf (Local0) 1618 LPC2 = 0x00 1619 While (LPN2) 1620 { 1621 Local1 = DerefOf (Local0 [LPC2]) 1622 B0B0 [Local2] = Local1 1623 Local2++ 1624 LPN2-- 1625 LPC2++ 1626 } 1627 1628 M21A (Arg0, Arg1, Arg2, Arg3, BSZ0, Local6) 1629 Return (Zero) 1630 } 1631 1632 Method (M21C, 4, Serialized) 1633 { 1634 /* For loop 0 */ 1635 1636 Name (LPN0, 0x00) 1637 Name (LPC0, 0x00) 1638 /* For loop 1 */ 1639 1640 Name (LPN1, 0x00) 1641 Name (LPC1, 0x00) 1642 /* For loop 2 */ 1643 1644 Name (LPN2, 0x00) 1645 Name (LPC2, 0x00) 1646 /* Index of bit */ 1647 1648 Name (IB00, 0x00) 1649 /* Number of bits */ 1650 1651 Name (NB00, 0x00) 1652 LPN0 = Arg1 1653 LPC0 = 0x00 1654 While (LPN0) 1655 { 1656 /* Operands */ 1657 1658 Local6 = (LPC0 * 0x06) 1659 IB00 = DerefOf (Arg3 [Local6]) 1660 Local6++ 1661 LPN1 = DerefOf (Arg3 [Local6]) 1662 Local6++ 1663 Local0 = DerefOf (Arg3 [Local6]) 1664 Local6++ 1665 Local1 = DerefOf (Arg3 [Local6]) 1666 Local6++ 1667 Local2 = DerefOf (Arg3 [Local6]) 1668 Local6++ 1669 Local3 = DerefOf (Arg3 [Local6]) 1670 LPC1 = 0x00 1671 While (LPN1) 1672 { 1673 NB00 = Local0 1674 LPN2 = Local1 1675 LPC2 = 0x00 1676 While (LPN2) 1677 { 1678 M21B (Arg0, Arg2, IB00, NB00, Local2, Local3) 1679 NB00++ 1680 LPN2-- 1681 LPC2++ 1682 } 1683 1684 IB00++ 1685 LPN1-- 1686 LPC1++ 1687 } 1688 1689 LPC0++ 1690 LPN0-- 1691 } 1692 } 1693 1694 Method (M21D, 0, Serialized) 1695 { 1696 Debug = "TEST: m21d, Create Arbitrary Length Buffer Field:" 1697 /* Layout of Package: */ 1698 /* - <first index of bit>, */ 1699 /* - <num of indexes of bits>, */ 1700 /* - <first num of bits>, */ 1701 /* - <num of num of bits>, */ 1702 /* - opcode of buffer to fill the ground */ 1703 /* - opcode of buffer to fill the field */ 1704 /* Opcodes of buffers: */ 1705 /* 0 - all zeros */ 1706 /* 1 - all units */ 1707 /* 2 - some mix */ 1708 Name (P000, Package (0x06) 1709 { 1710 0x00, 1711 0x08, 1712 0x01, 1713 0x50, 1714 0x01, 1715 0x02 1716 /* try for 32-bit, 64-bit: */ 1717 /* 1, 1, 0x28, 1, 1, 2, */ 1718 /* 1, 1, 0x48, 1, 1, 2, */ 1719 /* try for 32-bit, 64-bit: */ 1720 /* 4, 1, 0x200, 1, 1, 2, */ 1721 /* 6, 1, 0x69, 1, 1, 2, */ 1722 /* examines the whole range possible for the size */ 1723 /* of the unerlying 256-byte Buffer: */ 1724 /* 0, 17, 1, 2032, 1, 2, */ 1725 /* 0, 1, 1, 1, 1, 2, */ 1726 /* 0, 10, 1, 30, 1, 2, */ 1727 /* 1, 1, 1, 90, 1, 2, */ 1728 /* 1, 1, 40, 1, 1, 2, */ 1729 /* 1, 1, 1, 39, 1, 2, */ 1730 /* 1, 1, 1, 40, 1, 2, */ 1731 /* 1, 1, 40, 1, 0, 2, */ 1732 /* 0, 1, 1, 65, 0, 1, */ 1733 }) 1734 M21C (__METHOD__, 0x01, "p000", P000) 1735 } 1736 1737 /* Run-method */ 1738 1739 Method (CBF0, 0, NotSerialized) 1740 { 1741 SRMT ("m211") 1742 M211 () 1743 SRMT ("m213") 1744 M213 () 1745 SRMT ("m215") 1746 M215 () 1747 SRMT ("m217") 1748 M217 () 1749 SRMT ("m219") 1750 M219 () 1751 SRMT ("m21d") 1752 M21D () 1753 } 1754