Please ignore, this is a wrong patch -----Original Message----- From: Rosen, Rami Sent: Thursday, April 21, 2016 8:24 PM To: dev at dpdk.org Cc: Rosen, Rami <rami.rosen at intel.com> Subject: [PATCH 1/1] add writing registers
Change-Id: Iaeeefcbc29d109fef17797d6a888cf2448499646 Signed-off-by: Rami Rosen <rami.rosen at intel.com> --- fvlproto/build.sh | 4 + fvlproto/config.c | 7 + fvlproto/myMakefile | 29 + fvlproto/mybuild.sh | 5 + fvlproto/regs.txt | 78 ++ fvlproto/regs.txt.org | 1998 +++++++++++++++++++++++++++++++++++++++++++++++ fvlproto/run.sh | 20 + fvlproto/test/Makefile | 29 + fvlproto/test/readreg.c | 167 ++++ fvlproto/test/run.sh | 3 + 10 files changed, 2340 insertions(+) create mode 100755 fvlproto/build.sh create mode 100644 fvlproto/myMakefile create mode 100755 fvlproto/mybuild.sh create mode 100644 fvlproto/regs.txt create mode 100644 fvlproto/regs.txt.org create mode 100644 fvlproto/run.sh create mode 100644 fvlproto/test/Makefile create mode 100644 fvlproto/test/readreg.c create mode 100644 fvlproto/test/run.sh diff --git a/fvlproto/build.sh b/fvlproto/build.sh new file mode 100755 index 0000000..bfffb6b --- /dev/null +++ b/fvlproto/build.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +export RTE_SDK=/work/src/dpdk-16.04 +make diff --git a/fvlproto/config.c b/fvlproto/config.c index f7db457..1659154 100644 --- a/fvlproto/config.c +++ b/fvlproto/config.c @@ -148,6 +148,9 @@ static void parse_print_regs_input(const char *arg) char input_line[256]; char *address, *val, *curr; const char delimiters[] = " "; + uint32_t reg; + uint32_t value; + char *eptr; if (arg == NULL) return; @@ -166,6 +169,10 @@ static void parse_print_regs_input(const char *arg) address = strtok(NULL, delimiters); val = strtok(NULL, delimiters); printf("addess=%s val=%s\n", address, val); + reg = strtol(address, &eptr, 16); + value = strtol(val, &eptr, 16); + printf("Writing reg=%x value=%x\n", reg, value); + i40e_dev_reg_write(app.nic_rx_port, reg, value, 0); } fclose(file); diff --git a/fvlproto/myMakefile b/fvlproto/myMakefile new file mode 100644 index 0000000..00b878b --- /dev/null +++ b/fvlproto/myMakefile @@ -0,0 +1,29 @@ +# BSD LICENSE + +ifeq ($(RTE_SDK),) +$(error "Please define RTE_SDK environment variable") +endif + +# Default target, can be overriden by command line or environment +RTE_TARGET ?= x86_64-native-linuxapp-gcc + +include $(RTE_SDK)/mk/rte.vars.mk + +# binary name +APP = readreg + +# all source are stored in SRCS-y +SRCS-y := readreg.c + +CFLAGS += -O3 -g +CFLAGS += $(WERROR_FLAGS) +#CFLAGS_config.o := -D_GNU_SOURCE + +# workaround for a gcc bug with noreturn attribute +# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12603 +ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y) +#CFLAGS_main.o += -Wno-return-type +CFLAGS_readreg.o += -Wno-return-type +endif + +include $(RTE_SDK)/mk/rte.extapp.mk diff --git a/fvlproto/mybuild.sh b/fvlproto/mybuild.sh new file mode 100755 index 0000000..55b89f1 --- /dev/null +++ b/fvlproto/mybuild.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +export RTE_SDK=/work/src/dpdk-16.04 +make -f myMakefile + diff --git a/fvlproto/regs.txt b/fvlproto/regs.txt new file mode 100644 index 0000000..68f9ef3 --- /dev/null +++ b/fvlproto/regs.txt @@ -0,0 +1,78 @@ + write 0x1c0a90 0x5 + write 0x1c0a9c 0x3180c + write 0x1c0aa0 0x20000096 + write 0x1c0aa4 0x5 + write 0x1c0aa8 0x3180c + write 0x1c0aac 0x20000096 + write 0x1c0a90 0x305 + write 0x1c0a9c 0x0 + write 0x1c0aa0 0xb + write 0x1c0aa4 0x305 + write 0x1c0aa8 0x0 + write 0x1c0aac 0xb + write 0x1c0a90 0x110 + write 0x1c0a9c 0x0 + write 0x1c0aa0 0x28000cb + write 0x1c0aa4 0x110 + write 0x1c0aa8 0x0 + write 0x1c0aac 0x28000cb + write 0x1c0a90 0x111 + write 0x1c0a9c 0x0 + write 0x1c0aa0 0x280000b + write 0x1c0aa4 0x111 + write 0x1c0aa8 0x0 + write 0x1c0aac 0x280000b + write 0x1c0a90 0x113 + write 0x1c0a9c 0x0 + write 0x1c0aa0 0x2c4a7d5 + write 0x1c0aa4 0x113 + write 0x1c0aa8 0x0 + write 0x1c0aac 0x2c4a7d5 + write 0x1c0a90 0x114 + write 0x1c0a9c 0x0 + write 0x1c0aa0 0x2800219 + write 0x1c0aa4 0x114 + write 0x1c0aa8 0x0 + write 0x1c0aac 0x2800219 + write 0x1c0a90 0x115 + write 0x1c0a9c 0x0 + write 0x1c0aa0 0x280031b + write 0x1c0aa4 0x115 + write 0x1c0aa8 0x0 + write 0x1c0aac 0x280031b + write 0x1c0a90 0x138 + write 0x1c0a9c 0x0 + write 0x1c0aa0 0x2b2ac41 + write 0x1c0aa4 0x138 + write 0x1c0aa8 0x0 + write 0x1c0aac 0x2b2ac41 + write 0x1c0a90 0x139 + write 0x1c0a9c 0x0 + write 0x1c0aa0 0x2840019 + write 0x1c0aa4 0x139 + write 0x1c0aa8 0x0 + write 0x1c0aac 0x2840019 + write 0x1c0a90 0x13a + write 0x1c0a9c 0x0 + write 0x1c0aa0 0x2c36e9b + write 0x1c0aa4 0x13a + write 0x1c0aa8 0x0 + write 0x1c0aac 0x2c36e9b + write 0x1c0a90 0x13b + write 0x1c0a9c 0x0 + write 0x1c0aa0 0x2c0803f + write 0x1c0aa4 0x13b + write 0x1c0aa8 0x0 + write 0x1c0aac 0x2c0803f + write 0x1c0a90 0x5a7 + write 0x1c0a9c 0x21 + write 0x1c0aa0 0x4c8bffff + write 0x1c0aa4 0x5a7 + write 0x1c0aa8 0x21 + write 0x1c0aac 0x4c8bffff + write 0x51040 0x4ce + write 0x5104c 0x1a7 + write 0x51050 0x0 + write 0x51040 0x8ce + write 0x5104c 0x0 + write 0x51050 0xe0000 \ No newline at end of file diff --git a/fvlproto/regs.txt.org b/fvlproto/regs.txt.org new file mode 100644 index 0000000..754fc08 --- /dev/null +++ b/fvlproto/regs.txt.org @@ -0,0 +1,1998 @@ + write 0x1c0a90 0x5 + write 0x1c0a9c 0x3180c + write 0x1c0aa0 0x20000096 + write 0x1c0aa4 0x5 + write 0x1c0aa8 0x3180c + write 0x1c0aac 0x20000096 + write 0x1c0a90 0x305 + write 0x1c0a9c 0x0 + write 0x1c0aa0 0xb + write 0x1c0aa4 0x305 + write 0x1c0aa8 0x0 + write 0x1c0aac 0xb + write 0x1c0a90 0x110 + write 0x1c0a9c 0x0 + write 0x1c0aa0 0x28000cb + write 0x1c0aa4 0x110 + write 0x1c0aa8 0x0 + write 0x1c0aac 0x28000cb + write 0x1c0a90 0x111 + write 0x1c0a9c 0x0 + write 0x1c0aa0 0x280000b + write 0x1c0aa4 0x111 + write 0x1c0aa8 0x0 + write 0x1c0aac 0x280000b + write 0x1c0a90 0x113 + write 0x1c0a9c 0x0 + write 0x1c0aa0 0x2c4a7d5 + write 0x1c0aa4 0x113 + write 0x1c0aa8 0x0 + write 0x1c0aac 0x2c4a7d5 + write 0x1c0a90 0x114 + write 0x1c0a9c 0x0 + write 0x1c0aa0 0x2800219 + write 0x1c0aa4 0x114 + write 0x1c0aa8 0x0 + write 0x1c0aac 0x2800219 + write 0x1c0a90 0x115 + write 0x1c0a9c 0x0 + write 0x1c0aa0 0x280031b + write 0x1c0aa4 0x115 + write 0x1c0aa8 0x0 + write 0x1c0aac 0x280031b + write 0x1c0a90 0x138 + write 0x1c0a9c 0x0 + write 0x1c0aa0 0x2b2ac41 + write 0x1c0aa4 0x138 + write 0x1c0aa8 0x0 + write 0x1c0aac 0x2b2ac41 + write 0x1c0a90 0x139 + write 0x1c0a9c 0x0 + write 0x1c0aa0 0x2840019 + write 0x1c0aa4 0x139 + write 0x1c0aa8 0x0 + write 0x1c0aac 0x2840019 + write 0x1c0a90 0x13a + write 0x1c0a9c 0x0 + write 0x1c0aa0 0x2c36e9b + write 0x1c0aa4 0x13a + write 0x1c0aa8 0x0 + write 0x1c0aac 0x2c36e9b + write 0x1c0a90 0x13b + write 0x1c0a9c 0x0 + write 0x1c0aa0 0x2c0803f + write 0x1c0aa4 0x13b + write 0x1c0aa8 0x0 + write 0x1c0aac 0x2c0803f + write 0x1c0a90 0x500 + write 0x1c0a9c 0xf + write 0x1c0aa0 0xffffffff + write 0x1c0aa4 0x500 + write 0x1c0aa8 0xf + write 0x1c0aac 0xffffffff + write 0x1c0a90 0x501 + write 0x1c0a9c 0x8 + write 0x1c0aa0 0x7fffffff + write 0x1c0aa4 0x501 + write 0x1c0aa8 0x8 + write 0x1c0aac 0x7fffffff + write 0x1c0a90 0x502 + write 0x1c0a9c 0x10 + write 0x1c0aa0 0x21ffffff + write 0x1c0aa4 0x502 + write 0x1c0aa8 0x10 + write 0x1c0aac 0x21ffffff + write 0x1c0a90 0x503 + write 0x1c0a9c 0x10 + write 0x1c0aa0 0x61ffffff + write 0x1c0aa4 0x503 + write 0x1c0aa8 0x10 + write 0x1c0aac 0x61ffffff + write 0x1c0a90 0x504 + write 0x1c0a9c 0x1f + write 0x1c0aa0 0xe1ffffff + write 0x1c0aa4 0x504 + write 0x1c0aa8 0x1f + write 0x1c0aac 0xe1ffffff + write 0x1c0a90 0x505 + write 0x1c0a9c 0x1f + write 0x1c0aa0 0xe1ffffff + write 0x1c0aa4 0x505 + write 0x1c0aa8 0x1f + write 0x1c0aac 0xe1ffffff + write 0x1c0a90 0x506 + write 0x1c0a9c 0x11 + write 0x1c0aa0 0x21ffffff + write 0x1c0aa4 0x506 + write 0x1c0aa8 0x11 + write 0x1c0aac 0x21ffffff + write 0x1c0a90 0x507 + write 0x1c0a9c 0x1f + write 0x1c0aa0 0xe1ffffff + write 0x1c0aa4 0x507 + write 0x1c0aa8 0x1f + write 0x1c0aac 0xe1ffffff + write 0x1c0a90 0x508 + write 0x1c0a9c 0x1f + write 0x1c0aa0 0xe1ffffff + write 0x1c0aa4 0x508 + write 0x1c0aa8 0x1f + write 0x1c0aac 0xe1ffffff + write 0x1c0a90 0x509 + write 0x1c0a9c 0x1f + write 0x1c0aa0 0xe1ffffff + write 0x1c0aa4 0x509 + write 0x1c0aa8 0x1f + write 0x1c0aac 0xe1ffffff + write 0x1c0a90 0x50a + write 0x1c0a9c 0x12 + write 0x1c0aa0 0x21ffffff + write 0x1c0aa4 0x50a + write 0x1c0aa8 0x12 + write 0x1c0aac 0x21ffffff + write 0x1c0a90 0x50b + write 0x1c0a9c 0x12 + write 0x1c0aa0 0x61ffffff + write 0x1c0aa4 0x50b + write 0x1c0aa8 0x12 + write 0x1c0aac 0x61ffffff + write 0x1c0a90 0x50c + write 0x1c0a9c 0x1f + write 0x1c0aa0 0xe2ffffff + write 0x1c0aa4 0x50c + write 0x1c0aa8 0x1f + write 0x1c0aac 0xe2ffffff + write 0x1c0a90 0x50d + write 0x1c0a9c 0x2f + write 0x1c0aa0 0xff8bffff + write 0x1c0aa4 0x50d + write 0x1c0aa8 0x2f + write 0x1c0aac 0xff8bffff + write 0x1c0a90 0x50e + write 0x1c0a9c 0x2f + write 0x1c0aa0 0xff8bffff + write 0x1c0aa4 0x50e + write 0x1c0aa8 0x2f + write 0x1c0aac 0xff8bffff + write 0x1c0a90 0x50f + write 0x1c0a9c 0x2f + write 0x1c0aa0 0xff8bffff + write 0x1c0aa4 0x50f + write 0x1c0aa8 0x2f + write 0x1c0aac 0xff8bffff + write 0x1c0a90 0x510 + write 0x1c0a9c 0x2f + write 0x1c0aa0 0xff8bffff + write 0x1c0aa4 0x510 + write 0x1c0aa8 0x2f + write 0x1c0aac 0xff8bffff + write 0x1c0a90 0x511 + write 0x1c0a9c 0x3f + write 0x1c0aa0 0xff8bffff + write 0x1c0aa4 0x511 + write 0x1c0aa8 0x3f + write 0x1c0aac 0xff8bffff + write 0x1c0a90 0x512 + write 0x1c0a9c 0x3f + write 0x1c0aa0 0xfffe2fff + write 0x1c0aa4 0x512 + write 0x1c0aa8 0x3f + write 0x1c0aac 0xfffe2fff + write 0x1c0a90 0x513 + write 0x1c0a9c 0x3f + write 0x1c0aa0 0xfffe2fff + write 0x1c0aa4 0x513 + write 0x1c0aa8 0x3f + write 0x1c0aac 0xfffe2fff + write 0x1c0a90 0x514 + write 0x1c0a9c 0x3f + write 0x1c0aa0 0xfffe2fff + write 0x1c0aa4 0x514 + write 0x1c0aa8 0x3f + write 0x1c0aac 0xfffe2fff + write 0x1c0a90 0x515 + write 0x1c0a9c 0x3f + write 0x1c0aa0 0xfffe2fff + write 0x1c0aa4 0x515 + write 0x1c0aa8 0x3f + write 0x1c0aac 0xfffe2fff + write 0x1c0a90 0x516 + write 0x1c0a9c 0x1b + write 0x1c0aa0 0x22ffffff + write 0x1c0aa4 0x516 + write 0x1c0aa8 0x1b + write 0x1c0aac 0x22ffffff + write 0x51040 0x435 + write 0x5104c 0x116 + write 0x51050 0x0 + write 0x51040 0x835 + write 0x5104c 0x0 + write 0x51050 0x50000 + write 0x1c0a90 0x517 + write 0x1c0a9c 0x13 + write 0x1c0aa0 0x22ffffff + write 0x1c0aa4 0x517 + write 0x1c0aa8 0x13 + write 0x1c0aac 0x22ffffff + write 0x51040 0x436 + write 0x5104c 0x117 + write 0x51050 0x0 + write 0x51040 0x836 + write 0x5104c 0x0 + write 0x51050 0x50000 + write 0x1c0a90 0x518 + write 0x1c0a9c 0xa3 + write 0x1c0aa0 0x128fffff + write 0x1c0aa4 0x518 + write 0x1c0aa8 0xa3 + write 0x1c0aac 0x128fffff + write 0x51040 0x437 + write 0x5104c 0x118 + write 0x51050 0x0 + write 0x51040 0x837 + write 0x5104c 0x0 + write 0x51050 0x70008 + write 0x1c0a90 0x519 + write 0x1c0a9c 0xa3 + write 0x1c0aa0 0x8fffff + write 0x1c0aa4 0x519 + write 0x1c0aa8 0xa3 + write 0x1c0aac 0x8fffff + write 0x51040 0x438 + write 0x5104c 0x119 + write 0x51050 0x0 + write 0x51040 0x838 + write 0x5104c 0x0 + write 0x51050 0x70008 + write 0x1c0a90 0x51a + write 0x1c0a9c 0xa3 + write 0x1c0aa0 0x118fffff + write 0x1c0aa4 0x51a + write 0x1c0aa8 0xa3 + write 0x1c0aac 0x118fffff + write 0x51040 0x439 + write 0x5104c 0x11a + write 0x51050 0x0 + write 0x51040 0x839 + write 0x5104c 0x0 + write 0x51050 0x70000 + write 0x1c0a90 0x51b + write 0x1c0a9c 0xa3 + write 0x1c0aa0 0x138fffff + write 0x1c0aa4 0x51b + write 0x1c0aa8 0xa3 + write 0x1c0aac 0x138fffff + write 0x51040 0x43a + write 0x5104c 0x11b + write 0x51050 0x0 + write 0x51040 0x83a + write 0x5104c 0x0 + write 0x51050 0xe70000 + write 0x1c0a90 0x51c + write 0x1c0a9c 0xa3 + write 0x1c0aa0 0x148fffff + write 0x1c0aa4 0x51c + write 0x1c0aa8 0xa3 + write 0x1c0aac 0x148fffff + write 0x51040 0x43b + write 0x5104c 0x11c + write 0x51050 0x0 + write 0x51040 0x83b + write 0x5104c 0x0 + write 0x51050 0x50000 + write 0x1c0a90 0x51d + write 0x1c0a9c 0x423 + write 0x1c0aa0 0x2c8bffff + write 0x1c0aa4 0x51d + write 0x1c0aa8 0x423 + write 0x1c0aac 0x2c8bffff + write 0x51040 0x43c + write 0x5104c 0x11d + write 0x51050 0x0 + write 0x51040 0x83c + write 0x5104c 0x0 + write 0x51050 0xd0000 + write 0x1c0a90 0x51e + write 0x1c0a9c 0x423 + write 0x1c0aa0 0xc8bffff + write 0x1c0aa4 0x51e + write 0x1c0aa8 0x423 + write 0x1c0aac 0xc8bffff + write 0x51040 0x43d + write 0x5104c 0x11e + write 0x51050 0x0 + write 0x51040 0x83d + write 0x5104c 0x0 + write 0x51050 0xd0000 + write 0x1c0a90 0x51f + write 0x1c0a9c 0x533 + write 0x1c0aa0 0xc4a3fff + write 0x1c0aa4 0x51f + write 0x1c0aa8 0x533 + write 0x1c0aac 0xc4a3fff + write 0x51040 0x43e + write 0x5104c 0x11f + write 0x51050 0x0 + write 0x51040 0x83e + write 0x5104c 0x0 + write 0x51050 0x100010 + write 0x1c0a90 0x520 + write 0x1c0a9c 0x533 + write 0x1c0aa0 0xc023fff + write 0x1c0aa4 0x520 + write 0x1c0aa8 0x533 + write 0x1c0aac 0xc023fff + write 0x51040 0x43f + write 0x5104c 0x120 + write 0x51050 0x0 + write 0x51040 0x83f + write 0x5104c 0x0 + write 0x51050 0x100010 + write 0x1c0a90 0x521 + write 0x1c0a9c 0x533 + write 0x1c0aa0 0xc463fff + write 0x1c0aa4 0x521 + write 0x1c0aa8 0x533 + write 0x1c0aac 0xc463fff + write 0x51040 0x440 + write 0x5104c 0x121 + write 0x51050 0x0 + write 0x51040 0x840 + write 0x5104c 0x0 + write 0x51050 0x100000 + write 0x1c0a90 0x522 + write 0x1c0a9c 0x533 + write 0x1c0aa0 0xc4e3fff + write 0x1c0aa4 0x522 + write 0x1c0aa8 0x533 + write 0x1c0aac 0xc4e3fff + write 0x51040 0x441 + write 0x5104c 0x122 + write 0x51050 0x0 + write 0x51040 0x841 + write 0x5104c 0x0 + write 0x51050 0xef0000 + write 0x1c0a90 0x523 + write 0x1c0a9c 0x533 + write 0x1c0aa0 0xc523fff + write 0x1c0aa4 0x523 + write 0x1c0aa8 0x533 + write 0x1c0aac 0xc523fff + write 0x51040 0x442 + write 0x5104c 0x123 + write 0x51050 0x0 + write 0x51040 0x842 + write 0x5104c 0x0 + write 0x51050 0xd0000 + write 0x1c0a90 0x524 + write 0x1c0a9c 0x433 + write 0x1c0aa0 0xdc22fff + write 0x1c0aa4 0x524 + write 0x1c0aa8 0x433 + write 0x1c0aac 0xdc22fff + write 0x51040 0x443 + write 0x5104c 0x124 + write 0x51050 0x0 + write 0x51040 0x843 + write 0x5104c 0x0 + write 0x51050 0x60000 + write 0x1c0a90 0x525 + write 0x1c0a9c 0x423 + write 0x1c0aa0 0xd8bffff + write 0x1c0aa4 0x525 + write 0x1c0aa8 0x423 + write 0x1c0aac 0xd8bffff + write 0x51040 0x444 + write 0x5104c 0x125 + write 0x51050 0x0 + write 0x51040 0x844 + write 0x5104c 0x0 + write 0x51050 0x60000 + write 0x1c0a90 0x526 + write 0x1c0a9c 0x533 + write 0x1c0aa0 0xd4a3fff + write 0x1c0aa4 0x526 + write 0x1c0aa8 0x533 + write 0x1c0aac 0xd4a3fff + write 0x51040 0x445 + write 0x5104c 0x126 + write 0x51050 0x0 + write 0x51040 0x845 + write 0x5104c 0x0 + write 0x51050 0x280010 + write 0x1c0a90 0x527 + write 0x1c0a9c 0x533 + write 0x1c0aa0 0xd023fff + write 0x1c0aa4 0x527 + write 0x1c0aa8 0x533 + write 0x1c0aac 0xd023fff + write 0x51040 0x446 + write 0x5104c 0x127 + write 0x51050 0x0 + write 0x51040 0x846 + write 0x5104c 0x0 + write 0x51050 0x280010 + write 0x1c0a90 0x528 + write 0x1c0a9c 0x533 + write 0x1c0aa0 0xd463fff + write 0x1c0aa4 0x528 + write 0x1c0aa8 0x533 + write 0x1c0aac 0xd463fff + write 0x51040 0x447 + write 0x5104c 0x128 + write 0x51050 0x0 + write 0x51040 0x847 + write 0x5104c 0x0 + write 0x51050 0x280000 + write 0x1c0a90 0x529 + write 0x1c0a9c 0x533 + write 0x1c0aa0 0xd4e3fff + write 0x1c0aa4 0x529 + write 0x1c0aa8 0x533 + write 0x1c0aac 0xd4e3fff + write 0x51040 0x448 + write 0x5104c 0x129 + write 0x51050 0x0 + write 0x51040 0x848 + write 0x5104c 0x0 + write 0x51050 0x1080000 + write 0x1c0a90 0x52a + write 0x1c0a9c 0x533 + write 0x1c0aa0 0xd5e3fff + write 0x1c0aa4 0x52a + write 0x1c0aa8 0x533 + write 0x1c0aac 0xd5e3fff + write 0x51040 0x449 + write 0x5104c 0x12a + write 0x51050 0x0 + write 0x51040 0x849 + write 0x5104c 0x0 + write 0x51050 0x60000 + write 0x1c0a90 0x52b + write 0x1c0a9c 0x823 + write 0x1c0aa0 0xf8bffff + write 0x1c0aa4 0x52b + write 0x1c0aa8 0x823 + write 0x1c0aac 0xf8bffff + write 0x51040 0x44a + write 0x5104c 0x12b + write 0x51050 0x0 + write 0x51040 0x84a + write 0x5104c 0x0 + write 0x51050 0x50000 + write 0x1c0a90 0x52c + write 0x1c0a9c 0x833 + write 0x1c0aa0 0xfb22fff + write 0x1c0aa4 0x52c + write 0x1c0aa8 0x833 + write 0x1c0aac 0xfb22fff + write 0x51040 0x44b + write 0x5104c 0x12c + write 0x51050 0x0 + write 0x51040 0x84b + write 0x5104c 0x0 + write 0x51050 0x180000 + write 0x1c0a90 0x52d + write 0x1c0a9c 0x833 + write 0x1c0aa0 0xf322fff + write 0x1c0aa4 0x52d + write 0x1c0aa8 0x833 + write 0x1c0aac 0xf322fff + write 0x51040 0x44c + write 0x5104c 0x12d + write 0x51050 0x0 + write 0x51040 0x84c + write 0x5104c 0x0 + write 0x51050 0x180000 + write 0x1c0a90 0x52e + write 0x1c0a9c 0x9c3 + write 0x1c0aa0 0xf3128ff + write 0x1c0aa4 0x52e + write 0x1c0aa8 0x9c3 + write 0x1c0aac 0xf3128ff + write 0x51040 0x44d + write 0x5104c 0x12e + write 0x51050 0x0 + write 0x51040 0x84d + write 0x5104c 0x0 + write 0x51050 0x1b0010 + write 0x1c0a90 0x52f + write 0x1c0a9c 0x9c3 + write 0x1c0aa0 0xf3008ff + write 0x1c0aa4 0x52f + write 0x1c0aa8 0x9c3 + write 0x1c0aac 0xf3008ff + write 0x51040 0x44e + write 0x5104c 0x12f + write 0x51050 0x0 + write 0x51040 0x84e + write 0x5104c 0x0 + write 0x51050 0x1b0010 + write 0x1c0a90 0x530 + write 0x1c0a9c 0x9c3 + write 0x1c0aa0 0xf3118ff + write 0x1c0aa4 0x530 + write 0x1c0aa8 0x9c3 + write 0x1c0aac 0xf3118ff + write 0x51040 0x44f + write 0x5104c 0x130 + write 0x51050 0x0 + write 0x51040 0x84f + write 0x5104c 0x0 + write 0x51050 0x1b0000 + write 0x1c0a90 0x531 + write 0x1c0a9c 0x9c3 + write 0x1c0aa0 0xf3138ff + write 0x1c0aa4 0x531 + write 0x1c0aa8 0x9c3 + write 0x1c0aac 0xf3138ff + write 0x51040 0x450 + write 0x5104c 0x131 + write 0x51050 0x0 + write 0x51040 0x850 + write 0x5104c 0x0 + write 0x51050 0xf80000 + write 0x1c0a90 0x532 + write 0x1c0a9c 0x9c3 + write 0x1c0aa0 0xf3148ff + write 0x1c0aa4 0x532 + write 0x1c0aa8 0x9c3 + write 0x1c0aac 0xf3148ff + write 0x51040 0x451 + write 0x5104c 0x132 + write 0x51050 0x0 + write 0x51040 0x851 + write 0x5104c 0x0 + write 0x51050 0x180000 + write 0x1c0a90 0x533 + write 0x1c0a9c 0x843 + write 0x1c0aa0 0xf3708bf + write 0x1c0aa4 0x533 + write 0x1c0aa8 0x843 + write 0x1c0aac 0xf3708bf + write 0x51040 0x452 + write 0x5104c 0x133 + write 0x51050 0x0 + write 0x51040 0x852 + write 0x5104c 0x0 + write 0x51050 0x60000 + write 0x1c0a90 0x534 + write 0x1c0a9c 0x833 + write 0x1c0aa0 0xf362fff + write 0x1c0aa4 0x534 + write 0x1c0aa8 0x833 + write 0x1c0aac 0xf362fff + write 0x51040 0x453 + write 0x5104c 0x134 + write 0x51050 0x0 + write 0x51040 0x853 + write 0x5104c 0x0 + write 0x51050 0x60000 + write 0x1c0a90 0x535 + write 0x1c0a9c 0x9c3 + write 0x1c0aa0 0xf3528ff + write 0x1c0aa4 0x535 + write 0x1c0aa8 0x9c3 + write 0x1c0aac 0xf3528ff + write 0x51040 0x454 + write 0x5104c 0x135 + write 0x51050 0x0 + write 0x51040 0x854 + write 0x5104c 0x0 + write 0x51050 0x2f0010 + write 0x1c0a90 0x536 + write 0x1c0a9c 0x9c3 + write 0x1c0aa0 0xf3408ff + write 0x1c0aa4 0x536 + write 0x1c0aa8 0x9c3 + write 0x1c0aac 0xf3408ff + write 0x51040 0x455 + write 0x5104c 0x136 + write 0x51050 0x0 + write 0x51040 0x855 + write 0x5104c 0x0 + write 0x51050 0x2f0010 + write 0x1c0a90 0x537 + write 0x1c0a9c 0x9c3 + write 0x1c0aa0 0xf3518ff + write 0x1c0aa4 0x537 + write 0x1c0aa8 0x9c3 + write 0x1c0aac 0xf3518ff + write 0x51040 0x456 + write 0x5104c 0x137 + write 0x51050 0x0 + write 0x51040 0x856 + write 0x5104c 0x0 + write 0x51050 0x2f0000 + write 0x1c0a90 0x538 + write 0x1c0a9c 0x9c3 + write 0x1c0aa0 0xf3538ff + write 0x1c0aa4 0x538 + write 0x1c0aa8 0x9c3 + write 0x1c0aac 0xf3538ff + write 0x51040 0x457 + write 0x5104c 0x138 + write 0x51050 0x0 + write 0x51040 0x857 + write 0x5104c 0x0 + write 0x51050 0x1100000 + write 0x1c0a90 0x539 + write 0x1c0a9c 0x9c3 + write 0x1c0aa0 0xf3578ff + write 0x1c0aa4 0x539 + write 0x1c0aa8 0x9c3 + write 0x1c0aac 0xf3578ff + write 0x51040 0x458 + write 0x5104c 0x139 + write 0x51050 0x0 + write 0x51040 0x858 + write 0x5104c 0x0 + write 0x51050 0x60000 + write 0x1c0a90 0x53a + write 0x1c0a9c 0x833 + write 0x1c0aa0 0xf822fff + write 0x1c0aa4 0x53a + write 0x1c0aa8 0x833 + write 0x1c0aac 0xf822fff + write 0x51040 0x459 + write 0x5104c 0x13a + write 0x51050 0x0 + write 0x51040 0x859 + write 0x5104c 0x0 + write 0x51050 0x50000 + write 0x1c0a90 0x53b + write 0x1c0a9c 0x843 + write 0x1c0aa0 0xf82c8bf + write 0x1c0aa4 0x53b + write 0x1c0aa8 0x843 + write 0x1c0aac 0xf82c8bf + write 0x51040 0x45a + write 0x5104c 0x13b + write 0x51050 0x0 + write 0x51040 0x85a + write 0x5104c 0x0 + write 0x51050 0x360002 + write 0x1c0a90 0x53c + write 0x1c0a9c 0x843 + write 0x1c0aa0 0xf80c8bf + write 0x1c0aa4 0x53c + write 0x1c0aa8 0x843 + write 0x1c0aac 0xf80c8bf + write 0x51040 0x45b + write 0x5104c 0x13c + write 0x51050 0x0 + write 0x51040 0x85b + write 0x5104c 0x0 + write 0x51050 0x360002 + write 0x1c0a90 0x53d + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0xf80c4a3 + write 0x1c0aa4 0x53d + write 0x1c0aa8 0xa53 + write 0x1c0aac 0xf80c4a3 + write 0x51040 0x45c + write 0x5104c 0x13d + write 0x51050 0x0 + write 0x51040 0x85c + write 0x5104c 0x0 + write 0x51050 0x390022 + write 0x1c0a90 0x53e + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0xf80c023 + write 0x1c0aa4 0x53e + write 0x1c0aa8 0xa53 + write 0x1c0aac 0xf80c023 + write 0x51040 0x45d + write 0x5104c 0x13e + write 0x51050 0x0 + write 0x51040 0x85d + write 0x5104c 0x0 + write 0x51050 0x390022 + write 0x1c0a90 0x53f + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0xf80c463 + write 0x1c0aa4 0x53f + write 0x1c0aa8 0xa53 + write 0x1c0aac 0xf80c463 + write 0x51040 0x45e + write 0x5104c 0x13f + write 0x51050 0x0 + write 0x51040 0x85e + write 0x5104c 0x0 + write 0x51050 0x390002 + write 0x1c0a90 0x540 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0xf80c4e3 + write 0x1c0aa4 0x540 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0xf80c4e3 + write 0x51040 0x45f + write 0x5104c 0x140 + write 0x51050 0x0 + write 0x51040 0x85f + write 0x5104c 0x0 + write 0x51050 0x1180002 + write 0x1c0a90 0x541 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0xf80c523 + write 0x1c0aa4 0x541 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0xf80c523 + write 0x51040 0x460 + write 0x5104c 0x141 + write 0x51050 0x0 + write 0x51040 0x860 + write 0x5104c 0x0 + write 0x51050 0x360002 + write 0x1c0a90 0x542 + write 0x1c0a9c 0x853 + write 0x1c0aa0 0xf80dc22 + write 0x1c0aa4 0x542 + write 0x1c0aa8 0x853 + write 0x1c0aac 0xf80dc22 + write 0x51040 0x461 + write 0x5104c 0x142 + write 0x51050 0x0 + write 0x51040 0x861 + write 0x5104c 0x0 + write 0x51050 0x60000 + write 0x1c0a90 0x543 + write 0x1c0a9c 0x843 + write 0x1c0aa0 0xf80d8bf + write 0x1c0aa4 0x543 + write 0x1c0aa8 0x843 + write 0x1c0aac 0xf80d8bf + write 0x51040 0x462 + write 0x5104c 0x143 + write 0x51050 0x0 + write 0x51040 0x862 + write 0x5104c 0x0 + write 0x51050 0x60000 + write 0x1c0a90 0x544 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0xf80d4a3 + write 0x1c0aa4 0x544 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0xf80d4a3 + write 0x51040 0x463 + write 0x5104c 0x144 + write 0x51050 0x0 + write 0x51040 0x863 + write 0x5104c 0x0 + write 0x51050 0x410022 + write 0x1c0a90 0x545 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0xf80d023 + write 0x1c0aa4 0x545 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0xf80d023 + write 0x51040 0x464 + write 0x5104c 0x145 + write 0x51050 0x0 + write 0x51040 0x864 + write 0x5104c 0x0 + write 0x51050 0x410022 + write 0x1c0a90 0x546 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0xf80d463 + write 0x1c0aa4 0x546 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0xf80d463 + write 0x51040 0x465 + write 0x5104c 0x146 + write 0x51050 0x0 + write 0x51040 0x865 + write 0x5104c 0x0 + write 0x51050 0x410002 + write 0x1c0a90 0x547 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0xf80d4e3 + write 0x1c0aa4 0x547 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0xf80d4e3 + write 0x51040 0x466 + write 0x5104c 0x147 + write 0x51050 0x0 + write 0x51040 0x866 + write 0x5104c 0x0 + write 0x51050 0x1220002 + write 0x1c0a90 0x548 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0xf80d5e3 + write 0x1c0aa4 0x548 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0xf80d5e3 + write 0x51040 0x467 + write 0x5104c 0x148 + write 0x51050 0x0 + write 0x51040 0x867 + write 0x5104c 0x0 + write 0x51050 0x60000 + write 0x1c0a90 0x549 + write 0x1c0a9c 0x833 + write 0x1c0aa0 0xf7e2fff + write 0x1c0aa4 0x549 + write 0x1c0aa8 0x833 + write 0x1c0aac 0xf7e2fff + write 0x51040 0x468 + write 0x5104c 0x149 + write 0x51050 0x0 + write 0x51040 0x868 + write 0x5104c 0x0 + write 0x51050 0x50000 + write 0x51040 0x469 + write 0x5104c 0x149 + write 0x51050 0x4000 + write 0x51040 0x869 + write 0x5104c 0x0 + write 0x51050 0x12e0000 + write 0x1c0a90 0x54a + write 0x1c0a9c 0x843 + write 0x1c0aa0 0xf7ec8bf + write 0x1c0aa4 0x54a + write 0x1c0aa8 0x843 + write 0x1c0aac 0xf7ec8bf + write 0x51040 0x46a + write 0x5104c 0x14a + write 0x51050 0x0 + write 0x51040 0x86a + write 0x5104c 0x0 + write 0x51050 0x360002 + write 0x51040 0x46b + write 0x5104c 0x14a + write 0x51050 0x4000 + write 0x51040 0x86b + write 0x5104c 0x0 + write 0x51050 0x360000 + write 0x1c0a90 0x54b + write 0x1c0a9c 0x843 + write 0x1c0aa0 0xf7cc8bf + write 0x1c0aa4 0x54b + write 0x1c0aa8 0x843 + write 0x1c0aac 0xf7cc8bf + write 0x51040 0x46c + write 0x5104c 0x14b + write 0x51050 0x0 + write 0x51040 0x86c + write 0x5104c 0x0 + write 0x51050 0x360002 + write 0x51040 0x46d + write 0x5104c 0x14b + write 0x51050 0x4000 + write 0x51040 0x86d + write 0x5104c 0x0 + write 0x51050 0x360000 + write 0x1c0a90 0x54c + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0xf7cc4a3 + write 0x1c0aa4 0x54c + write 0x1c0aa8 0xa53 + write 0x1c0aac 0xf7cc4a3 + write 0x51040 0x46e + write 0x5104c 0x14c + write 0x51050 0x0 + write 0x51040 0x86e + write 0x5104c 0x0 + write 0x51050 0x390022 + write 0x51040 0x46f + write 0x5104c 0x14c + write 0x51050 0x4000 + write 0x51040 0x86f + write 0x5104c 0x0 + write 0x51050 0x390020 + write 0x1c0a90 0x54d + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0xf7cc023 + write 0x1c0aa4 0x54d + write 0x1c0aa8 0xa53 + write 0x1c0aac 0xf7cc023 + write 0x51040 0x470 + write 0x5104c 0x14d + write 0x51050 0x0 + write 0x51040 0x870 + write 0x5104c 0x0 + write 0x51050 0x390022 + write 0x51040 0x471 + write 0x5104c 0x14d + write 0x51050 0x4000 + write 0x51040 0x871 + write 0x5104c 0x0 + write 0x51050 0x390020 + write 0x1c0a90 0x54e + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0xf7cc463 + write 0x1c0aa4 0x54e + write 0x1c0aa8 0xa53 + write 0x1c0aac 0xf7cc463 + write 0x51040 0x472 + write 0x5104c 0x14e + write 0x51050 0x0 + write 0x51040 0x872 + write 0x5104c 0x0 + write 0x51050 0x390002 + write 0x51040 0x473 + write 0x5104c 0x14e + write 0x51050 0x4000 + write 0x51040 0x873 + write 0x5104c 0x0 + write 0x51050 0x390000 + write 0x1c0a90 0x54f + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0xf7cc4e3 + write 0x1c0aa4 0x54f + write 0x1c0aa8 0xa53 + write 0x1c0aac 0xf7cc4e3 + write 0x51040 0x474 + write 0x5104c 0x14f + write 0x51050 0x0 + write 0x51040 0x874 + write 0x5104c 0x0 + write 0x51050 0x1180002 + write 0x51040 0x475 + write 0x5104c 0x14f + write 0x51050 0x4000 + write 0x51040 0x875 + write 0x5104c 0x0 + write 0x51050 0x1180000 + write 0x1c0a90 0x550 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0xf7cc523 + write 0x1c0aa4 0x550 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0xf7cc523 + write 0x51040 0x476 + write 0x5104c 0x150 + write 0x51050 0x0 + write 0x51040 0x876 + write 0x5104c 0x0 + write 0x51050 0x360002 + write 0x51040 0x477 + write 0x5104c 0x150 + write 0x51050 0x4000 + write 0x51040 0x877 + write 0x5104c 0x0 + write 0x51050 0x360000 + write 0x1c0a90 0x551 + write 0x1c0a9c 0x853 + write 0x1c0aa0 0xf7cdc22 + write 0x1c0aa4 0x551 + write 0x1c0aa8 0x853 + write 0x1c0aac 0xf7cdc22 + write 0x51040 0x478 + write 0x5104c 0x151 + write 0x51050 0x0 + write 0x51040 0x878 + write 0x5104c 0x0 + write 0x51050 0x60000 + write 0x51040 0x479 + write 0x5104c 0x151 + write 0x51050 0x4000 + write 0x51040 0x879 + write 0x5104c 0x0 + write 0x51050 0x12c0000 + write 0x1c0a90 0x552 + write 0x1c0a9c 0x843 + write 0x1c0aa0 0xf7cd8bf + write 0x1c0aa4 0x552 + write 0x1c0aa8 0x843 + write 0x1c0aac 0xf7cd8bf + write 0x51040 0x47a + write 0x5104c 0x152 + write 0x51050 0x0 + write 0x51040 0x87a + write 0x5104c 0x0 + write 0x51050 0x60000 + write 0x51040 0x47b + write 0x5104c 0x152 + write 0x51050 0x4000 + write 0x51040 0x87b + write 0x5104c 0x0 + write 0x51050 0x12c0000 + write 0x1c0a90 0x553 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0xf7cd4a3 + write 0x1c0aa4 0x553 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0xf7cd4a3 + write 0x51040 0x47c + write 0x5104c 0x153 + write 0x51050 0x0 + write 0x51040 0x87c + write 0x5104c 0x0 + write 0x51050 0x410022 + write 0x51040 0x47d + write 0x5104c 0x153 + write 0x51050 0x4000 + write 0x51040 0x87d + write 0x5104c 0x0 + write 0x51050 0x410020 + write 0x1c0a90 0x554 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0xf7cd023 + write 0x1c0aa4 0x554 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0xf7cd023 + write 0x51040 0x47e + write 0x5104c 0x154 + write 0x51050 0x0 + write 0x51040 0x87e + write 0x5104c 0x0 + write 0x51050 0x410022 + write 0x51040 0x47f + write 0x5104c 0x154 + write 0x51050 0x4000 + write 0x51040 0x87f + write 0x5104c 0x0 + write 0x51050 0x410020 + write 0x1c0a90 0x555 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0xf7cd463 + write 0x1c0aa4 0x555 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0xf7cd463 + write 0x51040 0x480 + write 0x5104c 0x155 + write 0x51050 0x0 + write 0x51040 0x880 + write 0x5104c 0x0 + write 0x51050 0x410002 + write 0x51040 0x481 + write 0x5104c 0x155 + write 0x51050 0x4000 + write 0x51040 0x881 + write 0x5104c 0x0 + write 0x51050 0x410000 + write 0x1c0a90 0x556 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0xf7cd4e3 + write 0x1c0aa4 0x556 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0xf7cd4e3 + write 0x51040 0x482 + write 0x5104c 0x156 + write 0x51050 0x0 + write 0x51040 0x882 + write 0x5104c 0x0 + write 0x51050 0x1220002 + write 0x51040 0x483 + write 0x5104c 0x156 + write 0x51050 0x4000 + write 0x51040 0x883 + write 0x5104c 0x0 + write 0x51050 0x1220000 + write 0x1c0a90 0x557 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0xf7cd5e3 + write 0x1c0aa4 0x557 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0xf7cd5e3 + write 0x51040 0x484 + write 0x5104c 0x157 + write 0x51050 0x0 + write 0x51040 0x884 + write 0x5104c 0x0 + write 0x51050 0x60000 + write 0x51040 0x485 + write 0x5104c 0x157 + write 0x51050 0x4000 + write 0x51040 0x885 + write 0x5104c 0x0 + write 0x51050 0x12c0000 + write 0x1c0a90 0x558 + write 0x1c0a9c 0x23 + write 0x1c0aa0 0x708bffff + write 0x1c0aa4 0x558 + write 0x1c0aa8 0x23 + write 0x1c0aac 0x708bffff + write 0x1c0a90 0x559 + write 0x1c0a9c 0x13 + write 0x1c0aa0 0x62ffffff + write 0x1c0aa4 0x559 + write 0x1c0aa8 0x13 + write 0x1c0aac 0x62ffffff + write 0x1c0a90 0x55a + write 0x1c0a9c 0xa3 + write 0x1c0aa0 0x528fffff + write 0x1c0aa4 0x55a + write 0x1c0aa8 0xa3 + write 0x1c0aac 0x528fffff + write 0x51040 0x486 + write 0x5104c 0x15a + write 0x51050 0x0 + write 0x51040 0x886 + write 0x5104c 0x0 + write 0x51050 0x220008 + write 0x1c0a90 0x55b + write 0x1c0a9c 0xa3 + write 0x1c0aa0 0x408fffff + write 0x1c0aa4 0x55b + write 0x1c0aa8 0xa3 + write 0x1c0aac 0x408fffff + write 0x51040 0x487 + write 0x5104c 0x15b + write 0x51050 0x0 + write 0x51040 0x887 + write 0x5104c 0x0 + write 0x51050 0x220008 + write 0x1c0a90 0x55c + write 0x1c0a9c 0xa3 + write 0x1c0aa0 0x518fffff + write 0x1c0aa4 0x55c + write 0x1c0aa8 0xa3 + write 0x1c0aac 0x518fffff + write 0x51040 0x488 + write 0x5104c 0x15c + write 0x51050 0x0 + write 0x51040 0x888 + write 0x5104c 0x0 + write 0x51050 0x220000 + write 0x1c0a90 0x55d + write 0x1c0a9c 0xa3 + write 0x1c0aa0 0x538fffff + write 0x1c0aa4 0x55d + write 0x1c0aa8 0xa3 + write 0x1c0aac 0x538fffff + write 0x51040 0x489 + write 0x5104c 0x15d + write 0x51050 0x0 + write 0x51040 0x889 + write 0x5104c 0x0 + write 0x51050 0x1010000 + write 0x1c0a90 0x55e + write 0x1c0a9c 0xa3 + write 0x1c0aa0 0x578fffff + write 0x1c0aa4 0x55e + write 0x1c0aa8 0xa3 + write 0x1c0aac 0x578fffff + write 0x1c0a90 0x55f + write 0x1c0a9c 0x423 + write 0x1c0aa0 0x6c8bffff + write 0x1c0aa4 0x55f + write 0x1c0aa8 0x423 + write 0x1c0aac 0x6c8bffff + write 0x51040 0x48a + write 0x5104c 0x15f + write 0x51050 0x0 + write 0x51040 0x88a + write 0x5104c 0x0 + write 0x51050 0xe0000 + write 0x1c0a90 0x560 + write 0x1c0a9c 0x423 + write 0x1c0aa0 0x4c8bffff + write 0x1c0aa4 0x560 + write 0x1c0aa8 0x423 + write 0x1c0aac 0x4c8bffff + write 0x51040 0x48b + write 0x5104c 0x160 + write 0x51050 0x0 + write 0x51040 0x88b + write 0x5104c 0x0 + write 0x51050 0xe0000 + write 0x1c0a90 0x561 + write 0x1c0a9c 0x533 + write 0x1c0aa0 0x4c4a3fff + write 0x1c0aa4 0x561 + write 0x1c0aa8 0x533 + write 0x1c0aac 0x4c4a3fff + write 0x51040 0x48c + write 0x5104c 0x161 + write 0x51050 0x0 + write 0x51040 0x88c + write 0x5104c 0x0 + write 0x51050 0x110008 + write 0x1c0a90 0x562 + write 0x1c0a9c 0x533 + write 0x1c0aa0 0x4c023fff + write 0x1c0aa4 0x562 + write 0x1c0aa8 0x533 + write 0x1c0aac 0x4c023fff + write 0x51040 0x48d + write 0x5104c 0x162 + write 0x51050 0x0 + write 0x51040 0x88d + write 0x5104c 0x0 + write 0x51050 0x110008 + write 0x1c0a90 0x563 + write 0x1c0a9c 0x533 + write 0x1c0aa0 0x4c463fff + write 0x1c0aa4 0x563 + write 0x1c0aa8 0x533 + write 0x1c0aac 0x4c463fff + write 0x51040 0x48e + write 0x5104c 0x163 + write 0x51050 0x0 + write 0x51040 0x88e + write 0x5104c 0x0 + write 0x51050 0x110000 + write 0x1c0a90 0x564 + write 0x1c0a9c 0x533 + write 0x1c0aa0 0x4c4e3fff + write 0x1c0aa4 0x564 + write 0x1c0aa8 0x533 + write 0x1c0aac 0x4c4e3fff + write 0x51040 0x48f + write 0x5104c 0x164 + write 0x51050 0x0 + write 0x51040 0x88f + write 0x5104c 0x0 + write 0x51050 0xf00000 + write 0x1c0a90 0x565 + write 0x1c0a9c 0x533 + write 0x1c0aa0 0x4c523fff + write 0x1c0aa4 0x565 + write 0x1c0aa8 0x533 + write 0x1c0aac 0x4c523fff + write 0x51040 0x490 + write 0x5104c 0x165 + write 0x51050 0x0 + write 0x51040 0x890 + write 0x5104c 0x0 + write 0x51050 0xe0000 + write 0x1c0a90 0x566 + write 0x1c0a9c 0x433 + write 0x1c0aa0 0x4dc22fff + write 0x1c0aa4 0x566 + write 0x1c0aa8 0x433 + write 0x1c0aac 0x4dc22fff + write 0x1c0a90 0x567 + write 0x1c0a9c 0x423 + write 0x1c0aa0 0x4d8bffff + write 0x1c0aa4 0x567 + write 0x1c0aa8 0x423 + write 0x1c0aac 0x4d8bffff + write 0x1c0a90 0x568 + write 0x1c0a9c 0x533 + write 0x1c0aa0 0x4d4a3fff + write 0x1c0aa4 0x568 + write 0x1c0aa8 0x533 + write 0x1c0aac 0x4d4a3fff + write 0x51040 0x491 + write 0x5104c 0x168 + write 0x51050 0x0 + write 0x51040 0x891 + write 0x5104c 0x0 + write 0x51050 0x290008 + write 0x1c0a90 0x569 + write 0x1c0a9c 0x533 + write 0x1c0aa0 0x4d023fff + write 0x1c0aa4 0x569 + write 0x1c0aa8 0x533 + write 0x1c0aac 0x4d023fff + write 0x51040 0x492 + write 0x5104c 0x169 + write 0x51050 0x0 + write 0x51040 0x892 + write 0x5104c 0x0 + write 0x51050 0x290008 + write 0x1c0a90 0x56a + write 0x1c0a9c 0x533 + write 0x1c0aa0 0x4d463fff + write 0x1c0aa4 0x56a + write 0x1c0aa8 0x533 + write 0x1c0aac 0x4d463fff + write 0x51040 0x493 + write 0x5104c 0x16a + write 0x51050 0x0 + write 0x51040 0x893 + write 0x5104c 0x0 + write 0x51050 0x290000 + write 0x1c0a90 0x56b + write 0x1c0a9c 0x533 + write 0x1c0aa0 0x4d4e3fff + write 0x1c0aa4 0x56b + write 0x1c0aa8 0x533 + write 0x1c0aac 0x4d4e3fff + write 0x51040 0x494 + write 0x5104c 0x16b + write 0x51050 0x0 + write 0x51040 0x894 + write 0x5104c 0x0 + write 0x51050 0x1090000 + write 0x1c0a90 0x56c + write 0x1c0a9c 0x533 + write 0x1c0aa0 0x4d5e3fff + write 0x1c0aa4 0x56c + write 0x1c0aa8 0x533 + write 0x1c0aac 0x4d5e3fff + write 0x1c0a90 0x56d + write 0x1c0a9c 0x823 + write 0x1c0aa0 0x4f8bffff + write 0x1c0aa4 0x56d + write 0x1c0aa8 0x823 + write 0x1c0aac 0x4f8bffff + write 0x1c0a90 0x56e + write 0x1c0a9c 0x833 + write 0x1c0aa0 0x4fb22fff + write 0x1c0aa4 0x56e + write 0x1c0aa8 0x833 + write 0x1c0aac 0x4fb22fff + write 0x51040 0x495 + write 0x5104c 0x16e + write 0x51050 0x0 + write 0x51040 0x895 + write 0x5104c 0x0 + write 0x51050 0x190000 + write 0x1c0a90 0x56f + write 0x1c0a9c 0x833 + write 0x1c0aa0 0x4f322fff + write 0x1c0aa4 0x56f + write 0x1c0aa8 0x833 + write 0x1c0aac 0x4f322fff + write 0x51040 0x496 + write 0x5104c 0x16f + write 0x51050 0x0 + write 0x51040 0x896 + write 0x5104c 0x0 + write 0x51050 0x190000 + write 0x1c0a90 0x570 + write 0x1c0a9c 0x9c3 + write 0x1c0aa0 0x4f3128ff + write 0x1c0aa4 0x570 + write 0x1c0aa8 0x9c3 + write 0x1c0aac 0x4f3128ff + write 0x51040 0x497 + write 0x5104c 0x170 + write 0x51050 0x0 + write 0x51040 0x897 + write 0x5104c 0x0 + write 0x51050 0x1c0008 + write 0x1c0a90 0x571 + write 0x1c0a9c 0x9c3 + write 0x1c0aa0 0x4f3008ff + write 0x1c0aa4 0x571 + write 0x1c0aa8 0x9c3 + write 0x1c0aac 0x4f3008ff + write 0x51040 0x498 + write 0x5104c 0x171 + write 0x51050 0x0 + write 0x51040 0x898 + write 0x5104c 0x0 + write 0x51050 0x1c0008 + write 0x1c0a90 0x572 + write 0x1c0a9c 0x9c3 + write 0x1c0aa0 0x4f3118ff + write 0x1c0aa4 0x572 + write 0x1c0aa8 0x9c3 + write 0x1c0aac 0x4f3118ff + write 0x51040 0x499 + write 0x5104c 0x172 + write 0x51050 0x0 + write 0x51040 0x899 + write 0x5104c 0x0 + write 0x51050 0x1c0000 + write 0x1c0a90 0x573 + write 0x1c0a9c 0x9c3 + write 0x1c0aa0 0x4f3138ff + write 0x1c0aa4 0x573 + write 0x1c0aa8 0x9c3 + write 0x1c0aac 0x4f3138ff + write 0x51040 0x49a + write 0x5104c 0x173 + write 0x51050 0x0 + write 0x51040 0x89a + write 0x5104c 0x0 + write 0x51050 0xf90000 + write 0x1c0a90 0x574 + write 0x1c0a9c 0x9c3 + write 0x1c0aa0 0x4f3148ff + write 0x1c0aa4 0x574 + write 0x1c0aa8 0x9c3 + write 0x1c0aac 0x4f3148ff + write 0x51040 0x49b + write 0x5104c 0x174 + write 0x51050 0x0 + write 0x51040 0x89b + write 0x5104c 0x0 + write 0x51050 0x190000 + write 0x1c0a90 0x575 + write 0x1c0a9c 0x843 + write 0x1c0aa0 0x4f3708bf + write 0x1c0aa4 0x575 + write 0x1c0aa8 0x843 + write 0x1c0aac 0x4f3708bf + write 0x1c0a90 0x576 + write 0x1c0a9c 0x833 + write 0x1c0aa0 0x4f362fff + write 0x1c0aa4 0x576 + write 0x1c0aa8 0x833 + write 0x1c0aac 0x4f362fff + write 0x1c0a90 0x577 + write 0x1c0a9c 0x9c3 + write 0x1c0aa0 0x4f3528ff + write 0x1c0aa4 0x577 + write 0x1c0aa8 0x9c3 + write 0x1c0aac 0x4f3528ff + write 0x51040 0x49c + write 0x5104c 0x177 + write 0x51050 0x0 + write 0x51040 0x89c + write 0x5104c 0x0 + write 0x51050 0x300008 + write 0x1c0a90 0x578 + write 0x1c0a9c 0x9c3 + write 0x1c0aa0 0x4f3408ff + write 0x1c0aa4 0x578 + write 0x1c0aa8 0x9c3 + write 0x1c0aac 0x4f3408ff + write 0x51040 0x49d + write 0x5104c 0x178 + write 0x51050 0x0 + write 0x51040 0x89d + write 0x5104c 0x0 + write 0x51050 0x300008 + write 0x1c0a90 0x579 + write 0x1c0a9c 0x9c3 + write 0x1c0aa0 0x4f3518ff + write 0x1c0aa4 0x579 + write 0x1c0aa8 0x9c3 + write 0x1c0aac 0x4f3518ff + write 0x51040 0x49e + write 0x5104c 0x179 + write 0x51050 0x0 + write 0x51040 0x89e + write 0x5104c 0x0 + write 0x51050 0x300000 + write 0x1c0a90 0x57a + write 0x1c0a9c 0x9c3 + write 0x1c0aa0 0x4f3538ff + write 0x1c0aa4 0x57a + write 0x1c0aa8 0x9c3 + write 0x1c0aac 0x4f3538ff + write 0x51040 0x49f + write 0x5104c 0x17a + write 0x51050 0x0 + write 0x51040 0x89f + write 0x5104c 0x0 + write 0x51050 0x1110000 + write 0x1c0a90 0x57b + write 0x1c0a9c 0x9c3 + write 0x1c0aa0 0x4f3578ff + write 0x1c0aa4 0x57b + write 0x1c0aa8 0x9c3 + write 0x1c0aac 0x4f3578ff + write 0x1c0a90 0x57c + write 0x1c0a9c 0x833 + write 0x1c0aa0 0x4f822fff + write 0x1c0aa4 0x57c + write 0x1c0aa8 0x833 + write 0x1c0aac 0x4f822fff + write 0x1c0a90 0x57d + write 0x1c0a9c 0x843 + write 0x1c0aa0 0x4f82c8bf + write 0x1c0aa4 0x57d + write 0x1c0aa8 0x843 + write 0x1c0aac 0x4f82c8bf + write 0x51040 0x4a0 + write 0x5104c 0x17d + write 0x51050 0x0 + write 0x51040 0x8a0 + write 0x5104c 0x0 + write 0x51050 0x370001 + write 0x1c0a90 0x57e + write 0x1c0a9c 0x843 + write 0x1c0aa0 0x4f80c8bf + write 0x1c0aa4 0x57e + write 0x1c0aa8 0x843 + write 0x1c0aac 0x4f80c8bf + write 0x51040 0x4a1 + write 0x5104c 0x17e + write 0x51050 0x0 + write 0x51040 0x8a1 + write 0x5104c 0x0 + write 0x51050 0x370001 + write 0x1c0a90 0x57f + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0x4f80c4a3 + write 0x1c0aa4 0x57f + write 0x1c0aa8 0xa53 + write 0x1c0aac 0x4f80c4a3 + write 0x51040 0x4a2 + write 0x5104c 0x17f + write 0x51050 0x0 + write 0x51040 0x8a2 + write 0x5104c 0x0 + write 0x51050 0x3a0011 + write 0x1c0a90 0x580 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0x4f80c023 + write 0x1c0aa4 0x580 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0x4f80c023 + write 0x51040 0x4a3 + write 0x5104c 0x180 + write 0x51050 0x0 + write 0x51040 0x8a3 + write 0x5104c 0x0 + write 0x51050 0x3a0011 + write 0x1c0a90 0x581 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0x4f80c463 + write 0x1c0aa4 0x581 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0x4f80c463 + write 0x51040 0x4a4 + write 0x5104c 0x181 + write 0x51050 0x0 + write 0x51040 0x8a4 + write 0x5104c 0x0 + write 0x51050 0x3a0001 + write 0x1c0a90 0x582 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0x4f80c4e3 + write 0x1c0aa4 0x582 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0x4f80c4e3 + write 0x51040 0x4a5 + write 0x5104c 0x182 + write 0x51050 0x0 + write 0x51040 0x8a5 + write 0x5104c 0x0 + write 0x51050 0x1190001 + write 0x1c0a90 0x583 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0x4f80c523 + write 0x1c0aa4 0x583 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0x4f80c523 + write 0x51040 0x4a6 + write 0x5104c 0x183 + write 0x51050 0x0 + write 0x51040 0x8a6 + write 0x5104c 0x0 + write 0x51050 0x370001 + write 0x1c0a90 0x584 + write 0x1c0a9c 0x853 + write 0x1c0aa0 0x4f80dc22 + write 0x1c0aa4 0x584 + write 0x1c0aa8 0x853 + write 0x1c0aac 0x4f80dc22 + write 0x1c0a90 0x585 + write 0x1c0a9c 0x843 + write 0x1c0aa0 0x4f80d8bf + write 0x1c0aa4 0x585 + write 0x1c0aa8 0x843 + write 0x1c0aac 0x4f80d8bf + write 0x1c0a90 0x586 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0x4f80d4a3 + write 0x1c0aa4 0x586 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0x4f80d4a3 + write 0x51040 0x4a7 + write 0x5104c 0x186 + write 0x51050 0x0 + write 0x51040 0x8a7 + write 0x5104c 0x0 + write 0x51050 0x420011 + write 0x1c0a90 0x587 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0x4f80d023 + write 0x1c0aa4 0x587 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0x4f80d023 + write 0x51040 0x4a8 + write 0x5104c 0x187 + write 0x51050 0x0 + write 0x51040 0x8a8 + write 0x5104c 0x0 + write 0x51050 0x420011 + write 0x1c0a90 0x588 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0x4f80d463 + write 0x1c0aa4 0x588 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0x4f80d463 + write 0x51040 0x4a9 + write 0x5104c 0x188 + write 0x51050 0x0 + write 0x51040 0x8a9 + write 0x5104c 0x0 + write 0x51050 0x420001 + write 0x1c0a90 0x589 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0x4f80d4e3 + write 0x1c0aa4 0x589 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0x4f80d4e3 + write 0x51040 0x4aa + write 0x5104c 0x189 + write 0x51050 0x0 + write 0x51040 0x8aa + write 0x5104c 0x0 + write 0x51050 0x1230001 + write 0x1c0a90 0x58a + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0x4f80d5e3 + write 0x1c0aa4 0x58a + write 0x1c0aa8 0xa53 + write 0x1c0aac 0x4f80d5e3 + write 0x1c0a90 0x58b + write 0x1c0a9c 0x833 + write 0x1c0aa0 0x4f7e2fff + write 0x1c0aa4 0x58b + write 0x1c0aa8 0x833 + write 0x1c0aac 0x4f7e2fff + write 0x51040 0x4ab + write 0x5104c 0x18b + write 0x51050 0x4000 + write 0x51040 0x8ab + write 0x5104c 0x0 + write 0x51050 0x12b0000 + write 0x1c0a90 0x58c + write 0x1c0a9c 0x843 + write 0x1c0aa0 0x4f7ec8bf + write 0x1c0aa4 0x58c + write 0x1c0aa8 0x843 + write 0x1c0aac 0x4f7ec8bf + write 0x51040 0x4ac + write 0x5104c 0x18c + write 0x51050 0x0 + write 0x51040 0x8ac + write 0x5104c 0x0 + write 0x51050 0x370001 + write 0x51040 0x4ad + write 0x5104c 0x18c + write 0x51050 0x4000 + write 0x51040 0x8ad + write 0x5104c 0x0 + write 0x51050 0x370000 + write 0x1c0a90 0x58d + write 0x1c0a9c 0x843 + write 0x1c0aa0 0x4f7cc8bf + write 0x1c0aa4 0x58d + write 0x1c0aa8 0x843 + write 0x1c0aac 0x4f7cc8bf + write 0x51040 0x4ae + write 0x5104c 0x18d + write 0x51050 0x0 + write 0x51040 0x8ae + write 0x5104c 0x0 + write 0x51050 0x370001 + write 0x51040 0x4af + write 0x5104c 0x18d + write 0x51050 0x4000 + write 0x51040 0x8af + write 0x5104c 0x0 + write 0x51050 0x370000 + write 0x1c0a90 0x58e + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0x4f7cc4a3 + write 0x1c0aa4 0x58e + write 0x1c0aa8 0xa53 + write 0x1c0aac 0x4f7cc4a3 + write 0x51040 0x4b0 + write 0x5104c 0x18e + write 0x51050 0x0 + write 0x51040 0x8b0 + write 0x5104c 0x0 + write 0x51050 0x3a0011 + write 0x51040 0x4b1 + write 0x5104c 0x18e + write 0x51050 0x4000 + write 0x51040 0x8b1 + write 0x5104c 0x0 + write 0x51050 0x3a0010 + write 0x1c0a90 0x58f + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0x4f7cc023 + write 0x1c0aa4 0x58f + write 0x1c0aa8 0xa53 + write 0x1c0aac 0x4f7cc023 + write 0x51040 0x4b2 + write 0x5104c 0x18f + write 0x51050 0x0 + write 0x51040 0x8b2 + write 0x5104c 0x0 + write 0x51050 0x3a0011 + write 0x51040 0x4b3 + write 0x5104c 0x18f + write 0x51050 0x4000 + write 0x51040 0x8b3 + write 0x5104c 0x0 + write 0x51050 0x3a0010 + write 0x1c0a90 0x590 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0x4f7cc463 + write 0x1c0aa4 0x590 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0x4f7cc463 + write 0x51040 0x4b4 + write 0x5104c 0x190 + write 0x51050 0x0 + write 0x51040 0x8b4 + write 0x5104c 0x0 + write 0x51050 0x3a0001 + write 0x51040 0x4b5 + write 0x5104c 0x190 + write 0x51050 0x4000 + write 0x51040 0x8b5 + write 0x5104c 0x0 + write 0x51050 0x3a0000 + write 0x1c0a90 0x591 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0x4f7cc4e3 + write 0x1c0aa4 0x591 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0x4f7cc4e3 + write 0x51040 0x4b6 + write 0x5104c 0x191 + write 0x51050 0x0 + write 0x51040 0x8b6 + write 0x5104c 0x0 + write 0x51050 0x1190001 + write 0x51040 0x4b7 + write 0x5104c 0x191 + write 0x51050 0x4000 + write 0x51040 0x8b7 + write 0x5104c 0x0 + write 0x51050 0x1190000 + write 0x1c0a90 0x592 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0x4f7cc523 + write 0x1c0aa4 0x592 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0x4f7cc523 + write 0x51040 0x4b8 + write 0x5104c 0x192 + write 0x51050 0x0 + write 0x51040 0x8b8 + write 0x5104c 0x0 + write 0x51050 0x370001 + write 0x51040 0x4b9 + write 0x5104c 0x192 + write 0x51050 0x4000 + write 0x51040 0x8b9 + write 0x5104c 0x0 + write 0x51050 0x370000 + write 0x1c0a90 0x593 + write 0x1c0a9c 0x853 + write 0x1c0aa0 0x4f7cdc22 + write 0x1c0aa4 0x593 + write 0x1c0aa8 0x853 + write 0x1c0aac 0x4f7cdc22 + write 0x51040 0x4ba + write 0x5104c 0x193 + write 0x51050 0x4000 + write 0x51040 0x8ba + write 0x5104c 0x0 + write 0x51050 0x12b0010 + write 0x1c0a90 0x594 + write 0x1c0a9c 0x843 + write 0x1c0aa0 0x4f7cd8bf + write 0x1c0aa4 0x594 + write 0x1c0aa8 0x843 + write 0x1c0aac 0x4f7cd8bf + write 0x51040 0x4bb + write 0x5104c 0x194 + write 0x51050 0x4000 + write 0x51040 0x8bb + write 0x5104c 0x0 + write 0x51050 0x12b0010 + write 0x1c0a90 0x595 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0x4f7cd4a3 + write 0x1c0aa4 0x595 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0x4f7cd4a3 + write 0x51040 0x4bc + write 0x5104c 0x195 + write 0x51050 0x0 + write 0x51040 0x8bc + write 0x5104c 0x0 + write 0x51050 0x420011 + write 0x51040 0x4bd + write 0x5104c 0x195 + write 0x51050 0x4000 + write 0x51040 0x8bd + write 0x5104c 0x0 + write 0x51050 0x420010 + write 0x1c0a90 0x596 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0x4f7cd023 + write 0x1c0aa4 0x596 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0x4f7cd023 + write 0x51040 0x4be + write 0x5104c 0x196 + write 0x51050 0x0 + write 0x51040 0x8be + write 0x5104c 0x0 + write 0x51050 0x420011 + write 0x51040 0x4bf + write 0x5104c 0x196 + write 0x51050 0x4000 + write 0x51040 0x8bf + write 0x5104c 0x0 + write 0x51050 0x420010 + write 0x1c0a90 0x597 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0x4f7cd463 + write 0x1c0aa4 0x597 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0x4f7cd463 + write 0x51040 0x4c0 + write 0x5104c 0x197 + write 0x51050 0x0 + write 0x51040 0x8c0 + write 0x5104c 0x0 + write 0x51050 0x420001 + write 0x51040 0x4c1 + write 0x5104c 0x197 + write 0x51050 0x4000 + write 0x51040 0x8c1 + write 0x5104c 0x0 + write 0x51050 0x420000 + write 0x1c0a90 0x598 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0x4f7cd4e3 + write 0x1c0aa4 0x598 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0x4f7cd4e3 + write 0x51040 0x4c2 + write 0x5104c 0x198 + write 0x51050 0x0 + write 0x51040 0x8c2 + write 0x5104c 0x0 + write 0x51050 0x1230001 + write 0x51040 0x4c3 + write 0x5104c 0x198 + write 0x51050 0x4000 + write 0x51040 0x8c3 + write 0x5104c 0x0 + write 0x51050 0x1230000 + write 0x1c0a90 0x599 + write 0x1c0a9c 0xa53 + write 0x1c0aa0 0x4f7cd5e3 + write 0x1c0aa4 0x599 + write 0x1c0aa8 0xa53 + write 0x1c0aac 0x4f7cd5e3 + write 0x51040 0x4c4 + write 0x5104c 0x199 + write 0x51050 0x4000 + write 0x51040 0x8c4 + write 0x5104c 0x0 + write 0x51050 0x12b0000 + write 0x1c0a90 0x59a + write 0x1c0a9c 0x411 + write 0x1c0aa0 0xe1ffffff + write 0x1c0aa4 0x59a + write 0x1c0aa8 0x411 + write 0x1c0aac 0xe1ffffff + write 0x1c0a90 0x59b + write 0x1c0a9c 0x421 + write 0x1c0aa0 0xec8bffff + write 0x1c0aa4 0x59b + write 0x1c0aa8 0x421 + write 0x1c0aac 0xec8bffff + write 0x51040 0x4c5 + write 0x5104c 0x19b + write 0x51050 0x0 + write 0x51040 0x8c5 + write 0x5104c 0x0 + write 0x51050 0xe0000 + write 0x1c0a90 0x59c + write 0x1c0a9c 0x421 + write 0x1c0aa0 0xcc8bffff + write 0x1c0aa4 0x59c + write 0x1c0aa8 0x421 + write 0x1c0aac 0xcc8bffff + write 0x51040 0x4c6 + write 0x5104c 0x19c + write 0x51050 0x0 + write 0x51040 0x8c6 + write 0x5104c 0x0 + write 0x51050 0xe0000 + write 0x1c0a90 0x59d + write 0x1c0a9c 0x531 + write 0x1c0aa0 0xcc4a3fff + write 0x1c0aa4 0x59d + write 0x1c0aa8 0x531 + write 0x1c0aac 0xcc4a3fff + write 0x51040 0x4c7 + write 0x5104c 0x19d + write 0x51050 0x0 + write 0x51040 0x8c7 + write 0x5104c 0x0 + write 0x51050 0x110008 + write 0x1c0a90 0x59e + write 0x1c0a9c 0x531 + write 0x1c0aa0 0xcc463fff + write 0x1c0aa4 0x59e + write 0x1c0aa8 0x531 + write 0x1c0aac 0xcc463fff + write 0x51040 0x4c8 + write 0x5104c 0x19e + write 0x51050 0x0 + write 0x51040 0x8c8 + write 0x5104c 0x0 + write 0x51050 0x110000 + write 0x1c0a90 0x59f + write 0x1c0a9c 0x531 + write 0x1c0aa0 0xcc4e3fff + write 0x1c0aa4 0x59f + write 0x1c0aa8 0x531 + write 0x1c0aac 0xcc4e3fff + write 0x51040 0x4c9 + write 0x5104c 0x19f + write 0x51050 0x0 + write 0x51040 0x8c9 + write 0x5104c 0x0 + write 0x51050 0xf00000 + write 0x1c0a90 0x5a0 + write 0x1c0a9c 0x531 + write 0x1c0aa0 0xcc523fff + write 0x1c0aa4 0x5a0 + write 0x1c0aa8 0x531 + write 0x1c0aac 0xcc523fff + write 0x51040 0x4ca + write 0x5104c 0x1a0 + write 0x51050 0x0 + write 0x51040 0x8ca + write 0x5104c 0x0 + write 0x51050 0xe0000 + write 0x1c0a90 0x5a1 + write 0x1c0a9c 0x431 + write 0x1c0aa0 0xcdc22fff + write 0x1c0aa4 0x5a1 + write 0x1c0aa8 0x431 + write 0x1c0aac 0xcdc22fff + write 0x1c0a90 0x5a2 + write 0x1c0a9c 0x421 + write 0x1c0aa0 0xcd8bffff + write 0x1c0aa4 0x5a2 + write 0x1c0aa8 0x421 + write 0x1c0aac 0xcd8bffff + write 0x1c0a90 0x5a3 + write 0x1c0a9c 0x531 + write 0x1c0aa0 0xcd4a3fff + write 0x1c0aa4 0x5a3 + write 0x1c0aa8 0x531 + write 0x1c0aac 0xcd4a3fff + write 0x51040 0x4cb + write 0x5104c 0x1a3 + write 0x51050 0x0 + write 0x51040 0x8cb + write 0x5104c 0x0 + write 0x51050 0x290008 + write 0x1c0a90 0x5a4 + write 0x1c0a9c 0x531 + write 0x1c0aa0 0xcd463fff + write 0x1c0aa4 0x5a4 + write 0x1c0aa8 0x531 + write 0x1c0aac 0xcd463fff + write 0x51040 0x4cc + write 0x5104c 0x1a4 + write 0x51050 0x0 + write 0x51040 0x8cc + write 0x5104c 0x0 + write 0x51050 0x290000 + write 0x1c0a90 0x5a5 + write 0x1c0a9c 0x531 + write 0x1c0aa0 0xcd4e3fff + write 0x1c0aa4 0x5a5 + write 0x1c0aa8 0x531 + write 0x1c0aac 0xcd4e3fff + write 0x51040 0x4cd + write 0x5104c 0x1a5 + write 0x51050 0x0 + write 0x51040 0x8cd + write 0x5104c 0x0 + write 0x51050 0x1090000 + write 0x1c0a90 0x5a6 + write 0x1c0a9c 0x531 + write 0x1c0aa0 0xcd5e3fff + write 0x1c0aa4 0x5a6 + write 0x1c0aa8 0x531 + write 0x1c0aac 0xcd5e3fff + write 0x1c0a90 0x5a7 + write 0x1c0a9c 0x21 + write 0x1c0aa0 0x4c8bffff + write 0x1c0aa4 0x5a7 + write 0x1c0aa8 0x21 + write 0x1c0aac 0x4c8bffff + write 0x51040 0x4ce + write 0x5104c 0x1a7 + write 0x51050 0x0 + write 0x51040 0x8ce + write 0x5104c 0x0 + write 0x51050 0xe0000 \ No newline at end of file diff --git a/fvlproto/run.sh b/fvlproto/run.sh new file mode 100644 index 0000000..f8a6573 --- /dev/null +++ b/fvlproto/run.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +#./build/fvlproto -c 3d5 -n 4 -- --lb-mode sw --rx 2,2 --w 4,6,7,8,9 --lb-proto 50 + +#./build/fvlproto -c 3d5 -n 4 -- --lb-mode sw --rx 1,2 --w 4,6,7,8,9 --lb-proto 50 +#./build/fvlproto -c 3d5 -n 4 -- --lb-mode sw --rx 0,2 --w 4,6,7,8,9 --lb-proto 50 + +#./build/fvlproto -c 7fff -n 4 -- --lb-mode sw --rx 0,0 --w 4,6,7,8,9 --lb-proto 50 +#RX - worked for me +#./build/fvlproto -c 3fff -n 4 -- --lb-mode sw --rx 0,2 --w 1,4,5,6,7 --lb-proto 50 +#./build/fvlproto -c 3fff -n 4 -- --lb-mode rss --rx 0,2 --w 1,4,5,6,7 --lb-proto 50 + + +#Shobhi + + +#./build/fvlproto -c 3fff -n 4 -- --rx 0,2 --tx 1,12:20:30:40:50:60 --w 4,6,7,8,9 --lb-proto 50 --lb-mode sw --input regs.txt +./build/fvlproto -c 3fff -n 4 -- --rx 0,2 --w 4,6,7,8,9 --lb-mode sw --input regs.txt + + diff --git a/fvlproto/test/Makefile b/fvlproto/test/Makefile new file mode 100644 index 0000000..00b878b --- /dev/null +++ b/fvlproto/test/Makefile @@ -0,0 +1,29 @@ +# BSD LICENSE + +ifeq ($(RTE_SDK),) +$(error "Please define RTE_SDK environment variable") +endif + +# Default target, can be overriden by command line or environment +RTE_TARGET ?= x86_64-native-linuxapp-gcc + +include $(RTE_SDK)/mk/rte.vars.mk + +# binary name +APP = readreg + +# all source are stored in SRCS-y +SRCS-y := readreg.c + +CFLAGS += -O3 -g +CFLAGS += $(WERROR_FLAGS) +#CFLAGS_config.o := -D_GNU_SOURCE + +# workaround for a gcc bug with noreturn attribute +# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12603 +ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y) +#CFLAGS_main.o += -Wno-return-type +CFLAGS_readreg.o += -Wno-return-type +endif + +include $(RTE_SDK)/mk/rte.extapp.mk diff --git a/fvlproto/test/readreg.c b/fvlproto/test/readreg.c new file mode 100644 index 0000000..717ddb3 --- /dev/null +++ b/fvlproto/test/readreg.c @@ -0,0 +1,167 @@ +// readreg.c + +#include <stdio.h> +#include <stdint.h> +#include <stdbool.h> +#include <rte_ethdev.h> +//#include "i40e.h" +//#include "trb.h" + +enum { + I40E_TRB_L2_PTP = 0, /* 0 */ + I40E_TRB_L2_FIP, /* 1 */ + I40E_TRB_VXLAN_KEY, /* 2 */ + I40E_TRB_GENEVE_KEY, /* 3 */ + I40E_TRB_L2_LLDP, /* 4 */ + I40E_TRB_L2_MPLS, /* 5 */ + I40E_TRB_GENERIC_UDP_KEY, /* 6 */ + I40E_TRB_L2_NSH, /* 7 */ + I40E_TRB_L2_888E, /* 8 */ + I40E_TRB_L2_ARP, /* 9 */ + I40E_TRB_GRE_KEY, /* 10 */ + I40E_TRB_GRE_KEYC, /* 11 **/ + I40E_TRB_L3_IPV4, /* 12 */ + I40E_TRB_L3_IPV6, /* 13 */ + I40E_TRB_L2_FCOE, /* 14 */ + I40E_TRB_GRE_NO_KEY, /* 15 GRENAT */ + I40E_TRB_TEREDO, /* 16 NAT */ + I40E_TRB_TCP, /* 17 */ + I40E_TRB_UDP, /* 18 */ + I40E_TRB_SCTP, /* 19 */ + I40E_TRB_ICMP, /* 20 */ + I40E_TRB_RESERVED_21, /* 21 */ + I40E_TRB_RESERVED_22, /* 22 */ + I40E_TRB_IPV6_ICMP, /* 23 */ + I40E_TRB_IPV6_OTHER, /* 24 */ + I40E_TRB_IPV6_DST_ROUTE, /* 25 */ + I40E_TRB_FC_RDY_RW, /* 26 */ + I40E_TRB_FC_DATA, /* 27 */ + I40E_TRB_FC_VFT, /* 28 */ + I40E_TRB_FC_RSP, /* 29 */ + I40E_TRB_FC_OTHER, /* 30 */ + I40E_TRB_CLOUD_MACVLAN, /* 31 */ + I40E_TRB_CLOUD_MAC, /* 32 */ + I40E_TRB_L2_PAYLOAD, /* 33 */ + I40E_TRB_L3_PAYLOAD, /* 34 */ + I40E_TRB_L4_PAYLOAD, /* 35 */ + I40E_TRB_L2_HDR0, /* 36 */ + I40E_TRB_L2_HDR1, /* 37 IP First Nibble */ + I40E_TRB_L2_HDR2, /* 38 FCRCTL */ + I40E_TRB_L2_HDR_STAG, /* 39 IDLE */ + I40E_TRB_L2_HDR_EXVLAN, /* 40 VXLANGPE */ + I40E_TRB_L2_HDR_VLAN, /* 41 UDPTIMESYNC1 */ + I40E_TRB_L2_CTS, /* 42 NSH_TUNNEL */ + I40E_TRB_L2_HDR7, /* 43 GRE */ + I40E_TRB_L2_HDR8, /* 44 IPV4_FRAG */ + I40E_TRB_L2_HDR9, /* 45 */ + I40E_TRB_L2_RESERVED46, /* 46 */ + I40E_TRB_L2_RESERVED47, /* 47 */ + I40E_TRB_IP_HDR_FRAG, /* 48 IPV6_FRAG */ + I40E_TRB_IP_INNER_HDR_OP, /* 49 MACDUMMY */ + I40E_TRB_TCP_HDR_OP, /* 50 */ + I40E_TRB_L2_RESERVED51, /* 51 */ + I40E_TRB_EXT_IPV4, /* 52 */ + I40E_TRB_EXT_IPV6, /* 53 */ + I40E_TRB_FC_BIT23, /* 54 */ + I40E_TRB_TCP_SYN, /* 55 */ + I40E_TRB_FC_BIT22, /* 56 */ + I40E_TRB_FLEX_OAM_VXLAN_GPE, /* 57 */ + I40E_TRB_FLEX_OAM_GENEVE, /* 58 */ + I40E_TRB_FLEX_RESERVED59, /* 59 */ + I40E_TRB_FLEX_RESERVED60, /* 60 */ + I40E_TRB_L2_UCAST_MAC, /* 61 */ + I40E_TRB_L2_MCAST_MAC, /* 62 */ + I40E_TRB_L2_BCAST_MAC /* 63 */ +}; + +// from i40e.h +int i40e_dev_reg_write(uint8_t portid, uint32_t reg_addr, uint32_t reg_val, int ctl); + +int i40e_dev_reg_read(uint8_t portid, uint32_t reg_addr, uint64_t *reg_val, int ctl); +// from i40e_int.h +/* Some defines from internal i40e_register_x710_int.h */ + +#define I40E_GLQF_PTYPE(_i, _j) (0x00268200 + ((_i) * 4 + (_j) * 8)) /* _i=0...1, _j=0...63 */ /* Reset: CORER */ +#define I40E_GLQF_PTYPE_MAX_INDEX 1 +#define I40E_GLQF_PTYPE_PROT_LAYER_SHIFT 0 +#define I40E_GLQF_PTYPE_PROT_LAYER_MASK I40E_MASK(0xFFFFFFFF, I40E_GLQF_PTYPE_PROT_LAYER_SHIFT) + +#define I40E_GLQF_PTYPE_ENA(_i, _j) (0x00268600 + ((_i) * 4 + (_j) * 8)) /* _i=0...1, _j=0...63 */ /* Reset: CORER */ +#define I40E_GLQF_PTYPE_ENA_MAX_INDEX 1 +#define I40E_GLQF_PTYPE_ENA_PROT_LAYER_SHIFT 0 +#define I40E_GLQF_PTYPE_ENA_PROT_LAYER_MASK I40E_MASK(0xFFFFFFFF, I40E_GLQF_PTYPE_ENA_PROT_LAYER_SHIFT) + +#define I40E_GLPPRS_INDIRECT_ADDRESS 0x001C0A90 /* Reset: CORER */ +#define I40E_GLPPRS_INDIRECT_ADDRESS_ADDR_SHIFT 0 +#define I40E_GLPPRS_INDIRECT_ADDRESS_ADDR_MASK I40E_MASK(0xFFFF, I40E_GLPPRS_INDIRECT_ADDRESS_ADDR_SHIFT) + +#define I40E_GLPPRS_INDIRECT_DATA(_i) (0x001C0A94 + ((_i) * 4)) /* _i=0...3 */ /* Reset: CORER */ +#define I40E_GLPPRS_INDIRECT_DATA_MAX_INDEX 3 +#define I40E_GLPPRS_INDIRECT_DATA_DATA_SHIFT 0 +#define I40E_GLPPRS_INDIRECT_DATA_DATA_MASK I40E_MASK(0xFFFFFFFF, I40E_GLPPRS_INDIRECT_DATA_DATA_SHIFT) + +#define I40E_GLRCU_INDIRECT_ADDRESS 0x001C0AA4 /* Reset: CORER */ +#define I40E_GLRCU_INDIRECT_ADDRESS_GLRCU_INDIRECT_ADDRESS_SHIFT 0 +#define I40E_GLRCU_INDIRECT_ADDRESS_GLRCU_INDIRECT_ADDRESS_MASK I40E_MASK(0xFFFF, I40E_GLRCU_INDIRECT_ADDRESS_GLRCU_INDIRECT_ADDRESS_SHIFT) + +#define I40E_GLRCU_INDIRECT_DATA(_i) (0x001C0AA8 + ((_i) * 4)) /* _i=0...1 */ /* Reset: CORER */ +#define I40E_GLRCU_INDIRECT_DATA_MAX_INDEX 1 +#define I40E_GLRCU_INDIRECT_DATA_GLRCU_INDIRECT_DATA_SHIFT 0 +#define I40E_GLRCU_INDIRECT_DATA_GLRCU_INDIRECT_DATA_MASK I40E_MASK(0xFFFFFFFF, I40E_GLRCU_INDIRECT_DATA_GLRCU_INDIRECT_DATA_SHIFT) + +#define I40E_GLQF_L3_MAP(_i) (0x0026C700 + ((_i) * 4)) /* _i=0...63 */ /* Reset: CORER */ +#define I40E_GLQF_L3_MAP_MAX_INDEX 63 +#define I40E_GLQF_L3_MAP_TR_IDX_CODE_SHIFT 0 +#define I40E_GLQF_L3_MAP_TR_IDX_CODE_MASK I40E_MASK(0x3F, I40E_GLQF_L3_MAP_TR_IDX_CODE_SHIFT) +#define I40E_GLQF_L3_MAP_TR_OPCODE_SHIFT 6 +#define I40E_GLQF_L3_MAP_TR_OPCODE_MASK I40E_MASK(0x3, I40E_GLQF_L3_MAP_TR_OPCODE_SHIFT) +#define I40E_GLQF_L3_MAP_MIN_SKIP_GAP_SHIFT 8 +#define I40E_GLQF_L3_MAP_MIN_SKIP_GAP_MASK I40E_MASK(0x7F, I40E_GLQF_L3_MAP_MIN_SKIP_GAP_SHIFT) +#define I40E_GLQF_L3_MAP_MIN_SKIP_ENA_SHIFT 15 +#define I40E_GLQF_L3_MAP_MIN_SKIP_ENA_MASK I40E_MASK(0x1, I40E_GLQF_L3_MAP_MIN_SKIP_ENA_SHIFT) + + +#define MEMTYPE_HEADER_SKIP 0x000 +#define MEMTYPE_PROTO 0x100 +#define MEMTYPE_PTYPE 0x500 + +#define PROTO_SPACE_IPV4 1 +#define PROTO_SPACE_IPV6 2 + +#define SKIP_SELECT_CONST 2 + +static void i40_read_memconfig(uint8_t portid, uint32_t memtype, uint32_t entry) +{ + uint64_t val; + printf(" memtype + entry = %x in %s\n", memtype + entry, __func__); + i40e_dev_reg_write(portid, I40E_GLPPRS_INDIRECT_ADDRESS, memtype + entry, 0); + i40e_dev_reg_read(portid, I40E_GLPPRS_INDIRECT_DATA(2), &val, 0); + printf("I40E_GLPPRS_INDIRECT_DATA(2)=%lx in %s\n", val, __func__); + i40e_dev_reg_read(portid, I40E_GLPPRS_INDIRECT_DATA(3), &val, 0); + printf("I40E_GLPPRS_INDIRECT_DATA(3)=%lx in %s\n", val, __func__); + printf("****************************************************\n" ); + i40e_dev_reg_write(portid, I40E_GLRCU_INDIRECT_ADDRESS, memtype + entry, 0); + i40e_dev_reg_read(portid, I40E_GLRCU_INDIRECT_DATA(0), &val, 0); + printf("I40E_GLRCU_INDIRECT_DATA(0)=%lx\n",val); + i40e_dev_reg_read(portid, I40E_GLRCU_INDIRECT_DATA(1), &val, 0); + printf("I40E_GLRCU_INDIRECT_DATA(1)=%lx\n",val); +} + +int main(int argc, char **argv) +{ + uint8_t portid = 0; + int ret; + uint32_t proto_entry = 36; // ICMPv4 + ret = rte_eal_init(argc, argv); + if (ret < 0) { + printf("rte_eal_init() failed in %s\n",__func__); + return -1; + } + printf("calling i40_read_memconfig() for MEMTYPE_PROTO + 0x24 in %s\n",__func__); + i40_read_memconfig(portid, MEMTYPE_PROTO, proto_entry); + + printf("calling i40_read_memconfig() for MEMTYPE_HEADER_SKIP + I40E_TRB_ICMP in %s\n",__func__); + i40_read_memconfig(portid, MEMTYPE_HEADER_SKIP, I40E_TRB_ICMP); + + return ret; +} diff --git a/fvlproto/test/run.sh b/fvlproto/test/run.sh new file mode 100644 index 0000000..0ece4b2 --- /dev/null +++ b/fvlproto/test/run.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +./build/readreg -c 3fff -n 4 \ No newline at end of file -- 2.5.5