diff --git a/userspace/Makefile.sources b/userspace/Makefile.sources index fbb395f62..b3d925c64 100644 --- a/userspace/Makefile.sources +++ b/userspace/Makefile.sources @@ -63,5 +63,6 @@ UNITS := \ $(UNIT_SRC)/mm/nvgpu_mem \ $(UNIT_SRC)/mm/vm \ $(UNIT_SRC)/fifo/runlist \ + $(UNIT_SRC)/fifo/tsg \ $(UNIT_SRC)/list \ $(UNIT_SRC)/enabled diff --git a/userspace/units/fifo/tsg/Makefile b/userspace/units/fifo/tsg/Makefile new file mode 100644 index 000000000..93e765076 --- /dev/null +++ b/userspace/units/fifo/tsg/Makefile @@ -0,0 +1,26 @@ +# Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +.SUFFIXES: + +OBJS = nvgpu-tsg.o nvgpu-fifo-gv11b.o +MODULE = nvgpu-tsg + +include ../../Makefile.units diff --git a/userspace/units/fifo/tsg/Makefile.interface.tmk b/userspace/units/fifo/tsg/Makefile.interface.tmk new file mode 100644 index 000000000..0da0823ad --- /dev/null +++ b/userspace/units/fifo/tsg/Makefile.interface.tmk @@ -0,0 +1,35 @@ +################################### tell Emacs this is a -*- makefile-gmake -*- +# +# Copyright (c) 2018-2019, NVIDIA CORPORATION. All rights reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. +# +# tmake for SW Mobile component makefile +# +############################################################################### + +NVGPU_UNIT_NAME=nvgpu-tsg + +include $(NV_COMPONENT_DIR)/../../Makefile.units.common.interface.tmk + +# Local Variables: +# indent-tabs-mode: t +# tab-width: 8 +# End: +# vi: set tabstop=8 noexpandtab: diff --git a/userspace/units/fifo/tsg/Makefile.tmk b/userspace/units/fifo/tsg/Makefile.tmk new file mode 100644 index 000000000..eb4fc4566 --- /dev/null +++ b/userspace/units/fifo/tsg/Makefile.tmk @@ -0,0 +1,35 @@ +################################### tell Emacs this is a -*- makefile-gmake -*- +# +# Copyright (c) 2018-2019, NVIDIA CORPORATION. All rights reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. +# +# tmake for SW Mobile component makefile +# +############################################################################### + +NVGPU_UNIT_NAME=nvgpu-tsg + +include $(NV_COMPONENT_DIR)/../../Makefile.units.common.tmk + +# Local Variables: +# indent-tabs-mode: t +# tab-width: 8 +# End: +# vi: set tabstop=8 noexpandtab: diff --git a/userspace/units/fifo/tsg/nvgpu-fifo-gv11b.c b/userspace/units/fifo/tsg/nvgpu-fifo-gv11b.c new file mode 100644 index 000000000..c137c84af --- /dev/null +++ b/userspace/units/fifo/tsg/nvgpu-fifo-gv11b.c @@ -0,0 +1,688 @@ +/* + * Copyright (c) 2018-2019, NVIDIA CORPORATION. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include +#include +#include +#include +#include + +#include + +#include + +#include "nvgpu-fifo-gv11b.h" + +u32 gv11b_top_regs[] = { +/* 0x17022400 */ 0x00010000, 0x00000000, 0x00000000, 0x00000000, +/* 0x17022410 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0x00000081, +/* 0x17022420 */ 0x04444924, 0x00000010, 0xbadf5040, 0xbadf5040, +/* 0x17022430 */ 0x00000001, 0x00000004, 0x00000001, 0x00000001, +/* 0x17022440 */ 0x00000004, 0x00000003, 0x00000000, 0x00000003, +/* 0x17022450 */ 0x00000002, 0x00000002, 0x00000001, 0x00000002, +/* 0x17022460 */ 0x00000002, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17022470 */ 0x00000000, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17022480 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17022490 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170224a0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170224b0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170224c0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170224d0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170224e0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170224f0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17022500 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17022510 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17022520 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17022530 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17022540 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17022550 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17022560 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17022570 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17022580 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17022590 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170225a0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170225b0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170225c0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170225d0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170225e0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170225f0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17022600 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17022610 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17022620 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17022630 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17022640 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17022650 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17022660 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17022670 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17022680 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17022690 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170226a0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170226b0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170226c0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170226d0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170226e0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170226f0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17022700 */ 0x8006183e, 0x80000003, 0x00400205, 0x88028c3e, +/* 0x17022710 */ 0x8000004f, 0x0010407d, 0x8c030e3e, 0x8000004f, +/* 0x17022720 */ 0x04104085, 0x8423aa3e, 0x8000004f, 0x0810408d, +/* 0x17022730 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, +/* 0x17022740 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, +/* 0x17022750 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, +/* 0x17022760 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, +/* 0x17022770 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, +/* 0x17022780 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, +/* 0x17022790 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, +/* 0x170227a0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, +/* 0x170227b0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, +/* 0x170227c0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, +/* 0x170227d0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, +/* 0x170227e0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, +/* 0x170227f0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, +}; + +struct nvgpu_posix_io_reg_space gv11b_top_reg_space = { + .base = 0x22400, + .size = sizeof(gv11b_top_regs), + .data = gv11b_top_regs, +}; + +u32 gv11b_fifo_regs[] = { +/* 0x17002000 */ 0x00000000, 0x00200003, 0x00000200, 0x0000c36f, +/* 0x17002010 */ 0x0000000f, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002020 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002030 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002040 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002050 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002060 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002070 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002080 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002090 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170020a0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170020b0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170020c0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170020d0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170020e0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170020f0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002100 */ 0x00000000, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002110 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002120 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002130 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002140 */ 0x21810103, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002150 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002160 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002170 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002180 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002190 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170021a0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170021b0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170021c0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170021d0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170021e0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170021f0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002200 */ 0x00000000, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002210 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002220 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002230 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002240 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002250 */ 0x00000008, 0x00000000, 0x00000050, 0x00000064, +/* 0x17002260 */ 0x00000000, 0x00000000, 0xbadf5040, 0xbadf5040, +/* 0x17002270 */ 0x300fb900, 0x00000000, 0xbadf5040, 0xbadf5040, +/* 0x17002280 */ 0x300fb900, 0x00000000, 0x00000000, 0x00000000, +/* 0x17002290 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170022a0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170022b0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170022c0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170022d0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170022e0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170022f0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002300 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002310 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002320 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002330 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002340 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002350 */ 0x10000010, 0x10000010, 0xbadf5040, 0xbadf5040, +/* 0x17002360 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002370 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002380 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002390 */ 0x00000001, 0x00000001, 0x00000002, 0xbadf5040, +/* 0x170023a0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170023b0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170023c0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170023d0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170023e0 */ 0x0e000000, 0x88000000, 0x0e000000, 0x88000000, +/* 0x170023f0 */ 0x01000000, 0x07000000, 0xbadf5040, 0xbadf5040, +/* 0x17002400 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002410 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002420 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002430 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002440 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002450 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002460 */ 0x00000000, 0x00000000, 0x1f000000, 0x1f000000, +/* 0x17002470 */ 0x1f000000, 0x1f000000, 0xbadf5040, 0xbadf5040, +/* 0x17002480 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002490 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170024a0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170024b0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170024c0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170024d0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170024e0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170024f0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002500 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002510 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002520 */ 0xbadf5040, 0xbadf5040, 0x80000000, 0x00000000, +/* 0x17002530 */ 0x01810101, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002540 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0x00000000, +/* 0x17002550 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002560 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0x00000000, +/* 0x17002570 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002580 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0x00000000, +/* 0x17002590 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170025a0 */ 0x00000000, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170025b0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170025c0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170025d0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170025e0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170025f0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002600 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002610 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002620 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002630 */ 0x00000000, 0x01000000, 0x00000000, 0x00000000, +/* 0x17002640 */ 0x10001000, 0x00000000, 0x100010c0, 0x00000000, +/* 0x17002650 */ 0x10001100, 0x00000000, 0x11001020, 0x00000000, +/* 0x17002660 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002670 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002680 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002690 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170026a0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170026b0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170026c0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170026d0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0x00000000, +/* 0x170026e0 */ 0x00004044, 0xbadf5040, 0xbadf5040, 0x00000000, +/* 0x170026f0 */ 0x00000011, 0x00000000, 0x00000000, 0x00010000, +/* 0x17002700 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002710 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002720 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002730 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002740 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002750 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002760 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002770 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002780 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002790 */ 0x3083a102, 0x00c00001, 0x00c01c02, 0xbadf5040, +/* 0x170027a0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170027b0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170027c0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170027d0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170027e0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170027f0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002800 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002810 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002820 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002830 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002840 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002850 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002860 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002870 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002880 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002890 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170028a0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170028b0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170028c0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170028d0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170028e0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170028f0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002900 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002910 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002920 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002930 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002940 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002950 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002960 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002970 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002980 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002990 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170029a0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170029b0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170029c0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170029d0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170029e0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170029f0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002a00 */ 0x00000000, 0x80003c00, 0xbadf5040, 0x800186a0, +/* 0x17002a10 */ 0xbadf5040, 0x800003ff, 0xbadf5040, 0xbadf5040, +/* 0x17002a20 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0x80000004, +/* 0x17002a30 */ 0x00000000, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002a40 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002a50 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002a60 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002a70 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002a80 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002a90 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002aa0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002ab0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002ac0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002ad0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002ae0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002af0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002b00 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002b10 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002b20 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002b30 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002b40 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002b50 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002b60 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002b70 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002b80 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002b90 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002ba0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002bb0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002bc0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002bd0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002be0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002bf0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002c00 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002c10 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002c20 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002c30 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002c40 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002c50 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002c60 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002c70 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002c80 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002c90 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002ca0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002cb0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002cc0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002cd0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002ce0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002cf0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002d00 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002d10 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002d20 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002d30 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002d40 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002d50 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002d60 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002d70 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002d80 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002d90 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002da0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002db0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002dc0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002dd0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002de0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002df0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002e00 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002e10 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002e20 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002e30 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002e40 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002e50 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002e60 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002e70 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002e80 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002e90 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002ea0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002eb0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002ec0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002ed0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002ee0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002ef0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002f00 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002f10 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002f20 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002f30 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002f40 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002f50 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002f60 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002f70 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002f80 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002f90 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002fa0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002fb0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002fc0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002fd0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002fe0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17002ff0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003000 */ 0x3083a102, 0x10000000, 0x00100844, 0x10200c08, +/* 0x17003010 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003020 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003030 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003040 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003050 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003060 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003070 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003080 */ 0x10001000, 0x10801038, 0x10221000, 0xbadf5040, +/* 0x17003090 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170030a0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170030b0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170030c0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170030d0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170030e0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170030f0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003100 */ 0x3083a102, 0x00820800, 0x00000104, 0x044008c0, +/* 0x17003110 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003120 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003130 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003140 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003150 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003160 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003170 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003180 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003190 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170031a0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170031b0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170031c0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170031d0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170031e0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170031f0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003200 */ 0x00004000, 0x00004000, 0x00004000, 0x00004000, +/* 0x17003210 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003220 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003230 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003240 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003250 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003260 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003270 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003280 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003290 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170032a0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170032b0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170032c0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170032d0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170032e0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170032f0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003300 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003310 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003320 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003330 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003340 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003350 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003360 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003370 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003380 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003390 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170033a0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170033b0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170033c0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170033d0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170033e0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170033f0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003400 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003410 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003420 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003430 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003440 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003450 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003460 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003470 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003480 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003490 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170034a0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170034b0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170034c0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170034d0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170034e0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170034f0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003500 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003510 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003520 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003530 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003540 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003550 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003560 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003570 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003580 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003590 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170035a0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170035b0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170035c0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170035d0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170035e0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170035f0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003600 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003610 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003620 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003630 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003640 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003650 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003660 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003670 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003680 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003690 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170036a0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170036b0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170036c0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170036d0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170036e0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170036f0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003700 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003710 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003720 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003730 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003740 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003750 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003760 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003770 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003780 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003790 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170037a0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170037b0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170037c0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170037d0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170037e0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170037f0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003800 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003810 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003820 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003830 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003840 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003850 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003860 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003870 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003880 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003890 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170038a0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170038b0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170038c0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170038d0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170038e0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170038f0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003900 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003910 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003920 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003930 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003940 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003950 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003960 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003970 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003980 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003990 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170039a0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170039b0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170039c0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170039d0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170039e0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x170039f0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003a00 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003a10 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003a20 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003a30 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003a40 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003a50 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003a60 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003a70 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003a80 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003a90 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003aa0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003ab0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003ac0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003ad0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003ae0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003af0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003b00 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003b10 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003b20 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003b30 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003b40 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003b50 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003b60 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003b70 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003b80 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003b90 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003ba0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003bb0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003bc0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003bd0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003be0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003bf0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003c00 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003c10 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003c20 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003c30 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003c40 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003c50 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003c60 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003c70 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003c80 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003c90 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003ca0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003cb0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003cc0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003cd0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003ce0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003cf0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003d00 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003d10 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003d20 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003d30 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003d40 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003d50 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003d60 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003d70 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003d80 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003d90 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003da0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003db0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003dc0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003dd0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003de0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003df0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003e00 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003e10 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003e20 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003e30 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003e40 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003e50 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003e60 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003e70 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003e80 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003e90 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003ea0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003eb0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003ec0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003ed0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003ee0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003ef0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003f00 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003f10 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003f20 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003f30 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003f40 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003f50 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003f60 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003f70 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003f80 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003f90 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003fa0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003fb0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003fc0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003fd0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003fe0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +/* 0x17003ff0 */ 0xbadf5040, 0xbadf5040, 0xbadf5040, 0xbadf5040, +}; + +struct nvgpu_posix_io_reg_space gv11b_fifo_reg_space = { + .base = 0x2000, + .size = sizeof(gv11b_fifo_regs), + .data = gv11b_fifo_regs, +}; + +/* + * Mock I/O + */ + +/* + * Write callback. Forward the write access to the mock IO framework. + */ +static void writel_access_reg_fn(struct gk20a *g, + struct nvgpu_reg_access *access) +{ + nvgpu_posix_io_writel_reg_space(g, access->addr, access->value); +} + +/* + * Read callback. Get the register value from the mock IO framework. + */ +static void readl_access_reg_fn(struct gk20a *g, + struct nvgpu_reg_access *access) +{ + access->value = nvgpu_posix_io_readl_reg_space(g, access->addr); +} + +static struct nvgpu_posix_io_callbacks test_reg_callbacks = { + /* Write APIs all can use the same accessor. */ + .writel = writel_access_reg_fn, + .writel_check = writel_access_reg_fn, + .bar1_writel = writel_access_reg_fn, + .usermode_writel = writel_access_reg_fn, + + /* Likewise for the read APIs. */ + .__readl = readl_access_reg_fn, + .readl = readl_access_reg_fn, + .bar1_readl = readl_access_reg_fn, +}; + +int test_fifo_setup_gv11b_reg_space(struct unit_module *m, struct gk20a *g) +{ + /* Create register space */ + nvgpu_posix_io_init_reg_space(g); + + if (nvgpu_posix_io_register_reg_space(g, &gv11b_top_reg_space) != 0) { + unit_err(m, "%s: failed to create top register space\n", + __func__); + return UNIT_FAIL; + } + + if (nvgpu_posix_io_register_reg_space(g, &gv11b_fifo_reg_space) != 0) { + unit_err(m, "%s: failed to create fifo register space\n", + __func__); + return UNIT_FAIL; + } + + (void)nvgpu_posix_register_io(g, &test_reg_callbacks); + return 0; +} + +void test_fifo_cleanup_gv11b_reg_space(struct unit_module *m, struct gk20a *g) +{ + nvgpu_posix_io_unregister_reg_space(g, &gv11b_fifo_reg_space); +} diff --git a/userspace/units/fifo/tsg/nvgpu-fifo-gv11b.h b/userspace/units/fifo/tsg/nvgpu-fifo-gv11b.h new file mode 100644 index 000000000..0974328c8 --- /dev/null +++ b/userspace/units/fifo/tsg/nvgpu-fifo-gv11b.h @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef UNIT_NVGPU_FIFO_GV11B_H +#define UNIT_NVGPU_FIFO_GV11b_H + +int test_fifo_setup_gv11b_reg_space(struct unit_module *m, struct gk20a *g); +void test_fifo_cleanup_gv11b_reg_space(struct unit_module *m, struct gk20a *g); + +#endif /* UNIT_NVGPU_FIFO_GV11B_H */ diff --git a/userspace/units/fifo/tsg/nvgpu-tsg.c b/userspace/units/fifo/tsg/nvgpu-tsg.c new file mode 100644 index 000000000..80e6eae0a --- /dev/null +++ b/userspace/units/fifo/tsg/nvgpu-tsg.c @@ -0,0 +1,145 @@ +/* + * Copyright (c) 2018-2019, NVIDIA CORPORATION. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include "hal/fifo/tsg_gk20a.h" + +#include "hal/init/hal_gv11b.h" + +#include "nvgpu-fifo-gv11b.h" + +struct test_tsg_args { + bool init_done; + struct nvgpu_tsg *tsg; +}; + +struct test_tsg_args test_args = { + .init_done = false, +}; + +/* test implementations of some hals */ +static u32 test_gv11b_gr_init_get_no_of_sm(struct gk20a *g) +{ + return 8; +} + +static int test_fifo_init_support(struct unit_module *m, + struct gk20a *g, void *args) +{ + struct test_tsg_args *t = args; + int err; + + if (t->init_done) { + unit_return_fail(m, "init already done"); + } + + err = test_fifo_setup_gv11b_reg_space(m, g); + if (err != 0) { + goto fail; + } + + /* + * set IS_FMODEL to avoid reading fuses + * TODO: add fuses reg space to avoid this + */ + nvgpu_set_enabled(g, NVGPU_IS_FMODEL, true); + gv11b_init_hal(g); + g->ops.fifo.init_fifo_setup_hw = NULL; + nvgpu_set_enabled(g, NVGPU_IS_FMODEL, false); + + err = nvgpu_fifo_init_support(g); + if (err != 0) { + test_fifo_cleanup_gv11b_reg_space(m, g); + goto fail; + } + + t->init_done = true; + + return UNIT_SUCCESS; + +fail: + return UNIT_FAIL; +} + +static int test_tsg_open(struct unit_module *m, + struct gk20a *g, void *args) +{ + struct test_tsg_args *t = args; + + g->ops.gr.init.get_no_of_sm = test_gv11b_gr_init_get_no_of_sm; + g->ops.tsg.init_eng_method_buffers = NULL; + + t->tsg = nvgpu_tsg_open(g, getpid()); + if (!t->tsg) { + unit_return_fail(m, "nvgpu_tsg_open failed"); + } + + return UNIT_SUCCESS; +} + +static int test_tsg_release(struct unit_module *m, + struct gk20a *g, void *args) +{ + struct test_tsg_args *t = args; + + if (t->tsg == NULL) { + unit_return_fail(m, "tsg in NULL"); + } + + nvgpu_ref_put(&t->tsg->refcount, nvgpu_tsg_release); + return UNIT_SUCCESS; +} + +static int test_fifo_remove_support(struct unit_module *m, + struct gk20a *g, void *args) +{ + struct test_tsg_args *t = args; + + if (!t->init_done) { + unit_return_fail(m, "missing init support"); + } + + if (g->fifo.remove_support) { + g->fifo.remove_support(&g->fifo); + } + + return UNIT_SUCCESS; +} + +struct unit_module_test nvgpu_tsg_tests[] = { + UNIT_TEST(init_support, test_fifo_init_support, &test_args, 0), + UNIT_TEST(open, test_tsg_open, &test_args, 0), + UNIT_TEST(release, test_tsg_release, &test_args, 0), + UNIT_TEST(remove_support, test_fifo_remove_support, &test_args, 0), +}; + +UNIT_MODULE(nvgpu_tsg, nvgpu_tsg_tests, UNIT_PRIO_NVGPU_TEST);