mirror of https://gitee.com/openkylin/linux.git
drm/nvc0-/gr: bring in some macros to abstract falcon isa differences
Need. A. Compiler... Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
90d6db1635
commit
67af60f0aa
|
@ -38,7 +38,7 @@ queue_put:
|
|||
cmpu b32 $r8 $r9
|
||||
bra ne #queue_put_next
|
||||
mov $r15 E_CMD_OVERFLOW
|
||||
call #error
|
||||
call(error)
|
||||
ret
|
||||
|
||||
// store cmd/data on queue
|
||||
|
@ -92,18 +92,16 @@ queue_get_done:
|
|||
// Out: $r15 value
|
||||
//
|
||||
nv_rd32:
|
||||
mov $r11 0x728
|
||||
shl b32 $r11 6
|
||||
mov b32 $r12 $r14
|
||||
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:
|
||||
iord $r12 I[$r11 + 0x000]
|
||||
nv_iord($r12, NV_PGRAPH_FECS_MMIO_CTRL, 0)
|
||||
xbit $r12 $r12 31
|
||||
bra ne #nv_rd32_wait
|
||||
mov $r10 6 // DONE_MMIO_RD
|
||||
call #wait_doneo
|
||||
iord $r15 I[$r11 + 0x100] // MMIO_RDVAL
|
||||
call(wait_doneo)
|
||||
nv_iord($r15, NV_PGRAPH_FECS_MMIO_RDVAL, 0)
|
||||
ret
|
||||
|
||||
// nv_wr32 - write 32-bit value to nv register
|
||||
|
@ -112,37 +110,17 @@ nv_rd32:
|
|||
// $r15 value
|
||||
//
|
||||
nv_wr32:
|
||||
mov $r11 0x728
|
||||
shl b32 $r11 6
|
||||
iowr I[$r11 + 0x200] $r15 // MMIO_WRVAL
|
||||
nv_iowr(NV_PGRAPH_FECS_MMIO_WRVAL, 0, $r15)
|
||||
mov b32 $r12 $r14
|
||||
bset $r12 31 // MMIO_CTRL_PENDING
|
||||
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:
|
||||
iord $r12 I[$r11 + 0x000]
|
||||
nv_iord($r12, NV_PGRAPH_FECS_MMIO_CTRL, 0)
|
||||
xbit $r12 $r12 31
|
||||
bra ne #nv_wr32_wait
|
||||
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
|
||||
//
|
||||
// In : $r10 bit to wait on
|
||||
|
@ -163,13 +141,9 @@ wait_donez:
|
|||
//
|
||||
wait_doneo:
|
||||
trace_set(T_WAIT);
|
||||
mov $r8 0x818
|
||||
shl b32 $r8 6
|
||||
iowr I[$r8 + 0x000] $r10
|
||||
nv_iowr(NV_PGRAPH_FECS_CC_SCRATCH_VAL(6), 0, $r10)
|
||||
wait_doneo_e:
|
||||
mov $r8 0x400
|
||||
shl b32 $r8 6
|
||||
iord $r8 I[$r8 + 0x000]
|
||||
nv_iord($r8, NV_PGRAPH_FECS_SIGNAL, 0)
|
||||
xbit $r8 $r8 $r10
|
||||
bra e #wait_doneo_e
|
||||
trace_clr(T_WAIT)
|
||||
|
@ -209,21 +183,18 @@ mmctx_size:
|
|||
//
|
||||
mmctx_xfer:
|
||||
trace_set(T_MMCTX)
|
||||
mov $r8 0x710
|
||||
shl b32 $r8 6
|
||||
clear b32 $r9
|
||||
or $r11 $r11
|
||||
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
|
||||
mmctx_base_disabled:
|
||||
or $r14 $r14
|
||||
bra e #mmctx_multi_disabled
|
||||
iowr I[$r8 + 0x200] $r14 // MMCTX_MULTI_STRIDE
|
||||
iowr I[$r8 + 0x300] $r15 // MMCTX_MULTI_MASK
|
||||
nv_iowr(NV_PGRAPH_FECS_MMCTX_MULTI_STRIDE, 0, $r14)
|
||||
nv_iowr(NV_PGRAPH_FECS_MMCTX_MULTI_MASK, 0, $r15)
|
||||
bset $r9 1 // MULTI_EN
|
||||
mmctx_multi_disabled:
|
||||
add b32 $r8 0x100
|
||||
|
||||
xbit $r11 $r10 0
|
||||
shl b32 $r11 16 // DIR
|
||||
|
@ -231,20 +202,20 @@ mmctx_xfer:
|
|||
xbit $r14 $r10 1
|
||||
shl b32 $r14 17
|
||||
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
|
||||
mmctx_exec_loop:
|
||||
// wait for space in mmctx queue
|
||||
mmctx_wait_free:
|
||||
iord $r14 I[$r8 + 0x000] // MMCTX_CTRL
|
||||
nv_iord($r14, NV_PGRAPH_FECS_MMCTX_CTRL, 0)
|
||||
and $r14 0x1f
|
||||
bra e #mmctx_wait_free
|
||||
|
||||
// queue up an entry
|
||||
ld b32 $r14 D[$r12]
|
||||
or $r14 $r9
|
||||
iowr I[$r8 + 0x300] $r14
|
||||
nv_iowr(NV_PGRAPH_FECS_MMCTX_QUEUE, 0, $r14)
|
||||
add b32 $r12 4
|
||||
cmpu b32 $r12 $r13
|
||||
bra ne #mmctx_exec_loop
|
||||
|
@ -253,22 +224,22 @@ mmctx_xfer:
|
|||
bra ne #mmctx_stop
|
||||
// wait for queue to empty
|
||||
mmctx_fini_wait:
|
||||
iord $r11 I[$r8 + 0x000] // MMCTX_CTRL
|
||||
nv_iord($r11, NV_PGRAPH_FECS_MMCTX_CTRL, 0)
|
||||
and $r11 0x1f
|
||||
cmpu b32 $r11 0x10
|
||||
bra ne #mmctx_fini_wait
|
||||
mov $r10 2 // DONE_MMCTX
|
||||
call #wait_donez
|
||||
call(wait_donez)
|
||||
bra #mmctx_done
|
||||
mmctx_stop:
|
||||
xbit $r11 $r10 0
|
||||
shl b32 $r11 16 // DIR
|
||||
bset $r11 12 // QLIMIT = 0x10
|
||||
bset $r11 18 // STOP_TRIGGER
|
||||
iowr I[$r8 + 0x000] $r11 // MMCTX_CTRL
|
||||
nv_iowr(NV_PGRAPH_FECS_MMCTX_CTRL, 0, $r11)
|
||||
mmctx_stop_wait:
|
||||
// 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
|
||||
bra ne #mmctx_stop_wait
|
||||
mmctx_done:
|
||||
|
@ -280,28 +251,24 @@ mmctx_xfer:
|
|||
strand_wait:
|
||||
push $r10
|
||||
mov $r10 2
|
||||
call #wait_donez
|
||||
call(wait_donez)
|
||||
pop $r10
|
||||
ret
|
||||
|
||||
// unknown - call before issuing strand commands
|
||||
//
|
||||
strand_pre:
|
||||
mov $r8 0x4afc
|
||||
sethi $r8 0x20000
|
||||
mov $r9 0xc
|
||||
iowr I[$r8] $r9
|
||||
call #strand_wait
|
||||
mov $r9 NV_PGRAPH_FECS_STRAND_CMD_ENABLE
|
||||
nv_iowr(NV_PGRAPH_FECS_STRAND_CMD, 0x3f, $r9)
|
||||
call(strand_wait)
|
||||
ret
|
||||
|
||||
// unknown - call after issuing strand commands
|
||||
//
|
||||
strand_post:
|
||||
mov $r8 0x4afc
|
||||
sethi $r8 0x20000
|
||||
mov $r9 0xd
|
||||
iowr I[$r8] $r9
|
||||
call #strand_wait
|
||||
mov $r9 NV_PGRAPH_FECS_STRAND_CMD_DISABLE
|
||||
nv_iowr(NV_PGRAPH_FECS_STRAND_CMD, 0x3f, $r9)
|
||||
call(strand_wait)
|
||||
ret
|
||||
|
||||
// Selects strand set?!
|
||||
|
@ -309,18 +276,14 @@ strand_post:
|
|||
// In: $r14 id
|
||||
//
|
||||
strand_set:
|
||||
mov $r10 0x4ffc
|
||||
sethi $r10 0x20000
|
||||
sub b32 $r11 $r10 0x500
|
||||
mov $r12 0xf
|
||||
iowr I[$r10 + 0x000] $r12 // 0x93c = 0xf
|
||||
mov $r12 0xb
|
||||
iowr I[$r11 + 0x000] $r12 // 0x928 = 0xb
|
||||
call #strand_wait
|
||||
iowr I[$r10 + 0x000] $r14 // 0x93c = <id>
|
||||
mov $r12 0xa
|
||||
iowr I[$r11 + 0x000] $r12 // 0x928 = 0xa
|
||||
call #strand_wait
|
||||
nv_iowr(NV_PGRAPH_FECS_STRAND_FILTER, 0x3f, $r12)
|
||||
mov $r12 NV_PGRAPH_FECS_STRAND_CMD_DEACTIVATE_FILTER
|
||||
nv_iowr(NV_PGRAPH_FECS_STRAND_CMD, 0x3f, $r12)
|
||||
nv_iowr(NV_PGRAPH_FECS_STRAND_FILTER, 0x3f, $r14)
|
||||
mov $r12 NV_PGRAPH_FECS_STRAND_CMD_ACTIVATE_FILTER
|
||||
nv_iowr(NV_PGRAPH_FECS_STRAND_CMD, 0x3f, $r12)
|
||||
call(strand_wait)
|
||||
ret
|
||||
|
||||
// Initialise strand context data
|
||||
|
@ -332,30 +295,27 @@ strand_set:
|
|||
//
|
||||
strand_ctx_init:
|
||||
trace_set(T_STRINIT)
|
||||
call #strand_pre
|
||||
call(strand_pre)
|
||||
mov $r14 3
|
||||
call #strand_set
|
||||
mov $r10 0x46fc
|
||||
sethi $r10 0x20000
|
||||
add b32 $r11 $r10 0x400
|
||||
iowr I[$r10 + 0x100] $r0 // STRAND_FIRST_GENE = 0
|
||||
mov $r12 1
|
||||
iowr I[$r11 + 0x000] $r12 // STRAND_CMD = LATCH_FIRST_GENE
|
||||
call #strand_wait
|
||||
call(strand_set)
|
||||
|
||||
clear b32 $r12
|
||||
nv_iowr(NV_PGRAPH_FECS_STRAND_SELECT, 0x3f, $r12)
|
||||
mov $r12 NV_PGRAPH_FECS_STRAND_CMD_SEEK
|
||||
nv_iowr(NV_PGRAPH_FECS_STRAND_CMD, 0x3f, $r12)
|
||||
call(strand_wait)
|
||||
sub b32 $r12 $r0 1
|
||||
iowr I[$r10 + 0x000] $r12 // STRAND_GENE_CNT = 0xffffffff
|
||||
mov $r12 2
|
||||
iowr I[$r11 + 0x000] $r12 // STRAND_CMD = LATCH_GENE_CNT
|
||||
call #strand_wait
|
||||
call #strand_post
|
||||
nv_iowr(NV_PGRAPH_FECS_STRAND_DATA, 0x3f, $r12)
|
||||
mov $r12 NV_PGRAPH_FECS_STRAND_CMD_GET_INFO
|
||||
nv_iowr(NV_PGRAPH_FECS_STRAND_CMD, 0x3f, $r12)
|
||||
call(strand_wait)
|
||||
call(strand_post)
|
||||
|
||||
// read the size of each strand, poke the context offset of
|
||||
// each into STRAND_{SAVE,LOAD}_SWBASE now, no need to worry
|
||||
// about it later then.
|
||||
mov $r8 0x880
|
||||
shl b32 $r8 6
|
||||
iord $r9 I[$r8 + 0x000] // STRANDS
|
||||
add b32 $r8 0x2200
|
||||
nv_mkio($r8, NV_PGRAPH_FECS_STRAND_SAVE_SWBASE, 0x00)
|
||||
nv_iord($r9, NV_PGRAPH_FECS_STRANDS_CNT, 0x00)
|
||||
shr b32 $r14 $r15 8
|
||||
ctx_init_strand_loop:
|
||||
iowr I[$r8 + 0x000] $r14 // STRAND_SAVE_SWBASE
|
||||
|
|
|
@ -58,12 +58,9 @@ mmio_list_base:
|
|||
//
|
||||
error:
|
||||
push $r14
|
||||
mov $r14 -0x67ec // 0x9814
|
||||
sethi $r14 0x400000
|
||||
call #nv_wr32 // HUB_CTXCTL_CC_SCRATCH[5] = error code
|
||||
add b32 $r14 0x41c
|
||||
nv_wr32(NV_PGRAPH_FECS_CC_SCRATCH_VAL(5), $r15)
|
||||
mov $r15 1
|
||||
call #nv_wr32 // HUB_CTXCTL_INTR_UP_SET
|
||||
nv_wr32(NV_PGRAPH_FECS_INTR_UP_SET, $r15)
|
||||
pop $r14
|
||||
ret
|
||||
|
||||
|
@ -84,46 +81,40 @@ init:
|
|||
mov $sp $r0
|
||||
|
||||
// enable fifo access
|
||||
mov $r1 0x1200
|
||||
mov $r2 2
|
||||
iowr I[$r1 + 0x000] $r2 // FIFO_ENABLE
|
||||
mov $r2 NV_PGRAPH_GPCX_GPCCS_ACCESS_FIFO
|
||||
nv_iowr(NV_PGRAPH_GPCX_GPCCS_ACCESS, 0, $r2)
|
||||
|
||||
// setup i0 handler, and route all interrupts to it
|
||||
mov $r1 #ih
|
||||
mov $iv0 $r1
|
||||
mov $r1 0x400
|
||||
iowr I[$r1 + 0x300] $r0 // INTR_DISPATCH
|
||||
nv_iowr(NV_PGRAPH_GPCX_GPCCS_INTR_ROUTE, 0, $r0)
|
||||
|
||||
// enable fifo interrupt
|
||||
mov $r2 4
|
||||
iowr I[$r1 + 0x000] $r2 // INTR_EN_SET
|
||||
mov $r2 NV_PGRAPH_GPCX_GPCCS_INTR_EN_SET_FIFO
|
||||
nv_iowr(NV_PGRAPH_GPCX_GPCCS_INTR_EN_SET, 0, $r2)
|
||||
|
||||
// enable interrupts
|
||||
bset $flags ie0
|
||||
|
||||
// figure out which GPC we are, and how many TPCs we have
|
||||
mov $r1 0x608
|
||||
shl b32 $r1 6
|
||||
iord $r2 I[$r1 + 0x000] // UNITS
|
||||
nv_iord($r2, NV_PGRAPH_GPCX_GPCCS_UNITS, 0)
|
||||
mov $r3 1
|
||||
and $r2 0x1f
|
||||
shl b32 $r3 $r2
|
||||
sub b32 $r3 1
|
||||
st b32 D[$r0 + #tpc_count] $r2
|
||||
st b32 D[$r0 + #tpc_mask] $r3
|
||||
add b32 $r1 0x400
|
||||
iord $r2 I[$r1 + 0x000] // MYINDEX
|
||||
nv_iord($r2, NV_PGRAPH_GPCX_GPCCS_MYINDEX, 0)
|
||||
st b32 D[$r0 + #gpc_id] $r2
|
||||
|
||||
#if NV_PGRAPH_GPCX_UNK__SIZE > 0
|
||||
// figure out which, and how many, UNKs are actually present
|
||||
mov $r14 0x0c30
|
||||
sethi $r14 0x500000
|
||||
imm32($r14, 0x500c30)
|
||||
clear b32 $r2
|
||||
clear b32 $r3
|
||||
clear b32 $r4
|
||||
init_unk_loop:
|
||||
call #nv_rd32
|
||||
call(nv_rd32)
|
||||
cmp b32 $r15 0
|
||||
bra z #init_unk_next
|
||||
mov $r15 1
|
||||
|
@ -146,23 +137,21 @@ init:
|
|||
|
||||
// set mmctx base addresses now so we don't have to do it later,
|
||||
// they don't currently ever change
|
||||
mov $r4 0x700
|
||||
shl b32 $r4 6
|
||||
shr b32 $r5 $r2 8
|
||||
iowr I[$r4 + 0x000] $r5 // MMCTX_SAVE_SWBASE
|
||||
iowr I[$r4 + 0x100] $r5 // MMCTX_LOAD_SWBASE
|
||||
nv_iowr(NV_PGRAPH_GPCX_GPCCS_MMCTX_SAVE_SWBASE, 0, $r5)
|
||||
nv_iowr(NV_PGRAPH_GPCX_GPCCS_MMCTX_LOAD_SWBASE, 0, $r5)
|
||||
|
||||
// calculate GPC mmio context size
|
||||
ld b32 $r14 D[$r0 + #gpc_mmio_list_head]
|
||||
ld b32 $r15 D[$r0 + #gpc_mmio_list_tail]
|
||||
call #mmctx_size
|
||||
call(mmctx_size)
|
||||
add b32 $r2 $r15
|
||||
add b32 $r3 $r15
|
||||
|
||||
// calculate per-TPC mmio context size
|
||||
ld b32 $r14 D[$r0 + #tpc_mmio_list_head]
|
||||
ld b32 $r15 D[$r0 + #tpc_mmio_list_tail]
|
||||
call #mmctx_size
|
||||
call(mmctx_size)
|
||||
ld b32 $r14 D[$r0 + #tpc_count]
|
||||
mulu $r14 $r15
|
||||
add b32 $r2 $r14
|
||||
|
@ -172,7 +161,7 @@ init:
|
|||
// calculate per-UNK mmio context size
|
||||
ld b32 $r14 D[$r0 + #unk_mmio_list_head]
|
||||
ld b32 $r15 D[$r0 + #unk_mmio_list_tail]
|
||||
call #mmctx_size
|
||||
call(mmctx_size)
|
||||
ld b32 $r14 D[$r0 + #unk_count]
|
||||
mulu $r14 $r15
|
||||
add b32 $r2 $r14
|
||||
|
@ -180,9 +169,8 @@ init:
|
|||
#endif
|
||||
|
||||
// round up base/size to 256 byte boundary (for strand SWBASE)
|
||||
add b32 $r4 0x1300
|
||||
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 $r3 6
|
||||
add b32 $r2 1
|
||||
|
@ -192,7 +180,7 @@ init:
|
|||
|
||||
// calculate size of strand context data
|
||||
mov b32 $r15 $r2
|
||||
call #strand_ctx_init
|
||||
call(strand_ctx_init)
|
||||
add b32 $r3 $r15
|
||||
|
||||
// save context size, and tell HUB we're done
|
||||
|
@ -208,7 +196,7 @@ main:
|
|||
bset $flags $p0
|
||||
sleep $p0
|
||||
mov $r13 #cmd_queue
|
||||
call #queue_get
|
||||
call(queue_get)
|
||||
bra $p1 #main
|
||||
|
||||
// 0x0000-0x0003 are all context transfers
|
||||
|
@ -224,13 +212,13 @@ main:
|
|||
or $r1 $r14
|
||||
mov $flags $r1
|
||||
// transfer context data
|
||||
call #ctx_xfer
|
||||
call(ctx_xfer)
|
||||
bra #main
|
||||
|
||||
main_not_ctx_xfer:
|
||||
shl b32 $r15 $r14 16
|
||||
or $r15 E_BAD_COMMAND
|
||||
call #error
|
||||
call(error)
|
||||
bra #main
|
||||
|
||||
// interrupt handler
|
||||
|
@ -247,22 +235,20 @@ ih:
|
|||
clear b32 $r0
|
||||
|
||||
// incoming fifo command?
|
||||
iord $r10 I[$r0 + 0x200] // INTR
|
||||
and $r11 $r10 0x00000004
|
||||
nv_iord($r10, NV_PGRAPH_GPCX_GPCCS_INTR, 0)
|
||||
and $r11 $r10 NV_PGRAPH_GPCX_GPCCS_INTR_FIFO
|
||||
bra e #ih_no_fifo
|
||||
// queue incoming fifo command for later processing
|
||||
mov $r11 0x1900
|
||||
mov $r13 #cmd_queue
|
||||
iord $r14 I[$r11 + 0x100] // FIFO_CMD
|
||||
iord $r15 I[$r11 + 0x000] // FIFO_DATA
|
||||
call #queue_put
|
||||
add b32 $r11 0x400
|
||||
nv_iord($r14, NV_PGRAPH_GPCX_GPCCS_FIFO_CMD, 0)
|
||||
nv_iord($r15, NV_PGRAPH_GPCX_GPCCS_FIFO_DATA, 0)
|
||||
call(queue_put)
|
||||
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()
|
||||
ih_no_fifo:
|
||||
iowr I[$r0 + 0x100] $r10 // INTR_ACK
|
||||
nv_iowr(NV_PGRAPH_GPCX_GPCCS_INTR_ACK, 0, $r10)
|
||||
|
||||
pop $r15
|
||||
pop $r14
|
||||
|
@ -283,9 +269,7 @@ hub_barrier_done:
|
|||
mov $r15 1
|
||||
ld b32 $r14 D[$r0 + #gpc_id]
|
||||
shl b32 $r15 $r14
|
||||
mov $r14 -0x6be8 // 0x409418 - HUB_BAR_SET
|
||||
sethi $r14 0x400000
|
||||
call #nv_wr32
|
||||
nv_wr32(0x409418, $r15) // 0x409418 - HUB_BAR_SET
|
||||
ret
|
||||
|
||||
// Disables various things, waits a bit, and re-enables them..
|
||||
|
@ -295,16 +279,15 @@ hub_barrier_done:
|
|||
// funny things happen.
|
||||
//
|
||||
ctx_redswitch:
|
||||
mov $r14 0x614
|
||||
shl b32 $r14 6
|
||||
mov $r15 0x020
|
||||
iowr I[$r14] $r15 // GPC_RED_SWITCH = POWER
|
||||
mov $r15 8
|
||||
mov $r15 NV_PGRAPH_GPCX_GPCCS_RED_SWITCH_POWER
|
||||
nv_iowr(NV_PGRAPH_GPCX_GPCCS_RED_SWITCH, 0, $r15)
|
||||
mov $r14 8
|
||||
ctx_redswitch_delay:
|
||||
sub b32 $r15 1
|
||||
sub b32 $r14 1
|
||||
bra ne #ctx_redswitch_delay
|
||||
mov $r15 0xa20
|
||||
iowr I[$r14] $r15 // GPC_RED_SWITCH = UNK11, ENABLE, POWER
|
||||
or $r15 NV_PGRAPH_GPCX_GPCCS_RED_SWITCH_UNK11
|
||||
or $r15 NV_PGRAPH_GPCX_GPCCS_RED_SWITCH_ENABLE
|
||||
nv_iowr(NV_PGRAPH_GPCX_GPCCS_RED_SWITCH, 0, $r15)
|
||||
ret
|
||||
|
||||
// Transfer GPC context data between GPU and storage area
|
||||
|
@ -317,46 +300,37 @@ ctx_redswitch:
|
|||
//
|
||||
ctx_xfer:
|
||||
// set context base address
|
||||
mov $r1 0xa04
|
||||
shl b32 $r1 6
|
||||
iowr I[$r1 + 0x000] $r15// MEM_BASE
|
||||
nv_iowr(NV_PGRAPH_GPCX_GPCCS_MEM_BASE, 0, $r15)
|
||||
bra not $p1 #ctx_xfer_not_load
|
||||
call #ctx_redswitch
|
||||
call(ctx_redswitch)
|
||||
ctx_xfer_not_load:
|
||||
|
||||
// strands
|
||||
mov $r1 0x4afc
|
||||
sethi $r1 0x20000
|
||||
mov $r2 0xc
|
||||
iowr I[$r1] $r2 // STRAND_CMD(0x3f) = 0x0c
|
||||
call #strand_wait
|
||||
mov $r2 0x47fc
|
||||
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)
|
||||
call(strand_pre)
|
||||
clear b32 $r2
|
||||
nv_iowr(NV_PGRAPH_GPCX_GPCCS_STRAND_SELECT, 0x3f, $r2)
|
||||
xbit $r2 $flags $p1 // SAVE/LOAD
|
||||
add b32 $r2 NV_PGRAPH_GPCX_GPCCS_STRAND_CMD_SAVE
|
||||
nv_iowr(NV_PGRAPH_GPCX_GPCCS_STRAND_CMD, 0x3f, $r2)
|
||||
|
||||
// mmio context
|
||||
xbit $r10 $flags $p1 // direction
|
||||
or $r10 2 // first
|
||||
mov $r11 0x0000
|
||||
sethi $r11 0x500000
|
||||
imm32($r11,0x500000)
|
||||
ld b32 $r12 D[$r0 + #gpc_id]
|
||||
shl b32 $r12 15
|
||||
add b32 $r11 $r12 // base = NV_PGRAPH_GPCn
|
||||
ld b32 $r12 D[$r0 + #gpc_mmio_list_head]
|
||||
ld b32 $r13 D[$r0 + #gpc_mmio_list_tail]
|
||||
mov $r14 0 // not multi
|
||||
call #mmctx_xfer
|
||||
call(mmctx_xfer)
|
||||
|
||||
// per-TPC mmio context
|
||||
xbit $r10 $flags $p1 // direction
|
||||
#if !NV_PGRAPH_GPCX_UNK__SIZE
|
||||
or $r10 4 // last
|
||||
#endif
|
||||
mov $r11 0x4000
|
||||
sethi $r11 0x500000 // base = NV_PGRAPH_GPC0_TPC0
|
||||
imm32($r11, 0x504000)
|
||||
ld b32 $r12 D[$r0 + #gpc_id]
|
||||
shl b32 $r12 15
|
||||
add b32 $r11 $r12 // base = NV_PGRAPH_GPCn_TPC0
|
||||
|
@ -364,14 +338,13 @@ ctx_xfer:
|
|||
ld b32 $r13 D[$r0 + #tpc_mmio_list_tail]
|
||||
ld b32 $r15 D[$r0 + #tpc_mask]
|
||||
mov $r14 0x800 // stride = 0x800
|
||||
call #mmctx_xfer
|
||||
call(mmctx_xfer)
|
||||
|
||||
#if NV_PGRAPH_GPCX_UNK__SIZE > 0
|
||||
// per-UNK mmio context
|
||||
xbit $r10 $flags $p1 // direction
|
||||
or $r10 4 // last
|
||||
mov $r11 0x3000
|
||||
sethi $r11 0x500000 // base = NV_PGRAPH_GPC0_UNK0
|
||||
imm32($r11, 0x503000)
|
||||
ld b32 $r12 D[$r0 + #gpc_id]
|
||||
shl b32 $r12 15
|
||||
add b32 $r11 $r12 // base = NV_PGRAPH_GPCn_UNK0
|
||||
|
@ -379,11 +352,11 @@ ctx_xfer:
|
|||
ld b32 $r13 D[$r0 + #unk_mmio_list_tail]
|
||||
ld b32 $r15 D[$r0 + #unk_mask]
|
||||
mov $r14 0x200 // stride = 0x200
|
||||
call #mmctx_xfer
|
||||
call(mmctx_xfer)
|
||||
#endif
|
||||
|
||||
// wait for strands to finish
|
||||
call #strand_wait
|
||||
call(strand_wait)
|
||||
|
||||
// if load, or a save without a load following, do some
|
||||
// unknown stuff that's done after finishing a block of
|
||||
|
@ -391,14 +364,10 @@ ctx_xfer:
|
|||
bra $p1 #ctx_xfer_post
|
||||
bra not $p2 #ctx_xfer_done
|
||||
ctx_xfer_post:
|
||||
mov $r1 0x4afc
|
||||
sethi $r1 0x20000
|
||||
mov $r2 0xd
|
||||
iowr I[$r1] $r2 // STRAND_CMD(0x3f) = 0x0d
|
||||
call #strand_wait
|
||||
call(strand_post)
|
||||
|
||||
// mark completion in HUB's barrier
|
||||
ctx_xfer_done:
|
||||
call #hub_barrier_done
|
||||
call(hub_barrier_done)
|
||||
ret
|
||||
#endif
|
||||
|
|
|
@ -37,14 +37,14 @@ uint32_t nvc0_grgpc_data[] = {
|
|||
};
|
||||
|
||||
uint32_t nvc0_grgpc_code[] = {
|
||||
0x03180ef5,
|
||||
0x03a10ef5,
|
||||
/* 0x0004: queue_put */
|
||||
0x9800d898,
|
||||
0x86f001d9,
|
||||
0x0489b808,
|
||||
0xf00c1bf4,
|
||||
0x21f502f7,
|
||||
0x00f802fe,
|
||||
0x00f8037e,
|
||||
/* 0x001c: queue_put_next */
|
||||
0xb60798c4,
|
||||
0x8dbb0384,
|
||||
|
@ -68,184 +68,214 @@ uint32_t nvc0_grgpc_code[] = {
|
|||
/* 0x0066: queue_get_done */
|
||||
0x00f80132,
|
||||
/* 0x0068: nv_rd32 */
|
||||
0x0728b7f1,
|
||||
0xb906b4b6,
|
||||
0xc9f002ec,
|
||||
0x00bcd01f,
|
||||
/* 0x0078: nv_rd32_wait */
|
||||
0xc800bccf,
|
||||
0x1bf41fcc,
|
||||
0x06a7f0fa,
|
||||
0x010921f5,
|
||||
0xf840bfcf,
|
||||
/* 0x008d: nv_wr32 */
|
||||
0x28b7f100,
|
||||
0x06b4b607,
|
||||
0xb980bfd0,
|
||||
0xc9f002ec,
|
||||
0x1ec9f01f,
|
||||
/* 0x00a3: nv_wr32_wait */
|
||||
0xcf00bcd0,
|
||||
0xccc800bc,
|
||||
0xfa1bf41f,
|
||||
/* 0x00ae: watchdog_reset */
|
||||
0x87f100f8,
|
||||
0x84b60430,
|
||||
0x1ff9f006,
|
||||
0xf8008fd0,
|
||||
/* 0x00bd: watchdog_clear */
|
||||
0x3087f100,
|
||||
0x0684b604,
|
||||
0xf80080d0,
|
||||
/* 0x00c9: wait_donez */
|
||||
0xf094bd00,
|
||||
0x07f10099,
|
||||
0x03f00f00,
|
||||
0x0009d002,
|
||||
0x07f104bd,
|
||||
0x03f00600,
|
||||
0x000ad002,
|
||||
/* 0x00e6: wait_donez_ne */
|
||||
0x87f104bd,
|
||||
0x83f00000,
|
||||
0x0088cf01,
|
||||
0xf4888aff,
|
||||
0x94bdf31b,
|
||||
0xf10099f0,
|
||||
0xf0170007,
|
||||
0x09d00203,
|
||||
0xf804bd00,
|
||||
/* 0x0109: wait_doneo */
|
||||
0xf094bd00,
|
||||
0x07f10099,
|
||||
0x03f00f00,
|
||||
0x0009d002,
|
||||
0x87f104bd,
|
||||
0x84b60818,
|
||||
0x008ad006,
|
||||
/* 0x0124: wait_doneo_e */
|
||||
0x040087f1,
|
||||
0xcf0684b6,
|
||||
0x8aff0088,
|
||||
0xf30bf488,
|
||||
0xf002ecb9,
|
||||
0x07f11fc9,
|
||||
0x03f0ca00,
|
||||
0x000cd001,
|
||||
/* 0x007a: nv_rd32_wait */
|
||||
0xc7f104bd,
|
||||
0xc3f0ca00,
|
||||
0x00cccf01,
|
||||
0xf41fccc8,
|
||||
0xa7f0f31b,
|
||||
0x1021f506,
|
||||
0x00f7f101,
|
||||
0x01f3f0cb,
|
||||
0xf800ffcf,
|
||||
/* 0x009d: nv_wr32 */
|
||||
0x0007f100,
|
||||
0x0103f0cc,
|
||||
0xbd000fd0,
|
||||
0x02ecb904,
|
||||
0xf01fc9f0,
|
||||
0x07f11ec9,
|
||||
0x03f0ca00,
|
||||
0x000cd001,
|
||||
/* 0x00be: nv_wr32_wait */
|
||||
0xc7f104bd,
|
||||
0xc3f0ca00,
|
||||
0x00cccf01,
|
||||
0xf41fccc8,
|
||||
0x00f8f31b,
|
||||
/* 0x00d0: wait_donez */
|
||||
0x99f094bd,
|
||||
0x0007f100,
|
||||
0x0203f017,
|
||||
0x0203f00f,
|
||||
0xbd0009d0,
|
||||
/* 0x0147: mmctx_size */
|
||||
0xbd00f804,
|
||||
/* 0x0149: nv_mmctx_size_loop */
|
||||
0x00e89894,
|
||||
0xb61a85b6,
|
||||
0x84b60180,
|
||||
0x0098bb02,
|
||||
0xb804e0b6,
|
||||
0x1bf404ef,
|
||||
0x029fb9eb,
|
||||
/* 0x0166: mmctx_xfer */
|
||||
0x94bd00f8,
|
||||
0xf10199f0,
|
||||
0xf00f0007,
|
||||
0x09d00203,
|
||||
0xf104bd00,
|
||||
0xb6071087,
|
||||
0x94bd0684,
|
||||
0xf405bbfd,
|
||||
0x8bd0090b,
|
||||
0x0099f000,
|
||||
/* 0x018c: mmctx_base_disabled */
|
||||
0xf405eefd,
|
||||
0x8ed00c0b,
|
||||
0xc08fd080,
|
||||
/* 0x019b: mmctx_multi_disabled */
|
||||
0xb70199f0,
|
||||
0xc8010080,
|
||||
0x0007f104,
|
||||
0x0203f006,
|
||||
0xbd000ad0,
|
||||
/* 0x00ed: wait_donez_ne */
|
||||
0x0087f104,
|
||||
0x0183f000,
|
||||
0xff0088cf,
|
||||
0x1bf4888a,
|
||||
0xf094bdf3,
|
||||
0x07f10099,
|
||||
0x03f01700,
|
||||
0x0009d002,
|
||||
0x00f804bd,
|
||||
/* 0x0110: wait_doneo */
|
||||
0x99f094bd,
|
||||
0x0007f100,
|
||||
0x0203f00f,
|
||||
0xbd0009d0,
|
||||
0x0007f104,
|
||||
0x0203f006,
|
||||
0xbd000ad0,
|
||||
/* 0x012d: wait_doneo_e */
|
||||
0x0087f104,
|
||||
0x0183f000,
|
||||
0xff0088cf,
|
||||
0x0bf4888a,
|
||||
0xf094bdf3,
|
||||
0x07f10099,
|
||||
0x03f01700,
|
||||
0x0009d002,
|
||||
0x00f804bd,
|
||||
/* 0x0150: mmctx_size */
|
||||
/* 0x0152: nv_mmctx_size_loop */
|
||||
0xe89894bd,
|
||||
0x1a85b600,
|
||||
0xb60180b6,
|
||||
0x98bb0284,
|
||||
0x04e0b600,
|
||||
0xf404efb8,
|
||||
0x9fb9eb1b,
|
||||
/* 0x016f: mmctx_xfer */
|
||||
0xbd00f802,
|
||||
0x0199f094,
|
||||
0x0f0007f1,
|
||||
0xd00203f0,
|
||||
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,
|
||||
0x0cb9f010,
|
||||
0xb601aec8,
|
||||
0xbefd11e4,
|
||||
0x008bd005,
|
||||
/* 0x01b4: mmctx_exec_loop */
|
||||
/* 0x01b4: mmctx_wait_free */
|
||||
0xf0008ecf,
|
||||
0x0bf41fe4,
|
||||
0x00ce98fa,
|
||||
0xd005e9fd,
|
||||
0xc0b6c08e,
|
||||
0x04cdb804,
|
||||
0xc8e81bf4,
|
||||
0x1bf402ab,
|
||||
/* 0x01d5: mmctx_fini_wait */
|
||||
0x008bcf18,
|
||||
0xb01fb4f0,
|
||||
0x1bf410b4,
|
||||
0x02a7f0f7,
|
||||
0xf4c921f4,
|
||||
/* 0x01ea: mmctx_stop */
|
||||
0xabc81b0e,
|
||||
0x10b4b600,
|
||||
0xf00cb9f0,
|
||||
0x8bd012b9,
|
||||
/* 0x01f9: mmctx_stop_wait */
|
||||
0x008bcf00,
|
||||
0xf412bbc8,
|
||||
/* 0x0202: mmctx_done */
|
||||
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,
|
||||
0xf112b9f0,
|
||||
0xf0c50007,
|
||||
0x0bd00103,
|
||||
/* 0x023b: mmctx_stop_wait */
|
||||
0xf104bd00,
|
||||
0xf0c500b7,
|
||||
0xbbcf01b3,
|
||||
0x12bbc800,
|
||||
/* 0x024b: mmctx_done */
|
||||
0xbdf31bf4,
|
||||
0x0199f094,
|
||||
0x170007f1,
|
||||
0xd00203f0,
|
||||
0x04bd0009,
|
||||
/* 0x025e: strand_wait */
|
||||
0xa0f900f8,
|
||||
0xf402a7f0,
|
||||
0xa0fcd021,
|
||||
/* 0x026a: strand_pre */
|
||||
0x97f000f8,
|
||||
0xfc07f10c,
|
||||
0x0203f04a,
|
||||
0xbd0009d0,
|
||||
0x5e21f504,
|
||||
/* 0x027f: strand_post */
|
||||
0xf000f802,
|
||||
0x07f10d97,
|
||||
0x03f04afc,
|
||||
0x0009d002,
|
||||
0x21f504bd,
|
||||
0xe7f00221,
|
||||
0x4721f503,
|
||||
0xfca7f102,
|
||||
0x02a3f046,
|
||||
0x0400aba0,
|
||||
0xf040a0d0,
|
||||
0xbcd001c7,
|
||||
0x1521f500,
|
||||
0x010c9202,
|
||||
0xf000acd0,
|
||||
0xbcd002c7,
|
||||
0x1521f500,
|
||||
0x3421f502,
|
||||
0x8087f102,
|
||||
0x0684b608,
|
||||
0xb70089cf,
|
||||
0x95220080,
|
||||
/* 0x02ca: ctx_init_strand_loop */
|
||||
0x00f8025e,
|
||||
/* 0x0294: strand_set */
|
||||
0xf10fc7f0,
|
||||
0xf04ffc07,
|
||||
0x0cd00203,
|
||||
0xf004bd00,
|
||||
0x07f10bc7,
|
||||
0x03f04afc,
|
||||
0x000cd002,
|
||||
0x07f104bd,
|
||||
0x03f04ffc,
|
||||
0x000ed002,
|
||||
0xc7f004bd,
|
||||
0xfc07f10a,
|
||||
0x0203f04a,
|
||||
0xbd000cd0,
|
||||
0x5e21f504,
|
||||
/* 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,
|
||||
0x408ed000,
|
||||
0xb6808acf,
|
||||
|
@ -259,167 +289,199 @@ uint32_t nvc0_grgpc_code[] = {
|
|||
0x170007f1,
|
||||
0xd00203f0,
|
||||
0x04bd0009,
|
||||
/* 0x02fe: error */
|
||||
/* 0x037e: error */
|
||||
0xe0f900f8,
|
||||
0x9814e7f1,
|
||||
0xf440e3f0,
|
||||
0xe0b78d21,
|
||||
0xf7f0041c,
|
||||
0x8d21f401,
|
||||
0x00f8e0fc,
|
||||
/* 0x0318: init */
|
||||
0x04fe04bd,
|
||||
0x0017f100,
|
||||
0x0227f012,
|
||||
0xf10012d0,
|
||||
0xfe042617,
|
||||
0x17f10010,
|
||||
0x10d00400,
|
||||
0x0427f0c0,
|
||||
0xf40012d0,
|
||||
0x17f11031,
|
||||
0x14b60608,
|
||||
0x0012cf06,
|
||||
0xf102ffb9,
|
||||
0xf09814e7,
|
||||
0x21f440e3,
|
||||
0x01f7f09d,
|
||||
0xf102ffb9,
|
||||
0xf09c1ce7,
|
||||
0x21f440e3,
|
||||
0xf8e0fc9d,
|
||||
/* 0x03a1: init */
|
||||
0xfe04bd00,
|
||||
0x27f00004,
|
||||
0x0007f102,
|
||||
0x0003f012,
|
||||
0xbd0002d0,
|
||||
0xd517f104,
|
||||
0x0010fe04,
|
||||
0x070007f1,
|
||||
0xd00003f0,
|
||||
0x04bd0000,
|
||||
0xf10427f0,
|
||||
0xf0040007,
|
||||
0x02d00003,
|
||||
0xf404bd00,
|
||||
0x27f11031,
|
||||
0x23f08200,
|
||||
0x0022cf01,
|
||||
0xf00137f0,
|
||||
0x32bb1f24,
|
||||
0x0132b604,
|
||||
0x80050280,
|
||||
0x10b70603,
|
||||
0x12cf0400,
|
||||
0x04028000,
|
||||
0x010027f1,
|
||||
0xcf0223f0,
|
||||
0x34bd0022,
|
||||
0x070047f1,
|
||||
0x950644b6,
|
||||
0x45d00825,
|
||||
0x4045d000,
|
||||
0x98000e98,
|
||||
0x21f5010f,
|
||||
0x2fbb0147,
|
||||
0x003fbb00,
|
||||
0x98010e98,
|
||||
0x21f5020f,
|
||||
0x0e980147,
|
||||
0x00effd05,
|
||||
0xbb002ebb,
|
||||
0x40b7003e,
|
||||
0x35b61300,
|
||||
0x0043d002,
|
||||
0xb60825b6,
|
||||
0x20b60635,
|
||||
0x0130b601,
|
||||
0xb60824b6,
|
||||
0x2fb90834,
|
||||
0x7121f502,
|
||||
0x003fbb02,
|
||||
0x010007f1,
|
||||
0x27f10603,
|
||||
0x23f08600,
|
||||
0x0022cf01,
|
||||
0xf1040280,
|
||||
0xf0010027,
|
||||
0x22cf0223,
|
||||
0x9534bd00,
|
||||
0x07f10825,
|
||||
0x03f0c000,
|
||||
0x0005d001,
|
||||
0x07f104bd,
|
||||
0x03f0c100,
|
||||
0x0005d001,
|
||||
0x0e9804bd,
|
||||
0x010f9800,
|
||||
0x015021f5,
|
||||
0xbb002fbb,
|
||||
0x0e98003f,
|
||||
0x020f9801,
|
||||
0x015021f5,
|
||||
0xfd050e98,
|
||||
0x2ebb00ef,
|
||||
0x003ebb00,
|
||||
0xf10235b6,
|
||||
0xf0d30007,
|
||||
0x03d00103,
|
||||
0xb604bd00,
|
||||
0x35b60825,
|
||||
0x0120b606,
|
||||
0xb60130b6,
|
||||
0x34b60824,
|
||||
0x022fb908,
|
||||
0x02d321f5,
|
||||
0xf1003fbb,
|
||||
0xf0010007,
|
||||
0x03d00203,
|
||||
0xbd04bd00,
|
||||
0x1f29f024,
|
||||
0x080007f1,
|
||||
0xd00203f0,
|
||||
0x04bd0003,
|
||||
0x29f024bd,
|
||||
0x0007f11f,
|
||||
0x0203f008,
|
||||
0xbd0002d0,
|
||||
/* 0x03e9: main */
|
||||
0x0031f404,
|
||||
0xf00028f4,
|
||||
0x21f41cd7,
|
||||
0xf401f439,
|
||||
0xf404e4b0,
|
||||
0x81fe1e18,
|
||||
0x0627f001,
|
||||
0x12fd20bd,
|
||||
0x01e4b604,
|
||||
0xfe051efd,
|
||||
0x21f50018,
|
||||
0x0ef404ad,
|
||||
/* 0x0419: main_not_ctx_xfer */
|
||||
0x10ef94d3,
|
||||
0xf501f5f0,
|
||||
0xf402fe21,
|
||||
/* 0x0426: ih */
|
||||
0x80f9c60e,
|
||||
0xf90188fe,
|
||||
0xf990f980,
|
||||
0xf9b0f9a0,
|
||||
0xf9e0f9d0,
|
||||
0xcf04bdf0,
|
||||
0xabc4800a,
|
||||
0x1d0bf404,
|
||||
0x1900b7f1,
|
||||
0xcf1cd7f0,
|
||||
0xbfcf40be,
|
||||
0x04bd0002,
|
||||
/* 0x0498: main */
|
||||
0xf40031f4,
|
||||
0xd7f00028,
|
||||
0x3921f41c,
|
||||
0xb0f401f4,
|
||||
0x18f404e4,
|
||||
0x0181fe1e,
|
||||
0xbd0627f0,
|
||||
0x0412fd20,
|
||||
0xfd01e4b6,
|
||||
0x18fe051e,
|
||||
0x8d21f500,
|
||||
0xd30ef405,
|
||||
/* 0x04c8: main_not_ctx_xfer */
|
||||
0xf010ef94,
|
||||
0x21f501f5,
|
||||
0x0ef4037e,
|
||||
/* 0x04d5: ih */
|
||||
0xfe80f9c6,
|
||||
0x80f90188,
|
||||
0xa0f990f9,
|
||||
0xd0f9b0f9,
|
||||
0xf0f9e0f9,
|
||||
0xa7f104bd,
|
||||
0xa3f00200,
|
||||
0x00aacf00,
|
||||
0xf404abc4,
|
||||
0xd7f02c0b,
|
||||
0x00e7f11c,
|
||||
0x00e3f01a,
|
||||
0xf100eecf,
|
||||
0xf01900f7,
|
||||
0xffcf00f3,
|
||||
0x0421f400,
|
||||
0x0400b0b7,
|
||||
0xd001e7f0,
|
||||
/* 0x045e: ih_no_fifo */
|
||||
0x0ad000be,
|
||||
0xfcf0fc40,
|
||||
0xfcd0fce0,
|
||||
0xfca0fcb0,
|
||||
0xfe80fc90,
|
||||
0x80fc0088,
|
||||
0xf80032f4,
|
||||
/* 0x0479: hub_barrier_done */
|
||||
0x01f7f001,
|
||||
0xbb040e98,
|
||||
0xe7f104fe,
|
||||
0xe3f09418,
|
||||
0x8d21f440,
|
||||
/* 0x048e: ctx_redswitch */
|
||||
0xe7f100f8,
|
||||
0xe4b60614,
|
||||
0x20f7f006,
|
||||
0xf000efd0,
|
||||
/* 0x049e: ctx_redswitch_delay */
|
||||
0xf2b608f7,
|
||||
0xfd1bf401,
|
||||
0x0a20f7f1,
|
||||
0xf800efd0,
|
||||
/* 0x04ad: ctx_xfer */
|
||||
0x0417f100,
|
||||
0x0614b60a,
|
||||
0xf4001fd0,
|
||||
0x21f50711,
|
||||
/* 0x04be: ctx_xfer_not_load */
|
||||
0x17f1048e,
|
||||
0x13f04afc,
|
||||
0x0c27f002,
|
||||
0xf50012d0,
|
||||
0xf1021521,
|
||||
0xf047fc27,
|
||||
0x20d00223,
|
||||
0x012cf000,
|
||||
0xd00320b6,
|
||||
0xacf00012,
|
||||
0x02a5f001,
|
||||
0xf000b7f0,
|
||||
0x0c9850b3,
|
||||
0x0fc4b604,
|
||||
0x9800bcbb,
|
||||
0x0d98000c,
|
||||
0x00e7f001,
|
||||
0x016621f5,
|
||||
0xf101e7f0,
|
||||
0xf01d0007,
|
||||
0x0ed00003,
|
||||
/* 0x0523: ih_no_fifo */
|
||||
0xf104bd00,
|
||||
0xf0010007,
|
||||
0x0ad00003,
|
||||
0xfc04bd00,
|
||||
0xfce0fcf0,
|
||||
0xfcb0fcd0,
|
||||
0xfc90fca0,
|
||||
0x0088fe80,
|
||||
0x32f480fc,
|
||||
/* 0x0547: hub_barrier_done */
|
||||
0xf001f800,
|
||||
0x0e9801f7,
|
||||
0x04febb04,
|
||||
0xf102ffb9,
|
||||
0xf09418e7,
|
||||
0x21f440e3,
|
||||
/* 0x055f: ctx_redswitch */
|
||||
0xf000f89d,
|
||||
0x07f120f7,
|
||||
0x03f08500,
|
||||
0x000fd001,
|
||||
0xe7f004bd,
|
||||
/* 0x0571: ctx_redswitch_delay */
|
||||
0x01e2b608,
|
||||
0xf1fd1bf4,
|
||||
0xf10800f5,
|
||||
0xf10200f5,
|
||||
0xf0850007,
|
||||
0x0fd00103,
|
||||
0xf804bd00,
|
||||
/* 0x058d: ctx_xfer */
|
||||
0x0007f100,
|
||||
0x0203f081,
|
||||
0xbd000fd0,
|
||||
0x0711f404,
|
||||
0x055f21f5,
|
||||
/* 0x05a0: ctx_xfer_not_load */
|
||||
0x026a21f5,
|
||||
0x07f124bd,
|
||||
0x03f047fc,
|
||||
0x0002d002,
|
||||
0x2cf004bd,
|
||||
0x0320b601,
|
||||
0x4afc07f1,
|
||||
0xd00203f0,
|
||||
0x04bd0002,
|
||||
0xf001acf0,
|
||||
0xb7f104a5,
|
||||
0xb3f04000,
|
||||
0xb7f102a5,
|
||||
0xb3f00000,
|
||||
0x040c9850,
|
||||
0xbb0fc4b6,
|
||||
0x0c9800bc,
|
||||
0x020d9801,
|
||||
0xf1060f98,
|
||||
0xf50800e7,
|
||||
0xf5016621,
|
||||
0xf4021521,
|
||||
0x12f40601,
|
||||
/* 0x0535: ctx_xfer_post */
|
||||
0xfc17f114,
|
||||
0x0213f04a,
|
||||
0xd00d27f0,
|
||||
0x21f50012,
|
||||
/* 0x0546: ctx_xfer_done */
|
||||
0x21f50215,
|
||||
0x00f80479,
|
||||
0x010d9800,
|
||||
0xf500e7f0,
|
||||
0xf0016f21,
|
||||
0xa5f001ac,
|
||||
0x00b7f104,
|
||||
0x50b3f040,
|
||||
0xb6040c98,
|
||||
0xbcbb0fc4,
|
||||
0x010c9800,
|
||||
0x98020d98,
|
||||
0xe7f1060f,
|
||||
0x21f50800,
|
||||
0x21f5016f,
|
||||
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,
|
||||
|
|
|
@ -41,14 +41,14 @@ uint32_t nvd7_grgpc_data[] = {
|
|||
};
|
||||
|
||||
uint32_t nvd7_grgpc_code[] = {
|
||||
0x03180ef5,
|
||||
0x03a10ef5,
|
||||
/* 0x0004: queue_put */
|
||||
0x9800d898,
|
||||
0x86f001d9,
|
||||
0x0489b808,
|
||||
0xf00c1bf4,
|
||||
0x21f502f7,
|
||||
0x00f802fe,
|
||||
0x00f8037e,
|
||||
/* 0x001c: queue_put_next */
|
||||
0xb60798c4,
|
||||
0x8dbb0384,
|
||||
|
@ -72,184 +72,214 @@ uint32_t nvd7_grgpc_code[] = {
|
|||
/* 0x0066: queue_get_done */
|
||||
0x00f80132,
|
||||
/* 0x0068: nv_rd32 */
|
||||
0x0728b7f1,
|
||||
0xb906b4b6,
|
||||
0xc9f002ec,
|
||||
0x00bcd01f,
|
||||
/* 0x0078: nv_rd32_wait */
|
||||
0xc800bccf,
|
||||
0x1bf41fcc,
|
||||
0x06a7f0fa,
|
||||
0x010921f5,
|
||||
0xf840bfcf,
|
||||
/* 0x008d: nv_wr32 */
|
||||
0x28b7f100,
|
||||
0x06b4b607,
|
||||
0xb980bfd0,
|
||||
0xc9f002ec,
|
||||
0x1ec9f01f,
|
||||
/* 0x00a3: nv_wr32_wait */
|
||||
0xcf00bcd0,
|
||||
0xccc800bc,
|
||||
0xfa1bf41f,
|
||||
/* 0x00ae: watchdog_reset */
|
||||
0x87f100f8,
|
||||
0x84b60430,
|
||||
0x1ff9f006,
|
||||
0xf8008fd0,
|
||||
/* 0x00bd: watchdog_clear */
|
||||
0x3087f100,
|
||||
0x0684b604,
|
||||
0xf80080d0,
|
||||
/* 0x00c9: wait_donez */
|
||||
0xf094bd00,
|
||||
0x07f10099,
|
||||
0x03f00f00,
|
||||
0x0009d002,
|
||||
0x07f104bd,
|
||||
0x03f00600,
|
||||
0x000ad002,
|
||||
/* 0x00e6: wait_donez_ne */
|
||||
0x87f104bd,
|
||||
0x83f00000,
|
||||
0x0088cf01,
|
||||
0xf4888aff,
|
||||
0x94bdf31b,
|
||||
0xf10099f0,
|
||||
0xf0170007,
|
||||
0x09d00203,
|
||||
0xf804bd00,
|
||||
/* 0x0109: wait_doneo */
|
||||
0xf094bd00,
|
||||
0x07f10099,
|
||||
0x03f00f00,
|
||||
0x0009d002,
|
||||
0x87f104bd,
|
||||
0x84b60818,
|
||||
0x008ad006,
|
||||
/* 0x0124: wait_doneo_e */
|
||||
0x040087f1,
|
||||
0xcf0684b6,
|
||||
0x8aff0088,
|
||||
0xf30bf488,
|
||||
0xf002ecb9,
|
||||
0x07f11fc9,
|
||||
0x03f0ca00,
|
||||
0x000cd001,
|
||||
/* 0x007a: nv_rd32_wait */
|
||||
0xc7f104bd,
|
||||
0xc3f0ca00,
|
||||
0x00cccf01,
|
||||
0xf41fccc8,
|
||||
0xa7f0f31b,
|
||||
0x1021f506,
|
||||
0x00f7f101,
|
||||
0x01f3f0cb,
|
||||
0xf800ffcf,
|
||||
/* 0x009d: nv_wr32 */
|
||||
0x0007f100,
|
||||
0x0103f0cc,
|
||||
0xbd000fd0,
|
||||
0x02ecb904,
|
||||
0xf01fc9f0,
|
||||
0x07f11ec9,
|
||||
0x03f0ca00,
|
||||
0x000cd001,
|
||||
/* 0x00be: nv_wr32_wait */
|
||||
0xc7f104bd,
|
||||
0xc3f0ca00,
|
||||
0x00cccf01,
|
||||
0xf41fccc8,
|
||||
0x00f8f31b,
|
||||
/* 0x00d0: wait_donez */
|
||||
0x99f094bd,
|
||||
0x0007f100,
|
||||
0x0203f017,
|
||||
0x0203f00f,
|
||||
0xbd0009d0,
|
||||
/* 0x0147: mmctx_size */
|
||||
0xbd00f804,
|
||||
/* 0x0149: nv_mmctx_size_loop */
|
||||
0x00e89894,
|
||||
0xb61a85b6,
|
||||
0x84b60180,
|
||||
0x0098bb02,
|
||||
0xb804e0b6,
|
||||
0x1bf404ef,
|
||||
0x029fb9eb,
|
||||
/* 0x0166: mmctx_xfer */
|
||||
0x94bd00f8,
|
||||
0xf10199f0,
|
||||
0xf00f0007,
|
||||
0x09d00203,
|
||||
0xf104bd00,
|
||||
0xb6071087,
|
||||
0x94bd0684,
|
||||
0xf405bbfd,
|
||||
0x8bd0090b,
|
||||
0x0099f000,
|
||||
/* 0x018c: mmctx_base_disabled */
|
||||
0xf405eefd,
|
||||
0x8ed00c0b,
|
||||
0xc08fd080,
|
||||
/* 0x019b: mmctx_multi_disabled */
|
||||
0xb70199f0,
|
||||
0xc8010080,
|
||||
0x0007f104,
|
||||
0x0203f006,
|
||||
0xbd000ad0,
|
||||
/* 0x00ed: wait_donez_ne */
|
||||
0x0087f104,
|
||||
0x0183f000,
|
||||
0xff0088cf,
|
||||
0x1bf4888a,
|
||||
0xf094bdf3,
|
||||
0x07f10099,
|
||||
0x03f01700,
|
||||
0x0009d002,
|
||||
0x00f804bd,
|
||||
/* 0x0110: wait_doneo */
|
||||
0x99f094bd,
|
||||
0x0007f100,
|
||||
0x0203f00f,
|
||||
0xbd0009d0,
|
||||
0x0007f104,
|
||||
0x0203f006,
|
||||
0xbd000ad0,
|
||||
/* 0x012d: wait_doneo_e */
|
||||
0x0087f104,
|
||||
0x0183f000,
|
||||
0xff0088cf,
|
||||
0x0bf4888a,
|
||||
0xf094bdf3,
|
||||
0x07f10099,
|
||||
0x03f01700,
|
||||
0x0009d002,
|
||||
0x00f804bd,
|
||||
/* 0x0150: mmctx_size */
|
||||
/* 0x0152: nv_mmctx_size_loop */
|
||||
0xe89894bd,
|
||||
0x1a85b600,
|
||||
0xb60180b6,
|
||||
0x98bb0284,
|
||||
0x04e0b600,
|
||||
0xf404efb8,
|
||||
0x9fb9eb1b,
|
||||
/* 0x016f: mmctx_xfer */
|
||||
0xbd00f802,
|
||||
0x0199f094,
|
||||
0x0f0007f1,
|
||||
0xd00203f0,
|
||||
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,
|
||||
0x0cb9f010,
|
||||
0xb601aec8,
|
||||
0xbefd11e4,
|
||||
0x008bd005,
|
||||
/* 0x01b4: mmctx_exec_loop */
|
||||
/* 0x01b4: mmctx_wait_free */
|
||||
0xf0008ecf,
|
||||
0x0bf41fe4,
|
||||
0x00ce98fa,
|
||||
0xd005e9fd,
|
||||
0xc0b6c08e,
|
||||
0x04cdb804,
|
||||
0xc8e81bf4,
|
||||
0x1bf402ab,
|
||||
/* 0x01d5: mmctx_fini_wait */
|
||||
0x008bcf18,
|
||||
0xb01fb4f0,
|
||||
0x1bf410b4,
|
||||
0x02a7f0f7,
|
||||
0xf4c921f4,
|
||||
/* 0x01ea: mmctx_stop */
|
||||
0xabc81b0e,
|
||||
0x10b4b600,
|
||||
0xf00cb9f0,
|
||||
0x8bd012b9,
|
||||
/* 0x01f9: mmctx_stop_wait */
|
||||
0x008bcf00,
|
||||
0xf412bbc8,
|
||||
/* 0x0202: mmctx_done */
|
||||
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,
|
||||
0xf112b9f0,
|
||||
0xf0c50007,
|
||||
0x0bd00103,
|
||||
/* 0x023b: mmctx_stop_wait */
|
||||
0xf104bd00,
|
||||
0xf0c500b7,
|
||||
0xbbcf01b3,
|
||||
0x12bbc800,
|
||||
/* 0x024b: mmctx_done */
|
||||
0xbdf31bf4,
|
||||
0x0199f094,
|
||||
0x170007f1,
|
||||
0xd00203f0,
|
||||
0x04bd0009,
|
||||
/* 0x025e: strand_wait */
|
||||
0xa0f900f8,
|
||||
0xf402a7f0,
|
||||
0xa0fcd021,
|
||||
/* 0x026a: strand_pre */
|
||||
0x97f000f8,
|
||||
0xfc07f10c,
|
||||
0x0203f04a,
|
||||
0xbd0009d0,
|
||||
0x5e21f504,
|
||||
/* 0x027f: strand_post */
|
||||
0xf000f802,
|
||||
0x07f10d97,
|
||||
0x03f04afc,
|
||||
0x0009d002,
|
||||
0x21f504bd,
|
||||
0xe7f00221,
|
||||
0x4721f503,
|
||||
0xfca7f102,
|
||||
0x02a3f046,
|
||||
0x0400aba0,
|
||||
0xf040a0d0,
|
||||
0xbcd001c7,
|
||||
0x1521f500,
|
||||
0x010c9202,
|
||||
0xf000acd0,
|
||||
0xbcd002c7,
|
||||
0x1521f500,
|
||||
0x3421f502,
|
||||
0x8087f102,
|
||||
0x0684b608,
|
||||
0xb70089cf,
|
||||
0x95220080,
|
||||
/* 0x02ca: ctx_init_strand_loop */
|
||||
0x00f8025e,
|
||||
/* 0x0294: strand_set */
|
||||
0xf10fc7f0,
|
||||
0xf04ffc07,
|
||||
0x0cd00203,
|
||||
0xf004bd00,
|
||||
0x07f10bc7,
|
||||
0x03f04afc,
|
||||
0x000cd002,
|
||||
0x07f104bd,
|
||||
0x03f04ffc,
|
||||
0x000ed002,
|
||||
0xc7f004bd,
|
||||
0xfc07f10a,
|
||||
0x0203f04a,
|
||||
0xbd000cd0,
|
||||
0x5e21f504,
|
||||
/* 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,
|
||||
0x408ed000,
|
||||
0xb6808acf,
|
||||
|
@ -263,198 +293,230 @@ uint32_t nvd7_grgpc_code[] = {
|
|||
0x170007f1,
|
||||
0xd00203f0,
|
||||
0x04bd0009,
|
||||
/* 0x02fe: error */
|
||||
/* 0x037e: error */
|
||||
0xe0f900f8,
|
||||
0x9814e7f1,
|
||||
0xf440e3f0,
|
||||
0xe0b78d21,
|
||||
0xf7f0041c,
|
||||
0x8d21f401,
|
||||
0x00f8e0fc,
|
||||
/* 0x0318: init */
|
||||
0x04fe04bd,
|
||||
0x0017f100,
|
||||
0x0227f012,
|
||||
0xf10012d0,
|
||||
0xfe047017,
|
||||
0x17f10010,
|
||||
0x10d00400,
|
||||
0x0427f0c0,
|
||||
0xf40012d0,
|
||||
0x17f11031,
|
||||
0x14b60608,
|
||||
0x0012cf06,
|
||||
0xf102ffb9,
|
||||
0xf09814e7,
|
||||
0x21f440e3,
|
||||
0x01f7f09d,
|
||||
0xf102ffb9,
|
||||
0xf09c1ce7,
|
||||
0x21f440e3,
|
||||
0xf8e0fc9d,
|
||||
/* 0x03a1: init */
|
||||
0xfe04bd00,
|
||||
0x27f00004,
|
||||
0x0007f102,
|
||||
0x0003f012,
|
||||
0xbd0002d0,
|
||||
0x1f17f104,
|
||||
0x0010fe05,
|
||||
0x070007f1,
|
||||
0xd00003f0,
|
||||
0x04bd0000,
|
||||
0xf10427f0,
|
||||
0xf0040007,
|
||||
0x02d00003,
|
||||
0xf404bd00,
|
||||
0x27f11031,
|
||||
0x23f08200,
|
||||
0x0022cf01,
|
||||
0xf00137f0,
|
||||
0x32bb1f24,
|
||||
0x0132b604,
|
||||
0x80050280,
|
||||
0x10b70603,
|
||||
0x12cf0400,
|
||||
0x04028000,
|
||||
0x0c30e7f1,
|
||||
0xbd50e3f0,
|
||||
0xbd34bd24,
|
||||
/* 0x0371: init_unk_loop */
|
||||
0x6821f444,
|
||||
0xf400f6b0,
|
||||
0xf7f00f0b,
|
||||
0x04f2bb01,
|
||||
0xb6054ffd,
|
||||
/* 0x0386: init_unk_next */
|
||||
0x20b60130,
|
||||
0x04e0b601,
|
||||
0xf40126b0,
|
||||
/* 0x0392: init_unk_done */
|
||||
0x0380e21b,
|
||||
0x08048007,
|
||||
0x010027f1,
|
||||
0xcf0223f0,
|
||||
0x34bd0022,
|
||||
0x070047f1,
|
||||
0x950644b6,
|
||||
0x45d00825,
|
||||
0x4045d000,
|
||||
0x98000e98,
|
||||
0x21f5010f,
|
||||
0x2fbb0147,
|
||||
0x003fbb00,
|
||||
0x98010e98,
|
||||
0x21f5020f,
|
||||
0x0e980147,
|
||||
0x00effd05,
|
||||
0xbb002ebb,
|
||||
0x0e98003e,
|
||||
0x030f9802,
|
||||
0x014721f5,
|
||||
0xfd070e98,
|
||||
0x27f10603,
|
||||
0x23f08600,
|
||||
0x0022cf01,
|
||||
0xf1040280,
|
||||
0xf00c30e7,
|
||||
0x24bd50e3,
|
||||
0x44bd34bd,
|
||||
/* 0x0410: init_unk_loop */
|
||||
0xb06821f4,
|
||||
0x0bf400f6,
|
||||
0x01f7f00f,
|
||||
0xfd04f2bb,
|
||||
0x30b6054f,
|
||||
/* 0x0425: init_unk_next */
|
||||
0x0120b601,
|
||||
0xb004e0b6,
|
||||
0x1bf40126,
|
||||
/* 0x0431: init_unk_done */
|
||||
0x070380e2,
|
||||
0xf1080480,
|
||||
0xf0010027,
|
||||
0x22cf0223,
|
||||
0x9534bd00,
|
||||
0x07f10825,
|
||||
0x03f0c000,
|
||||
0x0005d001,
|
||||
0x07f104bd,
|
||||
0x03f0c100,
|
||||
0x0005d001,
|
||||
0x0e9804bd,
|
||||
0x010f9800,
|
||||
0x015021f5,
|
||||
0xbb002fbb,
|
||||
0x0e98003f,
|
||||
0x020f9801,
|
||||
0x015021f5,
|
||||
0xfd050e98,
|
||||
0x2ebb00ef,
|
||||
0x003ebb00,
|
||||
0x130040b7,
|
||||
0xd00235b6,
|
||||
0x25b60043,
|
||||
0x0635b608,
|
||||
0xb60120b6,
|
||||
0x24b60130,
|
||||
0x0834b608,
|
||||
0xf5022fb9,
|
||||
0xbb027121,
|
||||
0x07f1003f,
|
||||
0x03f00100,
|
||||
0x0003d002,
|
||||
0x24bd04bd,
|
||||
0xf11f29f0,
|
||||
0xf0080007,
|
||||
0x02d00203,
|
||||
/* 0x0433: main */
|
||||
0x98020e98,
|
||||
0x21f5030f,
|
||||
0x0e980150,
|
||||
0x00effd07,
|
||||
0xbb002ebb,
|
||||
0x35b6003e,
|
||||
0x0007f102,
|
||||
0x0103f0d3,
|
||||
0xbd0003d0,
|
||||
0x0825b604,
|
||||
0xb60635b6,
|
||||
0x30b60120,
|
||||
0x0824b601,
|
||||
0xb90834b6,
|
||||
0x21f5022f,
|
||||
0x3fbb02d3,
|
||||
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,
|
||||
0x28f40031,
|
||||
0x24d7f000,
|
||||
0xf43921f4,
|
||||
0xe4b0f401,
|
||||
0x1e18f404,
|
||||
0xf00181fe,
|
||||
0x20bd0627,
|
||||
0xb60412fd,
|
||||
0x1efd01e4,
|
||||
0x0018fe05,
|
||||
0x04f721f5,
|
||||
/* 0x0463: main_not_ctx_xfer */
|
||||
0x94d30ef4,
|
||||
0xf5f010ef,
|
||||
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,
|
||||
0x21f50711,
|
||||
/* 0x05ea: ctx_xfer_not_load */
|
||||
0x21f505a9,
|
||||
0x24bd026a,
|
||||
0x47fc07f1,
|
||||
0xd00203f0,
|
||||
0x04bd0002,
|
||||
0xb6012cf0,
|
||||
0x07f10320,
|
||||
0x03f04afc,
|
||||
0x0002d002,
|
||||
0xacf004bd,
|
||||
0x02a5f001,
|
||||
0x0000b7f1,
|
||||
0x9850b3f0,
|
||||
0xc4b6040c,
|
||||
0x00bcbb0f,
|
||||
0x98020c98,
|
||||
0x0f98030d,
|
||||
0x00e7f108,
|
||||
0x6621f502,
|
||||
0x1521f501,
|
||||
0x0601f402,
|
||||
/* 0x05a3: ctx_xfer_post */
|
||||
0xf11412f4,
|
||||
0xf04afc17,
|
||||
0x27f00213,
|
||||
0x0012d00d,
|
||||
0x021521f5,
|
||||
/* 0x05b4: ctx_xfer_done */
|
||||
0x04c321f5,
|
||||
0x000000f8,
|
||||
0x98000c98,
|
||||
0xe7f0010d,
|
||||
0x6f21f500,
|
||||
0x01acf001,
|
||||
0x4000b7f1,
|
||||
0x9850b3f0,
|
||||
0xc4b6040c,
|
||||
0x00bcbb0f,
|
||||
0x98010c98,
|
||||
0x0f98020d,
|
||||
0x00e7f106,
|
||||
0x6f21f508,
|
||||
0x01acf001,
|
||||
0xf104a5f0,
|
||||
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,
|
||||
|
|
|
@ -41,14 +41,14 @@ uint32_t nve0_grgpc_data[] = {
|
|||
};
|
||||
|
||||
uint32_t nve0_grgpc_code[] = {
|
||||
0x03180ef5,
|
||||
0x03a10ef5,
|
||||
/* 0x0004: queue_put */
|
||||
0x9800d898,
|
||||
0x86f001d9,
|
||||
0x0489b808,
|
||||
0xf00c1bf4,
|
||||
0x21f502f7,
|
||||
0x00f802fe,
|
||||
0x00f8037e,
|
||||
/* 0x001c: queue_put_next */
|
||||
0xb60798c4,
|
||||
0x8dbb0384,
|
||||
|
@ -72,184 +72,214 @@ uint32_t nve0_grgpc_code[] = {
|
|||
/* 0x0066: queue_get_done */
|
||||
0x00f80132,
|
||||
/* 0x0068: nv_rd32 */
|
||||
0x0728b7f1,
|
||||
0xb906b4b6,
|
||||
0xc9f002ec,
|
||||
0x00bcd01f,
|
||||
/* 0x0078: nv_rd32_wait */
|
||||
0xc800bccf,
|
||||
0x1bf41fcc,
|
||||
0x06a7f0fa,
|
||||
0x010921f5,
|
||||
0xf840bfcf,
|
||||
/* 0x008d: nv_wr32 */
|
||||
0x28b7f100,
|
||||
0x06b4b607,
|
||||
0xb980bfd0,
|
||||
0xc9f002ec,
|
||||
0x1ec9f01f,
|
||||
/* 0x00a3: nv_wr32_wait */
|
||||
0xcf00bcd0,
|
||||
0xccc800bc,
|
||||
0xfa1bf41f,
|
||||
/* 0x00ae: watchdog_reset */
|
||||
0x87f100f8,
|
||||
0x84b60430,
|
||||
0x1ff9f006,
|
||||
0xf8008fd0,
|
||||
/* 0x00bd: watchdog_clear */
|
||||
0x3087f100,
|
||||
0x0684b604,
|
||||
0xf80080d0,
|
||||
/* 0x00c9: wait_donez */
|
||||
0xf094bd00,
|
||||
0x07f10099,
|
||||
0x03f00f00,
|
||||
0x0009d002,
|
||||
0x07f104bd,
|
||||
0x03f00600,
|
||||
0x000ad002,
|
||||
/* 0x00e6: wait_donez_ne */
|
||||
0x87f104bd,
|
||||
0x83f00000,
|
||||
0x0088cf01,
|
||||
0xf4888aff,
|
||||
0x94bdf31b,
|
||||
0xf10099f0,
|
||||
0xf0170007,
|
||||
0x09d00203,
|
||||
0xf804bd00,
|
||||
/* 0x0109: wait_doneo */
|
||||
0xf094bd00,
|
||||
0x07f10099,
|
||||
0x03f00f00,
|
||||
0x0009d002,
|
||||
0x87f104bd,
|
||||
0x84b60818,
|
||||
0x008ad006,
|
||||
/* 0x0124: wait_doneo_e */
|
||||
0x040087f1,
|
||||
0xcf0684b6,
|
||||
0x8aff0088,
|
||||
0xf30bf488,
|
||||
0xf002ecb9,
|
||||
0x07f11fc9,
|
||||
0x03f0ca00,
|
||||
0x000cd001,
|
||||
/* 0x007a: nv_rd32_wait */
|
||||
0xc7f104bd,
|
||||
0xc3f0ca00,
|
||||
0x00cccf01,
|
||||
0xf41fccc8,
|
||||
0xa7f0f31b,
|
||||
0x1021f506,
|
||||
0x00f7f101,
|
||||
0x01f3f0cb,
|
||||
0xf800ffcf,
|
||||
/* 0x009d: nv_wr32 */
|
||||
0x0007f100,
|
||||
0x0103f0cc,
|
||||
0xbd000fd0,
|
||||
0x02ecb904,
|
||||
0xf01fc9f0,
|
||||
0x07f11ec9,
|
||||
0x03f0ca00,
|
||||
0x000cd001,
|
||||
/* 0x00be: nv_wr32_wait */
|
||||
0xc7f104bd,
|
||||
0xc3f0ca00,
|
||||
0x00cccf01,
|
||||
0xf41fccc8,
|
||||
0x00f8f31b,
|
||||
/* 0x00d0: wait_donez */
|
||||
0x99f094bd,
|
||||
0x0007f100,
|
||||
0x0203f017,
|
||||
0x0203f00f,
|
||||
0xbd0009d0,
|
||||
/* 0x0147: mmctx_size */
|
||||
0xbd00f804,
|
||||
/* 0x0149: nv_mmctx_size_loop */
|
||||
0x00e89894,
|
||||
0xb61a85b6,
|
||||
0x84b60180,
|
||||
0x0098bb02,
|
||||
0xb804e0b6,
|
||||
0x1bf404ef,
|
||||
0x029fb9eb,
|
||||
/* 0x0166: mmctx_xfer */
|
||||
0x94bd00f8,
|
||||
0xf10199f0,
|
||||
0xf00f0007,
|
||||
0x09d00203,
|
||||
0xf104bd00,
|
||||
0xb6071087,
|
||||
0x94bd0684,
|
||||
0xf405bbfd,
|
||||
0x8bd0090b,
|
||||
0x0099f000,
|
||||
/* 0x018c: mmctx_base_disabled */
|
||||
0xf405eefd,
|
||||
0x8ed00c0b,
|
||||
0xc08fd080,
|
||||
/* 0x019b: mmctx_multi_disabled */
|
||||
0xb70199f0,
|
||||
0xc8010080,
|
||||
0x0007f104,
|
||||
0x0203f006,
|
||||
0xbd000ad0,
|
||||
/* 0x00ed: wait_donez_ne */
|
||||
0x0087f104,
|
||||
0x0183f000,
|
||||
0xff0088cf,
|
||||
0x1bf4888a,
|
||||
0xf094bdf3,
|
||||
0x07f10099,
|
||||
0x03f01700,
|
||||
0x0009d002,
|
||||
0x00f804bd,
|
||||
/* 0x0110: wait_doneo */
|
||||
0x99f094bd,
|
||||
0x0007f100,
|
||||
0x0203f00f,
|
||||
0xbd0009d0,
|
||||
0x0007f104,
|
||||
0x0203f006,
|
||||
0xbd000ad0,
|
||||
/* 0x012d: wait_doneo_e */
|
||||
0x0087f104,
|
||||
0x0183f000,
|
||||
0xff0088cf,
|
||||
0x0bf4888a,
|
||||
0xf094bdf3,
|
||||
0x07f10099,
|
||||
0x03f01700,
|
||||
0x0009d002,
|
||||
0x00f804bd,
|
||||
/* 0x0150: mmctx_size */
|
||||
/* 0x0152: nv_mmctx_size_loop */
|
||||
0xe89894bd,
|
||||
0x1a85b600,
|
||||
0xb60180b6,
|
||||
0x98bb0284,
|
||||
0x04e0b600,
|
||||
0xf404efb8,
|
||||
0x9fb9eb1b,
|
||||
/* 0x016f: mmctx_xfer */
|
||||
0xbd00f802,
|
||||
0x0199f094,
|
||||
0x0f0007f1,
|
||||
0xd00203f0,
|
||||
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,
|
||||
0x0cb9f010,
|
||||
0xb601aec8,
|
||||
0xbefd11e4,
|
||||
0x008bd005,
|
||||
/* 0x01b4: mmctx_exec_loop */
|
||||
/* 0x01b4: mmctx_wait_free */
|
||||
0xf0008ecf,
|
||||
0x0bf41fe4,
|
||||
0x00ce98fa,
|
||||
0xd005e9fd,
|
||||
0xc0b6c08e,
|
||||
0x04cdb804,
|
||||
0xc8e81bf4,
|
||||
0x1bf402ab,
|
||||
/* 0x01d5: mmctx_fini_wait */
|
||||
0x008bcf18,
|
||||
0xb01fb4f0,
|
||||
0x1bf410b4,
|
||||
0x02a7f0f7,
|
||||
0xf4c921f4,
|
||||
/* 0x01ea: mmctx_stop */
|
||||
0xabc81b0e,
|
||||
0x10b4b600,
|
||||
0xf00cb9f0,
|
||||
0x8bd012b9,
|
||||
/* 0x01f9: mmctx_stop_wait */
|
||||
0x008bcf00,
|
||||
0xf412bbc8,
|
||||
/* 0x0202: mmctx_done */
|
||||
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,
|
||||
0xf112b9f0,
|
||||
0xf0c50007,
|
||||
0x0bd00103,
|
||||
/* 0x023b: mmctx_stop_wait */
|
||||
0xf104bd00,
|
||||
0xf0c500b7,
|
||||
0xbbcf01b3,
|
||||
0x12bbc800,
|
||||
/* 0x024b: mmctx_done */
|
||||
0xbdf31bf4,
|
||||
0x0199f094,
|
||||
0x170007f1,
|
||||
0xd00203f0,
|
||||
0x04bd0009,
|
||||
/* 0x025e: strand_wait */
|
||||
0xa0f900f8,
|
||||
0xf402a7f0,
|
||||
0xa0fcd021,
|
||||
/* 0x026a: strand_pre */
|
||||
0x97f000f8,
|
||||
0xfc07f10c,
|
||||
0x0203f04a,
|
||||
0xbd0009d0,
|
||||
0x5e21f504,
|
||||
/* 0x027f: strand_post */
|
||||
0xf000f802,
|
||||
0x07f10d97,
|
||||
0x03f04afc,
|
||||
0x0009d002,
|
||||
0x21f504bd,
|
||||
0xe7f00221,
|
||||
0x4721f503,
|
||||
0xfca7f102,
|
||||
0x02a3f046,
|
||||
0x0400aba0,
|
||||
0xf040a0d0,
|
||||
0xbcd001c7,
|
||||
0x1521f500,
|
||||
0x010c9202,
|
||||
0xf000acd0,
|
||||
0xbcd002c7,
|
||||
0x1521f500,
|
||||
0x3421f502,
|
||||
0x8087f102,
|
||||
0x0684b608,
|
||||
0xb70089cf,
|
||||
0x95220080,
|
||||
/* 0x02ca: ctx_init_strand_loop */
|
||||
0x00f8025e,
|
||||
/* 0x0294: strand_set */
|
||||
0xf10fc7f0,
|
||||
0xf04ffc07,
|
||||
0x0cd00203,
|
||||
0xf004bd00,
|
||||
0x07f10bc7,
|
||||
0x03f04afc,
|
||||
0x000cd002,
|
||||
0x07f104bd,
|
||||
0x03f04ffc,
|
||||
0x000ed002,
|
||||
0xc7f004bd,
|
||||
0xfc07f10a,
|
||||
0x0203f04a,
|
||||
0xbd000cd0,
|
||||
0x5e21f504,
|
||||
/* 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,
|
||||
0x408ed000,
|
||||
0xb6808acf,
|
||||
|
@ -263,198 +293,230 @@ uint32_t nve0_grgpc_code[] = {
|
|||
0x170007f1,
|
||||
0xd00203f0,
|
||||
0x04bd0009,
|
||||
/* 0x02fe: error */
|
||||
/* 0x037e: error */
|
||||
0xe0f900f8,
|
||||
0x9814e7f1,
|
||||
0xf440e3f0,
|
||||
0xe0b78d21,
|
||||
0xf7f0041c,
|
||||
0x8d21f401,
|
||||
0x00f8e0fc,
|
||||
/* 0x0318: init */
|
||||
0x04fe04bd,
|
||||
0x0017f100,
|
||||
0x0227f012,
|
||||
0xf10012d0,
|
||||
0xfe047017,
|
||||
0x17f10010,
|
||||
0x10d00400,
|
||||
0x0427f0c0,
|
||||
0xf40012d0,
|
||||
0x17f11031,
|
||||
0x14b60608,
|
||||
0x0012cf06,
|
||||
0xf102ffb9,
|
||||
0xf09814e7,
|
||||
0x21f440e3,
|
||||
0x01f7f09d,
|
||||
0xf102ffb9,
|
||||
0xf09c1ce7,
|
||||
0x21f440e3,
|
||||
0xf8e0fc9d,
|
||||
/* 0x03a1: init */
|
||||
0xfe04bd00,
|
||||
0x27f00004,
|
||||
0x0007f102,
|
||||
0x0003f012,
|
||||
0xbd0002d0,
|
||||
0x1f17f104,
|
||||
0x0010fe05,
|
||||
0x070007f1,
|
||||
0xd00003f0,
|
||||
0x04bd0000,
|
||||
0xf10427f0,
|
||||
0xf0040007,
|
||||
0x02d00003,
|
||||
0xf404bd00,
|
||||
0x27f11031,
|
||||
0x23f08200,
|
||||
0x0022cf01,
|
||||
0xf00137f0,
|
||||
0x32bb1f24,
|
||||
0x0132b604,
|
||||
0x80050280,
|
||||
0x10b70603,
|
||||
0x12cf0400,
|
||||
0x04028000,
|
||||
0x0c30e7f1,
|
||||
0xbd50e3f0,
|
||||
0xbd34bd24,
|
||||
/* 0x0371: init_unk_loop */
|
||||
0x6821f444,
|
||||
0xf400f6b0,
|
||||
0xf7f00f0b,
|
||||
0x04f2bb01,
|
||||
0xb6054ffd,
|
||||
/* 0x0386: init_unk_next */
|
||||
0x20b60130,
|
||||
0x04e0b601,
|
||||
0xf40126b0,
|
||||
/* 0x0392: init_unk_done */
|
||||
0x0380e21b,
|
||||
0x08048007,
|
||||
0x010027f1,
|
||||
0xcf0223f0,
|
||||
0x34bd0022,
|
||||
0x070047f1,
|
||||
0x950644b6,
|
||||
0x45d00825,
|
||||
0x4045d000,
|
||||
0x98000e98,
|
||||
0x21f5010f,
|
||||
0x2fbb0147,
|
||||
0x003fbb00,
|
||||
0x98010e98,
|
||||
0x21f5020f,
|
||||
0x0e980147,
|
||||
0x00effd05,
|
||||
0xbb002ebb,
|
||||
0x0e98003e,
|
||||
0x030f9802,
|
||||
0x014721f5,
|
||||
0xfd070e98,
|
||||
0x27f10603,
|
||||
0x23f08600,
|
||||
0x0022cf01,
|
||||
0xf1040280,
|
||||
0xf00c30e7,
|
||||
0x24bd50e3,
|
||||
0x44bd34bd,
|
||||
/* 0x0410: init_unk_loop */
|
||||
0xb06821f4,
|
||||
0x0bf400f6,
|
||||
0x01f7f00f,
|
||||
0xfd04f2bb,
|
||||
0x30b6054f,
|
||||
/* 0x0425: init_unk_next */
|
||||
0x0120b601,
|
||||
0xb004e0b6,
|
||||
0x1bf40126,
|
||||
/* 0x0431: init_unk_done */
|
||||
0x070380e2,
|
||||
0xf1080480,
|
||||
0xf0010027,
|
||||
0x22cf0223,
|
||||
0x9534bd00,
|
||||
0x07f10825,
|
||||
0x03f0c000,
|
||||
0x0005d001,
|
||||
0x07f104bd,
|
||||
0x03f0c100,
|
||||
0x0005d001,
|
||||
0x0e9804bd,
|
||||
0x010f9800,
|
||||
0x015021f5,
|
||||
0xbb002fbb,
|
||||
0x0e98003f,
|
||||
0x020f9801,
|
||||
0x015021f5,
|
||||
0xfd050e98,
|
||||
0x2ebb00ef,
|
||||
0x003ebb00,
|
||||
0x130040b7,
|
||||
0xd00235b6,
|
||||
0x25b60043,
|
||||
0x0635b608,
|
||||
0xb60120b6,
|
||||
0x24b60130,
|
||||
0x0834b608,
|
||||
0xf5022fb9,
|
||||
0xbb027121,
|
||||
0x07f1003f,
|
||||
0x03f00100,
|
||||
0x0003d002,
|
||||
0x24bd04bd,
|
||||
0xf11f29f0,
|
||||
0xf0080007,
|
||||
0x02d00203,
|
||||
/* 0x0433: main */
|
||||
0x98020e98,
|
||||
0x21f5030f,
|
||||
0x0e980150,
|
||||
0x00effd07,
|
||||
0xbb002ebb,
|
||||
0x35b6003e,
|
||||
0x0007f102,
|
||||
0x0103f0d3,
|
||||
0xbd0003d0,
|
||||
0x0825b604,
|
||||
0xb60635b6,
|
||||
0x30b60120,
|
||||
0x0824b601,
|
||||
0xb90834b6,
|
||||
0x21f5022f,
|
||||
0x3fbb02d3,
|
||||
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,
|
||||
0x28f40031,
|
||||
0x24d7f000,
|
||||
0xf43921f4,
|
||||
0xe4b0f401,
|
||||
0x1e18f404,
|
||||
0xf00181fe,
|
||||
0x20bd0627,
|
||||
0xb60412fd,
|
||||
0x1efd01e4,
|
||||
0x0018fe05,
|
||||
0x04f721f5,
|
||||
/* 0x0463: main_not_ctx_xfer */
|
||||
0x94d30ef4,
|
||||
0xf5f010ef,
|
||||
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,
|
||||
0x21f50711,
|
||||
/* 0x05ea: ctx_xfer_not_load */
|
||||
0x21f505a9,
|
||||
0x24bd026a,
|
||||
0x47fc07f1,
|
||||
0xd00203f0,
|
||||
0x04bd0002,
|
||||
0xb6012cf0,
|
||||
0x07f10320,
|
||||
0x03f04afc,
|
||||
0x0002d002,
|
||||
0xacf004bd,
|
||||
0x02a5f001,
|
||||
0x0000b7f1,
|
||||
0x9850b3f0,
|
||||
0xc4b6040c,
|
||||
0x00bcbb0f,
|
||||
0x98020c98,
|
||||
0x0f98030d,
|
||||
0x00e7f108,
|
||||
0x6621f502,
|
||||
0x1521f501,
|
||||
0x0601f402,
|
||||
/* 0x05a3: ctx_xfer_post */
|
||||
0xf11412f4,
|
||||
0xf04afc17,
|
||||
0x27f00213,
|
||||
0x0012d00d,
|
||||
0x021521f5,
|
||||
/* 0x05b4: ctx_xfer_done */
|
||||
0x04c321f5,
|
||||
0x000000f8,
|
||||
0x98000c98,
|
||||
0xe7f0010d,
|
||||
0x6f21f500,
|
||||
0x01acf001,
|
||||
0x4000b7f1,
|
||||
0x9850b3f0,
|
||||
0xc4b6040c,
|
||||
0x00bcbb0f,
|
||||
0x98010c98,
|
||||
0x0f98020d,
|
||||
0x00e7f106,
|
||||
0x6f21f508,
|
||||
0x01acf001,
|
||||
0xf104a5f0,
|
||||
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,
|
||||
|
|
|
@ -41,14 +41,14 @@ uint32_t nvf0_grgpc_data[] = {
|
|||
};
|
||||
|
||||
uint32_t nvf0_grgpc_code[] = {
|
||||
0x03180ef5,
|
||||
0x03a10ef5,
|
||||
/* 0x0004: queue_put */
|
||||
0x9800d898,
|
||||
0x86f001d9,
|
||||
0x0489b808,
|
||||
0xf00c1bf4,
|
||||
0x21f502f7,
|
||||
0x00f802fe,
|
||||
0x00f8037e,
|
||||
/* 0x001c: queue_put_next */
|
||||
0xb60798c4,
|
||||
0x8dbb0384,
|
||||
|
@ -72,184 +72,214 @@ uint32_t nvf0_grgpc_code[] = {
|
|||
/* 0x0066: queue_get_done */
|
||||
0x00f80132,
|
||||
/* 0x0068: nv_rd32 */
|
||||
0x0728b7f1,
|
||||
0xb906b4b6,
|
||||
0xc9f002ec,
|
||||
0x00bcd01f,
|
||||
/* 0x0078: nv_rd32_wait */
|
||||
0xc800bccf,
|
||||
0x1bf41fcc,
|
||||
0x06a7f0fa,
|
||||
0x010921f5,
|
||||
0xf840bfcf,
|
||||
/* 0x008d: nv_wr32 */
|
||||
0x28b7f100,
|
||||
0x06b4b607,
|
||||
0xb980bfd0,
|
||||
0xc9f002ec,
|
||||
0x1ec9f01f,
|
||||
/* 0x00a3: nv_wr32_wait */
|
||||
0xcf00bcd0,
|
||||
0xccc800bc,
|
||||
0xfa1bf41f,
|
||||
/* 0x00ae: watchdog_reset */
|
||||
0x87f100f8,
|
||||
0x84b60430,
|
||||
0x1ff9f006,
|
||||
0xf8008fd0,
|
||||
/* 0x00bd: watchdog_clear */
|
||||
0x3087f100,
|
||||
0x0684b604,
|
||||
0xf80080d0,
|
||||
/* 0x00c9: wait_donez */
|
||||
0xf094bd00,
|
||||
0x07f10099,
|
||||
0x03f03700,
|
||||
0x0009d002,
|
||||
0x07f104bd,
|
||||
0x03f00600,
|
||||
0x000ad002,
|
||||
/* 0x00e6: wait_donez_ne */
|
||||
0x87f104bd,
|
||||
0x83f00000,
|
||||
0x0088cf01,
|
||||
0xf4888aff,
|
||||
0x94bdf31b,
|
||||
0xf10099f0,
|
||||
0xf0170007,
|
||||
0x09d00203,
|
||||
0xf804bd00,
|
||||
/* 0x0109: wait_doneo */
|
||||
0xf094bd00,
|
||||
0x07f10099,
|
||||
0x03f03700,
|
||||
0x0009d002,
|
||||
0x87f104bd,
|
||||
0x84b60818,
|
||||
0x008ad006,
|
||||
/* 0x0124: wait_doneo_e */
|
||||
0x040087f1,
|
||||
0xcf0684b6,
|
||||
0x8aff0088,
|
||||
0xf30bf488,
|
||||
0xf002ecb9,
|
||||
0x07f11fc9,
|
||||
0x03f0ca00,
|
||||
0x000cd001,
|
||||
/* 0x007a: nv_rd32_wait */
|
||||
0xc7f104bd,
|
||||
0xc3f0ca00,
|
||||
0x00cccf01,
|
||||
0xf41fccc8,
|
||||
0xa7f0f31b,
|
||||
0x1021f506,
|
||||
0x00f7f101,
|
||||
0x01f3f0cb,
|
||||
0xf800ffcf,
|
||||
/* 0x009d: nv_wr32 */
|
||||
0x0007f100,
|
||||
0x0103f0cc,
|
||||
0xbd000fd0,
|
||||
0x02ecb904,
|
||||
0xf01fc9f0,
|
||||
0x07f11ec9,
|
||||
0x03f0ca00,
|
||||
0x000cd001,
|
||||
/* 0x00be: nv_wr32_wait */
|
||||
0xc7f104bd,
|
||||
0xc3f0ca00,
|
||||
0x00cccf01,
|
||||
0xf41fccc8,
|
||||
0x00f8f31b,
|
||||
/* 0x00d0: wait_donez */
|
||||
0x99f094bd,
|
||||
0x0007f100,
|
||||
0x0203f017,
|
||||
0x0203f037,
|
||||
0xbd0009d0,
|
||||
/* 0x0147: mmctx_size */
|
||||
0xbd00f804,
|
||||
/* 0x0149: nv_mmctx_size_loop */
|
||||
0x00e89894,
|
||||
0xb61a85b6,
|
||||
0x84b60180,
|
||||
0x0098bb02,
|
||||
0xb804e0b6,
|
||||
0x1bf404ef,
|
||||
0x029fb9eb,
|
||||
/* 0x0166: mmctx_xfer */
|
||||
0x94bd00f8,
|
||||
0xf10199f0,
|
||||
0xf0370007,
|
||||
0x09d00203,
|
||||
0xf104bd00,
|
||||
0xb6071087,
|
||||
0x94bd0684,
|
||||
0xf405bbfd,
|
||||
0x8bd0090b,
|
||||
0x0099f000,
|
||||
/* 0x018c: mmctx_base_disabled */
|
||||
0xf405eefd,
|
||||
0x8ed00c0b,
|
||||
0xc08fd080,
|
||||
/* 0x019b: mmctx_multi_disabled */
|
||||
0xb70199f0,
|
||||
0xc8010080,
|
||||
0x0007f104,
|
||||
0x0203f006,
|
||||
0xbd000ad0,
|
||||
/* 0x00ed: wait_donez_ne */
|
||||
0x0087f104,
|
||||
0x0183f000,
|
||||
0xff0088cf,
|
||||
0x1bf4888a,
|
||||
0xf094bdf3,
|
||||
0x07f10099,
|
||||
0x03f01700,
|
||||
0x0009d002,
|
||||
0x00f804bd,
|
||||
/* 0x0110: wait_doneo */
|
||||
0x99f094bd,
|
||||
0x0007f100,
|
||||
0x0203f037,
|
||||
0xbd0009d0,
|
||||
0x0007f104,
|
||||
0x0203f006,
|
||||
0xbd000ad0,
|
||||
/* 0x012d: wait_doneo_e */
|
||||
0x0087f104,
|
||||
0x0183f000,
|
||||
0xff0088cf,
|
||||
0x0bf4888a,
|
||||
0xf094bdf3,
|
||||
0x07f10099,
|
||||
0x03f01700,
|
||||
0x0009d002,
|
||||
0x00f804bd,
|
||||
/* 0x0150: mmctx_size */
|
||||
/* 0x0152: nv_mmctx_size_loop */
|
||||
0xe89894bd,
|
||||
0x1a85b600,
|
||||
0xb60180b6,
|
||||
0x98bb0284,
|
||||
0x04e0b600,
|
||||
0xf404efb8,
|
||||
0x9fb9eb1b,
|
||||
/* 0x016f: mmctx_xfer */
|
||||
0xbd00f802,
|
||||
0x0199f094,
|
||||
0x370007f1,
|
||||
0xd00203f0,
|
||||
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,
|
||||
0x0cb9f010,
|
||||
0xb601aec8,
|
||||
0xbefd11e4,
|
||||
0x008bd005,
|
||||
/* 0x01b4: mmctx_exec_loop */
|
||||
/* 0x01b4: mmctx_wait_free */
|
||||
0xf0008ecf,
|
||||
0x0bf41fe4,
|
||||
0x00ce98fa,
|
||||
0xd005e9fd,
|
||||
0xc0b6c08e,
|
||||
0x04cdb804,
|
||||
0xc8e81bf4,
|
||||
0x1bf402ab,
|
||||
/* 0x01d5: mmctx_fini_wait */
|
||||
0x008bcf18,
|
||||
0xb01fb4f0,
|
||||
0x1bf410b4,
|
||||
0x02a7f0f7,
|
||||
0xf4c921f4,
|
||||
/* 0x01ea: mmctx_stop */
|
||||
0xabc81b0e,
|
||||
0x10b4b600,
|
||||
0xf00cb9f0,
|
||||
0x8bd012b9,
|
||||
/* 0x01f9: mmctx_stop_wait */
|
||||
0x008bcf00,
|
||||
0xf412bbc8,
|
||||
/* 0x0202: mmctx_done */
|
||||
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,
|
||||
0xf112b9f0,
|
||||
0xf0c50007,
|
||||
0x0bd00103,
|
||||
/* 0x023b: mmctx_stop_wait */
|
||||
0xf104bd00,
|
||||
0xf0c500b7,
|
||||
0xbbcf01b3,
|
||||
0x12bbc800,
|
||||
/* 0x024b: mmctx_done */
|
||||
0xbdf31bf4,
|
||||
0x0199f094,
|
||||
0x170007f1,
|
||||
0xd00203f0,
|
||||
0x04bd0009,
|
||||
/* 0x025e: strand_wait */
|
||||
0xa0f900f8,
|
||||
0xf402a7f0,
|
||||
0xa0fcd021,
|
||||
/* 0x026a: strand_pre */
|
||||
0x97f000f8,
|
||||
0xfc07f10c,
|
||||
0x0203f04a,
|
||||
0xbd0009d0,
|
||||
0x5e21f504,
|
||||
/* 0x027f: strand_post */
|
||||
0xf000f802,
|
||||
0x07f10d97,
|
||||
0x03f04afc,
|
||||
0x0009d002,
|
||||
0x21f504bd,
|
||||
0xe7f00221,
|
||||
0x4721f503,
|
||||
0xfca7f102,
|
||||
0x02a3f046,
|
||||
0x0400aba0,
|
||||
0xf040a0d0,
|
||||
0xbcd001c7,
|
||||
0x1521f500,
|
||||
0x010c9202,
|
||||
0xf000acd0,
|
||||
0xbcd002c7,
|
||||
0x1521f500,
|
||||
0x3421f502,
|
||||
0x8087f102,
|
||||
0x0684b608,
|
||||
0xb70089cf,
|
||||
0x95220080,
|
||||
/* 0x02ca: ctx_init_strand_loop */
|
||||
0x00f8025e,
|
||||
/* 0x0294: strand_set */
|
||||
0xf10fc7f0,
|
||||
0xf04ffc07,
|
||||
0x0cd00203,
|
||||
0xf004bd00,
|
||||
0x07f10bc7,
|
||||
0x03f04afc,
|
||||
0x000cd002,
|
||||
0x07f104bd,
|
||||
0x03f04ffc,
|
||||
0x000ed002,
|
||||
0xc7f004bd,
|
||||
0xfc07f10a,
|
||||
0x0203f04a,
|
||||
0xbd000cd0,
|
||||
0x5e21f504,
|
||||
/* 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,
|
||||
0x408ed000,
|
||||
0xb6808acf,
|
||||
|
@ -263,198 +293,230 @@ uint32_t nvf0_grgpc_code[] = {
|
|||
0x170007f1,
|
||||
0xd00203f0,
|
||||
0x04bd0009,
|
||||
/* 0x02fe: error */
|
||||
/* 0x037e: error */
|
||||
0xe0f900f8,
|
||||
0x9814e7f1,
|
||||
0xf440e3f0,
|
||||
0xe0b78d21,
|
||||
0xf7f0041c,
|
||||
0x8d21f401,
|
||||
0x00f8e0fc,
|
||||
/* 0x0318: init */
|
||||
0x04fe04bd,
|
||||
0x0017f100,
|
||||
0x0227f012,
|
||||
0xf10012d0,
|
||||
0xfe047017,
|
||||
0x17f10010,
|
||||
0x10d00400,
|
||||
0x0427f0c0,
|
||||
0xf40012d0,
|
||||
0x17f11031,
|
||||
0x14b60608,
|
||||
0x0012cf06,
|
||||
0xf102ffb9,
|
||||
0xf09814e7,
|
||||
0x21f440e3,
|
||||
0x01f7f09d,
|
||||
0xf102ffb9,
|
||||
0xf09c1ce7,
|
||||
0x21f440e3,
|
||||
0xf8e0fc9d,
|
||||
/* 0x03a1: init */
|
||||
0xfe04bd00,
|
||||
0x27f00004,
|
||||
0x0007f102,
|
||||
0x0003f012,
|
||||
0xbd0002d0,
|
||||
0x1f17f104,
|
||||
0x0010fe05,
|
||||
0x070007f1,
|
||||
0xd00003f0,
|
||||
0x04bd0000,
|
||||
0xf10427f0,
|
||||
0xf0040007,
|
||||
0x02d00003,
|
||||
0xf404bd00,
|
||||
0x27f11031,
|
||||
0x23f08200,
|
||||
0x0022cf01,
|
||||
0xf00137f0,
|
||||
0x32bb1f24,
|
||||
0x0132b604,
|
||||
0x80050280,
|
||||
0x10b70603,
|
||||
0x12cf0400,
|
||||
0x04028000,
|
||||
0x0c30e7f1,
|
||||
0xbd50e3f0,
|
||||
0xbd34bd24,
|
||||
/* 0x0371: init_unk_loop */
|
||||
0x6821f444,
|
||||
0xf400f6b0,
|
||||
0xf7f00f0b,
|
||||
0x04f2bb01,
|
||||
0xb6054ffd,
|
||||
/* 0x0386: init_unk_next */
|
||||
0x20b60130,
|
||||
0x04e0b601,
|
||||
0xf40226b0,
|
||||
/* 0x0392: init_unk_done */
|
||||
0x0380e21b,
|
||||
0x08048007,
|
||||
0x010027f1,
|
||||
0xcf0223f0,
|
||||
0x34bd0022,
|
||||
0x070047f1,
|
||||
0x950644b6,
|
||||
0x45d00825,
|
||||
0x4045d000,
|
||||
0x98000e98,
|
||||
0x21f5010f,
|
||||
0x2fbb0147,
|
||||
0x003fbb00,
|
||||
0x98010e98,
|
||||
0x21f5020f,
|
||||
0x0e980147,
|
||||
0x00effd05,
|
||||
0xbb002ebb,
|
||||
0x0e98003e,
|
||||
0x030f9802,
|
||||
0x014721f5,
|
||||
0xfd070e98,
|
||||
0x27f10603,
|
||||
0x23f08600,
|
||||
0x0022cf01,
|
||||
0xf1040280,
|
||||
0xf00c30e7,
|
||||
0x24bd50e3,
|
||||
0x44bd34bd,
|
||||
/* 0x0410: init_unk_loop */
|
||||
0xb06821f4,
|
||||
0x0bf400f6,
|
||||
0x01f7f00f,
|
||||
0xfd04f2bb,
|
||||
0x30b6054f,
|
||||
/* 0x0425: init_unk_next */
|
||||
0x0120b601,
|
||||
0xb004e0b6,
|
||||
0x1bf40226,
|
||||
/* 0x0431: init_unk_done */
|
||||
0x070380e2,
|
||||
0xf1080480,
|
||||
0xf0010027,
|
||||
0x22cf0223,
|
||||
0x9534bd00,
|
||||
0x07f10825,
|
||||
0x03f0c000,
|
||||
0x0005d001,
|
||||
0x07f104bd,
|
||||
0x03f0c100,
|
||||
0x0005d001,
|
||||
0x0e9804bd,
|
||||
0x010f9800,
|
||||
0x015021f5,
|
||||
0xbb002fbb,
|
||||
0x0e98003f,
|
||||
0x020f9801,
|
||||
0x015021f5,
|
||||
0xfd050e98,
|
||||
0x2ebb00ef,
|
||||
0x003ebb00,
|
||||
0x130040b7,
|
||||
0xd00235b6,
|
||||
0x25b60043,
|
||||
0x0635b608,
|
||||
0xb60120b6,
|
||||
0x24b60130,
|
||||
0x0834b608,
|
||||
0xf5022fb9,
|
||||
0xbb027121,
|
||||
0x07f1003f,
|
||||
0x03f00100,
|
||||
0x0003d002,
|
||||
0x24bd04bd,
|
||||
0xf11f29f0,
|
||||
0xf0300007,
|
||||
0x02d00203,
|
||||
/* 0x0433: main */
|
||||
0x98020e98,
|
||||
0x21f5030f,
|
||||
0x0e980150,
|
||||
0x00effd07,
|
||||
0xbb002ebb,
|
||||
0x35b6003e,
|
||||
0x0007f102,
|
||||
0x0103f0d3,
|
||||
0xbd0003d0,
|
||||
0x0825b604,
|
||||
0xb60635b6,
|
||||
0x30b60120,
|
||||
0x0824b601,
|
||||
0xb90834b6,
|
||||
0x21f5022f,
|
||||
0x3fbb02d3,
|
||||
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,
|
||||
0x28f40031,
|
||||
0x24d7f000,
|
||||
0xf43921f4,
|
||||
0xe4b0f401,
|
||||
0x1e18f404,
|
||||
0xf00181fe,
|
||||
0x20bd0627,
|
||||
0xb60412fd,
|
||||
0x1efd01e4,
|
||||
0x0018fe05,
|
||||
0x04f721f5,
|
||||
/* 0x0463: main_not_ctx_xfer */
|
||||
0x94d30ef4,
|
||||
0xf5f010ef,
|
||||
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,
|
||||
0x21f50711,
|
||||
/* 0x05ea: ctx_xfer_not_load */
|
||||
0x21f505a9,
|
||||
0x24bd026a,
|
||||
0x47fc07f1,
|
||||
0xd00203f0,
|
||||
0x04bd0002,
|
||||
0xb6012cf0,
|
||||
0x07f10320,
|
||||
0x03f04afc,
|
||||
0x0002d002,
|
||||
0xacf004bd,
|
||||
0x02a5f001,
|
||||
0x0000b7f1,
|
||||
0x9850b3f0,
|
||||
0xc4b6040c,
|
||||
0x00bcbb0f,
|
||||
0x98020c98,
|
||||
0x0f98030d,
|
||||
0x00e7f108,
|
||||
0x6621f502,
|
||||
0x1521f501,
|
||||
0x0601f402,
|
||||
/* 0x05a3: ctx_xfer_post */
|
||||
0xf11412f4,
|
||||
0xf04afc17,
|
||||
0x27f00213,
|
||||
0x0012d00d,
|
||||
0x021521f5,
|
||||
/* 0x05b4: ctx_xfer_done */
|
||||
0x04c321f5,
|
||||
0x000000f8,
|
||||
0x98000c98,
|
||||
0xe7f0010d,
|
||||
0x6f21f500,
|
||||
0x01acf001,
|
||||
0x4000b7f1,
|
||||
0x9850b3f0,
|
||||
0xc4b6040c,
|
||||
0x00bcbb0f,
|
||||
0x98010c98,
|
||||
0x0f98020d,
|
||||
0x00e7f106,
|
||||
0x6f21f508,
|
||||
0x01acf001,
|
||||
0xf104a5f0,
|
||||
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,
|
||||
|
|
|
@ -68,60 +68,57 @@ error:
|
|||
//
|
||||
init:
|
||||
clear b32 $r0
|
||||
mov $sp $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
|
||||
mov $r1 0x1200
|
||||
mov $r2 2
|
||||
iowr I[$r1 + 0x000] $r2 // FIFO_ENABLE
|
||||
mov $r2 NV_PGRAPH_FECS_ACCESS_FIFO
|
||||
nv_iowr(NV_PGRAPH_FECS_ACCESS, 0, $r2)
|
||||
|
||||
// setup i0 handler, and route all interrupts to it
|
||||
mov $r1 #ih
|
||||
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
|
||||
mov $r3 0x404
|
||||
shl b32 $r3 6
|
||||
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
|
||||
// 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..
|
||||
//
|
||||
mov $r2 0x2004
|
||||
iowr I[$r3 + 0x004] $r2 // { 0x04, ZERO } -> intr 9
|
||||
mov $r2 0x200b
|
||||
iowr I[$r3 + 0x008] $r2 // { 0x0b, ZERO } -> intr 10
|
||||
mov $r2 0x200c
|
||||
iowr I[$r3 + 0x01c] $r2 // { 0x0c, ZERO } -> intr 15
|
||||
mov $r2 0x2004 // { 0x04, ZERO } -> intr 9
|
||||
nv_iowr(NV_PGRAPH_FECS_IROUTE, 1, $r2)
|
||||
mov $r2 0x200b // { 0x0b, ZERO } -> intr 10
|
||||
nv_iowr(NV_PGRAPH_FECS_IROUTE, 2, $r2)
|
||||
mov $r2 0x200c // { 0x0c, ZERO } -> intr 15
|
||||
nv_iowr(NV_PGRAPH_FECS_IROUTE, 7, $r2)
|
||||
|
||||
// enable all INTR_UP interrupts
|
||||
mov $r2 0xc24
|
||||
shl b32 $r2 6
|
||||
not b32 $r3 $r0
|
||||
iowr I[$r2] $r3
|
||||
sub b32 $r3 $r0 1
|
||||
nv_iowr(NV_PGRAPH_FECS_INTR_UP_EN, 0, $r3)
|
||||
|
||||
// enable fifo, ctxsw, 9, 10, 15 interrupts
|
||||
mov $r2 -0x78fc // 0x8704
|
||||
sethi $r2 0
|
||||
iowr I[$r1 + 0x000] $r2 // INTR_EN_SET
|
||||
imm32($r2, 0x8704)
|
||||
nv_iowr(NV_PGRAPH_FECS_INTR_EN_SET, 0, $r2)
|
||||
|
||||
// fifo level triggered, rest edge
|
||||
sub b32 $r1 0x100
|
||||
mov $r2 4
|
||||
iowr I[$r1] $r2
|
||||
mov $r2 NV_PGRAPH_FECS_INTR_MODE_FIFO_LEVEL
|
||||
nv_iowr(NV_PGRAPH_FECS_INTR_MODE, 0, $r2)
|
||||
|
||||
// enable interrupts
|
||||
bset $flags ie0
|
||||
|
||||
// fetch enabled GPC/ROP counts
|
||||
mov $r14 -0x69fc // 0x409604
|
||||
sethi $r14 0x400000
|
||||
call #nv_rd32
|
||||
nv_rd32($r14, 0x409604)
|
||||
extr $r1 $r15 16:20
|
||||
st b32 D[$r0 + #rop_count] $r1
|
||||
and $r15 0x1f
|
||||
|
@ -131,10 +128,8 @@ init:
|
|||
mov $r1 1
|
||||
shl b32 $r1 $r15
|
||||
sub b32 $r1 1
|
||||
mov $r2 0x40c
|
||||
shl b32 $r2 6
|
||||
iowr I[$r2 + 0x000] $r1
|
||||
iowr I[$r2 + 0x100] $r1
|
||||
nv_iowr(NV_PGRAPH_FECS_BAR_MASK0, 0, $r1)
|
||||
nv_iowr(NV_PGRAPH_FECS_BAR_MASK1, 0, $r1)
|
||||
|
||||
// context size calculation, reserve first 256 bytes for use by fuc
|
||||
mov $r1 256
|
||||
|
@ -142,26 +137,24 @@ init:
|
|||
// calculate size of mmio context data
|
||||
ld b32 $r14 D[$r0 + #hub_mmio_list_head]
|
||||
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,
|
||||
// they don't (currently) ever change
|
||||
mov $r3 0x700
|
||||
shl b32 $r3 6
|
||||
shr b32 $r4 $r1 8
|
||||
iowr I[$r3 + 0x000] $r4 // MMCTX_SAVE_SWBASE
|
||||
iowr I[$r3 + 0x100] $r4 // MMCTX_LOAD_SWBASE
|
||||
nv_iowr(NV_PGRAPH_FECS_MMCTX_SAVE_SWBASE, 0, $r4)
|
||||
nv_iowr(NV_PGRAPH_FECS_MMCTX_LOAD_SWBASE, 0, $r4)
|
||||
add b32 $r3 0x1300
|
||||
add b32 $r1 $r15
|
||||
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
|
||||
shr b32 $r1 8
|
||||
add b32 $r1 1
|
||||
shl b32 $r1 8
|
||||
mov b32 $r15 $r1
|
||||
call #strand_ctx_init
|
||||
call(strand_ctx_init)
|
||||
add b32 $r1 $r15
|
||||
|
||||
// initialise each GPC in sequence by passing in the offset of its
|
||||
|
@ -173,30 +166,29 @@ init:
|
|||
// in GPCn_CC_SCRATCH[1]
|
||||
//
|
||||
ld b32 $r3 D[$r0 + #gpc_count]
|
||||
mov $r4 0x2000
|
||||
sethi $r4 0x500000
|
||||
imm32($r4, 0x502000)
|
||||
init_gpc:
|
||||
// setup, and start GPC ucode running
|
||||
add b32 $r14 $r4 0x804
|
||||
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
|
||||
clear b32 $r15
|
||||
call #nv_wr32
|
||||
call(nv_wr32)
|
||||
add b32 $r14 $r4 0x104
|
||||
call #nv_wr32 // ENTRY
|
||||
call(nv_wr32) // ENTRY
|
||||
add b32 $r14 $r4 0x100
|
||||
mov $r15 2 // CTRL_START_TRIGGER
|
||||
call #nv_wr32 // CTRL
|
||||
call(nv_wr32) // CTRL
|
||||
|
||||
// wait for it to complete, and adjust context size
|
||||
add b32 $r14 $r4 0x800
|
||||
init_gpc_wait:
|
||||
call #nv_rd32
|
||||
call(nv_rd32)
|
||||
xbit $r15 $r15 31
|
||||
bra e #init_gpc_wait
|
||||
add b32 $r14 $r4 0x804
|
||||
call #nv_rd32
|
||||
call(nv_rd32)
|
||||
add b32 $r1 $r15
|
||||
|
||||
// next!
|
||||
|
@ -218,17 +210,15 @@ main:
|
|||
bset $flags $p0
|
||||
sleep $p0
|
||||
mov $r13 #cmd_queue
|
||||
call #queue_get
|
||||
call(queue_get)
|
||||
bra $p1 #main
|
||||
|
||||
// context switch, requested by GPU?
|
||||
cmpu b32 $r14 0x4001
|
||||
bra ne #main_not_ctx_switch
|
||||
trace_set(T_AUTO)
|
||||
mov $r1 0xb00
|
||||
shl b32 $r1 6
|
||||
iord $r2 I[$r1 + 0x100] // CHAN_NEXT
|
||||
iord $r1 I[$r1 + 0x000] // CHAN_CUR
|
||||
nv_iord($r1, NV_PGRAPH_FECS_CHAN_ADDR, 0)
|
||||
nv_iord($r2, NV_PGRAPH_FECS_CHAN_NEXT, 0)
|
||||
|
||||
xbit $r3 $r1 31
|
||||
bra e #chsw_no_prev
|
||||
|
@ -239,12 +229,12 @@ main:
|
|||
trace_set(T_SAVE)
|
||||
bclr $flags $p1
|
||||
bset $flags $p2
|
||||
call #ctx_xfer
|
||||
call(ctx_xfer)
|
||||
trace_clr(T_SAVE);
|
||||
pop $r2
|
||||
trace_set(T_LOAD);
|
||||
bset $flags $p1
|
||||
call #ctx_xfer
|
||||
call(ctx_xfer)
|
||||
trace_clr(T_LOAD);
|
||||
bra #chsw_done
|
||||
chsw_prev_no_next:
|
||||
|
@ -252,25 +242,21 @@ main:
|
|||
mov b32 $r2 $r1
|
||||
bclr $flags $p1
|
||||
bclr $flags $p2
|
||||
call #ctx_xfer
|
||||
call(ctx_xfer)
|
||||
pop $r2
|
||||
mov $r1 0xb00
|
||||
shl b32 $r1 6
|
||||
iowr I[$r1] $r2
|
||||
nv_iowr(NV_PGRAPH_FECS_CHAN_ADDR, 0, $r2)
|
||||
bra #chsw_done
|
||||
chsw_no_prev:
|
||||
xbit $r3 $r2 31
|
||||
bra e #chsw_done
|
||||
bset $flags $p1
|
||||
bclr $flags $p2
|
||||
call #ctx_xfer
|
||||
call(ctx_xfer)
|
||||
|
||||
// ack the context switch request
|
||||
chsw_done:
|
||||
mov $r1 0xb0c
|
||||
shl b32 $r1 6
|
||||
mov $r2 1
|
||||
iowr I[$r1 + 0x000] $r2 // 0x409b0c
|
||||
mov $r2 NV_PGRAPH_FECS_CHSW_ACK
|
||||
nv_iowr(NV_PGRAPH_FECS_CHSW, 0, $r2)
|
||||
trace_clr(T_AUTO)
|
||||
bra #main
|
||||
|
||||
|
@ -279,7 +265,7 @@ main:
|
|||
cmpu b32 $r14 0x0001
|
||||
bra ne #main_not_ctx_chan
|
||||
mov b32 $r2 $r15
|
||||
call #ctx_chan
|
||||
call(ctx_chan)
|
||||
bra #main_done
|
||||
|
||||
// request to store current channel context?
|
||||
|
@ -289,14 +275,14 @@ main:
|
|||
trace_set(T_SAVE)
|
||||
bclr $flags $p1
|
||||
bclr $flags $p2
|
||||
call #ctx_xfer
|
||||
call(ctx_xfer)
|
||||
trace_clr(T_SAVE)
|
||||
bra #main_done
|
||||
|
||||
main_not_ctx_save:
|
||||
shl b32 $r15 $r14 16
|
||||
or $r15 E_BAD_COMMAND
|
||||
call #error
|
||||
call(error)
|
||||
bra #main
|
||||
|
||||
main_done:
|
||||
|
@ -319,41 +305,38 @@ ih:
|
|||
clear b32 $r0
|
||||
|
||||
// incoming fifo command?
|
||||
iord $r10 I[$r0 + 0x200] // INTR
|
||||
and $r11 $r10 0x00000004
|
||||
nv_iord($r10, NV_PGRAPH_FECS_INTR, 0)
|
||||
and $r11 $r10 NV_PGRAPH_FECS_INTR_FIFO
|
||||
bra e #ih_no_fifo
|
||||
// queue incoming fifo command for later processing
|
||||
mov $r11 0x1900
|
||||
mov $r13 #cmd_queue
|
||||
iord $r14 I[$r11 + 0x100] // FIFO_CMD
|
||||
iord $r15 I[$r11 + 0x000] // FIFO_DATA
|
||||
call #queue_put
|
||||
nv_iord($r14, NV_PGRAPH_FECS_FIFO_CMD, 0)
|
||||
nv_iord($r15, NV_PGRAPH_FECS_FIFO_DATA, 0)
|
||||
call(queue_put)
|
||||
add b32 $r11 0x400
|
||||
mov $r14 1
|
||||
iowr I[$r11 + 0x000] $r14 // FIFO_ACK
|
||||
nv_iowr(NV_PGRAPH_FECS_FIFO_ACK, 0, $r14)
|
||||
|
||||
// context switch request?
|
||||
ih_no_fifo:
|
||||
and $r11 $r10 0x00000100
|
||||
and $r11 $r10 NV_PGRAPH_FECS_INTR_CHSW
|
||||
bra e #ih_no_ctxsw
|
||||
// enqueue a context switch for later processing
|
||||
mov $r13 #cmd_queue
|
||||
mov $r14 0x4001
|
||||
call #queue_put
|
||||
call(queue_put)
|
||||
|
||||
// anything we didn't handle, bring it to the host's attention
|
||||
ih_no_ctxsw:
|
||||
mov $r11 0x104
|
||||
mov $r11 0x104 // FIFO | CHSW
|
||||
not b32 $r11
|
||||
and $r11 $r10 $r11
|
||||
bra e #ih_no_other
|
||||
mov $r10 0xc1c
|
||||
shl b32 $r10 6
|
||||
iowr I[$r10] $r11 // INTR_UP_SET
|
||||
nv_iowr(NV_PGRAPH_FECS_INTR_UP_SET, 0, $r11)
|
||||
|
||||
// ack, and wake up main()
|
||||
ih_no_other:
|
||||
iowr I[$r0 + 0x100] $r10 // INTR_ACK
|
||||
nv_iowr(NV_PGRAPH_FECS_INTR_ACK, 0, $r10)
|
||||
|
||||
pop $r15
|
||||
pop $r14
|
||||
|
@ -370,12 +353,10 @@ ih:
|
|||
#if CHIPSET < GK100
|
||||
// Not real sure, but, MEM_CMD 7 will hang forever if this isn't done
|
||||
ctx_4160s:
|
||||
mov $r14 0x4160
|
||||
sethi $r14 0x400000
|
||||
mov $r15 1
|
||||
call #nv_wr32
|
||||
nv_wr32(0x404160, $r15)
|
||||
ctx_4160s_wait:
|
||||
call #nv_rd32
|
||||
nv_rd32($r15, 0x404160)
|
||||
xbit $r15 $r15 4
|
||||
bra e #ctx_4160s_wait
|
||||
ret
|
||||
|
@ -384,10 +365,8 @@ ctx_4160s:
|
|||
// to hang with STATUS=0x00000007 until it's cleared.. fbcon can
|
||||
// still function with it set however...
|
||||
ctx_4160c:
|
||||
mov $r14 0x4160
|
||||
sethi $r14 0x400000
|
||||
clear b32 $r15
|
||||
call #nv_wr32
|
||||
nv_wr32(0x404160, $r15)
|
||||
ret
|
||||
#endif
|
||||
|
||||
|
@ -396,18 +375,14 @@ ctx_4160c:
|
|||
// In: $r15 value to set 0x404170 to
|
||||
//
|
||||
ctx_4170s:
|
||||
mov $r14 0x4170
|
||||
sethi $r14 0x400000
|
||||
or $r15 0x10
|
||||
call #nv_wr32
|
||||
nv_wr32(0x404170, $r15)
|
||||
ret
|
||||
|
||||
// Waits for a ctx_4170s() call to complete
|
||||
//
|
||||
ctx_4170w:
|
||||
mov $r14 0x4170
|
||||
sethi $r14 0x400000
|
||||
call #nv_rd32
|
||||
nv_rd32($r15, 0x404170)
|
||||
and $r15 0x10
|
||||
bra ne #ctx_4170w
|
||||
ret
|
||||
|
@ -419,16 +394,18 @@ ctx_4170w:
|
|||
// funny things happen.
|
||||
//
|
||||
ctx_redswitch:
|
||||
mov $r14 0x614
|
||||
shl b32 $r14 6
|
||||
mov $r15 0x270
|
||||
iowr I[$r14] $r15 // HUB_RED_SWITCH = ENABLE_GPC, POWER_ALL
|
||||
mov $r14 NV_PGRAPH_FECS_RED_SWITCH_ENABLE_GPC
|
||||
or $r14 NV_PGRAPH_FECS_RED_SWITCH_POWER_ROP
|
||||
or $r14 NV_PGRAPH_FECS_RED_SWITCH_POWER_GPC
|
||||
or $r14 NV_PGRAPH_FECS_RED_SWITCH_POWER_MAIN
|
||||
nv_iowr(NV_PGRAPH_FECS_RED_SWITCH, 0, $r14)
|
||||
mov $r15 8
|
||||
ctx_redswitch_delay:
|
||||
sub b32 $r15 1
|
||||
bra ne #ctx_redswitch_delay
|
||||
mov $r15 0x770
|
||||
iowr I[$r14] $r15 // HUB_RED_SWITCH = ENABLE_ALL, POWER_ALL
|
||||
or $r14 NV_PGRAPH_FECS_RED_SWITCH_ENABLE_ROP
|
||||
or $r14 NV_PGRAPH_FECS_RED_SWITCH_ENABLE_MAIN
|
||||
nv_iowr(NV_PGRAPH_FECS_RED_SWITCH, 0, $r14)
|
||||
ret
|
||||
|
||||
// Not a clue what this is for, except that unless the value is 0x10, the
|
||||
|
@ -437,15 +414,18 @@ ctx_redswitch:
|
|||
// In: $r15 value to set to (0x00/0x10 are used)
|
||||
//
|
||||
ctx_86c:
|
||||
mov $r14 0x86c
|
||||
shl b32 $r14 6
|
||||
iowr I[$r14] $r15 // HUB(0x86c) = val
|
||||
mov $r14 -0x75ec
|
||||
sethi $r14 0x400000
|
||||
call #nv_wr32 // ROP(0xa14) = val
|
||||
mov $r14 -0x5794
|
||||
sethi $r14 0x410000
|
||||
call #nv_wr32 // GPC(0x86c) = val
|
||||
nv_iowr(0x40986c, 0, $r15)
|
||||
nv_wr32(0x408a14, $r15)
|
||||
nv_wr32(0x41a86c, $r15)
|
||||
ret
|
||||
|
||||
// In: $r15 NV_PGRAPH_FECS_MEM_CMD_*
|
||||
ctx_mem:
|
||||
nv_iowr(NV_PGRAPH_FECS_MEM_CMD, 0, $r15)
|
||||
ctx_mem_wait:
|
||||
nv_iord($r15, NV_PGRAPH_FECS_MEM_CMD, 0)
|
||||
or $r15 $r15
|
||||
bra ne #ctx_mem_wait
|
||||
ret
|
||||
|
||||
// ctx_load - load's a channel's ctxctl data, and selects its vm
|
||||
|
@ -457,23 +437,14 @@ ctx_load:
|
|||
|
||||
// switch to channel, somewhat magic in parts..
|
||||
mov $r10 12 // DONE_UNK12
|
||||
call #wait_donez
|
||||
mov $r1 0xa24
|
||||
shl b32 $r1 6
|
||||
iowr I[$r1 + 0x000] $r0 // 0x409a24
|
||||
mov $r3 0xb00
|
||||
shl b32 $r3 6
|
||||
iowr I[$r3 + 0x100] $r2 // CHAN_NEXT
|
||||
mov $r1 0xa0c
|
||||
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
|
||||
call(wait_donez)
|
||||
clear b32 $r15
|
||||
nv_iowr(0x409a24, 0, $r15)
|
||||
nv_iowr(NV_PGRAPH_FECS_CHAN_NEXT, 0, $r2)
|
||||
nv_iowr(NV_PGRAPH_FECS_MEM_CHAN, 0, $r2)
|
||||
mov $r15 NV_PGRAPH_FECS_MEM_CMD_LOAD_CHAN
|
||||
call(ctx_mem)
|
||||
nv_iowr(NV_PGRAPH_FECS_CHAN_ADDR, 0, $r2)
|
||||
|
||||
// load channel header, fetch PGRAPH context pointer
|
||||
mov $xtargets $r0
|
||||
|
@ -482,14 +453,10 @@ ctx_load:
|
|||
add b32 $r2 2
|
||||
|
||||
trace_set(T_LCHAN)
|
||||
mov $r1 0xa04
|
||||
shl b32 $r1 6
|
||||
iowr I[$r1 + 0x000] $r2 // MEM_BASE
|
||||
mov $r1 0xa20
|
||||
shl b32 $r1 6
|
||||
mov $r2 0x0002
|
||||
sethi $r2 0x80000000
|
||||
iowr I[$r1 + 0x000] $r2 // MEM_TARGET = vram
|
||||
nv_iowr(NV_PGRAPH_FECS_MEM_BASE, 0, $r2)
|
||||
imm32($r2, NV_PGRAPH_FECS_MEM_TARGET_UNK31)
|
||||
or $r2 NV_PGRAPH_FECS_MEM_TARGET_AS_VRAM
|
||||
nv_iowr(NV_PGRAPH_FECS_MEM_TARGET, 0, $r2)
|
||||
mov $r1 0x10 // chan + 0x0210
|
||||
mov $r2 #xfer_data
|
||||
sethi $r2 0x00020000 // 16 bytes
|
||||
|
@ -507,13 +474,9 @@ ctx_load:
|
|||
|
||||
// set transfer base to start of context, and fetch context header
|
||||
trace_set(T_LCTXH)
|
||||
mov $r2 0xa04
|
||||
shl b32 $r2 6
|
||||
iowr I[$r2 + 0x000] $r1 // MEM_BASE
|
||||
mov $r2 1
|
||||
mov $r1 0xa20
|
||||
shl b32 $r1 6
|
||||
iowr I[$r1 + 0x000] $r2 // MEM_TARGET = vm
|
||||
nv_iowr(NV_PGRAPH_FECS_MEM_BASE, 0, $r1)
|
||||
mov $r2 NV_PGRAPH_FECS_MEM_TARGET_AS_VM
|
||||
nv_iowr(NV_PGRAPH_FECS_MEM_TARGET, 0, $r2)
|
||||
mov $r1 #chan_data
|
||||
sethi $r1 0x00060000 // 256 bytes
|
||||
xdld $r0 $r1
|
||||
|
@ -532,21 +495,15 @@ ctx_load:
|
|||
//
|
||||
ctx_chan:
|
||||
#if CHIPSET < GK100
|
||||
call #ctx_4160s
|
||||
call(ctx_4160s)
|
||||
#endif
|
||||
call #ctx_load
|
||||
call(ctx_load)
|
||||
mov $r10 12 // DONE_UNK12
|
||||
call #wait_donez
|
||||
mov $r1 0xa10
|
||||
shl b32 $r1 6
|
||||
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
|
||||
call(wait_donez)
|
||||
mov $r15 5 // MEM_CMD 5 ???
|
||||
call(ctx_mem)
|
||||
#if CHIPSET < GK100
|
||||
call #ctx_4160c
|
||||
call(ctx_4160c)
|
||||
#endif
|
||||
ret
|
||||
|
||||
|
@ -562,9 +519,7 @@ ctx_chan:
|
|||
ctx_mmio_exec:
|
||||
// set transfer base to be the mmio list
|
||||
ld b32 $r3 D[$r0 + #chan_mmio_address]
|
||||
mov $r2 0xa04
|
||||
shl b32 $r2 6
|
||||
iowr I[$r2 + 0x000] $r3 // MEM_BASE
|
||||
nv_iowr(NV_PGRAPH_FECS_MEM_BASE, 0, $r3)
|
||||
|
||||
clear b32 $r3
|
||||
ctx_mmio_loop:
|
||||
|
@ -580,7 +535,7 @@ ctx_mmio_exec:
|
|||
ctx_mmio_pull:
|
||||
ld b32 $r14 D[$r4 + #xfer_data + 0x00]
|
||||
ld b32 $r15 D[$r4 + #xfer_data + 0x04]
|
||||
call #nv_wr32
|
||||
call(nv_wr32)
|
||||
|
||||
// next!
|
||||
add b32 $r3 8
|
||||
|
@ -590,7 +545,7 @@ ctx_mmio_exec:
|
|||
// set transfer base back to the current context
|
||||
ctx_mmio_done:
|
||||
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
|
||||
st b32 D[$r0 + #chan_mmio_count] $r0
|
||||
|
@ -610,12 +565,10 @@ ctx_mmio_exec:
|
|||
//
|
||||
ctx_xfer:
|
||||
// according to mwk, some kind of wait for idle
|
||||
mov $r15 0xc00
|
||||
shl b32 $r15 6
|
||||
mov $r14 4
|
||||
iowr I[$r15 + 0x200] $r14
|
||||
nv_iowr(0x409c08, 0, $r14)
|
||||
ctx_xfer_idle:
|
||||
iord $r14 I[$r15 + 0x000]
|
||||
nv_iord($r14, 0x409c00, 0)
|
||||
and $r14 0x2000
|
||||
bra ne #ctx_xfer_idle
|
||||
|
||||
|
@ -623,50 +576,42 @@ ctx_xfer:
|
|||
bra $p2 #ctx_xfer_pre_load
|
||||
ctx_xfer_pre:
|
||||
mov $r15 0x10
|
||||
call #ctx_86c
|
||||
call(ctx_86c)
|
||||
#if CHIPSET < GK100
|
||||
call #ctx_4160s
|
||||
call(ctx_4160s)
|
||||
#endif
|
||||
bra not $p1 #ctx_xfer_exec
|
||||
|
||||
ctx_xfer_pre_load:
|
||||
mov $r15 2
|
||||
call #ctx_4170s
|
||||
call #ctx_4170w
|
||||
call #ctx_redswitch
|
||||
call(ctx_4170s)
|
||||
call(ctx_4170w)
|
||||
call(ctx_redswitch)
|
||||
clear b32 $r15
|
||||
call #ctx_4170s
|
||||
call #ctx_load
|
||||
call(ctx_4170s)
|
||||
call(ctx_load)
|
||||
|
||||
// fetch context pointer, and initiate xfer on all GPCs
|
||||
ctx_xfer_exec:
|
||||
ld b32 $r1 D[$r0 + #ctx_current]
|
||||
mov $r2 0x414
|
||||
shl b32 $r2 6
|
||||
iowr I[$r2 + 0x000] $r0 // BAR_STATUS = reset
|
||||
mov $r14 -0x5b00
|
||||
sethi $r14 0x410000
|
||||
mov b32 $r15 $r1
|
||||
call #nv_wr32 // GPC_BCAST_WRCMD_DATA = ctx pointer
|
||||
add b32 $r14 4
|
||||
|
||||
clear b32 $r2
|
||||
nv_iowr(NV_PGRAPH_FECS_BAR, 0, $r2)
|
||||
|
||||
nv_wr32(0x41a500, $r1) // GPC_BCAST_WRCMD_DATA = ctx pointer
|
||||
xbit $r15 $flags $p1
|
||||
xbit $r2 $flags $p2
|
||||
shl b32 $r2 1
|
||||
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
|
||||
mov $r1 0x4afc
|
||||
sethi $r1 0x20000
|
||||
mov $r2 0xc
|
||||
iowr I[$r1] $r2 // STRAND_CMD(0x3f) = 0x0c
|
||||
call #strand_wait
|
||||
mov $r2 0x47fc
|
||||
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)
|
||||
call(strand_pre)
|
||||
clear b32 $r2
|
||||
nv_iowr(NV_PGRAPH_FECS_STRAND_SELECT, 0x3f, $r2)
|
||||
xbit $r2 $flags $p1 // SAVE/LOAD
|
||||
add b32 $r2 NV_PGRAPH_FECS_STRAND_CMD_SAVE
|
||||
nv_iowr(NV_PGRAPH_FECS_STRAND_CMD, 0x3f, $r2)
|
||||
|
||||
// mmio context
|
||||
xbit $r10 $flags $p1 // direction
|
||||
|
@ -675,48 +620,42 @@ ctx_xfer:
|
|||
ld b32 $r12 D[$r0 + #hub_mmio_list_head]
|
||||
ld b32 $r13 D[$r0 + #hub_mmio_list_tail]
|
||||
mov $r14 0 // not multi
|
||||
call #mmctx_xfer
|
||||
call(mmctx_xfer)
|
||||
|
||||
// wait for GPCs to all complete
|
||||
mov $r10 8 // DONE_BAR
|
||||
call #wait_doneo
|
||||
call(wait_doneo)
|
||||
|
||||
// wait for strand xfer to complete
|
||||
call #strand_wait
|
||||
call(strand_wait)
|
||||
|
||||
// post-op
|
||||
bra $p1 #ctx_xfer_post
|
||||
mov $r10 12 // DONE_UNK12
|
||||
call #wait_donez
|
||||
mov $r1 0xa10
|
||||
shl b32 $r1 6
|
||||
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
|
||||
call(wait_donez)
|
||||
mov $r15 5 // MEM_CMD 5 ???
|
||||
call(ctx_mem)
|
||||
|
||||
bra $p2 #ctx_xfer_done
|
||||
ctx_xfer_post:
|
||||
mov $r15 2
|
||||
call #ctx_4170s
|
||||
call(ctx_4170s)
|
||||
clear b32 $r15
|
||||
call #ctx_86c
|
||||
call #strand_post
|
||||
call #ctx_4170w
|
||||
call(ctx_86c)
|
||||
call(strand_post)
|
||||
call(ctx_4170w)
|
||||
clear b32 $r15
|
||||
call #ctx_4170s
|
||||
call(ctx_4170s)
|
||||
|
||||
bra not $p1 #ctx_xfer_no_post_mmio
|
||||
ld b32 $r1 D[$r0 + #chan_mmio_count]
|
||||
or $r1 $r1
|
||||
bra e #ctx_xfer_no_post_mmio
|
||||
call #ctx_mmio_exec
|
||||
call(ctx_mmio_exec)
|
||||
|
||||
ctx_xfer_no_post_mmio:
|
||||
#if CHIPSET < GK100
|
||||
call #ctx_4160c
|
||||
call(ctx_4160c)
|
||||
#endif
|
||||
|
||||
ctx_xfer_done:
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -28,8 +28,54 @@
|
|||
#define GF117 0xd7
|
||||
#define GK100 0xe0
|
||||
#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_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
|
||||
#define NV_PGRAPH_FECS_CC_SCRATCH_VAL(n) ((n) * 4 + 0x409800)
|
||||
#define NV_PGRAPH_FECS_CC_SCRATCH_SET(n) ((n) * 4 + 0x409820)
|
||||
|
@ -39,8 +85,59 @@
|
|||
#define NV_PGRAPH_FECS_CC_SCRATCH_CLR(n) ((n) * 4 + 0x409840)
|
||||
#define NV_PGRAPH_FECS_CC_SCRATCH_SET(n) ((n) * 4 + 0x4098c0)
|
||||
#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_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
|
||||
#define NV_PGRAPH_GPCX_GPCCS_CC_SCRATCH_VAL(n) ((n) * 4 + 0x41a800)
|
||||
#define NV_PGRAPH_GPCX_GPCCS_CC_SCRATCH_SET(n) ((n) * 4 + 0x41a820)
|
||||
|
@ -50,6 +147,11 @@
|
|||
#define NV_PGRAPH_GPCX_GPCCS_CC_SCRATCH_CLR(n) ((n) * 4 + 0x41a840)
|
||||
#define NV_PGRAPH_GPCX_GPCCS_CC_SCRATCH_SET(n) ((n) * 4 + 0x41a8c0)
|
||||
#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 queue_init .skip 72 // (2 * 4) + ((8 * 4) * 2)
|
||||
|
@ -65,24 +167,50 @@
|
|||
#define T_LCHAN 8
|
||||
#define T_LCTXH 9
|
||||
|
||||
#define nv_mkmm(rv,r) /*
|
||||
*/ movw rv ((r) & 0x0000fffc) /*
|
||||
*/ sethi rv ((r) & 0x00ff0000)
|
||||
#if CHIPSET < GK208
|
||||
#define imm32(reg,val) /*
|
||||
*/ movw reg ((val) & 0x0000ffff) /*
|
||||
*/ sethi reg ((val) & 0xffff0000)
|
||||
#else
|
||||
#define imm32(reg,val) /*
|
||||
*/ mov reg (val)
|
||||
#endif
|
||||
|
||||
#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) /*
|
||||
*/ nv_mkio(rv,r,i) /*
|
||||
*/ iord rv I[rv]
|
||||
|
||||
#define nv_iowr(r,i,rv) /*
|
||||
*/ nv_mkio($r0,r,i) /*
|
||||
*/ iowr I[$r0] rv /*
|
||||
*/ 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) /*
|
||||
*/ clear b32 $r9 /*
|
||||
*/ bset $r9 bit /*
|
||||
*/ nv_iowr(NV_PGRAPH_FECS_CC_SCRATCH_SET(7), 0, $r9)
|
||||
|
||||
#define trace_clr(bit) /*
|
||||
*/ clear b32 $r9 /*
|
||||
*/ bset $r9 bit /*
|
||||
|
|
Loading…
Reference in New Issue