root/arch/parisc/kernel/perf_asm.S

/* [<][>][^][v][top][bottom][index][help] */
   1 /* SPDX-License-Identifier: GPL-2.0-or-later */
   2 
   3 /*    low-level asm for "intrigue" (PA8500-8700 CPU perf counters)
   4  * 
   5  *    Copyright (C) 2001 Randolph Chung <tausq at parisc-linux.org>
   6  *    Copyright (C) 2001 Hewlett-Packard (Grant Grundler)
   7  */
   8 
   9 #include <asm/assembly.h>
  10 
  11 #include <linux/init.h>
  12 #include <linux/linkage.h>
  13 
  14 #ifdef CONFIG_64BIT
  15         .level          2.0w
  16 #endif /* CONFIG_64BIT */
  17 
  18 #define MTDIAG_1(gr)    .word 0x14201840 + gr*0x10000
  19 #define MTDIAG_2(gr)    .word 0x14401840 + gr*0x10000
  20 #define MFDIAG_1(gr)    .word 0x142008A0 + gr
  21 #define MFDIAG_2(gr)    .word 0x144008A0 + gr
  22 #define STDIAG(dr)      .word 0x14000AA0 + dr*0x200000
  23 #define SFDIAG(dr)      .word 0x14000BA0 + dr*0x200000
  24 #define DR2_SLOW_RET    53
  25 
  26 
  27 ;
  28 ; Enable the performance counters
  29 ;
  30 ; The coprocessor only needs to be enabled when
  31 ; starting/stopping the coprocessor with the pmenb/pmdis.
  32 ;
  33         .text
  34 
  35 ENTRY(perf_intrigue_enable_perf_counters)
  36         .proc
  37         .callinfo  frame=0,NO_CALLS
  38         .entry
  39 
  40         ldi     0x20,%r25                ; load up perfmon bit
  41         mfctl   ccr,%r26                 ; get coprocessor register
  42         or      %r25,%r26,%r26             ; set bit
  43         mtctl   %r26,ccr                 ; turn on performance coprocessor
  44         pmenb                           ; enable performance monitor
  45         ssm     0,0                     ; dummy op to ensure completion
  46         sync                            ; follow ERS
  47         andcm   %r26,%r25,%r26             ; clear bit now 
  48         mtctl   %r26,ccr                 ; turn off performance coprocessor
  49         nop                             ; NOPs as specified in ERS
  50         nop
  51         nop
  52         nop
  53         nop
  54         nop
  55         nop
  56         bve    (%r2)
  57         nop
  58         .exit
  59         .procend
  60 ENDPROC(perf_intrigue_enable_perf_counters)
  61 
  62 ENTRY(perf_intrigue_disable_perf_counters)
  63         .proc
  64         .callinfo  frame=0,NO_CALLS
  65         .entry
  66         ldi     0x20,%r25                ; load up perfmon bit
  67         mfctl   ccr,%r26                 ; get coprocessor register
  68         or      %r25,%r26,%r26             ; set bit
  69         mtctl   %r26,ccr                 ; turn on performance coprocessor
  70         pmdis                           ; disable performance monitor
  71         ssm     0,0                     ; dummy op to ensure completion
  72         andcm   %r26,%r25,%r26             ; clear bit now 
  73         bve    (%r2)
  74         mtctl   %r26,ccr                 ; turn off performance coprocessor
  75         .exit
  76         .procend
  77 ENDPROC(perf_intrigue_disable_perf_counters)
  78 
  79 ;***********************************************************************
  80 ;*
  81 ;* Name: perf_rdr_shift_in_W
  82 ;*
  83 ;* Description:
  84 ;*      This routine shifts data in from the RDR in arg0 and returns
  85 ;*      the result in ret0.  If the RDR is <= 64 bits in length, it
  86 ;*      is shifted shifted backup immediately.  This is to compensate
  87 ;*      for RDR10 which has bits that preclude PDC stack operations
  88 ;*      when they are in the wrong state.
  89 ;*
  90 ;* Arguments:
  91 ;*      arg0 : rdr to be read
  92 ;*      arg1 : bit length of rdr
  93 ;*
  94 ;* Returns:
  95 ;*      ret0 = next 64 bits of rdr data from staging register
  96 ;*
  97 ;* Register usage:
  98 ;*      arg0 : rdr to be read
  99 ;*      arg1 : bit length of rdr
 100 ;*      %r24  - original DR2 value
 101 ;*      %r1   - scratch
 102 ;*  %r29  - scratch
 103 ;*
 104 ;* Returns:
 105 ;*      ret0 = RDR data (right justified)
 106 ;*
 107 ;***********************************************************************
 108 
 109 ENTRY(perf_rdr_shift_in_W)
 110         .proc
 111         .callinfo frame=0,NO_CALLS
 112         .entry
 113 ;
 114 ; read(shift in) the RDR.
 115 ;
 116 
 117 ; NOTE: The PCX-W ERS states that DR2_SLOW_RET must be set before any
 118 ; shifting is done, from or to, remote diagnose registers.
 119 ;
 120 
 121         depdi,z         1,DR2_SLOW_RET,1,%r29
 122         MFDIAG_2        (24)
 123         or                  %r24,%r29,%r29
 124         MTDIAG_2        (29)                    ; set DR2_SLOW_RET
 125 
 126         nop
 127         nop
 128         nop
 129         nop
 130 
 131 ;
 132 ; Cacheline start (32-byte cacheline)
 133 ;
 134         nop
 135         nop
 136         nop
 137         extrd,u         arg1,63,6,%r1   ; setup shift amount by bits to move 
 138 
 139         mtsar           %r1
 140         shladd          arg0,2,%r0,%r1  ; %r1 = 4 * RDR number
 141         blr             %r1,%r0         ; branch to 8-instruction sequence
 142         nop
 143 
 144 ;
 145 ; Cacheline start (32-byte cacheline)
 146 ;
 147 
 148         ;
 149         ; RDR 0 sequence
 150         ;
 151         SFDIAG          (0)
 152         ssm                 0,0
 153         MFDIAG_1        (28)
 154         shrpd           ret0,%r0,%sar,%r1
 155         MTDIAG_1        (1)                     ; mtdiag %dr1, %r1 
 156         STDIAG          (0)
 157         ssm                 0,0
 158         b,n         perf_rdr_shift_in_W_leave
 159 
 160         ;
 161         ; RDR 1 sequence
 162         ;
 163         sync
 164         ssm                 0,0
 165         SFDIAG          (1)
 166         ssm                 0,0
 167         MFDIAG_1        (28)
 168         ssm                 0,0
 169         b,n         perf_rdr_shift_in_W_leave
 170         nop
 171 
 172         ;
 173         ; RDR 2 read sequence
 174         ;
 175         SFDIAG          (2)
 176         ssm                 0,0
 177         MFDIAG_1        (28)
 178         shrpd           ret0,%r0,%sar,%r1
 179         MTDIAG_1        (1)
 180         STDIAG          (2)
 181         ssm                 0,0
 182         b,n         perf_rdr_shift_in_W_leave
 183 
 184         ;
 185         ; RDR 3 read sequence
 186         ;
 187         b,n         perf_rdr_shift_in_W_leave
 188         nop
 189         nop
 190         nop
 191         nop
 192         nop
 193         nop
 194         nop
 195 
 196         ;
 197         ; RDR 4 read sequence
 198         ;
 199         sync
 200         ssm             0,0
 201         SFDIAG          (4)
 202         ssm             0,0
 203         MFDIAG_1        (28)
 204         b,n         perf_rdr_shift_in_W_leave
 205         ssm             0,0
 206         nop
 207 
 208         ; 
 209         ; RDR 5 read sequence
 210         ;
 211         sync
 212         ssm             0,0
 213         SFDIAG          (5)
 214         ssm             0,0
 215         MFDIAG_1        (28)
 216         b,n         perf_rdr_shift_in_W_leave
 217         ssm             0,0
 218         nop
 219 
 220         ;
 221         ; RDR 6 read sequence
 222         ;
 223         sync
 224         ssm             0,0
 225         SFDIAG          (6)
 226         ssm             0,0
 227         MFDIAG_1        (28)
 228         b,n         perf_rdr_shift_in_W_leave
 229         ssm             0,0
 230         nop
 231 
 232         ;
 233         ; RDR 7 read sequence
 234         ;
 235         b,n         perf_rdr_shift_in_W_leave
 236         nop
 237         nop
 238         nop
 239         nop
 240         nop
 241         nop
 242         nop
 243 
 244         ;
 245         ; RDR 8 read sequence
 246         ;
 247         b,n         perf_rdr_shift_in_W_leave
 248         nop
 249         nop
 250         nop
 251         nop
 252         nop
 253         nop
 254         nop
 255 
 256         ;
 257         ; RDR 9 read sequence
 258         ;
 259         b,n         perf_rdr_shift_in_W_leave
 260         nop
 261         nop
 262         nop
 263         nop
 264         nop
 265         nop
 266         nop
 267 
 268         ;
 269         ; RDR 10 read sequence
 270         ;
 271         SFDIAG          (10)
 272         ssm             0,0
 273         MFDIAG_1        (28)
 274         shrpd           ret0,%r0,%sar,%r1
 275         MTDIAG_1        (1)
 276         STDIAG          (10)
 277         ssm             0,0
 278         b,n         perf_rdr_shift_in_W_leave
 279 
 280         ;
 281         ; RDR 11 read sequence
 282         ;
 283         SFDIAG          (11)
 284         ssm             0,0
 285         MFDIAG_1        (28)
 286         shrpd           ret0,%r0,%sar,%r1
 287         MTDIAG_1        (1)
 288         STDIAG          (11)
 289         ssm             0,0
 290         b,n         perf_rdr_shift_in_W_leave
 291 
 292         ;
 293         ; RDR 12 read sequence
 294         ;
 295         b,n         perf_rdr_shift_in_W_leave
 296         nop
 297         nop
 298         nop
 299         nop
 300         nop
 301         nop
 302         nop
 303 
 304         ;
 305         ; RDR 13 read sequence
 306         ;
 307         sync
 308         ssm             0,0
 309         SFDIAG          (13)
 310         ssm             0,0
 311         MFDIAG_1        (28)
 312         b,n         perf_rdr_shift_in_W_leave
 313         ssm             0,0
 314         nop
 315 
 316         ;
 317         ; RDR 14 read sequence
 318         ;
 319         SFDIAG          (14)
 320         ssm             0,0
 321         MFDIAG_1        (28)
 322         shrpd           ret0,%r0,%sar,%r1
 323         MTDIAG_1        (1)
 324         STDIAG          (14)
 325         ssm             0,0
 326         b,n         perf_rdr_shift_in_W_leave
 327 
 328         ;
 329         ; RDR 15 read sequence
 330         ;
 331         sync
 332         ssm             0,0
 333         SFDIAG          (15)
 334         ssm             0,0
 335         MFDIAG_1        (28)
 336         ssm             0,0
 337         b,n         perf_rdr_shift_in_W_leave
 338         nop
 339 
 340         ;
 341         ; RDR 16 read sequence
 342         ;
 343         sync
 344         ssm             0,0
 345         SFDIAG          (16)
 346         ssm             0,0
 347         MFDIAG_1        (28)
 348         b,n         perf_rdr_shift_in_W_leave
 349         ssm             0,0
 350         nop
 351 
 352         ;
 353         ; RDR 17 read sequence
 354         ;
 355         SFDIAG          (17)
 356         ssm             0,0
 357         MFDIAG_1        (28)
 358         shrpd           ret0,%r0,%sar,%r1
 359         MTDIAG_1        (1)
 360         STDIAG          (17)
 361         ssm             0,0
 362         b,n         perf_rdr_shift_in_W_leave
 363 
 364         ;
 365         ; RDR 18 read sequence
 366         ;
 367         SFDIAG          (18)
 368         ssm             0,0
 369         MFDIAG_1        (28)
 370         shrpd           ret0,%r0,%sar,%r1
 371         MTDIAG_1        (1)
 372         STDIAG          (18)
 373         ssm             0,0
 374         b,n         perf_rdr_shift_in_W_leave
 375 
 376         ;
 377         ; RDR 19 read sequence
 378         ;
 379         b,n         perf_rdr_shift_in_W_leave
 380         nop
 381         nop
 382         nop
 383         nop
 384         nop
 385         nop
 386         nop
 387 
 388         ;
 389         ; RDR 20 read sequence
 390         ;
 391         sync
 392         ssm             0,0
 393         SFDIAG          (20)
 394         ssm             0,0
 395         MFDIAG_1        (28)
 396         b,n         perf_rdr_shift_in_W_leave
 397         ssm             0,0
 398         nop
 399 
 400         ;
 401         ; RDR 21 read sequence
 402         ;
 403         sync
 404         ssm             0,0
 405         SFDIAG          (21)
 406         ssm             0,0
 407         MFDIAG_1        (28)
 408         b,n         perf_rdr_shift_in_W_leave
 409         ssm             0,0
 410         nop
 411 
 412         ;
 413         ; RDR 22 read sequence
 414         ;
 415         sync
 416         ssm             0,0
 417         SFDIAG          (22)
 418         ssm             0,0
 419         MFDIAG_1        (28)
 420         b,n         perf_rdr_shift_in_W_leave
 421         ssm             0,0
 422         nop
 423 
 424         ;
 425         ; RDR 23 read sequence
 426         ;
 427         sync
 428         ssm             0,0
 429         SFDIAG          (23)
 430         ssm             0,0
 431         MFDIAG_1        (28)
 432         b,n         perf_rdr_shift_in_W_leave
 433         ssm             0,0
 434         nop
 435 
 436         ;
 437         ; RDR 24 read sequence
 438         ;
 439         sync
 440         ssm             0,0
 441         SFDIAG          (24)
 442         ssm             0,0
 443         MFDIAG_1        (28)
 444         b,n         perf_rdr_shift_in_W_leave
 445         ssm             0,0
 446         nop
 447 
 448         ;
 449         ; RDR 25 read sequence
 450         ;
 451         sync
 452         ssm             0,0
 453         SFDIAG          (25)
 454         ssm             0,0
 455         MFDIAG_1        (28)
 456         b,n         perf_rdr_shift_in_W_leave
 457         ssm             0,0
 458         nop
 459 
 460         ;
 461         ; RDR 26 read sequence
 462         ;
 463         SFDIAG          (26)
 464         ssm             0,0
 465         MFDIAG_1        (28)
 466         shrpd           ret0,%r0,%sar,%r1
 467         MTDIAG_1        (1)
 468         STDIAG          (26)
 469         ssm             0,0
 470         b,n         perf_rdr_shift_in_W_leave
 471 
 472         ;
 473         ; RDR 27 read sequence
 474         ;
 475         SFDIAG          (27)
 476         ssm             0,0
 477         MFDIAG_1        (28)
 478         shrpd           ret0,%r0,%sar,%r1
 479         MTDIAG_1        (1)
 480         STDIAG          (27)
 481         ssm             0,0
 482         b,n         perf_rdr_shift_in_W_leave
 483 
 484         ;
 485         ; RDR 28 read sequence
 486         ;
 487         sync
 488         ssm             0,0
 489         SFDIAG          (28)
 490         ssm             0,0
 491         MFDIAG_1        (28)
 492         b,n         perf_rdr_shift_in_W_leave
 493         ssm             0,0
 494         nop
 495 
 496         ;
 497         ; RDR 29 read sequence
 498         ;
 499         sync
 500         ssm             0,0
 501         SFDIAG          (29)
 502         ssm             0,0
 503         MFDIAG_1        (28)
 504         b,n         perf_rdr_shift_in_W_leave
 505         ssm             0,0
 506         nop
 507 
 508         ;
 509         ; RDR 30 read sequence
 510         ;
 511         SFDIAG          (30)
 512         ssm             0,0
 513         MFDIAG_1        (28)
 514         shrpd           ret0,%r0,%sar,%r1
 515         MTDIAG_1        (1)
 516         STDIAG          (30)
 517         ssm             0,0
 518         b,n         perf_rdr_shift_in_W_leave
 519 
 520         ;
 521         ; RDR 31 read sequence
 522         ;
 523         sync
 524         ssm             0,0
 525         SFDIAG          (31)
 526         ssm             0,0
 527         MFDIAG_1        (28)
 528         nop
 529         ssm             0,0
 530         nop
 531 
 532         ;
 533         ; Fallthrough
 534         ;
 535 
 536 perf_rdr_shift_in_W_leave:
 537         bve                 (%r2)
 538         .exit
 539         MTDIAG_2        (24)                    ; restore DR2
 540         .procend
 541 ENDPROC(perf_rdr_shift_in_W)
 542 
 543 
 544 ;***********************************************************************
 545 ;*
 546 ;* Name: perf_rdr_shift_out_W
 547 ;*
 548 ;* Description:
 549 ;*      This routine moves data to the RDR's.  The double-word that
 550 ;*      arg1 points to is loaded and moved into the staging register.
 551 ;*      Then the STDIAG instruction for the RDR # in arg0 is called
 552 ;*      to move the data to the RDR.
 553 ;*
 554 ;* Arguments:
 555 ;*      arg0 = rdr number
 556 ;*      arg1 = 64-bit value to write
 557 ;*      %r24 - DR2 | DR2_SLOW_RET
 558 ;*      %r23 - original DR2 value
 559 ;*
 560 ;* Returns:
 561 ;*      None
 562 ;*
 563 ;* Register usage:
 564 ;*
 565 ;***********************************************************************
 566 
 567 ENTRY(perf_rdr_shift_out_W)
 568         .proc
 569         .callinfo frame=0,NO_CALLS
 570         .entry
 571 ;
 572 ; NOTE: The PCX-W ERS states that DR2_SLOW_RET must be set before any
 573 ; shifting is done, from or to, the remote diagnose registers.
 574 ;
 575 
 576         depdi,z         1,DR2_SLOW_RET,1,%r24
 577         MFDIAG_2        (23)
 578         or              %r24,%r23,%r24
 579         MTDIAG_2        (24)            ; set DR2_SLOW_RET
 580         MTDIAG_1        (25)            ; data to the staging register
 581         shladd          arg0,2,%r0,%r1  ; %r1 = 4 * RDR number
 582         blr                 %r1,%r0     ; branch to 8-instruction sequence
 583         nop
 584 
 585         ;
 586         ; RDR 0 write sequence
 587         ;
 588         sync                            ; RDR 0 write sequence
 589         ssm             0,0
 590         STDIAG          (0)
 591         ssm             0,0
 592         b,n         perf_rdr_shift_out_W_leave
 593         nop
 594         ssm             0,0
 595         nop
 596 
 597         ;
 598         ; RDR 1 write sequence
 599         ;
 600         sync
 601         ssm             0,0
 602         STDIAG          (1)
 603         ssm             0,0
 604         b,n         perf_rdr_shift_out_W_leave
 605         nop
 606         ssm             0,0
 607         nop
 608 
 609         ;
 610         ; RDR 2 write sequence
 611         ;
 612         sync
 613         ssm             0,0
 614         STDIAG          (2)
 615         ssm             0,0
 616         b,n         perf_rdr_shift_out_W_leave
 617         nop
 618         ssm             0,0
 619         nop
 620 
 621         ;
 622         ; RDR 3 write sequence
 623         ;
 624         sync
 625         ssm             0,0
 626         STDIAG          (3)
 627         ssm             0,0
 628         b,n         perf_rdr_shift_out_W_leave
 629         nop
 630         ssm             0,0
 631         nop
 632 
 633         ;
 634         ; RDR 4 write sequence
 635         ;
 636         sync
 637         ssm             0,0
 638         STDIAG          (4)
 639         ssm             0,0
 640         b,n         perf_rdr_shift_out_W_leave
 641         nop
 642         ssm             0,0
 643         nop
 644 
 645         ;
 646         ; RDR 5 write sequence
 647         ;
 648         sync
 649         ssm             0,0
 650         STDIAG          (5)
 651         ssm             0,0
 652         b,n         perf_rdr_shift_out_W_leave
 653         nop
 654         ssm             0,0
 655         nop
 656 
 657         ;
 658         ; RDR 6 write sequence
 659         ;
 660         sync
 661         ssm             0,0
 662         STDIAG          (6)
 663         ssm             0,0
 664         b,n         perf_rdr_shift_out_W_leave
 665         nop
 666         ssm             0,0
 667         nop
 668 
 669         ;
 670         ; RDR 7 write sequence
 671         ;
 672         sync
 673         ssm             0,0
 674         STDIAG          (7)
 675         ssm             0,0
 676         b,n         perf_rdr_shift_out_W_leave
 677         nop
 678         ssm             0,0
 679         nop
 680 
 681         ;
 682         ; RDR 8 write sequence
 683         ;
 684         sync
 685         ssm             0,0
 686         STDIAG          (8)
 687         ssm             0,0
 688         b,n         perf_rdr_shift_out_W_leave
 689         nop
 690         ssm             0,0
 691         nop
 692 
 693         ;
 694         ; RDR 9 write sequence
 695         ;
 696         sync
 697         ssm             0,0
 698         STDIAG          (9)
 699         ssm             0,0
 700         b,n         perf_rdr_shift_out_W_leave
 701         nop
 702         ssm             0,0
 703         nop
 704 
 705         ;
 706         ; RDR 10 write sequence
 707         ;
 708         sync
 709         ssm             0,0
 710         STDIAG          (10)
 711         STDIAG          (26)
 712         ssm             0,0
 713         b,n         perf_rdr_shift_out_W_leave
 714         ssm             0,0
 715         nop
 716 
 717         ;
 718         ; RDR 11 write sequence
 719         ;
 720         sync
 721         ssm             0,0
 722         STDIAG          (11)
 723         STDIAG          (27)
 724         ssm             0,0
 725         b,n         perf_rdr_shift_out_W_leave
 726         ssm             0,0
 727         nop
 728 
 729         ;
 730         ; RDR 12 write sequence
 731         ;
 732         sync
 733         ssm             0,0
 734         STDIAG          (12)
 735         ssm             0,0
 736         b,n         perf_rdr_shift_out_W_leave
 737         nop
 738         ssm             0,0
 739         nop
 740 
 741         ;
 742         ; RDR 13 write sequence
 743         ;
 744         sync
 745         ssm             0,0
 746         STDIAG          (13)
 747         ssm             0,0
 748         b,n         perf_rdr_shift_out_W_leave
 749         nop
 750         ssm             0,0
 751         nop
 752 
 753         ;
 754         ; RDR 14 write sequence
 755         ;
 756         sync
 757         ssm             0,0
 758         STDIAG          (14)
 759         ssm             0,0
 760         b,n         perf_rdr_shift_out_W_leave
 761         nop
 762         ssm             0,0
 763         nop
 764 
 765         ;
 766         ; RDR 15 write sequence
 767         ;
 768         sync
 769         ssm             0,0
 770         STDIAG          (15)
 771         ssm             0,0
 772         b,n         perf_rdr_shift_out_W_leave
 773         nop
 774         ssm             0,0
 775         nop
 776 
 777         ;
 778         ; RDR 16 write sequence
 779         ;
 780         sync
 781         ssm             0,0
 782         STDIAG          (16)
 783         ssm             0,0
 784         b,n         perf_rdr_shift_out_W_leave
 785         nop
 786         ssm             0,0
 787         nop
 788 
 789         ;
 790         ; RDR 17 write sequence
 791         ;
 792         sync
 793         ssm             0,0
 794         STDIAG          (17)
 795         ssm             0,0
 796         b,n         perf_rdr_shift_out_W_leave
 797         nop
 798         ssm             0,0
 799         nop
 800 
 801         ;
 802         ; RDR 18 write sequence
 803         ;
 804         sync
 805         ssm             0,0
 806         STDIAG          (18)
 807         ssm             0,0
 808         b,n         perf_rdr_shift_out_W_leave
 809         nop
 810         ssm             0,0
 811         nop
 812 
 813         ;
 814         ; RDR 19 write sequence
 815         ;
 816         sync
 817         ssm             0,0
 818         STDIAG          (19)
 819         ssm             0,0
 820         b,n         perf_rdr_shift_out_W_leave
 821         nop
 822         ssm             0,0
 823         nop
 824 
 825         ;
 826         ; RDR 20 write sequence
 827         ;
 828         sync
 829         ssm             0,0
 830         STDIAG          (20)
 831         ssm             0,0
 832         b,n         perf_rdr_shift_out_W_leave
 833         nop
 834         ssm             0,0
 835         nop
 836 
 837         ;
 838         ; RDR 21 write sequence
 839         ;
 840         sync
 841         ssm             0,0
 842         STDIAG          (21)
 843         ssm             0,0
 844         b,n         perf_rdr_shift_out_W_leave
 845         nop
 846         ssm             0,0
 847         nop
 848 
 849         ;
 850         ; RDR 22 write sequence
 851         ;
 852         sync
 853         ssm             0,0
 854         STDIAG          (22)
 855         ssm             0,0
 856         b,n         perf_rdr_shift_out_W_leave
 857         nop
 858         ssm             0,0
 859         nop
 860 
 861         ;
 862         ; RDR 23 write sequence
 863         ;
 864         sync
 865         ssm             0,0
 866         STDIAG          (23)
 867         ssm             0,0
 868         b,n         perf_rdr_shift_out_W_leave
 869         nop
 870         ssm             0,0
 871         nop
 872 
 873         ;
 874         ; RDR 24 write sequence
 875         ;
 876         sync
 877         ssm             0,0
 878         STDIAG          (24)
 879         ssm             0,0
 880         b,n         perf_rdr_shift_out_W_leave
 881         nop
 882         ssm             0,0
 883         nop
 884 
 885         ;
 886         ; RDR 25 write sequence
 887         ;
 888         sync
 889         ssm             0,0
 890         STDIAG          (25)
 891         ssm             0,0
 892         b,n         perf_rdr_shift_out_W_leave
 893         nop
 894         ssm             0,0
 895         nop
 896 
 897         ;
 898         ; RDR 26 write sequence
 899         ;
 900         sync
 901         ssm             0,0
 902         STDIAG          (10)
 903         STDIAG          (26)
 904         ssm             0,0
 905         b,n         perf_rdr_shift_out_W_leave
 906         ssm             0,0
 907         nop
 908 
 909         ;
 910         ; RDR 27 write sequence
 911         ;
 912         sync
 913         ssm             0,0
 914         STDIAG          (11)
 915         STDIAG          (27)
 916         ssm             0,0
 917         b,n         perf_rdr_shift_out_W_leave
 918         ssm             0,0
 919         nop
 920 
 921         ;
 922         ; RDR 28 write sequence
 923         ;
 924         sync
 925         ssm             0,0
 926         STDIAG          (28)
 927         ssm             0,0
 928         b,n         perf_rdr_shift_out_W_leave
 929         nop
 930         ssm             0,0
 931         nop
 932 
 933         ;
 934         ; RDR 29 write sequence
 935         ;
 936         sync
 937         ssm             0,0
 938         STDIAG          (29)
 939         ssm             0,0
 940         b,n         perf_rdr_shift_out_W_leave
 941         nop
 942         ssm             0,0
 943         nop
 944 
 945         ;
 946         ; RDR 30 write sequence
 947         ;
 948         sync
 949         ssm             0,0
 950         STDIAG          (30)
 951         ssm             0,0
 952         b,n         perf_rdr_shift_out_W_leave
 953         nop
 954         ssm             0,0
 955         nop
 956 
 957         ;
 958         ; RDR 31 write sequence
 959         ;
 960         sync
 961         ssm             0,0
 962         STDIAG          (31)
 963         ssm             0,0
 964         b,n         perf_rdr_shift_out_W_leave
 965         nop
 966         ssm             0,0
 967         nop
 968 
 969 perf_rdr_shift_out_W_leave:
 970         bve             (%r2)
 971         .exit
 972         MTDIAG_2        (23)                    ; restore DR2
 973         .procend
 974 ENDPROC(perf_rdr_shift_out_W)
 975 
 976 
 977 ;***********************************************************************
 978 ;*
 979 ;* Name: rdr_shift_in_U
 980 ;*
 981 ;* Description:
 982 ;*      This routine shifts data in from the RDR in arg0 and returns
 983 ;*      the result in ret0.  If the RDR is <= 64 bits in length, it
 984 ;*      is shifted shifted backup immediately.  This is to compensate
 985 ;*      for RDR10 which has bits that preclude PDC stack operations
 986 ;*      when they are in the wrong state.
 987 ;*
 988 ;* Arguments:
 989 ;*      arg0 : rdr to be read
 990 ;*      arg1 : bit length of rdr
 991 ;*
 992 ;* Returns:
 993 ;*      ret0 = next 64 bits of rdr data from staging register
 994 ;*
 995 ;* Register usage:
 996 ;*      arg0 : rdr to be read                                                                   
 997 ;*      arg1 : bit length of rdr                                                                
 998 ;*      %r24 - original DR2 value
 999 ;*      %r23 - DR2 | DR2_SLOW_RET
