github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/cmd/internal/obj/s390x/a.out.go (about) 1 // Based on cmd/internal/obj/ppc64/a.out.go. 2 // 3 // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. 4 // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) 5 // Portions Copyright © 1997-1999 Vita Nuova Limited 6 // Portions Copyright © 2000-2008 Vita Nuova Holdings Limited (www.vitanuova.com) 7 // Portions Copyright © 2004,2006 Bruce Ellis 8 // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) 9 // Revisions Copyright © 2000-2008 Lucent Technologies Inc. and others 10 // Portions Copyright © 2009 The Go Authors. All rights reserved. 11 // 12 // Permission is hereby granted, free of charge, to any person obtaining a copy 13 // of this software and associated documentation files (the "Software"), to deal 14 // in the Software without restriction, including without limitation the rights 15 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 16 // copies of the Software, and to permit persons to whom the Software is 17 // furnished to do so, subject to the following conditions: 18 // 19 // The above copyright notice and this permission notice shall be included in 20 // all copies or substantial portions of the Software. 21 // 22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 23 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 24 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 25 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 26 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 27 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 28 // THE SOFTWARE. 29 30 package s390x 31 32 import "github.com/shogo82148/std/cmd/internal/obj" 33 34 const ( 35 NSNAME = 8 36 NSYM = 50 37 NREG = 16 38 NFREG = 16 39 ) 40 41 const ( 42 // General purpose registers (GPRs). 43 REG_R0 = obj.RBaseS390X + iota 44 REG_R1 45 REG_R2 46 REG_R3 47 REG_R4 48 REG_R5 49 REG_R6 50 REG_R7 51 REG_R8 52 REG_R9 53 REG_R10 54 REG_R11 55 REG_R12 56 REG_R13 57 REG_R14 58 REG_R15 59 60 // Floating point registers (FPRs). 61 REG_F0 62 REG_F1 63 REG_F2 64 REG_F3 65 REG_F4 66 REG_F5 67 REG_F6 68 REG_F7 69 REG_F8 70 REG_F9 71 REG_F10 72 REG_F11 73 REG_F12 74 REG_F13 75 REG_F14 76 REG_F15 77 78 // Vector registers (VRs) - only available when the vector 79 // facility is installed. 80 // V0-V15 are aliases for F0-F15. 81 // We keep them in a separate space to make printing etc. easier 82 // If the code generator ever emits vector instructions it will 83 // need to take into account the aliasing. 84 REG_V0 85 REG_V1 86 REG_V2 87 REG_V3 88 REG_V4 89 REG_V5 90 REG_V6 91 REG_V7 92 REG_V8 93 REG_V9 94 REG_V10 95 REG_V11 96 REG_V12 97 REG_V13 98 REG_V14 99 REG_V15 100 REG_V16 101 REG_V17 102 REG_V18 103 REG_V19 104 REG_V20 105 REG_V21 106 REG_V22 107 REG_V23 108 REG_V24 109 REG_V25 110 REG_V26 111 REG_V27 112 REG_V28 113 REG_V29 114 REG_V30 115 REG_V31 116 117 // Access registers (ARs). 118 // The thread pointer is typically stored in the register pair 119 // AR0 and AR1. 120 REG_AR0 121 REG_AR1 122 REG_AR2 123 REG_AR3 124 REG_AR4 125 REG_AR5 126 REG_AR6 127 REG_AR7 128 REG_AR8 129 REG_AR9 130 REG_AR10 131 REG_AR11 132 REG_AR12 133 REG_AR13 134 REG_AR14 135 REG_AR15 136 137 REG_RESERVED 138 139 REGARG = -1 140 REGRT1 = REG_R3 141 REGRT2 = REG_R4 142 REGTMP = REG_R10 143 REGTMP2 = REG_R11 144 REGCTXT = REG_R12 145 REGG = REG_R13 146 REG_LR = REG_R14 147 REGSP = REG_R15 148 ) 149 150 // LINUX for zSeries ELF Application Binary Interface Supplement 151 // https://refspecs.linuxfoundation.org/ELF/zSeries/lzsabi0_zSeries/x1472.html 152 var S390XDWARFRegisters = map[int16]int16{} 153 154 const ( 155 BIG = 32768 - 8 156 DISP12 = 4096 157 DISP16 = 65536 158 DISP20 = 1048576 159 ) 160 161 const ( 162 // mark flags 163 LEAF = 1 << iota 164 BRANCH 165 USETMP 166 ) 167 168 const ( 169 C_NONE = iota 170 C_REG 171 C_FREG 172 C_VREG 173 C_AREG 174 C_ZCON 175 C_SCON 176 C_UCON 177 C_ADDCON 178 C_ANDCON 179 C_LCON 180 C_DCON 181 C_SACON 182 C_LACON 183 C_DACON 184 C_SBRA 185 C_LBRA 186 C_SAUTO 187 C_LAUTO 188 C_ZOREG 189 C_SOREG 190 C_LOREG 191 C_TLS_LE 192 C_TLS_IE 193 C_GOK 194 C_ADDR 195 C_SYMADDR 196 C_GOTADDR 197 C_TEXTSIZE 198 C_ANY 199 C_NCLASS 200 ) 201 202 const ( 203 // integer arithmetic 204 AADD = obj.ABaseS390X + obj.A_ARCHSPECIFIC + iota 205 AADDC 206 AADDE 207 AADDW 208 ADIVW 209 ADIVWU 210 ADIVD 211 ADIVDU 212 AMODW 213 AMODWU 214 AMODD 215 AMODDU 216 AMULLW 217 AMULLD 218 AMULHD 219 AMULHDU 220 AMLGR 221 ASUB 222 ASUBC 223 ASUBV 224 ASUBE 225 ASUBW 226 ANEG 227 ANEGW 228 229 // integer moves 230 AMOVWBR 231 AMOVB 232 AMOVBZ 233 AMOVH 234 AMOVHBR 235 AMOVHZ 236 AMOVW 237 AMOVWZ 238 AMOVD 239 AMOVDBR 240 241 // conditional moves 242 AMOVDEQ 243 AMOVDGE 244 AMOVDGT 245 AMOVDLE 246 AMOVDLT 247 AMOVDNE 248 ALOCR 249 ALOCGR 250 251 // find leftmost one 252 AFLOGR 253 254 // population count 255 APOPCNT 256 257 // integer bitwise 258 AAND 259 AANDW 260 AOR 261 AORW 262 AXOR 263 AXORW 264 ASLW 265 ASLD 266 ASRW 267 ASRAW 268 ASRD 269 ASRAD 270 ARLL 271 ARLLG 272 ARNSBG 273 ARXSBG 274 AROSBG 275 ARNSBGT 276 ARXSBGT 277 AROSBGT 278 ARISBG 279 ARISBGN 280 ARISBGZ 281 ARISBGNZ 282 ARISBHG 283 ARISBLG 284 ARISBHGZ 285 ARISBLGZ 286 287 // floating point 288 AFABS 289 AFADD 290 AFADDS 291 AFCMPO 292 AFCMPU 293 ACEBR 294 AFDIV 295 AFDIVS 296 AFMADD 297 AFMADDS 298 AFMOVD 299 AFMOVS 300 AFMSUB 301 AFMSUBS 302 AFMUL 303 AFMULS 304 AFNABS 305 AFNEG 306 AFNEGS 307 ALEDBR 308 ALDEBR 309 ALPDFR 310 ALNDFR 311 AFSUB 312 AFSUBS 313 AFSQRT 314 AFSQRTS 315 AFIEBR 316 AFIDBR 317 ACPSDR 318 ALTEBR 319 ALTDBR 320 ATCEB 321 ATCDB 322 323 // move from GPR to FPR and vice versa 324 ALDGR 325 ALGDR 326 327 // convert from int32/int64 to float/float64 328 ACEFBRA 329 ACDFBRA 330 ACEGBRA 331 ACDGBRA 332 333 // convert from float/float64 to int32/int64 334 ACFEBRA 335 ACFDBRA 336 ACGEBRA 337 ACGDBRA 338 339 // convert from uint32/uint64 to float/float64 340 ACELFBR 341 ACDLFBR 342 ACELGBR 343 ACDLGBR 344 345 // convert from float/float64 to uint32/uint64 346 ACLFEBR 347 ACLFDBR 348 ACLGEBR 349 ACLGDBR 350 351 // compare 352 ACMP 353 ACMPU 354 ACMPW 355 ACMPWU 356 357 // test under mask 358 ATMHH 359 ATMHL 360 ATMLH 361 ATMLL 362 363 // insert program mask 364 AIPM 365 366 // set program mask 367 ASPM 368 369 // compare and swap 370 ACS 371 ACSG 372 373 // serialize 374 ASYNC 375 376 // branch 377 ABC 378 ABCL 379 ABRC 380 ABEQ 381 ABGE 382 ABGT 383 ABLE 384 ABLT 385 ABLEU 386 ABLTU 387 ABNE 388 ABVC 389 ABVS 390 ASYSCALL 391 392 // branch on count 393 ABRCT 394 ABRCTG 395 396 // compare and branch 397 ACRJ 398 ACGRJ 399 ACLRJ 400 ACLGRJ 401 ACIJ 402 ACGIJ 403 ACLIJ 404 ACLGIJ 405 ACMPBEQ 406 ACMPBGE 407 ACMPBGT 408 ACMPBLE 409 ACMPBLT 410 ACMPBNE 411 ACMPUBEQ 412 ACMPUBGE 413 ACMPUBGT 414 ACMPUBLE 415 ACMPUBLT 416 ACMPUBNE 417 418 // storage-and-storage 419 AMVC 420 AMVCIN 421 ACLC 422 AXC 423 AOC 424 ANC 425 426 // load 427 AEXRL 428 ALARL 429 ALA 430 ALAY 431 432 // interlocked load and op 433 ALAA 434 ALAAG 435 ALAAL 436 ALAALG 437 ALAN 438 ALANG 439 ALAX 440 ALAXG 441 ALAO 442 ALAOG 443 444 // load/store multiple 445 ALMY 446 ALMG 447 ASTMY 448 ASTMG 449 450 // store clock 451 ASTCK 452 ASTCKC 453 ASTCKE 454 ASTCKF 455 456 // macros 457 ACLEAR 458 459 // crypto 460 AKM 461 AKMC 462 AKLMD 463 AKIMD 464 AKDSA 465 AKMA 466 AKMCTR 467 468 // vector 469 AVA 470 AVAB 471 AVAH 472 AVAF 473 AVAG 474 AVAQ 475 AVACC 476 AVACCB 477 AVACCH 478 AVACCF 479 AVACCG 480 AVACCQ 481 AVAC 482 AVACQ 483 AVACCC 484 AVACCCQ 485 AVN 486 AVNC 487 AVAVG 488 AVAVGB 489 AVAVGH 490 AVAVGF 491 AVAVGG 492 AVAVGL 493 AVAVGLB 494 AVAVGLH 495 AVAVGLF 496 AVAVGLG 497 AVCKSM 498 AVCEQ 499 AVCEQB 500 AVCEQH 501 AVCEQF 502 AVCEQG 503 AVCEQBS 504 AVCEQHS 505 AVCEQFS 506 AVCEQGS 507 AVCH 508 AVCHB 509 AVCHH 510 AVCHF 511 AVCHG 512 AVCHBS 513 AVCHHS 514 AVCHFS 515 AVCHGS 516 AVCHL 517 AVCHLB 518 AVCHLH 519 AVCHLF 520 AVCHLG 521 AVCHLBS 522 AVCHLHS 523 AVCHLFS 524 AVCHLGS 525 AVCLZ 526 AVCLZB 527 AVCLZH 528 AVCLZF 529 AVCLZG 530 AVCTZ 531 AVCTZB 532 AVCTZH 533 AVCTZF 534 AVCTZG 535 AVEC 536 AVECB 537 AVECH 538 AVECF 539 AVECG 540 AVECL 541 AVECLB 542 AVECLH 543 AVECLF 544 AVECLG 545 AVERIM 546 AVERIMB 547 AVERIMH 548 AVERIMF 549 AVERIMG 550 AVERLL 551 AVERLLB 552 AVERLLH 553 AVERLLF 554 AVERLLG 555 AVERLLV 556 AVERLLVB 557 AVERLLVH 558 AVERLLVF 559 AVERLLVG 560 AVESLV 561 AVESLVB 562 AVESLVH 563 AVESLVF 564 AVESLVG 565 AVESL 566 AVESLB 567 AVESLH 568 AVESLF 569 AVESLG 570 AVESRA 571 AVESRAB 572 AVESRAH 573 AVESRAF 574 AVESRAG 575 AVESRAV 576 AVESRAVB 577 AVESRAVH 578 AVESRAVF 579 AVESRAVG 580 AVESRL 581 AVESRLB 582 AVESRLH 583 AVESRLF 584 AVESRLG 585 AVESRLV 586 AVESRLVB 587 AVESRLVH 588 AVESRLVF 589 AVESRLVG 590 AVX 591 AVFAE 592 AVFAEB 593 AVFAEH 594 AVFAEF 595 AVFAEBS 596 AVFAEHS 597 AVFAEFS 598 AVFAEZB 599 AVFAEZH 600 AVFAEZF 601 AVFAEZBS 602 AVFAEZHS 603 AVFAEZFS 604 AVFEE 605 AVFEEB 606 AVFEEH 607 AVFEEF 608 AVFEEBS 609 AVFEEHS 610 AVFEEFS 611 AVFEEZB 612 AVFEEZH 613 AVFEEZF 614 AVFEEZBS 615 AVFEEZHS 616 AVFEEZFS 617 AVFENE 618 AVFENEB 619 AVFENEH 620 AVFENEF 621 AVFENEBS 622 AVFENEHS 623 AVFENEFS 624 AVFENEZB 625 AVFENEZH 626 AVFENEZF 627 AVFENEZBS 628 AVFENEZHS 629 AVFENEZFS 630 AVFA 631 AVFADB 632 AWFADB 633 AWFK 634 AWFKDB 635 AVFCE 636 AVFCEDB 637 AVFCEDBS 638 AWFCEDB 639 AWFCEDBS 640 AVFCH 641 AVFCHDB 642 AVFCHDBS 643 AWFCHDB 644 AWFCHDBS 645 AVFCHE 646 AVFCHEDB 647 AVFCHEDBS 648 AWFCHEDB 649 AWFCHEDBS 650 AWFC 651 AWFCDB 652 AVCDG 653 AVCDGB 654 AWCDGB 655 AVCDLG 656 AVCDLGB 657 AWCDLGB 658 AVCGD 659 AVCGDB 660 AWCGDB 661 AVCLGD 662 AVCLGDB 663 AWCLGDB 664 AVFD 665 AVFDDB 666 AWFDDB 667 AVLDE 668 AVLDEB 669 AWLDEB 670 AVLED 671 AVLEDB 672 AWLEDB 673 AVFM 674 AVFMDB 675 AWFMDB 676 AVFMA 677 AVFMADB 678 AWFMADB 679 AVFMS 680 AVFMSDB 681 AWFMSDB 682 AVFPSO 683 AVFPSODB 684 AWFPSODB 685 AVFLCDB 686 AWFLCDB 687 AVFLNDB 688 AWFLNDB 689 AVFLPDB 690 AWFLPDB 691 AVFSQ 692 AVFSQDB 693 AWFSQDB 694 AVFS 695 AVFSDB 696 AWFSDB 697 AVFTCI 698 AVFTCIDB 699 AWFTCIDB 700 AVGFM 701 AVGFMB 702 AVGFMH 703 AVGFMF 704 AVGFMG 705 AVGFMA 706 AVGFMAB 707 AVGFMAH 708 AVGFMAF 709 AVGFMAG 710 AVGEF 711 AVGEG 712 AVGBM 713 AVZERO 714 AVONE 715 AVGM 716 AVGMB 717 AVGMH 718 AVGMF 719 AVGMG 720 AVISTR 721 AVISTRB 722 AVISTRH 723 AVISTRF 724 AVISTRBS 725 AVISTRHS 726 AVISTRFS 727 AVL 728 AVLR 729 AVLREP 730 AVLREPB 731 AVLREPH 732 AVLREPF 733 AVLREPG 734 AVLC 735 AVLCB 736 AVLCH 737 AVLCF 738 AVLCG 739 AVLEH 740 AVLEF 741 AVLEG 742 AVLEB 743 AVLEIH 744 AVLEIF 745 AVLEIG 746 AVLEIB 747 AVFI 748 AVFIDB 749 AWFIDB 750 AVLGV 751 AVLGVB 752 AVLGVH 753 AVLGVF 754 AVLGVG 755 AVLLEZ 756 AVLLEZB 757 AVLLEZH 758 AVLLEZF 759 AVLLEZG 760 AVLM 761 AVLP 762 AVLPB 763 AVLPH 764 AVLPF 765 AVLPG 766 AVLBB 767 AVLVG 768 AVLVGB 769 AVLVGH 770 AVLVGF 771 AVLVGG 772 AVLVGP 773 AVLL 774 AVMX 775 AVMXB 776 AVMXH 777 AVMXF 778 AVMXG 779 AVMXL 780 AVMXLB 781 AVMXLH 782 AVMXLF 783 AVMXLG 784 AVMRH 785 AVMRHB 786 AVMRHH 787 AVMRHF 788 AVMRHG 789 AVMRL 790 AVMRLB 791 AVMRLH 792 AVMRLF 793 AVMRLG 794 AVMN 795 AVMNB 796 AVMNH 797 AVMNF 798 AVMNG 799 AVMNL 800 AVMNLB 801 AVMNLH 802 AVMNLF 803 AVMNLG 804 AVMAE 805 AVMAEB 806 AVMAEH 807 AVMAEF 808 AVMAH 809 AVMAHB 810 AVMAHH 811 AVMAHF 812 AVMALE 813 AVMALEB 814 AVMALEH 815 AVMALEF 816 AVMALH 817 AVMALHB 818 AVMALHH 819 AVMALHF 820 AVMALO 821 AVMALOB 822 AVMALOH 823 AVMALOF 824 AVMAL 825 AVMALB 826 AVMALHW 827 AVMALF 828 AVMAO 829 AVMAOB 830 AVMAOH 831 AVMAOF 832 AVME 833 AVMEB 834 AVMEH 835 AVMEF 836 AVMH 837 AVMHB 838 AVMHH 839 AVMHF 840 AVMLE 841 AVMLEB 842 AVMLEH 843 AVMLEF 844 AVMLH 845 AVMLHB 846 AVMLHH 847 AVMLHF 848 AVMLO 849 AVMLOB 850 AVMLOH 851 AVMLOF 852 AVML 853 AVMLB 854 AVMLHW 855 AVMLF 856 AVMO 857 AVMOB 858 AVMOH 859 AVMOF 860 AVNO 861 AVNOT 862 AVO 863 AVPK 864 AVPKH 865 AVPKF 866 AVPKG 867 AVPKLS 868 AVPKLSH 869 AVPKLSF 870 AVPKLSG 871 AVPKLSHS 872 AVPKLSFS 873 AVPKLSGS 874 AVPKS 875 AVPKSH 876 AVPKSF 877 AVPKSG 878 AVPKSHS 879 AVPKSFS 880 AVPKSGS 881 AVPERM 882 AVPDI 883 AVPOPCT 884 AVREP 885 AVREPB 886 AVREPH 887 AVREPF 888 AVREPG 889 AVREPI 890 AVREPIB 891 AVREPIH 892 AVREPIF 893 AVREPIG 894 AVSCEF 895 AVSCEG 896 AVSEL 897 AVSL 898 AVSLB 899 AVSLDB 900 AVSRA 901 AVSRAB 902 AVSRL 903 AVSRLB 904 AVSEG 905 AVSEGB 906 AVSEGH 907 AVSEGF 908 AVST 909 AVSTEH 910 AVSTEF 911 AVSTEG 912 AVSTEB 913 AVSTM 914 AVSTL 915 AVSTRC 916 AVSTRCB 917 AVSTRCH 918 AVSTRCF 919 AVSTRCBS 920 AVSTRCHS 921 AVSTRCFS 922 AVSTRCZB 923 AVSTRCZH 924 AVSTRCZF 925 AVSTRCZBS 926 AVSTRCZHS 927 AVSTRCZFS 928 AVS 929 AVSB 930 AVSH 931 AVSF 932 AVSG 933 AVSQ 934 AVSCBI 935 AVSCBIB 936 AVSCBIH 937 AVSCBIF 938 AVSCBIG 939 AVSCBIQ 940 AVSBCBI 941 AVSBCBIQ 942 AVSBI 943 AVSBIQ 944 AVSUMG 945 AVSUMGH 946 AVSUMGF 947 AVSUMQ 948 AVSUMQF 949 AVSUMQG 950 AVSUM 951 AVSUMB 952 AVSUMH 953 AVTM 954 AVUPH 955 AVUPHB 956 AVUPHH 957 AVUPHF 958 AVUPLH 959 AVUPLHB 960 AVUPLHH 961 AVUPLHF 962 AVUPLL 963 AVUPLLB 964 AVUPLLH 965 AVUPLLF 966 AVUPL 967 AVUPLB 968 AVUPLHW 969 AVUPLF 970 AVMSLG 971 AVMSLEG 972 AVMSLOG 973 AVMSLEOG 974 975 ANOPH 976 977 // binary 978 ABYTE 979 AWORD 980 ADWORD 981 982 // Breakpoint 983 ABRRK 984 985 // end marker 986 ALAST 987 988 // aliases 989 ABR = obj.AJMP 990 ABL = obj.ACALL 991 )