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/* 30 * Outstanding: 0x1 allocations after execution. 31 */ 32 33Name(id27, 64) 34 35/* Create and write IRef */ 36 37Method(mf02, 6, Serialized) 38{ 39 Name(i001, 0) 40 Name(i002, 0) 41 Name(i003, 0) 42 Name(i004, 0) 43 Name(ii01, 0) 44 Name(ii02, 0) 45 Name(ii03, 0) 46 Name(ii04, 0) 47 48 if (LEqual(arg1, 1)) { 49 Store(DerefOf(Index(arg2, 0)), i001) 50 Store(Index(arg0, i001), Local7) 51 } elseif (LEqual(arg1, 2)) { 52 Store(DerefOf(Index(arg2, 0)), i001) 53 Store(DerefOf(Index(arg2, 1)), i002) 54 Store(Index(DerefOf(Index(arg0, i001)), i002), Local7) 55 } elseif (LEqual(arg1, 3)) { 56 Store(DerefOf(Index(arg2, 0)), i001) 57 Store(DerefOf(Index(arg2, 1)), i002) 58 Store(DerefOf(Index(arg2, 2)), i003) 59 Store(Index(DerefOf(Index(DerefOf(Index(arg0, i001)), i002)), i003), Local7) 60 } elseif (LEqual(arg1, 4)) { 61 Store(DerefOf(Index(arg2, 0)), i001) 62 Store(DerefOf(Index(arg2, 1)), i002) 63 Store(DerefOf(Index(arg2, 2)), i003) 64 Store(DerefOf(Index(arg2, 3)), i004) 65 Store(Index(DerefOf(Index(DerefOf(Index(DerefOf(Index(arg0, 66 i001)), i002)), i003)), i004), Local7) 67 } else { 68 err("", zFFF, __LINE__, 0, 0, 0, 0) 69 return 70 } 71 72 if (LEqual(arg4, 1)) { 73 Store(DerefOf(Index(arg5, 0)), ii01) 74 Store(Local7, Index(arg3, ii01)) 75 } elseif (LEqual(arg4, 2)) { 76 Store(DerefOf(Index(arg5, 0)), ii01) 77 Store(DerefOf(Index(arg5, 1)), ii02) 78 Store(Local7, Index(DerefOf(Index(arg3, ii01)), ii02)) 79 } elseif (LEqual(arg4, 3)) { 80 Store(DerefOf(Index(arg5, 0)), ii01) 81 Store(DerefOf(Index(arg5, 1)), ii02) 82 Store(DerefOf(Index(arg5, 2)), ii03) 83 Store(Local7, Index(DerefOf(Index(DerefOf(Index(arg3, ii01)), ii02)), ii03)) 84 } elseif (LEqual(arg4, 4)) { 85 Store(DerefOf(Index(arg5, 0)), ii01) 86 Store(DerefOf(Index(arg5, 1)), ii02) 87 Store(DerefOf(Index(arg5, 2)), ii03) 88 Store(DerefOf(Index(arg5, 3)), ii04) 89 Store(Local7, Index(DerefOf(Index(DerefOf(Index(DerefOf(Index(arg3, 90 ii01)), ii02)), ii03)), ii04)) 91 } else { 92 err("", zFFF, __LINE__, 0, 0, 0, 0) 93 return 94 } 95} 96 97/* Read by means of IRef-to-Integer */ 98 99Method(mfec, 4, Serialized) 100{ 101 Name(i001, 0) 102 Name(i002, 0) 103 Name(i003, 0) 104 Name(i004, 0) 105 106 if (LEqual(arg1, 1)) { 107 Store(DerefOf(Index(arg2, 0)), i001) 108 Store(DerefOf(DerefOf(Index(arg0, i001))), Local7) 109 } elseif (LEqual(arg1, 2)) { 110 Store(DerefOf(Index(arg2, 0)), i001) 111 Store(DerefOf(Index(arg2, 1)), i002) 112 Store(DerefOf(DerefOf(Index(DerefOf(Index(arg0, i001)), i002))), Local7) 113 } elseif (LEqual(arg1, 3)) { 114 Store(DerefOf(Index(arg2, 0)), i001) 115 Store(DerefOf(Index(arg2, 1)), i002) 116 Store(DerefOf(Index(arg2, 2)), i003) 117 Store(DerefOf(DerefOf(Index(DerefOf(Index(DerefOf(Index(arg0, i001)), i002)), i003))), Local7) 118 } elseif (LEqual(arg1, 4)) { 119 Store(DerefOf(Index(arg2, 0)), i001) 120 Store(DerefOf(Index(arg2, 1)), i002) 121 Store(DerefOf(Index(arg2, 2)), i003) 122 Store(DerefOf(Index(arg2, 3)), i004) 123 Store(DerefOf(DerefOf(Index(DerefOf(Index(DerefOf(Index(DerefOf(Index(arg0, 124 i001)), i002)), i003)), i004))), Local7) 125 } else { 126 err("", zFFF, __LINE__, 0, 0, 0, 0) 127 return 128 } 129 130 if (LNotEqual(Local7, arg3)) { 131 err("", zFFF, __LINE__, 0, 0, Local7, arg3) 132 } 133} 134 135/* Read by means of IRef-to-Package */ 136 137Method(mfed, 5, Serialized) 138{ 139 Name(i001, 0) 140 Name(i002, 0) 141 Name(i003, 0) 142 Name(i004, 0) 143 144 if (LEqual(arg1, 1)) { 145 Store(DerefOf(Index(arg2, 0)), i001) 146 Store(DerefOf(DerefOf(Index(arg0, i001))), Local7) 147 } elseif (LEqual(arg1, 2)) { 148 Store(DerefOf(Index(arg2, 0)), i001) 149 Store(DerefOf(Index(arg2, 1)), i002) 150 Store(DerefOf(DerefOf(Index(DerefOf(Index(arg0, i001)), i002))), Local7) 151 } elseif (LEqual(arg1, 3)) { 152 Store(DerefOf(Index(arg2, 0)), i001) 153 Store(DerefOf(Index(arg2, 1)), i002) 154 Store(DerefOf(Index(arg2, 2)), i003) 155 Store(DerefOf(DerefOf(Index(DerefOf(Index(DerefOf(Index(arg0, i001)), i002)), i003))), Local7) 156 } elseif (LEqual(arg1, 4)) { 157 Store(DerefOf(Index(arg2, 0)), i001) 158 Store(DerefOf(Index(arg2, 1)), i002) 159 Store(DerefOf(Index(arg2, 2)), i003) 160 Store(DerefOf(Index(arg2, 3)), i004) 161 Store(DerefOf(DerefOf(Index(DerefOf(Index(DerefOf(Index(DerefOf(Index(arg0, 162 i001)), i002)), i003)), i004))), Local7) 163 } else { 164 err("", zFFF, __LINE__, 0, 0, 0, 0) 165 return 166 } 167 168 Store(DerefOf(Index(Local7, arg3)), Local0) 169 170 if (LNotEqual(Local0, arg4)) { 171 err("", zFFF, __LINE__, 0, 0, Local0, arg4) 172 } 173} 174 175Method(mfee,, Serialized) 176{ 177 Name(p000, Package(id27) { 178 Package(id27) { 179 Package(id27) { 180 Package(id27) {0x40000000}, 181 0x30000000, 182 Package(id27) {0x40000001}, 183 0x30000001, 184 0x30000002, 185 }, 186 0x20000000, 187 Package(id27) { 188 Package(id27) {0x40000002}, 189 0x30000003, 190 Package(id27) {0x40000003}, 191 0x30000004, 192 0x30000005, 193 }, 194 0x20000001, 195 0x20000002, 196 }, 197 0x10000000, 198 Package(id27) { 199 Package(id27) { 200 Package(id27) {0x40000004}, 201 0x30000006, 202 Package(id27) {0x40000005}, 203 0x30000007, 204 0x30000008, 205 }, 206 0x20000003, 207 Package(id27) { 208 Package(id27) {0x40000006}, 209 0x30000009, 210 Package(id27) {0x40000007}, 211 0x3000000a, 212 0x3000000b, 213 }, 214 0x20000004, 215 0x20000005, 216 }, 217 0x10000001, 218 0x10000002, 219 }) 220 221 Name(p001, Package(id27) { 222 Package(id27) { 223 Package(id27) { 224 Package(id27) {0x40000000}, 225 0x30000000, 226 Package(id27) {0x40000001}, 227 0x30000001, 228 0x30000002, 229 }, 230 0x20000000, 231 Package(id27) { 232 Package(id27) {0x40000002}, 233 0x30000003, 234 Package(id27) {0x40000003}, 235 0x30000004, 236 0x30000005, 237 }, 238 0x20000001, 239 0x20000002, 240 }, 241 0x10000000, 242 Package(id27) { 243 Package(id27) { 244 Package(id27) {0x40000004}, 245 0x30000006, 246 Package(id27) {0x40000005}, 247 0x30000007, 248 0x30000008, 249 }, 250 0x20000003, 251 Package(id27) { 252 Package(id27) {0x40000006}, 253 0x30000009, 254 Package(id27) {0x40000007}, 255 0x3000000a, 256 0x3000000b, 257 }, 258 0x20000004, 259 0x20000005, 260 }, 261 0x10000001, 262 0x10000002, 263 }) 264 265 /* Write access */ 266 267 Method(mm04, 6) 268 { 269 Store(arg5, Index(DerefOf(Index(DerefOf(Index(DerefOf(Index(arg0, 270 arg1)), arg2)), arg3)), arg4)) 271 } 272 273 Method(mm03, 5) 274 { 275 Store(arg4, Index(DerefOf(Index(DerefOf(Index(arg0, arg1)), arg2)), arg3)) 276 } 277 278 Method(mm02, 4) 279 { 280 Store(arg3, Index(DerefOf(Index(arg0, arg1)), arg2)) 281 } 282 283 Method(mm01, 3) 284 { 285 Store(arg2, Index(arg0, arg1)) 286 } 287 288 /* Read access */ 289 290 Method(m004, 6) 291 { 292 Store(DerefOf(Index(DerefOf(Index(DerefOf(Index(DerefOf(Index(arg0, 293 arg1)), arg2)), arg3)), arg4)), Local0) 294 if (LNotEqual(Local0, arg5)) { 295 err("", zFFF, __LINE__, 0, 0, Local0, arg5) 296 } 297 } 298 299 Method(m003, 5) 300 { 301 Store(DerefOf(Index(DerefOf(Index(DerefOf(Index(arg0, 302 arg1)), arg2)), arg3)), Local0) 303 if (LNotEqual(Local0, arg4)) { 304 err("", zFFF, __LINE__, 0, 0, Local0, arg4) 305 } 306 } 307 308 Method(m002, 4) 309 { 310 Store(DerefOf(Index(DerefOf(Index(arg0, arg1)), arg2)), Local0) 311 if (LNotEqual(Local0, arg3)) { 312 err("", zFFF, __LINE__, 0, 0, Local0, arg3) 313 } 314 } 315 316 Method(m001, 3) 317 { 318 Store(DerefOf(Index(arg0, arg1)), Local0) 319 if (LNotEqual(Local0, arg2)) { 320 err("", zFFF, __LINE__, 0, 0, Local0, arg2) 321 } 322 } 323 324 /* 325 * On each level from 1 to 4 create the following structure of data - 326 * create IRefs to all levels and alternate them with Packages. 327 * Verify access through the created IRefs. 328 * 329 * Refer packages p000 and p001 directly by names. 330 * 331 * arg0 - the start index inside arg1 where to store created objects. 332 */ 333 Method(mmm0, 1, Serialized) 334 { 335 Name(i000, 0) 336 337 /* 338 * Create IRefs to all levels from 4-level Package. 339 * Alternate IRefs with Packages. 340 */ 341 342 Store(arg0, i000) 343 mf02(p000, 4, Buffer(){0,0,0,0}, p000, 4, Package(){0,0,0,i000}) 344 mfec(p000, 4, Package(){0,0,0,i000}, 0x40000000) 345 Increment(i000) 346 mm04(p000, 0, 0, 0, i000, Package(){0x51000000}) 347 Increment(i000) 348 349 mf02(p000, 3, Buffer(){0,0,4}, p000, 4, Package(){0,0,0,i000}) 350 mfec(p000, 4, Package(){0,0,0,i000}, 0x30000002) 351 Increment(i000) 352 mm04(p000, 0, 0, 0, i000, Package(){0x51000001}) 353 Increment(i000) 354 355 mf02(p000, 2, Buffer(){0,4}, p000, 4, Package(){0,0,0,i000}) 356 mfec(p000, 4, Package(){0,0,0,i000}, 0x20000002) 357 Increment(i000) 358 mm04(p000, 0, 0, 0, i000, Package(){0x51000002}) 359 Increment(i000) 360 361 mf02(p000, 1, Buffer(){4}, p000, 4, Package(){0,0,0,i000}) 362 mfec(p000, 4, Package(){0,0,0,i000}, 0x10000002) 363 Increment(i000) 364 mm04(p000, 0, 0, 0, i000, Package(){0x51000003}) 365 Increment(i000) 366 367 /* Reference to Package */ 368 369 mf02(p000, 3, Buffer(){0,0,0}, p000, 4, Package(){0,0,0,i000}) 370 mfed(p000, 4, Package(){0,0,0,i000}, 0, 0x40000000) 371 Increment(i000) 372 373 /* 374 * Create IRefs to all levels from 3-level Package. 375 * Alternate IRefs with Packages. 376 */ 377 378 Store(arg0, i000) 379 mf02(p000, 4, Buffer(){0,0,0,0}, p000, 3, Package(){0,0,i000}) 380 mfec(p000, 3, Package(){0,0,i000}, 0x40000000) 381 Increment(i000) 382 mm03(p000, 0, 0, i000, Package(){0x41000000}) 383 Increment(i000) 384 385 mf02(p000, 3, Buffer(){0,0,4}, p000, 3, Package(){0,0,i000}) 386 mfec(p000, 3, Package(){0,0,i000}, 0x30000002) 387 Increment(i000) 388 mm03(p000, 0, 0, i000, Package(){0x41000001}) 389 Increment(i000) 390 391 mf02(p000, 2, Buffer(){0,4}, p000, 3, Package(){0,0,i000}) 392 mfec(p000, 3, Package(){0,0,i000}, 0x20000002) 393 Increment(i000) 394 mm03(p000, 0, 0, i000, Package(){0x41000002}) 395 Increment(i000) 396 397 mf02(p000, 1, Buffer(){4}, p000, 3, Package(){0,0,i000}) 398 mfec(p000, 3, Package(){0,0,i000}, 0x10000002) 399 Increment(i000) 400 mm03(p000, 0, 0, i000, Package(){0x41000003}) 401 Increment(i000) 402 403 /* 404 * Create IRefs to all levels from 2-level Package. 405 * Alternate IRefs with Packages. 406 */ 407 408 Store(arg0, i000) 409 mf02(p000, 4, Buffer(){0,0,0,0}, p000, 2, Package(){0,i000}) 410 mfec(p000, 2, Package(){0,i000}, 0x40000000) 411 Increment(i000) 412 mm02(p000, 0, i000, Package(){0x31000000}) 413 Increment(i000) 414 415 mf02(p000, 3, Buffer(){0,0,4}, p000, 2, Package(){0,i000}) 416 mfec(p000, 2, Package(){0,i000}, 0x30000002) 417 Increment(i000) 418 mm02(p000, 0, i000, Package(){0x31000001}) 419 Increment(i000) 420 421 mf02(p000, 2, Buffer(){0,4}, p000, 2, Package(){0,i000}) 422 mfec(p000, 2, Package(){0,i000}, 0x20000002) 423 Increment(i000) 424 mm02(p000, 0, i000, Package(){0x31000002}) 425 Increment(i000) 426 427 mf02(p000, 1, Buffer(){4}, p000, 2, Package(){0,i000}) 428 mfec(p000, 2, Package(){0,i000}, 0x10000002) 429 Increment(i000) 430 mm02(p000, 0, i000, Package(){0x31000003}) 431 Increment(i000) 432 433 /* 434 * Create IRefs to all levels from 1-level Package. 435 * Alternate IRefs with Packages. 436 */ 437 438 Store(arg0, i000) 439 mf02(p000, 4, Buffer(){0,0,0,0}, p000, 1, Package(){i000}) 440 mfec(p000, 1, Package(){i000}, 0x40000000) 441 Increment(i000) 442 mm01(p000, i000, Package(){0x21000000}) 443 Increment(i000) 444 445 mf02(p000, 3, Buffer(){0,0,4}, p000, 1, Package(){i000}) 446 mfec(p000, 1, Package(){i000}, 0x30000002) 447 Increment(i000) 448 mm01(p000, i000, Package(){0x21000001}) 449 Increment(i000) 450 451 mf02(p000, 2, Buffer(){0,4}, p000, 1, Package(){i000}) 452 mfec(p000, 1, Package(){i000}, 0x20000002) 453 Increment(i000) 454 mm01(p000, i000, Package(){0x21000002}) 455 Increment(i000) 456 457 mf02(p000, 1, Buffer(){4}, p000, 1, Package(){i000}) 458 mfec(p000, 1, Package(){i000}, 0x10000002) 459 Increment(i000) 460 mm01(p000, i000, Package(){0x21000003}) 461 Increment(i000) 462 } 463 464 /* 465 * On each level from 1 to 4 create the following structure of data - 466 * create IRefs to all levels and alternate them with Packages. 467 * Verify access through the created IRefs. 468 * 469 * arg0 - Package, IRefs are pointing to elements of this Package, 470 * arg1 - Package, IRefs alternated with Packages are stored as 471 * elements of this Package, 472 * arg2 - the start index inside arg1 where to store created objects, 473 * arg3 - create structure, 474 * arg4 - read. 475 */ 476 Method(mmm1, 5, Serialized) 477 { 478 Name(i000, 0) 479 480 /* 481 * Create IRefs to all levels from 4-level Package. 482 * Alternate IRefs with Packages. 483 */ 484 485 Store(arg2, i000) 486 if (arg3) { 487 mf02(arg0, 4, Buffer(){0,0,0,0}, arg1, 4, Package(){0,0,0,i000}) 488 } 489 if (arg4) { 490 mfec(arg1, 4, Package(){0,0,0,i000}, 0x40000000) 491 } 492 Increment(i000) 493 if (arg3) { 494 mm04(arg1, 0, 0, 0, i000, Package(){0x51000000}) 495 } 496 Increment(i000) 497 498 if (arg3) { 499 mf02(arg0, 3, Buffer(){0,0,4}, arg1, 4, Package(){0,0,0,i000}) 500 } 501 if (arg4) { 502 mfec(arg1, 4, Package(){0,0,0,i000}, 0x30000002) 503 } 504 Increment(i000) 505 if (arg3) { 506 mm04(arg1, 0, 0, 0, i000, Package(){0x51000001}) 507 } 508 Increment(i000) 509 510 if (arg3) { 511 mf02(arg0, 2, Buffer(){0,4}, arg1, 4, Package(){0,0,0,i000}) 512 } 513 if (arg4) { 514 mfec(arg1, 4, Package(){0,0,0,i000}, 0x20000002) 515 } 516 Increment(i000) 517 if (arg3) { 518 mm04(arg1, 0, 0, 0, i000, Package(){0x51000002}) 519 } 520 Increment(i000) 521 522 if (arg3) { 523 mf02(arg0, 1, Buffer(){4}, arg1, 4, Package(){0,0,0,i000}) 524 } 525 if (arg4) { 526 mfec(arg1, 4, Package(){0,0,0,i000}, 0x10000002) 527 } 528 Increment(i000) 529 if (arg3) { 530 mm04(arg1, 0, 0, 0, i000, Package(){0x51000003}) 531 } 532 Increment(i000) 533 534 /* Reference to Package */ 535 536 if (arg3) { 537 mf02(arg0, 3, Buffer(){0,0,0}, arg1, 4, Package(){0,0,0,i000}) 538 } 539 if (arg4) { 540 mfed(arg1, 4, Package(){0,0,0,i000}, 0, 0x40000000) 541 } 542 Increment(i000) 543 544 /* 545 * Create IRefs to all levels from 3-level Package. 546 * Alternate IRefs with Packages. 547 */ 548 549 Store(arg2, i000) 550 if (arg3) { 551 mf02(arg0, 4, Buffer(){0,0,0,0}, arg1, 3, Package(){0,0,i000}) 552 } 553 if (arg4) { 554 mfec(arg1, 3, Package(){0,0,i000}, 0x40000000) 555 } 556 Increment(i000) 557 if (arg3) { 558 mm03(arg1, 0, 0, i000, Package(){0x41000000}) 559 } 560 Increment(i000) 561 562 if (arg3) { 563 mf02(arg0, 3, Buffer(){0,0,4}, arg1, 3, Package(){0,0,i000}) 564 } 565 if (arg4) { 566 mfec(arg1, 3, Package(){0,0,i000}, 0x30000002) 567 } 568 Increment(i000) 569 if (arg3) { 570 mm03(arg1, 0, 0, i000, Package(){0x41000001}) 571 } 572 Increment(i000) 573 574 if (arg3) { 575 mf02(arg0, 2, Buffer(){0,4}, arg1, 3, Package(){0,0,i000}) 576 } 577 if (arg4) { 578 mfec(arg1, 3, Package(){0,0,i000}, 0x20000002) 579 } 580 Increment(i000) 581 if (arg3) { 582 mm03(arg1, 0, 0, i000, Package(){0x41000002}) 583 } 584 Increment(i000) 585 586 if (arg3) { 587 mf02(arg0, 1, Buffer(){4}, arg1, 3, Package(){0,0,i000}) 588 } 589 if (arg4) { 590 mfec(arg1, 3, Package(){0,0,i000}, 0x10000002) 591 } 592 Increment(i000) 593 if (arg3) { 594 mm03(arg1, 0, 0, i000, Package(){0x41000003}) 595 } 596 Increment(i000) 597 598 /* 599 * Create IRefs to all levels from 2-level Package. 600 * Alternate IRefs with Packages. 601 */ 602 603 Store(arg2, i000) 604 if (arg3) { 605 mf02(arg0, 4, Buffer(){0,0,0,0}, arg1, 2, Package(){0,i000}) 606 } 607 if (arg4) { 608 mfec(arg1, 2, Package(){0,i000}, 0x40000000) 609 } 610 Increment(i000) 611 if (arg3) { 612 mm02(arg1, 0, i000, Package(){0x31000000}) 613 } 614 Increment(i000) 615 616 if (arg3) { 617 mf02(arg0, 3, Buffer(){0,0,4}, arg1, 2, Package(){0,i000}) 618 } 619 if (arg4) { 620 mfec(arg1, 2, Package(){0,i000}, 0x30000002) 621 } 622 Increment(i000) 623 if (arg3) { 624 mm02(arg1, 0, i000, Package(){0x31000001}) 625 } 626 Increment(i000) 627 628 if (arg3) { 629 mf02(arg0, 2, Buffer(){0,4}, arg1, 2, Package(){0,i000}) 630 } 631 if (arg4) { 632 mfec(arg1, 2, Package(){0,i000}, 0x20000002) 633 } 634 Increment(i000) 635 if (arg3) { 636 mm02(arg1, 0, i000, Package(){0x31000002}) 637 } 638 Increment(i000) 639 640 if (arg3) { 641 mf02(arg0, 1, Buffer(){4}, arg1, 2, Package(){0,i000}) 642 } 643 if (arg4) { 644 mfec(arg1, 2, Package(){0,i000}, 0x10000002) 645 } 646 Increment(i000) 647 if (arg3) { 648 mm02(arg1, 0, i000, Package(){0x31000003}) 649 } 650 Increment(i000) 651 652 /* 653 * Create IRefs to all levels from 1-level Package. 654 * Alternate IRefs with Packages. 655 */ 656 657 Store(arg2, i000) 658 if (arg3) { 659 mf02(arg0, 4, Buffer(){0,0,0,0}, arg1, 1, Package(){i000}) 660 } 661 if (arg4) { 662 mfec(arg1, 1, Package(){i000}, 0x40000000) 663 } 664 Increment(i000) 665 if (arg3) { 666 mm01(arg1, i000, Package(){0x21000000}) 667 } 668 Increment(i000) 669 670 if (arg3) { 671 mf02(arg0, 3, Buffer(){0,0,4}, arg1, 1, Package(){i000}) 672 } 673 if (arg4) { 674 mfec(arg1, 1, Package(){i000}, 0x30000002) 675 } 676 Increment(i000) 677 if (arg3) { 678 mm01(arg1, i000, Package(){0x21000001}) 679 } 680 Increment(i000) 681 682 if (arg3) { 683 mf02(arg0, 2, Buffer(){0,4}, arg1, 1, Package(){i000}) 684 } 685 if (arg4) { 686 mfec(arg1, 1, Package(){i000}, 0x20000002) 687 } 688 Increment(i000) 689 if (arg3) { 690 mm01(arg1, i000, Package(){0x21000002}) 691 } 692 Increment(i000) 693 694 if (arg3) { 695 mf02(arg0, 1, Buffer(){4}, arg1, 1, Package(){i000}) 696 } 697 if (arg4) { 698 mfec(arg1, 1, Package(){i000}, 0x10000002) 699 } 700 Increment(i000) 701 if (arg3) { 702 mm01(arg1, i000, Package(){0x21000003}) 703 } 704 Increment(i000) 705 } 706 707 /* Verification */ 708 Method(mmm2) 709 { 710 m004(p000, 0, 0, 0, 0, 0x40000000) 711 m004(p000, 0, 0, 2, 0, 0x40000001) 712 m004(p000, 0, 2, 0, 0, 0x40000002) 713 m004(p000, 0, 2, 2, 0, 0x40000003) 714 m004(p000, 2, 0, 0, 0, 0x40000004) 715 m004(p000, 2, 0, 2, 0, 0x40000005) 716 m004(p000, 2, 2, 0, 0, 0x40000006) 717 m004(p000, 2, 2, 2, 0, 0x40000007) 718 m003(p000, 0, 0, 4, 0x30000002) 719 m003(p000, 0, 2, 4, 0x30000005) 720 m003(p000, 2, 0, 4, 0x30000008) 721 m003(p000, 2, 2, 4, 0x3000000b) 722 m002(p000, 0, 4, 0x20000002) 723 m002(p000, 2, 4, 0x20000005) 724 m001(p000, 4, 0x10000002) 725 } 726 727 SRMT("mfee") 728 729 mmm0(8) 730 731 mmm1(p000, p000, 18, 1, 1) 732 mmm1(p000, p001, 28, 1, 1) 733 mmm1(p001, p001, 38, 1, 1) 734 mmm1(p001, p000, 48, 1, 1) 735 736 mmm1(0, p000, 18, 0, 1) 737 mmm1(0, p001, 28, 0, 1) 738 mmm1(0, p001, 38, 0, 1) 739 mmm1(0, p000, 48, 0, 1) 740 741 mmm2() 742 743 /* Repeat the same */ 744 745 mmm0(8) 746 747 mmm1(p000, p000, 18, 1, 1) 748 mmm1(p000, p001, 28, 1, 1) 749 mmm1(p001, p001, 38, 1, 1) 750 mmm1(p001, p000, 48, 1, 1) 751 752 mmm1(0, p000, 18, 0, 1) 753 mmm1(0, p001, 28, 0, 1) 754 mmm1(0, p001, 38, 0, 1) 755 mmm1(0, p000, 48, 0, 1) 756 757 mmm2() 758} 759