1000 ;*      %r1  - scratch
1001 ;*
1002 ;***********************************************************************
1003 
1004 ENTRY(perf_rdr_shift_in_U)
1005         .proc
1006         .callinfo frame=0,NO_CALLS
1007         .entry
1008 
1009 ; read(shift in) the RDR.
1010 ;
1011 ; NOTE: The PCX-U ERS states that DR2_SLOW_RET must be set before any
1012 ; shifting is done, from or to, remote diagnose registers.
1013 
1014         depdi,z         1,DR2_SLOW_RET,1,%r29
1015         MFDIAG_2        (24)
1016         or                      %r24,%r29,%r29
1017         MTDIAG_2        (29)                    ; set DR2_SLOW_RET
1018 
1019         nop
1020         nop
1021         nop
1022         nop
1023 
1024 ;
1025 ; Start of next 32-byte cacheline
1026 ;
1027         nop
1028         nop
1029         nop
1030         extrd,u         arg1,63,6,%r1
1031 
1032         mtsar           %r1
1033         shladd          arg0,2,%r0,%r1  ; %r1 = 4 * RDR number
1034         blr             %r1,%r0         ; branch to 8-instruction sequence
1035         nop
1036 
1037 ;
1038 ; Start of next 32-byte cacheline
1039 ;
1040         SFDIAG          (0)             ; RDR 0 read sequence
1041         ssm             0,0
1042         MFDIAG_1        (28)
1043         shrpd           ret0,%r0,%sar,%r1
1044         MTDIAG_1        (1)
1045         STDIAG          (0)
1046         ssm             0,0
1047         b,n         perf_rdr_shift_in_U_leave
1048 
1049         SFDIAG          (1)             ; RDR 1 read sequence
1050         ssm             0,0
1051         MFDIAG_1        (28)
1052         shrpd           ret0,%r0,%sar,%r1
1053         MTDIAG_1        (1)
1054         STDIAG          (1)
1055         ssm             0,0
1056         b,n         perf_rdr_shift_in_U_leave
1057 
1058         sync                            ; RDR 2 read sequence
1059         ssm             0,0
1060         SFDIAG          (4)
1061         ssm             0,0
1062         MFDIAG_1        (28)
1063         b,n         perf_rdr_shift_in_U_leave
1064         ssm             0,0
1065         nop
1066 
1067         sync                            ; RDR 3 read sequence
1068         ssm             0,0
1069         SFDIAG          (3)
1070         ssm             0,0
1071         MFDIAG_1        (28)
1072         b,n         perf_rdr_shift_in_U_leave
1073         ssm             0,0
1074         nop
1075 
1076         sync                            ; RDR 4 read sequence
1077         ssm             0,0
1078         SFDIAG          (4)
1079         ssm             0,0
1080         MFDIAG_1        (28)
1081         b,n         perf_rdr_shift_in_U_leave
1082         ssm             0,0
1083         nop
1084 
1085         sync                            ; RDR 5 read sequence
1086         ssm             0,0
1087         SFDIAG          (5)
1088         ssm             0,0
1089         MFDIAG_1        (28)
1090         b,n         perf_rdr_shift_in_U_leave
1091         ssm             0,0
1092         nop
1093 
1094         sync                            ; RDR 6 read sequence
1095         ssm             0,0
1096         SFDIAG          (6)
1097         ssm             0,0
1098         MFDIAG_1        (28)
1099         b,n         perf_rdr_shift_in_U_leave
1100         ssm             0,0
1101         nop
1102 
1103         sync                            ; RDR 7 read sequence
1104         ssm             0,0
1105         SFDIAG          (7)
1106         ssm             0,0
1107         MFDIAG_1        (28)
1108         b,n         perf_rdr_shift_in_U_leave
1109         ssm             0,0
1110         nop
1111 
1112         b,n         perf_rdr_shift_in_U_leave
1113         nop
1114         nop
1115         nop
1116         nop
1117         nop
1118         nop
1119         nop
1120 
1121         SFDIAG          (9)             ; RDR 9 read sequence
1122         ssm             0,0
1123         MFDIAG_1        (28)
1124         shrpd           ret0,%r0,%sar,%r1
1125         MTDIAG_1        (1)
1126         STDIAG          (9)
1127         ssm             0,0
1128         b,n         perf_rdr_shift_in_U_leave
1129 
1130         SFDIAG          (10)            ; RDR 10 read sequence
1131         ssm             0,0
1132         MFDIAG_1        (28)
1133         shrpd           ret0,%r0,%sar,%r1
1134         MTDIAG_1        (1)
1135         STDIAG          (10)
1136         ssm             0,0
1137         b,n         perf_rdr_shift_in_U_leave
1138 
1139         SFDIAG          (11)            ; RDR 11 read sequence
1140         ssm             0,0
1141         MFDIAG_1        (28)
1142         shrpd           ret0,%r0,%sar,%r1
1143         MTDIAG_1        (1)
1144         STDIAG          (11)
1145         ssm             0,0
1146         b,n         perf_rdr_shift_in_U_leave
1147 
1148         SFDIAG          (12)            ; RDR 12 read sequence
1149         ssm             0,0
1150         MFDIAG_1        (28)
1151         shrpd           ret0,%r0,%sar,%r1
1152         MTDIAG_1        (1)
1153         STDIAG          (12)
1154         ssm             0,0
1155         b,n         perf_rdr_shift_in_U_leave
1156 
1157         SFDIAG          (13)            ; RDR 13 read sequence
1158         ssm             0,0
1159         MFDIAG_1        (28)
1160         shrpd           ret0,%r0,%sar,%r1
1161         MTDIAG_1        (1)
1162         STDIAG          (13)
1163         ssm             0,0
1164         b,n         perf_rdr_shift_in_U_leave
1165 
1166         SFDIAG          (14)            ; RDR 14 read sequence
1167         ssm             0,0
1168         MFDIAG_1        (28)
1169         shrpd           ret0,%r0,%sar,%r1
1170         MTDIAG_1        (1)
1171         STDIAG          (14)
1172         ssm             0,0
1173         b,n         perf_rdr_shift_in_U_leave
1174 
1175         SFDIAG          (15)            ; RDR 15 read sequence
1176         ssm             0,0
1177         MFDIAG_1        (28)
1178         shrpd           ret0,%r0,%sar,%r1
1179         MTDIAG_1        (1)
1180         STDIAG          (15)
1181         ssm             0,0
1182         b,n         perf_rdr_shift_in_U_leave
1183 
1184         sync                            ; RDR 16 read sequence
1185         ssm             0,0
1186         SFDIAG          (16)
1187         ssm             0,0
1188         MFDIAG_1        (28)
1189         b,n         perf_rdr_shift_in_U_leave
1190         ssm             0,0
1191         nop
1192 
1193         SFDIAG          (17)            ; RDR 17 read sequence
1194         ssm             0,0
1195         MFDIAG_1        (28)
1196         shrpd           ret0,%r0,%sar,%r1
1197         MTDIAG_1        (1)
1198         STDIAG          (17)
1199         ssm             0,0
1200         b,n         perf_rdr_shift_in_U_leave
1201 
1202         SFDIAG          (18)            ; RDR 18 read sequence
1203         ssm             0,0
1204         MFDIAG_1        (28)
1205         shrpd           ret0,%r0,%sar,%r1
1206         MTDIAG_1        (1)
1207         STDIAG          (18)
1208         ssm             0,0
1209         b,n         perf_rdr_shift_in_U_leave
1210 
1211         b,n         perf_rdr_shift_in_U_leave
1212         nop
1213         nop
1214         nop
1215         nop
1216         nop
1217         nop
1218         nop
1219 
1220         sync                            ; RDR 20 read sequence
1221         ssm             0,0
1222         SFDIAG          (20)
1223         ssm             0,0
1224         MFDIAG_1        (28)
1225         b,n         perf_rdr_shift_in_U_leave
1226         ssm             0,0
1227         nop
1228 
1229         sync                            ; RDR 21 read sequence
1230         ssm             0,0
1231         SFDIAG          (21)
1232         ssm             0,0
1233         MFDIAG_1        (28)
1234         b,n         perf_rdr_shift_in_U_leave
1235         ssm             0,0
1236         nop
1237 
1238         sync                            ; RDR 22 read sequence
1239         ssm             0,0
1240         SFDIAG          (22)
1241         ssm             0,0
1242         MFDIAG_1        (28)
1243         b,n         perf_rdr_shift_in_U_leave
1244         ssm             0,0
1245         nop
1246 
1247         sync                            ; RDR 23 read sequence
1248         ssm             0,0
1249         SFDIAG          (23)
1250         ssm             0,0
1251         MFDIAG_1        (28)
1252         b,n         perf_rdr_shift_in_U_leave
1253         ssm             0,0
1254         nop
1255 
1256         sync                            ; RDR 24 read sequence
1257         ssm             0,0
1258         SFDIAG          (24)
1259         ssm             0,0
1260         MFDIAG_1        (28)
1261         b,n         perf_rdr_shift_in_U_leave
1262         ssm             0,0
1263         nop
1264 
1265         sync                            ; RDR 25 read sequence
1266         ssm             0,0
1267         SFDIAG          (25)
1268         ssm             0,0
1269         MFDIAG_1        (28)
1270         b,n         perf_rdr_shift_in_U_leave
1271         ssm             0,0
1272         nop
1273 
1274         SFDIAG          (26)            ; RDR 26 read sequence
1275         ssm             0,0
1276         MFDIAG_1        (28)
1277         shrpd           ret0,%r0,%sar,%r1
1278         MTDIAG_1        (1)
1279         STDIAG          (26)
1280         ssm             0,0
1281         b,n         perf_rdr_shift_in_U_leave
1282 
1283         SFDIAG          (27)            ; RDR 27 read sequence
1284         ssm             0,0
1285         MFDIAG_1        (28)
1286         shrpd           ret0,%r0,%sar,%r1
1287         MTDIAG_1        (1)
1288         STDIAG          (27)
1289         ssm             0,0
1290         b,n         perf_rdr_shift_in_U_leave
1291 
1292         sync                            ; RDR 28 read sequence
1293         ssm             0,0
1294         SFDIAG          (28)
1295         ssm             0,0
1296         MFDIAG_1        (28)
1297         b,n         perf_rdr_shift_in_U_leave
1298         ssm             0,0
1299         nop
1300 
1301         b,n         perf_rdr_shift_in_U_leave
1302         nop
1303         nop
1304         nop
1305         nop
1306         nop
1307         nop
1308         nop
1309 
1310         SFDIAG          (30)            ; RDR 30 read sequence
1311         ssm             0,0
1312         MFDIAG_1        (28)
1313         shrpd           ret0,%r0,%sar,%r1
1314         MTDIAG_1        (1)
1315         STDIAG          (30)
1316         ssm             0,0
1317         b,n         perf_rdr_shift_in_U_leave
1318 
1319         SFDIAG          (31)            ; RDR 31 read sequence
1320         ssm             0,0
1321         MFDIAG_1        (28)
1322         shrpd           ret0,%r0,%sar,%r1
1323         MTDIAG_1        (1)
1324         STDIAG          (31)
1325         ssm             0,0
1326         b,n         perf_rdr_shift_in_U_leave
1327         nop
1328 
1329 perf_rdr_shift_in_U_leave:
1330         bve                 (%r2)
1331         .exit
1332         MTDIAG_2        (24)                    ; restore DR2
1333         .procend
1334 ENDPROC(perf_rdr_shift_in_U)
1335 
1336 ;***********************************************************************
1337 ;*
1338 ;* Name: rdr_shift_out_U
1339 ;*
1340 ;* Description:
1341 ;*      This routine moves data to the RDR's.  The double-word that
1342 ;*      arg1 points to is loaded and moved into the staging register.
1343 ;*      Then the STDIAG instruction for the RDR # in arg0 is called
1344 ;*      to move the data to the RDR.
1345 ;*
1346 ;* Arguments:
1347 ;*      arg0 = rdr target
1348 ;*      arg1 = buffer pointer
1349 ;*
1350 ;* Returns:
1351 ;*      None
1352 ;*
1353 ;* Register usage:
1354 ;*      arg0 = rdr target
1355 ;*      arg1 = buffer pointer
1356 ;*      %r24 - DR2 | DR2_SLOW_RET
1357 ;*      %r23 - original DR2 value
1358 ;*
1359 ;***********************************************************************
1360 
1361 ENTRY(perf_rdr_shift_out_U)
1362         .proc
1363         .callinfo frame=0,NO_CALLS
1364         .entry
1365 
1366 ;
1367 ; NOTE: The PCX-U ERS states that DR2_SLOW_RET must be set before any
1368 ; shifting is done, from or to, the remote diagnose registers.
1369 ;
1370 
1371         depdi,z         1,DR2_SLOW_RET,1,%r24
1372         MFDIAG_2        (23)
1373         or              %r24,%r23,%r24
1374         MTDIAG_2        (24)            ; set DR2_SLOW_RET
1375 
1376         MTDIAG_1        (25)            ; data to the staging register
1377         shladd          arg0,2,%r0,%r1  ; %r1 = 4 * RDR number
1378         blr             %r1,%r0         ; branch to 8-instruction sequence
1379         nop
1380 
1381 ;
1382 ; 32-byte cachline aligned
1383 ;
1384 
1385         sync                            ; RDR 0 write sequence
1386         ssm             0,0
1387         STDIAG          (0)
1388         ssm             0,0
1389         b,n         perf_rdr_shift_out_U_leave
1390         nop
1391         ssm             0,0
1392         nop
1393 
1394         sync                            ; RDR 1 write sequence
1395         ssm             0,0
1396         STDIAG          (1)
1397         ssm             0,0
1398         b,n         perf_rdr_shift_out_U_leave
1399         nop
1400         ssm             0,0
1401         nop
1402 
1403         sync                            ; RDR 2 write sequence
1404         ssm             0,0
1405         STDIAG          (2)
1406         ssm             0,0
1407         b,n         perf_rdr_shift_out_U_leave
1408         nop
1409         ssm             0,0
1410         nop
1411 
1412         sync                            ; RDR 3 write sequence
1413         ssm             0,0
1414         STDIAG          (3)
1415         ssm             0,0
1416         b,n         perf_rdr_shift_out_U_leave
1417         nop
1418         ssm             0,0
1419         nop
1420 
1421         sync                            ; RDR 4 write sequence
1422         ssm             0,0
1423         STDIAG          (4)
1424         ssm             0,0
1425         b,n         perf_rdr_shift_out_U_leave
1426         nop
1427         ssm             0,0
1428         nop
1429 
1430         sync                            ; RDR 5 write sequence
1431         ssm             0,0
1432         STDIAG          (5)
1433         ssm             0,0
1434         b,n         perf_rdr_shift_out_U_leave
1435         nop
1436         ssm             0,0
1437         nop
1438 
1439         sync                            ; RDR 6 write sequence
1440         ssm             0,0
1441         STDIAG          (6)
1442         ssm             0,0
1443         b,n         perf_rdr_shift_out_U_leave
1444         nop
1445         ssm             0,0
1446         nop
1447 
1448         sync                            ; RDR 7 write sequence
1449         ssm             0,0
1450         STDIAG          (7)
1451         ssm             0,0
1452         b,n         perf_rdr_shift_out_U_leave
1453         nop
1454         ssm             0,0
1455         nop
1456 
1457         sync                            ; RDR 8 write sequence
1458         ssm             0,0
1459         STDIAG          (8)
1460         ssm             0,0
1461         b,n         perf_rdr_shift_out_U_leave
1462         nop
1463         ssm             0,0
1464         nop
1465 
1466         sync                            ; RDR 9 write sequence
1467         ssm             0,0
1468         STDIAG          (9)
1469         ssm             0,0
1470         b,n         perf_rdr_shift_out_U_leave
1471         nop
1472         ssm             0,0
1473         nop
1474 
1475         sync                            ; RDR 10 write sequence
1476         ssm             0,0
1477         STDIAG          (10)
1478         ssm             0,0
1479         b,n         perf_rdr_shift_out_U_leave
1480         nop
1481         ssm             0,0
1482         nop
1483 
1484         sync                            ; RDR 11 write sequence
1485         ssm             0,0
1486         STDIAG          (11)
1487         ssm             0,0
1488         b,n         perf_rdr_shift_out_U_leave
1489         nop
1490         ssm             0,0
1491         nop
1492 
1493         sync                            ; RDR 12 write sequence
1494         ssm             0,0
1495         STDIAG          (12)
1496         ssm             0,0
1497         b,n         perf_rdr_shift_out_U_leave
1498         nop
1499         ssm             0,0
1500         nop
1501 
1502         sync                            ; RDR 13 write sequence
1503         ssm             0,0
1504         STDIAG          (13)
1505         ssm             0,0
1506         b,n         perf_rdr_shift_out_U_leave
1507         nop
1508         ssm             0,0
1509         nop
1510 
1511         sync                            ; RDR 14 write sequence
1512         ssm             0,0
1513         STDIAG          (14)
1514         ssm             0,0
1515         b,n         perf_rdr_shift_out_U_leave
1516         nop
1517         ssm             0,0
1518         nop
1519 
1520         sync                            ; RDR 15 write sequence
1521         ssm             0,0
1522         STDIAG          (15)
1523         ssm             0,0
1524         b,n         perf_rdr_shift_out_U_leave
1525         nop
1526         ssm             0,0
1527         nop
1528 
1529         sync                            ; RDR 16 write sequence
1530         ssm             0,0
1531         STDIAG          (16)
1532         ssm             0,0
1533         b,n         perf_rdr_shift_out_U_leave
1534         nop
1535         ssm             0,0
1536         nop
1537 
1538         sync                            ; RDR 17 write sequence
1539         ssm             0,0
1540         STDIAG          (17)
1541         ssm             0,0
1542         b,n         perf_rdr_shift_out_U_leave
1543         nop
1544         ssm             0,0
1545         nop
1546 
1547         sync                            ; RDR 18 write sequence
1548         ssm             0,0
1549         STDIAG          (18)
1550         ssm             0,0
1551         b,n         perf_rdr_shift_out_U_leave
1552         nop
1553         ssm             0,0
1554         nop
1555 
1556         sync                            ; RDR 19 write sequence
1557         ssm             0,0
1558         STDIAG          (19)
1559         ssm             0,0
1560         b,n         perf_rdr_shift_out_U_leave
1561         nop
1562         ssm             0,0
1563         nop
1564 
1565         sync                            ; RDR 20 write sequence
1566         ssm             0,0
1567         STDIAG          (20)
1568         ssm             0,0
1569         b,n         perf_rdr_shift_out_U_leave
1570         nop
1571         ssm             0,0
1572         nop
1573 
1574         sync                            ; RDR 21 write sequence
1575         ssm             0,0
1576         STDIAG          (21)
1577         ssm             0,0
1578         b,n         perf_rdr_shift_out_U_leave
1579         nop
1580         ssm             0,0
1581         nop
1582 
1583         sync                            ; RDR 22 write sequence
1584         ssm             0,0
1585         STDIAG          (22)
1586         ssm             0,0
1587         b,n         perf_rdr_shift_out_U_leave
1588         nop
1589         ssm             0,0
1590         nop
1591 
1592         sync                            ; RDR 23 write sequence
1593         ssm             0,0
1594         STDIAG          (23)
1595         ssm             0,0
1596         b,n         perf_rdr_shift_out_U_leave
1597         nop
1598         ssm             0,0
1599         nop
1600 
1601         sync                            ; RDR 24 write sequence
1602         ssm             0,0
1603         STDIAG          (24)
1604         ssm             0,0
1605         b,n         perf_rdr_shift_out_U_leave
1606         nop
1607         ssm             0,0
1608         nop
1609 
1610         sync                            ; RDR 25 write sequence
1611         ssm             0,0
1612         STDIAG          (25)
1613         ssm             0,0
1614         b,n         perf_rdr_shift_out_U_leave
1615         nop
1616         ssm             0,0
1617         nop
1618 
1619         sync                            ; RDR 26 write sequence
1620         ssm             0,0
1621         STDIAG          (26)
1622         ssm             0,0
1623         b,n         perf_rdr_shift_out_U_leave
1624         nop
1625         ssm             0,0
1626         nop
1627 
1628         sync                            ; RDR 27 write sequence
1629         ssm             0,0
1630         STDIAG          (27)
1631         ssm             0,0
1632         b,n         perf_rdr_shift_out_U_leave
1633         nop
1634         ssm             0,0
1635         nop
1636 
1637         sync                            ; RDR 28 write sequence
1638         ssm             0,0
1639         STDIAG          (28)
1640         ssm             0,0
1641         b,n         perf_rdr_shift_out_U_leave
1642         nop
1643         ssm             0,0
1644         nop
1645 
1646         sync                            ; RDR 29 write sequence
1647         ssm             0,0
1648         STDIAG          (29)
1649         ssm             0,0
1650         b,n         perf_rdr_shift_out_U_leave
1651         nop
1652         ssm             0,0
1653         nop
1654 
1655         sync                            ; RDR 30 write sequence
1656         ssm             0,0
1657         STDIAG          (30)
1658         ssm             0,0
1659         b,n         perf_rdr_shift_out_U_leave
1660         nop
1661         ssm             0,0
1662         nop
1663 
1664         sync                            ; RDR 31 write sequence
1665         ssm             0,0
1666         STDIAG          (31)
1667         ssm             0,0
1668         b,n         perf_rdr_shift_out_U_leave
1669         nop
1670         ssm             0,0
1671         nop
1672 
1673 perf_rdr_shift_out_U_leave:
1674         bve             (%r2)
1675         .exit
1676         MTDIAG_2        (23)                    ; restore DR2
1677         .procend
1678 ENDPROC(perf_rdr_shift_out_U)
1679 

/* [<][>][^][v][top][bottom][index][help] */