17ec681f3Smrg; a6xx microcode 27ec681f3Smrg; Version: 01000001 37ec681f3Smrg 47ec681f3Smrg [01000001] ; nop 57ec681f3Smrg [01000078] ; nop 67ec681f3Smrg mov $01, 0x0830 ; CP_SQE_INSTR_BASE 77ec681f3Smrg mov $02, 0x0002 87ec681f3Smrg cwrite $01, [$00 + @REG_READ_ADDR], 0x0 97ec681f3Smrg cwrite $02, [$00 + @REG_READ_DWORDS], 0x0 107ec681f3Smrg mov $01, $regdata 117ec681f3Smrg mov $02, $regdata 127ec681f3Smrg add $01, $01, 0x0004 137ec681f3Smrg addhi $02, $02, 0x0000 147ec681f3Smrg mov $03, 0x0001 157ec681f3Smrg cwrite $01, [$00 + @MEM_READ_ADDR], 0x0 167ec681f3Smrg cwrite $02, [$00 + @MEM_READ_ADDR+0x1], 0x0 177ec681f3Smrg cwrite $03, [$00 + @MEM_READ_DWORDS], 0x0 187ec681f3Smrg rot $04, $memdata, 0x0008 197ec681f3Smrg ushr $04, $04, 0x0006 207ec681f3Smrg sub $04, $04, 0x0004 217ec681f3Smrg add $01, $01, $04 227ec681f3Smrg addhi $02, $02, 0x0000 237ec681f3Smrg mov $rem, 0x0080 247ec681f3Smrg cwrite $01, [$00 + @MEM_READ_ADDR], 0x0 257ec681f3Smrg cwrite $02, [$00 + @MEM_READ_ADDR+0x1], 0x0 267ec681f3Smrg cwrite $02, [$00 + @LOAD_STORE_HI], 0x0 277ec681f3Smrg cwrite $rem, [$00 + @MEM_READ_DWORDS], 0x0 287ec681f3Smrg cwrite $00, [$00 + @PACKET_TABLE_WRITE_ADDR], 0x0 297ec681f3Smrg (rep)cwrite $memdata, [$00 + @PACKET_TABLE_WRITE], 0x0 307ec681f3Smrg mov $02, 0x0883 ; CP_SCRATCH[0].REG 317ec681f3Smrg mov $03, 0xbeef 327ec681f3Smrg mov $04, 0xdead << 16 337ec681f3Smrg or $03, $03, $04 347ec681f3Smrg cwrite $02, [$00 + @REG_WRITE_ADDR], 0x0 357ec681f3Smrg cwrite $03, [$00 + @REG_WRITE], 0x0 367ec681f3Smrg waitin 377ec681f3Smrg mov $01, $data 387ec681f3Smrg 397ec681f3SmrgCP_ME_INIT: 407ec681f3Smrg mov $02, 0x0002 417ec681f3Smrg waitin 427ec681f3Smrg mov $01, $data 437ec681f3Smrg 447ec681f3SmrgCP_MEM_WRITE: 457ec681f3Smrg mov $addr, 0x00a0 << 24 ; |NRT_ADDR 467ec681f3Smrg mov $02, 0x0004 477ec681f3Smrg (xmov1)add $data, $02, $data 487ec681f3Smrg mov $addr, 0xa204 << 16 ; |NRT_DATA 497ec681f3Smrg (rep)(xmov3)mov $data, $data 507ec681f3Smrg waitin 517ec681f3Smrg mov $01, $data 527ec681f3Smrg 537ec681f3SmrgCP_SCRATCH_WRITE: 547ec681f3Smrg mov $02, 0x00ff 557ec681f3Smrg (rep)cwrite $data, [$02 + 0x001], 0x4 567ec681f3Smrg waitin 577ec681f3Smrg mov $01, $data 587ec681f3Smrg 597ec681f3SmrgCP_SET_SECURE_MODE: 607ec681f3Smrg mov $02, $data 617ec681f3Smrg setsecure $02, #l000 627ec681f3Smrg l001: jump #l001 637ec681f3Smrg nop 647ec681f3Smrg l000: waitin 657ec681f3Smrg mov $01, $data 667ec681f3Smrgfxn00: 677ec681f3Smrg l004: cmp $04, $02, $03 687ec681f3Smrg breq $04, b0, #l002 697ec681f3Smrg brne $04, b1, #l003 707ec681f3Smrg breq $04, b2, #l004 717ec681f3Smrg sub $03, $03, $02 727ec681f3Smrg l003: jump #l004 737ec681f3Smrg sub $02, $02, $03 747ec681f3Smrg l002: ret 757ec681f3Smrg nop 767ec681f3Smrg 777ec681f3SmrgCP_REG_RMW: 787ec681f3Smrg cwrite $data, [$00 + @REG_READ_ADDR], 0x0 797ec681f3Smrg add $02, $regdata, 0x0042 807ec681f3Smrg addhi $03, $00, $regdata 817ec681f3Smrg sub $02, $02, $regdata 827ec681f3Smrg call #fxn00 837ec681f3Smrg subhi $03, $03, $regdata 847ec681f3Smrg and $02, $02, $regdata 857ec681f3Smrg or $02, $02, 0x0001 867ec681f3Smrg xor $02, $02, 0x0001 877ec681f3Smrg not $02, $02 887ec681f3Smrg shl $02, $02, $regdata 897ec681f3Smrg ushr $02, $02, $regdata 907ec681f3Smrg ishr $02, $02, $regdata 917ec681f3Smrg rot $02, $02, $regdata 927ec681f3Smrg min $02, $02, $regdata 937ec681f3Smrg max $02, $02, $regdata 947ec681f3Smrg mul8 $02, $02, $regdata 957ec681f3Smrg msb $02, $02 967ec681f3Smrg mov $usraddr, $data 977ec681f3Smrg mov $data, $02 987ec681f3Smrg waitin 997ec681f3Smrg mov $01, $data 1007ec681f3Smrg 1017ec681f3SmrgCP_MEMCPY: 1027ec681f3Smrg mov $02, $data 1037ec681f3Smrg mov $03, $data 1047ec681f3Smrg mov $04, $data 1057ec681f3Smrg mov $05, $data 1067ec681f3Smrg mov $06, $data 1077ec681f3Smrg l006: breq $06, 0x0, #l005 1087ec681f3Smrg cwrite $03, [$00 + @LOAD_STORE_HI], 0x0 1097ec681f3Smrg load $07, [$02 + 0x004], 0x4 1107ec681f3Smrg cwrite $05, [$00 + @LOAD_STORE_HI], 0x0 1117ec681f3Smrg jump #l006 1127ec681f3Smrg store $07, [$04 + 0x004], 0x4 1137ec681f3Smrg l005: waitin 1147ec681f3Smrg mov $01, $data 1157ec681f3Smrg 1167ec681f3SmrgCP_MEM_TO_MEM: 1177ec681f3Smrg cwrite $data, [$00 + @MEM_READ_ADDR], 0x0 1187ec681f3Smrg cwrite $data, [$00 + @MEM_READ_ADDR+0x1], 0x0 1197ec681f3Smrg mov $02, $data 1207ec681f3Smrg cwrite $data, [$00 + @LOAD_STORE_HI], 0x0 1217ec681f3Smrg mov $rem, $data 1227ec681f3Smrg cwrite $rem, [$00 + @MEM_READ_DWORDS], 0x0 1237ec681f3Smrg (rep)store $memdata, [$02 + 0x004], 0x4 1247ec681f3Smrg waitin 1257ec681f3Smrg mov $01, $data 1267ec681f3Smrg 1277ec681f3SmrgUNKN15: 1287ec681f3Smrg cread $02, [$00 + 0x101], 0x0 1297ec681f3Smrg brne $02, 0x1, #l007 1307ec681f3Smrg nop 1317ec681f3Smrg preemptleave #l001 1327ec681f3Smrg nop 1337ec681f3Smrg nop 1347ec681f3Smrg nop 1357ec681f3Smrg waitin 1367ec681f3Smrg mov $01, $data 1377ec681f3Smrg l007: iret 1387ec681f3Smrg nop 1397ec681f3Smrg 1407ec681f3SmrgUNKN0: 1417ec681f3SmrgUNKN1: 1427ec681f3SmrgUNKN2: 1437ec681f3SmrgUNKN3: 1447ec681f3SmrgPKT4: 1457ec681f3SmrgUNKN5: 1467ec681f3SmrgUNKN6: 1477ec681f3SmrgUNKN7: 1487ec681f3SmrgUNKN8: 1497ec681f3SmrgUNKN9: 1507ec681f3SmrgUNKN10: 1517ec681f3SmrgUNKN11: 1527ec681f3SmrgUNKN12: 1537ec681f3SmrgUNKN13: 1547ec681f3SmrgUNKN14: 1557ec681f3SmrgCP_NOP: 1567ec681f3SmrgCP_RECORD_PFP_TIMESTAMP: 1577ec681f3SmrgCP_WAIT_MEM_WRITES: 1587ec681f3SmrgCP_WAIT_FOR_ME: 1597ec681f3SmrgCP_WAIT_MEM_GTE: 1607ec681f3SmrgUNKN21: 1617ec681f3SmrgUNKN22: 1627ec681f3SmrgUNKN23: 1637ec681f3SmrgUNKN24: 1647ec681f3SmrgCP_DRAW_PRED_ENABLE_GLOBAL: 1657ec681f3SmrgCP_DRAW_PRED_ENABLE_LOCAL: 1667ec681f3SmrgUNKN27: 1677ec681f3SmrgCP_PREEMPT_ENABLE: 1687ec681f3SmrgCP_SKIP_IB2_ENABLE_GLOBAL: 1697ec681f3SmrgCP_PREEMPT_TOKEN: 1707ec681f3SmrgUNKN31: 1717ec681f3SmrgUNKN32: 1727ec681f3SmrgCP_DRAW_INDX: 1737ec681f3SmrgCP_SKIP_IB2_ENABLE_LOCAL: 1747ec681f3SmrgCP_DRAW_AUTO: 1757ec681f3SmrgCP_SET_STATE: 1767ec681f3SmrgCP_WAIT_FOR_IDLE: 1777ec681f3SmrgCP_IM_LOAD: 1787ec681f3SmrgCP_DRAW_INDIRECT: 1797ec681f3SmrgCP_DRAW_INDX_INDIRECT: 1807ec681f3SmrgCP_DRAW_INDIRECT_MULTI: 1817ec681f3SmrgCP_IM_LOAD_IMMEDIATE: 1827ec681f3SmrgCP_BLIT: 1837ec681f3SmrgCP_SET_CONSTANT: 1847ec681f3SmrgCP_SET_BIN_DATA5_OFFSET: 1857ec681f3SmrgCP_SET_BIN_DATA5: 1867ec681f3SmrgUNKN48: 1877ec681f3SmrgCP_RUN_OPENCL: 1887ec681f3SmrgCP_LOAD_STATE6_GEOM: 1897ec681f3SmrgCP_EXEC_CS: 1907ec681f3SmrgCP_LOAD_STATE6_FRAG: 1917ec681f3SmrgCP_SET_SUBDRAW_SIZE: 1927ec681f3SmrgCP_LOAD_STATE6: 1937ec681f3SmrgCP_INDIRECT_BUFFER_PFD: 1947ec681f3SmrgCP_DRAW_INDX_OFFSET: 1957ec681f3SmrgCP_REG_TEST: 1967ec681f3SmrgCP_COND_INDIRECT_BUFFER_PFE: 1977ec681f3SmrgCP_INVALIDATE_STATE: 1987ec681f3SmrgCP_WAIT_REG_MEM: 1997ec681f3SmrgCP_REG_TO_MEM: 2007ec681f3SmrgCP_INDIRECT_BUFFER: 2017ec681f3SmrgCP_INTERRUPT: 2027ec681f3SmrgCP_EXEC_CS_INDIRECT: 2037ec681f3SmrgCP_MEM_TO_REG: 2047ec681f3SmrgCP_SET_DRAW_STATE: 2057ec681f3SmrgCP_COND_EXEC: 2067ec681f3SmrgCP_COND_WRITE5: 2077ec681f3SmrgCP_EVENT_WRITE: 2087ec681f3SmrgCP_COND_REG_EXEC: 2097ec681f3SmrgUNKN73: 2107ec681f3SmrgCP_REG_TO_SCRATCH: 2117ec681f3SmrgCP_SET_DRAW_INIT_FLAGS: 2127ec681f3SmrgCP_SCRATCH_TO_REG: 2137ec681f3SmrgCP_DRAW_PRED_SET: 2147ec681f3SmrgCP_MEM_WRITE_CNTR: 2157ec681f3SmrgCP_START_BIN: 2167ec681f3SmrgCP_END_BIN: 2177ec681f3SmrgCP_WAIT_REG_EQ: 2187ec681f3SmrgCP_SMMU_TABLE_UPDATE: 2197ec681f3SmrgUNKN84: 2207ec681f3SmrgCP_SET_CTXSWITCH_IB: 2217ec681f3SmrgCP_SET_PSEUDO_REG: 2227ec681f3SmrgCP_INDIRECT_BUFFER_CHAIN: 2237ec681f3SmrgCP_EVENT_WRITE_SHD: 2247ec681f3SmrgCP_EVENT_WRITE_CFL: 2257ec681f3SmrgUNKN90: 2267ec681f3SmrgCP_EVENT_WRITE_ZPD: 2277ec681f3SmrgCP_CONTEXT_REG_BUNCH: 2287ec681f3SmrgCP_WAIT_IB_PFD_COMPLETE: 2297ec681f3SmrgCP_CONTEXT_UPDATE: 2307ec681f3SmrgCP_SET_PROTECTED_MODE: 2317ec681f3SmrgUNKN96: 2327ec681f3SmrgUNKN97: 2337ec681f3SmrgCP_WHERE_AM_I: 2347ec681f3SmrgCP_SET_MODE: 2357ec681f3SmrgCP_SET_VISIBILITY_OVERRIDE: 2367ec681f3SmrgCP_SET_MARKER: 2377ec681f3SmrgUNKN103: 2387ec681f3SmrgUNKN104: 2397ec681f3SmrgUNKN105: 2407ec681f3SmrgUNKN106: 2417ec681f3SmrgUNKN107: 2427ec681f3SmrgUNKN108: 2437ec681f3SmrgCP_REG_WRITE: 2447ec681f3SmrgUNKN110: 2457ec681f3SmrgCP_BOOTSTRAP_UCODE: 2467ec681f3SmrgCP_WAIT_TWO_REGS: 2477ec681f3SmrgCP_TEST_TWO_MEMS: 2487ec681f3SmrgCP_REG_TO_MEM_OFFSET_REG: 2497ec681f3SmrgCP_REG_TO_MEM_OFFSET_MEM: 2507ec681f3SmrgUNKN118: 2517ec681f3SmrgUNKN119: 2527ec681f3SmrgCP_REG_WR_NO_CTXT: 2537ec681f3SmrgUNKN121: 2547ec681f3SmrgUNKN122: 2557ec681f3SmrgUNKN123: 2567ec681f3SmrgUNKN124: 2577ec681f3SmrgUNKN125: 2587ec681f3SmrgUNKN126: 2597ec681f3SmrgUNKN127: 2607ec681f3Smrg waitin 2617ec681f3Smrg mov $01, $data 2627ec681f3Smrg [00000076] ; nop 2637ec681f3Smrg [00000076] ; nop 2647ec681f3Smrg [00000076] ; nop 2657ec681f3Smrg [00000076] ; nop 2667ec681f3Smrg [00000076] ; nop 2677ec681f3Smrg [00000076] ; nop 2687ec681f3Smrg [00000076] ; nop 2697ec681f3Smrg [00000076] ; nop 2707ec681f3Smrg [00000076] ; nop 2717ec681f3Smrg [00000076] ; nop 2727ec681f3Smrg [00000076] ; nop 2737ec681f3Smrg [00000076] ; nop 2747ec681f3Smrg [00000076] ; nop 2757ec681f3Smrg [00000076] ; nop 2767ec681f3Smrg [00000076] ; nop 2777ec681f3Smrg [0000006b] ; nop 2787ec681f3Smrg [00000076] ; nop 2797ec681f3Smrg [00000076] ; nop 2807ec681f3Smrg [00000076] ; nop 2817ec681f3Smrg [00000076] ; nop 2827ec681f3Smrg [00000076] ; nop 2837ec681f3Smrg [00000076] ; nop 2847ec681f3Smrg [00000076] ; nop 2857ec681f3Smrg [00000076] ; nop 2867ec681f3Smrg [00000076] ; nop 2877ec681f3Smrg [00000076] ; nop 2887ec681f3Smrg [00000076] ; nop 2897ec681f3Smrg [00000076] ; nop 2907ec681f3Smrg [00000076] ; nop 2917ec681f3Smrg [00000076] ; nop 2927ec681f3Smrg [00000076] ; nop 2937ec681f3Smrg [00000076] ; nop 2947ec681f3Smrg [00000076] ; nop 2957ec681f3Smrg [0000003f] ; nop 2967ec681f3Smrg [00000076] ; nop 2977ec681f3Smrg [00000076] ; nop 2987ec681f3Smrg [00000076] ; nop 2997ec681f3Smrg [00000076] ; nop 3007ec681f3Smrg [00000076] ; nop 3017ec681f3Smrg [00000076] ; nop 3027ec681f3Smrg [00000076] ; nop 3037ec681f3Smrg [00000076] ; nop 3047ec681f3Smrg [00000076] ; nop 3057ec681f3Smrg [00000076] ; nop 3067ec681f3Smrg [00000076] ; nop 3077ec681f3Smrg [00000076] ; nop 3087ec681f3Smrg [00000076] ; nop 3097ec681f3Smrg [00000076] ; nop 3107ec681f3Smrg [00000076] ; nop 3117ec681f3Smrg [00000076] ; nop 3127ec681f3Smrg [00000076] ; nop 3137ec681f3Smrg [00000076] ; nop 3147ec681f3Smrg [00000076] ; nop 3157ec681f3Smrg [00000076] ; nop 3167ec681f3Smrg [00000076] ; nop 3177ec681f3Smrg [00000076] ; nop 3187ec681f3Smrg [00000076] ; nop 3197ec681f3Smrg [00000076] ; nop 3207ec681f3Smrg [00000076] ; nop 3217ec681f3Smrg [00000076] ; nop 3227ec681f3Smrg [00000076] ; nop 3237ec681f3Smrg [00000025] ; nop 3247ec681f3Smrg [00000076] ; nop 3257ec681f3Smrg [00000076] ; nop 3267ec681f3Smrg [00000076] ; nop 3277ec681f3Smrg [00000076] ; nop 3287ec681f3Smrg [00000076] ; nop 3297ec681f3Smrg [00000076] ; nop 3307ec681f3Smrg [00000076] ; nop 3317ec681f3Smrg [00000076] ; nop 3327ec681f3Smrg [00000076] ; nop 3337ec681f3Smrg [00000076] ; nop 3347ec681f3Smrg [00000022] ; nop 3357ec681f3Smrg [00000076] ; nop 3367ec681f3Smrg [00000076] ; nop 3377ec681f3Smrg [00000076] ; nop 3387ec681f3Smrg [0000002c] ; nop 3397ec681f3Smrg [00000076] ; nop 3407ec681f3Smrg [00000076] ; nop 3417ec681f3Smrg [00000076] ; nop 3427ec681f3Smrg [00000076] ; nop 3437ec681f3Smrg [00000076] ; nop 3447ec681f3Smrg [00000076] ; nop 3457ec681f3Smrg [00000076] ; nop 3467ec681f3Smrg [00000076] ; nop 3477ec681f3Smrg [00000076] ; nop 3487ec681f3Smrg [00000076] ; nop 3497ec681f3Smrg [00000076] ; nop 3507ec681f3Smrg [00000076] ; nop 3517ec681f3Smrg [00000076] ; nop 3527ec681f3Smrg [00000076] ; nop 3537ec681f3Smrg [00000076] ; nop 3547ec681f3Smrg [00000076] ; nop 3557ec681f3Smrg [00000076] ; nop 3567ec681f3Smrg [00000076] ; nop 3577ec681f3Smrg [00000076] ; nop 3587ec681f3Smrg [00000076] ; nop 3597ec681f3Smrg [00000076] ; nop 3607ec681f3Smrg [00000076] ; nop 3617ec681f3Smrg [00000076] ; nop 3627ec681f3Smrg [00000076] ; nop 3637ec681f3Smrg [00000076] ; nop 3647ec681f3Smrg [00000030] ; nop 3657ec681f3Smrg [00000076] ; nop 3667ec681f3Smrg [00000076] ; nop 3677ec681f3Smrg [00000076] ; nop 3687ec681f3Smrg [00000076] ; nop 3697ec681f3Smrg [00000076] ; nop 3707ec681f3Smrg [00000076] ; nop 3717ec681f3Smrg [00000076] ; nop 3727ec681f3Smrg [00000076] ; nop 3737ec681f3Smrg [00000076] ; nop 3747ec681f3Smrg [00000076] ; nop 3757ec681f3Smrg [00000076] ; nop 3767ec681f3Smrg [00000076] ; nop 3777ec681f3Smrg [00000062] ; nop 3787ec681f3Smrg [00000076] ; nop 3797ec681f3Smrg [00000055] ; nop 3807ec681f3Smrg [00000076] ; nop 3817ec681f3Smrg [00000076] ; nop 3827ec681f3Smrg [00000076] ; nop 3837ec681f3Smrg [00000076] ; nop 3847ec681f3Smrg [00000076] ; nop 3857ec681f3Smrg [00000076] ; nop 3867ec681f3Smrg [00000076] ; nop 3877ec681f3Smrg [00000076] ; nop 3887ec681f3Smrg [00000076] ; nop 3897ec681f3Smrg [00000076] ; nop 390