perf_asm.S 26 KB

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