Commit 67af60f0 authored by Ben Skeggs's avatar Ben Skeggs

drm/nvc0-/gr: bring in some macros to abstract falcon isa differences

Need. A. Compiler...
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 90d6db16
...@@ -38,7 +38,7 @@ queue_put: ...@@ -38,7 +38,7 @@ queue_put:
cmpu b32 $r8 $r9 cmpu b32 $r8 $r9
bra ne #queue_put_next bra ne #queue_put_next
mov $r15 E_CMD_OVERFLOW mov $r15 E_CMD_OVERFLOW
call #error call(error)
ret ret
// store cmd/data on queue // store cmd/data on queue
...@@ -92,18 +92,16 @@ queue_get_done: ...@@ -92,18 +92,16 @@ queue_get_done:
// Out: $r15 value // Out: $r15 value
// //
nv_rd32: nv_rd32:
mov $r11 0x728
shl b32 $r11 6
mov b32 $r12 $r14 mov b32 $r12 $r14
bset $r12 31 // MMIO_CTRL_PENDING bset $r12 31 // MMIO_CTRL_PENDING
iowr I[$r11 + 0x000] $r12 // MMIO_CTRL nv_iowr(NV_PGRAPH_FECS_MMIO_CTRL, 0, $r12)
nv_rd32_wait: nv_rd32_wait:
iord $r12 I[$r11 + 0x000] nv_iord($r12, NV_PGRAPH_FECS_MMIO_CTRL, 0)
xbit $r12 $r12 31 xbit $r12 $r12 31
bra ne #nv_rd32_wait bra ne #nv_rd32_wait
mov $r10 6 // DONE_MMIO_RD mov $r10 6 // DONE_MMIO_RD
call #wait_doneo call(wait_doneo)
iord $r15 I[$r11 + 0x100] // MMIO_RDVAL nv_iord($r15, NV_PGRAPH_FECS_MMIO_RDVAL, 0)
ret ret
// nv_wr32 - write 32-bit value to nv register // nv_wr32 - write 32-bit value to nv register
...@@ -112,37 +110,17 @@ nv_rd32: ...@@ -112,37 +110,17 @@ nv_rd32:
// $r15 value // $r15 value
// //
nv_wr32: nv_wr32:
mov $r11 0x728 nv_iowr(NV_PGRAPH_FECS_MMIO_WRVAL, 0, $r15)
shl b32 $r11 6
iowr I[$r11 + 0x200] $r15 // MMIO_WRVAL
mov b32 $r12 $r14 mov b32 $r12 $r14
bset $r12 31 // MMIO_CTRL_PENDING bset $r12 31 // MMIO_CTRL_PENDING
bset $r12 30 // MMIO_CTRL_WRITE bset $r12 30 // MMIO_CTRL_WRITE
iowr I[$r11 + 0x000] $r12 // MMIO_CTRL nv_iowr(NV_PGRAPH_FECS_MMIO_CTRL, 0, $r12)
nv_wr32_wait: nv_wr32_wait:
iord $r12 I[$r11 + 0x000] nv_iord($r12, NV_PGRAPH_FECS_MMIO_CTRL, 0)
xbit $r12 $r12 31 xbit $r12 $r12 31
bra ne #nv_wr32_wait bra ne #nv_wr32_wait
ret ret
// (re)set watchdog timer
//
// In : $r15 timeout
//
watchdog_reset:
mov $r8 0x430
shl b32 $r8 6
bset $r15 31
iowr I[$r8 + 0x000] $r15
ret
// clear watchdog timer
watchdog_clear:
mov $r8 0x430
shl b32 $r8 6
iowr I[$r8 + 0x000] $r0
ret
// wait_donez - wait on FUC_DONE bit to become clear // wait_donez - wait on FUC_DONE bit to become clear
// //
// In : $r10 bit to wait on // In : $r10 bit to wait on
...@@ -163,13 +141,9 @@ wait_donez: ...@@ -163,13 +141,9 @@ wait_donez:
// //
wait_doneo: wait_doneo:
trace_set(T_WAIT); trace_set(T_WAIT);
mov $r8 0x818 nv_iowr(NV_PGRAPH_FECS_CC_SCRATCH_VAL(6), 0, $r10)
shl b32 $r8 6
iowr I[$r8 + 0x000] $r10
wait_doneo_e: wait_doneo_e:
mov $r8 0x400 nv_iord($r8, NV_PGRAPH_FECS_SIGNAL, 0)
shl b32 $r8 6
iord $r8 I[$r8 + 0x000]
xbit $r8 $r8 $r10 xbit $r8 $r8 $r10
bra e #wait_doneo_e bra e #wait_doneo_e
trace_clr(T_WAIT) trace_clr(T_WAIT)
...@@ -209,21 +183,18 @@ mmctx_size: ...@@ -209,21 +183,18 @@ mmctx_size:
// //
mmctx_xfer: mmctx_xfer:
trace_set(T_MMCTX) trace_set(T_MMCTX)
mov $r8 0x710
shl b32 $r8 6
clear b32 $r9 clear b32 $r9
or $r11 $r11 or $r11 $r11
bra e #mmctx_base_disabled bra e #mmctx_base_disabled
iowr I[$r8 + 0x000] $r11 // MMCTX_BASE nv_iowr(NV_PGRAPH_FECS_MMCTX_BASE, 0, $r11)
bset $r9 0 // BASE_EN bset $r9 0 // BASE_EN
mmctx_base_disabled: mmctx_base_disabled:
or $r14 $r14 or $r14 $r14
bra e #mmctx_multi_disabled bra e #mmctx_multi_disabled
iowr I[$r8 + 0x200] $r14 // MMCTX_MULTI_STRIDE nv_iowr(NV_PGRAPH_FECS_MMCTX_MULTI_STRIDE, 0, $r14)
iowr I[$r8 + 0x300] $r15 // MMCTX_MULTI_MASK nv_iowr(NV_PGRAPH_FECS_MMCTX_MULTI_MASK, 0, $r15)
bset $r9 1 // MULTI_EN bset $r9 1 // MULTI_EN
mmctx_multi_disabled: mmctx_multi_disabled:
add b32 $r8 0x100
xbit $r11 $r10 0 xbit $r11 $r10 0
shl b32 $r11 16 // DIR shl b32 $r11 16 // DIR
...@@ -231,20 +202,20 @@ mmctx_xfer: ...@@ -231,20 +202,20 @@ mmctx_xfer:
xbit $r14 $r10 1 xbit $r14 $r10 1
shl b32 $r14 17 shl b32 $r14 17
or $r11 $r14 // START_TRIGGER or $r11 $r14 // START_TRIGGER
iowr I[$r8 + 0x000] $r11 // MMCTX_CTRL nv_iowr(NV_PGRAPH_FECS_MMCTX_CTRL, 0, $r11)
// loop over the mmio list, and send requests to the hw // loop over the mmio list, and send requests to the hw
mmctx_exec_loop: mmctx_exec_loop:
// wait for space in mmctx queue // wait for space in mmctx queue
mmctx_wait_free: mmctx_wait_free:
iord $r14 I[$r8 + 0x000] // MMCTX_CTRL nv_iord($r14, NV_PGRAPH_FECS_MMCTX_CTRL, 0)
and $r14 0x1f and $r14 0x1f
bra e #mmctx_wait_free bra e #mmctx_wait_free
// queue up an entry // queue up an entry
ld b32 $r14 D[$r12] ld b32 $r14 D[$r12]
or $r14 $r9 or $r14 $r9
iowr I[$r8 + 0x300] $r14 nv_iowr(NV_PGRAPH_FECS_MMCTX_QUEUE, 0, $r14)
add b32 $r12 4 add b32 $r12 4
cmpu b32 $r12 $r13 cmpu b32 $r12 $r13
bra ne #mmctx_exec_loop bra ne #mmctx_exec_loop
...@@ -253,22 +224,22 @@ mmctx_xfer: ...@@ -253,22 +224,22 @@ mmctx_xfer:
bra ne #mmctx_stop bra ne #mmctx_stop
// wait for queue to empty // wait for queue to empty
mmctx_fini_wait: mmctx_fini_wait:
iord $r11 I[$r8 + 0x000] // MMCTX_CTRL nv_iord($r11, NV_PGRAPH_FECS_MMCTX_CTRL, 0)
and $r11 0x1f and $r11 0x1f
cmpu b32 $r11 0x10 cmpu b32 $r11 0x10
bra ne #mmctx_fini_wait bra ne #mmctx_fini_wait
mov $r10 2 // DONE_MMCTX mov $r10 2 // DONE_MMCTX
call #wait_donez call(wait_donez)
bra #mmctx_done bra #mmctx_done
mmctx_stop: mmctx_stop:
xbit $r11 $r10 0 xbit $r11 $r10 0
shl b32 $r11 16 // DIR shl b32 $r11 16 // DIR
bset $r11 12 // QLIMIT = 0x10 bset $r11 12 // QLIMIT = 0x10
bset $r11 18 // STOP_TRIGGER bset $r11 18 // STOP_TRIGGER
iowr I[$r8 + 0x000] $r11 // MMCTX_CTRL nv_iowr(NV_PGRAPH_FECS_MMCTX_CTRL, 0, $r11)
mmctx_stop_wait: mmctx_stop_wait:
// wait for STOP_TRIGGER to clear // wait for STOP_TRIGGER to clear
iord $r11 I[$r8 + 0x000] // MMCTX_CTRL nv_iord($r11, NV_PGRAPH_FECS_MMCTX_CTRL, 0)
xbit $r11 $r11 18 xbit $r11 $r11 18
bra ne #mmctx_stop_wait bra ne #mmctx_stop_wait
mmctx_done: mmctx_done:
...@@ -280,28 +251,24 @@ mmctx_xfer: ...@@ -280,28 +251,24 @@ mmctx_xfer:
strand_wait: strand_wait:
push $r10 push $r10
mov $r10 2 mov $r10 2
call #wait_donez call(wait_donez)
pop $r10 pop $r10
ret ret
// unknown - call before issuing strand commands // unknown - call before issuing strand commands
// //
strand_pre: strand_pre:
mov $r8 0x4afc mov $r9 NV_PGRAPH_FECS_STRAND_CMD_ENABLE
sethi $r8 0x20000 nv_iowr(NV_PGRAPH_FECS_STRAND_CMD, 0x3f, $r9)
mov $r9 0xc call(strand_wait)
iowr I[$r8] $r9
call #strand_wait
ret ret
// unknown - call after issuing strand commands // unknown - call after issuing strand commands
// //
strand_post: strand_post:
mov $r8 0x4afc mov $r9 NV_PGRAPH_FECS_STRAND_CMD_DISABLE
sethi $r8 0x20000 nv_iowr(NV_PGRAPH_FECS_STRAND_CMD, 0x3f, $r9)
mov $r9 0xd call(strand_wait)
iowr I[$r8] $r9
call #strand_wait
ret ret
// Selects strand set?! // Selects strand set?!
...@@ -309,18 +276,14 @@ strand_post: ...@@ -309,18 +276,14 @@ strand_post:
// In: $r14 id // In: $r14 id
// //
strand_set: strand_set:
mov $r10 0x4ffc
sethi $r10 0x20000
sub b32 $r11 $r10 0x500
mov $r12 0xf mov $r12 0xf
iowr I[$r10 + 0x000] $r12 // 0x93c = 0xf nv_iowr(NV_PGRAPH_FECS_STRAND_FILTER, 0x3f, $r12)
mov $r12 0xb mov $r12 NV_PGRAPH_FECS_STRAND_CMD_DEACTIVATE_FILTER
iowr I[$r11 + 0x000] $r12 // 0x928 = 0xb nv_iowr(NV_PGRAPH_FECS_STRAND_CMD, 0x3f, $r12)
call #strand_wait nv_iowr(NV_PGRAPH_FECS_STRAND_FILTER, 0x3f, $r14)
iowr I[$r10 + 0x000] $r14 // 0x93c = <id> mov $r12 NV_PGRAPH_FECS_STRAND_CMD_ACTIVATE_FILTER
mov $r12 0xa nv_iowr(NV_PGRAPH_FECS_STRAND_CMD, 0x3f, $r12)
iowr I[$r11 + 0x000] $r12 // 0x928 = 0xa call(strand_wait)
call #strand_wait
ret ret
// Initialise strand context data // Initialise strand context data
...@@ -332,30 +295,27 @@ strand_set: ...@@ -332,30 +295,27 @@ strand_set:
// //
strand_ctx_init: strand_ctx_init:
trace_set(T_STRINIT) trace_set(T_STRINIT)
call #strand_pre call(strand_pre)
mov $r14 3 mov $r14 3
call #strand_set call(strand_set)
mov $r10 0x46fc
sethi $r10 0x20000 clear b32 $r12
add b32 $r11 $r10 0x400 nv_iowr(NV_PGRAPH_FECS_STRAND_SELECT, 0x3f, $r12)
iowr I[$r10 + 0x100] $r0 // STRAND_FIRST_GENE = 0 mov $r12 NV_PGRAPH_FECS_STRAND_CMD_SEEK
mov $r12 1 nv_iowr(NV_PGRAPH_FECS_STRAND_CMD, 0x3f, $r12)
iowr I[$r11 + 0x000] $r12 // STRAND_CMD = LATCH_FIRST_GENE call(strand_wait)
call #strand_wait
sub b32 $r12 $r0 1 sub b32 $r12 $r0 1
iowr I[$r10 + 0x000] $r12 // STRAND_GENE_CNT = 0xffffffff nv_iowr(NV_PGRAPH_FECS_STRAND_DATA, 0x3f, $r12)
mov $r12 2 mov $r12 NV_PGRAPH_FECS_STRAND_CMD_GET_INFO
iowr I[$r11 + 0x000] $r12 // STRAND_CMD = LATCH_GENE_CNT nv_iowr(NV_PGRAPH_FECS_STRAND_CMD, 0x3f, $r12)
call #strand_wait call(strand_wait)
call #strand_post call(strand_post)
// read the size of each strand, poke the context offset of // read the size of each strand, poke the context offset of
// each into STRAND_{SAVE,LOAD}_SWBASE now, no need to worry // each into STRAND_{SAVE,LOAD}_SWBASE now, no need to worry
// about it later then. // about it later then.
mov $r8 0x880 nv_mkio($r8, NV_PGRAPH_FECS_STRAND_SAVE_SWBASE, 0x00)
shl b32 $r8 6 nv_iord($r9, NV_PGRAPH_FECS_STRANDS_CNT, 0x00)
iord $r9 I[$r8 + 0x000] // STRANDS
add b32 $r8 0x2200
shr b32 $r14 $r15 8 shr b32 $r14 $r15 8
ctx_init_strand_loop: ctx_init_strand_loop:
iowr I[$r8 + 0x000] $r14 // STRAND_SAVE_SWBASE iowr I[$r8 + 0x000] $r14 // STRAND_SAVE_SWBASE
......
...@@ -58,12 +58,9 @@ mmio_list_base: ...@@ -58,12 +58,9 @@ mmio_list_base:
// //
error: error:
push $r14 push $r14
mov $r14 -0x67ec // 0x9814 nv_wr32(NV_PGRAPH_FECS_CC_SCRATCH_VAL(5), $r15)
sethi $r14 0x400000
call #nv_wr32 // HUB_CTXCTL_CC_SCRATCH[5] = error code
add b32 $r14 0x41c
mov $r15 1 mov $r15 1
call #nv_wr32 // HUB_CTXCTL_INTR_UP_SET nv_wr32(NV_PGRAPH_FECS_INTR_UP_SET, $r15)
pop $r14 pop $r14
ret ret
...@@ -84,46 +81,40 @@ init: ...@@ -84,46 +81,40 @@ init:
mov $sp $r0 mov $sp $r0
// enable fifo access // enable fifo access
mov $r1 0x1200 mov $r2 NV_PGRAPH_GPCX_GPCCS_ACCESS_FIFO
mov $r2 2 nv_iowr(NV_PGRAPH_GPCX_GPCCS_ACCESS, 0, $r2)
iowr I[$r1 + 0x000] $r2 // FIFO_ENABLE
// setup i0 handler, and route all interrupts to it // setup i0 handler, and route all interrupts to it
mov $r1 #ih mov $r1 #ih
mov $iv0 $r1 mov $iv0 $r1
mov $r1 0x400 nv_iowr(NV_PGRAPH_GPCX_GPCCS_INTR_ROUTE, 0, $r0)
iowr I[$r1 + 0x300] $r0 // INTR_DISPATCH
// enable fifo interrupt // enable fifo interrupt
mov $r2 4 mov $r2 NV_PGRAPH_GPCX_GPCCS_INTR_EN_SET_FIFO
iowr I[$r1 + 0x000] $r2 // INTR_EN_SET nv_iowr(NV_PGRAPH_GPCX_GPCCS_INTR_EN_SET, 0, $r2)
// enable interrupts // enable interrupts
bset $flags ie0 bset $flags ie0
// figure out which GPC we are, and how many TPCs we have // figure out which GPC we are, and how many TPCs we have
mov $r1 0x608 nv_iord($r2, NV_PGRAPH_GPCX_GPCCS_UNITS, 0)
shl b32 $r1 6
iord $r2 I[$r1 + 0x000] // UNITS
mov $r3 1 mov $r3 1
and $r2 0x1f and $r2 0x1f
shl b32 $r3 $r2 shl b32 $r3 $r2
sub b32 $r3 1 sub b32 $r3 1
st b32 D[$r0 + #tpc_count] $r2 st b32 D[$r0 + #tpc_count] $r2
st b32 D[$r0 + #tpc_mask] $r3 st b32 D[$r0 + #tpc_mask] $r3
add b32 $r1 0x400 nv_iord($r2, NV_PGRAPH_GPCX_GPCCS_MYINDEX, 0)
iord $r2 I[$r1 + 0x000] // MYINDEX
st b32 D[$r0 + #gpc_id] $r2 st b32 D[$r0 + #gpc_id] $r2
#if NV_PGRAPH_GPCX_UNK__SIZE > 0 #if NV_PGRAPH_GPCX_UNK__SIZE > 0
// figure out which, and how many, UNKs are actually present // figure out which, and how many, UNKs are actually present
mov $r14 0x0c30 imm32($r14, 0x500c30)
sethi $r14 0x500000
clear b32 $r2 clear b32 $r2
clear b32 $r3 clear b32 $r3
clear b32 $r4 clear b32 $r4
init_unk_loop: init_unk_loop:
call #nv_rd32 call(nv_rd32)
cmp b32 $r15 0 cmp b32 $r15 0
bra z #init_unk_next bra z #init_unk_next
mov $r15 1 mov $r15 1
...@@ -146,23 +137,21 @@ init: ...@@ -146,23 +137,21 @@ init:
// set mmctx base addresses now so we don't have to do it later, // set mmctx base addresses now so we don't have to do it later,
// they don't currently ever change // they don't currently ever change
mov $r4 0x700
shl b32 $r4 6
shr b32 $r5 $r2 8 shr b32 $r5 $r2 8
iowr I[$r4 + 0x000] $r5 // MMCTX_SAVE_SWBASE nv_iowr(NV_PGRAPH_GPCX_GPCCS_MMCTX_SAVE_SWBASE, 0, $r5)
iowr I[$r4 + 0x100] $r5 // MMCTX_LOAD_SWBASE nv_iowr(NV_PGRAPH_GPCX_GPCCS_MMCTX_LOAD_SWBASE, 0, $r5)
// calculate GPC mmio context size // calculate GPC mmio context size
ld b32 $r14 D[$r0 + #gpc_mmio_list_head] ld b32 $r14 D[$r0 + #gpc_mmio_list_head]
ld b32 $r15 D[$r0 + #gpc_mmio_list_tail] ld b32 $r15 D[$r0 + #gpc_mmio_list_tail]
call #mmctx_size call(mmctx_size)
add b32 $r2 $r15 add b32 $r2 $r15
add b32 $r3 $r15 add b32 $r3 $r15
// calculate per-TPC mmio context size // calculate per-TPC mmio context size
ld b32 $r14 D[$r0 + #tpc_mmio_list_head] ld b32 $r14 D[$r0 + #tpc_mmio_list_head]
ld b32 $r15 D[$r0 + #tpc_mmio_list_tail] ld b32 $r15 D[$r0 + #tpc_mmio_list_tail]
call #mmctx_size call(mmctx_size)
ld b32 $r14 D[$r0 + #tpc_count] ld b32 $r14 D[$r0 + #tpc_count]
mulu $r14 $r15 mulu $r14 $r15
add b32 $r2 $r14 add b32 $r2 $r14
...@@ -172,7 +161,7 @@ init: ...@@ -172,7 +161,7 @@ init:
// calculate per-UNK mmio context size // calculate per-UNK mmio context size
ld b32 $r14 D[$r0 + #unk_mmio_list_head] ld b32 $r14 D[$r0 + #unk_mmio_list_head]
ld b32 $r15 D[$r0 + #unk_mmio_list_tail] ld b32 $r15 D[$r0 + #unk_mmio_list_tail]
call #mmctx_size call(mmctx_size)
ld b32 $r14 D[$r0 + #unk_count] ld b32 $r14 D[$r0 + #unk_count]
mulu $r14 $r15 mulu $r14 $r15
add b32 $r2 $r14 add b32 $r2 $r14
...@@ -180,9 +169,8 @@ init: ...@@ -180,9 +169,8 @@ init:
#endif #endif
// round up base/size to 256 byte boundary (for strand SWBASE) // round up base/size to 256 byte boundary (for strand SWBASE)
add b32 $r4 0x1300
shr b32 $r3 2 shr b32 $r3 2
iowr I[$r4 + 0x000] $r3 // MMCTX_LOAD_COUNT, wtf for?!? nv_iowr(NV_PGRAPH_GPCX_GPCCS_MMCTX_LOAD_COUNT, 0, $r3) // wtf for?!
shr b32 $r2 8 shr b32 $r2 8
shr b32 $r3 6 shr b32 $r3 6
add b32 $r2 1 add b32 $r2 1
...@@ -192,7 +180,7 @@ init: ...@@ -192,7 +180,7 @@ init:
// calculate size of strand context data // calculate size of strand context data
mov b32 $r15 $r2 mov b32 $r15 $r2
call #strand_ctx_init call(strand_ctx_init)
add b32 $r3 $r15 add b32 $r3 $r15
// save context size, and tell HUB we're done // save context size, and tell HUB we're done
...@@ -208,7 +196,7 @@ main: ...@@ -208,7 +196,7 @@ main:
bset $flags $p0 bset $flags $p0
sleep $p0 sleep $p0
mov $r13 #cmd_queue mov $r13 #cmd_queue
call #queue_get call(queue_get)
bra $p1 #main bra $p1 #main
// 0x0000-0x0003 are all context transfers // 0x0000-0x0003 are all context transfers
...@@ -224,13 +212,13 @@ main: ...@@ -224,13 +212,13 @@ main:
or $r1 $r14 or $r1 $r14
mov $flags $r1 mov $flags $r1
// transfer context data // transfer context data
call #ctx_xfer call(ctx_xfer)
bra #main bra #main
main_not_ctx_xfer: main_not_ctx_xfer:
shl b32 $r15 $r14 16 shl b32 $r15 $r14 16
or $r15 E_BAD_COMMAND or $r15 E_BAD_COMMAND
call #error call(error)
bra #main bra #main
// interrupt handler // interrupt handler
...@@ -247,22 +235,20 @@ ih: ...@@ -247,22 +235,20 @@ ih:
clear b32 $r0 clear b32 $r0
// incoming fifo command? // incoming fifo command?
iord $r10 I[$r0 + 0x200] // INTR nv_iord($r10, NV_PGRAPH_GPCX_GPCCS_INTR, 0)
and $r11 $r10 0x00000004 and $r11 $r10 NV_PGRAPH_GPCX_GPCCS_INTR_FIFO
bra e #ih_no_fifo bra e #ih_no_fifo
// queue incoming fifo command for later processing // queue incoming fifo command for later processing
mov $r11 0x1900
mov $r13 #cmd_queue mov $r13 #cmd_queue
iord $r14 I[$r11 + 0x100] // FIFO_CMD nv_iord($r14, NV_PGRAPH_GPCX_GPCCS_FIFO_CMD, 0)
iord $r15 I[$r11 + 0x000] // FIFO_DATA nv_iord($r15, NV_PGRAPH_GPCX_GPCCS_FIFO_DATA, 0)
call #queue_put call(queue_put)
add b32 $r11 0x400
mov $r14 1 mov $r14 1
iowr I[$r11 + 0x000] $r14 // FIFO_ACK nv_iowr(NV_PGRAPH_GPCX_GPCCS_FIFO_ACK, 0, $r14)
// ack, and wake up main() // ack, and wake up main()
ih_no_fifo: ih_no_fifo:
iowr I[$r0 + 0x100] $r10 // INTR_ACK nv_iowr(NV_PGRAPH_GPCX_GPCCS_INTR_ACK, 0, $r10)
pop $r15 pop $r15
pop $r14 pop $r14
...@@ -283,9 +269,7 @@ hub_barrier_done: ...@@ -283,9 +269,7 @@ hub_barrier_done:
mov $r15 1 mov $r15 1
ld b32 $r14 D[$r0 + #gpc_id] ld b32 $r14 D[$r0 + #gpc_id]
shl b32 $r15 $r14 shl b32 $r15 $r14
mov $r14 -0x6be8 // 0x409418 - HUB_BAR_SET nv_wr32(0x409418, $r15) // 0x409418 - HUB_BAR_SET
sethi $r14 0x400000
call #nv_wr32
ret ret
// Disables various things, waits a bit, and re-enables them.. // Disables various things, waits a bit, and re-enables them..
...@@ -295,16 +279,15 @@ hub_barrier_done: ...@@ -295,16 +279,15 @@ hub_barrier_done:
// funny things happen. // funny things happen.
// //
ctx_redswitch: ctx_redswitch:
mov $r14 0x614 mov $r15 NV_PGRAPH_GPCX_GPCCS_RED_SWITCH_POWER
shl b32 $r14 6 nv_iowr(NV_PGRAPH_GPCX_GPCCS_RED_SWITCH, 0, $r15)
mov $r15 0x020 mov $r14 8
iowr I[$r14] $r15 // GPC_RED_SWITCH = POWER
mov $r15 8
ctx_redswitch_delay: ctx_redswitch_delay:
sub b32 $r15 1 sub b32 $r14 1
bra ne #ctx_redswitch_delay bra ne #ctx_redswitch_delay
mov $r15 0xa20 or $r15 NV_PGRAPH_GPCX_GPCCS_RED_SWITCH_UNK11
iowr I[$r14] $r15 // GPC_RED_SWITCH = UNK11, ENABLE, POWER or $r15 NV_PGRAPH_GPCX_GPCCS_RED_SWITCH_ENABLE
nv_iowr(NV_PGRAPH_GPCX_GPCCS_RED_SWITCH, 0, $r15)
ret ret
// Transfer GPC context data between GPU and storage area // Transfer GPC context data between GPU and storage area
...@@ -317,46 +300,37 @@ ctx_redswitch: ...@@ -317,46 +300,37 @@ ctx_redswitch:
// //
ctx_xfer: ctx_xfer:
// set context base address // set context base address
mov $r1 0xa04 nv_iowr(NV_PGRAPH_GPCX_GPCCS_MEM_BASE, 0, $r15)
shl b32 $r1 6
iowr I[$r1 + 0x000] $r15// MEM_BASE
bra not $p1 #ctx_xfer_not_load bra not $p1 #ctx_xfer_not_load
call #ctx_redswitch call(ctx_redswitch)
ctx_xfer_not_load: ctx_xfer_not_load:
// strands // strands
mov $r1 0x4afc call(strand_pre)
sethi $r1 0x20000 clear b32 $r2
mov $r2 0xc nv_iowr(NV_PGRAPH_GPCX_GPCCS_STRAND_SELECT, 0x3f, $r2)
iowr I[$r1] $r2 // STRAND_CMD(0x3f) = 0x0c xbit $r2 $flags $p1 // SAVE/LOAD
call #strand_wait add b32 $r2 NV_PGRAPH_GPCX_GPCCS_STRAND_CMD_SAVE
mov $r2 0x47fc nv_iowr(NV_PGRAPH_GPCX_GPCCS_STRAND_CMD, 0x3f, $r2)
sethi $r2 0x20000
iowr I[$r2] $r0 // STRAND_FIRST_GENE(0x3f) = 0x00
xbit $r2 $flags $p1
add b32 $r2 3
iowr I[$r1] $r2 // STRAND_CMD(0x3f) = 0x03/0x04 (SAVE/LOAD)
// mmio context // mmio context
xbit $r10 $flags $p1 // direction xbit $r10 $flags $p1 // direction
or $r10 2 // first or $r10 2 // first
mov $r11 0x0000 imm32($r11,0x500000)
sethi $r11 0x500000
ld b32 $r12 D[$r0 + #gpc_id] ld b32 $r12 D[$r0 + #gpc_id]
shl b32 $r12 15 shl b32 $r12 15
add b32 $r11 $r12 // base = NV_PGRAPH_GPCn add b32 $r11 $r12 // base = NV_PGRAPH_GPCn
ld b32 $r12 D[$r0 + #gpc_mmio_list_head] ld b32 $r12 D[$r0 + #gpc_mmio_list_head]
ld b32 $r13 D[$r0 + #gpc_mmio_list_tail] ld b32 $r13 D[$r0 + #gpc_mmio_list_tail]
mov $r14 0 // not multi mov $r14 0 // not multi
call #mmctx_xfer call(mmctx_xfer)
// per-TPC mmio context // per-TPC mmio context
xbit $r10 $flags $p1 // direction xbit $r10 $flags $p1 // direction
#if !NV_PGRAPH_GPCX_UNK__SIZE #if !NV_PGRAPH_GPCX_UNK__SIZE
or $r10 4 // last or $r10 4 // last
#endif #endif
mov $r11 0x4000 imm32($r11, 0x504000)
sethi $r11 0x500000 // base = NV_PGRAPH_GPC0_TPC0
ld b32 $r12 D[$r0 + #gpc_id] ld b32 $r12 D[$r0 + #gpc_id]
shl b32 $r12 15 shl b32 $r12 15
add b32 $r11 $r12 // base = NV_PGRAPH_GPCn_TPC0 add b32 $r11 $r12 // base = NV_PGRAPH_GPCn_TPC0
...@@ -364,14 +338,13 @@ ctx_xfer: ...@@ -364,14 +338,13 @@ ctx_xfer:
ld b32 $r13 D[$r0 + #tpc_mmio_list_tail] ld b32 $r13 D[$r0 + #tpc_mmio_list_tail]
ld b32 $r15 D[$r0 + #tpc_mask] ld b32 $r15 D[$r0 + #tpc_mask]
mov $r14 0x800 // stride = 0x800 mov $r14 0x800 // stride = 0x800
call #mmctx_xfer call(mmctx_xfer)
#if NV_PGRAPH_GPCX_UNK__SIZE > 0 #if NV_PGRAPH_GPCX_UNK__SIZE > 0
// per-UNK mmio context // per-UNK mmio context
xbit $r10 $flags $p1 // direction xbit $r10 $flags $p1 // direction
or $r10 4 // last or $r10 4 // last
mov $r11 0x3000 imm32($r11, 0x503000)
sethi $r11 0x500000 // base = NV_PGRAPH_GPC0_UNK0
ld b32 $r12 D[$r0 + #gpc_id] ld b32 $r12 D[$r0 + #gpc_id]
shl b32 $r12 15 shl b32 $r12 15
add b32 $r11 $r12 // base = NV_PGRAPH_GPCn_UNK0 add b32 $r11 $r12 // base = NV_PGRAPH_GPCn_UNK0
...@@ -379,11 +352,11 @@ ctx_xfer: ...@@ -379,11 +352,11 @@ ctx_xfer:
ld b32 $r13 D[$r0 + #unk_mmio_list_tail] ld b32 $r13 D[$r0 + #unk_mmio_list_tail]
ld b32 $r15 D[$r0 + #unk_mask] ld b32 $r15 D[$r0 + #unk_mask]
mov $r14 0x200 // stride = 0x200 mov $r14 0x200 // stride = 0x200
call #mmctx_xfer call(mmctx_xfer)
#endif #endif
// wait for strands to finish // wait for strands to finish
call #strand_wait call(strand_wait)
// if load, or a save without a load following, do some // if load, or a save without a load following, do some
// unknown stuff that's done after finishing a block of // unknown stuff that's done after finishing a block of
...@@ -391,14 +364,10 @@ ctx_xfer: ...@@ -391,14 +364,10 @@ ctx_xfer:
bra $p1 #ctx_xfer_post bra $p1 #ctx_xfer_post
bra not $p2 #ctx_xfer_done bra not $p2 #ctx_xfer_done
ctx_xfer_post: ctx_xfer_post:
mov $r1 0x4afc call(strand_post)
sethi $r1 0x20000
mov $r2 0xd
iowr I[$r1] $r2 // STRAND_CMD(0x3f) = 0x0d
call #strand_wait
// mark completion in HUB's barrier // mark completion in HUB's barrier
ctx_xfer_done: ctx_xfer_done:
call #hub_barrier_done call(hub_barrier_done)
ret ret
#endif #endif
...@@ -37,14 +37,14 @@ uint32_t nvc0_grgpc_data[] = { ...@@ -37,14 +37,14 @@ uint32_t nvc0_grgpc_data[] = {
}; };
uint32_t nvc0_grgpc_code[] = { uint32_t nvc0_grgpc_code[] = {
0x03180ef5, 0x03a10ef5,
/* 0x0004: queue_put */ /* 0x0004: queue_put */
0x9800d898, 0x9800d898,
0x86f001d9, 0x86f001d9,
0x0489b808, 0x0489b808,
0xf00c1bf4, 0xf00c1bf4,
0x21f502f7, 0x21f502f7,
0x00f802fe, 0x00f8037e,
/* 0x001c: queue_put_next */ /* 0x001c: queue_put_next */
0xb60798c4, 0xb60798c4,
0x8dbb0384, 0x8dbb0384,
...@@ -68,184 +68,214 @@ uint32_t nvc0_grgpc_code[] = { ...@@ -68,184 +68,214 @@ uint32_t nvc0_grgpc_code[] = {
/* 0x0066: queue_get_done */ /* 0x0066: queue_get_done */
0x00f80132, 0x00f80132,
/* 0x0068: nv_rd32 */ /* 0x0068: nv_rd32 */
0x0728b7f1, 0xf002ecb9,
0xb906b4b6, 0x07f11fc9,
0xc9f002ec, 0x03f0ca00,
0x00bcd01f, 0x000cd001,
/* 0x0078: nv_rd32_wait */ /* 0x007a: nv_rd32_wait */
0xc800bccf, 0xc7f104bd,
0x1bf41fcc, 0xc3f0ca00,
0x06a7f0fa, 0x00cccf01,
0x010921f5, 0xf41fccc8,
0xf840bfcf, 0xa7f0f31b,
/* 0x008d: nv_wr32 */ 0x1021f506,
0x28b7f100, 0x00f7f101,
0x06b4b607, 0x01f3f0cb,
0xb980bfd0, 0xf800ffcf,
0xc9f002ec, /* 0x009d: nv_wr32 */
0x1ec9f01f, 0x0007f100,
/* 0x00a3: nv_wr32_wait */ 0x0103f0cc,
0xcf00bcd0, 0xbd000fd0,
0xccc800bc, 0x02ecb904,
0xfa1bf41f, 0xf01fc9f0,
/* 0x00ae: watchdog_reset */ 0x07f11ec9,
0x87f100f8, 0x03f0ca00,
0x84b60430, 0x000cd001,
0x1ff9f006, /* 0x00be: nv_wr32_wait */
0xf8008fd0, 0xc7f104bd,
/* 0x00bd: watchdog_clear */ 0xc3f0ca00,
0x3087f100, 0x00cccf01,
0x0684b604, 0xf41fccc8,
0xf80080d0, 0x00f8f31b,
/* 0x00c9: wait_donez */ /* 0x00d0: wait_donez */
0xf094bd00, 0x99f094bd,
0x07f10099, 0x0007f100,
0x03f00f00, 0x0203f00f,
0x0009d002, 0xbd0009d0,
0x07f104bd, 0x0007f104,
0x03f00600, 0x0203f006,
0x000ad002, 0xbd000ad0,
/* 0x00e6: wait_donez_ne */ /* 0x00ed: wait_donez_ne */
0x87f104bd, 0x0087f104,
0x83f00000, 0x0183f000,
0x0088cf01, 0xff0088cf,
0xf4888aff, 0x1bf4888a,
0x94bdf31b, 0xf094bdf3,
0xf10099f0,
0xf0170007,
0x09d00203,
0xf804bd00,
/* 0x0109: wait_doneo */
0xf094bd00,
0x07f10099, 0x07f10099,
0x03f00f00, 0x03f01700,
0x0009d002, 0x0009d002,
0x87f104bd, 0x00f804bd,
0x84b60818, /* 0x0110: wait_doneo */
0x008ad006,
/* 0x0124: wait_doneo_e */
0x040087f1,
0xcf0684b6,
0x8aff0088,
0xf30bf488,
0x99f094bd, 0x99f094bd,
0x0007f100, 0x0007f100,
0x0203f017, 0x0203f00f,
0xbd0009d0, 0xbd0009d0,
/* 0x0147: mmctx_size */ 0x0007f104,
0xbd00f804, 0x0203f006,
/* 0x0149: nv_mmctx_size_loop */ 0xbd000ad0,
0x00e89894, /* 0x012d: wait_doneo_e */
0xb61a85b6, 0x0087f104,
0x84b60180, 0x0183f000,
0x0098bb02, 0xff0088cf,
0xb804e0b6, 0x0bf4888a,
0x1bf404ef, 0xf094bdf3,
0x029fb9eb, 0x07f10099,
/* 0x0166: mmctx_xfer */ 0x03f01700,
0x94bd00f8, 0x0009d002,
0xf10199f0, 0x00f804bd,
0xf00f0007, /* 0x0150: mmctx_size */
0x09d00203, /* 0x0152: nv_mmctx_size_loop */
0xf104bd00, 0xe89894bd,
0xb6071087, 0x1a85b600,
0x94bd0684, 0xb60180b6,
0xf405bbfd, 0x98bb0284,
0x8bd0090b, 0x04e0b600,
0x0099f000, 0xf404efb8,
/* 0x018c: mmctx_base_disabled */ 0x9fb9eb1b,
0xf405eefd, /* 0x016f: mmctx_xfer */
0x8ed00c0b, 0xbd00f802,
0xc08fd080, 0x0199f094,
/* 0x019b: mmctx_multi_disabled */ 0x0f0007f1,
0xb70199f0, 0xd00203f0,
0xc8010080, 0x04bd0009,
0xbbfd94bd,
0x120bf405,
0xc40007f1,
0xd00103f0,
0x04bd000b,
/* 0x0197: mmctx_base_disabled */
0xfd0099f0,
0x0bf405ee,
0x0007f11e,
0x0103f0c6,
0xbd000ed0,
0x0007f104,
0x0103f0c7,
0xbd000fd0,
0x0199f004,
/* 0x01b8: mmctx_multi_disabled */
0xb600abc8,
0xb9f010b4,
0x01aec80c,
0xfd11e4b6,
0x07f105be,
0x03f0c500,
0x000bd001,
/* 0x01d6: mmctx_exec_loop */
/* 0x01d6: mmctx_wait_free */
0xe7f104bd,
0xe3f0c500,
0x00eecf01,
0xf41fe4f0,
0xce98f30b,
0x05e9fd00,
0xc80007f1,
0xd00103f0,
0x04bd000e,
0xb804c0b6,
0x1bf404cd,
0x02abc8d8,
/* 0x0207: mmctx_fini_wait */
0xf11f1bf4,
0xf0c500b7,
0xbbcf01b3,
0x1fb4f000,
0xf410b4b0,
0xa7f0f01b,
0xd021f402,
/* 0x0223: mmctx_stop */
0xc82b0ef4,
0xb4b600ab, 0xb4b600ab,
0x0cb9f010, 0x0cb9f010,
0xb601aec8, 0xf112b9f0,
0xbefd11e4, 0xf0c50007,
0x008bd005, 0x0bd00103,
/* 0x01b4: mmctx_exec_loop */ /* 0x023b: mmctx_stop_wait */
/* 0x01b4: mmctx_wait_free */ 0xf104bd00,
0xf0008ecf, 0xf0c500b7,
0x0bf41fe4, 0xbbcf01b3,
0x00ce98fa, 0x12bbc800,
0xd005e9fd, /* 0x024b: mmctx_done */
0xc0b6c08e, 0xbdf31bf4,
0x04cdb804, 0x0199f094,
0xc8e81bf4, 0x170007f1,
0x1bf402ab, 0xd00203f0,
/* 0x01d5: mmctx_fini_wait */ 0x04bd0009,
0x008bcf18, /* 0x025e: strand_wait */
0xb01fb4f0, 0xa0f900f8,
0x1bf410b4, 0xf402a7f0,
0x02a7f0f7, 0xa0fcd021,
0xf4c921f4, /* 0x026a: strand_pre */
/* 0x01ea: mmctx_stop */ 0x97f000f8,
0xabc81b0e, 0xfc07f10c,
0x10b4b600, 0x0203f04a,
0xf00cb9f0, 0xbd0009d0,
0x8bd012b9, 0x5e21f504,
/* 0x01f9: mmctx_stop_wait */ /* 0x027f: strand_post */
0x008bcf00, 0xf000f802,
0xf412bbc8, 0x07f10d97,
/* 0x0202: mmctx_done */ 0x03f04afc,
0x94bdfa1b,
0xf10199f0,
0xf0170007,
0x09d00203,
0xf804bd00,
/* 0x0215: strand_wait */
0xf0a0f900,
0x21f402a7,
0xf8a0fcc9,
/* 0x0221: strand_pre */
0xfc87f100,
0x0283f04a,
0xd00c97f0,
0x21f50089,
0x00f80215,
/* 0x0234: strand_post */
0x4afc87f1,
0xf00283f0,
0x89d00d97,
0x1521f500,
/* 0x0247: strand_set */
0xf100f802,
0xf04ffca7,
0xaba202a3,
0xc7f00500,
0x00acd00f,
0xd00bc7f0,
0x21f500bc,
0xaed00215,
0x0ac7f000,
0xf500bcd0,
0xf8021521,
/* 0x0271: strand_ctx_init */
0xf094bd00,
0x07f10399,
0x03f00f00,
0x0009d002, 0x0009d002,
0x21f504bd, 0x21f504bd,
0xe7f00221, 0x00f8025e,
0x4721f503, /* 0x0294: strand_set */
0xfca7f102, 0xf10fc7f0,
0x02a3f046, 0xf04ffc07,
0x0400aba0, 0x0cd00203,
0xf040a0d0, 0xf004bd00,
0xbcd001c7, 0x07f10bc7,
0x1521f500, 0x03f04afc,
0x010c9202, 0x000cd002,
0xf000acd0, 0x07f104bd,
0xbcd002c7, 0x03f04ffc,
0x1521f500, 0x000ed002,
0x3421f502, 0xc7f004bd,
0x8087f102, 0xfc07f10a,
0x0684b608, 0x0203f04a,
0xb70089cf, 0xbd000cd0,
0x95220080, 0x5e21f504,
/* 0x02ca: ctx_init_strand_loop */ /* 0x02d3: strand_ctx_init */
0xbd00f802,
0x0399f094,
0x0f0007f1,
0xd00203f0,
0x04bd0009,
0x026a21f5,
0xf503e7f0,
0xbd029421,
0xfc07f1c4,
0x0203f047,
0xbd000cd0,
0x01c7f004,
0x4afc07f1,
0xd00203f0,
0x04bd000c,
0x025e21f5,
0xf1010c92,
0xf046fc07,
0x0cd00203,
0xf004bd00,
0x07f102c7,
0x03f04afc,
0x000cd002,
0x21f504bd,
0x21f5025e,
0x87f1027f,
0x83f04200,
0x0097f102,
0x0293f020,
0x950099cf,
/* 0x034a: ctx_init_strand_loop */
0x8ed008fe, 0x8ed008fe,
0x408ed000, 0x408ed000,
0xb6808acf, 0xb6808acf,
...@@ -259,167 +289,199 @@ uint32_t nvc0_grgpc_code[] = { ...@@ -259,167 +289,199 @@ uint32_t nvc0_grgpc_code[] = {
0x170007f1, 0x170007f1,
0xd00203f0, 0xd00203f0,
0x04bd0009, 0x04bd0009,
/* 0x02fe: error */ /* 0x037e: error */
0xe0f900f8, 0xe0f900f8,
0x9814e7f1, 0xf102ffb9,
0xf440e3f0, 0xf09814e7,
0xe0b78d21, 0x21f440e3,
0xf7f0041c, 0x01f7f09d,
0x8d21f401, 0xf102ffb9,
0x00f8e0fc, 0xf09c1ce7,
/* 0x0318: init */ 0x21f440e3,
0x04fe04bd, 0xf8e0fc9d,
0x0017f100, /* 0x03a1: init */
0x0227f012, 0xfe04bd00,
0xf10012d0, 0x27f00004,
0xfe042617, 0x0007f102,
0x17f10010, 0x0003f012,
0x10d00400, 0xbd0002d0,
0x0427f0c0, 0xd517f104,
0xf40012d0, 0x0010fe04,
0x17f11031, 0x070007f1,
0x14b60608, 0xd00003f0,
0x0012cf06, 0x04bd0000,
0xf10427f0,
0xf0040007,
0x02d00003,
0xf404bd00,
0x27f11031,
0x23f08200,
0x0022cf01,
0xf00137f0, 0xf00137f0,
0x32bb1f24, 0x32bb1f24,
0x0132b604, 0x0132b604,
0x80050280, 0x80050280,
0x10b70603, 0x27f10603,
0x12cf0400, 0x23f08600,
0x04028000, 0x0022cf01,
0x010027f1, 0xf1040280,
0xcf0223f0, 0xf0010027,
0x34bd0022, 0x22cf0223,
0x070047f1, 0x9534bd00,
0x950644b6, 0x07f10825,
0x45d00825, 0x03f0c000,
0x4045d000, 0x0005d001,
0x98000e98, 0x07f104bd,
0x21f5010f, 0x03f0c100,
0x2fbb0147, 0x0005d001,
0x003fbb00, 0x0e9804bd,
0x98010e98, 0x010f9800,
0x21f5020f, 0x015021f5,
0x0e980147, 0xbb002fbb,
0x00effd05, 0x0e98003f,
0xbb002ebb, 0x020f9801,
0x40b7003e, 0x015021f5,
0x35b61300, 0xfd050e98,
0x0043d002, 0x2ebb00ef,
0xb60825b6, 0x003ebb00,
0x20b60635, 0xf10235b6,
0x0130b601, 0xf0d30007,
0xb60824b6, 0x03d00103,
0x2fb90834, 0xb604bd00,
0x7121f502, 0x35b60825,
0x003fbb02, 0x0120b606,
0x010007f1, 0xb60130b6,
0x34b60824,
0x022fb908,
0x02d321f5,
0xf1003fbb,
0xf0010007,
0x03d00203,
0xbd04bd00,
0x1f29f024,
0x080007f1,
0xd00203f0, 0xd00203f0,
0x04bd0003, 0x04bd0002,
0x29f024bd, /* 0x0498: main */
0x0007f11f, 0xf40031f4,
0x0203f008, 0xd7f00028,
0xbd0002d0, 0x3921f41c,
/* 0x03e9: main */ 0xb0f401f4,
0x0031f404, 0x18f404e4,
0xf00028f4, 0x0181fe1e,
0x21f41cd7, 0xbd0627f0,
0xf401f439, 0x0412fd20,
0xf404e4b0, 0xfd01e4b6,
0x81fe1e18, 0x18fe051e,
0x0627f001, 0x8d21f500,
0x12fd20bd, 0xd30ef405,
0x01e4b604, /* 0x04c8: main_not_ctx_xfer */
0xfe051efd, 0xf010ef94,
0x21f50018, 0x21f501f5,
0x0ef404ad, 0x0ef4037e,
/* 0x0419: main_not_ctx_xfer */ /* 0x04d5: ih */
0x10ef94d3, 0xfe80f9c6,
0xf501f5f0, 0x80f90188,
0xf402fe21, 0xa0f990f9,
/* 0x0426: ih */ 0xd0f9b0f9,
0x80f9c60e, 0xf0f9e0f9,
0xf90188fe, 0xa7f104bd,
0xf990f980, 0xa3f00200,
0xf9b0f9a0, 0x00aacf00,
0xf9e0f9d0, 0xf404abc4,
0xcf04bdf0, 0xd7f02c0b,
0xabc4800a, 0x00e7f11c,
0x1d0bf404, 0x00e3f01a,
0x1900b7f1, 0xf100eecf,
0xcf1cd7f0, 0xf01900f7,
0xbfcf40be, 0xffcf00f3,
0x0421f400, 0x0421f400,
0x0400b0b7, 0xf101e7f0,
0xd001e7f0, 0xf01d0007,
/* 0x045e: ih_no_fifo */ 0x0ed00003,
0x0ad000be, /* 0x0523: ih_no_fifo */
0xfcf0fc40, 0xf104bd00,
0xfcd0fce0, 0xf0010007,
0xfca0fcb0, 0x0ad00003,
0xfe80fc90, 0xfc04bd00,
0x80fc0088, 0xfce0fcf0,
0xf80032f4, 0xfcb0fcd0,
/* 0x0479: hub_barrier_done */ 0xfc90fca0,
0x01f7f001, 0x0088fe80,
0xbb040e98, 0x32f480fc,
0xe7f104fe, /* 0x0547: hub_barrier_done */
0xe3f09418, 0xf001f800,
0x8d21f440, 0x0e9801f7,
/* 0x048e: ctx_redswitch */ 0x04febb04,
0xe7f100f8, 0xf102ffb9,
0xe4b60614, 0xf09418e7,
0x20f7f006, 0x21f440e3,
0xf000efd0, /* 0x055f: ctx_redswitch */
/* 0x049e: ctx_redswitch_delay */ 0xf000f89d,
0xf2b608f7, 0x07f120f7,
0xfd1bf401, 0x03f08500,
0x0a20f7f1, 0x000fd001,
0xf800efd0, 0xe7f004bd,
/* 0x04ad: ctx_xfer */ /* 0x0571: ctx_redswitch_delay */
0x0417f100, 0x01e2b608,
0x0614b60a, 0xf1fd1bf4,
0xf4001fd0, 0xf10800f5,
0x21f50711, 0xf10200f5,
/* 0x04be: ctx_xfer_not_load */ 0xf0850007,
0x17f1048e, 0x0fd00103,
0x13f04afc, 0xf804bd00,
0x0c27f002, /* 0x058d: ctx_xfer */
0xf50012d0, 0x0007f100,
0xf1021521, 0x0203f081,
0xf047fc27, 0xbd000fd0,
0x20d00223, 0x0711f404,
0x012cf000, 0x055f21f5,
0xd00320b6, /* 0x05a0: ctx_xfer_not_load */
0xacf00012, 0x026a21f5,
0x02a5f001, 0x07f124bd,
0xf000b7f0, 0x03f047fc,
0x0c9850b3, 0x0002d002,
0x0fc4b604, 0x2cf004bd,
0x9800bcbb, 0x0320b601,
0x0d98000c, 0x4afc07f1,
0x00e7f001, 0xd00203f0,
0x016621f5, 0x04bd0002,
0xf001acf0, 0xf001acf0,
0xb7f104a5, 0xb7f102a5,
0xb3f04000, 0xb3f00000,
0x040c9850, 0x040c9850,
0xbb0fc4b6, 0xbb0fc4b6,
0x0c9800bc, 0x0c9800bc,
0x020d9801, 0x010d9800,
0xf1060f98, 0xf500e7f0,
0xf50800e7, 0xf0016f21,
0xf5016621, 0xa5f001ac,
0xf4021521, 0x00b7f104,
0x12f40601, 0x50b3f040,
/* 0x0535: ctx_xfer_post */ 0xb6040c98,
0xfc17f114, 0xbcbb0fc4,
0x0213f04a, 0x010c9800,
0xd00d27f0, 0x98020d98,
0x21f50012, 0xe7f1060f,
/* 0x0546: ctx_xfer_done */ 0x21f50800,
0x21f50215, 0x21f5016f,
0x00f80479, 0x01f4025e,
0x0712f406,
/* 0x0618: ctx_xfer_post */
0x027f21f5,
/* 0x061c: ctx_xfer_done */
0x054721f5,
0x000000f8,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
......
...@@ -41,14 +41,14 @@ uint32_t nvd7_grgpc_data[] = { ...@@ -41,14 +41,14 @@ uint32_t nvd7_grgpc_data[] = {
}; };
uint32_t nvd7_grgpc_code[] = { uint32_t nvd7_grgpc_code[] = {
0x03180ef5, 0x03a10ef5,
/* 0x0004: queue_put */ /* 0x0004: queue_put */
0x9800d898, 0x9800d898,
0x86f001d9, 0x86f001d9,
0x0489b808, 0x0489b808,
0xf00c1bf4, 0xf00c1bf4,
0x21f502f7, 0x21f502f7,
0x00f802fe, 0x00f8037e,
/* 0x001c: queue_put_next */ /* 0x001c: queue_put_next */
0xb60798c4, 0xb60798c4,
0x8dbb0384, 0x8dbb0384,
...@@ -72,184 +72,214 @@ uint32_t nvd7_grgpc_code[] = { ...@@ -72,184 +72,214 @@ uint32_t nvd7_grgpc_code[] = {
/* 0x0066: queue_get_done */ /* 0x0066: queue_get_done */
0x00f80132, 0x00f80132,
/* 0x0068: nv_rd32 */ /* 0x0068: nv_rd32 */
0x0728b7f1, 0xf002ecb9,
0xb906b4b6, 0x07f11fc9,
0xc9f002ec, 0x03f0ca00,
0x00bcd01f, 0x000cd001,
/* 0x0078: nv_rd32_wait */ /* 0x007a: nv_rd32_wait */
0xc800bccf, 0xc7f104bd,
0x1bf41fcc, 0xc3f0ca00,
0x06a7f0fa, 0x00cccf01,
0x010921f5, 0xf41fccc8,
0xf840bfcf, 0xa7f0f31b,
/* 0x008d: nv_wr32 */ 0x1021f506,
0x28b7f100, 0x00f7f101,
0x06b4b607, 0x01f3f0cb,
0xb980bfd0, 0xf800ffcf,
0xc9f002ec, /* 0x009d: nv_wr32 */
0x1ec9f01f, 0x0007f100,
/* 0x00a3: nv_wr32_wait */ 0x0103f0cc,
0xcf00bcd0, 0xbd000fd0,
0xccc800bc, 0x02ecb904,
0xfa1bf41f, 0xf01fc9f0,
/* 0x00ae: watchdog_reset */ 0x07f11ec9,
0x87f100f8, 0x03f0ca00,
0x84b60430, 0x000cd001,
0x1ff9f006, /* 0x00be: nv_wr32_wait */
0xf8008fd0, 0xc7f104bd,
/* 0x00bd: watchdog_clear */ 0xc3f0ca00,
0x3087f100, 0x00cccf01,
0x0684b604, 0xf41fccc8,
0xf80080d0, 0x00f8f31b,
/* 0x00c9: wait_donez */ /* 0x00d0: wait_donez */
0xf094bd00, 0x99f094bd,
0x07f10099, 0x0007f100,
0x03f00f00, 0x0203f00f,
0x0009d002, 0xbd0009d0,
0x07f104bd, 0x0007f104,
0x03f00600, 0x0203f006,
0x000ad002, 0xbd000ad0,
/* 0x00e6: wait_donez_ne */ /* 0x00ed: wait_donez_ne */
0x87f104bd, 0x0087f104,
0x83f00000, 0x0183f000,
0x0088cf01, 0xff0088cf,
0xf4888aff, 0x1bf4888a,
0x94bdf31b, 0xf094bdf3,
0xf10099f0,
0xf0170007,
0x09d00203,
0xf804bd00,
/* 0x0109: wait_doneo */
0xf094bd00,
0x07f10099, 0x07f10099,
0x03f00f00, 0x03f01700,
0x0009d002, 0x0009d002,
0x87f104bd, 0x00f804bd,
0x84b60818, /* 0x0110: wait_doneo */
0x008ad006,
/* 0x0124: wait_doneo_e */
0x040087f1,
0xcf0684b6,
0x8aff0088,
0xf30bf488,
0x99f094bd, 0x99f094bd,
0x0007f100, 0x0007f100,
0x0203f017, 0x0203f00f,
0xbd0009d0, 0xbd0009d0,
/* 0x0147: mmctx_size */ 0x0007f104,
0xbd00f804, 0x0203f006,
/* 0x0149: nv_mmctx_size_loop */ 0xbd000ad0,
0x00e89894, /* 0x012d: wait_doneo_e */
0xb61a85b6, 0x0087f104,
0x84b60180, 0x0183f000,
0x0098bb02, 0xff0088cf,
0xb804e0b6, 0x0bf4888a,
0x1bf404ef, 0xf094bdf3,
0x029fb9eb, 0x07f10099,
/* 0x0166: mmctx_xfer */ 0x03f01700,
0x94bd00f8, 0x0009d002,
0xf10199f0, 0x00f804bd,
0xf00f0007, /* 0x0150: mmctx_size */
0x09d00203, /* 0x0152: nv_mmctx_size_loop */
0xf104bd00, 0xe89894bd,
0xb6071087, 0x1a85b600,
0x94bd0684, 0xb60180b6,
0xf405bbfd, 0x98bb0284,
0x8bd0090b, 0x04e0b600,
0x0099f000, 0xf404efb8,
/* 0x018c: mmctx_base_disabled */ 0x9fb9eb1b,
0xf405eefd, /* 0x016f: mmctx_xfer */
0x8ed00c0b, 0xbd00f802,
0xc08fd080, 0x0199f094,
/* 0x019b: mmctx_multi_disabled */ 0x0f0007f1,
0xb70199f0, 0xd00203f0,
0xc8010080, 0x04bd0009,
0xbbfd94bd,
0x120bf405,
0xc40007f1,
0xd00103f0,
0x04bd000b,
/* 0x0197: mmctx_base_disabled */
0xfd0099f0,
0x0bf405ee,
0x0007f11e,
0x0103f0c6,
0xbd000ed0,
0x0007f104,
0x0103f0c7,
0xbd000fd0,
0x0199f004,
/* 0x01b8: mmctx_multi_disabled */
0xb600abc8,
0xb9f010b4,
0x01aec80c,
0xfd11e4b6,
0x07f105be,
0x03f0c500,
0x000bd001,
/* 0x01d6: mmctx_exec_loop */
/* 0x01d6: mmctx_wait_free */
0xe7f104bd,
0xe3f0c500,
0x00eecf01,
0xf41fe4f0,
0xce98f30b,
0x05e9fd00,
0xc80007f1,
0xd00103f0,
0x04bd000e,
0xb804c0b6,
0x1bf404cd,
0x02abc8d8,
/* 0x0207: mmctx_fini_wait */
0xf11f1bf4,
0xf0c500b7,
0xbbcf01b3,
0x1fb4f000,
0xf410b4b0,
0xa7f0f01b,
0xd021f402,
/* 0x0223: mmctx_stop */
0xc82b0ef4,
0xb4b600ab, 0xb4b600ab,
0x0cb9f010, 0x0cb9f010,
0xb601aec8, 0xf112b9f0,
0xbefd11e4, 0xf0c50007,
0x008bd005, 0x0bd00103,
/* 0x01b4: mmctx_exec_loop */ /* 0x023b: mmctx_stop_wait */
/* 0x01b4: mmctx_wait_free */ 0xf104bd00,
0xf0008ecf, 0xf0c500b7,
0x0bf41fe4, 0xbbcf01b3,
0x00ce98fa, 0x12bbc800,
0xd005e9fd, /* 0x024b: mmctx_done */
0xc0b6c08e, 0xbdf31bf4,
0x04cdb804, 0x0199f094,
0xc8e81bf4, 0x170007f1,
0x1bf402ab, 0xd00203f0,
/* 0x01d5: mmctx_fini_wait */ 0x04bd0009,
0x008bcf18, /* 0x025e: strand_wait */
0xb01fb4f0, 0xa0f900f8,
0x1bf410b4, 0xf402a7f0,
0x02a7f0f7, 0xa0fcd021,
0xf4c921f4, /* 0x026a: strand_pre */
/* 0x01ea: mmctx_stop */ 0x97f000f8,
0xabc81b0e, 0xfc07f10c,
0x10b4b600, 0x0203f04a,
0xf00cb9f0, 0xbd0009d0,
0x8bd012b9, 0x5e21f504,
/* 0x01f9: mmctx_stop_wait */ /* 0x027f: strand_post */
0x008bcf00, 0xf000f802,
0xf412bbc8, 0x07f10d97,
/* 0x0202: mmctx_done */ 0x03f04afc,
0x94bdfa1b,
0xf10199f0,
0xf0170007,
0x09d00203,
0xf804bd00,
/* 0x0215: strand_wait */
0xf0a0f900,
0x21f402a7,
0xf8a0fcc9,
/* 0x0221: strand_pre */
0xfc87f100,
0x0283f04a,
0xd00c97f0,
0x21f50089,
0x00f80215,
/* 0x0234: strand_post */
0x4afc87f1,
0xf00283f0,
0x89d00d97,
0x1521f500,
/* 0x0247: strand_set */
0xf100f802,
0xf04ffca7,
0xaba202a3,
0xc7f00500,
0x00acd00f,
0xd00bc7f0,
0x21f500bc,
0xaed00215,
0x0ac7f000,
0xf500bcd0,
0xf8021521,
/* 0x0271: strand_ctx_init */
0xf094bd00,
0x07f10399,
0x03f00f00,
0x0009d002, 0x0009d002,
0x21f504bd, 0x21f504bd,
0xe7f00221, 0x00f8025e,
0x4721f503, /* 0x0294: strand_set */
0xfca7f102, 0xf10fc7f0,
0x02a3f046, 0xf04ffc07,
0x0400aba0, 0x0cd00203,
0xf040a0d0, 0xf004bd00,
0xbcd001c7, 0x07f10bc7,
0x1521f500, 0x03f04afc,
0x010c9202, 0x000cd002,
0xf000acd0, 0x07f104bd,
0xbcd002c7, 0x03f04ffc,
0x1521f500, 0x000ed002,
0x3421f502, 0xc7f004bd,
0x8087f102, 0xfc07f10a,
0x0684b608, 0x0203f04a,
0xb70089cf, 0xbd000cd0,
0x95220080, 0x5e21f504,
/* 0x02ca: ctx_init_strand_loop */ /* 0x02d3: strand_ctx_init */
0xbd00f802,
0x0399f094,
0x0f0007f1,
0xd00203f0,
0x04bd0009,
0x026a21f5,
0xf503e7f0,
0xbd029421,
0xfc07f1c4,
0x0203f047,
0xbd000cd0,
0x01c7f004,
0x4afc07f1,
0xd00203f0,
0x04bd000c,
0x025e21f5,
0xf1010c92,
0xf046fc07,
0x0cd00203,
0xf004bd00,
0x07f102c7,
0x03f04afc,
0x000cd002,
0x21f504bd,
0x21f5025e,
0x87f1027f,
0x83f04200,
0x0097f102,
0x0293f020,
0x950099cf,
/* 0x034a: ctx_init_strand_loop */
0x8ed008fe, 0x8ed008fe,
0x408ed000, 0x408ed000,
0xb6808acf, 0xb6808acf,
...@@ -263,198 +293,230 @@ uint32_t nvd7_grgpc_code[] = { ...@@ -263,198 +293,230 @@ uint32_t nvd7_grgpc_code[] = {
0x170007f1, 0x170007f1,
0xd00203f0, 0xd00203f0,
0x04bd0009, 0x04bd0009,
/* 0x02fe: error */ /* 0x037e: error */
0xe0f900f8, 0xe0f900f8,
0x9814e7f1, 0xf102ffb9,
0xf440e3f0, 0xf09814e7,
0xe0b78d21, 0x21f440e3,
0xf7f0041c, 0x01f7f09d,
0x8d21f401, 0xf102ffb9,
0x00f8e0fc, 0xf09c1ce7,
/* 0x0318: init */ 0x21f440e3,
0x04fe04bd, 0xf8e0fc9d,
0x0017f100, /* 0x03a1: init */
0x0227f012, 0xfe04bd00,
0xf10012d0, 0x27f00004,
0xfe047017, 0x0007f102,
0x17f10010, 0x0003f012,
0x10d00400, 0xbd0002d0,
0x0427f0c0, 0x1f17f104,
0xf40012d0, 0x0010fe05,
0x17f11031, 0x070007f1,
0x14b60608, 0xd00003f0,
0x0012cf06, 0x04bd0000,
0xf10427f0,
0xf0040007,
0x02d00003,
0xf404bd00,
0x27f11031,
0x23f08200,
0x0022cf01,
0xf00137f0, 0xf00137f0,
0x32bb1f24, 0x32bb1f24,
0x0132b604, 0x0132b604,
0x80050280, 0x80050280,
0x10b70603, 0x27f10603,
0x12cf0400, 0x23f08600,
0x04028000, 0x0022cf01,
0x0c30e7f1, 0xf1040280,
0xbd50e3f0, 0xf00c30e7,
0xbd34bd24, 0x24bd50e3,
/* 0x0371: init_unk_loop */ 0x44bd34bd,
0x6821f444, /* 0x0410: init_unk_loop */
0xf400f6b0, 0xb06821f4,
0xf7f00f0b, 0x0bf400f6,
0x04f2bb01, 0x01f7f00f,
0xb6054ffd, 0xfd04f2bb,
/* 0x0386: init_unk_next */ 0x30b6054f,
0x20b60130, /* 0x0425: init_unk_next */
0x04e0b601, 0x0120b601,
0xf40126b0, 0xb004e0b6,
/* 0x0392: init_unk_done */ 0x1bf40126,
0x0380e21b, /* 0x0431: init_unk_done */
0x08048007, 0x070380e2,
0x010027f1, 0xf1080480,
0xcf0223f0, 0xf0010027,
0x34bd0022, 0x22cf0223,
0x070047f1, 0x9534bd00,
0x950644b6, 0x07f10825,
0x45d00825, 0x03f0c000,
0x4045d000, 0x0005d001,
0x98000e98, 0x07f104bd,
0x21f5010f, 0x03f0c100,
0x2fbb0147, 0x0005d001,
0x003fbb00, 0x0e9804bd,
0x98010e98, 0x010f9800,
0x21f5020f, 0x015021f5,
0x0e980147, 0xbb002fbb,
0x00effd05, 0x0e98003f,
0xbb002ebb, 0x020f9801,
0x0e98003e, 0x015021f5,
0x030f9802, 0xfd050e98,
0x014721f5,
0xfd070e98,
0x2ebb00ef, 0x2ebb00ef,
0x003ebb00, 0x003ebb00,
0x130040b7, 0x98020e98,
0xd00235b6, 0x21f5030f,
0x25b60043, 0x0e980150,
0x0635b608, 0x00effd07,
0xb60120b6, 0xbb002ebb,
0x24b60130, 0x35b6003e,
0x0834b608, 0x0007f102,
0xf5022fb9, 0x0103f0d3,
0xbb027121, 0xbd0003d0,
0x07f1003f, 0x0825b604,
0x03f00100, 0xb60635b6,
0x0003d002, 0x30b60120,
0x24bd04bd, 0x0824b601,
0xf11f29f0, 0xb90834b6,
0xf0080007, 0x21f5022f,
0x02d00203, 0x3fbb02d3,
/* 0x0433: main */ 0x0007f100,
0x0203f001,
0xbd0003d0,
0xf024bd04,
0x07f11f29,
0x03f00800,
0x0002d002,
/* 0x04e2: main */
0x31f404bd,
0x0028f400,
0xf424d7f0,
0x01f43921,
0x04e4b0f4,
0xfe1e18f4,
0x27f00181,
0xfd20bd06,
0xe4b60412,
0x051efd01,
0xf50018fe,
0xf405d721,
/* 0x0512: main_not_ctx_xfer */
0xef94d30e,
0x01f5f010,
0x037e21f5,
/* 0x051f: ih */
0xf9c60ef4,
0x0188fe80,
0x90f980f9,
0xb0f9a0f9,
0xe0f9d0f9,
0x04bdf0f9,
0x0200a7f1,
0xcf00a3f0,
0xabc400aa,
0x2c0bf404,
0xf124d7f0,
0xf01a00e7,
0xeecf00e3,
0x00f7f100,
0x00f3f019,
0xf400ffcf,
0xe7f00421,
0x0007f101,
0x0003f01d,
0xbd000ed0,
/* 0x056d: ih_no_fifo */
0x0007f104,
0x0003f001,
0xbd000ad0,
0xfcf0fc04,
0xfcd0fce0,
0xfca0fcb0,
0xfe80fc90,
0x80fc0088,
0xf80032f4,
/* 0x0591: hub_barrier_done */
0x01f7f001,
0xbb040e98,
0xffb904fe,
0x18e7f102,
0x40e3f094,
0xf89d21f4,
/* 0x05a9: ctx_redswitch */
0x20f7f000,
0x850007f1,
0xd00103f0,
0x04bd000f,
/* 0x05bb: ctx_redswitch_delay */
0xb608e7f0,
0x1bf401e2,
0x00f5f1fd,
0x00f5f108,
0x0007f102,
0x0103f085,
0xbd000fd0,
/* 0x05d7: ctx_xfer */
0xf100f804,
0xf0810007,
0x0fd00203,
0xf404bd00, 0xf404bd00,
0x28f40031, 0x21f50711,
0x24d7f000, /* 0x05ea: ctx_xfer_not_load */
0xf43921f4, 0x21f505a9,
0xe4b0f401, 0x24bd026a,
0x1e18f404, 0x47fc07f1,
0xf00181fe, 0xd00203f0,
0x20bd0627, 0x04bd0002,
0xb60412fd, 0xb6012cf0,
0x1efd01e4, 0x07f10320,
0x0018fe05, 0x03f04afc,
0x04f721f5, 0x0002d002,
/* 0x0463: main_not_ctx_xfer */ 0xacf004bd,
0x94d30ef4, 0x02a5f001,
0xf5f010ef, 0x0000b7f1,
0xfe21f501,
0xc60ef402,
/* 0x0470: ih */
0x88fe80f9,
0xf980f901,
0xf9a0f990,
0xf9d0f9b0,
0xbdf0f9e0,
0x800acf04,
0xf404abc4,
0xb7f11d0b,
0xd7f01900,
0x40becf24,
0xf400bfcf,
0xb0b70421,
0xe7f00400,
0x00bed001,
/* 0x04a8: ih_no_fifo */
0xfc400ad0,
0xfce0fcf0,
0xfcb0fcd0,
0xfc90fca0,
0x0088fe80,
0x32f480fc,
/* 0x04c3: hub_barrier_done */
0xf001f800,
0x0e9801f7,
0x04febb04,
0x9418e7f1,
0xf440e3f0,
0x00f88d21,
/* 0x04d8: ctx_redswitch */
0x0614e7f1,
0xf006e4b6,
0xefd020f7,
0x08f7f000,
/* 0x04e8: ctx_redswitch_delay */
0xf401f2b6,
0xf7f1fd1b,
0xefd00a20,
/* 0x04f7: ctx_xfer */
0xf100f800,
0xb60a0417,
0x1fd00614,
0x0711f400,
0x04d821f5,
/* 0x0508: ctx_xfer_not_load */
0x4afc17f1,
0xf00213f0,
0x12d00c27,
0x1521f500,
0xfc27f102,
0x0223f047,
0xf00020d0,
0x20b6012c,
0x0012d003,
0xf001acf0,
0xb7f002a5,
0x50b3f000,
0xb6040c98,
0xbcbb0fc4,
0x000c9800,
0xf0010d98,
0x21f500e7,
0xacf00166,
0x00b7f101,
0x50b3f040,
0xb6040c98,
0xbcbb0fc4,
0x010c9800,
0x98020d98,
0xe7f1060f,
0x21f50800,
0xacf00166,
0x04a5f001,
0x3000b7f1,
0x9850b3f0, 0x9850b3f0,
0xc4b6040c, 0xc4b6040c,
0x00bcbb0f, 0x00bcbb0f,
0x98020c98, 0x98000c98,
0x0f98030d, 0xe7f0010d,
0x00e7f108, 0x6f21f500,
0x6621f502, 0x01acf001,
0x1521f501, 0x4000b7f1,
0x0601f402, 0x9850b3f0,
/* 0x05a3: ctx_xfer_post */ 0xc4b6040c,
0xf11412f4, 0x00bcbb0f,
0xf04afc17, 0x98010c98,
0x27f00213, 0x0f98020d,
0x0012d00d, 0x00e7f106,
0x021521f5, 0x6f21f508,
/* 0x05b4: ctx_xfer_done */ 0x01acf001,
0x04c321f5, 0xf104a5f0,
0x000000f8, 0xf03000b7,
0x0c9850b3,
0x0fc4b604,
0x9800bcbb,
0x0d98020c,
0x080f9803,
0x0200e7f1,
0x016f21f5,
0x025e21f5,
0xf40601f4,
/* 0x0686: ctx_xfer_post */
0x21f50712,
/* 0x068a: ctx_xfer_done */
0x21f5027f,
0x00f80591,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
......
...@@ -41,14 +41,14 @@ uint32_t nve0_grgpc_data[] = { ...@@ -41,14 +41,14 @@ uint32_t nve0_grgpc_data[] = {
}; };
uint32_t nve0_grgpc_code[] = { uint32_t nve0_grgpc_code[] = {
0x03180ef5, 0x03a10ef5,
/* 0x0004: queue_put */ /* 0x0004: queue_put */
0x9800d898, 0x9800d898,
0x86f001d9, 0x86f001d9,
0x0489b808, 0x0489b808,
0xf00c1bf4, 0xf00c1bf4,
0x21f502f7, 0x21f502f7,
0x00f802fe, 0x00f8037e,
/* 0x001c: queue_put_next */ /* 0x001c: queue_put_next */
0xb60798c4, 0xb60798c4,
0x8dbb0384, 0x8dbb0384,
...@@ -72,184 +72,214 @@ uint32_t nve0_grgpc_code[] = { ...@@ -72,184 +72,214 @@ uint32_t nve0_grgpc_code[] = {
/* 0x0066: queue_get_done */ /* 0x0066: queue_get_done */
0x00f80132, 0x00f80132,
/* 0x0068: nv_rd32 */ /* 0x0068: nv_rd32 */
0x0728b7f1, 0xf002ecb9,
0xb906b4b6, 0x07f11fc9,
0xc9f002ec, 0x03f0ca00,
0x00bcd01f, 0x000cd001,
/* 0x0078: nv_rd32_wait */ /* 0x007a: nv_rd32_wait */
0xc800bccf, 0xc7f104bd,
0x1bf41fcc, 0xc3f0ca00,
0x06a7f0fa, 0x00cccf01,
0x010921f5, 0xf41fccc8,
0xf840bfcf, 0xa7f0f31b,
/* 0x008d: nv_wr32 */ 0x1021f506,
0x28b7f100, 0x00f7f101,
0x06b4b607, 0x01f3f0cb,
0xb980bfd0, 0xf800ffcf,
0xc9f002ec, /* 0x009d: nv_wr32 */
0x1ec9f01f, 0x0007f100,
/* 0x00a3: nv_wr32_wait */ 0x0103f0cc,
0xcf00bcd0, 0xbd000fd0,
0xccc800bc, 0x02ecb904,
0xfa1bf41f, 0xf01fc9f0,
/* 0x00ae: watchdog_reset */ 0x07f11ec9,
0x87f100f8, 0x03f0ca00,
0x84b60430, 0x000cd001,
0x1ff9f006, /* 0x00be: nv_wr32_wait */
0xf8008fd0, 0xc7f104bd,
/* 0x00bd: watchdog_clear */ 0xc3f0ca00,
0x3087f100, 0x00cccf01,
0x0684b604, 0xf41fccc8,
0xf80080d0, 0x00f8f31b,
/* 0x00c9: wait_donez */ /* 0x00d0: wait_donez */
0xf094bd00, 0x99f094bd,
0x07f10099, 0x0007f100,
0x03f00f00, 0x0203f00f,
0x0009d002, 0xbd0009d0,
0x07f104bd, 0x0007f104,
0x03f00600, 0x0203f006,
0x000ad002, 0xbd000ad0,
/* 0x00e6: wait_donez_ne */ /* 0x00ed: wait_donez_ne */
0x87f104bd, 0x0087f104,
0x83f00000, 0x0183f000,
0x0088cf01, 0xff0088cf,
0xf4888aff, 0x1bf4888a,
0x94bdf31b, 0xf094bdf3,
0xf10099f0,
0xf0170007,
0x09d00203,
0xf804bd00,
/* 0x0109: wait_doneo */
0xf094bd00,
0x07f10099, 0x07f10099,
0x03f00f00, 0x03f01700,
0x0009d002, 0x0009d002,
0x87f104bd, 0x00f804bd,
0x84b60818, /* 0x0110: wait_doneo */
0x008ad006,
/* 0x0124: wait_doneo_e */
0x040087f1,
0xcf0684b6,
0x8aff0088,
0xf30bf488,
0x99f094bd, 0x99f094bd,
0x0007f100, 0x0007f100,
0x0203f017, 0x0203f00f,
0xbd0009d0, 0xbd0009d0,
/* 0x0147: mmctx_size */ 0x0007f104,
0xbd00f804, 0x0203f006,
/* 0x0149: nv_mmctx_size_loop */ 0xbd000ad0,
0x00e89894, /* 0x012d: wait_doneo_e */
0xb61a85b6, 0x0087f104,
0x84b60180, 0x0183f000,
0x0098bb02, 0xff0088cf,
0xb804e0b6, 0x0bf4888a,
0x1bf404ef, 0xf094bdf3,
0x029fb9eb, 0x07f10099,
/* 0x0166: mmctx_xfer */ 0x03f01700,
0x94bd00f8, 0x0009d002,
0xf10199f0, 0x00f804bd,
0xf00f0007, /* 0x0150: mmctx_size */
0x09d00203, /* 0x0152: nv_mmctx_size_loop */
0xf104bd00, 0xe89894bd,
0xb6071087, 0x1a85b600,
0x94bd0684, 0xb60180b6,
0xf405bbfd, 0x98bb0284,
0x8bd0090b, 0x04e0b600,
0x0099f000, 0xf404efb8,
/* 0x018c: mmctx_base_disabled */ 0x9fb9eb1b,
0xf405eefd, /* 0x016f: mmctx_xfer */
0x8ed00c0b, 0xbd00f802,
0xc08fd080, 0x0199f094,
/* 0x019b: mmctx_multi_disabled */ 0x0f0007f1,
0xb70199f0, 0xd00203f0,
0xc8010080, 0x04bd0009,
0xbbfd94bd,
0x120bf405,
0xc40007f1,
0xd00103f0,
0x04bd000b,
/* 0x0197: mmctx_base_disabled */
0xfd0099f0,
0x0bf405ee,
0x0007f11e,
0x0103f0c6,
0xbd000ed0,
0x0007f104,
0x0103f0c7,
0xbd000fd0,
0x0199f004,
/* 0x01b8: mmctx_multi_disabled */
0xb600abc8,
0xb9f010b4,
0x01aec80c,
0xfd11e4b6,
0x07f105be,
0x03f0c500,
0x000bd001,
/* 0x01d6: mmctx_exec_loop */
/* 0x01d6: mmctx_wait_free */
0xe7f104bd,
0xe3f0c500,
0x00eecf01,
0xf41fe4f0,
0xce98f30b,
0x05e9fd00,
0xc80007f1,
0xd00103f0,
0x04bd000e,
0xb804c0b6,
0x1bf404cd,
0x02abc8d8,
/* 0x0207: mmctx_fini_wait */
0xf11f1bf4,
0xf0c500b7,
0xbbcf01b3,
0x1fb4f000,
0xf410b4b0,
0xa7f0f01b,
0xd021f402,
/* 0x0223: mmctx_stop */
0xc82b0ef4,
0xb4b600ab, 0xb4b600ab,
0x0cb9f010, 0x0cb9f010,
0xb601aec8, 0xf112b9f0,
0xbefd11e4, 0xf0c50007,
0x008bd005, 0x0bd00103,
/* 0x01b4: mmctx_exec_loop */ /* 0x023b: mmctx_stop_wait */
/* 0x01b4: mmctx_wait_free */ 0xf104bd00,
0xf0008ecf, 0xf0c500b7,
0x0bf41fe4, 0xbbcf01b3,
0x00ce98fa, 0x12bbc800,
0xd005e9fd, /* 0x024b: mmctx_done */
0xc0b6c08e, 0xbdf31bf4,
0x04cdb804, 0x0199f094,
0xc8e81bf4, 0x170007f1,
0x1bf402ab, 0xd00203f0,
/* 0x01d5: mmctx_fini_wait */ 0x04bd0009,
0x008bcf18, /* 0x025e: strand_wait */
0xb01fb4f0, 0xa0f900f8,
0x1bf410b4, 0xf402a7f0,
0x02a7f0f7, 0xa0fcd021,
0xf4c921f4, /* 0x026a: strand_pre */
/* 0x01ea: mmctx_stop */ 0x97f000f8,
0xabc81b0e, 0xfc07f10c,
0x10b4b600, 0x0203f04a,
0xf00cb9f0, 0xbd0009d0,
0x8bd012b9, 0x5e21f504,
/* 0x01f9: mmctx_stop_wait */ /* 0x027f: strand_post */
0x008bcf00, 0xf000f802,
0xf412bbc8, 0x07f10d97,
/* 0x0202: mmctx_done */ 0x03f04afc,
0x94bdfa1b,
0xf10199f0,
0xf0170007,
0x09d00203,
0xf804bd00,
/* 0x0215: strand_wait */
0xf0a0f900,
0x21f402a7,
0xf8a0fcc9,
/* 0x0221: strand_pre */
0xfc87f100,
0x0283f04a,
0xd00c97f0,
0x21f50089,
0x00f80215,
/* 0x0234: strand_post */
0x4afc87f1,
0xf00283f0,
0x89d00d97,
0x1521f500,
/* 0x0247: strand_set */
0xf100f802,
0xf04ffca7,
0xaba202a3,
0xc7f00500,
0x00acd00f,
0xd00bc7f0,
0x21f500bc,
0xaed00215,
0x0ac7f000,
0xf500bcd0,
0xf8021521,
/* 0x0271: strand_ctx_init */
0xf094bd00,
0x07f10399,
0x03f00f00,
0x0009d002, 0x0009d002,
0x21f504bd, 0x21f504bd,
0xe7f00221, 0x00f8025e,
0x4721f503, /* 0x0294: strand_set */
0xfca7f102, 0xf10fc7f0,
0x02a3f046, 0xf04ffc07,
0x0400aba0, 0x0cd00203,
0xf040a0d0, 0xf004bd00,
0xbcd001c7, 0x07f10bc7,
0x1521f500, 0x03f04afc,
0x010c9202, 0x000cd002,
0xf000acd0, 0x07f104bd,
0xbcd002c7, 0x03f04ffc,
0x1521f500, 0x000ed002,
0x3421f502, 0xc7f004bd,
0x8087f102, 0xfc07f10a,
0x0684b608, 0x0203f04a,
0xb70089cf, 0xbd000cd0,
0x95220080, 0x5e21f504,
/* 0x02ca: ctx_init_strand_loop */ /* 0x02d3: strand_ctx_init */
0xbd00f802,
0x0399f094,
0x0f0007f1,
0xd00203f0,
0x04bd0009,
0x026a21f5,
0xf503e7f0,
0xbd029421,
0xfc07f1c4,
0x0203f047,
0xbd000cd0,
0x01c7f004,
0x4afc07f1,
0xd00203f0,
0x04bd000c,
0x025e21f5,
0xf1010c92,
0xf046fc07,
0x0cd00203,
0xf004bd00,
0x07f102c7,
0x03f04afc,
0x000cd002,
0x21f504bd,
0x21f5025e,
0x87f1027f,
0x83f04200,
0x0097f102,
0x0293f020,
0x950099cf,
/* 0x034a: ctx_init_strand_loop */
0x8ed008fe, 0x8ed008fe,
0x408ed000, 0x408ed000,
0xb6808acf, 0xb6808acf,
...@@ -263,198 +293,230 @@ uint32_t nve0_grgpc_code[] = { ...@@ -263,198 +293,230 @@ uint32_t nve0_grgpc_code[] = {
0x170007f1, 0x170007f1,
0xd00203f0, 0xd00203f0,
0x04bd0009, 0x04bd0009,
/* 0x02fe: error */ /* 0x037e: error */
0xe0f900f8, 0xe0f900f8,
0x9814e7f1, 0xf102ffb9,
0xf440e3f0, 0xf09814e7,
0xe0b78d21, 0x21f440e3,
0xf7f0041c, 0x01f7f09d,
0x8d21f401, 0xf102ffb9,
0x00f8e0fc, 0xf09c1ce7,
/* 0x0318: init */ 0x21f440e3,
0x04fe04bd, 0xf8e0fc9d,
0x0017f100, /* 0x03a1: init */
0x0227f012, 0xfe04bd00,
0xf10012d0, 0x27f00004,
0xfe047017, 0x0007f102,
0x17f10010, 0x0003f012,
0x10d00400, 0xbd0002d0,
0x0427f0c0, 0x1f17f104,
0xf40012d0, 0x0010fe05,
0x17f11031, 0x070007f1,
0x14b60608, 0xd00003f0,
0x0012cf06, 0x04bd0000,
0xf10427f0,
0xf0040007,
0x02d00003,
0xf404bd00,
0x27f11031,
0x23f08200,
0x0022cf01,
0xf00137f0, 0xf00137f0,
0x32bb1f24, 0x32bb1f24,
0x0132b604, 0x0132b604,
0x80050280, 0x80050280,
0x10b70603, 0x27f10603,
0x12cf0400, 0x23f08600,
0x04028000, 0x0022cf01,
0x0c30e7f1, 0xf1040280,
0xbd50e3f0, 0xf00c30e7,
0xbd34bd24, 0x24bd50e3,
/* 0x0371: init_unk_loop */ 0x44bd34bd,
0x6821f444, /* 0x0410: init_unk_loop */
0xf400f6b0, 0xb06821f4,
0xf7f00f0b, 0x0bf400f6,
0x04f2bb01, 0x01f7f00f,
0xb6054ffd, 0xfd04f2bb,
/* 0x0386: init_unk_next */ 0x30b6054f,
0x20b60130, /* 0x0425: init_unk_next */
0x04e0b601, 0x0120b601,
0xf40126b0, 0xb004e0b6,
/* 0x0392: init_unk_done */ 0x1bf40126,
0x0380e21b, /* 0x0431: init_unk_done */
0x08048007, 0x070380e2,
0x010027f1, 0xf1080480,
0xcf0223f0, 0xf0010027,
0x34bd0022, 0x22cf0223,
0x070047f1, 0x9534bd00,
0x950644b6, 0x07f10825,
0x45d00825, 0x03f0c000,
0x4045d000, 0x0005d001,
0x98000e98, 0x07f104bd,
0x21f5010f, 0x03f0c100,
0x2fbb0147, 0x0005d001,
0x003fbb00, 0x0e9804bd,
0x98010e98, 0x010f9800,
0x21f5020f, 0x015021f5,
0x0e980147, 0xbb002fbb,
0x00effd05, 0x0e98003f,
0xbb002ebb, 0x020f9801,
0x0e98003e, 0x015021f5,
0x030f9802, 0xfd050e98,
0x014721f5,
0xfd070e98,
0x2ebb00ef, 0x2ebb00ef,
0x003ebb00, 0x003ebb00,
0x130040b7, 0x98020e98,
0xd00235b6, 0x21f5030f,
0x25b60043, 0x0e980150,
0x0635b608, 0x00effd07,
0xb60120b6, 0xbb002ebb,
0x24b60130, 0x35b6003e,
0x0834b608, 0x0007f102,
0xf5022fb9, 0x0103f0d3,
0xbb027121, 0xbd0003d0,
0x07f1003f, 0x0825b604,
0x03f00100, 0xb60635b6,
0x0003d002, 0x30b60120,
0x24bd04bd, 0x0824b601,
0xf11f29f0, 0xb90834b6,
0xf0080007, 0x21f5022f,
0x02d00203, 0x3fbb02d3,
/* 0x0433: main */ 0x0007f100,
0x0203f001,
0xbd0003d0,
0xf024bd04,
0x07f11f29,
0x03f00800,
0x0002d002,
/* 0x04e2: main */
0x31f404bd,
0x0028f400,
0xf424d7f0,
0x01f43921,
0x04e4b0f4,
0xfe1e18f4,
0x27f00181,
0xfd20bd06,
0xe4b60412,
0x051efd01,
0xf50018fe,
0xf405d721,
/* 0x0512: main_not_ctx_xfer */
0xef94d30e,
0x01f5f010,
0x037e21f5,
/* 0x051f: ih */
0xf9c60ef4,
0x0188fe80,
0x90f980f9,
0xb0f9a0f9,
0xe0f9d0f9,
0x04bdf0f9,
0x0200a7f1,
0xcf00a3f0,
0xabc400aa,
0x2c0bf404,
0xf124d7f0,
0xf01a00e7,
0xeecf00e3,
0x00f7f100,
0x00f3f019,
0xf400ffcf,
0xe7f00421,
0x0007f101,
0x0003f01d,
0xbd000ed0,
/* 0x056d: ih_no_fifo */
0x0007f104,
0x0003f001,
0xbd000ad0,
0xfcf0fc04,
0xfcd0fce0,
0xfca0fcb0,
0xfe80fc90,
0x80fc0088,
0xf80032f4,
/* 0x0591: hub_barrier_done */
0x01f7f001,
0xbb040e98,
0xffb904fe,
0x18e7f102,
0x40e3f094,
0xf89d21f4,
/* 0x05a9: ctx_redswitch */
0x20f7f000,
0x850007f1,
0xd00103f0,
0x04bd000f,
/* 0x05bb: ctx_redswitch_delay */
0xb608e7f0,
0x1bf401e2,
0x00f5f1fd,
0x00f5f108,
0x0007f102,
0x0103f085,
0xbd000fd0,
/* 0x05d7: ctx_xfer */
0xf100f804,
0xf0810007,
0x0fd00203,
0xf404bd00, 0xf404bd00,
0x28f40031, 0x21f50711,
0x24d7f000, /* 0x05ea: ctx_xfer_not_load */
0xf43921f4, 0x21f505a9,
0xe4b0f401, 0x24bd026a,
0x1e18f404, 0x47fc07f1,
0xf00181fe, 0xd00203f0,
0x20bd0627, 0x04bd0002,
0xb60412fd, 0xb6012cf0,
0x1efd01e4, 0x07f10320,
0x0018fe05, 0x03f04afc,
0x04f721f5, 0x0002d002,
/* 0x0463: main_not_ctx_xfer */ 0xacf004bd,
0x94d30ef4, 0x02a5f001,
0xf5f010ef, 0x0000b7f1,
0xfe21f501,
0xc60ef402,
/* 0x0470: ih */
0x88fe80f9,
0xf980f901,
0xf9a0f990,
0xf9d0f9b0,
0xbdf0f9e0,
0x800acf04,
0xf404abc4,
0xb7f11d0b,
0xd7f01900,
0x40becf24,
0xf400bfcf,
0xb0b70421,
0xe7f00400,
0x00bed001,
/* 0x04a8: ih_no_fifo */
0xfc400ad0,
0xfce0fcf0,
0xfcb0fcd0,
0xfc90fca0,
0x0088fe80,
0x32f480fc,
/* 0x04c3: hub_barrier_done */
0xf001f800,
0x0e9801f7,
0x04febb04,
0x9418e7f1,
0xf440e3f0,
0x00f88d21,
/* 0x04d8: ctx_redswitch */
0x0614e7f1,
0xf006e4b6,
0xefd020f7,
0x08f7f000,
/* 0x04e8: ctx_redswitch_delay */
0xf401f2b6,
0xf7f1fd1b,
0xefd00a20,
/* 0x04f7: ctx_xfer */
0xf100f800,
0xb60a0417,
0x1fd00614,
0x0711f400,
0x04d821f5,
/* 0x0508: ctx_xfer_not_load */
0x4afc17f1,
0xf00213f0,
0x12d00c27,
0x1521f500,
0xfc27f102,
0x0223f047,
0xf00020d0,
0x20b6012c,
0x0012d003,
0xf001acf0,
0xb7f002a5,
0x50b3f000,
0xb6040c98,
0xbcbb0fc4,
0x000c9800,
0xf0010d98,
0x21f500e7,
0xacf00166,
0x00b7f101,
0x50b3f040,
0xb6040c98,
0xbcbb0fc4,
0x010c9800,
0x98020d98,
0xe7f1060f,
0x21f50800,
0xacf00166,
0x04a5f001,
0x3000b7f1,
0x9850b3f0, 0x9850b3f0,
0xc4b6040c, 0xc4b6040c,
0x00bcbb0f, 0x00bcbb0f,
0x98020c98, 0x98000c98,
0x0f98030d, 0xe7f0010d,
0x00e7f108, 0x6f21f500,
0x6621f502, 0x01acf001,
0x1521f501, 0x4000b7f1,
0x0601f402, 0x9850b3f0,
/* 0x05a3: ctx_xfer_post */ 0xc4b6040c,
0xf11412f4, 0x00bcbb0f,
0xf04afc17, 0x98010c98,
0x27f00213, 0x0f98020d,
0x0012d00d, 0x00e7f106,
0x021521f5, 0x6f21f508,
/* 0x05b4: ctx_xfer_done */ 0x01acf001,
0x04c321f5, 0xf104a5f0,
0x000000f8, 0xf03000b7,
0x0c9850b3,
0x0fc4b604,
0x9800bcbb,
0x0d98020c,
0x080f9803,
0x0200e7f1,
0x016f21f5,
0x025e21f5,
0xf40601f4,
/* 0x0686: ctx_xfer_post */
0x21f50712,
/* 0x068a: ctx_xfer_done */
0x21f5027f,
0x00f80591,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
......
...@@ -41,14 +41,14 @@ uint32_t nvf0_grgpc_data[] = { ...@@ -41,14 +41,14 @@ uint32_t nvf0_grgpc_data[] = {
}; };
uint32_t nvf0_grgpc_code[] = { uint32_t nvf0_grgpc_code[] = {
0x03180ef5, 0x03a10ef5,
/* 0x0004: queue_put */ /* 0x0004: queue_put */
0x9800d898, 0x9800d898,
0x86f001d9, 0x86f001d9,
0x0489b808, 0x0489b808,
0xf00c1bf4, 0xf00c1bf4,
0x21f502f7, 0x21f502f7,
0x00f802fe, 0x00f8037e,
/* 0x001c: queue_put_next */ /* 0x001c: queue_put_next */
0xb60798c4, 0xb60798c4,
0x8dbb0384, 0x8dbb0384,
...@@ -72,184 +72,214 @@ uint32_t nvf0_grgpc_code[] = { ...@@ -72,184 +72,214 @@ uint32_t nvf0_grgpc_code[] = {
/* 0x0066: queue_get_done */ /* 0x0066: queue_get_done */
0x00f80132, 0x00f80132,
/* 0x0068: nv_rd32 */ /* 0x0068: nv_rd32 */
0x0728b7f1, 0xf002ecb9,
0xb906b4b6, 0x07f11fc9,
0xc9f002ec, 0x03f0ca00,
0x00bcd01f, 0x000cd001,
/* 0x0078: nv_rd32_wait */ /* 0x007a: nv_rd32_wait */
0xc800bccf, 0xc7f104bd,
0x1bf41fcc, 0xc3f0ca00,
0x06a7f0fa, 0x00cccf01,
0x010921f5, 0xf41fccc8,
0xf840bfcf, 0xa7f0f31b,
/* 0x008d: nv_wr32 */ 0x1021f506,
0x28b7f100, 0x00f7f101,
0x06b4b607, 0x01f3f0cb,
0xb980bfd0, 0xf800ffcf,
0xc9f002ec, /* 0x009d: nv_wr32 */
0x1ec9f01f, 0x0007f100,
/* 0x00a3: nv_wr32_wait */ 0x0103f0cc,
0xcf00bcd0, 0xbd000fd0,
0xccc800bc, 0x02ecb904,
0xfa1bf41f, 0xf01fc9f0,
/* 0x00ae: watchdog_reset */ 0x07f11ec9,
0x87f100f8, 0x03f0ca00,
0x84b60430, 0x000cd001,
0x1ff9f006, /* 0x00be: nv_wr32_wait */
0xf8008fd0, 0xc7f104bd,
/* 0x00bd: watchdog_clear */ 0xc3f0ca00,
0x3087f100, 0x00cccf01,
0x0684b604, 0xf41fccc8,
0xf80080d0, 0x00f8f31b,
/* 0x00c9: wait_donez */ /* 0x00d0: wait_donez */
0xf094bd00, 0x99f094bd,
0x07f10099, 0x0007f100,
0x03f03700, 0x0203f037,
0x0009d002, 0xbd0009d0,
0x07f104bd, 0x0007f104,
0x03f00600, 0x0203f006,
0x000ad002, 0xbd000ad0,
/* 0x00e6: wait_donez_ne */ /* 0x00ed: wait_donez_ne */
0x87f104bd, 0x0087f104,
0x83f00000, 0x0183f000,
0x0088cf01, 0xff0088cf,
0xf4888aff, 0x1bf4888a,
0x94bdf31b, 0xf094bdf3,
0xf10099f0,
0xf0170007,
0x09d00203,
0xf804bd00,
/* 0x0109: wait_doneo */
0xf094bd00,
0x07f10099, 0x07f10099,
0x03f03700, 0x03f01700,
0x0009d002, 0x0009d002,
0x87f104bd, 0x00f804bd,
0x84b60818, /* 0x0110: wait_doneo */
0x008ad006,
/* 0x0124: wait_doneo_e */
0x040087f1,
0xcf0684b6,
0x8aff0088,
0xf30bf488,
0x99f094bd, 0x99f094bd,
0x0007f100, 0x0007f100,
0x0203f017, 0x0203f037,
0xbd0009d0, 0xbd0009d0,
/* 0x0147: mmctx_size */ 0x0007f104,
0xbd00f804, 0x0203f006,
/* 0x0149: nv_mmctx_size_loop */ 0xbd000ad0,
0x00e89894, /* 0x012d: wait_doneo_e */
0xb61a85b6, 0x0087f104,
0x84b60180, 0x0183f000,
0x0098bb02, 0xff0088cf,
0xb804e0b6, 0x0bf4888a,
0x1bf404ef, 0xf094bdf3,
0x029fb9eb, 0x07f10099,
/* 0x0166: mmctx_xfer */ 0x03f01700,
0x94bd00f8, 0x0009d002,
0xf10199f0, 0x00f804bd,
0xf0370007, /* 0x0150: mmctx_size */
0x09d00203, /* 0x0152: nv_mmctx_size_loop */
0xf104bd00, 0xe89894bd,
0xb6071087, 0x1a85b600,
0x94bd0684, 0xb60180b6,
0xf405bbfd, 0x98bb0284,
0x8bd0090b, 0x04e0b600,
0x0099f000, 0xf404efb8,
/* 0x018c: mmctx_base_disabled */ 0x9fb9eb1b,
0xf405eefd, /* 0x016f: mmctx_xfer */
0x8ed00c0b, 0xbd00f802,
0xc08fd080, 0x0199f094,
/* 0x019b: mmctx_multi_disabled */ 0x370007f1,
0xb70199f0, 0xd00203f0,
0xc8010080, 0x04bd0009,
0xbbfd94bd,
0x120bf405,
0xc40007f1,
0xd00103f0,
0x04bd000b,
/* 0x0197: mmctx_base_disabled */
0xfd0099f0,
0x0bf405ee,
0x0007f11e,
0x0103f0c6,
0xbd000ed0,
0x0007f104,
0x0103f0c7,
0xbd000fd0,
0x0199f004,
/* 0x01b8: mmctx_multi_disabled */
0xb600abc8,
0xb9f010b4,
0x01aec80c,
0xfd11e4b6,
0x07f105be,
0x03f0c500,
0x000bd001,
/* 0x01d6: mmctx_exec_loop */
/* 0x01d6: mmctx_wait_free */
0xe7f104bd,
0xe3f0c500,
0x00eecf01,
0xf41fe4f0,
0xce98f30b,
0x05e9fd00,
0xc80007f1,
0xd00103f0,
0x04bd000e,
0xb804c0b6,
0x1bf404cd,
0x02abc8d8,
/* 0x0207: mmctx_fini_wait */
0xf11f1bf4,
0xf0c500b7,
0xbbcf01b3,
0x1fb4f000,
0xf410b4b0,
0xa7f0f01b,
0xd021f402,
/* 0x0223: mmctx_stop */
0xc82b0ef4,
0xb4b600ab, 0xb4b600ab,
0x0cb9f010, 0x0cb9f010,
0xb601aec8, 0xf112b9f0,
0xbefd11e4, 0xf0c50007,
0x008bd005, 0x0bd00103,
/* 0x01b4: mmctx_exec_loop */ /* 0x023b: mmctx_stop_wait */
/* 0x01b4: mmctx_wait_free */ 0xf104bd00,
0xf0008ecf, 0xf0c500b7,
0x0bf41fe4, 0xbbcf01b3,
0x00ce98fa, 0x12bbc800,
0xd005e9fd, /* 0x024b: mmctx_done */
0xc0b6c08e, 0xbdf31bf4,
0x04cdb804, 0x0199f094,
0xc8e81bf4, 0x170007f1,
0x1bf402ab, 0xd00203f0,
/* 0x01d5: mmctx_fini_wait */ 0x04bd0009,
0x008bcf18, /* 0x025e: strand_wait */
0xb01fb4f0, 0xa0f900f8,
0x1bf410b4, 0xf402a7f0,
0x02a7f0f7, 0xa0fcd021,
0xf4c921f4, /* 0x026a: strand_pre */
/* 0x01ea: mmctx_stop */ 0x97f000f8,
0xabc81b0e, 0xfc07f10c,
0x10b4b600, 0x0203f04a,
0xf00cb9f0, 0xbd0009d0,
0x8bd012b9, 0x5e21f504,
/* 0x01f9: mmctx_stop_wait */ /* 0x027f: strand_post */
0x008bcf00, 0xf000f802,
0xf412bbc8, 0x07f10d97,
/* 0x0202: mmctx_done */ 0x03f04afc,
0x94bdfa1b,
0xf10199f0,
0xf0170007,
0x09d00203,
0xf804bd00,
/* 0x0215: strand_wait */
0xf0a0f900,
0x21f402a7,
0xf8a0fcc9,
/* 0x0221: strand_pre */
0xfc87f100,
0x0283f04a,
0xd00c97f0,
0x21f50089,
0x00f80215,
/* 0x0234: strand_post */
0x4afc87f1,
0xf00283f0,
0x89d00d97,
0x1521f500,
/* 0x0247: strand_set */
0xf100f802,
0xf04ffca7,
0xaba202a3,
0xc7f00500,
0x00acd00f,
0xd00bc7f0,
0x21f500bc,
0xaed00215,
0x0ac7f000,
0xf500bcd0,
0xf8021521,
/* 0x0271: strand_ctx_init */
0xf094bd00,
0x07f10399,
0x03f03700,
0x0009d002, 0x0009d002,
0x21f504bd, 0x21f504bd,
0xe7f00221, 0x00f8025e,
0x4721f503, /* 0x0294: strand_set */
0xfca7f102, 0xf10fc7f0,
0x02a3f046, 0xf04ffc07,
0x0400aba0, 0x0cd00203,
0xf040a0d0, 0xf004bd00,
0xbcd001c7, 0x07f10bc7,
0x1521f500, 0x03f04afc,
0x010c9202, 0x000cd002,
0xf000acd0, 0x07f104bd,
0xbcd002c7, 0x03f04ffc,
0x1521f500, 0x000ed002,
0x3421f502, 0xc7f004bd,
0x8087f102, 0xfc07f10a,
0x0684b608, 0x0203f04a,
0xb70089cf, 0xbd000cd0,
0x95220080, 0x5e21f504,
/* 0x02ca: ctx_init_strand_loop */ /* 0x02d3: strand_ctx_init */
0xbd00f802,
0x0399f094,
0x370007f1,
0xd00203f0,
0x04bd0009,
0x026a21f5,
0xf503e7f0,
0xbd029421,
0xfc07f1c4,
0x0203f047,
0xbd000cd0,
0x01c7f004,
0x4afc07f1,
0xd00203f0,
0x04bd000c,
0x025e21f5,
0xf1010c92,
0xf046fc07,
0x0cd00203,
0xf004bd00,
0x07f102c7,
0x03f04afc,
0x000cd002,
0x21f504bd,
0x21f5025e,
0x87f1027f,
0x83f04200,
0x0097f102,
0x0293f020,
0x950099cf,
/* 0x034a: ctx_init_strand_loop */
0x8ed008fe, 0x8ed008fe,
0x408ed000, 0x408ed000,
0xb6808acf, 0xb6808acf,
...@@ -263,198 +293,230 @@ uint32_t nvf0_grgpc_code[] = { ...@@ -263,198 +293,230 @@ uint32_t nvf0_grgpc_code[] = {
0x170007f1, 0x170007f1,
0xd00203f0, 0xd00203f0,
0x04bd0009, 0x04bd0009,
/* 0x02fe: error */ /* 0x037e: error */
0xe0f900f8, 0xe0f900f8,
0x9814e7f1, 0xf102ffb9,
0xf440e3f0, 0xf09814e7,
0xe0b78d21, 0x21f440e3,
0xf7f0041c, 0x01f7f09d,
0x8d21f401, 0xf102ffb9,
0x00f8e0fc, 0xf09c1ce7,
/* 0x0318: init */ 0x21f440e3,
0x04fe04bd, 0xf8e0fc9d,
0x0017f100, /* 0x03a1: init */
0x0227f012, 0xfe04bd00,
0xf10012d0, 0x27f00004,
0xfe047017, 0x0007f102,
0x17f10010, 0x0003f012,
0x10d00400, 0xbd0002d0,
0x0427f0c0, 0x1f17f104,
0xf40012d0, 0x0010fe05,
0x17f11031, 0x070007f1,
0x14b60608, 0xd00003f0,
0x0012cf06, 0x04bd0000,
0xf10427f0,
0xf0040007,
0x02d00003,
0xf404bd00,
0x27f11031,
0x23f08200,
0x0022cf01,
0xf00137f0, 0xf00137f0,
0x32bb1f24, 0x32bb1f24,
0x0132b604, 0x0132b604,
0x80050280, 0x80050280,
0x10b70603, 0x27f10603,
0x12cf0400, 0x23f08600,
0x04028000, 0x0022cf01,
0x0c30e7f1, 0xf1040280,
0xbd50e3f0, 0xf00c30e7,
0xbd34bd24, 0x24bd50e3,
/* 0x0371: init_unk_loop */ 0x44bd34bd,
0x6821f444, /* 0x0410: init_unk_loop */
0xf400f6b0, 0xb06821f4,
0xf7f00f0b, 0x0bf400f6,
0x04f2bb01, 0x01f7f00f,
0xb6054ffd, 0xfd04f2bb,
/* 0x0386: init_unk_next */ 0x30b6054f,
0x20b60130, /* 0x0425: init_unk_next */
0x04e0b601, 0x0120b601,
0xf40226b0, 0xb004e0b6,
/* 0x0392: init_unk_done */ 0x1bf40226,
0x0380e21b, /* 0x0431: init_unk_done */
0x08048007, 0x070380e2,
0x010027f1, 0xf1080480,
0xcf0223f0, 0xf0010027,
0x34bd0022, 0x22cf0223,
0x070047f1, 0x9534bd00,
0x950644b6, 0x07f10825,
0x45d00825, 0x03f0c000,
0x4045d000, 0x0005d001,
0x98000e98, 0x07f104bd,
0x21f5010f, 0x03f0c100,
0x2fbb0147, 0x0005d001,
0x003fbb00, 0x0e9804bd,
0x98010e98, 0x010f9800,
0x21f5020f, 0x015021f5,
0x0e980147, 0xbb002fbb,
0x00effd05, 0x0e98003f,
0xbb002ebb, 0x020f9801,
0x0e98003e, 0x015021f5,
0x030f9802, 0xfd050e98,
0x014721f5,
0xfd070e98,
0x2ebb00ef, 0x2ebb00ef,
0x003ebb00, 0x003ebb00,
0x130040b7, 0x98020e98,
0xd00235b6, 0x21f5030f,
0x25b60043, 0x0e980150,
0x0635b608, 0x00effd07,
0xb60120b6, 0xbb002ebb,
0x24b60130, 0x35b6003e,
0x0834b608, 0x0007f102,
0xf5022fb9, 0x0103f0d3,
0xbb027121, 0xbd0003d0,
0x07f1003f, 0x0825b604,
0x03f00100, 0xb60635b6,
0x0003d002, 0x30b60120,
0x24bd04bd, 0x0824b601,
0xf11f29f0, 0xb90834b6,
0xf0300007, 0x21f5022f,
0x02d00203, 0x3fbb02d3,
/* 0x0433: main */ 0x0007f100,
0x0203f001,
0xbd0003d0,
0xf024bd04,
0x07f11f29,
0x03f03000,
0x0002d002,
/* 0x04e2: main */
0x31f404bd,
0x0028f400,
0xf424d7f0,
0x01f43921,
0x04e4b0f4,
0xfe1e18f4,
0x27f00181,
0xfd20bd06,
0xe4b60412,
0x051efd01,
0xf50018fe,
0xf405d721,
/* 0x0512: main_not_ctx_xfer */
0xef94d30e,
0x01f5f010,
0x037e21f5,
/* 0x051f: ih */
0xf9c60ef4,
0x0188fe80,
0x90f980f9,
0xb0f9a0f9,
0xe0f9d0f9,
0x04bdf0f9,
0x0200a7f1,
0xcf00a3f0,
0xabc400aa,
0x2c0bf404,
0xf124d7f0,
0xf01a00e7,
0xeecf00e3,
0x00f7f100,
0x00f3f019,
0xf400ffcf,
0xe7f00421,
0x0007f101,
0x0003f01d,
0xbd000ed0,
/* 0x056d: ih_no_fifo */
0x0007f104,
0x0003f001,
0xbd000ad0,
0xfcf0fc04,
0xfcd0fce0,
0xfca0fcb0,
0xfe80fc90,
0x80fc0088,
0xf80032f4,
/* 0x0591: hub_barrier_done */
0x01f7f001,
0xbb040e98,
0xffb904fe,
0x18e7f102,
0x40e3f094,
0xf89d21f4,
/* 0x05a9: ctx_redswitch */
0x20f7f000,
0x850007f1,
0xd00103f0,
0x04bd000f,
/* 0x05bb: ctx_redswitch_delay */
0xb608e7f0,
0x1bf401e2,
0x00f5f1fd,
0x00f5f108,
0x0007f102,
0x0103f085,
0xbd000fd0,
/* 0x05d7: ctx_xfer */
0xf100f804,
0xf0810007,
0x0fd00203,
0xf404bd00, 0xf404bd00,
0x28f40031, 0x21f50711,
0x24d7f000, /* 0x05ea: ctx_xfer_not_load */
0xf43921f4, 0x21f505a9,
0xe4b0f401, 0x24bd026a,
0x1e18f404, 0x47fc07f1,
0xf00181fe, 0xd00203f0,
0x20bd0627, 0x04bd0002,
0xb60412fd, 0xb6012cf0,
0x1efd01e4, 0x07f10320,
0x0018fe05, 0x03f04afc,
0x04f721f5, 0x0002d002,
/* 0x0463: main_not_ctx_xfer */ 0xacf004bd,
0x94d30ef4, 0x02a5f001,
0xf5f010ef, 0x0000b7f1,
0xfe21f501,
0xc60ef402,
/* 0x0470: ih */
0x88fe80f9,
0xf980f901,
0xf9a0f990,
0xf9d0f9b0,
0xbdf0f9e0,
0x800acf04,
0xf404abc4,
0xb7f11d0b,
0xd7f01900,
0x40becf24,
0xf400bfcf,
0xb0b70421,
0xe7f00400,
0x00bed001,
/* 0x04a8: ih_no_fifo */
0xfc400ad0,
0xfce0fcf0,
0xfcb0fcd0,
0xfc90fca0,
0x0088fe80,
0x32f480fc,
/* 0x04c3: hub_barrier_done */
0xf001f800,
0x0e9801f7,
0x04febb04,
0x9418e7f1,
0xf440e3f0,
0x00f88d21,
/* 0x04d8: ctx_redswitch */
0x0614e7f1,
0xf006e4b6,
0xefd020f7,
0x08f7f000,
/* 0x04e8: ctx_redswitch_delay */
0xf401f2b6,
0xf7f1fd1b,
0xefd00a20,
/* 0x04f7: ctx_xfer */
0xf100f800,
0xb60a0417,
0x1fd00614,
0x0711f400,
0x04d821f5,
/* 0x0508: ctx_xfer_not_load */
0x4afc17f1,
0xf00213f0,
0x12d00c27,
0x1521f500,
0xfc27f102,
0x0223f047,
0xf00020d0,
0x20b6012c,
0x0012d003,
0xf001acf0,
0xb7f002a5,
0x50b3f000,
0xb6040c98,
0xbcbb0fc4,
0x000c9800,
0xf0010d98,
0x21f500e7,
0xacf00166,
0x00b7f101,
0x50b3f040,
0xb6040c98,
0xbcbb0fc4,
0x010c9800,
0x98020d98,
0xe7f1060f,
0x21f50800,
0xacf00166,
0x04a5f001,
0x3000b7f1,
0x9850b3f0, 0x9850b3f0,
0xc4b6040c, 0xc4b6040c,
0x00bcbb0f, 0x00bcbb0f,
0x98020c98, 0x98000c98,
0x0f98030d, 0xe7f0010d,
0x00e7f108, 0x6f21f500,
0x6621f502, 0x01acf001,
0x1521f501, 0x4000b7f1,
0x0601f402, 0x9850b3f0,
/* 0x05a3: ctx_xfer_post */ 0xc4b6040c,
0xf11412f4, 0x00bcbb0f,
0xf04afc17, 0x98010c98,
0x27f00213, 0x0f98020d,
0x0012d00d, 0x00e7f106,
0x021521f5, 0x6f21f508,
/* 0x05b4: ctx_xfer_done */ 0x01acf001,
0x04c321f5, 0xf104a5f0,
0x000000f8, 0xf03000b7,
0x0c9850b3,
0x0fc4b604,
0x9800bcbb,
0x0d98020c,
0x080f9803,
0x0200e7f1,
0x016f21f5,
0x025e21f5,
0xf40601f4,
/* 0x0686: ctx_xfer_post */
0x21f50712,
/* 0x068a: ctx_xfer_done */
0x21f5027f,
0x00f80591,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
......
...@@ -68,60 +68,57 @@ error: ...@@ -68,60 +68,57 @@ error:
// //
init: init:
clear b32 $r0 clear b32 $r0
mov $sp $r0
mov $xdbase $r0 mov $xdbase $r0
// setup stack
nv_iord($r1, NV_PGRAPH_FECS_CAPS, 0)
extr $r1 $r1 9:17
shl b32 $r1 8
mov $sp $r1
// enable fifo access // enable fifo access
mov $r1 0x1200 mov $r2 NV_PGRAPH_FECS_ACCESS_FIFO
mov $r2 2 nv_iowr(NV_PGRAPH_FECS_ACCESS, 0, $r2)
iowr I[$r1 + 0x000] $r2 // FIFO_ENABLE
// setup i0 handler, and route all interrupts to it // setup i0 handler, and route all interrupts to it
mov $r1 #ih mov $r1 #ih
mov $iv0 $r1 mov $iv0 $r1
mov $r1 0x400
iowr I[$r1 + 0x300] $r0 // INTR_DISPATCH clear b32 $r2
nv_iowr(NV_PGRAPH_FECS_INTR_ROUTE, 0, $r2)
// route HUB_CHANNEL_SWITCH to fuc interrupt 8 // route HUB_CHANNEL_SWITCH to fuc interrupt 8
mov $r3 0x404
shl b32 $r3 6
mov $r2 0x2003 // { HUB_CHANNEL_SWITCH, ZERO } -> intr 8 mov $r2 0x2003 // { HUB_CHANNEL_SWITCH, ZERO } -> intr 8
iowr I[$r3 + 0x000] $r2 nv_iowr(NV_PGRAPH_FECS_IROUTE, 0, $r2)
// not sure what these are, route them because NVIDIA does, and // not sure what these are, route them because NVIDIA does, and
// the IRQ handler will signal the host if we ever get one.. we // the IRQ handler will signal the host if we ever get one.. we
// may find out if/why we need to handle these if so.. // may find out if/why we need to handle these if so..
// //
mov $r2 0x2004 mov $r2 0x2004 // { 0x04, ZERO } -> intr 9
iowr I[$r3 + 0x004] $r2 // { 0x04, ZERO } -> intr 9 nv_iowr(NV_PGRAPH_FECS_IROUTE, 1, $r2)
mov $r2 0x200b mov $r2 0x200b // { 0x0b, ZERO } -> intr 10
iowr I[$r3 + 0x008] $r2 // { 0x0b, ZERO } -> intr 10 nv_iowr(NV_PGRAPH_FECS_IROUTE, 2, $r2)
mov $r2 0x200c mov $r2 0x200c // { 0x0c, ZERO } -> intr 15
iowr I[$r3 + 0x01c] $r2 // { 0x0c, ZERO } -> intr 15 nv_iowr(NV_PGRAPH_FECS_IROUTE, 7, $r2)
// enable all INTR_UP interrupts // enable all INTR_UP interrupts
mov $r2 0xc24 sub b32 $r3 $r0 1
shl b32 $r2 6 nv_iowr(NV_PGRAPH_FECS_INTR_UP_EN, 0, $r3)
not b32 $r3 $r0
iowr I[$r2] $r3
// enable fifo, ctxsw, 9, 10, 15 interrupts // enable fifo, ctxsw, 9, 10, 15 interrupts
mov $r2 -0x78fc // 0x8704 imm32($r2, 0x8704)
sethi $r2 0 nv_iowr(NV_PGRAPH_FECS_INTR_EN_SET, 0, $r2)
iowr I[$r1 + 0x000] $r2 // INTR_EN_SET
// fifo level triggered, rest edge // fifo level triggered, rest edge
sub b32 $r1 0x100 mov $r2 NV_PGRAPH_FECS_INTR_MODE_FIFO_LEVEL
mov $r2 4 nv_iowr(NV_PGRAPH_FECS_INTR_MODE, 0, $r2)
iowr I[$r1] $r2
// enable interrupts // enable interrupts
bset $flags ie0 bset $flags ie0
// fetch enabled GPC/ROP counts // fetch enabled GPC/ROP counts
mov $r14 -0x69fc // 0x409604 nv_rd32($r14, 0x409604)
sethi $r14 0x400000
call #nv_rd32
extr $r1 $r15 16:20 extr $r1 $r15 16:20
st b32 D[$r0 + #rop_count] $r1 st b32 D[$r0 + #rop_count] $r1
and $r15 0x1f and $r15 0x1f
...@@ -131,10 +128,8 @@ init: ...@@ -131,10 +128,8 @@ init:
mov $r1 1 mov $r1 1
shl b32 $r1 $r15 shl b32 $r1 $r15
sub b32 $r1 1 sub b32 $r1 1
mov $r2 0x40c nv_iowr(NV_PGRAPH_FECS_BAR_MASK0, 0, $r1)
shl b32 $r2 6 nv_iowr(NV_PGRAPH_FECS_BAR_MASK1, 0, $r1)
iowr I[$r2 + 0x000] $r1
iowr I[$r2 + 0x100] $r1
// context size calculation, reserve first 256 bytes for use by fuc // context size calculation, reserve first 256 bytes for use by fuc
mov $r1 256 mov $r1 256
...@@ -142,26 +137,24 @@ init: ...@@ -142,26 +137,24 @@ init:
// calculate size of mmio context data // calculate size of mmio context data
ld b32 $r14 D[$r0 + #hub_mmio_list_head] ld b32 $r14 D[$r0 + #hub_mmio_list_head]
ld b32 $r15 D[$r0 + #hub_mmio_list_tail] ld b32 $r15 D[$r0 + #hub_mmio_list_tail]
call #mmctx_size call(mmctx_size)
// set mmctx base addresses now so we don't have to do it later, // set mmctx base addresses now so we don't have to do it later,
// they don't (currently) ever change // they don't (currently) ever change
mov $r3 0x700
shl b32 $r3 6
shr b32 $r4 $r1 8 shr b32 $r4 $r1 8
iowr I[$r3 + 0x000] $r4 // MMCTX_SAVE_SWBASE nv_iowr(NV_PGRAPH_FECS_MMCTX_SAVE_SWBASE, 0, $r4)
iowr I[$r3 + 0x100] $r4 // MMCTX_LOAD_SWBASE nv_iowr(NV_PGRAPH_FECS_MMCTX_LOAD_SWBASE, 0, $r4)
add b32 $r3 0x1300 add b32 $r3 0x1300
add b32 $r1 $r15 add b32 $r1 $r15
shr b32 $r15 2 shr b32 $r15 2
iowr I[$r3 + 0x000] $r15 // MMCTX_LOAD_COUNT, wtf for?!? nv_iowr(NV_PGRAPH_FECS_MMCTX_LOAD_COUNT, 0, $r15) // wtf??
// strands, base offset needs to be aligned to 256 bytes // strands, base offset needs to be aligned to 256 bytes
shr b32 $r1 8 shr b32 $r1 8
add b32 $r1 1 add b32 $r1 1
shl b32 $r1 8 shl b32 $r1 8
mov b32 $r15 $r1 mov b32 $r15 $r1
call #strand_ctx_init call(strand_ctx_init)
add b32 $r1 $r15 add b32 $r1 $r15
// initialise each GPC in sequence by passing in the offset of its // initialise each GPC in sequence by passing in the offset of its
...@@ -173,30 +166,29 @@ init: ...@@ -173,30 +166,29 @@ init:
// in GPCn_CC_SCRATCH[1] // in GPCn_CC_SCRATCH[1]
// //
ld b32 $r3 D[$r0 + #gpc_count] ld b32 $r3 D[$r0 + #gpc_count]
mov $r4 0x2000 imm32($r4, 0x502000)
sethi $r4 0x500000
init_gpc: init_gpc:
// setup, and start GPC ucode running // setup, and start GPC ucode running
add b32 $r14 $r4 0x804 add b32 $r14 $r4 0x804
mov b32 $r15 $r1 mov b32 $r15 $r1
call #nv_wr32 // CC_SCRATCH[1] = ctx offset call(nv_wr32) // CC_SCRATCH[1] = ctx offset
add b32 $r14 $r4 0x10c add b32 $r14 $r4 0x10c
clear b32 $r15 clear b32 $r15
call #nv_wr32 call(nv_wr32)
add b32 $r14 $r4 0x104 add b32 $r14 $r4 0x104
call #nv_wr32 // ENTRY call(nv_wr32) // ENTRY
add b32 $r14 $r4 0x100 add b32 $r14 $r4 0x100
mov $r15 2 // CTRL_START_TRIGGER mov $r15 2 // CTRL_START_TRIGGER
call #nv_wr32 // CTRL call(nv_wr32) // CTRL
// wait for it to complete, and adjust context size // wait for it to complete, and adjust context size
add b32 $r14 $r4 0x800 add b32 $r14 $r4 0x800
init_gpc_wait: init_gpc_wait:
call #nv_rd32 call(nv_rd32)
xbit $r15 $r15 31 xbit $r15 $r15 31
bra e #init_gpc_wait bra e #init_gpc_wait
add b32 $r14 $r4 0x804 add b32 $r14 $r4 0x804
call #nv_rd32 call(nv_rd32)
add b32 $r1 $r15 add b32 $r1 $r15
// next! // next!
...@@ -218,17 +210,15 @@ main: ...@@ -218,17 +210,15 @@ main:
bset $flags $p0 bset $flags $p0
sleep $p0 sleep $p0
mov $r13 #cmd_queue mov $r13 #cmd_queue
call #queue_get call(queue_get)
bra $p1 #main bra $p1 #main
// context switch, requested by GPU? // context switch, requested by GPU?
cmpu b32 $r14 0x4001 cmpu b32 $r14 0x4001
bra ne #main_not_ctx_switch bra ne #main_not_ctx_switch
trace_set(T_AUTO) trace_set(T_AUTO)
mov $r1 0xb00 nv_iord($r1, NV_PGRAPH_FECS_CHAN_ADDR, 0)
shl b32 $r1 6 nv_iord($r2, NV_PGRAPH_FECS_CHAN_NEXT, 0)
iord $r2 I[$r1 + 0x100] // CHAN_NEXT
iord $r1 I[$r1 + 0x000] // CHAN_CUR
xbit $r3 $r1 31 xbit $r3 $r1 31
bra e #chsw_no_prev bra e #chsw_no_prev
...@@ -239,12 +229,12 @@ main: ...@@ -239,12 +229,12 @@ main:
trace_set(T_SAVE) trace_set(T_SAVE)
bclr $flags $p1 bclr $flags $p1
bset $flags $p2 bset $flags $p2
call #ctx_xfer call(ctx_xfer)
trace_clr(T_SAVE); trace_clr(T_SAVE);
pop $r2 pop $r2
trace_set(T_LOAD); trace_set(T_LOAD);
bset $flags $p1 bset $flags $p1
call #ctx_xfer call(ctx_xfer)
trace_clr(T_LOAD); trace_clr(T_LOAD);
bra #chsw_done bra #chsw_done
chsw_prev_no_next: chsw_prev_no_next:
...@@ -252,25 +242,21 @@ main: ...@@ -252,25 +242,21 @@ main:
mov b32 $r2 $r1 mov b32 $r2 $r1
bclr $flags $p1 bclr $flags $p1
bclr $flags $p2 bclr $flags $p2
call #ctx_xfer call(ctx_xfer)
pop $r2 pop $r2
mov $r1 0xb00 nv_iowr(NV_PGRAPH_FECS_CHAN_ADDR, 0, $r2)
shl b32 $r1 6
iowr I[$r1] $r2
bra #chsw_done bra #chsw_done
chsw_no_prev: chsw_no_prev:
xbit $r3 $r2 31 xbit $r3 $r2 31
bra e #chsw_done bra e #chsw_done
bset $flags $p1 bset $flags $p1
bclr $flags $p2 bclr $flags $p2
call #ctx_xfer call(ctx_xfer)
// ack the context switch request // ack the context switch request
chsw_done: chsw_done:
mov $r1 0xb0c mov $r2 NV_PGRAPH_FECS_CHSW_ACK
shl b32 $r1 6 nv_iowr(NV_PGRAPH_FECS_CHSW, 0, $r2)
mov $r2 1
iowr I[$r1 + 0x000] $r2 // 0x409b0c
trace_clr(T_AUTO) trace_clr(T_AUTO)
bra #main bra #main
...@@ -279,7 +265,7 @@ main: ...@@ -279,7 +265,7 @@ main:
cmpu b32 $r14 0x0001 cmpu b32 $r14 0x0001
bra ne #main_not_ctx_chan bra ne #main_not_ctx_chan
mov b32 $r2 $r15 mov b32 $r2 $r15
call #ctx_chan call(ctx_chan)
bra #main_done bra #main_done
// request to store current channel context? // request to store current channel context?
...@@ -289,14 +275,14 @@ main: ...@@ -289,14 +275,14 @@ main:
trace_set(T_SAVE) trace_set(T_SAVE)
bclr $flags $p1 bclr $flags $p1
bclr $flags $p2 bclr $flags $p2
call #ctx_xfer call(ctx_xfer)
trace_clr(T_SAVE) trace_clr(T_SAVE)
bra #main_done bra #main_done
main_not_ctx_save: main_not_ctx_save:
shl b32 $r15 $r14 16 shl b32 $r15 $r14 16
or $r15 E_BAD_COMMAND or $r15 E_BAD_COMMAND
call #error call(error)
bra #main bra #main
main_done: main_done:
...@@ -319,41 +305,38 @@ ih: ...@@ -319,41 +305,38 @@ ih:
clear b32 $r0 clear b32 $r0
// incoming fifo command? // incoming fifo command?
iord $r10 I[$r0 + 0x200] // INTR nv_iord($r10, NV_PGRAPH_FECS_INTR, 0)
and $r11 $r10 0x00000004 and $r11 $r10 NV_PGRAPH_FECS_INTR_FIFO
bra e #ih_no_fifo bra e #ih_no_fifo
// queue incoming fifo command for later processing // queue incoming fifo command for later processing
mov $r11 0x1900
mov $r13 #cmd_queue mov $r13 #cmd_queue
iord $r14 I[$r11 + 0x100] // FIFO_CMD nv_iord($r14, NV_PGRAPH_FECS_FIFO_CMD, 0)
iord $r15 I[$r11 + 0x000] // FIFO_DATA nv_iord($r15, NV_PGRAPH_FECS_FIFO_DATA, 0)
call #queue_put call(queue_put)
add b32 $r11 0x400 add b32 $r11 0x400
mov $r14 1 mov $r14 1
iowr I[$r11 + 0x000] $r14 // FIFO_ACK nv_iowr(NV_PGRAPH_FECS_FIFO_ACK, 0, $r14)
// context switch request? // context switch request?
ih_no_fifo: ih_no_fifo:
and $r11 $r10 0x00000100 and $r11 $r10 NV_PGRAPH_FECS_INTR_CHSW
bra e #ih_no_ctxsw bra e #ih_no_ctxsw
// enqueue a context switch for later processing // enqueue a context switch for later processing
mov $r13 #cmd_queue mov $r13 #cmd_queue
mov $r14 0x4001 mov $r14 0x4001
call #queue_put call(queue_put)
// anything we didn't handle, bring it to the host's attention // anything we didn't handle, bring it to the host's attention
ih_no_ctxsw: ih_no_ctxsw:
mov $r11 0x104 mov $r11 0x104 // FIFO | CHSW
not b32 $r11 not b32 $r11
and $r11 $r10 $r11 and $r11 $r10 $r11
bra e #ih_no_other bra e #ih_no_other
mov $r10 0xc1c nv_iowr(NV_PGRAPH_FECS_INTR_UP_SET, 0, $r11)
shl b32 $r10 6
iowr I[$r10] $r11 // INTR_UP_SET
// ack, and wake up main() // ack, and wake up main()
ih_no_other: ih_no_other:
iowr I[$r0 + 0x100] $r10 // INTR_ACK nv_iowr(NV_PGRAPH_FECS_INTR_ACK, 0, $r10)
pop $r15 pop $r15
pop $r14 pop $r14
...@@ -370,12 +353,10 @@ ih: ...@@ -370,12 +353,10 @@ ih:
#if CHIPSET < GK100 #if CHIPSET < GK100
// Not real sure, but, MEM_CMD 7 will hang forever if this isn't done // Not real sure, but, MEM_CMD 7 will hang forever if this isn't done
ctx_4160s: ctx_4160s:
mov $r14 0x4160
sethi $r14 0x400000
mov $r15 1 mov $r15 1
call #nv_wr32 nv_wr32(0x404160, $r15)
ctx_4160s_wait: ctx_4160s_wait:
call #nv_rd32 nv_rd32($r15, 0x404160)
xbit $r15 $r15 4 xbit $r15 $r15 4
bra e #ctx_4160s_wait bra e #ctx_4160s_wait
ret ret
...@@ -384,10 +365,8 @@ ctx_4160s: ...@@ -384,10 +365,8 @@ ctx_4160s:
// to hang with STATUS=0x00000007 until it's cleared.. fbcon can // to hang with STATUS=0x00000007 until it's cleared.. fbcon can
// still function with it set however... // still function with it set however...
ctx_4160c: ctx_4160c:
mov $r14 0x4160
sethi $r14 0x400000
clear b32 $r15 clear b32 $r15
call #nv_wr32 nv_wr32(0x404160, $r15)
ret ret
#endif #endif
...@@ -396,18 +375,14 @@ ctx_4160c: ...@@ -396,18 +375,14 @@ ctx_4160c:
// In: $r15 value to set 0x404170 to // In: $r15 value to set 0x404170 to
// //
ctx_4170s: ctx_4170s:
mov $r14 0x4170
sethi $r14 0x400000
or $r15 0x10 or $r15 0x10
call #nv_wr32 nv_wr32(0x404170, $r15)
ret ret
// Waits for a ctx_4170s() call to complete // Waits for a ctx_4170s() call to complete
// //
ctx_4170w: ctx_4170w:
mov $r14 0x4170 nv_rd32($r15, 0x404170)
sethi $r14 0x400000
call #nv_rd32
and $r15 0x10 and $r15 0x10
bra ne #ctx_4170w bra ne #ctx_4170w
ret ret
...@@ -419,16 +394,18 @@ ctx_4170w: ...@@ -419,16 +394,18 @@ ctx_4170w:
// funny things happen. // funny things happen.
// //
ctx_redswitch: ctx_redswitch:
mov $r14 0x614 mov $r14 NV_PGRAPH_FECS_RED_SWITCH_ENABLE_GPC
shl b32 $r14 6 or $r14 NV_PGRAPH_FECS_RED_SWITCH_POWER_ROP
mov $r15 0x270 or $r14 NV_PGRAPH_FECS_RED_SWITCH_POWER_GPC
iowr I[$r14] $r15 // HUB_RED_SWITCH = ENABLE_GPC, POWER_ALL or $r14 NV_PGRAPH_FECS_RED_SWITCH_POWER_MAIN
nv_iowr(NV_PGRAPH_FECS_RED_SWITCH, 0, $r14)
mov $r15 8 mov $r15 8
ctx_redswitch_delay: ctx_redswitch_delay:
sub b32 $r15 1 sub b32 $r15 1
bra ne #ctx_redswitch_delay bra ne #ctx_redswitch_delay
mov $r15 0x770 or $r14 NV_PGRAPH_FECS_RED_SWITCH_ENABLE_ROP
iowr I[$r14] $r15 // HUB_RED_SWITCH = ENABLE_ALL, POWER_ALL or $r14 NV_PGRAPH_FECS_RED_SWITCH_ENABLE_MAIN
nv_iowr(NV_PGRAPH_FECS_RED_SWITCH, 0, $r14)
ret ret
// Not a clue what this is for, except that unless the value is 0x10, the // Not a clue what this is for, except that unless the value is 0x10, the
...@@ -437,15 +414,18 @@ ctx_redswitch: ...@@ -437,15 +414,18 @@ ctx_redswitch:
// In: $r15 value to set to (0x00/0x10 are used) // In: $r15 value to set to (0x00/0x10 are used)
// //
ctx_86c: ctx_86c:
mov $r14 0x86c nv_iowr(0x40986c, 0, $r15)
shl b32 $r14 6 nv_wr32(0x408a14, $r15)
iowr I[$r14] $r15 // HUB(0x86c) = val nv_wr32(0x41a86c, $r15)
mov $r14 -0x75ec ret
sethi $r14 0x400000
call #nv_wr32 // ROP(0xa14) = val // In: $r15 NV_PGRAPH_FECS_MEM_CMD_*
mov $r14 -0x5794 ctx_mem:
sethi $r14 0x410000 nv_iowr(NV_PGRAPH_FECS_MEM_CMD, 0, $r15)
call #nv_wr32 // GPC(0x86c) = val ctx_mem_wait:
nv_iord($r15, NV_PGRAPH_FECS_MEM_CMD, 0)
or $r15 $r15
bra ne #ctx_mem_wait
ret ret
// ctx_load - load's a channel's ctxctl data, and selects its vm // ctx_load - load's a channel's ctxctl data, and selects its vm
...@@ -457,23 +437,14 @@ ctx_load: ...@@ -457,23 +437,14 @@ ctx_load:
// switch to channel, somewhat magic in parts.. // switch to channel, somewhat magic in parts..
mov $r10 12 // DONE_UNK12 mov $r10 12 // DONE_UNK12
call #wait_donez call(wait_donez)
mov $r1 0xa24 clear b32 $r15
shl b32 $r1 6 nv_iowr(0x409a24, 0, $r15)
iowr I[$r1 + 0x000] $r0 // 0x409a24 nv_iowr(NV_PGRAPH_FECS_CHAN_NEXT, 0, $r2)
mov $r3 0xb00 nv_iowr(NV_PGRAPH_FECS_MEM_CHAN, 0, $r2)
shl b32 $r3 6 mov $r15 NV_PGRAPH_FECS_MEM_CMD_LOAD_CHAN
iowr I[$r3 + 0x100] $r2 // CHAN_NEXT call(ctx_mem)
mov $r1 0xa0c nv_iowr(NV_PGRAPH_FECS_CHAN_ADDR, 0, $r2)
shl b32 $r1 6
mov $r4 7
iowr I[$r1 + 0x000] $r2 // MEM_CHAN
iowr I[$r1 + 0x100] $r4 // MEM_CMD
ctx_chan_wait_0:
iord $r4 I[$r1 + 0x100]
and $r4 0x1f
bra ne #ctx_chan_wait_0
iowr I[$r3 + 0x000] $r2 // CHAN_CUR
// load channel header, fetch PGRAPH context pointer // load channel header, fetch PGRAPH context pointer
mov $xtargets $r0 mov $xtargets $r0
...@@ -482,14 +453,10 @@ ctx_load: ...@@ -482,14 +453,10 @@ ctx_load:
add b32 $r2 2 add b32 $r2 2
trace_set(T_LCHAN) trace_set(T_LCHAN)
mov $r1 0xa04 nv_iowr(NV_PGRAPH_FECS_MEM_BASE, 0, $r2)
shl b32 $r1 6 imm32($r2, NV_PGRAPH_FECS_MEM_TARGET_UNK31)
iowr I[$r1 + 0x000] $r2 // MEM_BASE or $r2 NV_PGRAPH_FECS_MEM_TARGET_AS_VRAM
mov $r1 0xa20 nv_iowr(NV_PGRAPH_FECS_MEM_TARGET, 0, $r2)
shl b32 $r1 6
mov $r2 0x0002
sethi $r2 0x80000000
iowr I[$r1 + 0x000] $r2 // MEM_TARGET = vram
mov $r1 0x10 // chan + 0x0210 mov $r1 0x10 // chan + 0x0210
mov $r2 #xfer_data mov $r2 #xfer_data
sethi $r2 0x00020000 // 16 bytes sethi $r2 0x00020000 // 16 bytes
...@@ -507,13 +474,9 @@ ctx_load: ...@@ -507,13 +474,9 @@ ctx_load:
// set transfer base to start of context, and fetch context header // set transfer base to start of context, and fetch context header
trace_set(T_LCTXH) trace_set(T_LCTXH)
mov $r2 0xa04 nv_iowr(NV_PGRAPH_FECS_MEM_BASE, 0, $r1)
shl b32 $r2 6 mov $r2 NV_PGRAPH_FECS_MEM_TARGET_AS_VM
iowr I[$r2 + 0x000] $r1 // MEM_BASE nv_iowr(NV_PGRAPH_FECS_MEM_TARGET, 0, $r2)
mov $r2 1
mov $r1 0xa20
shl b32 $r1 6
iowr I[$r1 + 0x000] $r2 // MEM_TARGET = vm
mov $r1 #chan_data mov $r1 #chan_data
sethi $r1 0x00060000 // 256 bytes sethi $r1 0x00060000 // 256 bytes
xdld $r0 $r1 xdld $r0 $r1
...@@ -532,21 +495,15 @@ ctx_load: ...@@ -532,21 +495,15 @@ ctx_load:
// //
ctx_chan: ctx_chan:
#if CHIPSET < GK100 #if CHIPSET < GK100
call #ctx_4160s call(ctx_4160s)
#endif #endif
call #ctx_load call(ctx_load)
mov $r10 12 // DONE_UNK12 mov $r10 12 // DONE_UNK12
call #wait_donez call(wait_donez)
mov $r1 0xa10 mov $r15 5 // MEM_CMD 5 ???
shl b32 $r1 6 call(ctx_mem)
mov $r2 5
iowr I[$r1 + 0x000] $r2 // MEM_CMD = 5 (???)
ctx_chan_wait:
iord $r2 I[$r1 + 0x000]
or $r2 $r2
bra ne #ctx_chan_wait
#if CHIPSET < GK100 #if CHIPSET < GK100
call #ctx_4160c call(ctx_4160c)
#endif #endif
ret ret
...@@ -562,9 +519,7 @@ ctx_chan: ...@@ -562,9 +519,7 @@ ctx_chan:
ctx_mmio_exec: ctx_mmio_exec:
// set transfer base to be the mmio list // set transfer base to be the mmio list
ld b32 $r3 D[$r0 + #chan_mmio_address] ld b32 $r3 D[$r0 + #chan_mmio_address]
mov $r2 0xa04 nv_iowr(NV_PGRAPH_FECS_MEM_BASE, 0, $r3)
shl b32 $r2 6
iowr I[$r2 + 0x000] $r3 // MEM_BASE
clear b32 $r3 clear b32 $r3
ctx_mmio_loop: ctx_mmio_loop:
...@@ -580,7 +535,7 @@ ctx_mmio_exec: ...@@ -580,7 +535,7 @@ ctx_mmio_exec:
ctx_mmio_pull: ctx_mmio_pull:
ld b32 $r14 D[$r4 + #xfer_data + 0x00] ld b32 $r14 D[$r4 + #xfer_data + 0x00]
ld b32 $r15 D[$r4 + #xfer_data + 0x04] ld b32 $r15 D[$r4 + #xfer_data + 0x04]
call #nv_wr32 call(nv_wr32)
// next! // next!
add b32 $r3 8 add b32 $r3 8
...@@ -590,7 +545,7 @@ ctx_mmio_exec: ...@@ -590,7 +545,7 @@ ctx_mmio_exec:
// set transfer base back to the current context // set transfer base back to the current context
ctx_mmio_done: ctx_mmio_done:
ld b32 $r3 D[$r0 + #ctx_current] ld b32 $r3 D[$r0 + #ctx_current]
iowr I[$r2 + 0x000] $r3 // MEM_BASE nv_iowr(NV_PGRAPH_FECS_MEM_BASE, 0, $r3)
// disable the mmio list now, we don't need/want to execute it again // disable the mmio list now, we don't need/want to execute it again
st b32 D[$r0 + #chan_mmio_count] $r0 st b32 D[$r0 + #chan_mmio_count] $r0
...@@ -610,12 +565,10 @@ ctx_mmio_exec: ...@@ -610,12 +565,10 @@ ctx_mmio_exec:
// //
ctx_xfer: ctx_xfer:
// according to mwk, some kind of wait for idle // according to mwk, some kind of wait for idle
mov $r15 0xc00
shl b32 $r15 6
mov $r14 4 mov $r14 4
iowr I[$r15 + 0x200] $r14 nv_iowr(0x409c08, 0, $r14)
ctx_xfer_idle: ctx_xfer_idle:
iord $r14 I[$r15 + 0x000] nv_iord($r14, 0x409c00, 0)
and $r14 0x2000 and $r14 0x2000
bra ne #ctx_xfer_idle bra ne #ctx_xfer_idle
...@@ -623,50 +576,42 @@ ctx_xfer: ...@@ -623,50 +576,42 @@ ctx_xfer:
bra $p2 #ctx_xfer_pre_load bra $p2 #ctx_xfer_pre_load
ctx_xfer_pre: ctx_xfer_pre:
mov $r15 0x10 mov $r15 0x10
call #ctx_86c call(ctx_86c)
#if CHIPSET < GK100 #if CHIPSET < GK100
call #ctx_4160s call(ctx_4160s)
#endif #endif
bra not $p1 #ctx_xfer_exec bra not $p1 #ctx_xfer_exec
ctx_xfer_pre_load: ctx_xfer_pre_load:
mov $r15 2 mov $r15 2
call #ctx_4170s call(ctx_4170s)
call #ctx_4170w call(ctx_4170w)
call #ctx_redswitch call(ctx_redswitch)
clear b32 $r15 clear b32 $r15
call #ctx_4170s call(ctx_4170s)
call #ctx_load call(ctx_load)
// fetch context pointer, and initiate xfer on all GPCs // fetch context pointer, and initiate xfer on all GPCs
ctx_xfer_exec: ctx_xfer_exec:
ld b32 $r1 D[$r0 + #ctx_current] ld b32 $r1 D[$r0 + #ctx_current]
mov $r2 0x414
shl b32 $r2 6 clear b32 $r2
iowr I[$r2 + 0x000] $r0 // BAR_STATUS = reset nv_iowr(NV_PGRAPH_FECS_BAR, 0, $r2)
mov $r14 -0x5b00
sethi $r14 0x410000 nv_wr32(0x41a500, $r1) // GPC_BCAST_WRCMD_DATA = ctx pointer
mov b32 $r15 $r1
call #nv_wr32 // GPC_BCAST_WRCMD_DATA = ctx pointer
add b32 $r14 4
xbit $r15 $flags $p1 xbit $r15 $flags $p1
xbit $r2 $flags $p2 xbit $r2 $flags $p2
shl b32 $r2 1 shl b32 $r2 1
or $r15 $r2 or $r15 $r2
call #nv_wr32 // GPC_BCAST_WRCMD_CMD = GPC_XFER(type) nv_wr32(0x41a504, $r15) // GPC_BCAST_WRCMD_CMD = GPC_XFER(type)
// strands // strands
mov $r1 0x4afc call(strand_pre)
sethi $r1 0x20000 clear b32 $r2
mov $r2 0xc nv_iowr(NV_PGRAPH_FECS_STRAND_SELECT, 0x3f, $r2)
iowr I[$r1] $r2 // STRAND_CMD(0x3f) = 0x0c xbit $r2 $flags $p1 // SAVE/LOAD
call #strand_wait add b32 $r2 NV_PGRAPH_FECS_STRAND_CMD_SAVE
mov $r2 0x47fc nv_iowr(NV_PGRAPH_FECS_STRAND_CMD, 0x3f, $r2)
sethi $r2 0x20000
iowr I[$r2] $r0 // STRAND_FIRST_GENE(0x3f) = 0x00
xbit $r2 $flags $p1
add b32 $r2 3
iowr I[$r1] $r2 // STRAND_CMD(0x3f) = 0x03/0x04 (SAVE/LOAD)
// mmio context // mmio context
xbit $r10 $flags $p1 // direction xbit $r10 $flags $p1 // direction
...@@ -675,48 +620,42 @@ ctx_xfer: ...@@ -675,48 +620,42 @@ ctx_xfer:
ld b32 $r12 D[$r0 + #hub_mmio_list_head] ld b32 $r12 D[$r0 + #hub_mmio_list_head]
ld b32 $r13 D[$r0 + #hub_mmio_list_tail] ld b32 $r13 D[$r0 + #hub_mmio_list_tail]
mov $r14 0 // not multi mov $r14 0 // not multi
call #mmctx_xfer call(mmctx_xfer)
// wait for GPCs to all complete // wait for GPCs to all complete
mov $r10 8 // DONE_BAR mov $r10 8 // DONE_BAR
call #wait_doneo call(wait_doneo)
// wait for strand xfer to complete // wait for strand xfer to complete
call #strand_wait call(strand_wait)
// post-op // post-op
bra $p1 #ctx_xfer_post bra $p1 #ctx_xfer_post
mov $r10 12 // DONE_UNK12 mov $r10 12 // DONE_UNK12
call #wait_donez call(wait_donez)
mov $r1 0xa10 mov $r15 5 // MEM_CMD 5 ???
shl b32 $r1 6 call(ctx_mem)
mov $r2 5
iowr I[$r1] $r2 // MEM_CMD
ctx_xfer_post_save_wait:
iord $r2 I[$r1]
or $r2 $r2
bra ne #ctx_xfer_post_save_wait
bra $p2 #ctx_xfer_done bra $p2 #ctx_xfer_done
ctx_xfer_post: ctx_xfer_post:
mov $r15 2 mov $r15 2
call #ctx_4170s call(ctx_4170s)
clear b32 $r15 clear b32 $r15
call #ctx_86c call(ctx_86c)
call #strand_post call(strand_post)
call #ctx_4170w call(ctx_4170w)
clear b32 $r15 clear b32 $r15
call #ctx_4170s call(ctx_4170s)
bra not $p1 #ctx_xfer_no_post_mmio bra not $p1 #ctx_xfer_no_post_mmio
ld b32 $r1 D[$r0 + #chan_mmio_count] ld b32 $r1 D[$r0 + #chan_mmio_count]
or $r1 $r1 or $r1 $r1
bra e #ctx_xfer_no_post_mmio bra e #ctx_xfer_no_post_mmio
call #ctx_mmio_exec call(ctx_mmio_exec)
ctx_xfer_no_post_mmio: ctx_xfer_no_post_mmio:
#if CHIPSET < GK100 #if CHIPSET < GK100
call #ctx_4160c call(ctx_4160c)
#endif #endif
ctx_xfer_done: ctx_xfer_done:
......
...@@ -206,14 +206,14 @@ uint32_t nvc0_grhub_data[] = { ...@@ -206,14 +206,14 @@ uint32_t nvc0_grhub_data[] = {
}; };
uint32_t nvc0_grhub_code[] = { uint32_t nvc0_grhub_code[] = {
0x031b0ef5, 0x039b0ef5,
/* 0x0004: queue_put */ /* 0x0004: queue_put */
0x9800d898, 0x9800d898,
0x86f001d9, 0x86f001d9,
0x0489b808, 0x0489b808,
0xf00c1bf4, 0xf00c1bf4,
0x21f502f7, 0x21f502f7,
0x00f802fe, 0x00f8037e,
/* 0x001c: queue_put_next */ /* 0x001c: queue_put_next */
0xb60798c4, 0xb60798c4,
0x8dbb0384, 0x8dbb0384,
...@@ -237,184 +237,214 @@ uint32_t nvc0_grhub_code[] = { ...@@ -237,184 +237,214 @@ uint32_t nvc0_grhub_code[] = {
/* 0x0066: queue_get_done */ /* 0x0066: queue_get_done */
0x00f80132, 0x00f80132,
/* 0x0068: nv_rd32 */ /* 0x0068: nv_rd32 */
0x0728b7f1, 0xf002ecb9,
0xb906b4b6, 0x07f11fc9,
0xc9f002ec, 0x03f0ca00,
0x00bcd01f, 0x000cd001,
/* 0x0078: nv_rd32_wait */ /* 0x007a: nv_rd32_wait */
0xc800bccf, 0xc7f104bd,
0x1bf41fcc, 0xc3f0ca00,
0x06a7f0fa, 0x00cccf01,
0x010921f5, 0xf41fccc8,
0xf840bfcf, 0xa7f0f31b,
/* 0x008d: nv_wr32 */ 0x1021f506,
0x28b7f100, 0x00f7f101,
0x06b4b607, 0x01f3f0cb,
0xb980bfd0, 0xf800ffcf,
0xc9f002ec, /* 0x009d: nv_wr32 */
0x1ec9f01f, 0x0007f100,
/* 0x00a3: nv_wr32_wait */ 0x0103f0cc,
0xcf00bcd0, 0xbd000fd0,
0xccc800bc, 0x02ecb904,
0xfa1bf41f, 0xf01fc9f0,
/* 0x00ae: watchdog_reset */ 0x07f11ec9,
0x87f100f8, 0x03f0ca00,
0x84b60430, 0x000cd001,
0x1ff9f006, /* 0x00be: nv_wr32_wait */
0xf8008fd0, 0xc7f104bd,
/* 0x00bd: watchdog_clear */ 0xc3f0ca00,
0x3087f100, 0x00cccf01,
0x0684b604, 0xf41fccc8,
0xf80080d0, 0x00f8f31b,
/* 0x00c9: wait_donez */ /* 0x00d0: wait_donez */
0xf094bd00, 0x99f094bd,
0x07f10099, 0x0007f100,
0x03f00f00, 0x0203f00f,
0x0009d002, 0xbd0009d0,
0x07f104bd, 0x0007f104,
0x03f00600, 0x0203f006,
0x000ad002, 0xbd000ad0,
/* 0x00e6: wait_donez_ne */ /* 0x00ed: wait_donez_ne */
0x87f104bd, 0x0087f104,
0x83f00000, 0x0183f000,
0x0088cf01, 0xff0088cf,
0xf4888aff, 0x1bf4888a,
0x94bdf31b, 0xf094bdf3,
0xf10099f0,
0xf0170007,
0x09d00203,
0xf804bd00,
/* 0x0109: wait_doneo */
0xf094bd00,
0x07f10099, 0x07f10099,
0x03f00f00, 0x03f01700,
0x0009d002, 0x0009d002,
0x87f104bd, 0x00f804bd,
0x84b60818, /* 0x0110: wait_doneo */
0x008ad006,
/* 0x0124: wait_doneo_e */
0x040087f1,
0xcf0684b6,
0x8aff0088,
0xf30bf488,
0x99f094bd, 0x99f094bd,
0x0007f100, 0x0007f100,
0x0203f017, 0x0203f00f,
0xbd0009d0, 0xbd0009d0,
/* 0x0147: mmctx_size */ 0x0007f104,
0xbd00f804, 0x0203f006,
/* 0x0149: nv_mmctx_size_loop */ 0xbd000ad0,
0x00e89894, /* 0x012d: wait_doneo_e */
0xb61a85b6, 0x0087f104,
0x84b60180, 0x0183f000,
0x0098bb02, 0xff0088cf,
0xb804e0b6, 0x0bf4888a,
0x1bf404ef, 0xf094bdf3,
0x029fb9eb, 0x07f10099,
/* 0x0166: mmctx_xfer */ 0x03f01700,
0x94bd00f8, 0x0009d002,
0xf10199f0, 0x00f804bd,
0xf00f0007, /* 0x0150: mmctx_size */
0x09d00203, /* 0x0152: nv_mmctx_size_loop */
0xf104bd00, 0xe89894bd,
0xb6071087, 0x1a85b600,
0x94bd0684, 0xb60180b6,
0xf405bbfd, 0x98bb0284,
0x8bd0090b, 0x04e0b600,
0x0099f000, 0xf404efb8,
/* 0x018c: mmctx_base_disabled */ 0x9fb9eb1b,
0xf405eefd, /* 0x016f: mmctx_xfer */
0x8ed00c0b, 0xbd00f802,
0xc08fd080, 0x0199f094,
/* 0x019b: mmctx_multi_disabled */ 0x0f0007f1,
0xb70199f0, 0xd00203f0,
0xc8010080, 0x04bd0009,
0xbbfd94bd,
0x120bf405,
0xc40007f1,
0xd00103f0,
0x04bd000b,
/* 0x0197: mmctx_base_disabled */
0xfd0099f0,
0x0bf405ee,
0x0007f11e,
0x0103f0c6,
0xbd000ed0,
0x0007f104,
0x0103f0c7,
0xbd000fd0,
0x0199f004,
/* 0x01b8: mmctx_multi_disabled */
0xb600abc8,
0xb9f010b4,
0x01aec80c,
0xfd11e4b6,
0x07f105be,
0x03f0c500,
0x000bd001,
/* 0x01d6: mmctx_exec_loop */
/* 0x01d6: mmctx_wait_free */
0xe7f104bd,
0xe3f0c500,
0x00eecf01,
0xf41fe4f0,
0xce98f30b,
0x05e9fd00,
0xc80007f1,
0xd00103f0,
0x04bd000e,
0xb804c0b6,
0x1bf404cd,
0x02abc8d8,
/* 0x0207: mmctx_fini_wait */
0xf11f1bf4,
0xf0c500b7,
0xbbcf01b3,
0x1fb4f000,
0xf410b4b0,
0xa7f0f01b,
0xd021f402,
/* 0x0223: mmctx_stop */
0xc82b0ef4,
0xb4b600ab, 0xb4b600ab,
0x0cb9f010, 0x0cb9f010,
0xb601aec8, 0xf112b9f0,
0xbefd11e4, 0xf0c50007,
0x008bd005, 0x0bd00103,
/* 0x01b4: mmctx_exec_loop */ /* 0x023b: mmctx_stop_wait */
/* 0x01b4: mmctx_wait_free */ 0xf104bd00,
0xf0008ecf, 0xf0c500b7,
0x0bf41fe4, 0xbbcf01b3,
0x00ce98fa, 0x12bbc800,
0xd005e9fd, /* 0x024b: mmctx_done */
0xc0b6c08e, 0xbdf31bf4,
0x04cdb804, 0x0199f094,
0xc8e81bf4, 0x170007f1,
0x1bf402ab, 0xd00203f0,
/* 0x01d5: mmctx_fini_wait */ 0x04bd0009,
0x008bcf18, /* 0x025e: strand_wait */
0xb01fb4f0, 0xa0f900f8,
0x1bf410b4, 0xf402a7f0,
0x02a7f0f7, 0xa0fcd021,
0xf4c921f4, /* 0x026a: strand_pre */
/* 0x01ea: mmctx_stop */ 0x97f000f8,
0xabc81b0e, 0xfc07f10c,
0x10b4b600, 0x0203f04a,
0xf00cb9f0, 0xbd0009d0,
0x8bd012b9, 0x5e21f504,
/* 0x01f9: mmctx_stop_wait */ /* 0x027f: strand_post */
0x008bcf00, 0xf000f802,
0xf412bbc8, 0x07f10d97,
/* 0x0202: mmctx_done */ 0x03f04afc,
0x94bdfa1b,
0xf10199f0,
0xf0170007,
0x09d00203,
0xf804bd00,
/* 0x0215: strand_wait */
0xf0a0f900,
0x21f402a7,
0xf8a0fcc9,
/* 0x0221: strand_pre */
0xfc87f100,
0x0283f04a,
0xd00c97f0,
0x21f50089,
0x00f80215,
/* 0x0234: strand_post */
0x4afc87f1,
0xf00283f0,
0x89d00d97,
0x1521f500,
/* 0x0247: strand_set */
0xf100f802,
0xf04ffca7,
0xaba202a3,
0xc7f00500,
0x00acd00f,
0xd00bc7f0,
0x21f500bc,
0xaed00215,
0x0ac7f000,
0xf500bcd0,
0xf8021521,
/* 0x0271: strand_ctx_init */
0xf094bd00,
0x07f10399,
0x03f00f00,
0x0009d002, 0x0009d002,
0x21f504bd, 0x21f504bd,
0xe7f00221, 0x00f8025e,
0x4721f503, /* 0x0294: strand_set */
0xfca7f102, 0xf10fc7f0,
0x02a3f046, 0xf04ffc07,
0x0400aba0, 0x0cd00203,
0xf040a0d0, 0xf004bd00,
0xbcd001c7, 0x07f10bc7,
0x1521f500, 0x03f04afc,
0x010c9202, 0x000cd002,
0xf000acd0, 0x07f104bd,
0xbcd002c7, 0x03f04ffc,
0x1521f500, 0x000ed002,
0x3421f502, 0xc7f004bd,
0x8087f102, 0xfc07f10a,
0x0684b608, 0x0203f04a,
0xb70089cf, 0xbd000cd0,
0x95220080, 0x5e21f504,
/* 0x02ca: ctx_init_strand_loop */ /* 0x02d3: strand_ctx_init */
0xbd00f802,
0x0399f094,
0x0f0007f1,
0xd00203f0,
0x04bd0009,
0x026a21f5,
0xf503e7f0,
0xbd029421,
0xfc07f1c4,
0x0203f047,
0xbd000cd0,
0x01c7f004,
0x4afc07f1,
0xd00203f0,
0x04bd000c,
0x025e21f5,
0xf1010c92,
0xf046fc07,
0x0cd00203,
0xf004bd00,
0x07f102c7,
0x03f04afc,
0x000cd002,
0x21f504bd,
0x21f5025e,
0x87f1027f,
0x83f04200,
0x0097f102,
0x0293f020,
0x950099cf,
/* 0x034a: ctx_init_strand_loop */
0x8ed008fe, 0x8ed008fe,
0x408ed000, 0x408ed000,
0xb6808acf, 0xb6808acf,
...@@ -428,7 +458,7 @@ uint32_t nvc0_grhub_code[] = { ...@@ -428,7 +458,7 @@ uint32_t nvc0_grhub_code[] = {
0x170007f1, 0x170007f1,
0xd00203f0, 0xd00203f0,
0x04bd0009, 0x04bd0009,
/* 0x02fe: error */ /* 0x037e: error */
0x07f100f8, 0x07f100f8,
0x03f00500, 0x03f00500,
0x000fd002, 0x000fd002,
...@@ -436,74 +466,101 @@ uint32_t nvc0_grhub_code[] = { ...@@ -436,74 +466,101 @@ uint32_t nvc0_grhub_code[] = {
0x0007f101, 0x0007f101,
0x0303f007, 0x0303f007,
0xbd000fd0, 0xbd000fd0,
/* 0x031b: init */ /* 0x039b: init */
0xbd00f804, 0xbd00f804,
0x0004fe04, 0x0007fe04,
0xf10007fe, 0x420017f1,
0xf0120017, 0xcf0013f0,
0x12d00227, 0x11e70011,
0xb117f100, 0x14b60109,
0x0010fe05, 0x0014fe08,
0x040017f1, 0xf10227f0,
0xf1c010d0, 0xf0120007,
0xb6040437, 0x02d00003,
0x27f10634, 0xf104bd00,
0x32d02003, 0xfe06a817,
0x0427f100, 0x24bd0010,
0x0132d020, 0x070007f1,
0xd00003f0,
0x04bd0002,
0x200327f1,
0x010007f1,
0xd00103f0,
0x04bd0002,
0x200427f1,
0x010407f1,
0xd00103f0,
0x04bd0002,
0x200b27f1, 0x200b27f1,
0xf10232d0, 0x010807f1,
0xd0200c27, 0xd00103f0,
0x27f10732, 0x04bd0002,
0x24b60c24, 0x200c27f1,
0x0003b906, 0x011c07f1,
0xf10023d0, 0xd00103f0,
0x04bd0002,
0xf1010392,
0xf0090007,
0x03d00303,
0xf104bd00,
0xf0870427, 0xf0870427,
0x12d00023, 0x07f10023,
0x0012b700, 0x03f00400,
0x0427f001, 0x0002d000,
0xf40012d0, 0x27f004bd,
0xe7f11031, 0x0007f104,
0xe3f09604, 0x0003f003,
0x6821f440, 0xbd0002d0,
0x8090f1c7, 0x1031f404,
0xf4f00301, 0x9604e7f1,
0x020f801f, 0xf440e3f0,
0xbb0117f0, 0xfeb96821,
0x12b6041f, 0x90f1c702,
0x0c27f101, 0xf0030180,
0x0624b604, 0x0f801ff4,
0xd00021d0, 0x0117f002,
0x17f14021, 0xb6041fbb,
0x07f10112,
0x03f00300,
0x0001d001,
0x07f104bd,
0x03f00400,
0x0001d001,
0x17f104bd,
0x0e980100, 0x0e980100,
0x010f9800, 0x010f9800,
0x014721f5, 0x015021f5,
0x070037f1, 0xf1081495,
0x950634b6, 0xf0c00007,
0x34d00814, 0x04d00103,
0x4034d000, 0xf104bd00,
0x130030b7, 0xf0c10007,
0xb6001fbb, 0x04d00103,
0x3fd002f5, 0xb704bd00,
0x0815b600, 0xbb130030,
0xf5b6001f,
0x0007f102,
0x0103f0d3,
0xbd000fd0,
0x0815b604,
0xb60110b6, 0xb60110b6,
0x1fb90814, 0x1fb90814,
0x7121f502, 0xd321f502,
0x001fbb02, 0x001fbb02,
0xf1020398, 0xf1020398,
0xf0200047, 0xf0200047,
/* 0x03f6: init_gpc */ /* 0x04e2: init_gpc */
0x4ea05043, 0x4ea05043,
0x1fb90804, 0x1fb90804,
0x8d21f402, 0x9d21f402,
0x010c4ea0, 0x010c4ea0,
0x21f4f4bd, 0x21f4f4bd,
0x044ea08d, 0x044ea09d,
0x8d21f401, 0x9d21f401,
0x01004ea0, 0x01004ea0,
0xf402f7f0, 0xf402f7f0,
0x4ea08d21, 0x4ea09d21,
/* 0x041e: init_gpc_wait */ /* 0x050a: init_gpc_wait */
0x21f40800, 0x21f40800,
0x1fffc868, 0x1fffc868,
0xa0fa0bf4, 0xa0fa0bf4,
...@@ -519,390 +576,394 @@ uint32_t nvc0_grhub_code[] = { ...@@ -519,390 +576,394 @@ uint32_t nvc0_grhub_code[] = {
0x080007f1, 0x080007f1,
0xd00203f0, 0xd00203f0,
0x04bd0001, 0x04bd0001,
/* 0x0458: main */ /* 0x0544: main */
0xf40031f4, 0xf40031f4,
0xd7f00028, 0xd7f00028,
0x3921f410, 0x3921f410,
0xb1f401f4, 0xb1f401f4,
0xf54001e4, 0xf54001e4,
0xbd00de1b, 0xbd00e91b,
0x0499f094, 0x0499f094,
0x0f0007f1, 0x0f0007f1,
0xd00203f0, 0xd00203f0,
0x04bd0009, 0x04bd0009,
0x0b0017f1, 0xc00017f1,
0xcf0614b6, 0xcf0213f0,
0x11cf4012, 0x27f10011,
0x1f13c800, 0x23f0c100,
0x00870bf5, 0x0022cf02,
0xf41f23c8, 0xf51f13c8,
0x20f9620b, 0xc800890b,
0xbd0212b9, 0x0bf41f23,
0x0799f094, 0xb920f962,
0x0f0007f1, 0x94bd0212,
0xd00203f0,
0x04bd0009,
0xf40132f4,
0x21f50231,
0x94bd082f,
0xf10799f0, 0xf10799f0,
0xf0170007, 0xf00f0007,
0x09d00203, 0x09d00203,
0xfc04bd00, 0xf404bd00,
0xf094bd20, 0x31f40132,
0x07f10699, 0xb721f502,
0x03f00f00, 0xf094bd09,
0x0009d002, 0x07f10799,
0x31f404bd,
0x2f21f501,
0xf094bd08,
0x07f10699,
0x03f01700, 0x03f01700,
0x0009d002, 0x0009d002,
0x0ef404bd, 0x20fc04bd,
/* 0x04f9: chsw_prev_no_next */
0xb920f931,
0x32f40212,
0x0232f401,
0x082f21f5,
0x17f120fc,
0x14b60b00,
0x0012d006,
/* 0x0517: chsw_no_prev */
0xc8130ef4,
0x0bf41f23,
0x0131f40d,
0xf50232f4,
/* 0x0527: chsw_done */
0xf1082f21,
0xb60b0c17,
0x27f00614,
0x0012d001,
0x99f094bd, 0x99f094bd,
0x0007f104, 0x0007f106,
0x0203f00f,
0xbd0009d0,
0x0131f404,
0x09b721f5,
0x99f094bd,
0x0007f106,
0x0203f017, 0x0203f017,
0xbd0009d0, 0xbd0009d0,
0x130ef504, 0x330ef404,
/* 0x0549: main_not_ctx_switch */ /* 0x05ec: chsw_prev_no_next */
0x01e4b0ff, 0x12b920f9,
0xb90d1bf4, 0x0132f402,
0x21f502f2, 0xf50232f4,
0x0ef407bb, 0xfc09b721,
/* 0x0559: main_not_ctx_chan */ 0x0007f120,
0x02e4b046, 0x0203f0c0,
0xbd321bf4, 0xbd0002d0,
0x0799f094, 0x130ef404,
0x0f0007f1, /* 0x060c: chsw_no_prev */
0xf41f23c8,
0x31f40d0b,
0x0232f401,
0x09b721f5,
/* 0x061c: chsw_done */
0xf10127f0,
0xf0c30007,
0x02d00203,
0xbd04bd00,
0x0499f094,
0x170007f1,
0xd00203f0, 0xd00203f0,
0x04bd0009, 0x04bd0009,
0xf40132f4, 0xff080ef5,
0x21f50232, /* 0x0640: main_not_ctx_switch */
0x94bd082f, 0xf401e4b0,
0xf2b90d1b,
0x4021f502,
0x460ef409,
/* 0x0650: main_not_ctx_chan */
0xf402e4b0,
0x94bd321b,
0xf10799f0, 0xf10799f0,
0xf0170007, 0xf00f0007,
0x09d00203, 0x09d00203,
0xf404bd00, 0xf404bd00,
/* 0x058e: main_not_ctx_save */ 0x32f40132,
0xef94110e, 0xb721f502,
0x01f5f010, 0xf094bd09,
0x02fe21f5, 0x07f10799,
0xfec00ef5, 0x03f01700,
/* 0x059c: main_done */ 0x0009d002,
0x29f024bd, 0x0ef404bd,
0x0007f11f, /* 0x0685: main_not_ctx_save */
0x0203f008, 0x10ef9411,
0xbd0002d0, 0xf501f5f0,
0xab0ef504, 0xf5037e21,
/* 0x05b1: ih */ /* 0x0693: main_done */
0xfe80f9fe, 0xbdfeb50e,
0x80f90188, 0x1f29f024,
0xa0f990f9, 0x080007f1,
0xd0f9b0f9, 0xd00203f0,
0xf0f9e0f9, 0x04bd0002,
0x0acf04bd, 0xfea00ef5,
0x04abc480, /* 0x06a8: ih */
0xf11d0bf4, 0x88fe80f9,
0xf01900b7, 0xf980f901,
0xbecf10d7, 0xf9a0f990,
0x00bfcf40, 0xf9d0f9b0,
0xbdf0f9e0,
0x00a7f104,
0x00a3f002,
0xc400aacf,
0x0bf404ab,
0x10d7f030,
0x1a00e7f1,
0xcf00e3f0,
0xf7f100ee,
0xf3f01900,
0x00ffcf00,
0xb70421f4, 0xb70421f4,
0xf00400b0, 0xf00400b0,
0xbed001e7, 0x07f101e7,
/* 0x05e9: ih_no_fifo */ 0x03f01d00,
0x00abe400, 0x000ed000,
0x0d0bf401, /* 0x06fa: ih_no_fifo */
0xf110d7f0, 0xabe404bd,
0xf44001e7, 0x0bf40100,
/* 0x05fa: ih_no_ctxsw */ 0x10d7f00d,
0xb7f10421, 0x4001e7f1,
0xb0bd0104, /* 0x070b: ih_no_ctxsw */
0xf4b4abff, 0xf10421f4,
0xa7f10d0b, 0xbd0104b7,
0xa4b60c1c, 0xb4abffb0,
0x00abd006, 0xf10f0bf4,
/* 0x0610: ih_no_other */ 0xf0070007,
0xfc400ad0, 0x0bd00303,
/* 0x0723: ih_no_other */
0xf104bd00,
0xf0010007,
0x0ad00003,
0xfc04bd00,
0xfce0fcf0, 0xfce0fcf0,
0xfcb0fcd0, 0xfcb0fcd0,
0xfc90fca0, 0xfc90fca0,
0x0088fe80, 0x0088fe80,
0x32f480fc, 0x32f480fc,
/* 0x062b: ctx_4160s */ /* 0x0747: ctx_4160s */
0xf101f800, 0xf001f800,
0xf04160e7, 0xffb901f7,
0xf7f040e3, 0x60e7f102,
0x8d21f401, 0x40e3f041,
/* 0x0638: ctx_4160s_wait */ /* 0x0757: ctx_4160s_wait */
0xc86821f4, 0xf19d21f4,
0x0bf404ff,
/* 0x0643: ctx_4160c */
0xf100f8fa,
0xf04160e7, 0xf04160e7,
0xf4bd40e3, 0x21f440e3,
0xf88d21f4, 0x02ffb968,
/* 0x0651: ctx_4170s */ 0xf404ffc8,
0x70e7f100, 0x00f8f00b,
/* 0x076c: ctx_4160c */
0xffb9f4bd,
0x60e7f102,
0x40e3f041, 0x40e3f041,
0xf410f5f0, 0xf89d21f4,
0x00f88d21, /* 0x077d: ctx_4170s */
/* 0x0660: ctx_4170w */ 0x10f5f000,
0x4170e7f1, 0xf102ffb9,
0xf440e3f0, 0xf04170e7,
0xf4f06821, 0x21f440e3,
0xf31bf410, /* 0x078f: ctx_4170w */
/* 0x0672: ctx_redswitch */ 0xf100f89d,
0xe7f100f8, 0xf04170e7,
0xe4b60614, 0x21f440e3,
0x70f7f106, 0x02ffb968,
0x00efd002, 0xf410f4f0,
/* 0x0683: ctx_redswitch_delay */ 0x00f8f01b,
0xb608f7f0, /* 0x07a4: ctx_redswitch */
0x1bf401f2, 0x0200e7f1,
0x70f7f1fd, 0xf040e5f0,
0x00efd007, 0xe5f020e5,
/* 0x0692: ctx_86c */ 0x0007f110,
0xe7f100f8, 0x0103f085,
0xe4b6086c, 0xbd000ed0,
0x00efd006, 0x08f7f004,
0x8a14e7f1, /* 0x07c0: ctx_redswitch_delay */
0xf440e3f0, 0xf401f2b6,
0xe7f18d21, 0xe5f1fd1b,
0xe3f0a86c, 0xe5f10400,
0x8d21f441, 0x07f10100,
/* 0x06b2: ctx_load */ 0x03f08500,
0x000ed001,
0x00f804bd,
/* 0x07dc: ctx_86c */
0x1b0007f1,
0xd00203f0,
0x04bd000f,
0xf102ffb9,
0xf08a14e7,
0x21f440e3,
0x02ffb99d,
0xa86ce7f1,
0xf441e3f0,
0x00f89d21,
/* 0x0804: ctx_mem */
0x840007f1,
0xd00203f0,
0x04bd000f,
/* 0x0810: ctx_mem_wait */
0x8400f7f1,
0xcf02f3f0,
0xfffd00ff,
0xf31bf405,
/* 0x0822: ctx_load */
0x94bd00f8, 0x94bd00f8,
0xf10599f0, 0xf10599f0,
0xf00f0007, 0xf00f0007,
0x09d00203, 0x09d00203,
0xf004bd00, 0xf004bd00,
0x21f40ca7, 0x21f40ca7,
0x2417f1c9, 0xf1f4bdd0,
0x0614b60a, 0xf0890007,
0xf10010d0, 0x0fd00203,
0xb60b0037, 0xf104bd00,
0x32d00634, 0xf0c10007,
0x0c17f140, 0x02d00203,
0x0614b60a, 0xf104bd00,
0xd00747f0, 0xf0830007,
0x14d00012, 0x02d00203,
/* 0x06ed: ctx_chan_wait_0 */ 0xf004bd00,
0x4014cf40, 0x21f507f7,
0xf41f44f0, 0x07f10804,
0x32d0fa1b, 0x03f0c000,
0x000bfe00, 0x0002d002,
0xb61f2af0, 0x0bfe04bd,
0x20b60424, 0x1f2af000,
0xf094bd02, 0xb60424b6,
0x94bd0220,
0xf10899f0,
0xf00f0007,
0x09d00203,
0xf104bd00,
0xf0810007,
0x02d00203,
0xf104bd00,
0xf1000027,
0xf0800023,
0x07f10225,
0x03f08800,
0x0002d002,
0x17f004bd,
0x0027f110,
0x0223f002,
0xf80512fa,
0xf094bd03,
0x07f10899, 0x07f10899,
0x03f00f00, 0x03f01700,
0x0009d002, 0x0009d002,
0x17f104bd, 0x019804bd,
0x14b60a04, 0x1814b681,
0x0012d006, 0xb6800298,
0x0a2017f1, 0x12fd0825,
0xf00614b6, 0x16018005,
0x23f10227,
0x12d08000,
0x1017f000,
0x020027f1,
0xfa0223f0,
0x03f80512,
0x99f094bd, 0x99f094bd,
0x0007f108, 0x0007f109,
0x0203f017, 0x0203f00f,
0xbd0009d0, 0xbd0009d0,
0x81019804, 0x0007f104,
0x981814b6, 0x0203f081,
0x25b68002, 0xbd0001d0,
0x0512fd08, 0x0127f004,
0xbd160180, 0x880007f1,
0x0999f094,
0x0f0007f1,
0xd00203f0,
0x04bd0009,
0x0a0427f1,
0xd00624b6,
0x27f00021,
0x2017f101,
0x0614b60a,
0xf10012d0,
0xf0010017,
0x01fa0613,
0xbd03f805,
0x0999f094,
0x170007f1,
0xd00203f0, 0xd00203f0,
0x04bd0009, 0x04bd0002,
0x010017f1,
0xfa0613f0,
0x03f80501,
0x99f094bd, 0x99f094bd,
0x0007f105, 0x0007f109,
0x0203f017, 0x0203f017,
0xbd0009d0, 0xbd0009d0,
/* 0x07bb: ctx_chan */ 0xf094bd04,
0xf500f804, 0x07f10599,
0xf5062b21, 0x03f01700,
0xf006b221, 0x0009d002,
0x21f40ca7, 0x00f804bd,
0x1017f1c9, /* 0x0940: ctx_chan */
0x0614b60a, 0x074721f5,
0xd00527f0, 0x082221f5,
/* 0x07d6: ctx_chan_wait */ 0xf40ca7f0,
0x12cf0012, 0x17f1d021,
0x0522fd00, 0x14b60a10,
0xf5fa1bf4, 0x05f7f006,
0xf8064321, 0x080421f5,
/* 0x07e5: ctx_mmio_exec */ 0x076c21f5,
0x41039800, /* 0x0962: ctx_mmio_exec */
0x0a0427f1, 0x039800f8,
0xd00624b6, 0x0007f141,
0x34bd0023, 0x0203f081,
/* 0x07f4: ctx_mmio_loop */ 0xbd0003d0,
0xf4ff34c4, /* 0x0973: ctx_mmio_loop */
0x57f10f1b, 0xc434bd04,
0x53f00200, 0x1bf4ff34,
0x0535fa06, 0x0057f10f,
/* 0x0806: ctx_mmio_pull */ 0x0653f002,
0x4e9803f8, 0xf80535fa,
0x814f9880, /* 0x0985: ctx_mmio_pull */
0xb68d21f4, 0x804e9803,
0x12b60830, 0xf4814f98,
0xdf1bf401, 0x30b69d21,
/* 0x0818: ctx_mmio_done */ 0x0112b608,
0xd0160398, /* 0x0997: ctx_mmio_done */
0x00800023, 0x98df1bf4,
0x07f11603,
0x03f08100,
0x0003d002,
0x008004bd,
0x0017f140, 0x0017f140,
0x0613f001, 0x0613f001,
0xf80601fa, 0xf80601fa,
/* 0x082f: ctx_xfer */ /* 0x09b7: ctx_xfer */
0xf100f803, 0xf000f803,
0xb60c00f7, 0x07f104e7,
0xe7f006f4, 0x03f00200,
0x80fed004, 0x000ed003,
/* 0x083c: ctx_xfer_idle */ /* 0x09c6: ctx_xfer_idle */
0xf100fecf, 0xe7f104bd,
0xf42000e4, 0xe3f00000,
0x11f4f91b, 0x00eecf03,
0x1102f406, 0x2000e4f1,
/* 0x084c: ctx_xfer_pre */ 0xf4f21bf4,
0xf510f7f0, 0x02f40611,
0xf5069221, /* 0x09dd: ctx_xfer_pre */
0xf4062b21, 0x10f7f011,
/* 0x085a: ctx_xfer_pre_load */ 0x07dc21f5,
0xf7f01c11, 0x074721f5,
0x5121f502, /* 0x09eb: ctx_xfer_pre_load */
0x6021f506, 0xf01c11f4,
0x7221f506, 0x21f502f7,
0xf5f4bd06, 0x21f5077d,
0xf5065121, 0x21f5078f,
/* 0x0873: ctx_xfer_exec */ 0xf4bd07a4,
0x9806b221, 0x077d21f5,
0x27f11601, 0x082221f5,
0x24b60414, /* 0x0a04: ctx_xfer_exec */
0x0020d006, 0xbd160198,
0x0007f124,
0x0103f005,
0xbd0002d0,
0x021fb904,
0xa500e7f1, 0xa500e7f1,
0xb941e3f0, 0xf441e3f0,
0x21f4021f, 0xfcf09d21,
0x04e0b68d, 0x022cf001,
0xf001fcf0, 0xfd0124b6,
0x24b6022c, 0xffb905f2,
0x05f2fd01, 0x04e7f102,
0xf18d21f4, 0x41e3f0a5,
0xf04afc17, 0xf59d21f4,
0x27f00213, 0xbd026a21,
0x0012d00c, 0xfc07f124,
0x021521f5, 0x0203f047,
0x47fc27f1, 0xbd0002d0,
0xd00223f0, 0x012cf004,
0x2cf00020, 0xf10320b6,
0x0320b601, 0xf04afc07,
0xf00012d0, 0x02d00203,
0xf004bd00,
0xa5f001ac, 0xa5f001ac,
0x00b7f006, 0x00b7f006,
0x98000c98, 0x98000c98,
0xe7f0010d, 0xe7f0010d,
0x6621f500, 0x6f21f500,
0x08a7f001, 0x08a7f001,
0x010921f5, 0x011021f5,
0x021521f5, 0x025e21f5,
0xf02201f4, 0xf01301f4,
0x21f40ca7, 0x21f40ca7,
0x1017f1c9, 0x05f7f0d0,
0x0614b60a, 0x080421f5,
0xd00527f0, /* 0x0a93: ctx_xfer_post */
/* 0x08fa: ctx_xfer_post_save_wait */ 0xf03202f4,
0x12cf0012, 0x21f502f7,
0x0522fd00, 0xf4bd077d,
0xf4fa1bf4, 0x07dc21f5,
/* 0x0906: ctx_xfer_post */ 0x027f21f5,
0xf7f03202, 0x078f21f5,
0x5121f502, 0x21f5f4bd,
0xf5f4bd06, 0x11f4077d,
0xf5069221, 0x40019810,
0xf5023421, 0xf40511fd,
0xbd066021, 0x21f5070b,
0x5121f5f4, /* 0x0abe: ctx_xfer_no_post_mmio */
0x1011f406, 0x21f50962,
0xfd400198, /* 0x0ac2: ctx_xfer_done */
0x0bf40511, 0x00f8076c,
0xe521f507,
/* 0x0931: ctx_xfer_no_post_mmio */
0x4321f507,
/* 0x0935: ctx_xfer_done */
0x0000f806,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
......
...@@ -206,14 +206,14 @@ uint32_t nvd7_grhub_data[] = { ...@@ -206,14 +206,14 @@ uint32_t nvd7_grhub_data[] = {
}; };
uint32_t nvd7_grhub_code[] = { uint32_t nvd7_grhub_code[] = {
0x031b0ef5, 0x039b0ef5,
/* 0x0004: queue_put */ /* 0x0004: queue_put */
0x9800d898, 0x9800d898,
0x86f001d9, 0x86f001d9,
0x0489b808, 0x0489b808,
0xf00c1bf4, 0xf00c1bf4,
0x21f502f7, 0x21f502f7,
0x00f802fe, 0x00f8037e,
/* 0x001c: queue_put_next */ /* 0x001c: queue_put_next */
0xb60798c4, 0xb60798c4,
0x8dbb0384, 0x8dbb0384,
...@@ -237,184 +237,214 @@ uint32_t nvd7_grhub_code[] = { ...@@ -237,184 +237,214 @@ uint32_t nvd7_grhub_code[] = {
/* 0x0066: queue_get_done */ /* 0x0066: queue_get_done */
0x00f80132, 0x00f80132,
/* 0x0068: nv_rd32 */ /* 0x0068: nv_rd32 */
0x0728b7f1, 0xf002ecb9,
0xb906b4b6, 0x07f11fc9,
0xc9f002ec, 0x03f0ca00,
0x00bcd01f, 0x000cd001,
/* 0x0078: nv_rd32_wait */ /* 0x007a: nv_rd32_wait */
0xc800bccf, 0xc7f104bd,
0x1bf41fcc, 0xc3f0ca00,
0x06a7f0fa, 0x00cccf01,
0x010921f5, 0xf41fccc8,
0xf840bfcf, 0xa7f0f31b,
/* 0x008d: nv_wr32 */ 0x1021f506,
0x28b7f100, 0x00f7f101,
0x06b4b607, 0x01f3f0cb,
0xb980bfd0, 0xf800ffcf,
0xc9f002ec, /* 0x009d: nv_wr32 */
0x1ec9f01f, 0x0007f100,
/* 0x00a3: nv_wr32_wait */ 0x0103f0cc,
0xcf00bcd0, 0xbd000fd0,
0xccc800bc, 0x02ecb904,
0xfa1bf41f, 0xf01fc9f0,
/* 0x00ae: watchdog_reset */ 0x07f11ec9,
0x87f100f8, 0x03f0ca00,
0x84b60430, 0x000cd001,
0x1ff9f006, /* 0x00be: nv_wr32_wait */
0xf8008fd0, 0xc7f104bd,
/* 0x00bd: watchdog_clear */ 0xc3f0ca00,
0x3087f100, 0x00cccf01,
0x0684b604, 0xf41fccc8,
0xf80080d0, 0x00f8f31b,
/* 0x00c9: wait_donez */ /* 0x00d0: wait_donez */
0xf094bd00, 0x99f094bd,
0x07f10099, 0x0007f100,
0x03f00f00, 0x0203f00f,
0x0009d002, 0xbd0009d0,
0x07f104bd, 0x0007f104,
0x03f00600, 0x0203f006,
0x000ad002, 0xbd000ad0,
/* 0x00e6: wait_donez_ne */ /* 0x00ed: wait_donez_ne */
0x87f104bd, 0x0087f104,
0x83f00000, 0x0183f000,
0x0088cf01, 0xff0088cf,
0xf4888aff, 0x1bf4888a,
0x94bdf31b, 0xf094bdf3,
0xf10099f0,
0xf0170007,
0x09d00203,
0xf804bd00,
/* 0x0109: wait_doneo */
0xf094bd00,
0x07f10099, 0x07f10099,
0x03f00f00, 0x03f01700,
0x0009d002, 0x0009d002,
0x87f104bd, 0x00f804bd,
0x84b60818, /* 0x0110: wait_doneo */
0x008ad006,
/* 0x0124: wait_doneo_e */
0x040087f1,
0xcf0684b6,
0x8aff0088,
0xf30bf488,
0x99f094bd, 0x99f094bd,
0x0007f100, 0x0007f100,
0x0203f017, 0x0203f00f,
0xbd0009d0, 0xbd0009d0,
/* 0x0147: mmctx_size */ 0x0007f104,
0xbd00f804, 0x0203f006,
/* 0x0149: nv_mmctx_size_loop */ 0xbd000ad0,
0x00e89894, /* 0x012d: wait_doneo_e */
0xb61a85b6, 0x0087f104,
0x84b60180, 0x0183f000,
0x0098bb02, 0xff0088cf,
0xb804e0b6, 0x0bf4888a,
0x1bf404ef, 0xf094bdf3,
0x029fb9eb, 0x07f10099,
/* 0x0166: mmctx_xfer */ 0x03f01700,
0x94bd00f8, 0x0009d002,
0xf10199f0, 0x00f804bd,
0xf00f0007, /* 0x0150: mmctx_size */
0x09d00203, /* 0x0152: nv_mmctx_size_loop */
0xf104bd00, 0xe89894bd,
0xb6071087, 0x1a85b600,
0x94bd0684, 0xb60180b6,
0xf405bbfd, 0x98bb0284,
0x8bd0090b, 0x04e0b600,
0x0099f000, 0xf404efb8,
/* 0x018c: mmctx_base_disabled */ 0x9fb9eb1b,
0xf405eefd, /* 0x016f: mmctx_xfer */
0x8ed00c0b, 0xbd00f802,
0xc08fd080, 0x0199f094,
/* 0x019b: mmctx_multi_disabled */ 0x0f0007f1,
0xb70199f0, 0xd00203f0,
0xc8010080, 0x04bd0009,
0xbbfd94bd,
0x120bf405,
0xc40007f1,
0xd00103f0,
0x04bd000b,
/* 0x0197: mmctx_base_disabled */
0xfd0099f0,
0x0bf405ee,
0x0007f11e,
0x0103f0c6,
0xbd000ed0,
0x0007f104,
0x0103f0c7,
0xbd000fd0,
0x0199f004,
/* 0x01b8: mmctx_multi_disabled */
0xb600abc8,
0xb9f010b4,
0x01aec80c,
0xfd11e4b6,
0x07f105be,
0x03f0c500,
0x000bd001,
/* 0x01d6: mmctx_exec_loop */
/* 0x01d6: mmctx_wait_free */
0xe7f104bd,
0xe3f0c500,
0x00eecf01,
0xf41fe4f0,
0xce98f30b,
0x05e9fd00,
0xc80007f1,
0xd00103f0,
0x04bd000e,
0xb804c0b6,
0x1bf404cd,
0x02abc8d8,
/* 0x0207: mmctx_fini_wait */
0xf11f1bf4,
0xf0c500b7,
0xbbcf01b3,
0x1fb4f000,
0xf410b4b0,
0xa7f0f01b,
0xd021f402,
/* 0x0223: mmctx_stop */
0xc82b0ef4,
0xb4b600ab, 0xb4b600ab,
0x0cb9f010, 0x0cb9f010,
0xb601aec8, 0xf112b9f0,
0xbefd11e4, 0xf0c50007,
0x008bd005, 0x0bd00103,
/* 0x01b4: mmctx_exec_loop */ /* 0x023b: mmctx_stop_wait */
/* 0x01b4: mmctx_wait_free */ 0xf104bd00,
0xf0008ecf, 0xf0c500b7,
0x0bf41fe4, 0xbbcf01b3,
0x00ce98fa, 0x12bbc800,
0xd005e9fd, /* 0x024b: mmctx_done */
0xc0b6c08e, 0xbdf31bf4,
0x04cdb804, 0x0199f094,
0xc8e81bf4, 0x170007f1,
0x1bf402ab, 0xd00203f0,
/* 0x01d5: mmctx_fini_wait */ 0x04bd0009,
0x008bcf18, /* 0x025e: strand_wait */
0xb01fb4f0, 0xa0f900f8,
0x1bf410b4, 0xf402a7f0,
0x02a7f0f7, 0xa0fcd021,
0xf4c921f4, /* 0x026a: strand_pre */
/* 0x01ea: mmctx_stop */ 0x97f000f8,
0xabc81b0e, 0xfc07f10c,
0x10b4b600, 0x0203f04a,
0xf00cb9f0, 0xbd0009d0,
0x8bd012b9, 0x5e21f504,
/* 0x01f9: mmctx_stop_wait */ /* 0x027f: strand_post */
0x008bcf00, 0xf000f802,
0xf412bbc8, 0x07f10d97,
/* 0x0202: mmctx_done */ 0x03f04afc,
0x94bdfa1b,
0xf10199f0,
0xf0170007,
0x09d00203,
0xf804bd00,
/* 0x0215: strand_wait */
0xf0a0f900,
0x21f402a7,
0xf8a0fcc9,
/* 0x0221: strand_pre */
0xfc87f100,
0x0283f04a,
0xd00c97f0,
0x21f50089,
0x00f80215,
/* 0x0234: strand_post */
0x4afc87f1,
0xf00283f0,
0x89d00d97,
0x1521f500,
/* 0x0247: strand_set */
0xf100f802,
0xf04ffca7,
0xaba202a3,
0xc7f00500,
0x00acd00f,
0xd00bc7f0,
0x21f500bc,
0xaed00215,
0x0ac7f000,
0xf500bcd0,
0xf8021521,
/* 0x0271: strand_ctx_init */
0xf094bd00,
0x07f10399,
0x03f00f00,
0x0009d002, 0x0009d002,
0x21f504bd, 0x21f504bd,
0xe7f00221, 0x00f8025e,
0x4721f503, /* 0x0294: strand_set */
0xfca7f102, 0xf10fc7f0,
0x02a3f046, 0xf04ffc07,
0x0400aba0, 0x0cd00203,
0xf040a0d0, 0xf004bd00,
0xbcd001c7, 0x07f10bc7,
0x1521f500, 0x03f04afc,
0x010c9202, 0x000cd002,
0xf000acd0, 0x07f104bd,
0xbcd002c7, 0x03f04ffc,
0x1521f500, 0x000ed002,
0x3421f502, 0xc7f004bd,
0x8087f102, 0xfc07f10a,
0x0684b608, 0x0203f04a,
0xb70089cf, 0xbd000cd0,
0x95220080, 0x5e21f504,
/* 0x02ca: ctx_init_strand_loop */ /* 0x02d3: strand_ctx_init */
0xbd00f802,
0x0399f094,
0x0f0007f1,
0xd00203f0,
0x04bd0009,
0x026a21f5,
0xf503e7f0,
0xbd029421,
0xfc07f1c4,
0x0203f047,
0xbd000cd0,
0x01c7f004,
0x4afc07f1,
0xd00203f0,
0x04bd000c,
0x025e21f5,
0xf1010c92,
0xf046fc07,
0x0cd00203,
0xf004bd00,
0x07f102c7,
0x03f04afc,
0x000cd002,
0x21f504bd,
0x21f5025e,
0x87f1027f,
0x83f04200,
0x0097f102,
0x0293f020,
0x950099cf,
/* 0x034a: ctx_init_strand_loop */
0x8ed008fe, 0x8ed008fe,
0x408ed000, 0x408ed000,
0xb6808acf, 0xb6808acf,
...@@ -428,7 +458,7 @@ uint32_t nvd7_grhub_code[] = { ...@@ -428,7 +458,7 @@ uint32_t nvd7_grhub_code[] = {
0x170007f1, 0x170007f1,
0xd00203f0, 0xd00203f0,
0x04bd0009, 0x04bd0009,
/* 0x02fe: error */ /* 0x037e: error */
0x07f100f8, 0x07f100f8,
0x03f00500, 0x03f00500,
0x000fd002, 0x000fd002,
...@@ -436,74 +466,101 @@ uint32_t nvd7_grhub_code[] = { ...@@ -436,74 +466,101 @@ uint32_t nvd7_grhub_code[] = {
0x0007f101, 0x0007f101,
0x0303f007, 0x0303f007,
0xbd000fd0, 0xbd000fd0,
/* 0x031b: init */ /* 0x039b: init */
0xbd00f804, 0xbd00f804,
0x0004fe04, 0x0007fe04,
0xf10007fe, 0x420017f1,
0xf0120017, 0xcf0013f0,
0x12d00227, 0x11e70011,
0xb117f100, 0x14b60109,
0x0010fe05, 0x0014fe08,
0x040017f1, 0xf10227f0,
0xf1c010d0, 0xf0120007,
0xb6040437, 0x02d00003,
0x27f10634, 0xf104bd00,
0x32d02003, 0xfe06a817,
0x0427f100, 0x24bd0010,
0x0132d020, 0x070007f1,
0xd00003f0,
0x04bd0002,
0x200327f1,
0x010007f1,
0xd00103f0,
0x04bd0002,
0x200427f1,
0x010407f1,
0xd00103f0,
0x04bd0002,
0x200b27f1, 0x200b27f1,
0xf10232d0, 0x010807f1,
0xd0200c27, 0xd00103f0,
0x27f10732, 0x04bd0002,
0x24b60c24, 0x200c27f1,
0x0003b906, 0x011c07f1,
0xf10023d0, 0xd00103f0,
0x04bd0002,
0xf1010392,
0xf0090007,
0x03d00303,
0xf104bd00,
0xf0870427, 0xf0870427,
0x12d00023, 0x07f10023,
0x0012b700, 0x03f00400,
0x0427f001, 0x0002d000,
0xf40012d0, 0x27f004bd,
0xe7f11031, 0x0007f104,
0xe3f09604, 0x0003f003,
0x6821f440, 0xbd0002d0,
0x8090f1c7, 0x1031f404,
0xf4f00301, 0x9604e7f1,
0x020f801f, 0xf440e3f0,
0xbb0117f0, 0xfeb96821,
0x12b6041f, 0x90f1c702,
0x0c27f101, 0xf0030180,
0x0624b604, 0x0f801ff4,
0xd00021d0, 0x0117f002,
0x17f14021, 0xb6041fbb,
0x07f10112,
0x03f00300,
0x0001d001,
0x07f104bd,
0x03f00400,
0x0001d001,
0x17f104bd,
0x0e980100, 0x0e980100,
0x010f9800, 0x010f9800,
0x014721f5, 0x015021f5,
0x070037f1, 0xf1081495,
0x950634b6, 0xf0c00007,
0x34d00814, 0x04d00103,
0x4034d000, 0xf104bd00,
0x130030b7, 0xf0c10007,
0xb6001fbb, 0x04d00103,
0x3fd002f5, 0xb704bd00,
0x0815b600, 0xbb130030,
0xf5b6001f,
0x0007f102,
0x0103f0d3,
0xbd000fd0,
0x0815b604,
0xb60110b6, 0xb60110b6,
0x1fb90814, 0x1fb90814,
0x7121f502, 0xd321f502,
0x001fbb02, 0x001fbb02,
0xf1020398, 0xf1020398,
0xf0200047, 0xf0200047,
/* 0x03f6: init_gpc */ /* 0x04e2: init_gpc */
0x4ea05043, 0x4ea05043,
0x1fb90804, 0x1fb90804,
0x8d21f402, 0x9d21f402,
0x010c4ea0, 0x010c4ea0,
0x21f4f4bd, 0x21f4f4bd,
0x044ea08d, 0x044ea09d,
0x8d21f401, 0x9d21f401,
0x01004ea0, 0x01004ea0,
0xf402f7f0, 0xf402f7f0,
0x4ea08d21, 0x4ea09d21,
/* 0x041e: init_gpc_wait */ /* 0x050a: init_gpc_wait */
0x21f40800, 0x21f40800,
0x1fffc868, 0x1fffc868,
0xa0fa0bf4, 0xa0fa0bf4,
...@@ -519,390 +576,394 @@ uint32_t nvd7_grhub_code[] = { ...@@ -519,390 +576,394 @@ uint32_t nvd7_grhub_code[] = {
0x080007f1, 0x080007f1,
0xd00203f0, 0xd00203f0,
0x04bd0001, 0x04bd0001,
/* 0x0458: main */ /* 0x0544: main */
0xf40031f4, 0xf40031f4,
0xd7f00028, 0xd7f00028,
0x3921f410, 0x3921f410,
0xb1f401f4, 0xb1f401f4,
0xf54001e4, 0xf54001e4,
0xbd00de1b, 0xbd00e91b,
0x0499f094, 0x0499f094,
0x0f0007f1, 0x0f0007f1,
0xd00203f0, 0xd00203f0,
0x04bd0009, 0x04bd0009,
0x0b0017f1, 0xc00017f1,
0xcf0614b6, 0xcf0213f0,
0x11cf4012, 0x27f10011,
0x1f13c800, 0x23f0c100,
0x00870bf5, 0x0022cf02,
0xf41f23c8, 0xf51f13c8,
0x20f9620b, 0xc800890b,
0xbd0212b9, 0x0bf41f23,
0x0799f094, 0xb920f962,
0x0f0007f1, 0x94bd0212,
0xd00203f0,
0x04bd0009,
0xf40132f4,
0x21f50231,
0x94bd082f,
0xf10799f0, 0xf10799f0,
0xf0170007, 0xf00f0007,
0x09d00203, 0x09d00203,
0xfc04bd00, 0xf404bd00,
0xf094bd20, 0x31f40132,
0x07f10699, 0xb721f502,
0x03f00f00, 0xf094bd09,
0x0009d002, 0x07f10799,
0x31f404bd,
0x2f21f501,
0xf094bd08,
0x07f10699,
0x03f01700, 0x03f01700,
0x0009d002, 0x0009d002,
0x0ef404bd, 0x20fc04bd,
/* 0x04f9: chsw_prev_no_next */
0xb920f931,
0x32f40212,
0x0232f401,
0x082f21f5,
0x17f120fc,
0x14b60b00,
0x0012d006,
/* 0x0517: chsw_no_prev */
0xc8130ef4,
0x0bf41f23,
0x0131f40d,
0xf50232f4,
/* 0x0527: chsw_done */
0xf1082f21,
0xb60b0c17,
0x27f00614,
0x0012d001,
0x99f094bd, 0x99f094bd,
0x0007f104, 0x0007f106,
0x0203f00f,
0xbd0009d0,
0x0131f404,
0x09b721f5,
0x99f094bd,
0x0007f106,
0x0203f017, 0x0203f017,
0xbd0009d0, 0xbd0009d0,
0x130ef504, 0x330ef404,
/* 0x0549: main_not_ctx_switch */ /* 0x05ec: chsw_prev_no_next */
0x01e4b0ff, 0x12b920f9,
0xb90d1bf4, 0x0132f402,
0x21f502f2, 0xf50232f4,
0x0ef407bb, 0xfc09b721,
/* 0x0559: main_not_ctx_chan */ 0x0007f120,
0x02e4b046, 0x0203f0c0,
0xbd321bf4, 0xbd0002d0,
0x0799f094, 0x130ef404,
0x0f0007f1, /* 0x060c: chsw_no_prev */
0xf41f23c8,
0x31f40d0b,
0x0232f401,
0x09b721f5,
/* 0x061c: chsw_done */
0xf10127f0,
0xf0c30007,
0x02d00203,
0xbd04bd00,
0x0499f094,
0x170007f1,
0xd00203f0, 0xd00203f0,
0x04bd0009, 0x04bd0009,
0xf40132f4, 0xff080ef5,
0x21f50232, /* 0x0640: main_not_ctx_switch */
0x94bd082f, 0xf401e4b0,
0xf2b90d1b,
0x4021f502,
0x460ef409,
/* 0x0650: main_not_ctx_chan */
0xf402e4b0,
0x94bd321b,
0xf10799f0, 0xf10799f0,
0xf0170007, 0xf00f0007,
0x09d00203, 0x09d00203,
0xf404bd00, 0xf404bd00,
/* 0x058e: main_not_ctx_save */ 0x32f40132,
0xef94110e, 0xb721f502,
0x01f5f010, 0xf094bd09,
0x02fe21f5, 0x07f10799,
0xfec00ef5, 0x03f01700,
/* 0x059c: main_done */ 0x0009d002,
0x29f024bd, 0x0ef404bd,
0x0007f11f, /* 0x0685: main_not_ctx_save */
0x0203f008, 0x10ef9411,
0xbd0002d0, 0xf501f5f0,
0xab0ef504, 0xf5037e21,
/* 0x05b1: ih */ /* 0x0693: main_done */
0xfe80f9fe, 0xbdfeb50e,
0x80f90188, 0x1f29f024,
0xa0f990f9, 0x080007f1,
0xd0f9b0f9, 0xd00203f0,
0xf0f9e0f9, 0x04bd0002,
0x0acf04bd, 0xfea00ef5,
0x04abc480, /* 0x06a8: ih */
0xf11d0bf4, 0x88fe80f9,
0xf01900b7, 0xf980f901,
0xbecf10d7, 0xf9a0f990,
0x00bfcf40, 0xf9d0f9b0,
0xbdf0f9e0,
0x00a7f104,
0x00a3f002,
0xc400aacf,
0x0bf404ab,
0x10d7f030,
0x1a00e7f1,
0xcf00e3f0,
0xf7f100ee,
0xf3f01900,
0x00ffcf00,
0xb70421f4, 0xb70421f4,
0xf00400b0, 0xf00400b0,
0xbed001e7, 0x07f101e7,
/* 0x05e9: ih_no_fifo */ 0x03f01d00,
0x00abe400, 0x000ed000,
0x0d0bf401, /* 0x06fa: ih_no_fifo */
0xf110d7f0, 0xabe404bd,
0xf44001e7, 0x0bf40100,
/* 0x05fa: ih_no_ctxsw */ 0x10d7f00d,
0xb7f10421, 0x4001e7f1,
0xb0bd0104, /* 0x070b: ih_no_ctxsw */
0xf4b4abff, 0xf10421f4,
0xa7f10d0b, 0xbd0104b7,
0xa4b60c1c, 0xb4abffb0,
0x00abd006, 0xf10f0bf4,
/* 0x0610: ih_no_other */ 0xf0070007,
0xfc400ad0, 0x0bd00303,
/* 0x0723: ih_no_other */
0xf104bd00,
0xf0010007,
0x0ad00003,
0xfc04bd00,
0xfce0fcf0, 0xfce0fcf0,
0xfcb0fcd0, 0xfcb0fcd0,
0xfc90fca0, 0xfc90fca0,
0x0088fe80, 0x0088fe80,
0x32f480fc, 0x32f480fc,
/* 0x062b: ctx_4160s */ /* 0x0747: ctx_4160s */
0xf101f800, 0xf001f800,
0xf04160e7, 0xffb901f7,
0xf7f040e3, 0x60e7f102,
0x8d21f401, 0x40e3f041,
/* 0x0638: ctx_4160s_wait */ /* 0x0757: ctx_4160s_wait */
0xc86821f4, 0xf19d21f4,
0x0bf404ff,
/* 0x0643: ctx_4160c */
0xf100f8fa,
0xf04160e7, 0xf04160e7,
0xf4bd40e3, 0x21f440e3,
0xf88d21f4, 0x02ffb968,
/* 0x0651: ctx_4170s */ 0xf404ffc8,
0x70e7f100, 0x00f8f00b,
/* 0x076c: ctx_4160c */
0xffb9f4bd,
0x60e7f102,
0x40e3f041, 0x40e3f041,
0xf410f5f0, 0xf89d21f4,
0x00f88d21, /* 0x077d: ctx_4170s */
/* 0x0660: ctx_4170w */ 0x10f5f000,
0x4170e7f1, 0xf102ffb9,
0xf440e3f0, 0xf04170e7,
0xf4f06821, 0x21f440e3,
0xf31bf410, /* 0x078f: ctx_4170w */
/* 0x0672: ctx_redswitch */ 0xf100f89d,
0xe7f100f8, 0xf04170e7,
0xe4b60614, 0x21f440e3,
0x70f7f106, 0x02ffb968,
0x00efd002, 0xf410f4f0,
/* 0x0683: ctx_redswitch_delay */ 0x00f8f01b,
0xb608f7f0, /* 0x07a4: ctx_redswitch */
0x1bf401f2, 0x0200e7f1,
0x70f7f1fd, 0xf040e5f0,
0x00efd007, 0xe5f020e5,
/* 0x0692: ctx_86c */ 0x0007f110,
0xe7f100f8, 0x0103f085,
0xe4b6086c, 0xbd000ed0,
0x00efd006, 0x08f7f004,
0x8a14e7f1, /* 0x07c0: ctx_redswitch_delay */
0xf440e3f0, 0xf401f2b6,
0xe7f18d21, 0xe5f1fd1b,
0xe3f0a86c, 0xe5f10400,
0x8d21f441, 0x07f10100,
/* 0x06b2: ctx_load */ 0x03f08500,
0x000ed001,
0x00f804bd,
/* 0x07dc: ctx_86c */
0x1b0007f1,
0xd00203f0,
0x04bd000f,
0xf102ffb9,
0xf08a14e7,
0x21f440e3,
0x02ffb99d,
0xa86ce7f1,
0xf441e3f0,
0x00f89d21,
/* 0x0804: ctx_mem */
0x840007f1,
0xd00203f0,
0x04bd000f,
/* 0x0810: ctx_mem_wait */
0x8400f7f1,
0xcf02f3f0,
0xfffd00ff,
0xf31bf405,
/* 0x0822: ctx_load */
0x94bd00f8, 0x94bd00f8,
0xf10599f0, 0xf10599f0,
0xf00f0007, 0xf00f0007,
0x09d00203, 0x09d00203,
0xf004bd00, 0xf004bd00,
0x21f40ca7, 0x21f40ca7,
0x2417f1c9, 0xf1f4bdd0,
0x0614b60a, 0xf0890007,
0xf10010d0, 0x0fd00203,
0xb60b0037, 0xf104bd00,
0x32d00634, 0xf0c10007,
0x0c17f140, 0x02d00203,
0x0614b60a, 0xf104bd00,
0xd00747f0, 0xf0830007,
0x14d00012, 0x02d00203,
/* 0x06ed: ctx_chan_wait_0 */ 0xf004bd00,
0x4014cf40, 0x21f507f7,
0xf41f44f0, 0x07f10804,
0x32d0fa1b, 0x03f0c000,
0x000bfe00, 0x0002d002,
0xb61f2af0, 0x0bfe04bd,
0x20b60424, 0x1f2af000,
0xf094bd02, 0xb60424b6,
0x94bd0220,
0xf10899f0,
0xf00f0007,
0x09d00203,
0xf104bd00,
0xf0810007,
0x02d00203,
0xf104bd00,
0xf1000027,
0xf0800023,
0x07f10225,
0x03f08800,
0x0002d002,
0x17f004bd,
0x0027f110,
0x0223f002,
0xf80512fa,
0xf094bd03,
0x07f10899, 0x07f10899,
0x03f00f00, 0x03f01700,
0x0009d002, 0x0009d002,
0x17f104bd, 0x019804bd,
0x14b60a04, 0x1814b681,
0x0012d006, 0xb6800298,
0x0a2017f1, 0x12fd0825,
0xf00614b6, 0x16018005,
0x23f10227,
0x12d08000,
0x1017f000,
0x020027f1,
0xfa0223f0,
0x03f80512,
0x99f094bd, 0x99f094bd,
0x0007f108, 0x0007f109,
0x0203f017, 0x0203f00f,
0xbd0009d0, 0xbd0009d0,
0x81019804, 0x0007f104,
0x981814b6, 0x0203f081,
0x25b68002, 0xbd0001d0,
0x0512fd08, 0x0127f004,
0xbd160180, 0x880007f1,
0x0999f094,
0x0f0007f1,
0xd00203f0,
0x04bd0009,
0x0a0427f1,
0xd00624b6,
0x27f00021,
0x2017f101,
0x0614b60a,
0xf10012d0,
0xf0010017,
0x01fa0613,
0xbd03f805,
0x0999f094,
0x170007f1,
0xd00203f0, 0xd00203f0,
0x04bd0009, 0x04bd0002,
0x010017f1,
0xfa0613f0,
0x03f80501,
0x99f094bd, 0x99f094bd,
0x0007f105, 0x0007f109,
0x0203f017, 0x0203f017,
0xbd0009d0, 0xbd0009d0,
/* 0x07bb: ctx_chan */ 0xf094bd04,
0xf500f804, 0x07f10599,
0xf5062b21, 0x03f01700,
0xf006b221, 0x0009d002,
0x21f40ca7, 0x00f804bd,
0x1017f1c9, /* 0x0940: ctx_chan */
0x0614b60a, 0x074721f5,
0xd00527f0, 0x082221f5,
/* 0x07d6: ctx_chan_wait */ 0xf40ca7f0,
0x12cf0012, 0x17f1d021,
0x0522fd00, 0x14b60a10,
0xf5fa1bf4, 0x05f7f006,
0xf8064321, 0x080421f5,
/* 0x07e5: ctx_mmio_exec */ 0x076c21f5,
0x41039800, /* 0x0962: ctx_mmio_exec */
0x0a0427f1, 0x039800f8,
0xd00624b6, 0x0007f141,
0x34bd0023, 0x0203f081,
/* 0x07f4: ctx_mmio_loop */ 0xbd0003d0,
0xf4ff34c4, /* 0x0973: ctx_mmio_loop */
0x57f10f1b, 0xc434bd04,
0x53f00200, 0x1bf4ff34,
0x0535fa06, 0x0057f10f,
/* 0x0806: ctx_mmio_pull */ 0x0653f002,
0x4e9803f8, 0xf80535fa,
0x814f9880, /* 0x0985: ctx_mmio_pull */
0xb68d21f4, 0x804e9803,
0x12b60830, 0xf4814f98,
0xdf1bf401, 0x30b69d21,
/* 0x0818: ctx_mmio_done */ 0x0112b608,
0xd0160398, /* 0x0997: ctx_mmio_done */
0x00800023, 0x98df1bf4,
0x07f11603,
0x03f08100,
0x0003d002,
0x008004bd,
0x0017f140, 0x0017f140,
0x0613f001, 0x0613f001,
0xf80601fa, 0xf80601fa,
/* 0x082f: ctx_xfer */ /* 0x09b7: ctx_xfer */
0xf100f803, 0xf000f803,
0xb60c00f7, 0x07f104e7,
0xe7f006f4, 0x03f00200,
0x80fed004, 0x000ed003,
/* 0x083c: ctx_xfer_idle */ /* 0x09c6: ctx_xfer_idle */
0xf100fecf, 0xe7f104bd,
0xf42000e4, 0xe3f00000,
0x11f4f91b, 0x00eecf03,
0x1102f406, 0x2000e4f1,
/* 0x084c: ctx_xfer_pre */ 0xf4f21bf4,
0xf510f7f0, 0x02f40611,
0xf5069221, /* 0x09dd: ctx_xfer_pre */
0xf4062b21, 0x10f7f011,
/* 0x085a: ctx_xfer_pre_load */ 0x07dc21f5,
0xf7f01c11, 0x074721f5,
0x5121f502, /* 0x09eb: ctx_xfer_pre_load */
0x6021f506, 0xf01c11f4,
0x7221f506, 0x21f502f7,
0xf5f4bd06, 0x21f5077d,
0xf5065121, 0x21f5078f,
/* 0x0873: ctx_xfer_exec */ 0xf4bd07a4,
0x9806b221, 0x077d21f5,
0x27f11601, 0x082221f5,
0x24b60414, /* 0x0a04: ctx_xfer_exec */
0x0020d006, 0xbd160198,
0x0007f124,
0x0103f005,
0xbd0002d0,
0x021fb904,
0xa500e7f1, 0xa500e7f1,
0xb941e3f0, 0xf441e3f0,
0x21f4021f, 0xfcf09d21,
0x04e0b68d, 0x022cf001,
0xf001fcf0, 0xfd0124b6,
0x24b6022c, 0xffb905f2,
0x05f2fd01, 0x04e7f102,
0xf18d21f4, 0x41e3f0a5,
0xf04afc17, 0xf59d21f4,
0x27f00213, 0xbd026a21,
0x0012d00c, 0xfc07f124,
0x021521f5, 0x0203f047,
0x47fc27f1, 0xbd0002d0,
0xd00223f0, 0x012cf004,
0x2cf00020, 0xf10320b6,
0x0320b601, 0xf04afc07,
0xf00012d0, 0x02d00203,
0xf004bd00,
0xa5f001ac, 0xa5f001ac,
0x00b7f006, 0x00b7f006,
0x98000c98, 0x98000c98,
0xe7f0010d, 0xe7f0010d,
0x6621f500, 0x6f21f500,
0x08a7f001, 0x08a7f001,
0x010921f5, 0x011021f5,
0x021521f5, 0x025e21f5,
0xf02201f4, 0xf01301f4,
0x21f40ca7, 0x21f40ca7,
0x1017f1c9, 0x05f7f0d0,
0x0614b60a, 0x080421f5,
0xd00527f0, /* 0x0a93: ctx_xfer_post */
/* 0x08fa: ctx_xfer_post_save_wait */ 0xf03202f4,
0x12cf0012, 0x21f502f7,
0x0522fd00, 0xf4bd077d,
0xf4fa1bf4, 0x07dc21f5,
/* 0x0906: ctx_xfer_post */ 0x027f21f5,
0xf7f03202, 0x078f21f5,
0x5121f502, 0x21f5f4bd,
0xf5f4bd06, 0x11f4077d,
0xf5069221, 0x40019810,
0xf5023421, 0xf40511fd,
0xbd066021, 0x21f5070b,
0x5121f5f4, /* 0x0abe: ctx_xfer_no_post_mmio */
0x1011f406, 0x21f50962,
0xfd400198, /* 0x0ac2: ctx_xfer_done */
0x0bf40511, 0x00f8076c,
0xe521f507,
/* 0x0931: ctx_xfer_no_post_mmio */
0x4321f507,
/* 0x0935: ctx_xfer_done */
0x0000f806,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
......
...@@ -206,14 +206,14 @@ uint32_t nve0_grhub_data[] = { ...@@ -206,14 +206,14 @@ uint32_t nve0_grhub_data[] = {
}; };
uint32_t nve0_grhub_code[] = { uint32_t nve0_grhub_code[] = {
0x031b0ef5, 0x039b0ef5,
/* 0x0004: queue_put */ /* 0x0004: queue_put */
0x9800d898, 0x9800d898,
0x86f001d9, 0x86f001d9,
0x0489b808, 0x0489b808,
0xf00c1bf4, 0xf00c1bf4,
0x21f502f7, 0x21f502f7,
0x00f802fe, 0x00f8037e,
/* 0x001c: queue_put_next */ /* 0x001c: queue_put_next */
0xb60798c4, 0xb60798c4,
0x8dbb0384, 0x8dbb0384,
...@@ -237,184 +237,214 @@ uint32_t nve0_grhub_code[] = { ...@@ -237,184 +237,214 @@ uint32_t nve0_grhub_code[] = {
/* 0x0066: queue_get_done */ /* 0x0066: queue_get_done */
0x00f80132, 0x00f80132,
/* 0x0068: nv_rd32 */ /* 0x0068: nv_rd32 */
0x0728b7f1, 0xf002ecb9,
0xb906b4b6, 0x07f11fc9,
0xc9f002ec, 0x03f0ca00,
0x00bcd01f, 0x000cd001,
/* 0x0078: nv_rd32_wait */ /* 0x007a: nv_rd32_wait */
0xc800bccf, 0xc7f104bd,
0x1bf41fcc, 0xc3f0ca00,
0x06a7f0fa, 0x00cccf01,
0x010921f5, 0xf41fccc8,
0xf840bfcf, 0xa7f0f31b,
/* 0x008d: nv_wr32 */ 0x1021f506,
0x28b7f100, 0x00f7f101,
0x06b4b607, 0x01f3f0cb,
0xb980bfd0, 0xf800ffcf,
0xc9f002ec, /* 0x009d: nv_wr32 */
0x1ec9f01f, 0x0007f100,
/* 0x00a3: nv_wr32_wait */ 0x0103f0cc,
0xcf00bcd0, 0xbd000fd0,
0xccc800bc, 0x02ecb904,
0xfa1bf41f, 0xf01fc9f0,
/* 0x00ae: watchdog_reset */ 0x07f11ec9,
0x87f100f8, 0x03f0ca00,
0x84b60430, 0x000cd001,
0x1ff9f006, /* 0x00be: nv_wr32_wait */
0xf8008fd0, 0xc7f104bd,
/* 0x00bd: watchdog_clear */ 0xc3f0ca00,
0x3087f100, 0x00cccf01,
0x0684b604, 0xf41fccc8,
0xf80080d0, 0x00f8f31b,
/* 0x00c9: wait_donez */ /* 0x00d0: wait_donez */
0xf094bd00, 0x99f094bd,
0x07f10099, 0x0007f100,
0x03f00f00, 0x0203f00f,
0x0009d002, 0xbd0009d0,
0x07f104bd, 0x0007f104,
0x03f00600, 0x0203f006,
0x000ad002, 0xbd000ad0,
/* 0x00e6: wait_donez_ne */ /* 0x00ed: wait_donez_ne */
0x87f104bd, 0x0087f104,
0x83f00000, 0x0183f000,
0x0088cf01, 0xff0088cf,
0xf4888aff, 0x1bf4888a,
0x94bdf31b, 0xf094bdf3,
0xf10099f0,
0xf0170007,
0x09d00203,
0xf804bd00,
/* 0x0109: wait_doneo */
0xf094bd00,
0x07f10099, 0x07f10099,
0x03f00f00, 0x03f01700,
0x0009d002, 0x0009d002,
0x87f104bd, 0x00f804bd,
0x84b60818, /* 0x0110: wait_doneo */
0x008ad006,
/* 0x0124: wait_doneo_e */
0x040087f1,
0xcf0684b6,
0x8aff0088,
0xf30bf488,
0x99f094bd, 0x99f094bd,
0x0007f100, 0x0007f100,
0x0203f017, 0x0203f00f,
0xbd0009d0, 0xbd0009d0,
/* 0x0147: mmctx_size */ 0x0007f104,
0xbd00f804, 0x0203f006,
/* 0x0149: nv_mmctx_size_loop */ 0xbd000ad0,
0x00e89894, /* 0x012d: wait_doneo_e */
0xb61a85b6, 0x0087f104,
0x84b60180, 0x0183f000,
0x0098bb02, 0xff0088cf,
0xb804e0b6, 0x0bf4888a,
0x1bf404ef, 0xf094bdf3,
0x029fb9eb, 0x07f10099,
/* 0x0166: mmctx_xfer */ 0x03f01700,
0x94bd00f8, 0x0009d002,
0xf10199f0, 0x00f804bd,
0xf00f0007, /* 0x0150: mmctx_size */
0x09d00203, /* 0x0152: nv_mmctx_size_loop */
0xf104bd00, 0xe89894bd,
0xb6071087, 0x1a85b600,
0x94bd0684, 0xb60180b6,
0xf405bbfd, 0x98bb0284,
0x8bd0090b, 0x04e0b600,
0x0099f000, 0xf404efb8,
/* 0x018c: mmctx_base_disabled */ 0x9fb9eb1b,
0xf405eefd, /* 0x016f: mmctx_xfer */
0x8ed00c0b, 0xbd00f802,
0xc08fd080, 0x0199f094,
/* 0x019b: mmctx_multi_disabled */ 0x0f0007f1,
0xb70199f0, 0xd00203f0,
0xc8010080, 0x04bd0009,
0xbbfd94bd,
0x120bf405,
0xc40007f1,
0xd00103f0,
0x04bd000b,
/* 0x0197: mmctx_base_disabled */
0xfd0099f0,
0x0bf405ee,
0x0007f11e,
0x0103f0c6,
0xbd000ed0,
0x0007f104,
0x0103f0c7,
0xbd000fd0,
0x0199f004,
/* 0x01b8: mmctx_multi_disabled */
0xb600abc8,
0xb9f010b4,
0x01aec80c,
0xfd11e4b6,
0x07f105be,
0x03f0c500,
0x000bd001,
/* 0x01d6: mmctx_exec_loop */
/* 0x01d6: mmctx_wait_free */
0xe7f104bd,
0xe3f0c500,
0x00eecf01,
0xf41fe4f0,
0xce98f30b,
0x05e9fd00,
0xc80007f1,
0xd00103f0,
0x04bd000e,
0xb804c0b6,
0x1bf404cd,
0x02abc8d8,
/* 0x0207: mmctx_fini_wait */
0xf11f1bf4,
0xf0c500b7,
0xbbcf01b3,
0x1fb4f000,
0xf410b4b0,
0xa7f0f01b,
0xd021f402,
/* 0x0223: mmctx_stop */
0xc82b0ef4,
0xb4b600ab, 0xb4b600ab,
0x0cb9f010, 0x0cb9f010,
0xb601aec8, 0xf112b9f0,
0xbefd11e4, 0xf0c50007,
0x008bd005, 0x0bd00103,
/* 0x01b4: mmctx_exec_loop */ /* 0x023b: mmctx_stop_wait */
/* 0x01b4: mmctx_wait_free */ 0xf104bd00,
0xf0008ecf, 0xf0c500b7,
0x0bf41fe4, 0xbbcf01b3,
0x00ce98fa, 0x12bbc800,
0xd005e9fd, /* 0x024b: mmctx_done */
0xc0b6c08e, 0xbdf31bf4,
0x04cdb804, 0x0199f094,
0xc8e81bf4, 0x170007f1,
0x1bf402ab, 0xd00203f0,
/* 0x01d5: mmctx_fini_wait */ 0x04bd0009,
0x008bcf18, /* 0x025e: strand_wait */
0xb01fb4f0, 0xa0f900f8,
0x1bf410b4, 0xf402a7f0,
0x02a7f0f7, 0xa0fcd021,
0xf4c921f4, /* 0x026a: strand_pre */
/* 0x01ea: mmctx_stop */ 0x97f000f8,
0xabc81b0e, 0xfc07f10c,
0x10b4b600, 0x0203f04a,
0xf00cb9f0, 0xbd0009d0,
0x8bd012b9, 0x5e21f504,
/* 0x01f9: mmctx_stop_wait */ /* 0x027f: strand_post */
0x008bcf00, 0xf000f802,
0xf412bbc8, 0x07f10d97,
/* 0x0202: mmctx_done */ 0x03f04afc,
0x94bdfa1b,
0xf10199f0,
0xf0170007,
0x09d00203,
0xf804bd00,
/* 0x0215: strand_wait */
0xf0a0f900,
0x21f402a7,
0xf8a0fcc9,
/* 0x0221: strand_pre */
0xfc87f100,
0x0283f04a,
0xd00c97f0,
0x21f50089,
0x00f80215,
/* 0x0234: strand_post */
0x4afc87f1,
0xf00283f0,
0x89d00d97,
0x1521f500,
/* 0x0247: strand_set */
0xf100f802,
0xf04ffca7,
0xaba202a3,
0xc7f00500,
0x00acd00f,
0xd00bc7f0,
0x21f500bc,
0xaed00215,
0x0ac7f000,
0xf500bcd0,
0xf8021521,
/* 0x0271: strand_ctx_init */
0xf094bd00,
0x07f10399,
0x03f00f00,
0x0009d002, 0x0009d002,
0x21f504bd, 0x21f504bd,
0xe7f00221, 0x00f8025e,
0x4721f503, /* 0x0294: strand_set */
0xfca7f102, 0xf10fc7f0,
0x02a3f046, 0xf04ffc07,
0x0400aba0, 0x0cd00203,
0xf040a0d0, 0xf004bd00,
0xbcd001c7, 0x07f10bc7,
0x1521f500, 0x03f04afc,
0x010c9202, 0x000cd002,
0xf000acd0, 0x07f104bd,
0xbcd002c7, 0x03f04ffc,
0x1521f500, 0x000ed002,
0x3421f502, 0xc7f004bd,
0x8087f102, 0xfc07f10a,
0x0684b608, 0x0203f04a,
0xb70089cf, 0xbd000cd0,
0x95220080, 0x5e21f504,
/* 0x02ca: ctx_init_strand_loop */ /* 0x02d3: strand_ctx_init */
0xbd00f802,
0x0399f094,
0x0f0007f1,
0xd00203f0,
0x04bd0009,
0x026a21f5,
0xf503e7f0,
0xbd029421,
0xfc07f1c4,
0x0203f047,
0xbd000cd0,
0x01c7f004,
0x4afc07f1,
0xd00203f0,
0x04bd000c,
0x025e21f5,
0xf1010c92,
0xf046fc07,
0x0cd00203,
0xf004bd00,
0x07f102c7,
0x03f04afc,
0x000cd002,
0x21f504bd,
0x21f5025e,
0x87f1027f,
0x83f04200,
0x0097f102,
0x0293f020,
0x950099cf,
/* 0x034a: ctx_init_strand_loop */
0x8ed008fe, 0x8ed008fe,
0x408ed000, 0x408ed000,
0xb6808acf, 0xb6808acf,
...@@ -428,7 +458,7 @@ uint32_t nve0_grhub_code[] = { ...@@ -428,7 +458,7 @@ uint32_t nve0_grhub_code[] = {
0x170007f1, 0x170007f1,
0xd00203f0, 0xd00203f0,
0x04bd0009, 0x04bd0009,
/* 0x02fe: error */ /* 0x037e: error */
0x07f100f8, 0x07f100f8,
0x03f00500, 0x03f00500,
0x000fd002, 0x000fd002,
...@@ -436,74 +466,101 @@ uint32_t nve0_grhub_code[] = { ...@@ -436,74 +466,101 @@ uint32_t nve0_grhub_code[] = {
0x0007f101, 0x0007f101,
0x0303f007, 0x0303f007,
0xbd000fd0, 0xbd000fd0,
/* 0x031b: init */ /* 0x039b: init */
0xbd00f804, 0xbd00f804,
0x0004fe04, 0x0007fe04,
0xf10007fe, 0x420017f1,
0xf0120017, 0xcf0013f0,
0x12d00227, 0x11e70011,
0xb117f100, 0x14b60109,
0x0010fe05, 0x0014fe08,
0x040017f1, 0xf10227f0,
0xf1c010d0, 0xf0120007,
0xb6040437, 0x02d00003,
0x27f10634, 0xf104bd00,
0x32d02003, 0xfe06a817,
0x0427f100, 0x24bd0010,
0x0132d020, 0x070007f1,
0xd00003f0,
0x04bd0002,
0x200327f1,
0x010007f1,
0xd00103f0,
0x04bd0002,
0x200427f1,
0x010407f1,
0xd00103f0,
0x04bd0002,
0x200b27f1, 0x200b27f1,
0xf10232d0, 0x010807f1,
0xd0200c27, 0xd00103f0,
0x27f10732, 0x04bd0002,
0x24b60c24, 0x200c27f1,
0x0003b906, 0x011c07f1,
0xf10023d0, 0xd00103f0,
0x04bd0002,
0xf1010392,
0xf0090007,
0x03d00303,
0xf104bd00,
0xf0870427, 0xf0870427,
0x12d00023, 0x07f10023,
0x0012b700, 0x03f00400,
0x0427f001, 0x0002d000,
0xf40012d0, 0x27f004bd,
0xe7f11031, 0x0007f104,
0xe3f09604, 0x0003f003,
0x6821f440, 0xbd0002d0,
0x8090f1c7, 0x1031f404,
0xf4f00301, 0x9604e7f1,
0x020f801f, 0xf440e3f0,
0xbb0117f0, 0xfeb96821,
0x12b6041f, 0x90f1c702,
0x0c27f101, 0xf0030180,
0x0624b604, 0x0f801ff4,
0xd00021d0, 0x0117f002,
0x17f14021, 0xb6041fbb,
0x07f10112,
0x03f00300,
0x0001d001,
0x07f104bd,
0x03f00400,
0x0001d001,
0x17f104bd,
0x0e980100, 0x0e980100,
0x010f9800, 0x010f9800,
0x014721f5, 0x015021f5,
0x070037f1, 0xf1081495,
0x950634b6, 0xf0c00007,
0x34d00814, 0x04d00103,
0x4034d000, 0xf104bd00,
0x130030b7, 0xf0c10007,
0xb6001fbb, 0x04d00103,
0x3fd002f5, 0xb704bd00,
0x0815b600, 0xbb130030,
0xf5b6001f,
0x0007f102,
0x0103f0d3,
0xbd000fd0,
0x0815b604,
0xb60110b6, 0xb60110b6,
0x1fb90814, 0x1fb90814,
0x7121f502, 0xd321f502,
0x001fbb02, 0x001fbb02,
0xf1020398, 0xf1020398,
0xf0200047, 0xf0200047,
/* 0x03f6: init_gpc */ /* 0x04e2: init_gpc */
0x4ea05043, 0x4ea05043,
0x1fb90804, 0x1fb90804,
0x8d21f402, 0x9d21f402,
0x010c4ea0, 0x010c4ea0,
0x21f4f4bd, 0x21f4f4bd,
0x044ea08d, 0x044ea09d,
0x8d21f401, 0x9d21f401,
0x01004ea0, 0x01004ea0,
0xf402f7f0, 0xf402f7f0,
0x4ea08d21, 0x4ea09d21,
/* 0x041e: init_gpc_wait */ /* 0x050a: init_gpc_wait */
0x21f40800, 0x21f40800,
0x1fffc868, 0x1fffc868,
0xa0fa0bf4, 0xa0fa0bf4,
...@@ -519,370 +576,374 @@ uint32_t nve0_grhub_code[] = { ...@@ -519,370 +576,374 @@ uint32_t nve0_grhub_code[] = {
0x080007f1, 0x080007f1,
0xd00203f0, 0xd00203f0,
0x04bd0001, 0x04bd0001,
/* 0x0458: main */ /* 0x0544: main */
0xf40031f4, 0xf40031f4,
0xd7f00028, 0xd7f00028,
0x3921f410, 0x3921f410,
0xb1f401f4, 0xb1f401f4,
0xf54001e4, 0xf54001e4,
0xbd00de1b, 0xbd00e91b,
0x0499f094, 0x0499f094,
0x0f0007f1, 0x0f0007f1,
0xd00203f0, 0xd00203f0,
0x04bd0009, 0x04bd0009,
0x0b0017f1, 0xc00017f1,
0xcf0614b6, 0xcf0213f0,
0x11cf4012, 0x27f10011,
0x1f13c800, 0x23f0c100,
0x00870bf5, 0x0022cf02,
0xf41f23c8, 0xf51f13c8,
0x20f9620b, 0xc800890b,
0xbd0212b9, 0x0bf41f23,
0x0799f094, 0xb920f962,
0x0f0007f1, 0x94bd0212,
0xd00203f0,
0x04bd0009,
0xf40132f4,
0x21f50231,
0x94bd0801,
0xf10799f0, 0xf10799f0,
0xf0170007, 0xf00f0007,
0x09d00203, 0x09d00203,
0xfc04bd00, 0xf404bd00,
0xf094bd20, 0x31f40132,
0x07f10699, 0x7921f502,
0x03f00f00, 0xf094bd09,
0x0009d002, 0x07f10799,
0x31f404bd,
0x0121f501,
0xf094bd08,
0x07f10699,
0x03f01700, 0x03f01700,
0x0009d002, 0x0009d002,
0x0ef404bd, 0x20fc04bd,
/* 0x04f9: chsw_prev_no_next */
0xb920f931,
0x32f40212,
0x0232f401,
0x080121f5,
0x17f120fc,
0x14b60b00,
0x0012d006,
/* 0x0517: chsw_no_prev */
0xc8130ef4,
0x0bf41f23,
0x0131f40d,
0xf50232f4,
/* 0x0527: chsw_done */
0xf1080121,
0xb60b0c17,
0x27f00614,
0x0012d001,
0x99f094bd, 0x99f094bd,
0x0007f104, 0x0007f106,
0x0203f00f,
0xbd0009d0,
0x0131f404,
0x097921f5,
0x99f094bd,
0x0007f106,
0x0203f017, 0x0203f017,
0xbd0009d0, 0xbd0009d0,
0x130ef504, 0x330ef404,
/* 0x0549: main_not_ctx_switch */ /* 0x05ec: chsw_prev_no_next */
0x01e4b0ff, 0x12b920f9,
0xb90d1bf4, 0x0132f402,
0x21f502f2, 0xf50232f4,
0x0ef40795, 0xfc097921,
/* 0x0559: main_not_ctx_chan */ 0x0007f120,
0x02e4b046, 0x0203f0c0,
0xbd321bf4, 0xbd0002d0,
0x0799f094, 0x130ef404,
0x0f0007f1, /* 0x060c: chsw_no_prev */
0xf41f23c8,
0x31f40d0b,
0x0232f401,
0x097921f5,
/* 0x061c: chsw_done */
0xf10127f0,
0xf0c30007,
0x02d00203,
0xbd04bd00,
0x0499f094,
0x170007f1,
0xd00203f0, 0xd00203f0,
0x04bd0009, 0x04bd0009,
0xf40132f4, 0xff080ef5,
0x21f50232, /* 0x0640: main_not_ctx_switch */
0x94bd0801, 0xf401e4b0,
0xf2b90d1b,
0x0a21f502,
0x460ef409,
/* 0x0650: main_not_ctx_chan */
0xf402e4b0,
0x94bd321b,
0xf10799f0, 0xf10799f0,
0xf0170007, 0xf00f0007,
0x09d00203, 0x09d00203,
0xf404bd00, 0xf404bd00,
/* 0x058e: main_not_ctx_save */ 0x32f40132,
0xef94110e, 0x7921f502,
0x01f5f010, 0xf094bd09,
0x02fe21f5, 0x07f10799,
0xfec00ef5, 0x03f01700,
/* 0x059c: main_done */ 0x0009d002,
0x29f024bd, 0x0ef404bd,
0x0007f11f, /* 0x0685: main_not_ctx_save */
0x0203f008, 0x10ef9411,
0xbd0002d0, 0xf501f5f0,
0xab0ef504, 0xf5037e21,
/* 0x05b1: ih */ /* 0x0693: main_done */
0xfe80f9fe, 0xbdfeb50e,
0x80f90188, 0x1f29f024,
0xa0f990f9, 0x080007f1,
0xd0f9b0f9, 0xd00203f0,
0xf0f9e0f9, 0x04bd0002,
0x0acf04bd, 0xfea00ef5,
0x04abc480, /* 0x06a8: ih */
0xf11d0bf4, 0x88fe80f9,
0xf01900b7, 0xf980f901,
0xbecf10d7, 0xf9a0f990,
0x00bfcf40, 0xf9d0f9b0,
0xbdf0f9e0,
0x00a7f104,
0x00a3f002,
0xc400aacf,
0x0bf404ab,
0x10d7f030,
0x1a00e7f1,
0xcf00e3f0,
0xf7f100ee,
0xf3f01900,
0x00ffcf00,
0xb70421f4, 0xb70421f4,
0xf00400b0, 0xf00400b0,
0xbed001e7, 0x07f101e7,
/* 0x05e9: ih_no_fifo */ 0x03f01d00,
0x00abe400, 0x000ed000,
0x0d0bf401, /* 0x06fa: ih_no_fifo */
0xf110d7f0, 0xabe404bd,
0xf44001e7, 0x0bf40100,
/* 0x05fa: ih_no_ctxsw */ 0x10d7f00d,
0xb7f10421, 0x4001e7f1,
0xb0bd0104, /* 0x070b: ih_no_ctxsw */
0xf4b4abff, 0xf10421f4,
0xa7f10d0b, 0xbd0104b7,
0xa4b60c1c, 0xb4abffb0,
0x00abd006, 0xf10f0bf4,
/* 0x0610: ih_no_other */ 0xf0070007,
0xfc400ad0, 0x0bd00303,
/* 0x0723: ih_no_other */
0xf104bd00,
0xf0010007,
0x0ad00003,
0xfc04bd00,
0xfce0fcf0, 0xfce0fcf0,
0xfcb0fcd0, 0xfcb0fcd0,
0xfc90fca0, 0xfc90fca0,
0x0088fe80, 0x0088fe80,
0x32f480fc, 0x32f480fc,
/* 0x062b: ctx_4170s */ /* 0x0747: ctx_4170s */
0xf101f800, 0xf001f800,
0xf04170e7, 0xffb910f5,
0xf5f040e3, 0x70e7f102,
0x8d21f410, 0x40e3f041,
/* 0x063a: ctx_4170w */ 0xf89d21f4,
/* 0x0759: ctx_4170w */
0x70e7f100,
0x40e3f041,
0xb96821f4,
0xf4f002ff,
0xf01bf410,
/* 0x076e: ctx_redswitch */
0xe7f100f8, 0xe7f100f8,
0xe3f04170, 0xe5f00200,
0x6821f440, 0x20e5f040,
0xf410f4f0, 0xf110e5f0,
0xf0850007,
0x0ed00103,
0xf004bd00,
/* 0x078a: ctx_redswitch_delay */
0xf2b608f7,
0xfd1bf401,
0x0400e5f1,
0x0100e5f1,
0x850007f1,
0xd00103f0,
0x04bd000e,
/* 0x07a6: ctx_86c */
0x07f100f8,
0x03f01b00,
0x000fd002,
0xffb904bd,
0x14e7f102,
0x40e3f08a,
0xb99d21f4,
0xe7f102ff,
0xe3f0a86c,
0x9d21f441,
/* 0x07ce: ctx_mem */
0x07f100f8,
0x03f08400,
0x000fd002,
/* 0x07da: ctx_mem_wait */
0xf7f104bd,
0xf3f08400,
0x00ffcf02,
0xf405fffd,
0x00f8f31b, 0x00f8f31b,
/* 0x064c: ctx_redswitch */ /* 0x07ec: ctx_load */
0x0614e7f1,
0xf106e4b6,
0xd00270f7,
0xf7f000ef,
/* 0x065d: ctx_redswitch_delay */
0x01f2b608,
0xf1fd1bf4,
0xd00770f7,
0x00f800ef,
/* 0x066c: ctx_86c */
0x086ce7f1,
0xd006e4b6,
0xe7f100ef,
0xe3f08a14,
0x8d21f440,
0xa86ce7f1,
0xf441e3f0,
0x00f88d21,
/* 0x068c: ctx_load */
0x99f094bd, 0x99f094bd,
0x0007f105, 0x0007f105,
0x0203f00f, 0x0203f00f,
0xbd0009d0, 0xbd0009d0,
0x0ca7f004, 0x0ca7f004,
0xf1c921f4, 0xbdd021f4,
0xb60a2417, 0x0007f1f4,
0x10d00614, 0x0203f089,
0x0037f100, 0xbd000fd0,
0x0634b60b, 0x0007f104,
0xf14032d0, 0x0203f0c1,
0xb60a0c17, 0xbd0002d0,
0x47f00614, 0x0007f104,
0x0012d007, 0x0203f083,
/* 0x06c7: ctx_chan_wait_0 */ 0xbd0002d0,
0xcf4014d0, 0x07f7f004,
0x44f04014, 0x07ce21f5,
0xfa1bf41f, 0xc00007f1,
0xfe0032d0, 0xd00203f0,
0x2af0000b, 0x04bd0002,
0x0424b61f, 0xf0000bfe,
0xbd0220b6, 0x24b61f2a,
0x0220b604,
0x99f094bd,
0x0007f108,
0x0203f00f,
0xbd0009d0,
0x0007f104,
0x0203f081,
0xbd0002d0,
0x0027f104,
0x0023f100,
0x0225f080,
0x880007f1,
0xd00203f0,
0x04bd0002,
0xf11017f0,
0xf0020027,
0x12fa0223,
0xbd03f805,
0x0899f094, 0x0899f094,
0x0f0007f1, 0x170007f1,
0xd00203f0, 0xd00203f0,
0x04bd0009, 0x04bd0009,
0x0a0417f1, 0xb6810198,
0xd00614b6, 0x02981814,
0x17f10012, 0x0825b680,
0x14b60a20, 0x800512fd,
0x0227f006, 0x94bd1601,
0x800023f1, 0xf10999f0,
0xf00012d0, 0xf00f0007,
0x27f11017,
0x23f00200,
0x0512fa02,
0x94bd03f8,
0xf10899f0,
0xf0170007,
0x09d00203, 0x09d00203,
0x9804bd00, 0xf104bd00,
0x14b68101, 0xf0810007,
0x80029818, 0x01d00203,
0xfd0825b6, 0xf004bd00,
0x01800512, 0x07f10127,
0xf094bd16, 0x03f08800,
0x07f10999, 0x0002d002,
0x03f00f00, 0x17f104bd,
0x0009d002, 0x13f00100,
0x27f104bd, 0x0501fa06,
0x24b60a04, 0x94bd03f8,
0x0021d006, 0xf10999f0,
0xf10127f0,
0xb60a2017,
0x12d00614,
0x0017f100,
0x0613f001,
0xf80501fa,
0xf094bd03,
0x07f10999,
0x03f01700,
0x0009d002,
0x94bd04bd,
0xf10599f0,
0xf0170007, 0xf0170007,
0x09d00203, 0x09d00203,
0xf804bd00, 0xbd04bd00,
/* 0x0795: ctx_chan */ 0x0599f094,
0x8c21f500, 0x170007f1,
0x0ca7f006, 0xd00203f0,
0xf1c921f4, 0x04bd0009,
0xb60a1017, /* 0x090a: ctx_chan */
0x27f00614, 0x21f500f8,
0x0012d005, 0xa7f007ec,
/* 0x07ac: ctx_chan_wait */ 0xd021f40c,
0xfd0012cf, 0x0a1017f1,
0x1bf40522, 0xf00614b6,
/* 0x07b7: ctx_mmio_exec */ 0x21f505f7,
0x9800f8fa, 0x00f807ce,
0x27f14103, /* 0x0924: ctx_mmio_exec */
0x24b60a04, 0xf1410398,
0x0023d006, 0xf0810007,
/* 0x07c6: ctx_mmio_loop */ 0x03d00203,
0x34c434bd, 0xbd04bd00,
0x0f1bf4ff, /* 0x0935: ctx_mmio_loop */
0x020057f1, 0xff34c434,
0xfa0653f0, 0xf10f1bf4,
0x03f80535, 0xf0020057,
/* 0x07d8: ctx_mmio_pull */ 0x35fa0653,
0x98804e98, /* 0x0947: ctx_mmio_pull */
0x21f4814f, 0x9803f805,
0x0830b68d, 0x4f98804e,
0xf40112b6, 0x9d21f481,
/* 0x07ea: ctx_mmio_done */ 0xb60830b6,
0x0398df1b, 0x1bf40112,
0x0023d016, /* 0x0959: ctx_mmio_done */
0x160398df,
0x810007f1,
0xd00203f0,
0x04bd0003,
0xf1400080, 0xf1400080,
0xf0010017, 0xf0010017,
0x01fa0613, 0x01fa0613,
0xf803f806, 0xf803f806,
/* 0x0801: ctx_xfer */ /* 0x0979: ctx_xfer */
0x00f7f100, 0x04e7f000,
0x06f4b60c, 0x020007f1,
0xd004e7f0, 0xd00303f0,
/* 0x080e: ctx_xfer_idle */ 0x04bd000e,
0xfecf80fe, /* 0x0988: ctx_xfer_idle */
0x00e4f100, 0x0000e7f1,
0xf91bf420, 0xcf03e3f0,
0xf40611f4, 0xe4f100ee,
/* 0x081e: ctx_xfer_pre */ 0x1bf42000,
0xf7f00d02, 0x0611f4f2,
0x6c21f510, /* 0x099f: ctx_xfer_pre */
0x1c11f406, 0xf00d02f4,
/* 0x0828: ctx_xfer_pre_load */ 0x21f510f7,
0xf502f7f0, 0x11f407a6,
0xf5062b21, /* 0x09a9: ctx_xfer_pre_load */
0xf5063a21, 0x02f7f01c,
0xbd064c21, 0x074721f5,
0x2b21f5f4, 0x075921f5,
0x8c21f506, 0x076e21f5,
/* 0x0841: ctx_xfer_exec */ 0x21f5f4bd,
0x16019806, 0x21f50747,
0x041427f1, /* 0x09c2: ctx_xfer_exec */
0xd00624b6, 0x019807ec,
0xe7f10020, 0xf124bd16,
0xf0050007,
0x02d00103,
0xb904bd00,
0xe7f1021f,
0xe3f0a500, 0xe3f0a500,
0x021fb941, 0x9d21f441,
0xb68d21f4, 0xf001fcf0,
0xfcf004e0, 0x24b6022c,
0x022cf001, 0x05f2fd01,
0xfd0124b6, 0xf102ffb9,
0x21f405f2, 0xf0a504e7,
0xfc17f18d, 0x21f441e3,
0x0213f04a, 0x6a21f59d,
0xd00c27f0, 0xf124bd02,
0x21f50012, 0xf047fc07,
0x27f10215, 0x02d00203,
0x23f047fc, 0xf004bd00,
0x0020d002, 0x20b6012c,
0xb6012cf0, 0xfc07f103,
0x12d00320, 0x0203f04a,
0x01acf000, 0xbd0002d0,
0x01acf004,
0xf006a5f0, 0xf006a5f0,
0x0c9800b7, 0x0c9800b7,
0x010d9800, 0x010d9800,
0xf500e7f0, 0xf500e7f0,
0xf0016621, 0xf0016f21,
0x21f508a7, 0x21f508a7,
0x21f50109, 0x21f50110,
0x01f40215, 0x01f4025e,
0x0ca7f022, 0x0ca7f013,
0xf1c921f4, 0xf0d021f4,
0xb60a1017, 0x21f505f7,
0x27f00614, 0x02f407ce,
0x0012d005, /* 0x0a51: ctx_xfer_post */
/* 0x08c8: ctx_xfer_post_save_wait */ 0x02f7f02e,
0xfd0012cf, 0x074721f5,
0x1bf40522, 0x21f5f4bd,
0x2e02f4fa, 0x21f507a6,
/* 0x08d4: ctx_xfer_post */ 0x21f5027f,
0xf502f7f0, 0xf4bd0759,
0xbd062b21, 0x074721f5,
0x6c21f5f4, 0x981011f4,
0x3421f506, 0x11fd4001,
0x3a21f502, 0x070bf405,
0xf5f4bd06, 0x092421f5,
0xf4062b21, /* 0x0a7c: ctx_xfer_no_post_mmio */
0x01981011, /* 0x0a7c: ctx_xfer_done */
0x0511fd40, 0x000000f8,
0xf5070bf4,
/* 0x08ff: ctx_xfer_no_post_mmio */
/* 0x08ff: ctx_xfer_done */
0xf807b721,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
......
...@@ -206,14 +206,14 @@ uint32_t nvf0_grhub_data[] = { ...@@ -206,14 +206,14 @@ uint32_t nvf0_grhub_data[] = {
}; };
uint32_t nvf0_grhub_code[] = { uint32_t nvf0_grhub_code[] = {
0x031b0ef5, 0x039b0ef5,
/* 0x0004: queue_put */ /* 0x0004: queue_put */
0x9800d898, 0x9800d898,
0x86f001d9, 0x86f001d9,
0x0489b808, 0x0489b808,
0xf00c1bf4, 0xf00c1bf4,
0x21f502f7, 0x21f502f7,
0x00f802fe, 0x00f8037e,
/* 0x001c: queue_put_next */ /* 0x001c: queue_put_next */
0xb60798c4, 0xb60798c4,
0x8dbb0384, 0x8dbb0384,
...@@ -237,184 +237,214 @@ uint32_t nvf0_grhub_code[] = { ...@@ -237,184 +237,214 @@ uint32_t nvf0_grhub_code[] = {
/* 0x0066: queue_get_done */ /* 0x0066: queue_get_done */
0x00f80132, 0x00f80132,
/* 0x0068: nv_rd32 */ /* 0x0068: nv_rd32 */
0x0728b7f1, 0xf002ecb9,
0xb906b4b6, 0x07f11fc9,
0xc9f002ec, 0x03f0ca00,
0x00bcd01f, 0x000cd001,
/* 0x0078: nv_rd32_wait */ /* 0x007a: nv_rd32_wait */
0xc800bccf, 0xc7f104bd,
0x1bf41fcc, 0xc3f0ca00,
0x06a7f0fa, 0x00cccf01,
0x010921f5, 0xf41fccc8,
0xf840bfcf, 0xa7f0f31b,
/* 0x008d: nv_wr32 */ 0x1021f506,
0x28b7f100, 0x00f7f101,
0x06b4b607, 0x01f3f0cb,
0xb980bfd0, 0xf800ffcf,
0xc9f002ec, /* 0x009d: nv_wr32 */
0x1ec9f01f, 0x0007f100,
/* 0x00a3: nv_wr32_wait */ 0x0103f0cc,
0xcf00bcd0, 0xbd000fd0,
0xccc800bc, 0x02ecb904,
0xfa1bf41f, 0xf01fc9f0,
/* 0x00ae: watchdog_reset */ 0x07f11ec9,
0x87f100f8, 0x03f0ca00,
0x84b60430, 0x000cd001,
0x1ff9f006, /* 0x00be: nv_wr32_wait */
0xf8008fd0, 0xc7f104bd,
/* 0x00bd: watchdog_clear */ 0xc3f0ca00,
0x3087f100, 0x00cccf01,
0x0684b604, 0xf41fccc8,
0xf80080d0, 0x00f8f31b,
/* 0x00c9: wait_donez */ /* 0x00d0: wait_donez */
0xf094bd00, 0x99f094bd,
0x07f10099, 0x0007f100,
0x03f03700, 0x0203f037,
0x0009d002, 0xbd0009d0,
0x07f104bd, 0x0007f104,
0x03f00600, 0x0203f006,
0x000ad002, 0xbd000ad0,
/* 0x00e6: wait_donez_ne */ /* 0x00ed: wait_donez_ne */
0x87f104bd, 0x0087f104,
0x83f00000, 0x0183f000,
0x0088cf01, 0xff0088cf,
0xf4888aff, 0x1bf4888a,
0x94bdf31b, 0xf094bdf3,
0xf10099f0,
0xf0170007,
0x09d00203,
0xf804bd00,
/* 0x0109: wait_doneo */
0xf094bd00,
0x07f10099, 0x07f10099,
0x03f03700, 0x03f01700,
0x0009d002, 0x0009d002,
0x87f104bd, 0x00f804bd,
0x84b60818, /* 0x0110: wait_doneo */
0x008ad006,
/* 0x0124: wait_doneo_e */
0x040087f1,
0xcf0684b6,
0x8aff0088,
0xf30bf488,
0x99f094bd, 0x99f094bd,
0x0007f100, 0x0007f100,
0x0203f017, 0x0203f037,
0xbd0009d0, 0xbd0009d0,
/* 0x0147: mmctx_size */ 0x0007f104,
0xbd00f804, 0x0203f006,
/* 0x0149: nv_mmctx_size_loop */ 0xbd000ad0,
0x00e89894, /* 0x012d: wait_doneo_e */
0xb61a85b6, 0x0087f104,
0x84b60180, 0x0183f000,
0x0098bb02, 0xff0088cf,
0xb804e0b6, 0x0bf4888a,
0x1bf404ef, 0xf094bdf3,
0x029fb9eb, 0x07f10099,
/* 0x0166: mmctx_xfer */ 0x03f01700,
0x94bd00f8, 0x0009d002,
0xf10199f0, 0x00f804bd,
0xf0370007, /* 0x0150: mmctx_size */
0x09d00203, /* 0x0152: nv_mmctx_size_loop */
0xf104bd00, 0xe89894bd,
0xb6071087, 0x1a85b600,
0x94bd0684, 0xb60180b6,
0xf405bbfd, 0x98bb0284,
0x8bd0090b, 0x04e0b600,
0x0099f000, 0xf404efb8,
/* 0x018c: mmctx_base_disabled */ 0x9fb9eb1b,
0xf405eefd, /* 0x016f: mmctx_xfer */
0x8ed00c0b, 0xbd00f802,
0xc08fd080, 0x0199f094,
/* 0x019b: mmctx_multi_disabled */ 0x370007f1,
0xb70199f0, 0xd00203f0,
0xc8010080, 0x04bd0009,
0xbbfd94bd,
0x120bf405,
0xc40007f1,
0xd00103f0,
0x04bd000b,
/* 0x0197: mmctx_base_disabled */
0xfd0099f0,
0x0bf405ee,
0x0007f11e,
0x0103f0c6,
0xbd000ed0,
0x0007f104,
0x0103f0c7,
0xbd000fd0,
0x0199f004,
/* 0x01b8: mmctx_multi_disabled */
0xb600abc8,
0xb9f010b4,
0x01aec80c,
0xfd11e4b6,
0x07f105be,
0x03f0c500,
0x000bd001,
/* 0x01d6: mmctx_exec_loop */
/* 0x01d6: mmctx_wait_free */
0xe7f104bd,
0xe3f0c500,
0x00eecf01,
0xf41fe4f0,
0xce98f30b,
0x05e9fd00,
0xc80007f1,
0xd00103f0,
0x04bd000e,
0xb804c0b6,
0x1bf404cd,
0x02abc8d8,
/* 0x0207: mmctx_fini_wait */
0xf11f1bf4,
0xf0c500b7,
0xbbcf01b3,
0x1fb4f000,
0xf410b4b0,
0xa7f0f01b,
0xd021f402,
/* 0x0223: mmctx_stop */
0xc82b0ef4,
0xb4b600ab, 0xb4b600ab,
0x0cb9f010, 0x0cb9f010,
0xb601aec8, 0xf112b9f0,
0xbefd11e4, 0xf0c50007,
0x008bd005, 0x0bd00103,
/* 0x01b4: mmctx_exec_loop */ /* 0x023b: mmctx_stop_wait */
/* 0x01b4: mmctx_wait_free */ 0xf104bd00,
0xf0008ecf, 0xf0c500b7,
0x0bf41fe4, 0xbbcf01b3,
0x00ce98fa, 0x12bbc800,
0xd005e9fd, /* 0x024b: mmctx_done */
0xc0b6c08e, 0xbdf31bf4,
0x04cdb804, 0x0199f094,
0xc8e81bf4, 0x170007f1,
0x1bf402ab, 0xd00203f0,
/* 0x01d5: mmctx_fini_wait */ 0x04bd0009,
0x008bcf18, /* 0x025e: strand_wait */
0xb01fb4f0, 0xa0f900f8,
0x1bf410b4, 0xf402a7f0,
0x02a7f0f7, 0xa0fcd021,
0xf4c921f4, /* 0x026a: strand_pre */
/* 0x01ea: mmctx_stop */ 0x97f000f8,
0xabc81b0e, 0xfc07f10c,
0x10b4b600, 0x0203f04a,
0xf00cb9f0, 0xbd0009d0,
0x8bd012b9, 0x5e21f504,
/* 0x01f9: mmctx_stop_wait */ /* 0x027f: strand_post */
0x008bcf00, 0xf000f802,
0xf412bbc8, 0x07f10d97,
/* 0x0202: mmctx_done */ 0x03f04afc,
0x94bdfa1b,
0xf10199f0,
0xf0170007,
0x09d00203,
0xf804bd00,
/* 0x0215: strand_wait */
0xf0a0f900,
0x21f402a7,
0xf8a0fcc9,
/* 0x0221: strand_pre */
0xfc87f100,
0x0283f04a,
0xd00c97f0,
0x21f50089,
0x00f80215,
/* 0x0234: strand_post */
0x4afc87f1,
0xf00283f0,
0x89d00d97,
0x1521f500,
/* 0x0247: strand_set */
0xf100f802,
0xf04ffca7,
0xaba202a3,
0xc7f00500,
0x00acd00f,
0xd00bc7f0,
0x21f500bc,
0xaed00215,
0x0ac7f000,
0xf500bcd0,
0xf8021521,
/* 0x0271: strand_ctx_init */
0xf094bd00,
0x07f10399,
0x03f03700,
0x0009d002, 0x0009d002,
0x21f504bd, 0x21f504bd,
0xe7f00221, 0x00f8025e,
0x4721f503, /* 0x0294: strand_set */
0xfca7f102, 0xf10fc7f0,
0x02a3f046, 0xf04ffc07,
0x0400aba0, 0x0cd00203,
0xf040a0d0, 0xf004bd00,
0xbcd001c7, 0x07f10bc7,
0x1521f500, 0x03f04afc,
0x010c9202, 0x000cd002,
0xf000acd0, 0x07f104bd,
0xbcd002c7, 0x03f04ffc,
0x1521f500, 0x000ed002,
0x3421f502, 0xc7f004bd,
0x8087f102, 0xfc07f10a,
0x0684b608, 0x0203f04a,
0xb70089cf, 0xbd000cd0,
0x95220080, 0x5e21f504,
/* 0x02ca: ctx_init_strand_loop */ /* 0x02d3: strand_ctx_init */
0xbd00f802,
0x0399f094,
0x370007f1,
0xd00203f0,
0x04bd0009,
0x026a21f5,
0xf503e7f0,
0xbd029421,
0xfc07f1c4,
0x0203f047,
0xbd000cd0,
0x01c7f004,
0x4afc07f1,
0xd00203f0,
0x04bd000c,
0x025e21f5,
0xf1010c92,
0xf046fc07,
0x0cd00203,
0xf004bd00,
0x07f102c7,
0x03f04afc,
0x000cd002,
0x21f504bd,
0x21f5025e,
0x87f1027f,
0x83f04200,
0x0097f102,
0x0293f020,
0x950099cf,
/* 0x034a: ctx_init_strand_loop */
0x8ed008fe, 0x8ed008fe,
0x408ed000, 0x408ed000,
0xb6808acf, 0xb6808acf,
...@@ -428,7 +458,7 @@ uint32_t nvf0_grhub_code[] = { ...@@ -428,7 +458,7 @@ uint32_t nvf0_grhub_code[] = {
0x170007f1, 0x170007f1,
0xd00203f0, 0xd00203f0,
0x04bd0009, 0x04bd0009,
/* 0x02fe: error */ /* 0x037e: error */
0x07f100f8, 0x07f100f8,
0x03f00500, 0x03f00500,
0x000fd002, 0x000fd002,
...@@ -436,74 +466,101 @@ uint32_t nvf0_grhub_code[] = { ...@@ -436,74 +466,101 @@ uint32_t nvf0_grhub_code[] = {
0x0007f101, 0x0007f101,
0x0303f007, 0x0303f007,
0xbd000fd0, 0xbd000fd0,
/* 0x031b: init */ /* 0x039b: init */
0xbd00f804, 0xbd00f804,
0x0004fe04, 0x0007fe04,
0xf10007fe, 0x420017f1,
0xf0120017, 0xcf0013f0,
0x12d00227, 0x11e70011,
0xb117f100, 0x14b60109,
0x0010fe05, 0x0014fe08,
0x040017f1, 0xf10227f0,
0xf1c010d0, 0xf0120007,
0xb6040437, 0x02d00003,
0x27f10634, 0xf104bd00,
0x32d02003, 0xfe06a817,
0x0427f100, 0x24bd0010,
0x0132d020, 0x070007f1,
0xd00003f0,
0x04bd0002,
0x200327f1,
0x010007f1,
0xd00103f0,
0x04bd0002,
0x200427f1,
0x010407f1,
0xd00103f0,
0x04bd0002,
0x200b27f1, 0x200b27f1,
0xf10232d0, 0x010807f1,
0xd0200c27, 0xd00103f0,
0x27f10732, 0x04bd0002,
0x24b60c24, 0x200c27f1,
0x0003b906, 0x011c07f1,
0xf10023d0, 0xd00103f0,
0x04bd0002,
0xf1010392,
0xf0090007,
0x03d00303,
0xf104bd00,
0xf0870427, 0xf0870427,
0x12d00023, 0x07f10023,
0x0012b700, 0x03f00400,
0x0427f001, 0x0002d000,
0xf40012d0, 0x27f004bd,
0xe7f11031, 0x0007f104,
0xe3f09604, 0x0003f003,
0x6821f440, 0xbd0002d0,
0x8090f1c7, 0x1031f404,
0xf4f00301, 0x9604e7f1,
0x020f801f, 0xf440e3f0,
0xbb0117f0, 0xfeb96821,
0x12b6041f, 0x90f1c702,
0x0c27f101, 0xf0030180,
0x0624b604, 0x0f801ff4,
0xd00021d0, 0x0117f002,
0x17f14021, 0xb6041fbb,
0x07f10112,
0x03f00300,
0x0001d001,
0x07f104bd,
0x03f00400,
0x0001d001,
0x17f104bd,
0x0e980100, 0x0e980100,
0x010f9800, 0x010f9800,
0x014721f5, 0x015021f5,
0x070037f1, 0xf1081495,
0x950634b6, 0xf0c00007,
0x34d00814, 0x04d00103,
0x4034d000, 0xf104bd00,
0x130030b7, 0xf0c10007,
0xb6001fbb, 0x04d00103,
0x3fd002f5, 0xb704bd00,
0x0815b600, 0xbb130030,
0xf5b6001f,
0x0007f102,
0x0103f0d3,
0xbd000fd0,
0x0815b604,
0xb60110b6, 0xb60110b6,
0x1fb90814, 0x1fb90814,
0x7121f502, 0xd321f502,
0x001fbb02, 0x001fbb02,
0xf1020398, 0xf1020398,
0xf0200047, 0xf0200047,
/* 0x03f6: init_gpc */ /* 0x04e2: init_gpc */
0x4ea05043, 0x4ea05043,
0x1fb90804, 0x1fb90804,
0x8d21f402, 0x9d21f402,
0x010c4ea0, 0x010c4ea0,
0x21f4f4bd, 0x21f4f4bd,
0x044ea08d, 0x044ea09d,
0x8d21f401, 0x9d21f401,
0x01004ea0, 0x01004ea0,
0xf402f7f0, 0xf402f7f0,
0x4ea08d21, 0x4ea09d21,
/* 0x041e: init_gpc_wait */ /* 0x050a: init_gpc_wait */
0x21f40800, 0x21f40800,
0x1fffc868, 0x1fffc868,
0xa0fa0bf4, 0xa0fa0bf4,
...@@ -519,370 +576,374 @@ uint32_t nvf0_grhub_code[] = { ...@@ -519,370 +576,374 @@ uint32_t nvf0_grhub_code[] = {
0x300007f1, 0x300007f1,
0xd00203f0, 0xd00203f0,
0x04bd0001, 0x04bd0001,
/* 0x0458: main */ /* 0x0544: main */
0xf40031f4, 0xf40031f4,
0xd7f00028, 0xd7f00028,
0x3921f410, 0x3921f410,
0xb1f401f4, 0xb1f401f4,
0xf54001e4, 0xf54001e4,
0xbd00de1b, 0xbd00e91b,
0x0499f094, 0x0499f094,
0x370007f1, 0x370007f1,
0xd00203f0, 0xd00203f0,
0x04bd0009, 0x04bd0009,
0x0b0017f1, 0xc00017f1,
0xcf0614b6, 0xcf0213f0,
0x11cf4012, 0x27f10011,
0x1f13c800, 0x23f0c100,
0x00870bf5, 0x0022cf02,
0xf41f23c8, 0xf51f13c8,
0x20f9620b, 0xc800890b,
0xbd0212b9, 0x0bf41f23,
0x0799f094, 0xb920f962,
0x370007f1, 0x94bd0212,
0xd00203f0,
0x04bd0009,
0xf40132f4,
0x21f50231,
0x94bd0801,
0xf10799f0, 0xf10799f0,
0xf0170007, 0xf0370007,
0x09d00203, 0x09d00203,
0xfc04bd00, 0xf404bd00,
0xf094bd20, 0x31f40132,
0x07f10699, 0x7921f502,
0x03f03700, 0xf094bd09,
0x0009d002, 0x07f10799,
0x31f404bd,
0x0121f501,
0xf094bd08,
0x07f10699,
0x03f01700, 0x03f01700,
0x0009d002, 0x0009d002,
0x0ef404bd, 0x20fc04bd,
/* 0x04f9: chsw_prev_no_next */
0xb920f931,
0x32f40212,
0x0232f401,
0x080121f5,
0x17f120fc,
0x14b60b00,
0x0012d006,
/* 0x0517: chsw_no_prev */
0xc8130ef4,
0x0bf41f23,
0x0131f40d,
0xf50232f4,
/* 0x0527: chsw_done */
0xf1080121,
0xb60b0c17,
0x27f00614,
0x0012d001,
0x99f094bd, 0x99f094bd,
0x0007f104, 0x0007f106,
0x0203f037,
0xbd0009d0,
0x0131f404,
0x097921f5,
0x99f094bd,
0x0007f106,
0x0203f017, 0x0203f017,
0xbd0009d0, 0xbd0009d0,
0x130ef504, 0x330ef404,
/* 0x0549: main_not_ctx_switch */ /* 0x05ec: chsw_prev_no_next */
0x01e4b0ff, 0x12b920f9,
0xb90d1bf4, 0x0132f402,
0x21f502f2, 0xf50232f4,
0x0ef40795, 0xfc097921,
/* 0x0559: main_not_ctx_chan */ 0x0007f120,
0x02e4b046, 0x0203f0c0,
0xbd321bf4, 0xbd0002d0,
0x0799f094, 0x130ef404,
0x370007f1, /* 0x060c: chsw_no_prev */
0xf41f23c8,
0x31f40d0b,
0x0232f401,
0x097921f5,
/* 0x061c: chsw_done */
0xf10127f0,
0xf0c30007,
0x02d00203,
0xbd04bd00,
0x0499f094,
0x170007f1,
0xd00203f0, 0xd00203f0,
0x04bd0009, 0x04bd0009,
0xf40132f4, 0xff080ef5,
0x21f50232, /* 0x0640: main_not_ctx_switch */
0x94bd0801, 0xf401e4b0,
0xf2b90d1b,
0x0a21f502,
0x460ef409,
/* 0x0650: main_not_ctx_chan */
0xf402e4b0,
0x94bd321b,
0xf10799f0, 0xf10799f0,
0xf0170007, 0xf0370007,
0x09d00203, 0x09d00203,
0xf404bd00, 0xf404bd00,
/* 0x058e: main_not_ctx_save */ 0x32f40132,
0xef94110e, 0x7921f502,
0x01f5f010, 0xf094bd09,
0x02fe21f5, 0x07f10799,
0xfec00ef5, 0x03f01700,
/* 0x059c: main_done */ 0x0009d002,
0x29f024bd, 0x0ef404bd,
0x0007f11f, /* 0x0685: main_not_ctx_save */
0x0203f030, 0x10ef9411,
0xbd0002d0, 0xf501f5f0,
0xab0ef504, 0xf5037e21,
/* 0x05b1: ih */ /* 0x0693: main_done */
0xfe80f9fe, 0xbdfeb50e,
0x80f90188, 0x1f29f024,
0xa0f990f9, 0x300007f1,
0xd0f9b0f9, 0xd00203f0,
0xf0f9e0f9, 0x04bd0002,
0x0acf04bd, 0xfea00ef5,
0x04abc480, /* 0x06a8: ih */
0xf11d0bf4, 0x88fe80f9,
0xf01900b7, 0xf980f901,
0xbecf10d7, 0xf9a0f990,
0x00bfcf40, 0xf9d0f9b0,
0xbdf0f9e0,
0x00a7f104,
0x00a3f002,
0xc400aacf,
0x0bf404ab,
0x10d7f030,
0x1a00e7f1,
0xcf00e3f0,
0xf7f100ee,
0xf3f01900,
0x00ffcf00,
0xb70421f4, 0xb70421f4,
0xf00400b0, 0xf00400b0,
0xbed001e7, 0x07f101e7,
/* 0x05e9: ih_no_fifo */ 0x03f01d00,
0x00abe400, 0x000ed000,
0x0d0bf401, /* 0x06fa: ih_no_fifo */
0xf110d7f0, 0xabe404bd,
0xf44001e7, 0x0bf40100,
/* 0x05fa: ih_no_ctxsw */ 0x10d7f00d,
0xb7f10421, 0x4001e7f1,
0xb0bd0104, /* 0x070b: ih_no_ctxsw */
0xf4b4abff, 0xf10421f4,
0xa7f10d0b, 0xbd0104b7,
0xa4b60c1c, 0xb4abffb0,
0x00abd006, 0xf10f0bf4,
/* 0x0610: ih_no_other */ 0xf0070007,
0xfc400ad0, 0x0bd00303,
/* 0x0723: ih_no_other */
0xf104bd00,
0xf0010007,
0x0ad00003,
0xfc04bd00,
0xfce0fcf0, 0xfce0fcf0,
0xfcb0fcd0, 0xfcb0fcd0,
0xfc90fca0, 0xfc90fca0,
0x0088fe80, 0x0088fe80,
0x32f480fc, 0x32f480fc,
/* 0x062b: ctx_4170s */ /* 0x0747: ctx_4170s */
0xf101f800, 0xf001f800,
0xf04170e7, 0xffb910f5,
0xf5f040e3, 0x70e7f102,
0x8d21f410, 0x40e3f041,
/* 0x063a: ctx_4170w */ 0xf89d21f4,
/* 0x0759: ctx_4170w */
0x70e7f100,
0x40e3f041,
0xb96821f4,
0xf4f002ff,
0xf01bf410,
/* 0x076e: ctx_redswitch */
0xe7f100f8, 0xe7f100f8,
0xe3f04170, 0xe5f00200,
0x6821f440, 0x20e5f040,
0xf410f4f0, 0xf110e5f0,
0xf0850007,
0x0ed00103,
0xf004bd00,
/* 0x078a: ctx_redswitch_delay */
0xf2b608f7,
0xfd1bf401,
0x0400e5f1,
0x0100e5f1,
0x850007f1,
0xd00103f0,
0x04bd000e,
/* 0x07a6: ctx_86c */
0x07f100f8,
0x03f01b00,
0x000fd002,
0xffb904bd,
0x14e7f102,
0x40e3f08a,
0xb99d21f4,
0xe7f102ff,
0xe3f0a86c,
0x9d21f441,
/* 0x07ce: ctx_mem */
0x07f100f8,
0x03f08400,
0x000fd002,
/* 0x07da: ctx_mem_wait */
0xf7f104bd,
0xf3f08400,
0x00ffcf02,
0xf405fffd,
0x00f8f31b, 0x00f8f31b,
/* 0x064c: ctx_redswitch */ /* 0x07ec: ctx_load */
0x0614e7f1,
0xf106e4b6,
0xd00270f7,
0xf7f000ef,
/* 0x065d: ctx_redswitch_delay */
0x01f2b608,
0xf1fd1bf4,
0xd00770f7,
0x00f800ef,
/* 0x066c: ctx_86c */
0x086ce7f1,
0xd006e4b6,
0xe7f100ef,
0xe3f08a14,
0x8d21f440,
0xa86ce7f1,
0xf441e3f0,
0x00f88d21,
/* 0x068c: ctx_load */
0x99f094bd, 0x99f094bd,
0x0007f105, 0x0007f105,
0x0203f037, 0x0203f037,
0xbd0009d0, 0xbd0009d0,
0x0ca7f004, 0x0ca7f004,
0xf1c921f4, 0xbdd021f4,
0xb60a2417, 0x0007f1f4,
0x10d00614, 0x0203f089,
0x0037f100, 0xbd000fd0,
0x0634b60b, 0x0007f104,
0xf14032d0, 0x0203f0c1,
0xb60a0c17, 0xbd0002d0,
0x47f00614, 0x0007f104,
0x0012d007, 0x0203f083,
/* 0x06c7: ctx_chan_wait_0 */ 0xbd0002d0,
0xcf4014d0, 0x07f7f004,
0x44f04014, 0x07ce21f5,
0xfa1bf41f, 0xc00007f1,
0xfe0032d0, 0xd00203f0,
0x2af0000b, 0x04bd0002,
0x0424b61f, 0xf0000bfe,
0xbd0220b6, 0x24b61f2a,
0x0220b604,
0x99f094bd,
0x0007f108,
0x0203f037,
0xbd0009d0,
0x0007f104,
0x0203f081,
0xbd0002d0,
0x0027f104,
0x0023f100,
0x0225f080,
0x880007f1,
0xd00203f0,
0x04bd0002,
0xf11017f0,
0xf0020027,
0x12fa0223,
0xbd03f805,
0x0899f094, 0x0899f094,
0x370007f1, 0x170007f1,
0xd00203f0, 0xd00203f0,
0x04bd0009, 0x04bd0009,
0x0a0417f1, 0xb6810198,
0xd00614b6, 0x02981814,
0x17f10012, 0x0825b680,
0x14b60a20, 0x800512fd,
0x0227f006, 0x94bd1601,
0x800023f1, 0xf10999f0,
0xf00012d0, 0xf0370007,
0x27f11017,
0x23f00200,
0x0512fa02,
0x94bd03f8,
0xf10899f0,
0xf0170007,
0x09d00203, 0x09d00203,
0x9804bd00, 0xf104bd00,
0x14b68101, 0xf0810007,
0x80029818, 0x01d00203,
0xfd0825b6, 0xf004bd00,
0x01800512, 0x07f10127,
0xf094bd16, 0x03f08800,
0x07f10999, 0x0002d002,
0x03f03700, 0x17f104bd,
0x0009d002, 0x13f00100,
0x27f104bd, 0x0501fa06,
0x24b60a04, 0x94bd03f8,
0x0021d006, 0xf10999f0,
0xf10127f0,
0xb60a2017,
0x12d00614,
0x0017f100,
0x0613f001,
0xf80501fa,
0xf094bd03,
0x07f10999,
0x03f01700,
0x0009d002,
0x94bd04bd,
0xf10599f0,
0xf0170007, 0xf0170007,
0x09d00203, 0x09d00203,
0xf804bd00, 0xbd04bd00,
/* 0x0795: ctx_chan */ 0x0599f094,
0x8c21f500, 0x170007f1,
0x0ca7f006, 0xd00203f0,
0xf1c921f4, 0x04bd0009,
0xb60a1017, /* 0x090a: ctx_chan */
0x27f00614, 0x21f500f8,
0x0012d005, 0xa7f007ec,
/* 0x07ac: ctx_chan_wait */ 0xd021f40c,
0xfd0012cf, 0x0a1017f1,
0x1bf40522, 0xf00614b6,
/* 0x07b7: ctx_mmio_exec */ 0x21f505f7,
0x9800f8fa, 0x00f807ce,
0x27f14103, /* 0x0924: ctx_mmio_exec */
0x24b60a04, 0xf1410398,
0x0023d006, 0xf0810007,
/* 0x07c6: ctx_mmio_loop */ 0x03d00203,
0x34c434bd, 0xbd04bd00,
0x0f1bf4ff, /* 0x0935: ctx_mmio_loop */
0x020057f1, 0xff34c434,
0xfa0653f0, 0xf10f1bf4,
0x03f80535, 0xf0020057,
/* 0x07d8: ctx_mmio_pull */ 0x35fa0653,
0x98804e98, /* 0x0947: ctx_mmio_pull */
0x21f4814f, 0x9803f805,
0x0830b68d, 0x4f98804e,
0xf40112b6, 0x9d21f481,
/* 0x07ea: ctx_mmio_done */ 0xb60830b6,
0x0398df1b, 0x1bf40112,
0x0023d016, /* 0x0959: ctx_mmio_done */
0x160398df,
0x810007f1,
0xd00203f0,
0x04bd0003,
0xf1400080, 0xf1400080,
0xf0010017, 0xf0010017,
0x01fa0613, 0x01fa0613,
0xf803f806, 0xf803f806,
/* 0x0801: ctx_xfer */ /* 0x0979: ctx_xfer */
0x00f7f100, 0x04e7f000,
0x06f4b60c, 0x020007f1,
0xd004e7f0, 0xd00303f0,
/* 0x080e: ctx_xfer_idle */ 0x04bd000e,
0xfecf80fe, /* 0x0988: ctx_xfer_idle */
0x00e4f100, 0x0000e7f1,
0xf91bf420, 0xcf03e3f0,
0xf40611f4, 0xe4f100ee,
/* 0x081e: ctx_xfer_pre */ 0x1bf42000,
0xf7f00d02, 0x0611f4f2,
0x6c21f510, /* 0x099f: ctx_xfer_pre */
0x1c11f406, 0xf00d02f4,
/* 0x0828: ctx_xfer_pre_load */ 0x21f510f7,
0xf502f7f0, 0x11f407a6,
0xf5062b21, /* 0x09a9: ctx_xfer_pre_load */
0xf5063a21, 0x02f7f01c,
0xbd064c21, 0x074721f5,
0x2b21f5f4, 0x075921f5,
0x8c21f506, 0x076e21f5,
/* 0x0841: ctx_xfer_exec */ 0x21f5f4bd,
0x16019806, 0x21f50747,
0x041427f1, /* 0x09c2: ctx_xfer_exec */
0xd00624b6, 0x019807ec,
0xe7f10020, 0xf124bd16,
0xf0050007,
0x02d00103,
0xb904bd00,
0xe7f1021f,
0xe3f0a500, 0xe3f0a500,
0x021fb941, 0x9d21f441,
0xb68d21f4, 0xf001fcf0,
0xfcf004e0, 0x24b6022c,
0x022cf001, 0x05f2fd01,
0xfd0124b6, 0xf102ffb9,
0x21f405f2, 0xf0a504e7,
0xfc17f18d, 0x21f441e3,
0x0213f04a, 0x6a21f59d,
0xd00c27f0, 0xf124bd02,
0x21f50012, 0xf047fc07,
0x27f10215, 0x02d00203,
0x23f047fc, 0xf004bd00,
0x0020d002, 0x20b6012c,
0xb6012cf0, 0xfc07f103,
0x12d00320, 0x0203f04a,
0x01acf000, 0xbd0002d0,
0x01acf004,
0xf006a5f0, 0xf006a5f0,
0x0c9800b7, 0x0c9800b7,
0x010d9800, 0x010d9800,
0xf500e7f0, 0xf500e7f0,
0xf0016621, 0xf0016f21,
0x21f508a7, 0x21f508a7,
0x21f50109, 0x21f50110,
0x01f40215, 0x01f4025e,
0x0ca7f022, 0x0ca7f013,
0xf1c921f4, 0xf0d021f4,
0xb60a1017, 0x21f505f7,
0x27f00614, 0x02f407ce,
0x0012d005, /* 0x0a51: ctx_xfer_post */
/* 0x08c8: ctx_xfer_post_save_wait */ 0x02f7f02e,
0xfd0012cf, 0x074721f5,
0x1bf40522, 0x21f5f4bd,
0x2e02f4fa, 0x21f507a6,
/* 0x08d4: ctx_xfer_post */ 0x21f5027f,
0xf502f7f0, 0xf4bd0759,
0xbd062b21, 0x074721f5,
0x6c21f5f4, 0x981011f4,
0x3421f506, 0x11fd4001,
0x3a21f502, 0x070bf405,
0xf5f4bd06, 0x092421f5,
0xf4062b21, /* 0x0a7c: ctx_xfer_no_post_mmio */
0x01981011, /* 0x0a7c: ctx_xfer_done */
0x0511fd40, 0x000000f8,
0xf5070bf4,
/* 0x08ff: ctx_xfer_no_post_mmio */
/* 0x08ff: ctx_xfer_done */
0xf807b721,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
......
...@@ -28,8 +28,54 @@ ...@@ -28,8 +28,54 @@
#define GF117 0xd7 #define GF117 0xd7
#define GK100 0xe0 #define GK100 0xe0
#define GK110 0xf0 #define GK110 0xf0
#define GK208 0x108
#define NV_PGRAPH_FECS_INTR_ACK 0x409004
#define NV_PGRAPH_FECS_INTR 0x409008
#define NV_PGRAPH_FECS_INTR_CHSW 0x00000100
#define NV_PGRAPH_FECS_INTR_FIFO 0x00000004
#define NV_PGRAPH_FECS_INTR_MODE 0x40900c
#define NV_PGRAPH_FECS_INTR_MODE_FIFO 0x00000004
#define NV_PGRAPH_FECS_INTR_MODE_FIFO_LEVEL 0x00000004
#define NV_PGRAPH_FECS_INTR_MODE_FIFO_EDGE 0x00000000
#define NV_PGRAPH_FECS_INTR_EN_SET 0x409010
#define NV_PGRAPH_FECS_INTR_EN_SET_FIFO 0x00000004
#define NV_PGRAPH_FECS_INTR_ROUTE 0x40901c
#define NV_PGRAPH_FECS_ACCESS 0x409048
#define NV_PGRAPH_FECS_ACCESS_FIFO 0x00000002
#define NV_PGRAPH_FECS_FIFO_DATA 0x409064
#define NV_PGRAPH_FECS_FIFO_CMD 0x409068
#define NV_PGRAPH_FECS_FIFO_ACK 0x409074
#define NV_PGRAPH_FECS_CAPS 0x409108
#define NV_PGRAPH_FECS_SIGNAL 0x409400 #define NV_PGRAPH_FECS_SIGNAL 0x409400
#define NV_PGRAPH_FECS_IROUTE 0x409404
#define NV_PGRAPH_FECS_BAR_MASK0 0x40940c
#define NV_PGRAPH_FECS_BAR_MASK1 0x409410
#define NV_PGRAPH_FECS_BAR 0x409414
#define NV_PGRAPH_FECS_BAR_SET 0x409418
#define NV_PGRAPH_FECS_RED_SWITCH 0x409614
#define NV_PGRAPH_FECS_RED_SWITCH_ENABLE_ROP 0x00000400
#define NV_PGRAPH_FECS_RED_SWITCH_ENABLE_GPC 0x00000200
#define NV_PGRAPH_FECS_RED_SWITCH_ENABLE_MAIN 0x00000100
#define NV_PGRAPH_FECS_RED_SWITCH_POWER_ROP 0x00000040
#define NV_PGRAPH_FECS_RED_SWITCH_POWER_GPC 0x00000020
#define NV_PGRAPH_FECS_RED_SWITCH_POWER_MAIN 0x00000010
#define NV_PGRAPH_FECS_RED_SWITCH_PAUSE_GPC 0x00000002
#define NV_PGRAPH_FECS_RED_SWITCH_PAUSE_MAIN 0x00000001
#define NV_PGRAPH_FECS_MMCTX_SAVE_SWBASE 0x409700
#define NV_PGRAPH_FECS_MMCTX_LOAD_SWBASE 0x409704
#define NV_PGRAPH_FECS_MMCTX_LOAD_COUNT 0x40974c
#define NV_PGRAPH_FECS_MMCTX_SAVE_SWBASE 0x409700
#define NV_PGRAPH_FECS_MMCTX_LOAD_SWBASE 0x409704
#define NV_PGRAPH_FECS_MMCTX_BASE 0x409710
#define NV_PGRAPH_FECS_MMCTX_CTRL 0x409714
#define NV_PGRAPH_FECS_MMCTX_MULTI_STRIDE 0x409718
#define NV_PGRAPH_FECS_MMCTX_MULTI_MASK 0x40971c
#define NV_PGRAPH_FECS_MMCTX_QUEUE 0x409720
#define NV_PGRAPH_FECS_MMIO_CTRL 0x409728
#define NV_PGRAPH_FECS_MMIO_RDVAL 0x40972c
#define NV_PGRAPH_FECS_MMIO_WRVAL 0x409730
#define NV_PGRAPH_FECS_MMCTX_LOAD_COUNT 0x40974c
#if CHIPSET < GK110 #if CHIPSET < GK110
#define NV_PGRAPH_FECS_CC_SCRATCH_VAL(n) ((n) * 4 + 0x409800) #define NV_PGRAPH_FECS_CC_SCRATCH_VAL(n) ((n) * 4 + 0x409800)
#define NV_PGRAPH_FECS_CC_SCRATCH_SET(n) ((n) * 4 + 0x409820) #define NV_PGRAPH_FECS_CC_SCRATCH_SET(n) ((n) * 4 + 0x409820)
...@@ -39,8 +85,59 @@ ...@@ -39,8 +85,59 @@
#define NV_PGRAPH_FECS_CC_SCRATCH_CLR(n) ((n) * 4 + 0x409840) #define NV_PGRAPH_FECS_CC_SCRATCH_CLR(n) ((n) * 4 + 0x409840)
#define NV_PGRAPH_FECS_CC_SCRATCH_SET(n) ((n) * 4 + 0x4098c0) #define NV_PGRAPH_FECS_CC_SCRATCH_SET(n) ((n) * 4 + 0x4098c0)
#endif #endif
#define NV_PGRAPH_FECS_STRANDS_CNT 0x409880
#define NV_PGRAPH_FECS_STRAND_SAVE_SWBASE 0x409908
#define NV_PGRAPH_FECS_STRAND_LOAD_SWBASE 0x40990c
#define NV_PGRAPH_FECS_STRAND_WORDS 0x409910
#define NV_PGRAPH_FECS_STRAND_DATA 0x409918
#define NV_PGRAPH_FECS_STRAND_SELECT 0x40991c
#define NV_PGRAPH_FECS_STRAND_CMD 0x409928
#define NV_PGRAPH_FECS_STRAND_CMD_SEEK 0x00000001
#define NV_PGRAPH_FECS_STRAND_CMD_GET_INFO 0x00000002
#define NV_PGRAPH_FECS_STRAND_CMD_SAVE 0x00000003
#define NV_PGRAPH_FECS_STRAND_CMD_LOAD 0x00000004
#define NV_PGRAPH_FECS_STRAND_CMD_ACTIVATE_FILTER 0x0000000a
#define NV_PGRAPH_FECS_STRAND_CMD_DEACTIVATE_FILTER 0x0000000b
#define NV_PGRAPH_FECS_STRAND_CMD_ENABLE 0x0000000c
#define NV_PGRAPH_FECS_STRAND_CMD_DISABLE 0x0000000d
#define NV_PGRAPH_FECS_STRAND_FILTER 0x40993c
#define NV_PGRAPH_FECS_MEM_BASE 0x409a04
#define NV_PGRAPH_FECS_MEM_CHAN 0x409a0c
#define NV_PGRAPH_FECS_MEM_CMD 0x409a10
#define NV_PGRAPH_FECS_MEM_CMD_LOAD_CHAN 0x00000007
#define NV_PGRAPH_FECS_MEM_TARGET 0x409a20
#define NV_PGRAPH_FECS_MEM_TARGET_UNK31 0x80000000
#define NV_PGRAPH_FECS_MEM_TARGET_AS 0x0000001f
#define NV_PGRAPH_FECS_MEM_TARGET_AS_VM 0x00000001
#define NV_PGRAPH_FECS_MEM_TARGET_AS_VRAM 0x00000002
#define NV_PGRAPH_FECS_CHAN_ADDR 0x409b00
#define NV_PGRAPH_FECS_CHAN_NEXT 0x409b04
#define NV_PGRAPH_FECS_CHSW 0x409b0c
#define NV_PGRAPH_FECS_CHSW_ACK 0x00000001
#define NV_PGRAPH_FECS_INTR_UP_SET 0x409c1c #define NV_PGRAPH_FECS_INTR_UP_SET 0x409c1c
#define NV_PGRAPH_FECS_INTR_UP_EN 0x409c24
#define NV_PGRAPH_GPCX_GPCCS_INTR_ACK 0x41a004
#define NV_PGRAPH_GPCX_GPCCS_INTR 0x41a008
#define NV_PGRAPH_GPCX_GPCCS_INTR_FIFO 0x00000004
#define NV_PGRAPH_GPCX_GPCCS_INTR_EN_SET 0x41a010
#define NV_PGRAPH_GPCX_GPCCS_INTR_EN_SET_FIFO 0x00000004
#define NV_PGRAPH_GPCX_GPCCS_INTR_ROUTE 0x41a01c
#define NV_PGRAPH_GPCX_GPCCS_ACCESS 0x41a048
#define NV_PGRAPH_GPCX_GPCCS_ACCESS_FIFO 0x00000002
#define NV_PGRAPH_GPCX_GPCCS_FIFO_DATA 0x41a064
#define NV_PGRAPH_GPCX_GPCCS_FIFO_CMD 0x41a068
#define NV_PGRAPH_GPCX_GPCCS_FIFO_ACK 0x41a074
#define NV_PGRAPH_GPCX_GPCCS_UNITS 0x41a608
#define NV_PGRAPH_GPCX_GPCCS_RED_SWITCH 0x41a614
#define NV_PGRAPH_GPCX_GPCCS_RED_SWITCH_UNK11 0x00000800
#define NV_PGRAPH_GPCX_GPCCS_RED_SWITCH_ENABLE 0x00000200
#define NV_PGRAPH_GPCX_GPCCS_RED_SWITCH_POWER 0x00000020
#define NV_PGRAPH_GPCX_GPCCS_RED_SWITCH_PAUSE 0x00000002
#define NV_PGRAPH_GPCX_GPCCS_MYINDEX 0x41a618
#define NV_PGRAPH_GPCX_GPCCS_MMCTX_SAVE_SWBASE 0x41a700
#define NV_PGRAPH_GPCX_GPCCS_MMCTX_LOAD_SWBASE 0x41a704
#define NV_PGRAPH_GPCX_GPCCS_MMCTX_LOAD_COUNT 0x41a74c
#if CHIPSET < GK110 #if CHIPSET < GK110
#define NV_PGRAPH_GPCX_GPCCS_CC_SCRATCH_VAL(n) ((n) * 4 + 0x41a800) #define NV_PGRAPH_GPCX_GPCCS_CC_SCRATCH_VAL(n) ((n) * 4 + 0x41a800)
#define NV_PGRAPH_GPCX_GPCCS_CC_SCRATCH_SET(n) ((n) * 4 + 0x41a820) #define NV_PGRAPH_GPCX_GPCCS_CC_SCRATCH_SET(n) ((n) * 4 + 0x41a820)
...@@ -50,6 +147,11 @@ ...@@ -50,6 +147,11 @@
#define NV_PGRAPH_GPCX_GPCCS_CC_SCRATCH_CLR(n) ((n) * 4 + 0x41a840) #define NV_PGRAPH_GPCX_GPCCS_CC_SCRATCH_CLR(n) ((n) * 4 + 0x41a840)
#define NV_PGRAPH_GPCX_GPCCS_CC_SCRATCH_SET(n) ((n) * 4 + 0x41a8c0) #define NV_PGRAPH_GPCX_GPCCS_CC_SCRATCH_SET(n) ((n) * 4 + 0x41a8c0)
#endif #endif
#define NV_PGRAPH_GPCX_GPCCS_STRAND_SELECT 0x41a91c
#define NV_PGRAPH_GPCX_GPCCS_STRAND_CMD 0x41a928
#define NV_PGRAPH_GPCX_GPCCS_STRAND_CMD_SAVE 0x00000003
#define NV_PGRAPH_GPCX_GPCCS_STRAND_CMD_LOAD 0x00000004
#define NV_PGRAPH_GPCX_GPCCS_MEM_BASE 0x41aa04
#define mmctx_data(r,c) .b32 (((c - 1) << 26) | r) #define mmctx_data(r,c) .b32 (((c - 1) << 26) | r)
#define queue_init .skip 72 // (2 * 4) + ((8 * 4) * 2) #define queue_init .skip 72 // (2 * 4) + ((8 * 4) * 2)
...@@ -65,24 +167,50 @@ ...@@ -65,24 +167,50 @@
#define T_LCHAN 8 #define T_LCHAN 8
#define T_LCTXH 9 #define T_LCTXH 9
#define nv_mkmm(rv,r) /* #if CHIPSET < GK208
*/ movw rv ((r) & 0x0000fffc) /* #define imm32(reg,val) /*
*/ sethi rv ((r) & 0x00ff0000) */ movw reg ((val) & 0x0000ffff) /*
*/ sethi reg ((val) & 0xffff0000)
#else
#define imm32(reg,val) /*
*/ mov reg (val)
#endif
#define nv_mkio(rv,r,i) /* #define nv_mkio(rv,r,i) /*
*/ nv_mkmm(rv, (((r) & 0xffc) << 6) | ((i) << 2)) */ imm32(rv, (((r) & 0xffc) << 6) | ((i) << 2))
#define hash #
#define fn(a) a
#if CHIPSET < GK208
#define call(a) call fn(hash)a
#else
#define call(a) lcall fn(hash)a
#endif
#define nv_iord(rv,r,i) /* #define nv_iord(rv,r,i) /*
*/ nv_mkio(rv,r,i) /* */ nv_mkio(rv,r,i) /*
*/ iord rv I[rv] */ iord rv I[rv]
#define nv_iowr(r,i,rv) /* #define nv_iowr(r,i,rv) /*
*/ nv_mkio($r0,r,i) /* */ nv_mkio($r0,r,i) /*
*/ iowr I[$r0] rv /* */ iowr I[$r0] rv /*
*/ clear b32 $r0 */ clear b32 $r0
#define nv_rd32(reg,addr) /*
*/ imm32($r14, addr) /*
*/ call(nv_rd32) /*
*/ mov b32 reg $r15
#define nv_wr32(addr,reg) /*
*/ mov b32 $r15 reg /*
*/ imm32($r14, addr) /*
*/ call(nv_wr32)
#define trace_set(bit) /* #define trace_set(bit) /*
*/ clear b32 $r9 /* */ clear b32 $r9 /*
*/ bset $r9 bit /* */ bset $r9 bit /*
*/ nv_iowr(NV_PGRAPH_FECS_CC_SCRATCH_SET(7), 0, $r9) */ nv_iowr(NV_PGRAPH_FECS_CC_SCRATCH_SET(7), 0, $r9)
#define trace_clr(bit) /* #define trace_clr(bit) /*
*/ clear b32 $r9 /* */ clear b32 $r9 /*
*/ bset $r9 bit /* */ bset $r9 bit /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment