• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; a7xx microcode
2; Version: 01730001
3
4[01730001]
5[#jumptbl]
6mov $01, 0x830	; CP_SQE_INSTR_BASE
7mov $02, 0x2
8cwrite $01, [$00 + @REG_READ_ADDR]
9cwrite $02, [$00 + @REG_READ_DWORDS]
10mov $01, $regdata
11mov $02, $regdata
12add $01, $01, 0x4
13addhi $02, $02, 0x0
14mov $03, 0x1
15cwrite $01, [$00 + @MEM_READ_ADDR]
16cwrite $02, [$00 + @MEM_READ_ADDR+0x1]
17cwrite $03, [$00 + @MEM_READ_DWORDS]
18rot $04, $memdata, 0x8
19ushr $04, $04, 0x6
20sub $04, $04, 0x4
21add $01, $01, $04
22addhi $02, $02, 0x0
23mov $rem, 0x80
24cwrite $01, [$00 + @MEM_READ_ADDR]
25cwrite $02, [$00 + @MEM_READ_ADDR+0x1]
26cwrite $02, [$00 + @LOAD_STORE_HI]
27cwrite $rem, [$00 + @MEM_READ_DWORDS]
28cwrite $00, [$00 + @PACKET_TABLE_WRITE_ADDR]
29(rep)cwrite $memdata, [$00 + @PACKET_TABLE_WRITE]
30add $01, $01, 0x200
31addhi $02, $02, 0x0
32cwrite $01, [$00 + @BV_INSTR_BASE]
33cwrite $02, [$00 + @BV_INSTR_BASE+0x1]
34cwrite $03, [$00 + @BV_CNTL]
35add $01, $01, 0x4
36addhi $02, $02, 0x0
37cwrite $01, [$00 + @MEM_READ_ADDR]
38cwrite $02, [$00 + @MEM_READ_ADDR+0x1]
39cwrite $03, [$00 + @MEM_READ_DWORDS]
40rot $04, $memdata, 0x8
41ushr $04, $04, 0x6
42sub $04, $04, 0x4
43add $01, $01, $04
44addhi $02, $02, 0x0
45add $01, $01, 0x200
46addhi $02, $02, 0x0
47cwrite $01, [$00 + @LPAC_INSTR_BASE]
48cwrite $02, [$00 + @LPAC_INSTR_BASE+0x1]
49cwrite $03, [$00 + @LPAC_CNTL]
50mov $02, 0x883	; CP_SCRATCH[0].REG
51mov $03, 0xbeef
52mov $04, 0xdead << 16
53or $03, $03, $04
54cwrite $02, [$00 + @REG_WRITE_ADDR]
55cwrite $03, [$00 + @REG_WRITE]
56waitin
57mov $01, $data
58
59CP_ME_INIT:
60mov $02, 0x2
61waitin
62mov $01, $data
63
64CP_MEM_WRITE:
65mov $addr, 0xa0 << 24	; |NRT_ADDR
66mov $02, 0x4
67(xmov1)add $data, $02, $data
68mov $addr, 0xa204 << 16	; |NRT_DATA
69(rep)(xmov3)mov $data, $data
70waitin
71mov $01, $data
72
73CP_SCRATCH_WRITE:
74mov $02, 0xff
75(rep)cwrite $data, [$02 + 0x1]!
76waitin
77mov $01, $data
78
79CP_SET_DRAW_STATE:
80(rep)(sds2)cwrite $data, [$00 + @DRAW_STATE_SET_HDR]
81waitin
82mov $01, $data
83
84CP_SET_BIN_DATA5:
85sread $02, [$00 + %SP]
86swrite $02, [$00 + %SP]
87mov $02, 0x7
88(rep)swrite $data, [$02 + 0x1]!
89waitin
90mov $01, $data
91
92CP_SET_SECURE_MODE:
93mov $02, $data
94setsecure $02, #l81
95
96fxn79:
97l79:
98jump #l79
99nop
100l81:
101waitin
102mov $01, $data
103
104fxn83:
105l83:
106cmp $04, $02, $03
107breq $04, b0, #l90
108brne $04, b1, #l88
109breq $04, b2, #l83
110sub $03, $03, $02
111l88:
112jump #l83
113sub $02, $02, $03
114l90:
115ret
116nop
117
118CP_REG_RMW:
119cwrite $data, [$00 + @REG_READ_ADDR]
120add $02, $regdata, 0x42
121addhi $03, $00, $regdata
122sub $02, $02, $regdata
123call #fxn83
124subhi $03, $03, $regdata
125and $02, $02, $regdata
126or $02, $02, 0x1
127xor $02, $02, 0x1
128not $02, $02
129shl $02, $02, $regdata
130ushr $02, $02, $regdata
131ishr $02, $02, $regdata
132rot $02, $02, $regdata
133min $02, $02, $regdata
134max $02, $02, $regdata
135mul8 $02, $02, $regdata
136bic $02, $02, $regdata
137msb $02, $02
138bfi $02, $03, b1, b2
139setbit $02, $02, b3
140clrbit $02, $02, b4
141setbit $02, $02, $03
142ubfx $03, $02, b5, b6
143mov $usraddr, $data
144mov $data, $02
145(peek)mov $00, $data
146waitin
147mov $01, $data
148
149CP_MEMCPY:
150mov $02, $data
151mov $03, $data
152mov $04, $data
153mov $05, $data
154mov $06, $data
155l126:
156breq $06, 0x0, #l132
157cwrite $03, [$00 + @LOAD_STORE_HI]
158load $07, [$02 + 0x4]!
159cwrite $05, [$00 + @LOAD_STORE_HI]
160jump #l126
161store $07, [$04 + 0x4]!
162l132:
163waitin
164mov $01, $data
165
166CP_MEM_TO_MEM:
167cwrite $data, [$00 + @MEM_READ_ADDR]
168cwrite $data, [$00 + @MEM_READ_ADDR+0x1]
169mov $02, $data
170cwrite $data, [$00 + @LOAD_STORE_HI]
171mov $rem, $data
172cwrite $rem, [$00 + @MEM_READ_DWORDS]
173(rep)store $memdata, [$02 + 0x4]!
174waitin
175mov $01, $data
176
177IN_PREEMPT:
178cread $02, [$00 + 0x101]
179brne $02, 0x1, #l152
180nop
181bl #fxn79
182nop
183nop
184nop
185waitin
186mov $01, $data
187l152:
188iret
189nop
190
191CP_BLIT:
192CP_BOOTSTRAP_UCODE:
193CP_BV_BR_COUNT_OPS:
194CP_CCHE_INVALIDATE:
195CP_COND_EXEC:
196CP_COND_REG_EXEC:
197CP_COND_WRITE5:
198CP_CONTEXT_REG_BUNCH:
199CP_CONTEXT_REG_BUNCH2:
200CP_CONTEXT_SWITCH_YIELD:
201CP_CONTEXT_UPDATE:
202CP_DRAW_AUTO:
203CP_DRAW_INDIRECT:
204CP_DRAW_INDIRECT_MULTI:
205CP_DRAW_INDX:
206CP_DRAW_INDX_INDIRECT:
207CP_DRAW_INDX_OFFSET:
208CP_DRAW_PRED_ENABLE_GLOBAL:
209CP_DRAW_PRED_ENABLE_LOCAL:
210CP_DRAW_PRED_SET:
211CP_END_BIN:
212CP_EVENT_WRITE7:
213CP_EVENT_WRITE_CFL:
214CP_EVENT_WRITE_SHD:
215CP_EVENT_WRITE_ZPD:
216CP_EXEC_CS:
217CP_EXEC_CS_INDIRECT:
218CP_FIXED_STRIDE_DRAW_TABLE:
219CP_GLOBAL_TIMESTAMP:
220CP_IM_LOAD:
221CP_IM_LOAD_IMMEDIATE:
222CP_INDIRECT_BUFFER:
223CP_INDIRECT_BUFFER_CHAIN:
224CP_INDIRECT_BUFFER_PFD:
225CP_INTERRUPT:
226CP_INVALIDATE_STATE:
227CP_LOAD_STATE6:
228CP_LOAD_STATE6_FRAG:
229CP_LOAD_STATE6_GEOM:
230CP_LOCAL_TIMESTAMP:
231CP_MEM_TO_REG:
232CP_MEM_TO_SCRATCH_MEM:
233CP_MEM_WRITE_CNTR:
234CP_MODIFY_TIMESTAMP:
235CP_NOP:
236CP_RECORD_PFP_TIMESTAMP:
237CP_REG_TEST:
238CP_REG_TO_MEM:
239CP_REG_TO_MEM_OFFSET_MEM:
240CP_REG_TO_MEM_OFFSET_REG:
241CP_REG_TO_SCRATCH:
242CP_REG_WR_NO_CTXT:
243CP_RESET_CONTEXT_STATE:
244CP_RESOURCE_LIST:
245CP_RUN_OPENCL:
246CP_SCRATCH_TO_REG:
247CP_SET_AMBLE:
248CP_SET_BIN_DATA5_OFFSET:
249CP_SET_DRAW_INIT_FLAGS:
250CP_SET_MARKER:
251CP_SET_MODE:
252CP_SET_PROTECTED_MODE:
253CP_SET_PSEUDO_REG:
254CP_SET_STATE:
255CP_SET_SUBDRAW_SIZE:
256CP_SET_UNK_BIN_DATA:
257CP_SET_VISIBILITY_OVERRIDE:
258CP_SKIP_IB2_ENABLE_GLOBAL:
259CP_SKIP_IB2_ENABLE_LOCAL:
260CP_SMMU_TABLE_UPDATE:
261CP_START_BIN:
262CP_TEST_TWO_MEMS:
263CP_THREAD_CONTROL:
264CP_WAIT_FOR_IDLE:
265CP_WAIT_FOR_ME:
266CP_WAIT_MEM_WRITES:
267CP_WAIT_REG_EQ:
268CP_WAIT_REG_MEM:
269CP_WAIT_TIMESTAMP:
270CP_WHERE_AM_I:
271IN_GMU_INTERRUPT:
272IN_IB_END:
273PKT4:
274UNKN0:
275UNKN1:
276UNKN103:
277UNKN104:
278UNKN105:
279UNKN106:
280UNKN108:
281UNKN109:
282UNKN110:
283UNKN112:
284UNKN118:
285UNKN119:
286UNKN12:
287UNKN121:
288UNKN122:
289UNKN123:
290UNKN124:
291UNKN125:
292UNKN126:
293UNKN13:
294UNKN14:
295UNKN2:
296UNKN3:
297UNKN30:
298UNKN32:
299UNKN48:
300UNKN5:
301UNKN6:
302UNKN7:
303UNKN8:
304UNKN84:
305UNKN9:
306UNKN90:
307UNKN96:
308UNKN97:
309waitin
310mov $01, $data
311nop
312nop
313nop
314nop
315.align 32
316jumptbl:
317.jumptbl
318
319.section BV
320;
321; BV microcode:
322;
323[01000001]
324[#jumptbl]
325cread $01, [$00 + @BV_INSTR_BASE]
326cread $02, [$00 + @BV_INSTR_BASE+0x1]
327add $01, $01, 0x4
328addhi $02, $02, 0x0
329mov $03, 0x1
330cwrite $01, [$00 + @MEM_READ_ADDR]
331cwrite $02, [$00 + @MEM_READ_ADDR+0x1]
332cwrite $03, [$00 + @MEM_READ_DWORDS]
333rot $04, $memdata, 0x8
334ushr $04, $04, 0x6
335sub $04, $04, 0x4
336add $01, $01, $04
337addhi $02, $02, 0x0
338mov $rem, 0x80
339cwrite $01, [$00 + @MEM_READ_ADDR]
340cwrite $02, [$00 + @MEM_READ_ADDR+0x1]
341cwrite $02, [$00 + @LOAD_STORE_HI]
342cwrite $rem, [$00 + @MEM_READ_DWORDS]
343cwrite $00, [$00 + @PACKET_TABLE_WRITE_ADDR]
344(rep)cwrite $memdata, [$00 + @PACKET_TABLE_WRITE]
345add $01, $01, 0x200
346addhi $02, $02, 0x0
347cwrite $01, [$00 + @LPAC_INSTR_BASE]
348cwrite $02, [$00 + @LPAC_INSTR_BASE+0x1]
349waitin
350mov $01, $data
351
352CP_BLIT:
353CP_BOOTSTRAP_UCODE:
354CP_BV_BR_COUNT_OPS:
355CP_CCHE_INVALIDATE:
356CP_COND_EXEC:
357CP_COND_REG_EXEC:
358CP_COND_WRITE5:
359CP_CONTEXT_REG_BUNCH:
360CP_CONTEXT_REG_BUNCH2:
361CP_CONTEXT_SWITCH_YIELD:
362CP_CONTEXT_UPDATE:
363CP_DRAW_AUTO:
364CP_DRAW_INDIRECT:
365CP_DRAW_INDIRECT_MULTI:
366CP_DRAW_INDX:
367CP_DRAW_INDX_INDIRECT:
368CP_DRAW_INDX_OFFSET:
369CP_DRAW_PRED_ENABLE_GLOBAL:
370CP_DRAW_PRED_ENABLE_LOCAL:
371CP_DRAW_PRED_SET:
372CP_END_BIN:
373CP_EVENT_WRITE7:
374CP_EVENT_WRITE_CFL:
375CP_EVENT_WRITE_SHD:
376CP_EVENT_WRITE_ZPD:
377CP_EXEC_CS:
378CP_EXEC_CS_INDIRECT:
379CP_FIXED_STRIDE_DRAW_TABLE:
380CP_GLOBAL_TIMESTAMP:
381CP_IM_LOAD:
382CP_IM_LOAD_IMMEDIATE:
383CP_INDIRECT_BUFFER:
384CP_INDIRECT_BUFFER_CHAIN:
385CP_INDIRECT_BUFFER_PFD:
386CP_INTERRUPT:
387CP_INVALIDATE_STATE:
388CP_LOAD_STATE6:
389CP_LOAD_STATE6_FRAG:
390CP_LOAD_STATE6_GEOM:
391CP_LOCAL_TIMESTAMP:
392CP_MEMCPY:
393CP_MEM_TO_MEM:
394CP_MEM_TO_REG:
395CP_MEM_TO_SCRATCH_MEM:
396CP_MEM_WRITE:
397CP_MEM_WRITE_CNTR:
398CP_ME_INIT:
399CP_MODIFY_TIMESTAMP:
400CP_NOP:
401CP_RECORD_PFP_TIMESTAMP:
402CP_REG_RMW:
403CP_REG_TEST:
404CP_REG_TO_MEM:
405CP_REG_TO_MEM_OFFSET_MEM:
406CP_REG_TO_MEM_OFFSET_REG:
407CP_REG_TO_SCRATCH:
408CP_REG_WR_NO_CTXT:
409CP_RESET_CONTEXT_STATE:
410CP_RESOURCE_LIST:
411CP_RUN_OPENCL:
412CP_SCRATCH_TO_REG:
413CP_SCRATCH_WRITE:
414CP_SET_AMBLE:
415CP_SET_BIN_DATA5:
416CP_SET_BIN_DATA5_OFFSET:
417CP_SET_DRAW_INIT_FLAGS:
418CP_SET_DRAW_STATE:
419CP_SET_MARKER:
420CP_SET_MODE:
421CP_SET_PROTECTED_MODE:
422CP_SET_PSEUDO_REG:
423CP_SET_SECURE_MODE:
424CP_SET_STATE:
425CP_SET_SUBDRAW_SIZE:
426CP_SET_UNK_BIN_DATA:
427CP_SET_VISIBILITY_OVERRIDE:
428CP_SKIP_IB2_ENABLE_GLOBAL:
429CP_SKIP_IB2_ENABLE_LOCAL:
430CP_SMMU_TABLE_UPDATE:
431CP_START_BIN:
432CP_TEST_TWO_MEMS:
433CP_THREAD_CONTROL:
434CP_WAIT_FOR_IDLE:
435CP_WAIT_FOR_ME:
436CP_WAIT_MEM_WRITES:
437CP_WAIT_REG_EQ:
438CP_WAIT_REG_MEM:
439CP_WAIT_TIMESTAMP:
440CP_WHERE_AM_I:
441IN_GMU_INTERRUPT:
442IN_IB_END:
443IN_PREEMPT:
444PKT4:
445UNKN0:
446UNKN1:
447UNKN103:
448UNKN104:
449UNKN105:
450UNKN106:
451UNKN108:
452UNKN109:
453UNKN110:
454UNKN112:
455UNKN118:
456UNKN119:
457UNKN12:
458UNKN121:
459UNKN122:
460UNKN123:
461UNKN124:
462UNKN125:
463UNKN126:
464UNKN13:
465UNKN14:
466UNKN2:
467UNKN3:
468UNKN30:
469UNKN32:
470UNKN48:
471UNKN5:
472UNKN6:
473UNKN7:
474UNKN8:
475UNKN84:
476UNKN9:
477UNKN90:
478UNKN96:
479UNKN97:
480waitin
481mov $01, $data
482nop
483nop
484.align 32
485jumptbl:
486.jumptbl
487
488.section LPAC
489;
490; LPAC microcode:
491;
492[01000001]
493[#jumptbl]
494cread $01, [$00 + @LPAC_INSTR_BASE]
495cread $02, [$00 + @LPAC_INSTR_BASE+0x1]
496add $01, $01, 0x4
497addhi $02, $02, 0x0
498mov $03, 0x1
499cwrite $01, [$00 + @MEM_READ_ADDR]
500cwrite $02, [$00 + @MEM_READ_ADDR+0x1]
501cwrite $03, [$00 + @MEM_READ_DWORDS]
502rot $04, $memdata, 0x8
503ushr $04, $04, 0x6
504sub $04, $04, 0x4
505add $01, $01, $04
506addhi $02, $02, 0x0
507mov $rem, 0x80
508cwrite $01, [$00 + @MEM_READ_ADDR]
509cwrite $02, [$00 + @MEM_READ_ADDR+0x1]
510cwrite $02, [$00 + @LOAD_STORE_HI]
511cwrite $rem, [$00 + @MEM_READ_DWORDS]
512cwrite $00, [$00 + @PACKET_TABLE_WRITE_ADDR]
513(rep)cwrite $memdata, [$00 + @PACKET_TABLE_WRITE]
514
515CP_BLIT:
516CP_BOOTSTRAP_UCODE:
517CP_BV_BR_COUNT_OPS:
518CP_CCHE_INVALIDATE:
519CP_COND_EXEC:
520CP_COND_REG_EXEC:
521CP_COND_WRITE5:
522CP_CONTEXT_REG_BUNCH:
523CP_CONTEXT_REG_BUNCH2:
524CP_CONTEXT_SWITCH_YIELD:
525CP_CONTEXT_UPDATE:
526CP_DRAW_AUTO:
527CP_DRAW_INDIRECT:
528CP_DRAW_INDIRECT_MULTI:
529CP_DRAW_INDX:
530CP_DRAW_INDX_INDIRECT:
531CP_DRAW_INDX_OFFSET:
532CP_DRAW_PRED_ENABLE_GLOBAL:
533CP_DRAW_PRED_ENABLE_LOCAL:
534CP_DRAW_PRED_SET:
535CP_END_BIN:
536CP_EVENT_WRITE7:
537CP_EVENT_WRITE_CFL:
538CP_EVENT_WRITE_SHD:
539CP_EVENT_WRITE_ZPD:
540CP_EXEC_CS:
541CP_EXEC_CS_INDIRECT:
542CP_FIXED_STRIDE_DRAW_TABLE:
543CP_GLOBAL_TIMESTAMP:
544CP_IM_LOAD:
545CP_IM_LOAD_IMMEDIATE:
546CP_INDIRECT_BUFFER:
547CP_INDIRECT_BUFFER_CHAIN:
548CP_INDIRECT_BUFFER_PFD:
549CP_INTERRUPT:
550CP_INVALIDATE_STATE:
551CP_LOAD_STATE6:
552CP_LOAD_STATE6_FRAG:
553CP_LOAD_STATE6_GEOM:
554CP_LOCAL_TIMESTAMP:
555CP_MEMCPY:
556CP_MEM_TO_MEM:
557CP_MEM_TO_REG:
558CP_MEM_TO_SCRATCH_MEM:
559CP_MEM_WRITE:
560CP_MEM_WRITE_CNTR:
561CP_ME_INIT:
562CP_MODIFY_TIMESTAMP:
563CP_NOP:
564CP_RECORD_PFP_TIMESTAMP:
565CP_REG_RMW:
566CP_REG_TEST:
567CP_REG_TO_MEM:
568CP_REG_TO_MEM_OFFSET_MEM:
569CP_REG_TO_MEM_OFFSET_REG:
570CP_REG_TO_SCRATCH:
571CP_REG_WR_NO_CTXT:
572CP_RESET_CONTEXT_STATE:
573CP_RESOURCE_LIST:
574CP_RUN_OPENCL:
575CP_SCRATCH_TO_REG:
576CP_SCRATCH_WRITE:
577CP_SET_AMBLE:
578CP_SET_BIN_DATA5:
579CP_SET_BIN_DATA5_OFFSET:
580CP_SET_DRAW_INIT_FLAGS:
581CP_SET_DRAW_STATE:
582CP_SET_MARKER:
583CP_SET_MODE:
584CP_SET_PROTECTED_MODE:
585CP_SET_PSEUDO_REG:
586CP_SET_SECURE_MODE:
587CP_SET_STATE:
588CP_SET_SUBDRAW_SIZE:
589CP_SET_UNK_BIN_DATA:
590CP_SET_VISIBILITY_OVERRIDE:
591CP_SKIP_IB2_ENABLE_GLOBAL:
592CP_SKIP_IB2_ENABLE_LOCAL:
593CP_SMMU_TABLE_UPDATE:
594CP_START_BIN:
595CP_TEST_TWO_MEMS:
596CP_THREAD_CONTROL:
597CP_WAIT_FOR_IDLE:
598CP_WAIT_FOR_ME:
599CP_WAIT_MEM_WRITES:
600CP_WAIT_REG_EQ:
601CP_WAIT_REG_MEM:
602CP_WAIT_TIMESTAMP:
603CP_WHERE_AM_I:
604IN_GMU_INTERRUPT:
605IN_IB_END:
606IN_PREEMPT:
607PKT4:
608UNKN0:
609UNKN1:
610UNKN103:
611UNKN104:
612UNKN105:
613UNKN106:
614UNKN108:
615UNKN109:
616UNKN110:
617UNKN112:
618UNKN118:
619UNKN119:
620UNKN12:
621UNKN121:
622UNKN122:
623UNKN123:
624UNKN124:
625UNKN125:
626UNKN126:
627UNKN13:
628UNKN14:
629UNKN2:
630UNKN3:
631UNKN30:
632UNKN32:
633UNKN48:
634UNKN5:
635UNKN6:
636UNKN7:
637UNKN8:
638UNKN84:
639UNKN9:
640UNKN90:
641UNKN96:
642UNKN97:
643waitin
644mov $01, $data
645jumptbl:
646.jumptbl
647[0100beef]
648