1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* 3 * PS3 hvcall interface. 4 * 5 * Copyright (C) 2006 Sony Computer Entertainment Inc. 6 * Copyright 2006 Sony Corp. 7 * Copyright 2003, 2004 (c) MontaVista Software, Inc. 8 */ 9 10#include <asm/processor.h> 11#include <asm/ppc_asm.h> 12 13#define lv1call .long 0x44000022; extsw r3, r3 14 15#define LV1_N_IN_0_OUT(API_NAME, API_NUMBER) \ 16_GLOBAL(_##API_NAME) \ 17 \ 18 mflr r0; \ 19 std r0, 16(r1); \ 20 \ 21 li r11, API_NUMBER; \ 22 lv1call; \ 23 \ 24 ld r0, 16(r1); \ 25 mtlr r0; \ 26 blr 27 28#define LV1_0_IN_0_OUT LV1_N_IN_0_OUT 29#define LV1_1_IN_0_OUT LV1_N_IN_0_OUT 30#define LV1_2_IN_0_OUT LV1_N_IN_0_OUT 31#define LV1_3_IN_0_OUT LV1_N_IN_0_OUT 32#define LV1_4_IN_0_OUT LV1_N_IN_0_OUT 33#define LV1_5_IN_0_OUT LV1_N_IN_0_OUT 34#define LV1_6_IN_0_OUT LV1_N_IN_0_OUT 35#define LV1_7_IN_0_OUT LV1_N_IN_0_OUT 36 37#define LV1_0_IN_1_OUT(API_NAME, API_NUMBER) \ 38_GLOBAL(_##API_NAME) \ 39 \ 40 mflr r0; \ 41 std r0, 16(r1); \ 42 \ 43 stdu r3, -8(r1); \ 44 \ 45 li r11, API_NUMBER; \ 46 lv1call; \ 47 \ 48 addi r1, r1, 8; \ 49 ld r11, -8(r1); \ 50 std r4, 0(r11); \ 51 \ 52 ld r0, 16(r1); \ 53 mtlr r0; \ 54 blr 55 56#define LV1_0_IN_2_OUT(API_NAME, API_NUMBER) \ 57_GLOBAL(_##API_NAME) \ 58 \ 59 mflr r0; \ 60 std r0, 16(r1); \ 61 \ 62 std r3, -8(r1); \ 63 stdu r4, -16(r1); \ 64 \ 65 li r11, API_NUMBER; \ 66 lv1call; \ 67 \ 68 addi r1, r1, 16; \ 69 ld r11, -8(r1); \ 70 std r4, 0(r11); \ 71 ld r11, -16(r1); \ 72 std r5, 0(r11); \ 73 \ 74 ld r0, 16(r1); \ 75 mtlr r0; \ 76 blr 77 78#define LV1_0_IN_3_OUT(API_NAME, API_NUMBER) \ 79_GLOBAL(_##API_NAME) \ 80 \ 81 mflr r0; \ 82 std r0, 16(r1); \ 83 \ 84 std r3, -8(r1); \ 85 std r4, -16(r1); \ 86 stdu r5, -24(r1); \ 87 \ 88 li r11, API_NUMBER; \ 89 lv1call; \ 90 \ 91 addi r1, r1, 24; \ 92 ld r11, -8(r1); \ 93 std r4, 0(r11); \ 94 ld r11, -16(r1); \ 95 std r5, 0(r11); \ 96 ld r11, -24(r1); \ 97 std r6, 0(r11); \ 98 \ 99 ld r0, 16(r1); \ 100 mtlr r0; \ 101 blr 102 103#define LV1_0_IN_7_OUT(API_NAME, API_NUMBER) \ 104_GLOBAL(_##API_NAME) \ 105 \ 106 mflr r0; \ 107 std r0, 16(r1); \ 108 \ 109 std r3, -8(r1); \ 110 std r4, -16(r1); \ 111 std r5, -24(r1); \ 112 std r6, -32(r1); \ 113 std r7, -40(r1); \ 114 std r8, -48(r1); \ 115 stdu r9, -56(r1); \ 116 \ 117 li r11, API_NUMBER; \ 118 lv1call; \ 119 \ 120 addi r1, r1, 56; \ 121 ld r11, -8(r1); \ 122 std r4, 0(r11); \ 123 ld r11, -16(r1); \ 124 std r5, 0(r11); \ 125 ld r11, -24(r1); \ 126 std r6, 0(r11); \ 127 ld r11, -32(r1); \ 128 std r7, 0(r11); \ 129 ld r11, -40(r1); \ 130 std r8, 0(r11); \ 131 ld r11, -48(r1); \ 132 std r9, 0(r11); \ 133 ld r11, -56(r1); \ 134 std r10, 0(r11); \ 135 \ 136 ld r0, 16(r1); \ 137 mtlr r0; \ 138 blr 139 140#define LV1_1_IN_1_OUT(API_NAME, API_NUMBER) \ 141_GLOBAL(_##API_NAME) \ 142 \ 143 mflr r0; \ 144 std r0, 16(r1); \ 145 \ 146 stdu r4, -8(r1); \ 147 \ 148 li r11, API_NUMBER; \ 149 lv1call; \ 150 \ 151 addi r1, r1, 8; \ 152 ld r11, -8(r1); \ 153 std r4, 0(r11); \ 154 \ 155 ld r0, 16(r1); \ 156 mtlr r0; \ 157 blr 158 159#define LV1_1_IN_2_OUT(API_NAME, API_NUMBER) \ 160_GLOBAL(_##API_NAME) \ 161 \ 162 mflr r0; \ 163 std r0, 16(r1); \ 164 \ 165 std r4, -8(r1); \ 166 stdu r5, -16(r1); \ 167 \ 168 li r11, API_NUMBER; \ 169 lv1call; \ 170 \ 171 addi r1, r1, 16; \ 172 ld r11, -8(r1); \ 173 std r4, 0(r11); \ 174 ld r11, -16(r1); \ 175 std r5, 0(r11); \ 176 \ 177 ld r0, 16(r1); \ 178 mtlr r0; \ 179 blr 180 181#define LV1_1_IN_3_OUT(API_NAME, API_NUMBER) \ 182_GLOBAL(_##API_NAME) \ 183 \ 184 mflr r0; \ 185 std r0, 16(r1); \ 186 \ 187 std r4, -8(r1); \ 188 std r5, -16(r1); \ 189 stdu r6, -24(r1); \ 190 \ 191 li r11, API_NUMBER; \ 192 lv1call; \ 193 \ 194 addi r1, r1, 24; \ 195 ld r11, -8(r1); \ 196 std r4, 0(r11); \ 197 ld r11, -16(r1); \ 198 std r5, 0(r11); \ 199 ld r11, -24(r1); \ 200 std r6, 0(r11); \ 201 \ 202 ld r0, 16(r1); \ 203 mtlr r0; \ 204 blr 205 206#define LV1_1_IN_4_OUT(API_NAME, API_NUMBER) \ 207_GLOBAL(_##API_NAME) \ 208 \ 209 mflr r0; \ 210 std r0, 16(r1); \ 211 \ 212 std r4, -8(r1); \ 213 std r5, -16(r1); \ 214 std r6, -24(r1); \ 215 stdu r7, -32(r1); \ 216 \ 217 li r11, API_NUMBER; \ 218 lv1call; \ 219 \ 220 addi r1, r1, 32; \ 221 ld r11, -8(r1); \ 222 std r4, 0(r11); \ 223 ld r11, -16(r1); \ 224 std r5, 0(r11); \ 225 ld r11, -24(r1); \ 226 std r6, 0(r11); \ 227 ld r11, -32(r1); \ 228 std r7, 0(r11); \ 229 \ 230 ld r0, 16(r1); \ 231 mtlr r0; \ 232 blr 233 234#define LV1_1_IN_5_OUT(API_NAME, API_NUMBER) \ 235_GLOBAL(_##API_NAME) \ 236 \ 237 mflr r0; \ 238 std r0, 16(r1); \ 239 \ 240 std r4, -8(r1); \ 241 std r5, -16(r1); \ 242 std r6, -24(r1); \ 243 std r7, -32(r1); \ 244 stdu r8, -40(r1); \ 245 \ 246 li r11, API_NUMBER; \ 247 lv1call; \ 248 \ 249 addi r1, r1, 40; \ 250 ld r11, -8(r1); \ 251 std r4, 0(r11); \ 252 ld r11, -16(r1); \ 253 std r5, 0(r11); \ 254 ld r11, -24(r1); \ 255 std r6, 0(r11); \ 256 ld r11, -32(r1); \ 257 std r7, 0(r11); \ 258 ld r11, -40(r1); \ 259 std r8, 0(r11); \ 260 \ 261 ld r0, 16(r1); \ 262 mtlr r0; \ 263 blr 264 265#define LV1_1_IN_6_OUT(API_NAME, API_NUMBER) \ 266_GLOBAL(_##API_NAME) \ 267 \ 268 mflr r0; \ 269 std r0, 16(r1); \ 270 \ 271 std r4, -8(r1); \ 272 std r5, -16(r1); \ 273 std r6, -24(r1); \ 274 std r7, -32(r1); \ 275 std r8, -40(r1); \ 276 stdu r9, -48(r1); \ 277 \ 278 li r11, API_NUMBER; \ 279 lv1call; \ 280 \ 281 addi r1, r1, 48; \ 282 ld r11, -8(r1); \ 283 std r4, 0(r11); \ 284 ld r11, -16(r1); \ 285 std r5, 0(r11); \ 286 ld r11, -24(r1); \ 287 std r6, 0(r11); \ 288 ld r11, -32(r1); \ 289 std r7, 0(r11); \ 290 ld r11, -40(r1); \ 291 std r8, 0(r11); \ 292 ld r11, -48(r1); \ 293 std r9, 0(r11); \ 294 \ 295 ld r0, 16(r1); \ 296 mtlr r0; \ 297 blr 298 299#define LV1_1_IN_7_OUT(API_NAME, API_NUMBER) \ 300_GLOBAL(_##API_NAME) \ 301 \ 302 mflr r0; \ 303 std r0, 16(r1); \ 304 \ 305 std r4, -8(r1); \ 306 std r5, -16(r1); \ 307 std r6, -24(r1); \ 308 std r7, -32(r1); \ 309 std r8, -40(r1); \ 310 std r9, -48(r1); \ 311 stdu r10, -56(r1); \ 312 \ 313 li r11, API_NUMBER; \ 314 lv1call; \ 315 \ 316 addi r1, r1, 56; \ 317 ld r11, -8(r1); \ 318 std r4, 0(r11); \ 319 ld r11, -16(r1); \ 320 std r5, 0(r11); \ 321 ld r11, -24(r1); \ 322 std r6, 0(r11); \ 323 ld r11, -32(r1); \ 324 std r7, 0(r11); \ 325 ld r11, -40(r1); \ 326 std r8, 0(r11); \ 327 ld r11, -48(r1); \ 328 std r9, 0(r11); \ 329 ld r11, -56(r1); \ 330 std r10, 0(r11); \ 331 \ 332 ld r0, 16(r1); \ 333 mtlr r0; \ 334 blr 335 336#define LV1_2_IN_1_OUT(API_NAME, API_NUMBER) \ 337_GLOBAL(_##API_NAME) \ 338 \ 339 mflr r0; \ 340 std r0, 16(r1); \ 341 \ 342 stdu r5, -8(r1); \ 343 \ 344 li r11, API_NUMBER; \ 345 lv1call; \ 346 \ 347 addi r1, r1, 8; \ 348 ld r11, -8(r1); \ 349 std r4, 0(r11); \ 350 \ 351 ld r0, 16(r1); \ 352 mtlr r0; \ 353 blr 354 355#define LV1_2_IN_2_OUT(API_NAME, API_NUMBER) \ 356_GLOBAL(_##API_NAME) \ 357 \ 358 mflr r0; \ 359 std r0, 16(r1); \ 360 \ 361 std r5, -8(r1); \ 362 stdu r6, -16(r1); \ 363 \ 364 li r11, API_NUMBER; \ 365 lv1call; \ 366 \ 367 addi r1, r1, 16; \ 368 ld r11, -8(r1); \ 369 std r4, 0(r11); \ 370 ld r11, -16(r1); \ 371 std r5, 0(r11); \ 372 \ 373 ld r0, 16(r1); \ 374 mtlr r0; \ 375 blr 376 377#define LV1_2_IN_3_OUT(API_NAME, API_NUMBER) \ 378_GLOBAL(_##API_NAME) \ 379 \ 380 mflr r0; \ 381 std r0, 16(r1); \ 382 \ 383 std r5, -8(r1); \ 384 std r6, -16(r1); \ 385 stdu r7, -24(r1); \ 386 \ 387 li r11, API_NUMBER; \ 388 lv1call; \ 389 \ 390 addi r1, r1, 24; \ 391 ld r11, -8(r1); \ 392 std r4, 0(r11); \ 393 ld r11, -16(r1); \ 394 std r5, 0(r11); \ 395 ld r11, -24(r1); \ 396 std r6, 0(r11); \ 397 \ 398 ld r0, 16(r1); \ 399 mtlr r0; \ 400 blr 401 402#define LV1_2_IN_4_OUT(API_NAME, API_NUMBER) \ 403_GLOBAL(_##API_NAME) \ 404 \ 405 mflr r0; \ 406 std r0, 16(r1); \ 407 \ 408 std r5, -8(r1); \ 409 std r6, -16(r1); \ 410 std r7, -24(r1); \ 411 stdu r8, -32(r1); \ 412 \ 413 li r11, API_NUMBER; \ 414 lv1call; \ 415 \ 416 addi r1, r1, 32; \ 417 ld r11, -8(r1); \ 418 std r4, 0(r11); \ 419 ld r11, -16(r1); \ 420 std r5, 0(r11); \ 421 ld r11, -24(r1); \ 422 std r6, 0(r11); \ 423 ld r11, -32(r1); \ 424 std r7, 0(r11); \ 425 \ 426 ld r0, 16(r1); \ 427 mtlr r0; \ 428 blr 429 430#define LV1_2_IN_5_OUT(API_NAME, API_NUMBER) \ 431_GLOBAL(_##API_NAME) \ 432 \ 433 mflr r0; \ 434 std r0, 16(r1); \ 435 \ 436 std r5, -8(r1); \ 437 std r6, -16(r1); \ 438 std r7, -24(r1); \ 439 std r8, -32(r1); \ 440 stdu r9, -40(r1); \ 441 \ 442 li r11, API_NUMBER; \ 443 lv1call; \ 444 \ 445 addi r1, r1, 40; \ 446 ld r11, -8(r1); \ 447 std r4, 0(r11); \ 448 ld r11, -16(r1); \ 449 std r5, 0(r11); \ 450 ld r11, -24(r1); \ 451 std r6, 0(r11); \ 452 ld r11, -32(r1); \ 453 std r7, 0(r11); \ 454 ld r11, -40(r1); \ 455 std r8, 0(r11); \ 456 \ 457 ld r0, 16(r1); \ 458 mtlr r0; \ 459 blr 460 461#define LV1_3_IN_1_OUT(API_NAME, API_NUMBER) \ 462_GLOBAL(_##API_NAME) \ 463 \ 464 mflr r0; \ 465 std r0, 16(r1); \ 466 \ 467 stdu r6, -8(r1); \ 468 \ 469 li r11, API_NUMBER; \ 470 lv1call; \ 471 \ 472 addi r1, r1, 8; \ 473 ld r11, -8(r1); \ 474 std r4, 0(r11); \ 475 \ 476 ld r0, 16(r1); \ 477 mtlr r0; \ 478 blr 479 480#define LV1_3_IN_2_OUT(API_NAME, API_NUMBER) \ 481_GLOBAL(_##API_NAME) \ 482 \ 483 mflr r0; \ 484 std r0, 16(r1); \ 485 \ 486 std r6, -8(r1); \ 487 stdu r7, -16(r1); \ 488 \ 489 li r11, API_NUMBER; \ 490 lv1call; \ 491 \ 492 addi r1, r1, 16; \ 493 ld r11, -8(r1); \ 494 std r4, 0(r11); \ 495 ld r11, -16(r1); \ 496 std r5, 0(r11); \ 497 \ 498 ld r0, 16(r1); \ 499 mtlr r0; \ 500 blr 501 502#define LV1_3_IN_3_OUT(API_NAME, API_NUMBER) \ 503_GLOBAL(_##API_NAME) \ 504 \ 505 mflr r0; \ 506 std r0, 16(r1); \ 507 \ 508 std r6, -8(r1); \ 509 std r7, -16(r1); \ 510 stdu r8, -24(r1); \ 511 \ 512 li r11, API_NUMBER; \ 513 lv1call; \ 514 \ 515 addi r1, r1, 24; \ 516 ld r11, -8(r1); \ 517 std r4, 0(r11); \ 518 ld r11, -16(r1); \ 519 std r5, 0(r11); \ 520 ld r11, -24(r1); \ 521 std r6, 0(r11); \ 522 \ 523 ld r0, 16(r1); \ 524 mtlr r0; \ 525 blr 526 527#define LV1_4_IN_1_OUT(API_NAME, API_NUMBER) \ 528_GLOBAL(_##API_NAME) \ 529 \ 530 mflr r0; \ 531 std r0, 16(r1); \ 532 \ 533 stdu r7, -8(r1); \ 534 \ 535 li r11, API_NUMBER; \ 536 lv1call; \ 537 \ 538 addi r1, r1, 8; \ 539 ld r11, -8(r1); \ 540 std r4, 0(r11); \ 541 \ 542 ld r0, 16(r1); \ 543 mtlr r0; \ 544 blr 545 546#define LV1_4_IN_2_OUT(API_NAME, API_NUMBER) \ 547_GLOBAL(_##API_NAME) \ 548 \ 549 mflr r0; \ 550 std r0, 16(r1); \ 551 \ 552 std r7, -8(r1); \ 553 stdu r8, -16(r1); \ 554 \ 555 li r11, API_NUMBER; \ 556 lv1call; \ 557 \ 558 addi r1, r1, 16; \ 559 ld r11, -8(r1); \ 560 std r4, 0(r11); \ 561 ld r11, -16(r1); \ 562 std r5, 0(r11); \ 563 \ 564 ld r0, 16(r1); \ 565 mtlr r0; \ 566 blr 567 568#define LV1_4_IN_3_OUT(API_NAME, API_NUMBER) \ 569_GLOBAL(_##API_NAME) \ 570 \ 571 mflr r0; \ 572 std r0, 16(r1); \ 573 \ 574 std r7, -8(r1); \ 575 std r8, -16(r1); \ 576 stdu r9, -24(r1); \ 577 \ 578 li r11, API_NUMBER; \ 579 lv1call; \ 580 \ 581 addi r1, r1, 24; \ 582 ld r11, -8(r1); \ 583 std r4, 0(r11); \ 584 ld r11, -16(r1); \ 585 std r5, 0(r11); \ 586 ld r11, -24(r1); \ 587 std r6, 0(r11); \ 588 \ 589 ld r0, 16(r1); \ 590 mtlr r0; \ 591 blr 592 593#define LV1_5_IN_1_OUT(API_NAME, API_NUMBER) \ 594_GLOBAL(_##API_NAME) \ 595 \ 596 mflr r0; \ 597 std r0, 16(r1); \ 598 \ 599 stdu r8, -8(r1); \ 600 \ 601 li r11, API_NUMBER; \ 602 lv1call; \ 603 \ 604 addi r1, r1, 8; \ 605 ld r11, -8(r1); \ 606 std r4, 0(r11); \ 607 \ 608 ld r0, 16(r1); \ 609 mtlr r0; \ 610 blr 611 612#define LV1_5_IN_2_OUT(API_NAME, API_NUMBER) \ 613_GLOBAL(_##API_NAME) \ 614 \ 615 mflr r0; \ 616 std r0, 16(r1); \ 617 \ 618 std r8, -8(r1); \ 619 stdu r9, -16(r1); \ 620 \ 621 li r11, API_NUMBER; \ 622 lv1call; \ 623 \ 624 addi r1, r1, 16; \ 625 ld r11, -8(r1); \ 626 std r4, 0(r11); \ 627 ld r11, -16(r1); \ 628 std r5, 0(r11); \ 629 \ 630 ld r0, 16(r1); \ 631 mtlr r0; \ 632 blr 633 634#define LV1_5_IN_3_OUT(API_NAME, API_NUMBER) \ 635_GLOBAL(_##API_NAME) \ 636 \ 637 mflr r0; \ 638 std r0, 16(r1); \ 639 \ 640 std r8, -8(r1); \ 641 std r9, -16(r1); \ 642 stdu r10, -24(r1); \ 643 \ 644 li r11, API_NUMBER; \ 645 lv1call; \ 646 \ 647 addi r1, r1, 24; \ 648 ld r11, -8(r1); \ 649 std r4, 0(r11); \ 650 ld r11, -16(r1); \ 651 std r5, 0(r11); \ 652 ld r11, -24(r1); \ 653 std r6, 0(r11); \ 654 \ 655 ld r0, 16(r1); \ 656 mtlr r0; \ 657 blr 658 659#define LV1_6_IN_1_OUT(API_NAME, API_NUMBER) \ 660_GLOBAL(_##API_NAME) \ 661 \ 662 mflr r0; \ 663 std r0, 16(r1); \ 664 \ 665 stdu r9, -8(r1); \ 666 \ 667 li r11, API_NUMBER; \ 668 lv1call; \ 669 \ 670 addi r1, r1, 8; \ 671 ld r11, -8(r1); \ 672 std r4, 0(r11); \ 673 \ 674 ld r0, 16(r1); \ 675 mtlr r0; \ 676 blr 677 678#define LV1_6_IN_2_OUT(API_NAME, API_NUMBER) \ 679_GLOBAL(_##API_NAME) \ 680 \ 681 mflr r0; \ 682 std r0, 16(r1); \ 683 \ 684 std r9, -8(r1); \ 685 stdu r10, -16(r1); \ 686 \ 687 li r11, API_NUMBER; \ 688 lv1call; \ 689 \ 690 addi r1, r1, 16; \ 691 ld r11, -8(r1); \ 692 std r4, 0(r11); \ 693 ld r11, -16(r1); \ 694 std r5, 0(r11); \ 695 \ 696 ld r0, 16(r1); \ 697 mtlr r0; \ 698 blr 699 700#define LV1_6_IN_3_OUT(API_NAME, API_NUMBER) \ 701_GLOBAL(_##API_NAME) \ 702 \ 703 mflr r0; \ 704 std r0, 16(r1); \ 705 \ 706 std r9, -8(r1); \ 707 stdu r10, -16(r1); \ 708 \ 709 li r11, API_NUMBER; \ 710 lv1call; \ 711 \ 712 addi r1, r1, 16; \ 713 ld r11, -8(r1); \ 714 std r4, 0(r11); \ 715 ld r11, -16(r1); \ 716 std r5, 0(r11); \ 717 ld r11, 48+8*8(r1); \ 718 std r6, 0(r11); \ 719 \ 720 ld r0, 16(r1); \ 721 mtlr r0; \ 722 blr 723 724#define LV1_7_IN_1_OUT(API_NAME, API_NUMBER) \ 725_GLOBAL(_##API_NAME) \ 726 \ 727 mflr r0; \ 728 std r0, 16(r1); \ 729 \ 730 stdu r10, -8(r1); \ 731 \ 732 li r11, API_NUMBER; \ 733 lv1call; \ 734 \ 735 addi r1, r1, 8; \ 736 ld r11, -8(r1); \ 737 std r4, 0(r11); \ 738 \ 739 ld r0, 16(r1); \ 740 mtlr r0; \ 741 blr 742 743#define LV1_7_IN_6_OUT(API_NAME, API_NUMBER) \ 744_GLOBAL(_##API_NAME) \ 745 \ 746 mflr r0; \ 747 std r0, 16(r1); \ 748 \ 749 std r10, 48+8*7(r1); \ 750 \ 751 li r11, API_NUMBER; \ 752 lv1call; \ 753 \ 754 ld r11, 48+8*7(r1); \ 755 std r4, 0(r11); \ 756 ld r11, 48+8*8(r1); \ 757 std r5, 0(r11); \ 758 ld r11, 48+8*9(r1); \ 759 std r6, 0(r11); \ 760 ld r11, 48+8*10(r1); \ 761 std r7, 0(r11); \ 762 ld r11, 48+8*11(r1); \ 763 std r8, 0(r11); \ 764 ld r11, 48+8*12(r1); \ 765 std r9, 0(r11); \ 766 \ 767 ld r0, 16(r1); \ 768 mtlr r0; \ 769 blr 770 771#define LV1_8_IN_1_OUT(API_NAME, API_NUMBER) \ 772_GLOBAL(_##API_NAME) \ 773 \ 774 mflr r0; \ 775 std r0, 16(r1); \ 776 \ 777 li r11, API_NUMBER; \ 778 lv1call; \ 779 \ 780 ld r11, 48+8*8(r1); \ 781 std r4, 0(r11); \ 782 \ 783 ld r0, 16(r1); \ 784 mtlr r0; \ 785 blr 786 787 .text 788 789/* the lv1 underscored call definitions expand here */ 790 791#define LV1_CALL(name, in, out, num) LV1_##in##_IN_##out##_OUT(lv1_##name, num) 792#include <asm/lv1call.h> 793