e286869b24
- Why I did it 1. Update Mellanox HW-MGMT package to newer version V.7.0030.1011 2. Replace the SONiC PMON Thermal control algorithm with the one inside the HW-MGMT package on all Nvidia platforms 3. Support Spectrum-4 systems - How I did it 1. Update the HW-MGMT package version number and submodule pointer 2. Remove the thermal control algorithm implementation from Mellanox platform API 3. Revise the patch to HW-MGMT package which will disable HW-MGMT from running on SIMX 4. Update the downstream kernel patch list Signed-off-by: Kebo Liu <kebol@nvidia.com>
10217 lines
430 KiB
Diff
10217 lines
430 KiB
Diff
From c1e48283efef4faeee6b601fc679ea228bd8d6ef Mon Sep 17 00:00:00 2001
|
||
From: Mahantesh Salimath <mahantesh@nvidia.com>
|
||
Date: Thu, 30 Jun 2022 16:46:50 -0400
|
||
Subject: [PATCH backport 5.10 21/63] UBUNTU: SAUCE: pka: Add pka driver.
|
||
|
||
BugLink: https://bugs.launchpad.net/bugs/1980415
|
||
|
||
* This driver is picked from internal linux repo;bfdev-5.4.60 branch.
|
||
For commit history, please refer to above repo and branch.
|
||
|
||
Signed-off-by: Mahantesh Salimath <mahantesh@nvidia.com>
|
||
Reviewed-by: Khalil Blaiech <kblaiech@nvidia.com>
|
||
Signed-off-by: Mahantesh Salimath <mahantesh@nvidia.com>
|
||
Signed-off-by: Ike Panhc <ike.pan@canonical.com>
|
||
---
|
||
drivers/platform/mellanox/Kconfig | 2 +
|
||
drivers/platform/mellanox/Makefile | 1 +
|
||
drivers/platform/mellanox/mlxbf_pka/Kconfig | 14 +
|
||
drivers/platform/mellanox/mlxbf_pka/Makefile | 9 +
|
||
.../mellanox/mlxbf_pka/mlxbf_pka_addrs.h | 284 +
|
||
.../mellanox/mlxbf_pka/mlxbf_pka_config.h | 226 +
|
||
.../mellanox/mlxbf_pka/mlxbf_pka_cpu.h | 72 +
|
||
.../mellanox/mlxbf_pka/mlxbf_pka_debug.h | 66 +
|
||
.../mellanox/mlxbf_pka/mlxbf_pka_dev.c | 2414 +++++++++
|
||
.../mellanox/mlxbf_pka/mlxbf_pka_dev.h | 310 ++
|
||
.../mellanox/mlxbf_pka/mlxbf_pka_drv.c | 1398 +++++
|
||
.../mellanox/mlxbf_pka/mlxbf_pka_firmware.h | 4823 +++++++++++++++++
|
||
.../mellanox/mlxbf_pka/mlxbf_pka_ioctl.h | 127 +
|
||
.../mellanox/mlxbf_pka/mlxbf_pka_mmio.h | 49 +
|
||
.../mellanox/mlxbf_pka/mlxbf_pka_ring.h | 276 +
|
||
15 files changed, 10071 insertions(+)
|
||
create mode 100644 drivers/platform/mellanox/mlxbf_pka/Kconfig
|
||
create mode 100644 drivers/platform/mellanox/mlxbf_pka/Makefile
|
||
create mode 100644 drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_addrs.h
|
||
create mode 100644 drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_config.h
|
||
create mode 100644 drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_cpu.h
|
||
create mode 100644 drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_debug.h
|
||
create mode 100644 drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_dev.c
|
||
create mode 100644 drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_dev.h
|
||
create mode 100644 drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_drv.c
|
||
create mode 100644 drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_firmware.h
|
||
create mode 100644 drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_ioctl.h
|
||
create mode 100644 drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_mmio.h
|
||
create mode 100644 drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_ring.h
|
||
|
||
diff --git a/drivers/platform/mellanox/Kconfig b/drivers/platform/mellanox/Kconfig
|
||
index 5d329350a..946bc2375 100644
|
||
--- a/drivers/platform/mellanox/Kconfig
|
||
+++ b/drivers/platform/mellanox/Kconfig
|
||
@@ -97,6 +97,8 @@ config MLXBF_TRIO
|
||
This driver supports the TRIO PCIe root complex interface on
|
||
Mellanox BlueField SoCs.
|
||
|
||
+source "drivers/platform/mellanox/mlxbf_pka/Kconfig"
|
||
+
|
||
config NVSW_SN2201
|
||
tristate "Nvidia SN2201 platform driver support"
|
||
depends on REGMAP
|
||
diff --git a/drivers/platform/mellanox/Makefile b/drivers/platform/mellanox/Makefile
|
||
index 161fad566..046347d3a 100644
|
||
--- a/drivers/platform/mellanox/Makefile
|
||
+++ b/drivers/platform/mellanox/Makefile
|
||
@@ -12,3 +12,4 @@ obj-$(CONFIG_MLXREG_HOTPLUG) += mlxreg-hotplug.o
|
||
obj-$(CONFIG_MLXREG_IO) += mlxreg-io.o
|
||
obj-$(CONFIG_MLXREG_LC) += mlxreg-lc.o
|
||
obj-$(CONFIG_NVSW_SN2201) += nvsw-sn2201.o
|
||
+obj-$(CONFIG_MLXBF_PKA) += mlxbf_pka/
|
||
diff --git a/drivers/platform/mellanox/mlxbf_pka/Kconfig b/drivers/platform/mellanox/mlxbf_pka/Kconfig
|
||
new file mode 100644
|
||
index 000000000..ebc038ec7
|
||
--- /dev/null
|
||
+++ b/drivers/platform/mellanox/mlxbf_pka/Kconfig
|
||
@@ -0,0 +1,14 @@
|
||
+# SPDX-License-Identifier: GPL-2.0-only OR Linux-OpenIB
|
||
+#
|
||
+# Platform support for Mellanox BlueField PKA
|
||
+#
|
||
+
|
||
+config MLXBF_PKA
|
||
+ tristate "Mellanox BlueField Public Key Accelerator driver"
|
||
+ depends on ARM64 && IOMMU_API && VFIO_IOMMU_TYPE1 && VFIO_PLATFORM
|
||
+ help
|
||
+ If you say yes to this option, support will be included for the
|
||
+ Public Key Accelerator device on Mellanox BlueField SoCs.
|
||
+
|
||
+ This driver can also be built as a module. If so, the module will
|
||
+ be called pka-mlxbf.
|
||
diff --git a/drivers/platform/mellanox/mlxbf_pka/Makefile b/drivers/platform/mellanox/mlxbf_pka/Makefile
|
||
new file mode 100644
|
||
index 000000000..d9f5be4d6
|
||
--- /dev/null
|
||
+++ b/drivers/platform/mellanox/mlxbf_pka/Makefile
|
||
@@ -0,0 +1,9 @@
|
||
+# SPDX-License-Identifier: GPL-2.0-only OR Linux-OpenIB
|
||
+#
|
||
+# Makefile for Mellanox BlueField PKA Driver
|
||
+#
|
||
+
|
||
+obj-m += mlxbf-pka.o
|
||
+
|
||
+mlxbf-pka-y := mlxbf_pka_drv.o
|
||
+mlxbf-pka-y += mlxbf_pka_dev.o
|
||
diff --git a/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_addrs.h b/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_addrs.h
|
||
new file mode 100644
|
||
index 000000000..cd2a4d814
|
||
--- /dev/null
|
||
+++ b/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_addrs.h
|
||
@@ -0,0 +1,284 @@
|
||
+//
|
||
+// BSD LICENSE
|
||
+//
|
||
+// Copyright(c) 2016 Mellanox Technologies, Ltd. All rights reserved.
|
||
+// All rights reserved.
|
||
+//
|
||
+// Redistribution and use in source and binary forms, with or without
|
||
+// modification, are permitted provided that the following conditions
|
||
+// are met:
|
||
+//
|
||
+// * Redistributions of source code must retain the above copyright
|
||
+// notice, this list of conditions and the following disclaimer.
|
||
+// * Redistributions in binary form must reproduce the above copyright
|
||
+// notice, this list of conditions and the following disclaimer in
|
||
+// the documentation and/or other materials provided with the
|
||
+// distribution.
|
||
+// * Neither the name of Mellanox Technologies nor the names of its
|
||
+// contributors may be used to endorse or promote products derived
|
||
+// from this software without specific prior written permission.
|
||
+//
|
||
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
+//
|
||
+
|
||
+#ifndef __PKA_ADDRS_H__
|
||
+#define __PKA_ADDRS_H__
|
||
+
|
||
+// Define memory size in bytes
|
||
+#define MEM_SIZE_4KB 0x1000
|
||
+#define MEM_SIZE_8KB 0x2000
|
||
+#define MEM_SIZE_16KB 0x4000
|
||
+#define MEM_SIZE_32KB 0x8000
|
||
+#define MEM_SIZE_64KB 0x10000
|
||
+
|
||
+//
|
||
+// COMMON SPACE
|
||
+//
|
||
+#define CRYPTO_COMMON_BASE 0x0
|
||
+
|
||
+// Common IO CSR addresses/offsets: These are all addressed as 8-byte registers.
|
||
+#define DEV_INFO_ADDR (0x00 | CRYPTO_COMMON_BASE)
|
||
+#define DEV_CTL_ADDR (0x08 | CRYPTO_COMMON_BASE)
|
||
+#define MMIO_INFO_ADDR (0x10 | CRYPTO_COMMON_BASE)
|
||
+#define SCRATCHPAD_ADDR (0x20 | CRYPTO_COMMON_BASE)
|
||
+#define SEMAPHORE0_ADDR (0x28 | CRYPTO_COMMON_BASE)
|
||
+#define SEMAPHORE1_ADDR (0x30 | CRYPTO_COMMON_BASE)
|
||
+#define CLOCK_COUNT_ADDR (0x38 | CRYPTO_COMMON_BASE)
|
||
+#define INT_SETUP_ADDR (0x40 | CRYPTO_COMMON_BASE)
|
||
+#define CRED_CTL_ADDR (0x50 | CRYPTO_COMMON_BASE)
|
||
+#define SAM_CTL_ADDR (0x58 | CRYPTO_COMMON_BASE)
|
||
+
|
||
+//
|
||
+// CRYPTO SPACE
|
||
+//
|
||
+
|
||
+// All addresses/offsets herein are BYTE addresses.
|
||
+
|
||
+// EIP154 CSRS:
|
||
+
|
||
+// Global Control Space CSR addresses/offsets. These are accessed from the
|
||
+// ARM as 8 byte reads/writes however only the bottom 32 bits are implemented.
|
||
+#define PKA_CLOCK_SWITCH_ADDR 0x11C68
|
||
+#define PKA_CLK_FORCE_ADDR 0x11C80
|
||
+#define MODE_SELECTION_ADDR 0x11C88
|
||
+#define PKA_PROT_STATUS_ADDR 0x11C90
|
||
+#define PKA_OPTIONS_ADDR 0x11DF0
|
||
+#define PKA_VERSION_ADDR 0x11DF8
|
||
+
|
||
+// Advanced Interrupt Controller CSR addresses/offsets. These are accessed
|
||
+// from the ARM as 8 byte reads/writes however only the bottom 32 bits are
|
||
+// implemented.
|
||
+#define AIC_POL_CTRL_ADDR 0x11E00
|
||
+#define AIC_TYPE_CTRL_ADDR 0x11E08
|
||
+#define AIC_ENABLE_CTRL_ADDR 0x11E10
|
||
+#define AIC_RAW_STAT_ADDR 0x11E18
|
||
+#define AIC_ENABLE_SET_ADDR 0x11E18
|
||
+#define AIC_ENABLED_STAT_ADDR 0x11E20
|
||
+#define AIC_ACK_ADDR 0x11E20
|
||
+#define AIC_ENABLE_CLR_ADDR 0x11E28
|
||
+#define AIC_OPTIONS_ADDR 0x11E30
|
||
+#define AIC_VERSION_ADDR 0x11E38
|
||
+
|
||
+// The True Random Number Generator CSR addresses/offsets. These are accessed
|
||
+// from the ARM as 8 byte reads/writes however only the bottom 32 bits are
|
||
+// implemented.
|
||
+#define TRNG_OUTPUT_0_ADDR 0x12000
|
||
+#define TRNG_OUTPUT_1_ADDR 0x12008
|
||
+#define TRNG_OUTPUT_2_ADDR 0x12010
|
||
+#define TRNG_OUTPUT_3_ADDR 0x12018
|
||
+#define TRNG_STATUS_ADDR 0x12020
|
||
+#define TRNG_INTACK_ADDR 0x12020
|
||
+#define TRNG_CONTROL_ADDR 0x12028
|
||
+#define TRNG_CONFIG_ADDR 0x12030
|
||
+#define TRNG_ALARMCNT_ADDR 0x12038
|
||
+#define TRNG_FROENABLE_ADDR 0x12040
|
||
+#define TRNG_FRODETUNE_ADDR 0x12048
|
||
+#define TRNG_ALARMMASK_ADDR 0x12050
|
||
+#define TRNG_ALARMSTOP_ADDR 0x12058
|
||
+#define TRNG_BLOCKCNT_ADDR 0x120E8
|
||
+#define TRNG_OPTIONS_ADDR 0x120F0
|
||
+#define TRNG_TEST_ADDR 0x120E0
|
||
+#define TRNG_RAW_L_ADDR 0x12060
|
||
+#define TRNG_RAW_H_ADDR 0x12068
|
||
+#define TRNG_RUN_CNT_ADDR 0x12080
|
||
+#define TRNG_MONOBITCNT_ADDR 0x120B8
|
||
+#define TRNG_POKER_3_0_ADDR 0x120C0
|
||
+#define TRNG_POKER_7_4 0x120C8
|
||
+#define TRNG_POKER_B_8 0x120D0
|
||
+#define TRNG_POKER_F_C 0x120D8
|
||
+
|
||
+#define TRNG_PS_AI_0_ADDR 0x12080
|
||
+#define TRNG_PS_AI_1_ADDR 0x12088
|
||
+#define TRNG_PS_AI_2_ADDR 0x12090
|
||
+#define TRNG_PS_AI_3_ADDR 0x12098
|
||
+#define TRNG_PS_AI_4_ADDR 0x120A0
|
||
+#define TRNG_PS_AI_5_ADDR 0x120A8
|
||
+#define TRNG_PS_AI_6_ADDR 0x120B0
|
||
+#define TRNG_PS_AI_7_ADDR 0x120B8
|
||
+#define TRNG_PS_AI_8_ADDR 0x120C0
|
||
+#define TRNG_PS_AI_9_ADDR 0x120C8
|
||
+#define TRNG_PS_AI_10_ADDR 0x120D0
|
||
+#define TRNG_PS_AI_11_ADDR 0x120D8
|
||
+
|
||
+// Control register address/offset. This is accessed from the ARM using 8
|
||
+// byte reads/writes however only the bottom 32 bits are implemented.
|
||
+#define PKA_MASTER_SEQ_CTRL_ADDR 0x27F90
|
||
+
|
||
+// Ring CSRs: These are all accessed from the ARM using 8 byte reads/writes
|
||
+// however only the bottom 32 bits are implemented.
|
||
+
|
||
+// Ring 0 CSRS
|
||
+#define COMMAND_COUNT_0_ADDR 0x80080
|
||
+#define RESULT_COUNT_0_ADDR 0x80088
|
||
+#define IRQ_THRESH_0_ADDR 0x80090
|
||
+
|
||
+// Ring 1 CSRS:
|
||
+#define COMMAND_COUNT_1_ADDR 0x90080
|
||
+#define RESULT_COUNT_1_ADDR 0x90088
|
||
+#define IRQ_THRESH_1_ADDR 0x90090
|
||
+
|
||
+// Ring 2 CSRS:
|
||
+#define COMMAND_COUNT_2_ADDR 0xA0080
|
||
+#define RESULT_COUNT_2_ADDR 0xA0088
|
||
+#define IRQ_THRESH_2_ADDR 0xA0090
|
||
+
|
||
+// Ring 3 CSRS:
|
||
+#define COMMAND_COUNT_3_ADDR 0xB0080
|
||
+#define RESULT_COUNT_3_ADDR 0xB0088
|
||
+#define IRQ_THRESH_3_ADDR 0xB0090
|
||
+
|
||
+// EIP154 RAM regions: Note that the FARM_PROG_RAM_X address range overlaps
|
||
+// with the FARM_DATA_RAM_X and FARM_DATA_RAM_X_EXT address ranges. This
|
||
+// conflict is resolved by using the FARM_PROG_RAM_X only when the
|
||
+// Sequencer is in SW reset, and the DATA_RAMs are picked only when the
|
||
+// engine is operation.
|
||
+//
|
||
+// Note:
|
||
+// The FARM_DATA_RAM_X_EXT RAMs may also be
|
||
+// called the LNME FIFO RAMs in some of the documentation.
|
||
+//
|
||
+// PKA_BUFFER_RAM : 1024 x 64 - 8K bytes
|
||
+// PKA_SECURE_RAM : 1536 x 64 - 12K bytes
|
||
+// PKA_MASTER_PROG_RAM : 8192 x 32 - 32K bytes
|
||
+// FARM_DATA_RAM_X : 1024 x 64 - 8K bytes
|
||
+// FARM_DATA_RAM_X_EXT : 256 x 32 - 1K bytes
|
||
+// FARM_PROG_RAM_X : 2048 x 32 - 8K bytes
|
||
+//
|
||
+// Note:
|
||
+// *TBD* Since hardware guys multiplied the address per 2, the size of
|
||
+// each memory/registers group increased and become two times larger.
|
||
+// Memory size should be adjusted accordingly:
|
||
+// PKA Buffer RAM size : 8KB --> 16KB
|
||
+// PKA Secure RAM size : 8KB --> 16KB
|
||
+// PKA Master Program RAM size : 32KB --> 64KB
|
||
+// PKA Farm Data RAM size : 4KB --> 8KB
|
||
+// PKA Farm Data RAM extension size : 4KB --> 8KB
|
||
+// PKA Farm Program RAM size : 8KB --> 16KB
|
||
+//
|
||
+#define PKA_BUFFER_RAM_BASE 0x00000
|
||
+#define PKA_BUFFER_RAM_SIZE MEM_SIZE_16KB // 0x00000...0x03FFF
|
||
+
|
||
+#define PKA_SECURE_RAM_BASE 0x20000
|
||
+#define PKA_SECURE_RAM_SIZE MEM_SIZE_16KB // 0x20000...0x23FFF
|
||
+
|
||
+#define PKA_MASTER_PROG_RAM_BASE 0x30000
|
||
+#define PKA_MASTER_PROG_RAM_SIZE MEM_SIZE_64KB // 0x30000...0x3FFFF
|
||
+
|
||
+#define FARM_DATA_RAM_0_BASE 0x40000
|
||
+#define FARM_DATA_RAM_0_SIZE MEM_SIZE_8KB // 0x40000...0x41FFF
|
||
+#define FARM_DATA_RAM_0_EXT_BASE 0x42000
|
||
+#define FARM_DATA_RAM_0_EXT_SIZE MEM_SIZE_8KB // 0x42000...0x43FFF
|
||
+#define FARM_PROG_RAM_0_BASE 0x40000
|
||
+#define FARM_PROG_RAM_0_SIZE MEM_SIZE_16KB // 0x40000...0x43FFF
|
||
+#define FARM_DATA_RAM_1_BASE 0x44000
|
||
+#define FARM_DATA_RAM_1_SIZE MEM_SIZE_8KB // 0x44000...0x45FFF
|
||
+#define FARM_DATA_RAM_1_EXT_BASE 0x46000
|
||
+#define FARM_DATA_RAM_1_EXT_SIZE MEM_SIZE_8KB // 0x46000...0x47FFF
|
||
+#define FARM_PROG_RAM_1_BASE 0x44000
|
||
+#define FARM_PROG_RAM_1_SIZE MEM_SIZE_16KB // 0x44000...0x47FFF
|
||
+#define FARM_DATA_RAM_2_BASE 0x48000
|
||
+#define FARM_DATA_RAM_2_SIZE MEM_SIZE_8KB // 0x48000...0x49FFF
|
||
+#define FARM_DATA_RAM_2_EXT_BASE 0x4A000
|
||
+#define FARM_DATA_RAM_2_EXT_SIZE MEM_SIZE_8KB // 0x4A000...0x4BFFF
|
||
+#define FARM_PROG_RAM_2_BASE 0x48000
|
||
+#define FARM_PROG_RAM_2_SIZE MEM_SIZE_16KB // 0x48000...0x4BFFF
|
||
+#define FARM_DATA_RAM_3_BASE 0x4C000
|
||
+#define FARM_DATA_RAM_3_SIZE MEM_SIZE_8KB // 0x4C000...0x4DFFF
|
||
+#define FARM_DATA_RAM_3_EXT_BASE 0x4E000
|
||
+#define FARM_DATA_RAM_3_EXT_SIZE MEM_SIZE_8KB // 0x4E000...0x4FFFF
|
||
+#define FARM_PROG_RAM_3_BASE 0x4C000
|
||
+#define FARM_PROG_RAM_3_SIZE MEM_SIZE_16KB // 0x4C000...0x4FFFF
|
||
+#define FARM_DATA_RAM_4_BASE 0x50000
|
||
+#define FARM_DATA_RAM_4_SIZE MEM_SIZE_8KB // 0x50000...0x51FFF
|
||
+#define FARM_DATA_RAM_4_EXT_BASE 0x52000
|
||
+#define FARM_DATA_RAM_4_EXT_SIZE MEM_SIZE_8KB // 0x52000...0x53FFF
|
||
+#define FARM_PROG_RAM_4_BASE 0x50000
|
||
+#define FARM_PROG_RAM_4_SIZE MEM_SIZE_16KB // 0x50000...0x53FFF
|
||
+#define FARM_DATA_RAM_5_BASE 0x54000
|
||
+#define FARM_DATA_RAM_5_SIZE MEM_SIZE_8KB // 0x54000...0x55FFF
|
||
+#define FARM_DATA_RAM_5_EXT_BASE 0x56000
|
||
+#define FARM_DATA_RAM_5_EXT_SIZE MEM_SIZE_8KB // 0x56000...0x57FFF
|
||
+#define FARM_PROG_RAM_5_BASE 0x54000
|
||
+#define FARM_PROG_RAM_5_SIZE MEM_SIZE_16KB // 0x54000...0x57FFF
|
||
+
|
||
+// PKA Buffer RAM offsets. These are NOT real CSR's but instead are
|
||
+// specific offset/addresses within the EIP154 PKA_BUFFER_RAM.
|
||
+
|
||
+// Ring 0:
|
||
+#define RING_CMMD_BASE_0_ADDR 0x00000
|
||
+#define RING_RSLT_BASE_0_ADDR 0x00010
|
||
+#define RING_SIZE_TYPE_0_ADDR 0x00020
|
||
+#define RING_RW_PTRS_0_ADDR 0x00028
|
||
+#define RING_RW_STAT_0_ADDR 0x00030
|
||
+
|
||
+// Ring 1
|
||
+#define RING_CMMD_BASE_1_ADDR 0x00040
|
||
+#define RING_RSLT_BASE_1_ADDR 0x00050
|
||
+#define RING_SIZE_TYPE_1_ADDR 0x00060
|
||
+#define RING_RW_PTRS_1_ADDR 0x00068
|
||
+#define RING_RW_STAT_1_ADDR 0x00070
|
||
+
|
||
+// Ring 2
|
||
+#define RING_CMMD_BASE_2_ADDR 0x00080
|
||
+#define RING_RSLT_BASE_2_ADDR 0x00090
|
||
+#define RING_SIZE_TYPE_2_ADDR 0x000A0
|
||
+#define RING_RW_PTRS_2_ADDR 0x000A8
|
||
+#define RING_RW_STAT_2_ADDR 0x000B0
|
||
+
|
||
+// Ring 3
|
||
+#define RING_CMMD_BASE_3_ADDR 0x000C0
|
||
+#define RING_RSLT_BASE_3_ADDR 0x000D0
|
||
+#define RING_SIZE_TYPE_3_ADDR 0x000E0
|
||
+#define RING_RW_PTRS_3_ADDR 0x000E8
|
||
+#define RING_RW_STAT_3_ADDR 0x000F0
|
||
+
|
||
+// Ring Options
|
||
+#define PKA_RING_OPTIONS_ADDR 0x07FF8
|
||
+
|
||
+// Alternate Window RAM size
|
||
+#define PKA_WINDOW_RAM_REGION_SIZE MEM_SIZE_16KB
|
||
+
|
||
+// Currently, we do not use these MiCA specific CSRs.
|
||
+
|
||
+// The PKI (not EIP154) CSR address/offsets: These are all addressed as
|
||
+// 8-byte registers.
|
||
+#define PKA_INT_MASK_ADDR 0x00
|
||
+#define PKA_INT_MASK_SET_ADDR 0x08
|
||
+#define PKA_INT_MASK_RESET_ADDR 0x10
|
||
+#define PKA_ZEROIZE_ADDR 0x40
|
||
+#define TST_FRO_ADDR 0x50
|
||
+#define FRO_COUNT_ADDR 0x58
|
||
+#define PKA_PARITY_CTL_ADDR 0x60
|
||
+#define PKA_PARITY_STAT_ADDR 0x68
|
||
+
|
||
+#endif // __PKA_ADDRS_H__
|
||
diff --git a/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_config.h b/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_config.h
|
||
new file mode 100644
|
||
index 000000000..5b69d55be
|
||
--- /dev/null
|
||
+++ b/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_config.h
|
||
@@ -0,0 +1,226 @@
|
||
+//
|
||
+// BSD LICENSE
|
||
+//
|
||
+// Copyright(c) 2016 Mellanox Technologies, Ltd. All rights reserved.
|
||
+// All rights reserved.
|
||
+//
|
||
+// Redistribution and use in source and binary forms, with or without
|
||
+// modification, are permitted provided that the following conditions
|
||
+// are met:
|
||
+//
|
||
+// * Redistributions of source code must retain the above copyright
|
||
+// notice, this list of conditions and the following disclaimer.
|
||
+// * Redistributions in binary form must reproduce the above copyright
|
||
+// notice, this list of conditions and the following disclaimer in
|
||
+// the documentation and/or other materials provided with the
|
||
+// distribution.
|
||
+// * Neither the name of Mellanox Technologies nor the names of its
|
||
+// contributors may be used to endorse or promote products derived
|
||
+// from this software without specific prior written permission.
|
||
+//
|
||
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
+//
|
||
+
|
||
+#ifndef __PKA_CONFIG_H__
|
||
+#define __PKA_CONFIG_H__
|
||
+
|
||
+#include "mlxbf_pka_addrs.h"
|
||
+
|
||
+// The maximum number of PKA shims refered to as IO blocks.
|
||
+#define PKA_MAX_NUM_IO_BLOCKS 8
|
||
+// The maximum number of Rings supported by IO block (shim).
|
||
+#define PKA_MAX_NUM_IO_BLOCK_RINGS 4
|
||
+
|
||
+#define PKA_MAX_NUM_RINGS \
|
||
+ (PKA_MAX_NUM_IO_BLOCK_RINGS * PKA_MAX_NUM_IO_BLOCKS)
|
||
+
|
||
+// Resources are regions which include info control/status words,
|
||
+// count registers and host window ram.
|
||
+#define PKA_MAX_NUM_RING_RESOURCES 3
|
||
+
|
||
+// PKA Ring resources.
|
||
+// Define Ring resources parameters including base address, size (in bytes)
|
||
+// and ring spacing.
|
||
+#define PKA_RING_WORDS_ADDR PKA_BUFFER_RAM_BASE
|
||
+#define PKA_RING_CNTRS_ADDR COMMAND_COUNT_0_ADDR
|
||
+
|
||
+#define PKA_RING_WORDS_SIZE 0x40 // 64 bytes
|
||
+#define PKA_RING_CNTRS_SIZE 0x20 // 32 bytes (3 count registers)
|
||
+#define PKA_RING_MEM_SIZE 0x4000 // 16K bytes
|
||
+
|
||
+#define PKA_RING_WORDS_SPACING 0x40 // 64 bytes
|
||
+#define PKA_RING_CNTRS_SPACING 0x10000 // 64K bytes
|
||
+#define PKA_RING_MEM_0_SPACING 0x4000 // 16K bytes
|
||
+#define PKA_RING_MEM_1_SPACING 0x10000 // 64K bytes
|
||
+
|
||
+// PKA Window RAM parameters.
|
||
+// Define whether to split or not Window RAM during PKA device creation phase.
|
||
+#define SPLIT_WINDOW_RAM_MODE_ENABLED 1
|
||
+#define SPLIT_WINDOW_RAM_MODE_DISABLED 0
|
||
+#define PKA_SPLIT_WINDOW_RAM_MODE SPLIT_WINDOW_RAM_MODE_DISABLED
|
||
+// Defines for Window RAM partition. It is valid for 16K memory.
|
||
+#define PKA_WINDOW_RAM_RING_MEM_SIZE 0x0800 // 2KB
|
||
+#define PKA_WINDOW_RAM_DATA_MEM_SIZE 0x3800 // 14KB
|
||
+
|
||
+// Offset mask, common to both Window and Alternate Window RAM.
|
||
+#define PKA_WINDOW_RAM_OFFSET_MASK1 0x730000
|
||
+
|
||
+// Macro for mapping PKA Ring address into Window RAM address. It converts the
|
||
+// ring address, either physical address or virtual address, to valid address
|
||
+// into the Window RAM. This is done assuming the Window RAM base, size and
|
||
+// mask. Here, base is the actual physical address of the Window RAM, with the
|
||
+// help of mask it is reduced to Window RAM offset within that PKA block.
|
||
+// Further, with the help of addr and size, we arrive at the Window RAM
|
||
+// offset address for a PKA Ring within the given Window RAM.
|
||
+#define PKA_RING_MEM_ADDR(base, mask, addr, size) \
|
||
+ ((base & mask) | (((addr) & 0xffff) | \
|
||
+ ((((addr) & ~((size) - 1)) & 0xf0000) >> 2)))
|
||
+
|
||
+// PKA Master Sequencer Control/Status Register
|
||
+// Write '1' to bit [31] puts the Master controller Sequencer in a reset
|
||
+// reset state. Resetting the Sequencer (in order to load other firmware)
|
||
+// should only be done when the EIP-154 is not performing any operations.
|
||
+#define PKA_MASTER_SEQ_CTRL_RESET_VAL 0x80000000
|
||
+// Write '1' to bit [30] will reset all Command and Result counters. This
|
||
+// bit is write-only and self clearing and can only be set if the ‘Reset’
|
||
+// bit [31] is ‘1’.
|
||
+#define PKA_MASTER_SEQ_CTRL_CLEAR_COUNTERS_VAL 0x40000000
|
||
+// Bit [8] in the PKA Master Sequencer Control/Status Register is tied to
|
||
+// the 'pka_master_irq interrupt' on the EIP-154 interrupt controller.
|
||
+#define PKA_MASTER_SEQ_CTRL_MASTER_IRQ_BIT 8
|
||
+// Sequencer status bits are used by the Master controller Sequencer to
|
||
+// reflect status. Bit [0] is tied to the 'pka_master_irq' interrupt on
|
||
+// the EIP-154 interrupt controller.
|
||
+#define PKA_MASTER_SEQ_CTRL_STATUS_BYTE 0x01
|
||
+// 'pka_master_irq' mask for the Master controller Sequencer Status Register.
|
||
+#define PKA_MASTER_SEQ_CTRL_MASTER_IRQ_MASK 0x100
|
||
+
|
||
+// Advanced Interrupt Controller (AIC) configuration
|
||
+// AIC Polarity Control Register is used to set each individual interrupt
|
||
+// signal (High Level / Rising Edge) during the initialization phase.
|
||
+// '0' = Low level or falling edge.
|
||
+// '1' = High level or rising edge.
|
||
+#define PKA_AIC_POL_CTRL_REG_VAL 0x000FFFFF
|
||
+// AIC Type Control Register is used to set each interrupt to level or edge.
|
||
+// '0' = Level.
|
||
+// '1' = Edge.
|
||
+#define PKA_AIC_TYPE_CTRL_REG_VAL 0x000FFFFF
|
||
+// AIC Enable Control Register is used to enable interrupt inputs.
|
||
+// '0' = Disabled.
|
||
+// '1' = Enabled.
|
||
+#define PKA_AIC_ENABLE_CTRL_REG_VAL 0x000F030F
|
||
+// AIC Enabled Status Register bits reflect the status of the interrupts
|
||
+// gated with the enable bits of the AIC_ENABLE_CTRL Register.
|
||
+// '0' = Inactive.
|
||
+// '1' = Pending.
|
||
+#define PKA_AIC_ENABLE_STAT_REG_VAL 0x000F030F
|
||
+
|
||
+// 'pka_master_irq' mask for the AIC Enabled Status Register.
|
||
+#define PKA_AIC_ENABLED_STAT_MASTER_IRQ_MASK 0x100
|
||
+
|
||
+// PKA_RING_OPTIONS field to specify the priority in which rings are handled:
|
||
+// '00' = full rotating priority,
|
||
+// '01' = fixed priority (ring 0 lowest),
|
||
+// '10' = ring 0 has the highest priority and the remaining rings have
|
||
+// rotating priority,
|
||
+// '11' = reserved, do not use.
|
||
+#define PKA_FULL_ROTATING_PRIORITY 0x0
|
||
+#define PKA_FIXED_PRIORITY 0x1
|
||
+#define PKA_RING_0_HAS_THE_HIGHEST_PRIORITY 0x2
|
||
+#define PKA_RESERVED 0x3
|
||
+#define PKA_RING_OPTIONS_PRIORITY PKA_FULL_ROTATING_PRIORITY
|
||
+
|
||
+// 'Signature' byte used because the ring options are transferred through RAM
|
||
+// which does not have a defined reset value. The EIP-154 master controller
|
||
+// keeps reading the PKA_RING_OPTIONS word at start-up until the ‘Signature’
|
||
+// byte contains 0x46 and the ‘Reserved’ field contains zero.
|
||
+#define PKA_RING_OPTIONS_SIGNATURE_BYTE 0x46
|
||
+
|
||
+// Order of the result reporting: Two schemas are available:
|
||
+// InOrder - This means that the results will be reported in the same order
|
||
+// as the commands were provided.
|
||
+// OutOfOrder - This means that the results are reported as soon as they are
|
||
+// available
|
||
+#define PKA_RING_TYPE_IN_ORDER_BIT 1
|
||
+#define PKA_RING_TYPE_OUT_OF_ORDER_BIT 0
|
||
+#define PKA_RING_TYPE_IN_ORDER PKA_RING_TYPE_OUT_OF_ORDER_BIT
|
||
+
|
||
+// Byte order of the data written/read to/from Rings.
|
||
+// Little Endian (LE) - The least significant bytes have the lowest address.
|
||
+// Big Endian (BE) - The most significant bytes come first.
|
||
+#define PKA_RING_BYTE_ORDER_LE 0
|
||
+#define PKA_RING_BYTE_ORDER_BE 1
|
||
+#define PKA_RING_BYTE_ORDER PKA_RING_BYTE_ORDER_LE
|
||
+
|
||
+// 'trng_clk_on' mask for PKA Clock Switch Forcing Register. Turn on the
|
||
+// TRNG clock. When the TRNG is controlled via the Host slave interface,
|
||
+// this engine needs to be turned on by setting bit 11.
|
||
+#define PKA_CLK_FORCE_TRNG_ON 0x800
|
||
+
|
||
+// Number of TRNG Output registers
|
||
+#define PKA_TRNG_OUTPUT_CNT 4
|
||
+
|
||
+// TRNG Configuration
|
||
+#define PKA_TRNG_CONFIG_REG_VAL 0x00020008
|
||
+// TRNG Alarm Counter Register Value
|
||
+#define PKA_TRNG_ALARMCNT_REG_VAL 0x000200FF
|
||
+// TRNG FRO Enable Register Value
|
||
+#define PKA_TRNG_FROENABLE_REG_VAL 0x00FFFFFF
|
||
+// TRNG Control Register Value; Set bit 10 to start the EIP-76 a.k.a TRNG
|
||
+// engine, gathering entropy from the FROs.
|
||
+#define PKA_TRNG_CONTROL_REG_VAL 0x00000400
|
||
+
|
||
+// TRNG Control bit
|
||
+#define PKA_TRNG_CONTROL_TEST_MODE 0x100
|
||
+
|
||
+// TRNG Control Register Value; Set bit 10 and 12 to start the EIP-76 a.k.a TRNG
|
||
+// engine with DRBG enabled, gathering entropy from the FROs.
|
||
+#define PKA_TRNG_CONTROL_DRBG_REG_VAL 0x00001400
|
||
+
|
||
+// DRBG enabled TRNG 'request_data' value. REQ_DATA_VAL (in accordance with
|
||
+// DATA_BLOCK_MASK) requests 256 blocks of 128-bit random output.
|
||
+// 4095 blocks is the max number that can be requested for the TRNG(with DRBG)
|
||
+// configuration on Bluefield platforms.
|
||
+#define PKA_TRNG_CONTROL_REQ_DATA_VAL 0x10010000
|
||
+
|
||
+// Mask for 'Data Block' in TRNG Control Register.
|
||
+#define PKA_TRNG_DRBG_DATA_BLOCK_MASK 0xfff00000
|
||
+
|
||
+// Set bit 12 of TRNG Control Register to enable DRBG functionality.
|
||
+#define PKA_TRNG_CONTROL_DRBG_ENABLE_VAL 0x00001000
|
||
+
|
||
+// Set bit 8 a.ka 'test_sp_800_90 DRBG' bit in the TRNG Test Register.
|
||
+#define PKA_TRNG_TEST_DRBG_VAL 0x00000080
|
||
+
|
||
+// Number of Personalization String/Additional Input Registers
|
||
+#define PKA_TRNG_PS_AI_REG_COUNT 12
|
||
+
|
||
+// DRBG Reseed enable
|
||
+#define PKA_TRNG_CONTROL_DRBG_RESEED 0x00008000
|
||
+
|
||
+// TRNG Status bits
|
||
+#define PKA_TRNG_STATUS_READY 0x1
|
||
+#define PKA_TRNG_STATUS_SHUTDOWN_OFLO 0x2
|
||
+#define PKA_TRNG_STATUS_TEST_READY 0x100
|
||
+#define PKA_TRNG_STATUS_MONOBIT_FAIL 0x80
|
||
+#define PKA_TRNG_STATUS_RUN_FAIL 0x10
|
||
+#define PKA_TRNG_STATUS_POKER_FAIL 0x40
|
||
+
|
||
+// TRNG Alarm Counter bits
|
||
+#define PKA_TRNG_ALARMCNT_STALL_RUN_POKER 0x8000
|
||
+
|
||
+// TRNG Test bits
|
||
+#define PKA_TRNG_TEST_KNOWN_NOISE 0x20
|
||
+#define PKA_TRNG_TEST_NOISE 0x2000
|
||
+
|
||
+#endif // __PKA_CONFIG_H__
|
||
diff --git a/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_cpu.h b/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_cpu.h
|
||
new file mode 100644
|
||
index 000000000..12a368c13
|
||
--- /dev/null
|
||
+++ b/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_cpu.h
|
||
@@ -0,0 +1,72 @@
|
||
+//
|
||
+// BSD LICENSE
|
||
+//
|
||
+// Copyright(c) 2016 Mellanox Technologies, Ltd. All rights reserved.
|
||
+// All rights reserved.
|
||
+//
|
||
+// Redistribution and use in source and binary forms, with or without
|
||
+// modification, are permitted provided that the following conditions
|
||
+// are met:
|
||
+//
|
||
+// * Redistributions of source code must retain the above copyright
|
||
+// notice, this list of conditions and the following disclaimer.
|
||
+// * Redistributions in binary form must reproduce the above copyright
|
||
+// notice, this list of conditions and the following disclaimer in
|
||
+// the documentation and/or other materials provided with the
|
||
+// distribution.
|
||
+// * Neither the name of Mellanox Technologies nor the names of its
|
||
+// contributors may be used to endorse or promote products derived
|
||
+// from this software without specific prior written permission.
|
||
+//
|
||
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
+//
|
||
+
|
||
+#ifndef __PKA_CPU_H__
|
||
+#define __PKA_CPU_H__
|
||
+
|
||
+#include <linux/types.h>
|
||
+#include <linux/timex.h>
|
||
+
|
||
+#define PKA_AARCH_64
|
||
+#define MAX_CPU_NUMBER 16 // BlueField specific
|
||
+
|
||
+#define MEGA 1000000
|
||
+#define GIGA 1000000000
|
||
+
|
||
+#define MS_PER_S 1000
|
||
+#define US_PER_S 1000000
|
||
+#define NS_PER_S 1000000000
|
||
+
|
||
+// Initial guess at our CPU speed. We set this to be larger than any
|
||
+// possible real speed, so that any calculated delays will be too long,
|
||
+// rather than too short.
|
||
+//
|
||
+//*Warning: use dummy value for frequency
|
||
+//#define CPU_HZ_MAX (2 * GIGA) // Cortex A72 : 2 GHz max -> 2.5 GHz max
|
||
+#define CPU_HZ_MAX (1255 * MEGA) // CPU Freq for High/Bin Chip
|
||
+
|
||
+// YIELD hints the CPU to switch to another thread if possible
|
||
+// and executes as a NOP otherwise.
|
||
+#define pka_cpu_yield() ({ asm volatile("yield" : : : "memory"); })
|
||
+// ISB flushes the pipeline, then restarts. This is guaranteed to
|
||
+// stall the CPU a number of cycles.
|
||
+#define pka_cpu_relax() ({ asm volatile("isb" : : : "memory"); })
|
||
+
|
||
+// Processor speed in hertz; used in routines which might be called very
|
||
+// early in boot.
|
||
+static inline uint64_t pka_early_cpu_speed(void)
|
||
+{
|
||
+ return CPU_HZ_MAX;
|
||
+}
|
||
+
|
||
+#endif // __PKA_CPU_H__
|
||
diff --git a/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_debug.h b/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_debug.h
|
||
new file mode 100644
|
||
index 000000000..a44af6eb1
|
||
--- /dev/null
|
||
+++ b/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_debug.h
|
||
@@ -0,0 +1,66 @@
|
||
+//
|
||
+// BSD LICENSE
|
||
+//
|
||
+// Copyright(c) 2016 Mellanox Technologies, Ltd. All rights reserved.
|
||
+// All rights reserved.
|
||
+//
|
||
+// Redistribution and use in source and binary forms, with or without
|
||
+// modification, are permitted provided that the following conditions
|
||
+// are met:
|
||
+//
|
||
+// * Redistributions of source code must retain the above copyright
|
||
+// notice, this list of conditions and the following disclaimer.
|
||
+// * Redistributions in binary form must reproduce the above copyright
|
||
+// notice, this list of conditions and the following disclaimer in
|
||
+// the documentation and/or other materials provided with the
|
||
+// distribution.
|
||
+// * Neither the name of Mellanox Technologies nor the names of its
|
||
+// contributors may be used to endorse or promote products derived
|
||
+// from this software without specific prior written permission.
|
||
+//
|
||
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
+//
|
||
+
|
||
+#ifndef __PKA_DEBUG_H__
|
||
+#define __PKA_DEBUG_H__
|
||
+
|
||
+// PKA library bitmask. Use those bits to enable debug messages
|
||
+#define PKA_DRIVER 0x0001
|
||
+#define PKA_DEV 0x0002
|
||
+#define PKA_RING 0x0004
|
||
+#define PKA_QUEUE 0x0008
|
||
+#define PKA_MEM 0x0010
|
||
+#define PKA_USER 0x0020
|
||
+#define PKA_TESTS 0x0040
|
||
+// PKA debug mask. This indicates the debug/verbosity level.
|
||
+#define PKA_DEBUG_LIB_MASK 0x0040
|
||
+
|
||
+#define PKA_PRINT(lib, fmt, args...) \
|
||
+ ({ pr_info(#lib": "fmt, ##args); })
|
||
+
|
||
+#define PKA_ERROR(lib, fmt, args...) \
|
||
+ ({ pr_err(#lib": %s: error: "fmt, __func__, ##args); })
|
||
+
|
||
+#define PKA_DEBUG(lib, fmt, args...) \
|
||
+ ({ \
|
||
+ if (lib & PKA_DEBUG_LIB_MASK) \
|
||
+ pr_debug(#lib": %s: "fmt, __func__, ##args); \
|
||
+ })
|
||
+
|
||
+#define PKA_PANIC(lib, msg, args...) \
|
||
+ ({ \
|
||
+ pr_info(#lib": %s: panic: "msg, __func__, ##args); \
|
||
+ panic(msg, ##args); \
|
||
+ })
|
||
+
|
||
+#endif // __PKA_DEBUG_H__
|
||
diff --git a/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_dev.c b/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_dev.c
|
||
new file mode 100644
|
||
index 000000000..c90c70134
|
||
--- /dev/null
|
||
+++ b/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_dev.c
|
||
@@ -0,0 +1,2414 @@
|
||
+//
|
||
+// BSD LICENSE
|
||
+//
|
||
+// Copyright(c) 2016 Mellanox Technologies, Ltd. All rights reserved.
|
||
+// All rights reserved.
|
||
+//
|
||
+// Redistribution and use in source and binary forms, with or without
|
||
+// modification, are permitted provided that the following conditions
|
||
+// are met:
|
||
+//
|
||
+// * Redistributions of source code must retain the above copyright
|
||
+// notice, this list of conditions and the following disclaimer.
|
||
+// * Redistributions in binary form must reproduce the above copyright
|
||
+// notice, this list of conditions and the following disclaimer in
|
||
+// the documentation and/or other materials provided with the
|
||
+// distribution.
|
||
+// * Neither the name of Mellanox Technologies nor the names of its
|
||
+// contributors may be used to endorse or promote products derived
|
||
+// from this software without specific prior written permission.
|
||
+//
|
||
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
+//
|
||
+
|
||
+#include <linux/delay.h>
|
||
+#include <linux/kernel.h>
|
||
+#include <linux/slab.h>
|
||
+#include <linux/ioport.h>
|
||
+#include <linux/timex.h>
|
||
+#include <linux/vfio.h>
|
||
+
|
||
+#include "mlxbf_pka_dev.h"
|
||
+
|
||
+#define BYTES_PER_WORD 4
|
||
+#define BYTES_PER_DOUBLE_WORD 8
|
||
+
|
||
+// Personalization string "NVIDIA-MELLANOX-BLUEFIELD-TRUE_RANDOM_NUMBER_GEN"
|
||
+uint32_t pka_trng_drbg_ps_str[] =
|
||
+{
|
||
+ 0x4e564944, 0x49412d4d, 0x454c4c41, 0x4e4f582d,
|
||
+ 0x424c5545, 0x4649454c, 0x442d5452, 0x55455f52,
|
||
+ 0x414e444f, 0x4d5f4e55, 0x4d424552, 0x5f47454e
|
||
+};
|
||
+
|
||
+// Personalization string for DRBG test
|
||
+uint32_t pka_trng_drbg_test_ps_str[] =
|
||
+{
|
||
+ 0x64299d83, 0xc34d7098, 0x5bd1f51d, 0xddccfdc1,
|
||
+ 0xdd0455b7, 0x166279e5, 0x0974cb1b, 0x2f2cd100,
|
||
+ 0x59a5060a, 0xca79940d, 0xd4e29a40, 0x56b7b779
|
||
+};
|
||
+
|
||
+// First Entropy string for DRBG test
|
||
+uint32_t pka_trng_drbg_test_etpy_str1[] =
|
||
+{
|
||
+ 0xaa6bbcab, 0xef45e339, 0x136ca1e7, 0xbce1c881,
|
||
+ 0x9fa37b09, 0x63b53667, 0xb36e0053, 0xa202ed81,
|
||
+ 0x4650d90d, 0x8eed6127, 0x666f2402, 0x0dfd3af9
|
||
+};
|
||
+
|
||
+// Second Entropy string for DRBG test
|
||
+uint32_t pka_trng_drbg_test_etpy_str2[] =
|
||
+{
|
||
+ 0x35c1b7a1, 0x0154c52b, 0xd5777390, 0x226a4fdb,
|
||
+ 0x5f16080d, 0x06b68369, 0xd0c93d00, 0x3336e27f,
|
||
+ 0x1abf2c37, 0xe6ab006c, 0xa4adc6e1, 0x8e1907a2
|
||
+};
|
||
+
|
||
+// Known answer for DRBG test
|
||
+uint32_t pka_trng_drbg_test_output[] =
|
||
+{
|
||
+ 0xb663b9f1, 0x24943e13, 0x80f7dce5, 0xaba1a16f
|
||
+};
|
||
+
|
||
+pka_dev_gbl_config_t pka_gbl_config;
|
||
+
|
||
+// Global PKA shim resource info table
|
||
+static pka_dev_gbl_shim_res_info_t pka_gbl_res_tbl[PKA_MAX_NUM_IO_BLOCKS];
|
||
+
|
||
+// Start a PKA device timer.
|
||
+static uint64_t pka_dev_timer_start(uint32_t usec)
|
||
+{
|
||
+ uint64_t cur_time = get_cycles();
|
||
+ return (cur_time + (pka_early_cpu_speed() * usec) / 1000000ULL);
|
||
+}
|
||
+
|
||
+// Test a PKA device timer for completion.
|
||
+static int pka_dev_timer_done(uint64_t timer)
|
||
+{
|
||
+ return (get_cycles() >= timer);
|
||
+}
|
||
+
|
||
+// Return register base address
|
||
+static uint64_t pka_dev_get_register_base(uint64_t base, uint64_t reg_addr)
|
||
+{
|
||
+ return (base + reg_addr) & PAGE_MASK;
|
||
+}
|
||
+
|
||
+// Return register offset
|
||
+static uint64_t pka_dev_get_register_offset(uint64_t base, uint64_t reg_addr)
|
||
+{
|
||
+ return (base + reg_addr) & ~PAGE_MASK;
|
||
+}
|
||
+
|
||
+// Return word offset within io memory
|
||
+static uint64_t pka_dev_get_word_offset(uint64_t mem_base, uint64_t word_addr,
|
||
+ uint64_t mem_size)
|
||
+{
|
||
+ return (mem_base + word_addr) & (mem_size - 1);
|
||
+}
|
||
+
|
||
+static uint64_t pka_dev_io_read(void *mem_ptr, uint64_t mem_off)
|
||
+{
|
||
+ uint64_t data;
|
||
+
|
||
+ data = pka_mmio_read(mem_ptr + mem_off);
|
||
+
|
||
+ return data;
|
||
+}
|
||
+
|
||
+static void pka_dev_io_write(void *mem_ptr, uint64_t mem_off, uint64_t value)
|
||
+{
|
||
+ pka_mmio_write(mem_ptr + mem_off, value);
|
||
+}
|
||
+
|
||
+// Add the resource to the global resource table
|
||
+static int pka_dev_add_resource(pka_dev_res_t *res_ptr, uint32_t shim_idx)
|
||
+{
|
||
+ uint8_t res_cnt;
|
||
+
|
||
+ res_cnt = pka_gbl_res_tbl[shim_idx].res_cnt;
|
||
+
|
||
+ if (res_cnt >= PKA_DEV_SHIM_RES_CNT)
|
||
+ return -ENOMEM;
|
||
+
|
||
+ pka_gbl_res_tbl[shim_idx].res_tbl[res_cnt] = res_ptr;
|
||
+ pka_gbl_res_tbl[shim_idx].res_cnt++;
|
||
+
|
||
+ return 0;
|
||
+}
|
||
+
|
||
+// Remove the resource from the global resource table
|
||
+static int pka_dev_put_resource(pka_dev_res_t *res, uint32_t shim_idx)
|
||
+{
|
||
+ pka_dev_res_t *res_ptr;
|
||
+ uint8_t res_idx;
|
||
+
|
||
+ for (res_idx = 0; res_idx < PKA_DEV_SHIM_RES_CNT; res_idx++)
|
||
+ {
|
||
+ res_ptr = pka_gbl_res_tbl[shim_idx].res_tbl[res_idx];
|
||
+ if (res_ptr && strcmp(res_ptr->name, res->name) == 0)
|
||
+ {
|
||
+ pka_gbl_res_tbl[shim_idx].res_tbl[res_idx] = NULL;
|
||
+ pka_gbl_res_tbl[shim_idx].res_cnt--;
|
||
+ break;
|
||
+ }
|
||
+ }
|
||
+
|
||
+ // Check whether the resource shares the same memory map; If so,
|
||
+ // the memory map shouldn't be released.
|
||
+ for (res_idx = 0; res_idx < PKA_DEV_SHIM_RES_CNT; res_idx++)
|
||
+ {
|
||
+ res_ptr = pka_gbl_res_tbl[shim_idx].res_tbl[res_idx];
|
||
+ if (res_ptr && (res_ptr->base == res->base))
|
||
+ return -EBUSY;
|
||
+ }
|
||
+
|
||
+ return 0;
|
||
+}
|
||
+
|
||
+static void* pka_dev_get_resource_ioaddr(uint64_t res_base, uint32_t shim_idx)
|
||
+{
|
||
+ pka_dev_res_t *res_ptr;
|
||
+ uint8_t res_cnt, res_idx;
|
||
+
|
||
+ res_cnt = pka_gbl_res_tbl[shim_idx].res_cnt;
|
||
+
|
||
+ if (res_cnt == 0)
|
||
+ return NULL;
|
||
+
|
||
+ for (res_idx = 0; res_idx < res_cnt; res_idx++)
|
||
+ {
|
||
+ res_ptr = pka_gbl_res_tbl[shim_idx].res_tbl[res_idx];
|
||
+ if (res_ptr->base == res_base)
|
||
+ return res_ptr->ioaddr;
|
||
+ }
|
||
+
|
||
+ return NULL;
|
||
+}
|
||
+
|
||
+// Set PKA device resource config - - map io memory if needed.
|
||
+static int pka_dev_set_resource_config(pka_dev_shim_t *shim,
|
||
+ pka_dev_res_t *res_ptr,
|
||
+ uint64_t res_base,
|
||
+ uint64_t res_size,
|
||
+ uint64_t res_type,
|
||
+ char *res_name)
|
||
+{
|
||
+ int ret = 0;
|
||
+
|
||
+ if (res_ptr->status == PKA_DEV_RES_STATUS_MAPPED)
|
||
+ return -EPERM;
|
||
+
|
||
+ if (res_type == PKA_DEV_RES_TYPE_REG)
|
||
+ res_ptr->base = res_base;
|
||
+
|
||
+ if (res_type == PKA_DEV_RES_TYPE_MEM)
|
||
+ res_ptr->base = shim->mem_res.eip154_base + res_base;
|
||
+
|
||
+ res_ptr->size = res_size;
|
||
+ res_ptr->type = res_type;
|
||
+ res_ptr->name = res_name;
|
||
+ res_ptr->status = PKA_DEV_RES_STATUS_UNMAPPED;
|
||
+ res_ptr->ioaddr = pka_dev_get_resource_ioaddr(res_ptr->base,
|
||
+ shim->shim_id);
|
||
+ if (!res_ptr->ioaddr)
|
||
+ {
|
||
+ if (!request_mem_region(res_ptr->base, res_ptr->size, res_ptr->name))
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "failed to get io memory region\n");
|
||
+ return -EPERM;
|
||
+ }
|
||
+
|
||
+ res_ptr->ioaddr = ioremap(res_ptr->base, res_ptr->size);
|
||
+ }
|
||
+
|
||
+ res_ptr->status = PKA_DEV_RES_STATUS_MAPPED;
|
||
+
|
||
+ if (!res_ptr->ioaddr || pka_dev_add_resource(res_ptr, shim->shim_id))
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "unable to map io memory\n");
|
||
+ release_mem_region(res_ptr->base, res_ptr->size);
|
||
+ return -ENOMEM;
|
||
+ }
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+// Unset PKA device resource config - unmap io memory if needed.
|
||
+static void pka_dev_unset_resource_config(pka_dev_shim_t *shim,
|
||
+ pka_dev_res_t *res_ptr)
|
||
+{
|
||
+ int ret = -EBUSY;
|
||
+
|
||
+ if (res_ptr->status != PKA_DEV_RES_STATUS_MAPPED)
|
||
+ return;
|
||
+
|
||
+ if (res_ptr->ioaddr &&
|
||
+ ret != pka_dev_put_resource(res_ptr, shim->shim_id))
|
||
+ {
|
||
+ iounmap(res_ptr->ioaddr);
|
||
+ release_mem_region(res_ptr->base, res_ptr->size);
|
||
+ }
|
||
+
|
||
+ res_ptr->status = PKA_DEV_RES_STATUS_UNMAPPED;
|
||
+}
|
||
+
|
||
+int pka_dev_clear_ring_counters(pka_dev_ring_t *ring)
|
||
+{
|
||
+ pka_dev_shim_t *shim;
|
||
+ pka_dev_res_t *master_seq_ctrl_ptr;
|
||
+ void *master_reg_ptr;
|
||
+ uint64_t master_reg_base, master_reg_off;
|
||
+
|
||
+ shim = ring->shim;
|
||
+ master_seq_ctrl_ptr = &shim->resources.master_seq_ctrl;
|
||
+ master_reg_base = master_seq_ctrl_ptr->base;
|
||
+ master_reg_ptr = master_seq_ctrl_ptr->ioaddr;
|
||
+ master_reg_off = pka_dev_get_register_offset(master_reg_base,
|
||
+ PKA_MASTER_SEQ_CTRL_ADDR);
|
||
+
|
||
+ // push the EIP-154 master controller into reset.
|
||
+ pka_dev_io_write(master_reg_ptr, master_reg_off,
|
||
+ PKA_MASTER_SEQ_CTRL_RESET_VAL);
|
||
+
|
||
+ // clear counters.
|
||
+ pka_dev_io_write(master_reg_ptr, master_reg_off,
|
||
+ PKA_MASTER_SEQ_CTRL_CLEAR_COUNTERS_VAL);
|
||
+
|
||
+ // take the EIP-154 master controller out of reset.
|
||
+ pka_dev_io_write(master_reg_ptr, master_reg_off, 0);
|
||
+
|
||
+ return 0;
|
||
+}
|
||
+
|
||
+// Initialize ring. Set ring parameters and configure ring resources.
|
||
+// It returns 0 on success, a negative error code on failure.
|
||
+static int pka_dev_init_ring(pka_dev_ring_t *ring, uint32_t ring_id,
|
||
+ pka_dev_shim_t *shim)
|
||
+{
|
||
+ int ret = 0;
|
||
+
|
||
+ pka_dev_res_t *ring_info_words_ptr;
|
||
+ pka_dev_res_t *ring_counters_ptr;
|
||
+ pka_dev_res_t *ring_window_ram_ptr;
|
||
+
|
||
+ uint32_t ring_words_off;
|
||
+ uint32_t ring_cntrs_off;
|
||
+ uint32_t ring_mem_off;
|
||
+ uint32_t ring_mem_base;
|
||
+
|
||
+ uint32_t shim_ring_id;
|
||
+ uint8_t window_ram_split;
|
||
+
|
||
+ if (ring->status != PKA_DEV_RING_STATUS_UNDEFINED)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "PKA ring must be undefined\n");
|
||
+ return -EPERM;
|
||
+ }
|
||
+
|
||
+ if (ring_id > PKA_MAX_NUM_RINGS - 1)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "invalid ring identifier\n");
|
||
+ return -EINVAL;
|
||
+ }
|
||
+
|
||
+ ring->ring_id = ring_id;
|
||
+ ring->shim = shim;
|
||
+ ring->resources_num = PKA_MAX_NUM_RING_RESOURCES;
|
||
+
|
||
+ shim_ring_id = ring_id % PKA_MAX_NUM_IO_BLOCK_RINGS;
|
||
+ shim->rings[shim_ring_id] = ring;
|
||
+
|
||
+ // Configure ring information control/status words resource
|
||
+ ring_info_words_ptr = &ring->resources.info_words;
|
||
+ ring_words_off = shim_ring_id * PKA_RING_WORDS_SPACING;
|
||
+ ring_info_words_ptr->base = ring_words_off + shim->mem_res.eip154_base +
|
||
+ PKA_RING_WORDS_ADDR;
|
||
+ ring_info_words_ptr->size = PKA_RING_WORDS_SIZE;
|
||
+ ring_info_words_ptr->type = PKA_DEV_RES_TYPE_MEM;
|
||
+ ring_info_words_ptr->status = PKA_DEV_RES_STATUS_UNMAPPED;
|
||
+ ring_info_words_ptr->name = "PKA_RING_INFO";
|
||
+
|
||
+ // Configure ring counters registers resource
|
||
+ ring_counters_ptr = &ring->resources.counters;
|
||
+ ring_cntrs_off = shim_ring_id * PKA_RING_CNTRS_SPACING;
|
||
+ ring_counters_ptr->base = ring_cntrs_off + shim->mem_res.eip154_base +
|
||
+ PKA_RING_CNTRS_ADDR;
|
||
+ ring_counters_ptr->size = PKA_RING_CNTRS_SIZE;
|
||
+ ring_counters_ptr->type = PKA_DEV_RES_TYPE_REG;
|
||
+ ring_counters_ptr->status = PKA_DEV_RES_STATUS_UNMAPPED;
|
||
+ ring_counters_ptr->name = "PKA_RING_CNTRS";
|
||
+
|
||
+ // Configure ring window RAM resource
|
||
+ window_ram_split = shim->window_ram_split;
|
||
+ if (window_ram_split == PKA_SHIM_WINDOW_RAM_SPLIT_ENABLED)
|
||
+ {
|
||
+ ring_mem_off = shim_ring_id * PKA_RING_MEM_1_SPACING;
|
||
+ ring_mem_base = ring_mem_off + shim->mem_res.alt_wndw_ram_0_base;
|
||
+ }
|
||
+ else
|
||
+ {
|
||
+ ring_mem_off = shim_ring_id * PKA_RING_MEM_0_SPACING;
|
||
+ ring_mem_base = ring_mem_off + shim->mem_res.wndw_ram_base;
|
||
+ }
|
||
+
|
||
+ ring_window_ram_ptr = &ring->resources.window_ram;
|
||
+ ring_window_ram_ptr->base = ring_mem_base;
|
||
+ ring_window_ram_ptr->size = PKA_RING_MEM_SIZE;
|
||
+ ring_window_ram_ptr->type = PKA_DEV_RES_TYPE_MEM;
|
||
+ ring_window_ram_ptr->status = PKA_DEV_RES_STATUS_UNMAPPED;
|
||
+ ring_window_ram_ptr->name = "PKA_RING_WINDOW";
|
||
+
|
||
+ ring->ring_info = kzalloc(sizeof(pka_dev_hw_ring_info_t), GFP_KERNEL);
|
||
+ if (!ring->ring_info)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "unable to kmalloc\n");
|
||
+ kfree(ring->ring_info);
|
||
+ return -ENOMEM;
|
||
+ }
|
||
+
|
||
+ mutex_init(&ring->mutex);
|
||
+ ring->status = PKA_DEV_RING_STATUS_INITIALIZED;
|
||
+
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+// Release a given Ring.
|
||
+static int pka_dev_release_ring(pka_dev_ring_t *ring)
|
||
+{
|
||
+ int ret = 0;
|
||
+
|
||
+ pka_dev_shim_t *shim;
|
||
+ uint32_t shim_ring_id;
|
||
+
|
||
+ if (ring->status == PKA_DEV_RING_STATUS_UNDEFINED)
|
||
+ return ret;
|
||
+
|
||
+ if (ring->status == PKA_DEV_RING_STATUS_BUSY)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "PKA ring is busy\n");
|
||
+ return -EBUSY;
|
||
+ }
|
||
+
|
||
+ shim = ring->shim;
|
||
+
|
||
+ if (shim->status == PKA_SHIM_STATUS_RUNNING)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "PKA shim is running\n");
|
||
+ return -EPERM;
|
||
+ }
|
||
+
|
||
+ pka_dev_unset_resource_config(shim, &ring->resources.info_words);
|
||
+ pka_dev_unset_resource_config(shim, &ring->resources.counters);
|
||
+ pka_dev_unset_resource_config(shim, &ring->resources.window_ram);
|
||
+
|
||
+ kfree(ring->ring_info);
|
||
+
|
||
+ ring->status = PKA_DEV_RING_STATUS_UNDEFINED;
|
||
+ shim_ring_id = ring->ring_id % PKA_MAX_NUM_IO_BLOCK_RINGS;
|
||
+ shim->rings[shim_ring_id] = NULL;
|
||
+ shim->rings_num--;
|
||
+
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+// Partition the window RAM for a given PKA ring. Here we statically divide
|
||
+// the 16K memory region into three partitions: First partition is reserved
|
||
+// for command descriptor ring (1K), second partition is reserved for result
|
||
+// descriptor ring (1K), and the remaining 14K are reserved for vector data.
|
||
+// Through this memroy partition scheme, command/result descriptor rings hold
|
||
+// a total of 1KB/64B = 16 descriptors each. The adresses for the rings start
|
||
+// at offset 0x3800. Also note that it is possible to have rings full while
|
||
+// the vector data can support more data, the opposite can also happen, but
|
||
+// it is not suitable. For instance ECC point multiplication requires 8 input
|
||
+// vectors and 2 output vectors, a total of 10 vectors. If each vector has a
|
||
+// length of 24 words (24x4B = 96B), we can process 14KB/960B = 14 operations
|
||
+// which is close to 16 the total descriptors supported by rings. On the other
|
||
+// hand, using 12K vector data region, allows to process only 12 operations,
|
||
+// while rings can hold 32 descriptors (ring usage is significantly low).
|
||
+// For ECDSA verify, we have 12 vectors which require 1152B, with 14KB we can
|
||
+// handle 12 operations, against 10 operations with 12KB vector data memory.
|
||
+// We believe that the aformentionned memory partition help us to leverage
|
||
+// the trade-off between supported descriptors and required vectors. Note
|
||
+// that these examples gives approximative values and does not include buffer
|
||
+// word padding across vectors.
|
||
+//
|
||
+// The function also writes the result descriptor rings base addresses, size
|
||
+// and type, and initialize the read and write pointers and statistics. It
|
||
+// returns 0 on success, a negative error code on failure.
|
||
+//
|
||
+// This function must be called once per ring, at initialization before any
|
||
+// other fonctions are called.
|
||
+static int pka_dev_partition_mem(pka_dev_ring_t *ring)
|
||
+{
|
||
+ int ret = 0;
|
||
+
|
||
+ pka_dev_shim_t *shim;
|
||
+ pka_dev_hw_ring_info_t *ring_info;
|
||
+
|
||
+ uint32_t ring_mem_base;
|
||
+ uint32_t ring_mem_size;
|
||
+ uint32_t data_mem_base;
|
||
+ uint32_t data_mem_size;
|
||
+
|
||
+ uint64_t cmd_desc_ring_base;
|
||
+ uint32_t cmd_desc_ring_size;
|
||
+ uint64_t rslt_desc_ring_base;
|
||
+ uint32_t rslt_desc_ring_size;
|
||
+
|
||
+ uint16_t num_cmd_desc;
|
||
+ uint16_t host_desc_size;
|
||
+ uint8_t ring_in_order;
|
||
+
|
||
+ uint64_t window_ram_base;
|
||
+ uint64_t window_ram_size;
|
||
+
|
||
+ shim = ring->shim;
|
||
+
|
||
+ if (!ring->shim ||
|
||
+ ring->status != PKA_DEV_RING_STATUS_INITIALIZED)
|
||
+ return -EPERM;
|
||
+
|
||
+ ring_in_order = shim->ring_type;
|
||
+ window_ram_base = ring->resources.window_ram.base;
|
||
+ window_ram_size = ring->resources.window_ram.size;
|
||
+ // Partition ring memory. Give ring pair (cmmd descriptor ring and rslt
|
||
+ // descriptor ring) an equal portion of the memory. The cmmd descriptor
|
||
+ // ring and result descriptor ring are used as "non-overlapping" ring.
|
||
+ // Currently set aside 1/8 of the window RAM for command/result descriptor
|
||
+ // rings - giving a total of 1K/64B = 16 descriptors per ring.
|
||
+ // The remaining memory is "Data Memory" - i.e. memory to hold the command
|
||
+ // operands and results - also called input/output vectors (in all cases
|
||
+ // these vectors are just single large integers - often in the range of
|
||
+ // hundreds to thousands of bits long).
|
||
+ ring_mem_size = PKA_WINDOW_RAM_RING_MEM_SIZE / 2;
|
||
+ data_mem_size = PKA_WINDOW_RAM_DATA_MEM_SIZE;
|
||
+ data_mem_base = window_ram_base;
|
||
+ ring_mem_base = data_mem_base + data_mem_size;
|
||
+
|
||
+ num_cmd_desc = ring_mem_size / CMD_DESC_SIZE;
|
||
+ host_desc_size = CMD_DESC_SIZE / BYTES_PER_WORD;
|
||
+
|
||
+ cmd_desc_ring_size = num_cmd_desc * CMD_DESC_SIZE;
|
||
+ rslt_desc_ring_size = cmd_desc_ring_size;
|
||
+
|
||
+ ring->num_cmd_desc = num_cmd_desc;
|
||
+
|
||
+ // The command and result descriptor rings may be placed at different
|
||
+ // (non-overlapping) locations in Window RAM memory space. PKI command
|
||
+ // interface: Most of the functionality is defined by the EIP-154 master
|
||
+ // firmware on the EIP-154 master controller Sequencer.
|
||
+ cmd_desc_ring_base = ring_mem_base;
|
||
+ rslt_desc_ring_base = ring_mem_base + cmd_desc_ring_size;
|
||
+
|
||
+ cmd_desc_ring_base =
|
||
+ PKA_RING_MEM_ADDR(window_ram_base, shim->mem_res.wndw_ram_off_mask,
|
||
+ cmd_desc_ring_base, window_ram_size);
|
||
+ rslt_desc_ring_base =
|
||
+ PKA_RING_MEM_ADDR(window_ram_base, shim->mem_res.wndw_ram_off_mask,
|
||
+ rslt_desc_ring_base, window_ram_size);
|
||
+
|
||
+ ring_info = ring->ring_info;
|
||
+ // Fill ring information.
|
||
+ ring_info->cmmd_base = cmd_desc_ring_base;
|
||
+ ring_info->rslt_base = rslt_desc_ring_base;
|
||
+ ring_info->size = num_cmd_desc - 1;
|
||
+ ring_info->host_desc_size = host_desc_size;
|
||
+ ring_info->in_order = ring_in_order;
|
||
+ ring_info->cmmd_rd_ptr = 0x0;
|
||
+ ring_info->rslt_wr_ptr = 0x0;
|
||
+ ring_info->cmmd_rd_stats = 0x0;
|
||
+ ring_info->rslt_wr_stats = 0x0;
|
||
+
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+// Write the ring base address, ring size and type, and initialize (clear)
|
||
+// the read and write pointers and statistics.
|
||
+static int pka_dev_write_ring_info(pka_dev_res_t *buffer_ram_ptr,
|
||
+ uint8_t ring_id,
|
||
+ uint32_t ring_cmmd_base_val,
|
||
+ uint32_t ring_rslt_base_val,
|
||
+ uint32_t ring_size_type_val)
|
||
+{
|
||
+ uint32_t ring_spacing;
|
||
+ uint64_t word_off;
|
||
+ int ret = 0;
|
||
+
|
||
+ if (buffer_ram_ptr->status != PKA_DEV_RES_STATUS_MAPPED ||
|
||
+ buffer_ram_ptr->type != PKA_DEV_RES_TYPE_MEM)
|
||
+ return -EPERM;
|
||
+
|
||
+ PKA_DEBUG(PKA_DEV, "Writing ring information control/status words\n");
|
||
+
|
||
+ ring_spacing = ring_id * PKA_RING_WORDS_SPACING;
|
||
+
|
||
+ // Write the command ring base address that the EIP-154
|
||
+ // master firmware uses with the command ring read pointer
|
||
+ // to get command descriptors from the Host ring. After the
|
||
+ // initialization, although the word is writeable it should
|
||
+ // be regarded as read-only.
|
||
+ word_off = pka_dev_get_word_offset(buffer_ram_ptr->base,
|
||
+ RING_CMMD_BASE_0_ADDR + ring_spacing,
|
||
+ PKA_BUFFER_RAM_SIZE);
|
||
+ pka_dev_io_write(buffer_ram_ptr->ioaddr, word_off, ring_cmmd_base_val);
|
||
+
|
||
+ // Write the result ring base address that the EIP-154
|
||
+ // master firmware uses with the result ring write pointer
|
||
+ // to put the result descriptors in the Host ring. After
|
||
+ // the initialization, although the word is writeable it
|
||
+ // should be regarded as read-only.
|
||
+ word_off = pka_dev_get_word_offset(buffer_ram_ptr->base,
|
||
+ RING_RSLT_BASE_0_ADDR + ring_spacing,
|
||
+ PKA_BUFFER_RAM_SIZE);
|
||
+ pka_dev_io_write(buffer_ram_ptr->ioaddr, word_off, ring_rslt_base_val);
|
||
+
|
||
+ // Write the ring size (number of descriptors), the size of
|
||
+ // the descriptor and the result reporting scheme. After the
|
||
+ // initialization, although the word is writeable it should
|
||
+ // be regarded as read-only.
|
||
+ word_off = pka_dev_get_word_offset(buffer_ram_ptr->base,
|
||
+ RING_SIZE_TYPE_0_ADDR + ring_spacing,
|
||
+ PKA_BUFFER_RAM_SIZE);
|
||
+ pka_dev_io_write(buffer_ram_ptr->ioaddr, word_off, ring_size_type_val);
|
||
+
|
||
+ // Write the command and result ring indices that the EIP-154
|
||
+ // master firmware uses. This word should be written with zero
|
||
+ // when the ring information is initialized. After the
|
||
+ // initialization, although the word is writeable it should be
|
||
+ // regarded as read-only.
|
||
+ word_off = pka_dev_get_word_offset(buffer_ram_ptr->base,
|
||
+ RING_RW_PTRS_0_ADDR + ring_spacing,
|
||
+ PKA_BUFFER_RAM_SIZE);
|
||
+ pka_dev_io_write(buffer_ram_ptr->ioaddr, word_off, 0);
|
||
+
|
||
+ // Write the ring statistics (two 16-bit counters, one for
|
||
+ // commands and one for results) from EIP-154 master firmware
|
||
+ // point of view. This word should be written with zero when
|
||
+ // the ring information is initialized. After the initializa-
|
||
+ // -tion, although the word is writeable it should be regarded
|
||
+ // as read-only.
|
||
+ word_off = pka_dev_get_word_offset(buffer_ram_ptr->base,
|
||
+ RING_RW_STAT_0_ADDR + ring_spacing,
|
||
+ PKA_BUFFER_RAM_SIZE);
|
||
+ pka_dev_io_write(buffer_ram_ptr->ioaddr, word_off, 0);
|
||
+
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+// Set up the control/status words. Upon a PKI command the EIP-154 master
|
||
+// firmware will read and partially update the ring information.
|
||
+static int pka_dev_set_ring_info(pka_dev_ring_t *ring)
|
||
+{
|
||
+ int ret = 0;
|
||
+
|
||
+ pka_dev_shim_t *shim;
|
||
+ pka_dev_hw_ring_info_t *ring_info;
|
||
+ pka_dev_res_t *buffer_ram_ptr;
|
||
+
|
||
+ uint32_t ring_cmmd_base_val;
|
||
+ uint32_t ring_rslt_base_val;
|
||
+ uint32_t ring_size_type_val;
|
||
+
|
||
+ uint8_t ring_id;
|
||
+
|
||
+ shim = ring->shim;
|
||
+ // Ring info configuration MUST be done when the PKA ring
|
||
+ // is initilaized.
|
||
+ if ((shim->status != PKA_SHIM_STATUS_INITIALIZED &&
|
||
+ shim->status != PKA_SHIM_STATUS_RUNNING &&
|
||
+ shim->status != PKA_SHIM_STATUS_STOPPED) ||
|
||
+ ring->status != PKA_DEV_RING_STATUS_INITIALIZED)
|
||
+ return -EPERM;
|
||
+
|
||
+ ring_id = ring->ring_id % PKA_MAX_NUM_IO_BLOCK_RINGS;
|
||
+
|
||
+ // Partition ring memory.
|
||
+ ret = pka_dev_partition_mem(ring);
|
||
+ if (ret)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "failed to initialize ring memory\n");
|
||
+ return ret;
|
||
+ }
|
||
+
|
||
+ // Fill ring infomation.
|
||
+ ring_info = ring->ring_info;
|
||
+
|
||
+ ring_cmmd_base_val = ring_info->cmmd_base;
|
||
+ ring_rslt_base_val = ring_info->rslt_base;
|
||
+
|
||
+ ring_size_type_val = (ring_info->in_order & 0x0001) << 31;
|
||
+ ring_size_type_val |= (ring_info->host_desc_size & 0x03FF) << 18;
|
||
+ ring_size_type_val |= (ring->num_cmd_desc - 1) & 0xFFFF;
|
||
+
|
||
+ buffer_ram_ptr = &shim->resources.buffer_ram;
|
||
+ // Write ring information status/control words in the PKA Buffer RAM
|
||
+ ret = pka_dev_write_ring_info(buffer_ram_ptr, ring_id, ring_cmmd_base_val,
|
||
+ ring_rslt_base_val, ring_size_type_val);
|
||
+ if (ret)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "failed to wirte ring information\n");
|
||
+ return ret;
|
||
+ }
|
||
+
|
||
+ ring->status = PKA_DEV_RING_STATUS_READY;
|
||
+
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+// Create shim. Set shim parameters and configure shim resources.
|
||
+// It returns 0 on success, a negative error code on failure.
|
||
+static int pka_dev_create_shim(pka_dev_shim_t *shim, uint32_t shim_id,
|
||
+ uint8_t split, struct pka_dev_mem_res *mem_res)
|
||
+{
|
||
+ int ret = 0;
|
||
+
|
||
+ uint64_t reg_base;
|
||
+ uint64_t reg_size;
|
||
+
|
||
+ if (shim->status == PKA_SHIM_STATUS_CREATED)
|
||
+ return ret;
|
||
+
|
||
+ if (shim->status != PKA_SHIM_STATUS_UNDEFINED)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "PKA device must be undefined\n");
|
||
+ return -EPERM;
|
||
+ }
|
||
+
|
||
+ if (shim_id > PKA_MAX_NUM_IO_BLOCKS - 1)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "invalid shim identifier\n");
|
||
+ return -EINVAL;
|
||
+ }
|
||
+
|
||
+ shim->shim_id = shim_id;
|
||
+ shim->mem_res = *mem_res;
|
||
+
|
||
+ if (split)
|
||
+ shim->window_ram_split = PKA_SHIM_WINDOW_RAM_SPLIT_ENABLED;
|
||
+ else
|
||
+ shim->window_ram_split = PKA_SHIM_WINDOW_RAM_SPLIT_DISABLED;
|
||
+
|
||
+ shim->ring_type = PKA_RING_TYPE_IN_ORDER;
|
||
+ shim->ring_priority = PKA_RING_OPTIONS_PRIORITY;
|
||
+ shim->rings_num = PKA_MAX_NUM_IO_BLOCK_RINGS;
|
||
+ shim->rings = kzalloc(sizeof(pka_dev_ring_t) * shim->rings_num,
|
||
+ GFP_KERNEL);
|
||
+ if (!shim->rings)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "unable to kmalloc\n");
|
||
+ return -ENOMEM;
|
||
+ }
|
||
+
|
||
+ // Set PKA device Buffer RAM config
|
||
+ ret = pka_dev_set_resource_config(shim, &shim->resources.buffer_ram,
|
||
+ PKA_BUFFER_RAM_BASE,
|
||
+ PKA_BUFFER_RAM_SIZE,
|
||
+ PKA_DEV_RES_TYPE_MEM,
|
||
+ "PKA_BUFFER_RAM");
|
||
+ if (ret)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "unable to set Buffer RAM config\n");
|
||
+ return ret;
|
||
+ }
|
||
+
|
||
+ // Set PKA device Master Program RAM config
|
||
+ ret = pka_dev_set_resource_config(shim, &shim->resources.master_prog_ram,
|
||
+ PKA_MASTER_PROG_RAM_BASE,
|
||
+ PKA_MASTER_PROG_RAM_SIZE,
|
||
+ PKA_DEV_RES_TYPE_MEM,
|
||
+ "PKA_MASTER_PROG_RAM");
|
||
+ if (ret)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "unable to set Master Program RAM config\n");
|
||
+ return ret;
|
||
+ }
|
||
+
|
||
+ // Set PKA device Master Controller register
|
||
+ reg_size = PAGE_SIZE;
|
||
+ reg_base = pka_dev_get_register_base(shim->mem_res.eip154_base,
|
||
+ PKA_MASTER_SEQ_CTRL_ADDR);
|
||
+ ret = pka_dev_set_resource_config(shim, &shim->resources.master_seq_ctrl,
|
||
+ reg_base, reg_size,
|
||
+ PKA_DEV_RES_TYPE_REG,
|
||
+ "PKA_MASTER_SEQ_CTRL");
|
||
+ if (ret)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "unable to set Master Controller register "
|
||
+ "config\n");
|
||
+ return ret;
|
||
+ }
|
||
+
|
||
+ // Set PKA device AIC registers
|
||
+ reg_size = PAGE_SIZE;
|
||
+ reg_base = pka_dev_get_register_base(shim->mem_res.eip154_base,
|
||
+ AIC_POL_CTRL_ADDR);
|
||
+ ret = pka_dev_set_resource_config(shim, &shim->resources.aic_csr,
|
||
+ reg_base, reg_size,
|
||
+ PKA_DEV_RES_TYPE_REG,
|
||
+ "PKA_AIC_CSR");
|
||
+ if (ret)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "unable to set AIC registers config\n");
|
||
+ return ret;
|
||
+ }
|
||
+
|
||
+ // Set PKA device TRNG registers
|
||
+ reg_size = PAGE_SIZE;
|
||
+ reg_base = pka_dev_get_register_base(shim->mem_res.eip154_base,
|
||
+ TRNG_OUTPUT_0_ADDR);
|
||
+ ret = pka_dev_set_resource_config(shim, &shim->resources.trng_csr,
|
||
+ reg_base, reg_size,
|
||
+ PKA_DEV_RES_TYPE_REG,
|
||
+ "PKA_TRNG_CSR");
|
||
+ if (ret)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "unable to setup the TRNG\n");
|
||
+ return ret;
|
||
+ }
|
||
+
|
||
+ // Set PKA device 'glue' logic registers
|
||
+ reg_size = PAGE_SIZE;
|
||
+ reg_base = pka_dev_get_register_base(shim->mem_res.csr_base,
|
||
+ PKA_INT_MASK_ADDR);
|
||
+ ret = pka_dev_set_resource_config(shim, &shim->resources.ext_csr,
|
||
+ reg_base, reg_size,
|
||
+ PKA_DEV_RES_TYPE_REG,
|
||
+ "PKA_EXT_CSR");
|
||
+ if (ret)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "unable to setup the MiCA specific registers\n");
|
||
+ return ret;
|
||
+ }
|
||
+
|
||
+ shim->status = PKA_SHIM_STATUS_CREATED;
|
||
+
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+// Delete shim and unset shim resources.
|
||
+static int pka_dev_delete_shim(pka_dev_shim_t *shim)
|
||
+{
|
||
+ int ret = 0;
|
||
+ pka_dev_res_t *res_buffer_ram, *res_master_prog_ram;
|
||
+ pka_dev_res_t *res_master_seq_ctrl, *res_aic_csr, *res_trng_csr;
|
||
+
|
||
+ PKA_DEBUG(PKA_DEV, "PKA device delete shim\n");
|
||
+
|
||
+ if (shim->status == PKA_SHIM_STATUS_UNDEFINED)
|
||
+ return ret;
|
||
+
|
||
+ if (shim->status != PKA_SHIM_STATUS_FINALIZED &&
|
||
+ shim->status != PKA_SHIM_STATUS_CREATED)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "PKA device status must be finalized\n");
|
||
+ return -EPERM;
|
||
+ }
|
||
+
|
||
+ res_buffer_ram = &shim->resources.buffer_ram;
|
||
+ res_master_prog_ram = &shim->resources.master_prog_ram;
|
||
+ res_master_seq_ctrl = &shim->resources.master_seq_ctrl;
|
||
+ res_aic_csr = &shim->resources.aic_csr;
|
||
+ res_trng_csr = &shim->resources.trng_csr;
|
||
+
|
||
+ pka_dev_unset_resource_config(shim, res_buffer_ram);
|
||
+ pka_dev_unset_resource_config(shim, res_master_prog_ram);
|
||
+ pka_dev_unset_resource_config(shim, res_master_seq_ctrl);
|
||
+ pka_dev_unset_resource_config(shim, res_aic_csr);
|
||
+ pka_dev_unset_resource_config(shim, res_trng_csr);
|
||
+
|
||
+ kfree(shim->rings);
|
||
+
|
||
+ shim->status = PKA_SHIM_STATUS_UNDEFINED;
|
||
+
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+static int pka_dev_config_aic_interrupts(pka_dev_res_t *aic_csr_ptr)
|
||
+{
|
||
+ int ret = 0;
|
||
+
|
||
+ uint64_t csr_reg_base, csr_reg_off;
|
||
+ void *csr_reg_ptr;
|
||
+
|
||
+ if (aic_csr_ptr->status != PKA_DEV_RES_STATUS_MAPPED ||
|
||
+ aic_csr_ptr->type != PKA_DEV_RES_TYPE_REG)
|
||
+ return -EPERM;
|
||
+
|
||
+ PKA_DEBUG(PKA_DEV, "configure the AIC so that all interrupts "
|
||
+ "are properly recognized\n");
|
||
+
|
||
+ csr_reg_base = aic_csr_ptr->base;
|
||
+ csr_reg_ptr = aic_csr_ptr->ioaddr;
|
||
+
|
||
+ // Configure the signal polarity for each interrupt.
|
||
+ csr_reg_off =
|
||
+ pka_dev_get_register_offset(csr_reg_base, AIC_POL_CTRL_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, PKA_AIC_POL_CTRL_REG_VAL);
|
||
+
|
||
+ // Configure the signal type for each interrupt
|
||
+ csr_reg_off =
|
||
+ pka_dev_get_register_offset(csr_reg_base, AIC_TYPE_CTRL_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, PKA_AIC_TYPE_CTRL_REG_VAL);
|
||
+
|
||
+ // Set the enable control register
|
||
+ csr_reg_off =
|
||
+ pka_dev_get_register_offset(csr_reg_base, AIC_ENABLE_CTRL_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, PKA_AIC_ENABLE_CTRL_REG_VAL);
|
||
+
|
||
+ // Set the enabled status register
|
||
+ csr_reg_off =
|
||
+ pka_dev_get_register_offset(csr_reg_base, AIC_ENABLED_STAT_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, PKA_AIC_ENABLE_STAT_REG_VAL);
|
||
+
|
||
+ // *TBD* Write PKA_INT_MASK_RESET with 1's for each interrupt bit
|
||
+ // to allow them to propagate out the interrupt controller.
|
||
+ // EIP-154 interrupts can still be programmed and observed via polling
|
||
+ // regardless of whether PKA_INT_MASK is masking out the interrupts or
|
||
+ // not. The mask is for system propagation, i.e. propagate to the GIC.
|
||
+ // Bit positions are as follows:
|
||
+ // Bit 10 - parity_error_irq (non EIP-154 interrupt)
|
||
+ // Bit 9 - trng_irq
|
||
+ // Bit 8 - pka_master_irq
|
||
+ // Bits 7:4 - pka_queue_*_result_irq
|
||
+ // Bits 3:0 - pka_queue_*_empty_irq
|
||
+
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+static int pka_dev_load_image(pka_dev_res_t *res_ptr, const uint32_t *data_buf,
|
||
+ uint32_t size)
|
||
+{
|
||
+ uint64_t data_rd;
|
||
+ int mismatches;
|
||
+ int i, j, ret = 0;
|
||
+
|
||
+ if (res_ptr->status != PKA_DEV_RES_STATUS_MAPPED ||
|
||
+ res_ptr->type != PKA_DEV_RES_TYPE_MEM)
|
||
+ return -EPERM;
|
||
+
|
||
+ // Note that the image size is in word of 4 bytes and memory 'writes'
|
||
+ // are 8 bytes aligned, thus the memory start address and end address
|
||
+ // are shifted.
|
||
+ if (res_ptr->size < (size * BYTES_PER_WORD) << 1)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "image size greater than memory size\n");
|
||
+ return -EINVAL;
|
||
+ }
|
||
+
|
||
+ for (i = 0, j = 0; i < size; i++, j += BYTES_PER_DOUBLE_WORD)
|
||
+ pka_dev_io_write(res_ptr->ioaddr, j,
|
||
+ (uint64_t) data_buf[i]);
|
||
+
|
||
+ mismatches = 0;
|
||
+ PKA_DEBUG(PKA_DEV, "PKA DEV: verifying image (%u words)\n", size);
|
||
+ for (i = 0, j = 0; i < size; i++, j += BYTES_PER_DOUBLE_WORD)
|
||
+ {
|
||
+ data_rd = pka_dev_io_read(res_ptr->ioaddr, j);
|
||
+ if (data_rd != (uint64_t) data_buf[i])
|
||
+ {
|
||
+ mismatches += 1;
|
||
+ PKA_DEBUG(PKA_DEV, "error while loading image: "
|
||
+ "addr:0x%llx expected data: 0x%x actual data: 0x%llx\n",
|
||
+ res_ptr->base + j,
|
||
+ data_buf[i], data_rd);
|
||
+ }
|
||
+ }
|
||
+
|
||
+ if (mismatches > 0)
|
||
+ {
|
||
+ PKA_PANIC(PKA_DEV, "error while loading image: mismatches: %d\n",
|
||
+ mismatches);
|
||
+ return -EAGAIN;
|
||
+ }
|
||
+
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+static int
|
||
+pka_dev_config_master_seq_controller(pka_dev_shim_t *shim,
|
||
+ pka_dev_res_t *master_seq_ctrl_ptr)
|
||
+{
|
||
+ pka_dev_res_t *aic_csr_ptr, *master_prog_ram;
|
||
+ void *aic_reg_ptr, *master_reg_ptr;
|
||
+
|
||
+ uint64_t aic_reg_base, aic_reg_off;
|
||
+ uint64_t master_reg_base, master_reg_off;
|
||
+
|
||
+ const uint32_t *boot_img_ptr, *master_img_ptr;
|
||
+ uint32_t boot_img_size, master_img_size;
|
||
+
|
||
+ uint32_t pka_master_irq;
|
||
+
|
||
+ uint64_t timer;
|
||
+ uint8_t status_bits;
|
||
+ uint8_t shim_fw_id;
|
||
+ int ret = 0;
|
||
+
|
||
+ if (master_seq_ctrl_ptr->status != PKA_DEV_RES_STATUS_MAPPED ||
|
||
+ master_seq_ctrl_ptr->type != PKA_DEV_RES_TYPE_REG)
|
||
+ return -EPERM;
|
||
+
|
||
+ master_reg_base = master_seq_ctrl_ptr->base;
|
||
+ master_reg_ptr = master_seq_ctrl_ptr->ioaddr;
|
||
+ master_reg_off = pka_dev_get_register_offset(master_reg_base,
|
||
+ PKA_MASTER_SEQ_CTRL_ADDR);
|
||
+
|
||
+ PKA_DEBUG(PKA_DEV, "push the EIP-154 master controller into reset\n");
|
||
+ pka_dev_io_write(master_reg_ptr, master_reg_off,
|
||
+ PKA_MASTER_SEQ_CTRL_RESET_VAL);
|
||
+
|
||
+ shim_fw_id = pka_firmware_get_id();
|
||
+
|
||
+ // Load boot image into PKA_MASTER_PROG_RAM
|
||
+ boot_img_size = pka_firmware_array[shim_fw_id].boot_img_size;
|
||
+ PKA_DEBUG(PKA_DEV, "loading boot image (%d words)\n", boot_img_size);
|
||
+
|
||
+ boot_img_ptr = pka_firmware_array[shim_fw_id].boot_img;
|
||
+ ret = pka_dev_load_image(&shim->resources.master_prog_ram,
|
||
+ boot_img_ptr, boot_img_size);
|
||
+ if (ret)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "failed to load boot image\n");
|
||
+ return ret;
|
||
+ }
|
||
+
|
||
+ PKA_DEBUG(PKA_DEV, "take the EIP-154 master controller out of reset\n");
|
||
+ pka_dev_io_write(master_reg_ptr, master_reg_off, 0);
|
||
+
|
||
+ // Poll for 'pka_master_irq' bit in AIC_ENABLED_STAT register to indicate
|
||
+ // sequencer is initialized
|
||
+ aic_csr_ptr = &shim->resources.aic_csr;
|
||
+ if (aic_csr_ptr->status != PKA_DEV_RES_STATUS_MAPPED ||
|
||
+ aic_csr_ptr->type != PKA_DEV_RES_TYPE_REG)
|
||
+ return -EPERM;
|
||
+
|
||
+ aic_reg_base = aic_csr_ptr->base;
|
||
+ aic_reg_ptr = aic_csr_ptr->ioaddr;
|
||
+ aic_reg_off = pka_dev_get_register_offset(aic_reg_base,
|
||
+ AIC_ENABLED_STAT_ADDR);
|
||
+
|
||
+ pka_master_irq = 0;
|
||
+ PKA_DEBUG(PKA_DEV, "poll for 'pka_master_irq'\n");
|
||
+ timer = pka_dev_timer_start(100000); // 100 msec
|
||
+ while (pka_master_irq == 0)
|
||
+ {
|
||
+ pka_master_irq |= pka_dev_io_read(aic_reg_ptr, aic_reg_off)
|
||
+ & PKA_AIC_ENABLED_STAT_MASTER_IRQ_MASK;
|
||
+ if (pka_dev_timer_done(timer))
|
||
+ {
|
||
+ //PKA_PANIC(PKA_DEV, "failed to load firmware\n");
|
||
+ return -EAGAIN;
|
||
+ }
|
||
+ }
|
||
+ PKA_DEBUG(PKA_DEV, "'pka_master_irq' is active\n");
|
||
+
|
||
+ // Verify that the EIP-154 boot firmware has finished without errors
|
||
+ status_bits = (uint8_t)((pka_dev_io_read(master_reg_ptr,
|
||
+ master_reg_off) >> PKA_MASTER_SEQ_CTRL_MASTER_IRQ_BIT)
|
||
+ & 0xff);
|
||
+ if (status_bits != PKA_MASTER_SEQ_CTRL_STATUS_BYTE)
|
||
+ {
|
||
+ // If the error indication (bit [15]) is set,
|
||
+ // the EIP-154 boot firmware encountered an error and is stopped.
|
||
+ if ((status_bits >> (PKA_MASTER_SEQ_CTRL_MASTER_IRQ_BIT - 1)) == 1)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV,
|
||
+ "boot firmware encountered an error 0x%x and is stopped\n",
|
||
+ status_bits);
|
||
+ return -EAGAIN;
|
||
+ }
|
||
+ PKA_DEBUG(PKA_DEV, "boot firmware in progress %d", status_bits);
|
||
+ }
|
||
+ PKA_DEBUG(PKA_DEV, "boot firmware has finished successfully\n");
|
||
+
|
||
+ PKA_DEBUG(PKA_DEV, "push the EIP-154 master controller into reset\n");
|
||
+ pka_dev_io_write(master_reg_ptr, master_reg_off,
|
||
+ PKA_MASTER_SEQ_CTRL_RESET_VAL);
|
||
+
|
||
+ // Load Master image into PKA_MASTER_PROG_RAM
|
||
+ master_img_size = pka_firmware_array[shim_fw_id].master_img_size;
|
||
+ PKA_DEBUG(PKA_DEV, "loading master image (%d words)\n",
|
||
+ master_img_size);
|
||
+ master_prog_ram = &shim->resources.master_prog_ram;
|
||
+ master_img_ptr = pka_firmware_array[shim_fw_id].master_img;
|
||
+ ret = pka_dev_load_image(master_prog_ram, master_img_ptr,
|
||
+ master_img_size);
|
||
+ if (ret)
|
||
+ {
|
||
+ pr_err("PKA DEV: failed to load master image\n");
|
||
+ return ret;
|
||
+ }
|
||
+
|
||
+ PKA_DEBUG(PKA_DEV, "take the EIP-154 master controller out of reset\n");
|
||
+ pka_dev_io_write(master_reg_ptr, master_reg_off, 0);
|
||
+
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+// Configure ring options.
|
||
+static int pka_dev_config_ring_options(pka_dev_res_t *buffer_ram_ptr,
|
||
+ uint32_t rings_num, uint8_t ring_priority)
|
||
+{
|
||
+ uint64_t control_word;
|
||
+ uint64_t word_off;
|
||
+ int ret = 0;
|
||
+
|
||
+ if (buffer_ram_ptr->status != PKA_DEV_RES_STATUS_MAPPED ||
|
||
+ buffer_ram_ptr->type != PKA_DEV_RES_TYPE_MEM)
|
||
+ return -EPERM;
|
||
+
|
||
+ if (rings_num > PKA_MAX_NUM_RINGS ||
|
||
+ rings_num < 1)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "invalid rings number\n");
|
||
+ return -EINVAL;
|
||
+ }
|
||
+
|
||
+ PKA_DEBUG(PKA_DEV, "Configure PKA ring options control word\n");
|
||
+
|
||
+ // Write PKA_RING_OPTIONS control word located in the PKA_BUFFER_RAM. The
|
||
+ // value of this word is determined by the PKA I/O block (Shim). Set the
|
||
+ // number of implemented command/result ring pairs that is available in
|
||
+ // this EIP-154, encoded as binary value, which is 4.
|
||
+ control_word = (uint64_t) 0x0;
|
||
+ control_word |= ring_priority & 0xff;
|
||
+ control_word |= ((rings_num - 1) << 8) & 0xff00;
|
||
+ control_word |= (PKA_RING_OPTIONS_SIGNATURE_BYTE << 24) & 0xff000000;
|
||
+ word_off = pka_dev_get_word_offset(buffer_ram_ptr->base,
|
||
+ PKA_RING_OPTIONS_ADDR, PKA_BUFFER_RAM_SIZE);
|
||
+ pka_dev_io_write(buffer_ram_ptr->ioaddr, word_off, control_word);
|
||
+
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+static int pka_dev_config_trng_clk(pka_dev_res_t *aic_csr_ptr)
|
||
+{
|
||
+ int ret = 0;
|
||
+
|
||
+ uint64_t csr_reg_base, csr_reg_off;
|
||
+ uint64_t timer;
|
||
+ uint32_t trng_clk_en = 0;
|
||
+ void *csr_reg_ptr;
|
||
+
|
||
+ if (aic_csr_ptr->status != PKA_DEV_RES_STATUS_MAPPED ||
|
||
+ aic_csr_ptr->type != PKA_DEV_RES_TYPE_REG)
|
||
+ return -EPERM;
|
||
+
|
||
+ PKA_DEBUG(PKA_DEV, "Turn on TRNG clock\n");
|
||
+
|
||
+ csr_reg_base = aic_csr_ptr->base;
|
||
+ csr_reg_ptr = aic_csr_ptr->ioaddr;
|
||
+
|
||
+ // Enable the TRNG clock in PKA_CLK_FORCE.
|
||
+ // In general, this register should be left in its default state of all
|
||
+ // zeroes! Only when the TRNG is directly controlled via the Host slave
|
||
+ // interface, the engine needs to be turned on using the ’trng_clk_on’
|
||
+ // bit in this register. In case the TRNG is controlled via internal
|
||
+ // firmware, this is not required.
|
||
+ csr_reg_off =
|
||
+ pka_dev_get_register_offset(csr_reg_base, PKA_CLK_FORCE_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, PKA_CLK_FORCE_TRNG_ON);
|
||
+ // Check whether the system clock for TRNG engine is enabled. The clock
|
||
+ // MUST be running to provide access to the TRNG.
|
||
+ timer = pka_dev_timer_start(100000); // 100 msec
|
||
+ while (trng_clk_en == 0)
|
||
+ {
|
||
+ trng_clk_en |= pka_dev_io_read(csr_reg_ptr, csr_reg_off)
|
||
+ & PKA_CLK_FORCE_TRNG_ON;
|
||
+ if (pka_dev_timer_done(timer))
|
||
+ {
|
||
+ PKA_DEBUG(PKA_DEV, "Failed to enable TRNG clock\n");
|
||
+ return -EAGAIN;
|
||
+ }
|
||
+ }
|
||
+ PKA_DEBUG(PKA_DEV, "'trng_clk_on' is enabled\n");
|
||
+
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+static int pka_dev_trng_wait_test_ready(void *csr_reg_ptr, uint64_t csr_reg_base)
|
||
+{
|
||
+ uint64_t csr_reg_off, timer, test_ready, csr_reg_val;
|
||
+
|
||
+ test_ready = 0;
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base, TRNG_STATUS_ADDR);
|
||
+ timer = pka_dev_timer_start(1000000); // 1000 ms
|
||
+
|
||
+ while (!test_ready)
|
||
+ {
|
||
+ csr_reg_val = pka_dev_io_read(csr_reg_ptr, csr_reg_off);
|
||
+ test_ready = csr_reg_val & PKA_TRNG_STATUS_TEST_READY;
|
||
+
|
||
+ if (pka_dev_timer_done(timer))
|
||
+ {
|
||
+ PKA_DEBUG(PKA_DEV, "TRNG: TEST ready timer done, 0x%llx\n", csr_reg_val);
|
||
+ return 1;
|
||
+ }
|
||
+ }
|
||
+
|
||
+ return 0;
|
||
+}
|
||
+
|
||
+static int pka_dev_trng_enable_test(void *csr_reg_ptr, uint64_t csr_reg_base,
|
||
+ uint32_t test)
|
||
+{
|
||
+ uint64_t csr_reg_val, csr_reg_off;
|
||
+
|
||
+ // Set the ‘test_mode’ bit in the TRNG_CONTROL register and the
|
||
+ // ‘test_known_noise’ bit in the TRNG_TEST register – this will
|
||
+ // immediately set the ‘test_ready’ bit (in the TRNG_STATUS register)
|
||
+ // to indicate that data can be written. It will also reset the
|
||
+ // ‘monobit test’, ‘run test’ and ‘poker test’ circuits to their
|
||
+ // initial states. Note that the TRNG need not be enabled for this
|
||
+ // test.
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base, TRNG_CONTROL_ADDR);
|
||
+ csr_reg_val = pka_dev_io_read(csr_reg_ptr, csr_reg_off);
|
||
+
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base, TRNG_CONTROL_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off,
|
||
+ csr_reg_val | PKA_TRNG_CONTROL_TEST_MODE);
|
||
+
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base, TRNG_TEST_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, test);
|
||
+
|
||
+ // Wait until the 'test_ready' bit is set
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base, TRNG_STATUS_ADDR);
|
||
+ do
|
||
+ {
|
||
+ csr_reg_val = pka_dev_io_read(csr_reg_ptr, csr_reg_off);
|
||
+ } while((csr_reg_val & PKA_TRNG_STATUS_TEST_READY) == 0);
|
||
+
|
||
+ // Check whether the 'monobit test', 'run test' and 'poker test'
|
||
+ // are reset.
|
||
+ if (csr_reg_val & (PKA_TRNG_STATUS_MONOBIT_FAIL
|
||
+ | PKA_TRNG_STATUS_RUN_FAIL
|
||
+ | PKA_TRNG_STATUS_POKER_FAIL))
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "Test bits aren't reset, TRNG_STATUS:0x%llx\n",
|
||
+ csr_reg_val);
|
||
+ return -EAGAIN;
|
||
+ }
|
||
+
|
||
+ // Set 'stall_run_poker' bit to allow inspecting the state of the
|
||
+ // result counters which would otherwise be reset immediately for
|
||
+ // the next 20,000 bits block to test.
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base, TRNG_ALARMCNT_ADDR);
|
||
+ csr_reg_val = pka_dev_io_read(csr_reg_ptr, csr_reg_off);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off,
|
||
+ csr_reg_val | PKA_TRNG_ALARMCNT_STALL_RUN_POKER);
|
||
+
|
||
+ return 0;
|
||
+}
|
||
+
|
||
+static int pka_dev_trng_test_circuits(void *csr_reg_ptr, uint64_t csr_reg_base,
|
||
+ uint64_t datal, uint64_t datah,
|
||
+ int count, uint8_t add_half,
|
||
+ uint64_t *monobit_fail_cnt,
|
||
+ uint64_t *run_fail_cnt,
|
||
+ uint64_t *poker_fail_cnt)
|
||
+{
|
||
+ uint64_t status, csr_reg_off;
|
||
+ int test_idx, error;
|
||
+
|
||
+ if (monobit_fail_cnt == NULL || run_fail_cnt == NULL || poker_fail_cnt == NULL)
|
||
+ return -EINVAL;
|
||
+
|
||
+ error = 0;
|
||
+
|
||
+ for (test_idx = 0; test_idx < count; test_idx++)
|
||
+ {
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base, TRNG_RAW_L_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, datal);
|
||
+
|
||
+ if (add_half)
|
||
+ {
|
||
+ if (test_idx < count - 1)
|
||
+ {
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base, TRNG_RAW_H_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, datah);
|
||
+ }
|
||
+ }
|
||
+ else
|
||
+ {
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base, TRNG_RAW_H_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, datah);
|
||
+ }
|
||
+
|
||
+ // Wait until the ‘test_ready’ bit in the TRNG_STATUS register
|
||
+ // becomes ‘1’ again, signaling readiness for the next 64 bits
|
||
+ // of test data. At this point, the previous test data has
|
||
+ // been handled so the counter states can be inspected.
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base, TRNG_STATUS_ADDR);
|
||
+ do
|
||
+ {
|
||
+ status = pka_dev_io_read(csr_reg_ptr, csr_reg_off);
|
||
+ } while((status & PKA_TRNG_STATUS_TEST_READY) == 0);
|
||
+
|
||
+ // Check test status bits.
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base, TRNG_INTACK_ADDR);
|
||
+ if (status & PKA_TRNG_STATUS_MONOBIT_FAIL)
|
||
+ {
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, PKA_TRNG_STATUS_MONOBIT_FAIL);
|
||
+ *monobit_fail_cnt += 1;
|
||
+ }
|
||
+ else if (status & PKA_TRNG_STATUS_RUN_FAIL)
|
||
+ {
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, PKA_TRNG_STATUS_RUN_FAIL);
|
||
+ *run_fail_cnt += 1;
|
||
+ }
|
||
+ else if (status & PKA_TRNG_STATUS_POKER_FAIL)
|
||
+ {
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, PKA_TRNG_STATUS_POKER_FAIL);
|
||
+ *poker_fail_cnt += 1;
|
||
+ }
|
||
+
|
||
+ }
|
||
+
|
||
+ error = (*monobit_fail_cnt || *poker_fail_cnt || *run_fail_cnt) ? -EIO : 0;
|
||
+
|
||
+ return error;
|
||
+}
|
||
+
|
||
+static void pka_dev_trng_disable_test(void *csr_reg_ptr, uint64_t csr_reg_base)
|
||
+{
|
||
+ uint64_t status, val, csr_reg_off;
|
||
+
|
||
+ // When done, clear the ‘test_known_noise’ bit in the TRNG_TEST
|
||
+ // register (will immediately clear the ‘test_ready’ bit in the
|
||
+ // TRNG_STATUS register and reset the ‘monobit test’, ‘run test’
|
||
+ // and ‘poker test’ circuits) and clear the ‘test_mode’ bit in
|
||
+ // the TRNG_CONTROL register.
|
||
+
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base, TRNG_TEST_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, 0);
|
||
+
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base, TRNG_STATUS_ADDR);
|
||
+ status = pka_dev_io_read(csr_reg_ptr, csr_reg_off);
|
||
+
|
||
+ if (status & PKA_TRNG_STATUS_TEST_READY)
|
||
+ PKA_PRINT(PKA_DEV, "Warning: Test ready bit is still set\n");
|
||
+
|
||
+ if (status & (PKA_TRNG_STATUS_MONOBIT_FAIL
|
||
+ | PKA_TRNG_STATUS_RUN_FAIL
|
||
+ | PKA_TRNG_STATUS_POKER_FAIL))
|
||
+ PKA_PRINT(PKA_DEV,
|
||
+ "Warning: Test bits are still set, TRNG_STATUS:0x%llx\n", status);
|
||
+
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base, TRNG_CONTROL_ADDR);
|
||
+ val = pka_dev_io_read(csr_reg_ptr, csr_reg_off);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off,
|
||
+ (val & ~PKA_TRNG_STATUS_TEST_READY));
|
||
+
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base, TRNG_ALARMCNT_ADDR);
|
||
+ val = pka_dev_io_read(csr_reg_ptr, csr_reg_off);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off,
|
||
+ (val & ~PKA_TRNG_ALARMCNT_STALL_RUN_POKER));
|
||
+
|
||
+ return;
|
||
+}
|
||
+
|
||
+static int pka_dev_trng_test_known_answer_basic(void *csr_reg_ptr,
|
||
+ uint64_t csr_reg_base)
|
||
+{
|
||
+ int ret, cnt_idx, cnt_off;
|
||
+ uint64_t monobit_fail_cnt, run_fail_cnt, poker_fail_cnt, monobit_cnt;
|
||
+ uint64_t poker_cnt[4], csr_reg_off;
|
||
+ uint64_t poker_test_exp_cnt[4] = {
|
||
+ 0x20f42bf4, 0xaf415f4, 0xf4f4fff4, 0xfff4f4f4
|
||
+ };
|
||
+
|
||
+ PKA_DEBUG(PKA_DEV, "Run known-answer test circuits\n");
|
||
+
|
||
+ monobit_fail_cnt = 0;
|
||
+ run_fail_cnt = 0;
|
||
+ poker_fail_cnt = 0;
|
||
+
|
||
+ ret = pka_dev_trng_enable_test(csr_reg_ptr, csr_reg_base,
|
||
+ PKA_TRNG_TEST_KNOWN_NOISE);
|
||
+ if (ret)
|
||
+ return ret;
|
||
+
|
||
+ ret = pka_dev_trng_test_circuits(csr_reg_ptr, csr_reg_base, 0x11111333,
|
||
+ 0x3555779f, 11, 0, &monobit_fail_cnt, &run_fail_cnt,
|
||
+ &poker_fail_cnt);
|
||
+
|
||
+ ret |= pka_dev_trng_test_circuits(csr_reg_ptr, csr_reg_base, 0x01234567,
|
||
+ 0x89abcdef, 302, 1, &monobit_fail_cnt, &run_fail_cnt,
|
||
+ &poker_fail_cnt);
|
||
+
|
||
+ PKA_DEBUG(PKA_DEV, "monobit_fail_cnt : 0x%llx\n", monobit_fail_cnt);
|
||
+ PKA_DEBUG(PKA_DEV, "poker_fail_cnt : 0x%llx\n", poker_fail_cnt);
|
||
+ PKA_DEBUG(PKA_DEV, "run_fail_cnt : 0x%llx\n", run_fail_cnt);
|
||
+
|
||
+ for (cnt_idx = 0, cnt_off = 0; cnt_idx < 4; cnt_idx++, cnt_off += 8)
|
||
+ {
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base,
|
||
+ (TRNG_POKER_3_0_ADDR + cnt_off));
|
||
+ poker_cnt[cnt_idx] = pka_dev_io_read(csr_reg_ptr, csr_reg_off);
|
||
+ }
|
||
+
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base,
|
||
+ TRNG_MONOBITCNT_ADDR);
|
||
+ monobit_cnt = pka_dev_io_read(csr_reg_ptr, csr_reg_off);
|
||
+
|
||
+ if (!ret)
|
||
+ {
|
||
+ if (memcmp(poker_cnt, poker_test_exp_cnt, sizeof(poker_test_exp_cnt)))
|
||
+ {
|
||
+ PKA_DEBUG(PKA_DEV, "invalid poker counters!\n");
|
||
+ ret = -EIO;
|
||
+ }
|
||
+
|
||
+ if (monobit_cnt != 9978)
|
||
+ {
|
||
+ PKA_DEBUG(PKA_DEV, "invalid sum of squares!\n");
|
||
+ ret = -EIO;
|
||
+ }
|
||
+ }
|
||
+
|
||
+ pka_dev_trng_disable_test(csr_reg_ptr, csr_reg_base);
|
||
+
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+static int pka_dev_trng_test_known_answer_poker_fail(void *csr_reg_ptr,
|
||
+ uint64_t csr_reg_base)
|
||
+{
|
||
+ uint64_t monobit_fail_cnt, run_fail_cnt, poker_fail_cnt;
|
||
+ int ret;
|
||
+
|
||
+ monobit_fail_cnt = 0;
|
||
+ run_fail_cnt = 0;
|
||
+ poker_fail_cnt = 0;
|
||
+
|
||
+ PKA_DEBUG(PKA_DEV, "Run known-answer test circuits (poker fail)\n");
|
||
+
|
||
+ pka_dev_trng_enable_test(csr_reg_ptr, csr_reg_base,
|
||
+ PKA_TRNG_TEST_KNOWN_NOISE);
|
||
+
|
||
+ // Ignore the return value here as it is expected that poker test should
|
||
+ // fail. Check failure counts thereafter to assert only poker test has failed.
|
||
+ pka_dev_trng_test_circuits(csr_reg_ptr, csr_reg_base, 0xffffffff,
|
||
+ 0xffffffff, 11, 0, &monobit_fail_cnt, &run_fail_cnt, &poker_fail_cnt);
|
||
+
|
||
+ PKA_DEBUG(PKA_DEV, "monobit_fail_cnt : 0x%llx\n", monobit_fail_cnt);
|
||
+ PKA_DEBUG(PKA_DEV, "poker_fail_cnt : 0x%llx\n", poker_fail_cnt);
|
||
+ PKA_DEBUG(PKA_DEV, "run_fail_cnt : 0x%llx\n", run_fail_cnt);
|
||
+
|
||
+ if (poker_fail_cnt && !run_fail_cnt && !monobit_fail_cnt)
|
||
+ ret = 0;
|
||
+ else
|
||
+ ret = -EIO;
|
||
+
|
||
+ pka_dev_trng_disable_test(csr_reg_ptr, csr_reg_base);
|
||
+
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+static int pka_dev_trng_test_unknown_answer(void *csr_reg_ptr,
|
||
+ uint64_t csr_reg_base)
|
||
+{
|
||
+ uint64_t datal, datah, csr_reg_off;
|
||
+ int ret, test_idx;
|
||
+
|
||
+ datah = 0;
|
||
+ datal = 0;
|
||
+ ret = 0;
|
||
+
|
||
+ PKA_DEBUG(PKA_DEV, "Run unknown-answer self test\n");
|
||
+
|
||
+ // First reset, the RAW registers.
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base,
|
||
+ TRNG_RAW_L_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, 0);
|
||
+
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base,
|
||
+ TRNG_RAW_H_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, 0);
|
||
+
|
||
+ // There is a small probability for this test to fail,
|
||
+ // So run the test 10 times, if it succeeds once then
|
||
+ // assume that the test passed.
|
||
+ for (test_idx = 0; test_idx < 10; test_idx++)
|
||
+ {
|
||
+ pka_dev_trng_enable_test(csr_reg_ptr, csr_reg_base, PKA_TRNG_TEST_NOISE);
|
||
+
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base,
|
||
+ TRNG_RAW_L_ADDR);
|
||
+ datal = pka_dev_io_read(csr_reg_ptr, csr_reg_off);
|
||
+
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base,
|
||
+ TRNG_RAW_H_ADDR);
|
||
+ datah = pka_dev_io_read(csr_reg_ptr, csr_reg_off);
|
||
+
|
||
+ PKA_DEBUG(PKA_DEV, "datal=0x%llx\n", datal);
|
||
+ PKA_DEBUG(PKA_DEV, "datah=0x%llx\n", datah);
|
||
+
|
||
+ if (!datah && !datal)
|
||
+ {
|
||
+ ret = -EIO;
|
||
+ }
|
||
+ else
|
||
+ {
|
||
+ ret = 0;
|
||
+ break;
|
||
+ }
|
||
+
|
||
+ pka_dev_trng_disable_test(csr_reg_ptr, csr_reg_base);
|
||
+ }
|
||
+
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+// Test TRNG
|
||
+static int pka_dev_test_trng(void *csr_reg_ptr, uint64_t csr_reg_base)
|
||
+{
|
||
+ int ret;
|
||
+
|
||
+ ret = 0;
|
||
+
|
||
+ ret = pka_dev_trng_test_known_answer_basic(csr_reg_ptr, csr_reg_base);
|
||
+ if (ret)
|
||
+ goto exit;
|
||
+
|
||
+ ret = pka_dev_trng_test_known_answer_poker_fail(csr_reg_ptr, csr_reg_base);
|
||
+ if (ret)
|
||
+ goto exit;
|
||
+
|
||
+ ret = pka_dev_trng_test_unknown_answer(csr_reg_ptr, csr_reg_base);
|
||
+ if (ret)
|
||
+ goto exit;
|
||
+
|
||
+exit:
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+static void pka_dev_trng_write_ps_ai_str(void *csr_reg_ptr,
|
||
+ uint64_t csr_reg_base,
|
||
+ uint32_t input_str[])
|
||
+{
|
||
+ uint64_t csr_reg_off;
|
||
+ int i;
|
||
+
|
||
+ for (i = 0; i < PKA_TRNG_PS_AI_REG_COUNT; i++)
|
||
+ {
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base,
|
||
+ TRNG_PS_AI_0_ADDR + (i * 0x8));
|
||
+
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, input_str[i]);
|
||
+ }
|
||
+}
|
||
+
|
||
+static void pka_dev_trng_drbg_generate(void *csr_reg_ptr, uint64_t csr_reg_base)
|
||
+{
|
||
+ uint64_t csr_reg_off;
|
||
+
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base, TRNG_CONTROL_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, PKA_TRNG_CONTROL_REQ_DATA_VAL);
|
||
+}
|
||
+
|
||
+static int pka_dev_test_trng_drbg(void *csr_reg_ptr, uint64_t csr_reg_base)
|
||
+{
|
||
+ uint64_t csr_reg_off, csr_reg_val;
|
||
+ int i, ret;
|
||
+
|
||
+ ret = 0;
|
||
+
|
||
+ // Make sure the engine is idle.
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base, TRNG_CONTROL_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, 0);
|
||
+
|
||
+ // Enable DRBG, TRNG need not be enabled for this test.
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base, TRNG_CONTROL_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, PKA_TRNG_CONTROL_DRBG_ENABLE_VAL);
|
||
+
|
||
+ // Set 'test_sp_800_90' bit in the TRNG_TEST register
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base, TRNG_TEST_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, PKA_TRNG_TEST_DRBG_VAL);
|
||
+
|
||
+ // Wait for 'test_ready' bit to be set.
|
||
+ ret = pka_dev_trng_wait_test_ready(csr_reg_ptr, csr_reg_base);
|
||
+ if (ret)
|
||
+ goto exit;
|
||
+
|
||
+ // Instantiate
|
||
+ pka_dev_trng_write_ps_ai_str(csr_reg_ptr, csr_reg_base, pka_trng_drbg_test_ps_str);
|
||
+ ret = pka_dev_trng_wait_test_ready(csr_reg_ptr, csr_reg_base);
|
||
+ if (ret)
|
||
+ goto exit;
|
||
+
|
||
+ // Generate
|
||
+ pka_dev_trng_write_ps_ai_str(csr_reg_ptr, csr_reg_base, pka_trng_drbg_test_etpy_str1);
|
||
+ ret = pka_dev_trng_wait_test_ready(csr_reg_ptr, csr_reg_base);
|
||
+ if (ret)
|
||
+ goto exit;
|
||
+
|
||
+ // A standard NIST SP 800-90A DRBG known-answer test discards
|
||
+ // the result of the first 'Generate' function and only checks
|
||
+ // the result of the second 'Generate' function. Hence 'Generate'
|
||
+ // is performed again.
|
||
+
|
||
+ // Generate
|
||
+ pka_dev_trng_write_ps_ai_str(csr_reg_ptr, csr_reg_base, pka_trng_drbg_test_etpy_str2);
|
||
+ ret = pka_dev_trng_wait_test_ready(csr_reg_ptr, csr_reg_base);
|
||
+ if (ret)
|
||
+ goto exit;
|
||
+
|
||
+ // Check output registers
|
||
+ for (i = 0; i < PKA_TRNG_OUTPUT_CNT; i++)
|
||
+ {
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base,
|
||
+ TRNG_OUTPUT_0_ADDR + (i * 0x8));
|
||
+
|
||
+ csr_reg_val = pka_dev_io_read(csr_reg_ptr, csr_reg_off);
|
||
+
|
||
+ if ((uint32_t)csr_reg_val != pka_trng_drbg_test_output[i])
|
||
+ {
|
||
+ PKA_DEBUG(PKA_DEV,
|
||
+ "DRBG known answer test failed for output register:%d, 0x%x\n",
|
||
+ i, (uint32_t)csr_reg_val);
|
||
+ ret = 1;
|
||
+ goto exit;
|
||
+ }
|
||
+ }
|
||
+
|
||
+ // Clear 'test_sp_800_90' bit in the TRNG_TEST register.
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base, TRNG_TEST_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, 0);
|
||
+
|
||
+exit:
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+// Configure the TRNG.
|
||
+static int pka_dev_config_trng_drbg(pka_dev_res_t *aic_csr_ptr,
|
||
+ pka_dev_res_t *trng_csr_ptr)
|
||
+{
|
||
+ int ret = 0;
|
||
+
|
||
+ uint64_t csr_reg_base, csr_reg_off;
|
||
+ void *csr_reg_ptr;
|
||
+
|
||
+ if (trng_csr_ptr->status != PKA_DEV_RES_STATUS_MAPPED ||
|
||
+ trng_csr_ptr->type != PKA_DEV_RES_TYPE_REG)
|
||
+ return -EPERM;
|
||
+
|
||
+ PKA_DEBUG(PKA_DEV, "Starting up the TRNG\n");
|
||
+
|
||
+ ret = pka_dev_config_trng_clk(aic_csr_ptr);
|
||
+ if (ret)
|
||
+ return ret;
|
||
+
|
||
+ csr_reg_base = trng_csr_ptr->base;
|
||
+ csr_reg_ptr = trng_csr_ptr->ioaddr;
|
||
+
|
||
+ // Perform NIST known-answer tests on the complete SP 800-90A DRBG
|
||
+ // without BC_DF functionality.
|
||
+ ret = pka_dev_test_trng_drbg(csr_reg_ptr, csr_reg_base);
|
||
+ if (ret)
|
||
+ return ret;
|
||
+
|
||
+ // Starting up the TRNG with a DRBG
|
||
+
|
||
+ // Make sure the engine is idle.
|
||
+ csr_reg_off =
|
||
+ pka_dev_get_register_offset(csr_reg_base, TRNG_CONTROL_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, 0);
|
||
+
|
||
+ // Disable all FROs initially
|
||
+ csr_reg_off =
|
||
+ pka_dev_get_register_offset(csr_reg_base, TRNG_FROENABLE_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, 0);
|
||
+ csr_reg_off =
|
||
+ pka_dev_get_register_offset(csr_reg_base, TRNG_FRODETUNE_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, 0);
|
||
+
|
||
+ // Write all configuration values in the TRNG_CONFIG and TRNG_ALARMCNT,
|
||
+ // write zeroes to the TRNG_ALARMMASK and TRNG_ALARMSTOP registers.
|
||
+ csr_reg_off =
|
||
+ pka_dev_get_register_offset(csr_reg_base, TRNG_CONFIG_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, PKA_TRNG_CONFIG_REG_VAL);
|
||
+ csr_reg_off =
|
||
+ pka_dev_get_register_offset(csr_reg_base, TRNG_ALARMCNT_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, PKA_TRNG_ALARMCNT_REG_VAL);
|
||
+
|
||
+ csr_reg_off =
|
||
+ pka_dev_get_register_offset(csr_reg_base, TRNG_ALARMMASK_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, 0);
|
||
+ csr_reg_off =
|
||
+ pka_dev_get_register_offset(csr_reg_base, TRNG_ALARMSTOP_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, 0);
|
||
+
|
||
+ // Enable all FROs in the TRNG_FROENABLE register. Note that this can
|
||
+ // only be done after clearing the TRNG_ALARMSTOP register.
|
||
+ csr_reg_off =
|
||
+ pka_dev_get_register_offset(csr_reg_base, TRNG_FROENABLE_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, PKA_TRNG_FROENABLE_REG_VAL);
|
||
+
|
||
+ // Optionally, write 'Personalization string' of upto 384 bits in
|
||
+ // TRNG_PS_AI_... registers. The contents of these registers will be
|
||
+ // XOR-ed into the output of the SHA-256 'Conditioning Function' to be
|
||
+ // used as seed value for the actual DRBG.
|
||
+ pka_dev_trng_write_ps_ai_str(csr_reg_ptr, csr_reg_base, pka_trng_drbg_ps_str);
|
||
+
|
||
+
|
||
+ // Run TRNG tests after configuring TRNG.
|
||
+ // NOTE: TRNG need not be enabled to carry out these tests.
|
||
+ ret = pka_dev_test_trng(csr_reg_ptr, csr_reg_base);
|
||
+ if (ret)
|
||
+ return ret;
|
||
+
|
||
+ // Start the actual engine by setting the 'enable_trng' and 'drbg_en' bit
|
||
+ // in the TRNG_CONTROL register (also a nice point to set the interrupt mask
|
||
+ // bits).
|
||
+ csr_reg_off =
|
||
+ pka_dev_get_register_offset(csr_reg_base, TRNG_CONTROL_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, PKA_TRNG_CONTROL_DRBG_REG_VAL);
|
||
+
|
||
+ // The engine is now ready to handle the first 'Generate' request using
|
||
+ // the 'request_data' bit of the TRNG_CONTROL register. The first output
|
||
+ // for these requests will take a while, as Noise Source and Conditioning
|
||
+ // Function must first generate seed entropy for the DRBG.
|
||
+
|
||
+
|
||
+ // Optionally, when buffer RAM is configured: Set a data available
|
||
+ // interrupt threshold using the 'load_thresh' and 'blocks_thresh'
|
||
+ // fields of the TRNG_INTACK register. This allows delaying the data
|
||
+ // available interrupt until the indicated number of 128-bit words are
|
||
+ // available in the buffer RAM.
|
||
+
|
||
+ // Start the actual 'Generate' operation using the 'request_data' and 'data_blocks'
|
||
+ // fields of the TRNG_CONTROL register.
|
||
+
|
||
+ pka_dev_trng_drbg_generate(csr_reg_ptr, csr_reg_base);
|
||
+
|
||
+ mdelay(200);
|
||
+
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+// Triggers hardaware zeorize to initialize PKA internal memories
|
||
+static int pka_dev_ram_zeroize(pka_dev_res_t *ext_csr_ptr)
|
||
+{
|
||
+ uint64_t csr_reg_base, csr_reg_off, csr_reg_value;
|
||
+ uint64_t timer;
|
||
+ void *csr_reg_ptr;
|
||
+
|
||
+ if (ext_csr_ptr->status != PKA_DEV_RES_STATUS_MAPPED ||
|
||
+ ext_csr_ptr->type != PKA_DEV_RES_TYPE_REG)
|
||
+ return -EPERM;
|
||
+
|
||
+ PKA_DEBUG(PKA_DEV, "Starting memory zeroize\n");
|
||
+
|
||
+ csr_reg_base = ext_csr_ptr->base;
|
||
+ csr_reg_ptr = ext_csr_ptr->ioaddr;
|
||
+
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base,
|
||
+ PKA_ZEROIZE_ADDR);
|
||
+ // When PKA_ZEROIZE register is written (with any value)
|
||
+ // sensitive data in the PKA is zeroed out.
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, 1);
|
||
+
|
||
+ // Now wait until the zeroize completes
|
||
+ timer = pka_dev_timer_start(10000000); // 10000 ms
|
||
+ csr_reg_value = pka_dev_io_read(csr_reg_ptr, csr_reg_off);
|
||
+ while (csr_reg_value != 0)
|
||
+ {
|
||
+ csr_reg_value = pka_dev_io_read(csr_reg_ptr, csr_reg_off);
|
||
+
|
||
+ if (pka_dev_timer_done(timer))
|
||
+ {
|
||
+ PKA_DEBUG(PKA_DEV, "Timeout while PKA zeorize\n");
|
||
+ return -EBUSY;
|
||
+ }
|
||
+ }
|
||
+
|
||
+ return 0;
|
||
+}
|
||
+
|
||
+// Initialize PKA IO block refered to as shim. It configures shim's
|
||
+// parameters and prepare resources by mapping corresponding memory.
|
||
+// The function also configures shim registers and load firmware to
|
||
+// shim internal rams. The pka_dev_shim_t passed as input is also an
|
||
+// output. It returns 0 on success, a negative error code on failure.
|
||
+static int pka_dev_init_shim(pka_dev_shim_t *shim)
|
||
+{
|
||
+ const uint32_t *farm_img_ptr;
|
||
+ uint32_t farm_img_size, data[4], i;
|
||
+ uint8_t shim_fw_id;
|
||
+
|
||
+ int ret = 0;
|
||
+
|
||
+ if (shim->status != PKA_SHIM_STATUS_CREATED)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "PKA device must be created\n");
|
||
+ return -EPERM;
|
||
+ }
|
||
+
|
||
+ // First of all, trigger a hardware zeroize to initialize internal
|
||
+ // RAM memories
|
||
+ ret = pka_dev_ram_zeroize(&shim->resources.ext_csr);
|
||
+ if (ret)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "failed to zeroize PKA\n");
|
||
+ return ret;
|
||
+ }
|
||
+
|
||
+ // Configure AIC registers
|
||
+ ret = pka_dev_config_aic_interrupts(&shim->resources.aic_csr);
|
||
+ if (ret)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "failed to configure AIC\n");
|
||
+ return ret;
|
||
+ }
|
||
+
|
||
+ shim_fw_id = pka_firmware_get_id();
|
||
+
|
||
+ // Load Farm image into PKA_BUFFER_RAM for non-High Assurance mode
|
||
+ // or into PKA_SECURE_RAM for High Assurance mode.
|
||
+ farm_img_size = pka_firmware_array[shim_fw_id].farm_img_size;
|
||
+ PKA_DEBUG(PKA_DEV, "loading farm image (%d words)\n", farm_img_size);
|
||
+
|
||
+ farm_img_ptr = pka_firmware_array[shim_fw_id].farm_img;
|
||
+ // The IP provider suggests using the zeroize function to initialize
|
||
+ // the Buffer RAM. But a bug has been detected when writing ECC bits.
|
||
+ // Thus a workaround is used, and has already been shown to work; it
|
||
+ // consists of padding the farm image. Then all RAM locations will be
|
||
+ // written with correct ECC before the IP reads the image out.
|
||
+ ret = pka_dev_load_image(&shim->resources.buffer_ram, farm_img_ptr,
|
||
+ farm_img_size);
|
||
+ if (ret)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "failed to load farm image\n");
|
||
+ return ret;
|
||
+ }
|
||
+
|
||
+ // Configure EIP-154 Master controller Sequencer
|
||
+ ret = pka_dev_config_master_seq_controller(shim,
|
||
+ &shim->resources.master_seq_ctrl);
|
||
+ if (ret)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "failed to configure Master controller "
|
||
+ "Sequencer\n");
|
||
+ return ret;
|
||
+ }
|
||
+
|
||
+ // Configure PKA Ring options control word
|
||
+ ret = pka_dev_config_ring_options(&shim->resources.buffer_ram,
|
||
+ shim->rings_num, shim->ring_priority);
|
||
+ if (ret)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "failed to configure ring options\n");
|
||
+ return ret;
|
||
+ }
|
||
+
|
||
+ shim->trng_enabled = PKA_SHIM_TRNG_ENABLED;
|
||
+ shim->trng_err_cycle = 0;
|
||
+
|
||
+ // Configure the TRNG
|
||
+ ret = pka_dev_config_trng_drbg(&shim->resources.aic_csr,
|
||
+ &shim->resources.trng_csr);
|
||
+
|
||
+ // Pull out data from the content of the TRNG buffer RAM and
|
||
+ // start the re-generation of new numbers; read and drop 512
|
||
+ // words. The read must be done over the 4 TRNG_OUTPUT_X registers
|
||
+ // at a time.
|
||
+ i = 0;
|
||
+ while (i < 128)
|
||
+ {
|
||
+ pka_dev_trng_read(shim, data, sizeof(data));
|
||
+ i++;
|
||
+ }
|
||
+
|
||
+ if (ret)
|
||
+ {
|
||
+ // Keep running without TRNG since it does not hurt, but
|
||
+ // notify users.
|
||
+ PKA_ERROR(PKA_DEV, "failed to configure TRNG\n");
|
||
+ shim->trng_enabled = PKA_SHIM_TRNG_DISABLED;
|
||
+ }
|
||
+
|
||
+ mutex_init(&shim->mutex);
|
||
+ shim->busy_ring_num = 0;
|
||
+ shim->status = PKA_SHIM_STATUS_INITIALIZED;
|
||
+
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+// Release a given shim.
|
||
+static int pka_dev_release_shim(pka_dev_shim_t *shim)
|
||
+{
|
||
+ int ret = 0;
|
||
+
|
||
+ uint32_t ring_idx;
|
||
+
|
||
+ if (shim->status != PKA_SHIM_STATUS_INITIALIZED &&
|
||
+ shim->status != PKA_SHIM_STATUS_STOPPED)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "PKA device must be initialized or stopped\n");
|
||
+ return -EPERM;
|
||
+ }
|
||
+
|
||
+ // Release rings which belong to the shim. The operating system might
|
||
+ // release ring devices before shim devices. The global configuration
|
||
+ // must be checked before proceeding to the release of ring devices.
|
||
+ if (pka_gbl_config.dev_rings_cnt)
|
||
+ {
|
||
+ for (ring_idx = 0; ring_idx < shim->rings_num; ring_idx++)
|
||
+ {
|
||
+ ret = pka_dev_release_ring(shim->rings[ring_idx]);
|
||
+ if (ret)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "failed to release ring %d\n", ring_idx);
|
||
+ return ret;
|
||
+ }
|
||
+ }
|
||
+ }
|
||
+
|
||
+ shim->busy_ring_num = 0;
|
||
+ shim->status = PKA_SHIM_STATUS_FINALIZED;
|
||
+
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+// Return the ring associated with the given identifier.
|
||
+pka_dev_ring_t *pka_dev_get_ring(uint32_t ring_id)
|
||
+{
|
||
+ return pka_gbl_config.dev_rings[ring_id];
|
||
+}
|
||
+
|
||
+// Return the shim associated with the given identifier.
|
||
+pka_dev_shim_t *pka_dev_get_shim(uint32_t shim_id)
|
||
+{
|
||
+ return pka_gbl_config.dev_shims[shim_id];
|
||
+}
|
||
+
|
||
+
|
||
+static pka_dev_ring_t *__pka_dev_register_ring(uint32_t ring_id,
|
||
+ uint32_t shim_id)
|
||
+{
|
||
+ pka_dev_shim_t *shim;
|
||
+ pka_dev_ring_t *ring;
|
||
+
|
||
+ int ret;
|
||
+
|
||
+ shim = pka_dev_get_shim(shim_id);
|
||
+ if (!shim)
|
||
+ return NULL;
|
||
+
|
||
+ ring = kzalloc(sizeof(pka_dev_ring_t), GFP_KERNEL);
|
||
+ if (!ring)
|
||
+ return ring;
|
||
+
|
||
+ ring->status = PKA_DEV_RING_STATUS_UNDEFINED;
|
||
+
|
||
+ // Initialize ring.
|
||
+ ret = pka_dev_init_ring(ring, ring_id, shim);
|
||
+ if (ret)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "failed to initialize ring %d\n", ring_id);
|
||
+ pka_dev_release_ring(ring);
|
||
+ kfree(ring);
|
||
+ return NULL;
|
||
+ }
|
||
+
|
||
+ return ring;
|
||
+}
|
||
+
|
||
+pka_dev_ring_t *pka_dev_register_ring(uint32_t ring_id, uint32_t shim_id)
|
||
+{
|
||
+ pka_dev_ring_t *ring;
|
||
+
|
||
+ ring = __pka_dev_register_ring(ring_id, shim_id);
|
||
+ if (ring)
|
||
+ {
|
||
+ pka_gbl_config.dev_rings[ring->ring_id] = ring;
|
||
+ pka_gbl_config.dev_rings_cnt += 1;
|
||
+ }
|
||
+
|
||
+ return ring;
|
||
+}
|
||
+
|
||
+static int __pka_dev_unregister_ring(pka_dev_ring_t *ring)
|
||
+{
|
||
+ int ret;
|
||
+
|
||
+ if (!ring)
|
||
+ return -EINVAL;
|
||
+
|
||
+ // Release ring
|
||
+ ret = pka_dev_release_ring(ring);
|
||
+ if (ret)
|
||
+ return ret;
|
||
+
|
||
+ kfree(ring);
|
||
+
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+int pka_dev_unregister_ring(pka_dev_ring_t *ring)
|
||
+{
|
||
+ pka_gbl_config.dev_rings[ring->ring_id] = NULL;
|
||
+ pka_gbl_config.dev_rings_cnt -= 1;
|
||
+
|
||
+ return __pka_dev_unregister_ring(ring);
|
||
+}
|
||
+
|
||
+static pka_dev_shim_t *__pka_dev_register_shim(uint32_t shim_id,
|
||
+ struct pka_dev_mem_res *mem_res)
|
||
+{
|
||
+ pka_dev_shim_t *shim;
|
||
+
|
||
+ uint8_t split;
|
||
+ int ret = 0;
|
||
+
|
||
+ PKA_DEBUG(PKA_DEV, "register shim id=%u\n", shim_id);
|
||
+
|
||
+ shim = kzalloc(sizeof(pka_dev_shim_t), GFP_KERNEL);
|
||
+ if (!shim)
|
||
+ return shim;
|
||
+
|
||
+ // Shim state MUST be set to undefined before calling 'pka_dev_create_shim'
|
||
+ // function
|
||
+ shim->status = PKA_SHIM_STATUS_UNDEFINED;
|
||
+
|
||
+ // Set the Window RAM user mode
|
||
+ split = PKA_SPLIT_WINDOW_RAM_MODE;
|
||
+
|
||
+ // Create PKA shim
|
||
+ ret = pka_dev_create_shim(shim, shim_id, split, mem_res);
|
||
+ if (ret)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "failed to create shim %u\n", shim_id);
|
||
+ pka_dev_delete_shim(shim);
|
||
+ kfree(shim);
|
||
+ return NULL;
|
||
+ }
|
||
+
|
||
+ // Initialize PKA shim
|
||
+ ret = pka_dev_init_shim(shim);
|
||
+ if (ret)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "failed to init shim %u\n", shim_id);
|
||
+ pka_dev_release_shim(shim);
|
||
+ pka_dev_delete_shim(shim);
|
||
+ kfree(shim);
|
||
+ return NULL;
|
||
+ }
|
||
+
|
||
+ return shim;
|
||
+}
|
||
+
|
||
+pka_dev_shim_t *pka_dev_register_shim(uint32_t shim_id, uint8_t shim_fw_id,
|
||
+ struct pka_dev_mem_res *mem_res)
|
||
+{
|
||
+ pka_dev_shim_t *shim;
|
||
+
|
||
+ pka_firmware_set_id(shim_fw_id);
|
||
+
|
||
+ shim = __pka_dev_register_shim(shim_id, mem_res);
|
||
+ if (shim)
|
||
+ {
|
||
+ pka_gbl_config.dev_shims[shim->shim_id] = shim;
|
||
+ pka_gbl_config.dev_shims_cnt += 1;
|
||
+ }
|
||
+
|
||
+ return shim;
|
||
+}
|
||
+
|
||
+static int __pka_dev_unregister_shim(pka_dev_shim_t *shim)
|
||
+{
|
||
+ int ret = 0;
|
||
+
|
||
+ if (!shim)
|
||
+ return -EINVAL;
|
||
+
|
||
+ // Release shim
|
||
+ ret = pka_dev_release_shim(shim);
|
||
+ if (ret)
|
||
+ return ret;
|
||
+
|
||
+ // Delete shim
|
||
+ ret = pka_dev_delete_shim(shim);
|
||
+ if (ret)
|
||
+ return ret;
|
||
+
|
||
+ kfree(shim);
|
||
+
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+int pka_dev_unregister_shim(pka_dev_shim_t *shim)
|
||
+{
|
||
+ pka_gbl_config.dev_shims[shim->shim_id] = NULL;
|
||
+ pka_gbl_config.dev_shims_cnt -= 1;
|
||
+
|
||
+ return __pka_dev_unregister_shim(shim);
|
||
+}
|
||
+
|
||
+static bool pka_dev_trng_shutdown_oflo(pka_dev_res_t *trng_csr_ptr,
|
||
+ uint64_t *err_cycle)
|
||
+{
|
||
+ uint64_t csr_reg_base, csr_reg_off, csr_reg_value;
|
||
+ uint64_t curr_cycle_cnt, fro_stopped_mask, fro_enabled_mask;
|
||
+ void *csr_reg_ptr;
|
||
+
|
||
+ csr_reg_base = trng_csr_ptr->base;
|
||
+ csr_reg_ptr = trng_csr_ptr->ioaddr;
|
||
+
|
||
+ csr_reg_off =
|
||
+ pka_dev_get_register_offset(csr_reg_base, TRNG_STATUS_ADDR);
|
||
+ csr_reg_value = pka_dev_io_read(csr_reg_ptr, csr_reg_off);
|
||
+
|
||
+ if (csr_reg_value & PKA_TRNG_STATUS_SHUTDOWN_OFLO)
|
||
+ {
|
||
+ curr_cycle_cnt = get_cycles();
|
||
+ // See if any FROs were shut down. If they were, toggle bits in the
|
||
+ // FRO detune register and reenable the FROs.
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base,
|
||
+ TRNG_ALARMSTOP_ADDR);
|
||
+ fro_stopped_mask = pka_dev_io_read(csr_reg_ptr, csr_reg_off);
|
||
+ if (fro_stopped_mask)
|
||
+ {
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base,
|
||
+ TRNG_FROENABLE_ADDR);
|
||
+ fro_enabled_mask = pka_dev_io_read(csr_reg_ptr, csr_reg_off);
|
||
+
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base,
|
||
+ TRNG_FRODETUNE_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, fro_stopped_mask);
|
||
+
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base,
|
||
+ TRNG_FROENABLE_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off,
|
||
+ fro_stopped_mask | fro_enabled_mask);
|
||
+ }
|
||
+
|
||
+ // Reset the error
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base,
|
||
+ TRNG_ALARMMASK_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, 0);
|
||
+
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base,
|
||
+ TRNG_ALARMSTOP_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, 0);
|
||
+
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base,
|
||
+ TRNG_INTACK_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off,
|
||
+ PKA_TRNG_STATUS_SHUTDOWN_OFLO);
|
||
+
|
||
+ // If we're seeing this error again within about a second,
|
||
+ // the hardware is malfunctioning. Disable the trng and return
|
||
+ // an error.
|
||
+ if (*err_cycle && (curr_cycle_cnt - *err_cycle < 1000000000))
|
||
+ {
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base,
|
||
+ TRNG_CONTROL_ADDR);
|
||
+ csr_reg_value = pka_dev_io_read(csr_reg_ptr, csr_reg_off);
|
||
+ csr_reg_value &= ~PKA_TRNG_CONTROL_REG_VAL;
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, csr_reg_value);
|
||
+ return false;
|
||
+ }
|
||
+
|
||
+ *err_cycle = curr_cycle_cnt;
|
||
+ }
|
||
+
|
||
+ return true;
|
||
+}
|
||
+
|
||
+static int pka_dev_trng_drbg_reseed(void *csr_reg_ptr, uint64_t csr_reg_base)
|
||
+{
|
||
+ uint64_t csr_reg_off;
|
||
+ int ret;
|
||
+
|
||
+ ret = 0;
|
||
+
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base, TRNG_CONTROL_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, PKA_TRNG_CONTROL_DRBG_RESEED);
|
||
+
|
||
+ ret = pka_dev_trng_wait_test_ready(csr_reg_ptr, csr_reg_base);
|
||
+ if (ret)
|
||
+ return ret;
|
||
+
|
||
+ // Write personalization string
|
||
+ pka_dev_trng_write_ps_ai_str(csr_reg_ptr, csr_reg_base, pka_trng_drbg_ps_str);
|
||
+
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+// Read from DRBG enabled TRNG
|
||
+int pka_dev_trng_read(pka_dev_shim_t *shim, uint32_t *data, uint32_t cnt)
|
||
+{
|
||
+ int ret = 0;
|
||
+
|
||
+ pka_dev_res_t *trng_csr_ptr;
|
||
+ uint64_t csr_reg_base, csr_reg_off, csr_reg_value;
|
||
+ uint64_t timer;
|
||
+ uint32_t data_idx, word_cnt;
|
||
+ uint8_t output_idx, trng_ready = 0;
|
||
+ void *csr_reg_ptr;
|
||
+
|
||
+ if (!shim || !data || (cnt % PKA_TRNG_OUTPUT_CNT != 0))
|
||
+ return -EINVAL;
|
||
+
|
||
+ if (!cnt)
|
||
+ return ret;
|
||
+
|
||
+ mutex_lock(&shim->mutex);
|
||
+
|
||
+ trng_csr_ptr = &shim->resources.trng_csr;
|
||
+
|
||
+ if (trng_csr_ptr->status != PKA_DEV_RES_STATUS_MAPPED ||
|
||
+ trng_csr_ptr->type != PKA_DEV_RES_TYPE_REG)
|
||
+ {
|
||
+ ret = -EPERM;
|
||
+ goto exit;
|
||
+ }
|
||
+
|
||
+ csr_reg_base = trng_csr_ptr->base;
|
||
+ csr_reg_ptr = trng_csr_ptr->ioaddr;
|
||
+
|
||
+ if (!pka_dev_trng_shutdown_oflo(trng_csr_ptr,
|
||
+ &shim->trng_err_cycle))
|
||
+ {
|
||
+ ret = -EWOULDBLOCK;
|
||
+ goto exit;
|
||
+ }
|
||
+
|
||
+ // Determine the number of 32-bit words.
|
||
+ word_cnt = cnt >> 2;
|
||
+
|
||
+ for (data_idx = 0; data_idx < word_cnt; data_idx++)
|
||
+ {
|
||
+ output_idx = data_idx % PKA_TRNG_OUTPUT_CNT;
|
||
+
|
||
+ // Tell the hardware to advance
|
||
+ if (output_idx == 0)
|
||
+ {
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base,
|
||
+ TRNG_INTACK_ADDR);
|
||
+ pka_dev_io_write(csr_reg_ptr, csr_reg_off, PKA_TRNG_STATUS_READY);
|
||
+ trng_ready = 0;
|
||
+
|
||
+ // Check if 'data_blocks' field is zero in TRNG_CONTROL register,
|
||
+ // if it is then we have to issue a 'Reseed' and Generate' request
|
||
+ // for DRBG enabled TRNG.
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base,
|
||
+ TRNG_CONTROL_ADDR);
|
||
+ csr_reg_value = pka_dev_io_read(csr_reg_ptr, csr_reg_off);
|
||
+
|
||
+ if (!((uint32_t)csr_reg_value & PKA_TRNG_DRBG_DATA_BLOCK_MASK))
|
||
+ {
|
||
+ // Issue reseed
|
||
+ ret = pka_dev_trng_drbg_reseed(csr_reg_ptr, csr_reg_base);
|
||
+ if (ret)
|
||
+ {
|
||
+ ret = -EBUSY;
|
||
+ goto exit;
|
||
+ }
|
||
+
|
||
+ // Issue generate request
|
||
+ pka_dev_trng_drbg_generate(csr_reg_ptr, csr_reg_base);
|
||
+ }
|
||
+
|
||
+ }
|
||
+
|
||
+ // Wait until a data word is available in the TRNG_OUTPUT_X
|
||
+ // registers (using the interrupt and/or 'ready' status bit in the
|
||
+ // TRNG_STATUS register. The only way this would hang if the TRNG
|
||
+ // never initialized, and we would not call this function if that
|
||
+ // happened.
|
||
+ timer = pka_dev_timer_start(1000000); // 1000 ms
|
||
+ csr_reg_off =
|
||
+ pka_dev_get_register_offset(csr_reg_base, TRNG_STATUS_ADDR);
|
||
+ while (trng_ready == 0)
|
||
+ {
|
||
+ csr_reg_value = pka_dev_io_read(csr_reg_ptr, csr_reg_off);
|
||
+ trng_ready = csr_reg_value & PKA_TRNG_STATUS_READY;
|
||
+
|
||
+ if (pka_dev_timer_done(timer))
|
||
+ {
|
||
+ PKA_DEBUG(PKA_DEV,
|
||
+ "Shim %u got error obtaining random number\n",
|
||
+ shim->shim_id);
|
||
+ ret = -EBUSY;
|
||
+ goto exit;
|
||
+ }
|
||
+ }
|
||
+
|
||
+ // Read the registers
|
||
+ csr_reg_off = pka_dev_get_register_offset(csr_reg_base,
|
||
+ TRNG_OUTPUT_0_ADDR + (output_idx * 0x8));
|
||
+ csr_reg_value = pka_dev_io_read(csr_reg_ptr, csr_reg_off);
|
||
+ data[data_idx] = (uint32_t) csr_reg_value;
|
||
+ }
|
||
+
|
||
+exit:
|
||
+ mutex_unlock(&shim->mutex);
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+bool pka_dev_has_trng(pka_dev_shim_t *shim)
|
||
+{
|
||
+ if (!shim)
|
||
+ return false;
|
||
+
|
||
+ return (shim->trng_enabled == PKA_SHIM_TRNG_ENABLED);
|
||
+}
|
||
+
|
||
+// Syscall to open ring.
|
||
+int __pka_dev_open_ring(uint32_t ring_id)
|
||
+{
|
||
+ pka_dev_shim_t *shim;
|
||
+ pka_dev_ring_t *ring;
|
||
+
|
||
+ int ret = 0;
|
||
+
|
||
+ if (pka_gbl_config.dev_rings_cnt == 0)
|
||
+ return -EPERM;
|
||
+
|
||
+ ring = pka_dev_get_ring(ring_id);
|
||
+ if (!ring || !ring->shim)
|
||
+ return -ENXIO;
|
||
+
|
||
+ shim = ring->shim;
|
||
+
|
||
+ mutex_lock(&ring->mutex);
|
||
+
|
||
+ if (shim->status == PKA_SHIM_STATUS_UNDEFINED ||
|
||
+ shim->status == PKA_SHIM_STATUS_CREATED ||
|
||
+ shim->status == PKA_SHIM_STATUS_FINALIZED)
|
||
+ {
|
||
+ ret = -EPERM;
|
||
+ goto unlock_return;
|
||
+ }
|
||
+
|
||
+ if (ring->status == PKA_DEV_RING_STATUS_BUSY)
|
||
+ {
|
||
+ ret = -EBUSY;
|
||
+ goto unlock_return;
|
||
+ }
|
||
+
|
||
+ if (ring->status != PKA_DEV_RING_STATUS_INITIALIZED)
|
||
+ {
|
||
+ ret = -EPERM;
|
||
+ goto unlock_return;
|
||
+ }
|
||
+
|
||
+ // Set ring information words.
|
||
+ ret = pka_dev_set_ring_info(ring);
|
||
+ if (ret)
|
||
+ {
|
||
+ PKA_ERROR(PKA_DEV, "failed to set ring information\n");
|
||
+ ret = -EWOULDBLOCK;
|
||
+ goto unlock_return;
|
||
+ }
|
||
+
|
||
+ if (shim->busy_ring_num == 0)
|
||
+ shim->status = PKA_SHIM_STATUS_RUNNING;
|
||
+
|
||
+ ring->status = PKA_DEV_RING_STATUS_BUSY;
|
||
+ shim->busy_ring_num += 1;
|
||
+
|
||
+unlock_return:
|
||
+ mutex_unlock(&ring->mutex);
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+// Open ring.
|
||
+int pka_dev_open_ring(pka_ring_info_t *ring_info)
|
||
+{
|
||
+ return __pka_dev_open_ring(ring_info->ring_id);
|
||
+}
|
||
+
|
||
+// Syscall to close ring.
|
||
+int __pka_dev_close_ring(uint32_t ring_id)
|
||
+{
|
||
+ pka_dev_shim_t *shim;
|
||
+ pka_dev_ring_t *ring;
|
||
+
|
||
+ int ret = 0;
|
||
+
|
||
+ if (pka_gbl_config.dev_rings_cnt == 0)
|
||
+ return -EPERM;
|
||
+
|
||
+ ring = pka_dev_get_ring(ring_id);
|
||
+ if (!ring || !ring->shim)
|
||
+ return -ENXIO;
|
||
+
|
||
+ shim = ring->shim;
|
||
+
|
||
+ mutex_lock(&ring->mutex);
|
||
+
|
||
+ if (shim->status != PKA_SHIM_STATUS_RUNNING &&
|
||
+ ring->status != PKA_DEV_RING_STATUS_BUSY)
|
||
+ {
|
||
+ ret = -EPERM;
|
||
+ goto unlock_return;
|
||
+ }
|
||
+
|
||
+ ring->status = PKA_DEV_RING_STATUS_INITIALIZED;
|
||
+ shim->busy_ring_num -= 1;
|
||
+
|
||
+ if (shim->busy_ring_num == 0)
|
||
+ shim->status = PKA_SHIM_STATUS_STOPPED;
|
||
+
|
||
+unlock_return:
|
||
+ mutex_unlock(&ring->mutex);
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+// Close ring.
|
||
+int pka_dev_close_ring(pka_ring_info_t *ring_info)
|
||
+{
|
||
+ if (ring_info)
|
||
+ {
|
||
+ return __pka_dev_close_ring(ring_info->ring_id);
|
||
+ }
|
||
+
|
||
+ return 0;
|
||
+}
|
||
+
|
||
+// Syscall to map ring into memory (kernel-space).
|
||
+static int __pka_dev_mmap_ring(uint32_t ring_id)
|
||
+{
|
||
+ //not implemented
|
||
+ return -1;
|
||
+}
|
||
+
|
||
+// Map ring into memory (user-space).
|
||
+int pka_dev_mmap_ring(pka_ring_info_t *ring_info)
|
||
+{
|
||
+ return __pka_dev_mmap_ring(ring_info->ring_id);
|
||
+}
|
||
+
|
||
+// Syscall to unmap ring (kernel-space).
|
||
+static int __pka_dev_munmap_ring(uint32_t ring_id)
|
||
+{
|
||
+ //not implemented
|
||
+ return -1;
|
||
+}
|
||
+
|
||
+// Unmap ring (user-space).
|
||
+int pka_dev_munmap_ring(pka_ring_info_t *ring_info)
|
||
+{
|
||
+ if (ring_info)
|
||
+ {
|
||
+ return __pka_dev_munmap_ring(ring_info->ring_id);
|
||
+ }
|
||
+
|
||
+ return 0;
|
||
+}
|
||
+
|
||
diff --git a/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_dev.h b/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_dev.h
|
||
new file mode 100644
|
||
index 000000000..06ac28623
|
||
--- /dev/null
|
||
+++ b/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_dev.h
|
||
@@ -0,0 +1,310 @@
|
||
+//
|
||
+// BSD LICENSE
|
||
+//
|
||
+// Copyright(c) 2016 Mellanox Technologies, Ltd. All rights reserved.
|
||
+// All rights reserved.
|
||
+//
|
||
+// Redistribution and use in source and binary forms, with or without
|
||
+// modification, are permitted provided that the following conditions
|
||
+// are met:
|
||
+//
|
||
+// * Redistributions of source code must retain the above copyright
|
||
+// notice, this list of conditions and the following disclaimer.
|
||
+// * Redistributions in binary form must reproduce the above copyright
|
||
+// notice, this list of conditions and the following disclaimer in
|
||
+// the documentation and/or other materials provided with the
|
||
+// distribution.
|
||
+// * Neither the name of Mellanox Technologies nor the names of its
|
||
+// contributors may be used to endorse or promote products derived
|
||
+// from this software without specific prior written permission.
|
||
+//
|
||
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
+//
|
||
+
|
||
+#ifndef __PKA_DEV_H__
|
||
+#define __PKA_DEV_H__
|
||
+
|
||
+///
|
||
+/// @file
|
||
+///
|
||
+/// API to handle the PKA EIP-154 I/O block (shim). It provides functions
|
||
+/// and data structures to initialize and configure the PKA shim. It's the
|
||
+/// "southband interface" for communication with PKA hardware resources.
|
||
+///
|
||
+
|
||
+#include <linux/mutex.h>
|
||
+#include <linux/types.h>
|
||
+#include "mlxbf_pka_firmware.h"
|
||
+
|
||
+#include <linux/vfio.h>
|
||
+
|
||
+#include "mlxbf_pka_config.h"
|
||
+#include "mlxbf_pka_cpu.h"
|
||
+#include "mlxbf_pka_debug.h"
|
||
+#include "mlxbf_pka_ioctl.h"
|
||
+#include "mlxbf_pka_mmio.h"
|
||
+#include "mlxbf_pka_ring.h"
|
||
+
|
||
+#define PKA_SYSFS_RING_DEVICES "/sys/bus/platform/devices"
|
||
+#define PKA_VFIO_DIR "/dev/vfio"
|
||
+#define PKA_VFIO_CONTAINER_PATH "/dev/vfio/vfio"
|
||
+#define PKA_VFIO_GROUP_FMT "/dev/vfio/%d"
|
||
+
|
||
+#define PKA_DEVFS_RING_DEVICES "/dev/pka/%d"
|
||
+
|
||
+// Defines specific to device-tree and Linux operating system.
|
||
+// Careful, all constants MUST be conform with both devicetree
|
||
+// (DTS) and ACPI tables (SSDT).
|
||
+// *TBD* Better to be detected automatically (or passed as arg
|
||
+// so far).
|
||
+#define PKA_DEV_RING_DT_PREFIX_0 "45000000.eip154:ring@%d"
|
||
+#define PKA_DEV_RING_DT_PREFIX_1 "47000000.eip154:ring@%d"
|
||
+#define PKA_DEV_RING_DT_PREFIX_2 "4d000000.eip154:ring@%d"
|
||
+#define PKA_DEV_RING_DT_PREFIX_3 "4f000000.eip154:ring@%d"
|
||
+#define PKA_DEV_RING_DT_PREFIX_4 "44000000.eip154:ring@%d"
|
||
+#define PKA_DEV_RING_DT_PREFIX_5 "46000000.eip154:ring@%d"
|
||
+#define PKA_DEV_RING_DT_PREFIX_6 "4c000000.eip154:ring@%d"
|
||
+#define PKA_DEV_RING_DT_PREFIX_7 "4e000000.eip154:ring@%d"
|
||
+
|
||
+#define PKA_DEV_RING_ACPI_PREFIX "MLNXBF11:%02x"
|
||
+
|
||
+/// Device resource structure
|
||
+typedef struct
|
||
+{
|
||
+ void *ioaddr; ///< (iore)map-ped version of addr, for
|
||
+ /// driver internal use.
|
||
+
|
||
+ uint64_t base; ///< base address of the device's
|
||
+ /// resource
|
||
+
|
||
+ uint64_t size; ///< size of IO
|
||
+
|
||
+ uint8_t type; ///< type of resource addr points to
|
||
+ int8_t status; ///< status of the resource
|
||
+
|
||
+ char *name; ///< name of the resource
|
||
+} pka_dev_res_t;
|
||
+
|
||
+/// defines for pka_dev_res->type
|
||
+#define PKA_DEV_RES_TYPE_MEM 1 // resource type is memory
|
||
+#define PKA_DEV_RES_TYPE_REG 2 // resource type is register
|
||
+
|
||
+/// defines for pka_dev_res->status
|
||
+#define PKA_DEV_RES_STATUS_MAPPED 1 // the resource is (iore)-mapped
|
||
+#define PKA_DEV_RES_STATUS_UNMAPPED -1 // the resource is unmapped
|
||
+
|
||
+/// PKA Ring resources structure
|
||
+typedef struct
|
||
+{
|
||
+ pka_dev_res_t info_words; // ring information words
|
||
+ pka_dev_res_t counters; // ring counters
|
||
+ pka_dev_res_t window_ram; // window RAM
|
||
+} pka_dev_ring_res_t;
|
||
+
|
||
+typedef struct pka_dev_shim_s pka_dev_shim_t;
|
||
+
|
||
+/// PKA Ring structure
|
||
+typedef struct
|
||
+{
|
||
+ uint32_t ring_id; ///< ring identifier.
|
||
+
|
||
+ pka_dev_shim_t *shim; ///< pointer to the shim associated
|
||
+ /// to the ring.
|
||
+
|
||
+ uint32_t resources_num; ///< number of ring ressources.
|
||
+ pka_dev_ring_res_t resources; ///< ring resources.
|
||
+
|
||
+ pka_dev_hw_ring_info_t *ring_info; ///< ring information.
|
||
+ uint32_t num_cmd_desc; ///< number of command descriptors.
|
||
+
|
||
+ int8_t status; ///< status of the ring.
|
||
+
|
||
+ struct mutex mutex; ///< mutex lock for sharing ring device
|
||
+} pka_dev_ring_t;
|
||
+
|
||
+/// defines for pka_dev_ring->status
|
||
+#define PKA_DEV_RING_STATUS_UNDEFINED -1
|
||
+#define PKA_DEV_RING_STATUS_INITIALIZED 1
|
||
+#define PKA_DEV_RING_STATUS_READY 2
|
||
+#define PKA_DEV_RING_STATUS_BUSY 3
|
||
+#define PKA_DEV_RING_STATUS_FINALIZED 4
|
||
+
|
||
+/// PKA Shim resources structure
|
||
+typedef struct
|
||
+{
|
||
+ pka_dev_res_t buffer_ram; // buffer RAM
|
||
+ pka_dev_res_t master_prog_ram; // master controller program RAM
|
||
+ pka_dev_res_t master_seq_ctrl; // master sequencer controller CSR
|
||
+ pka_dev_res_t aic_csr; // interrupt controller CSRs
|
||
+ pka_dev_res_t trng_csr; // TRNG module CSRs
|
||
+ pka_dev_res_t ext_csr; // MiCA specific CSRs (glue logic)
|
||
+} pka_dev_shim_res_t;
|
||
+
|
||
+#define PKA_DEV_SHIM_RES_CNT 6 // Number of PKA device resources
|
||
+
|
||
+/// Platform global shim resource information
|
||
+typedef struct
|
||
+{
|
||
+ pka_dev_res_t *res_tbl[PKA_DEV_SHIM_RES_CNT];
|
||
+ uint8_t res_cnt;
|
||
+} pka_dev_gbl_shim_res_info_t;
|
||
+
|
||
+struct pka_dev_mem_res
|
||
+{
|
||
+ uint64_t eip154_base; ///< base address for eip154 mmio registers
|
||
+ uint64_t eip154_size; ///< eip154 mmio register region size
|
||
+
|
||
+ uint64_t wndw_ram_off_mask; ///< common offset mask for alt window ram and window ram
|
||
+ uint64_t wndw_ram_base; ///< base address for window ram
|
||
+ uint64_t wndw_ram_size; ///< window ram region size
|
||
+
|
||
+ uint64_t alt_wndw_ram_0_base; ///< base address for alternate window ram 0
|
||
+ uint64_t alt_wndw_ram_1_base; ///< base address for alternate window ram 1
|
||
+ uint64_t alt_wndw_ram_2_base; ///< base address for alternate window ram 2
|
||
+ uint64_t alt_wndw_ram_3_base; ///< base address for alternate window ram 3
|
||
+ uint64_t alt_wndw_ram_size; ///< alternate window ram regions size
|
||
+
|
||
+ uint64_t csr_base; ///< base address for csr registers
|
||
+ uint64_t csr_size; ///< csr area size
|
||
+};
|
||
+
|
||
+
|
||
+/// PKA Shim structure
|
||
+struct pka_dev_shim_s
|
||
+{
|
||
+ struct pka_dev_mem_res mem_res;
|
||
+
|
||
+ uint64_t trng_err_cycle; ///< TRNG error cycle
|
||
+
|
||
+ uint32_t shim_id; ///< shim identifier
|
||
+
|
||
+ uint32_t rings_num; ///< Number of supported rings (hw
|
||
+ /// specific)
|
||
+
|
||
+ pka_dev_ring_t **rings; ///< pointer to rings which belong to
|
||
+ /// the shim.
|
||
+
|
||
+ uint8_t ring_priority; ///< specify the priority in which
|
||
+ /// rings are handled.
|
||
+
|
||
+ uint8_t ring_type; ///< indicates whether the result
|
||
+ /// ring delivers results strictly
|
||
+ /// in-order.
|
||
+
|
||
+ pka_dev_shim_res_t resources; ///< shim resources
|
||
+
|
||
+ uint8_t window_ram_split; ///< Window RAM mode. if non-zero,
|
||
+ /// the splitted window RAM scheme
|
||
+ /// is used.
|
||
+
|
||
+ uint32_t busy_ring_num; ///< Number of active rings (rings in
|
||
+ /// busy state)
|
||
+
|
||
+ uint8_t trng_enabled; ///< Whether the TRNG engine is
|
||
+ /// enabled.
|
||
+
|
||
+ int8_t status; ///< status of the shim
|
||
+
|
||
+ struct mutex mutex; ///< mutex lock for sharing shim
|
||
+};
|
||
+
|
||
+/// defines for pka_dev_shim->status
|
||
+#define PKA_SHIM_STATUS_UNDEFINED -1
|
||
+#define PKA_SHIM_STATUS_CREATED 1
|
||
+#define PKA_SHIM_STATUS_INITIALIZED 2
|
||
+#define PKA_SHIM_STATUS_RUNNING 3
|
||
+#define PKA_SHIM_STATUS_STOPPED 4
|
||
+#define PKA_SHIM_STATUS_FINALIZED 5
|
||
+
|
||
+/// defines for pka_dev_shim->window_ram_split
|
||
+#define PKA_SHIM_WINDOW_RAM_SPLIT_ENABLED 1 // window RAM is splitted into
|
||
+ // 4 * 16KB blocks
|
||
+
|
||
+#define PKA_SHIM_WINDOW_RAM_SPLIT_DISABLED 2 // window RAM is not splitted
|
||
+ // and occupies 64KB
|
||
+
|
||
+/// defines for pka_dev_shim->trng_enabled
|
||
+#define PKA_SHIM_TRNG_ENABLED 1
|
||
+#define PKA_SHIM_TRNG_DISABLED 0
|
||
+
|
||
+/// Platform global configuration structure
|
||
+typedef struct
|
||
+{
|
||
+ uint32_t dev_shims_cnt; ///< number of registered PKA shims.
|
||
+ uint32_t dev_rings_cnt; ///< number of registered Rings.
|
||
+
|
||
+ pka_dev_shim_t *dev_shims[PKA_MAX_NUM_IO_BLOCKS]; ///< table of registered
|
||
+ /// PKA shims.
|
||
+
|
||
+ pka_dev_ring_t *dev_rings[PKA_MAX_NUM_RINGS]; ///< table of registered
|
||
+ /// Rings.
|
||
+} pka_dev_gbl_config_t;
|
||
+
|
||
+extern pka_dev_gbl_config_t pka_gbl_config;
|
||
+
|
||
+/// Ring getter for pka_dev_gbl_config_t structure which holds all system
|
||
+/// global configuration. This configuration is shared and common to kernel
|
||
+/// device driver associated with PKA hardware.
|
||
+pka_dev_ring_t *pka_dev_get_ring(uint32_t ring_id);
|
||
+
|
||
+/// Shim getter for pka_dev_gbl_config_t structure which holds all system
|
||
+/// global configuration. This configuration is shared and common to kernel
|
||
+/// device driver associated with PKA hardware.
|
||
+pka_dev_shim_t *pka_dev_get_shim(uint32_t shim_id);
|
||
+
|
||
+/// Register a Ring. This function initializes a Ring and configures its
|
||
+/// related resources, and returns a pointer to that ring.
|
||
+pka_dev_ring_t *pka_dev_register_ring(uint32_t ring_id, uint32_t shim_id);
|
||
+
|
||
+/// Unregister a Ring
|
||
+int pka_dev_unregister_ring(pka_dev_ring_t *ring);
|
||
+
|
||
+/// Register PKA IO block. This function initializes a shim and configures its
|
||
+/// related resources, and returns a pointer to that ring.
|
||
+pka_dev_shim_t *pka_dev_register_shim(uint32_t shim_id, uint8_t shim_fw_id,
|
||
+ struct pka_dev_mem_res *mem_res);
|
||
+
|
||
+/// Unregister PKA IO block
|
||
+int pka_dev_unregister_shim(pka_dev_shim_t *shim);
|
||
+
|
||
+/// Reset a Ring.
|
||
+int pka_dev_reset_ring(pka_dev_ring_t *ring);
|
||
+
|
||
+/// Clear ring counters. This function resets the master sequencer controller
|
||
+/// to clear the command and result counters.
|
||
+int pka_dev_clear_ring_counters(pka_dev_ring_t *ring);
|
||
+
|
||
+/// Read data from the TRNG. Drivers can fill up to 'cnt' bytes of data into
|
||
+/// the buffer 'data'. The buffer 'data' is aligned for any type and 'cnt' is
|
||
+/// a multiple of 4.
|
||
+int pka_dev_trng_read(pka_dev_shim_t *shim, uint32_t *data, uint32_t cnt);
|
||
+
|
||
+/// Return true if the TRNG engine is enabled, false if not.
|
||
+bool pka_dev_has_trng(pka_dev_shim_t *shim);
|
||
+
|
||
+/// Open the file descriptor associated with ring. It returns an integer value,
|
||
+/// which is used to refer to the file. If un-successful, it returns a negative
|
||
+/// error.
|
||
+int pka_dev_open_ring(pka_ring_info_t *ring_info);
|
||
+
|
||
+/// Close the file descriptor associated with ring. The function returns 0 if
|
||
+/// successful, negative value to indicate an error.
|
||
+int pka_dev_close_ring(pka_ring_info_t *ring_info);
|
||
+
|
||
+/// Map ring resources.
|
||
+int pka_dev_mmap_ring(pka_ring_info_t *ring_info);
|
||
+
|
||
+/// Unmap ring resources.
|
||
+int pka_dev_munmap_ring(pka_ring_info_t *ring_info);
|
||
+
|
||
+#endif /// __PKA_DEV_H__
|
||
diff --git a/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_drv.c b/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_drv.c
|
||
new file mode 100644
|
||
index 000000000..b8b5a465e
|
||
--- /dev/null
|
||
+++ b/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_drv.c
|
||
@@ -0,0 +1,1398 @@
|
||
+// SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause
|
||
+
|
||
+#include <linux/acpi.h>
|
||
+#include <linux/cdev.h>
|
||
+#include <linux/device.h>
|
||
+#include <linux/hw_random.h>
|
||
+#include <linux/interrupt.h>
|
||
+#include <linux/iommu.h>
|
||
+#include <linux/kernel.h>
|
||
+#include <linux/module.h>
|
||
+#include <linux/mutex.h>
|
||
+#include <linux/of_device.h>
|
||
+#include <linux/of_irq.h>
|
||
+#include <linux/platform_device.h>
|
||
+#include <linux/slab.h>
|
||
+#include <linux/types.h>
|
||
+#include <linux/uaccess.h>
|
||
+#include <linux/vfio.h>
|
||
+
|
||
+#include "mlxbf_pka_dev.h"
|
||
+
|
||
+
|
||
+#define PKA_DRIVER_VERSION "v3.0"
|
||
+#define PKA_DRIVER_NAME "pka-mlxbf"
|
||
+
|
||
+#define PKA_DRIVER_DESCRIPTION "BlueField PKA driver"
|
||
+
|
||
+#define PKA_DEVICE_COMPAT "mlx,mlxbf-pka"
|
||
+#define PKA_RING_DEVICE_COMPAT "mlx,mlxbf-pka-ring"
|
||
+
|
||
+#define PKA_DEVICE_ACPIHID_BF1 "MLNXBF10"
|
||
+#define PKA_RING_DEVICE_ACPIHID_BF1 "MLNXBF11"
|
||
+
|
||
+#define PKA_DEVICE_ACPIHID_BF2 "MLNXBF20"
|
||
+#define PKA_RING_DEVICE_ACPIHID_BF2 "MLNXBF21"
|
||
+
|
||
+#define PKA_DEVICE_ACCESS_MODE 0666
|
||
+
|
||
+#define PKA_DEVICE_RES_CNT 7
|
||
+enum pka_mem_res_idx {
|
||
+ PKA_ACPI_EIP154_IDX = 0,
|
||
+ PKA_ACPI_WNDW_RAM_IDX,
|
||
+ PKA_ACPI_ALT_WNDW_RAM_0_IDX,
|
||
+ PKA_ACPI_ALT_WNDW_RAM_1_IDX,
|
||
+ PKA_ACPI_ALT_WNDW_RAM_2_IDX,
|
||
+ PKA_ACPI_ALT_WNDW_RAM_3_IDX,
|
||
+ PKA_ACPI_CSR_IDX
|
||
+};
|
||
+
|
||
+enum pka_plat_type {
|
||
+ PKA_PLAT_TYPE_BF1 = 0, /* Platform type Bluefield-1 */
|
||
+ PKA_PLAT_TYPE_BF2 /* Platform type Bluefield-2 */
|
||
+};
|
||
+
|
||
+static DEFINE_MUTEX(pka_drv_lock);
|
||
+
|
||
+static uint32_t pka_device_cnt;
|
||
+static uint32_t pka_ring_device_cnt;
|
||
+
|
||
+const char pka_compat[] = PKA_DEVICE_COMPAT;
|
||
+const char pka_ring_compat[] = PKA_RING_DEVICE_COMPAT;
|
||
+
|
||
+const char pka_acpihid_bf1[] = PKA_DEVICE_ACPIHID_BF1;
|
||
+const char pka_ring_acpihid_bf1[] = PKA_RING_DEVICE_ACPIHID_BF1;
|
||
+
|
||
+const char pka_acpihid_bf2[] = PKA_DEVICE_ACPIHID_BF2;
|
||
+const char pka_ring_acpihid_bf2[] = PKA_RING_DEVICE_ACPIHID_BF2;
|
||
+
|
||
+struct pka_drv_plat_info {
|
||
+ enum pka_plat_type type;
|
||
+ uint8_t fw_id;
|
||
+};
|
||
+
|
||
+static struct pka_drv_plat_info pka_drv_plat[] = {
|
||
+ [PKA_PLAT_TYPE_BF1] = {
|
||
+ .type = PKA_PLAT_TYPE_BF1,
|
||
+ .fw_id = PKA_FIRMWARE_IMAGE_0_ID
|
||
+ },
|
||
+ [PKA_PLAT_TYPE_BF2] = {
|
||
+ .type = PKA_PLAT_TYPE_BF2,
|
||
+ .fw_id = PKA_FIRMWARE_IMAGE_2_ID
|
||
+ }
|
||
+};
|
||
+
|
||
+static const struct acpi_device_id pka_drv_acpi_ids[] = {
|
||
+ { PKA_DEVICE_ACPIHID_BF1, (kernel_ulong_t)&pka_drv_plat[PKA_PLAT_TYPE_BF1] },
|
||
+ { PKA_RING_DEVICE_ACPIHID_BF1, 0 },
|
||
+ { PKA_DEVICE_ACPIHID_BF2, (kernel_ulong_t)&pka_drv_plat[PKA_PLAT_TYPE_BF2] },
|
||
+ { PKA_RING_DEVICE_ACPIHID_BF2, 0 },
|
||
+ {},
|
||
+};
|
||
+
|
||
+struct pka_info {
|
||
+ struct device *dev; /* the device this info belongs to */
|
||
+ const char *name; /* device name */
|
||
+ const char *version; /* device driver version */
|
||
+ const char *compat;
|
||
+ const char *acpihid;
|
||
+ uint8_t flag;
|
||
+ struct module *module;
|
||
+ void *priv; /* optional private data */
|
||
+};
|
||
+
|
||
+/* defines for pka_info->flags */
|
||
+#define PKA_DRIVER_FLAG_RING_DEVICE 1
|
||
+#define PKA_DRIVER_FLAG_DEVICE 2
|
||
+
|
||
+struct pka_platdata {
|
||
+ struct platform_device *pdev;
|
||
+ struct pka_info *info;
|
||
+ spinlock_t lock;
|
||
+ unsigned long irq_flags;
|
||
+};
|
||
+
|
||
+/* Bits in pka_platdata.irq_flags */
|
||
+enum {
|
||
+ PKA_IRQ_DISABLED = 0,
|
||
+};
|
||
+
|
||
+struct pka_ring_region {
|
||
+ u64 off;
|
||
+ u64 addr;
|
||
+ resource_size_t size;
|
||
+ u32 flags;
|
||
+ u32 type;
|
||
+ void __iomem *ioaddr;
|
||
+};
|
||
+
|
||
+/* defines for pka_ring_region->flags */
|
||
+#define PKA_RING_REGION_FLAG_READ (1 << 0) /* Region supports read */
|
||
+#define PKA_RING_REGION_FLAG_WRITE (1 << 1) /* Region supports write */
|
||
+#define PKA_RING_REGION_FLAG_MMAP (1 << 2) /* Region supports mmap */
|
||
+
|
||
+/* defines for pka_ring_region->type */
|
||
+#define PKA_RING_RES_TYPE_NONE 0
|
||
+#define PKA_RING_RES_TYPE_WORDS 1 /* info control/status words */
|
||
+#define PKA_RING_RES_TYPE_CNTRS 2 /* count registers */
|
||
+#define PKA_RING_RES_TYPE_MEM 4 /* window RAM region */
|
||
+
|
||
+#define PKA_DRIVER_RING_DEV_MAX PKA_MAX_NUM_RINGS
|
||
+
|
||
+struct pka_ring_device {
|
||
+ struct pka_info *info;
|
||
+ struct device *device;
|
||
+ struct iommu_group *group;
|
||
+ int32_t group_id;
|
||
+ uint32_t device_id;
|
||
+ uint32_t parent_device_id;
|
||
+ struct mutex mutex;
|
||
+ uint32_t flags;
|
||
+ struct module *parent_module;
|
||
+ pka_dev_ring_t *ring;
|
||
+ int minor;
|
||
+ uint32_t num_regions;
|
||
+ struct pka_ring_region *regions;
|
||
+};
|
||
+
|
||
+#define PKA_DRIVER_DEV_MAX PKA_MAX_NUM_IO_BLOCKS
|
||
+#define PKA_DRIVER_RING_NUM_REGIONS_MAX PKA_MAX_NUM_RING_RESOURCES
|
||
+
|
||
+/* defines for region index */
|
||
+#define PKA_RING_REGION_WORDS_IDX 0
|
||
+#define PKA_RING_REGION_CNTRS_IDX 1
|
||
+#define PKA_RING_REGION_MEM_IDX 2
|
||
+
|
||
+#define PKA_RING_REGION_OFFSET_SHIFT 40
|
||
+#define PKA_RING_REGION_OFFSET_MASK \
|
||
+ (((u64)(1) << PKA_RING_REGION_OFFSET_SHIFT) - 1)
|
||
+
|
||
+#define PKA_RING_OFFSET_TO_INDEX(off) \
|
||
+ (off >> PKA_RING_REGION_OFFSET_SHIFT)
|
||
+
|
||
+#define PKA_RING_REGION_INDEX_TO_OFFSET(index) \
|
||
+ ((u64)(index) << PKA_RING_REGION_OFFSET_SHIFT)
|
||
+
|
||
+struct pka_device {
|
||
+ struct pka_info *info;
|
||
+ struct device *device;
|
||
+ uint32_t device_id;
|
||
+ uint8_t fw_id; /* firmware identifier */
|
||
+ struct mutex mutex;
|
||
+ struct resource *resource[PKA_DEVICE_RES_CNT];
|
||
+ pka_dev_shim_t *shim;
|
||
+ long irq; /* interrupt number */
|
||
+ struct hwrng rng;
|
||
+};
|
||
+
|
||
+/* defines for pka_device->irq */
|
||
+#define PKA_IRQ_CUSTOM -1
|
||
+#define PKA_IRQ_NONE 0
|
||
+
|
||
+/* Hardware interrupt handler */
|
||
+static irqreturn_t pka_drv_irq_handler(int irq, void *device)
|
||
+{
|
||
+ struct pka_device *pka_dev = (struct pka_device *)device;
|
||
+ struct platform_device *pdev = to_platform_device(pka_dev->device);
|
||
+ struct pka_platdata *priv = platform_get_drvdata(pdev);
|
||
+
|
||
+ PKA_DEBUG(PKA_DRIVER,
|
||
+ "handle irq in device %u\n", pka_dev->device_id);
|
||
+
|
||
+ /* Just disable the interrupt in the interrupt controller */
|
||
+
|
||
+ spin_lock(&priv->lock);
|
||
+ if (!__test_and_set_bit(PKA_IRQ_DISABLED, &priv->irq_flags))
|
||
+ disable_irq_nosync(irq);
|
||
+ spin_unlock(&priv->lock);
|
||
+
|
||
+ return IRQ_HANDLED;
|
||
+}
|
||
+
|
||
+static int pka_drv_register_irq(struct pka_device *pka_dev)
|
||
+{
|
||
+ if (pka_dev->irq && (pka_dev->irq != PKA_IRQ_CUSTOM)) {
|
||
+ /*
|
||
+ * Allow sharing the irq among several devices (child devices
|
||
+ * so far)
|
||
+ */
|
||
+ return request_irq(pka_dev->irq,
|
||
+ (irq_handler_t) pka_drv_irq_handler,
|
||
+ IRQF_SHARED, pka_dev->info->name,
|
||
+ pka_dev);
|
||
+ }
|
||
+
|
||
+ return -ENXIO;
|
||
+}
|
||
+
|
||
+static int pka_drv_ring_regions_init(struct pka_ring_device *ring_dev)
|
||
+{
|
||
+ struct pka_ring_region *region;
|
||
+ pka_dev_ring_t *ring;
|
||
+ pka_dev_res_t *res;
|
||
+ uint32_t num_regions;
|
||
+
|
||
+ ring = ring_dev->ring;
|
||
+ if (!ring || !ring->shim)
|
||
+ return -ENXIO;
|
||
+
|
||
+ num_regions = ring->resources_num;
|
||
+ ring_dev->num_regions = num_regions;
|
||
+ ring_dev->regions = kcalloc(num_regions,
|
||
+ sizeof(struct pka_ring_region),
|
||
+ GFP_KERNEL);
|
||
+ if (!ring_dev->regions)
|
||
+ return -ENOMEM;
|
||
+
|
||
+ /* Information words region */
|
||
+ res = &ring->resources.info_words;
|
||
+ region = &ring_dev->regions[PKA_RING_REGION_WORDS_IDX];
|
||
+ /* map offset to the physical address */
|
||
+ region->off =
|
||
+ PKA_RING_REGION_INDEX_TO_OFFSET(PKA_RING_REGION_WORDS_IDX);
|
||
+ region->addr = res->base;
|
||
+ region->size = res->size;
|
||
+ region->type = PKA_RING_RES_TYPE_WORDS;
|
||
+ region->flags |= (PKA_RING_REGION_FLAG_MMAP |
|
||
+ PKA_RING_REGION_FLAG_READ |
|
||
+ PKA_RING_REGION_FLAG_WRITE);
|
||
+
|
||
+ /* Count regiters region */
|
||
+ res = &ring->resources.counters;
|
||
+ region = &ring_dev->regions[PKA_RING_REGION_CNTRS_IDX];
|
||
+ /* map offset to the physical address */
|
||
+ region->off =
|
||
+ PKA_RING_REGION_INDEX_TO_OFFSET(PKA_RING_REGION_CNTRS_IDX);
|
||
+ region->addr = res->base;
|
||
+ region->size = res->size;
|
||
+ region->type = PKA_RING_RES_TYPE_CNTRS;
|
||
+ region->flags |= (PKA_RING_REGION_FLAG_MMAP |
|
||
+ PKA_RING_REGION_FLAG_READ |
|
||
+ PKA_RING_REGION_FLAG_WRITE);
|
||
+
|
||
+ /* Window ram region */
|
||
+ res = &ring->resources.window_ram;
|
||
+ region = &ring_dev->regions[PKA_RING_REGION_MEM_IDX];
|
||
+ /* map offset to the physical address */
|
||
+ region->off =
|
||
+ PKA_RING_REGION_INDEX_TO_OFFSET(PKA_RING_REGION_MEM_IDX);
|
||
+ region->addr = res->base;
|
||
+ region->size = res->size;
|
||
+ region->type = PKA_RING_RES_TYPE_MEM;
|
||
+ region->flags |= (PKA_RING_REGION_FLAG_MMAP |
|
||
+ PKA_RING_REGION_FLAG_READ |
|
||
+ PKA_RING_REGION_FLAG_WRITE);
|
||
+
|
||
+ return 0;
|
||
+}
|
||
+
|
||
+static void pka_drv_ring_regions_cleanup(struct pka_ring_device *ring_dev)
|
||
+{
|
||
+ /* clear vfio device regions */
|
||
+ ring_dev->num_regions = 0;
|
||
+ kfree(ring_dev->regions);
|
||
+}
|
||
+
|
||
+static int pka_drv_ring_open(void *device_data)
|
||
+{
|
||
+ struct pka_ring_device *ring_dev = device_data;
|
||
+ struct pka_info *info = ring_dev->info;
|
||
+ pka_ring_info_t ring_info;
|
||
+
|
||
+ int error;
|
||
+
|
||
+ PKA_DEBUG(PKA_DRIVER,
|
||
+ "open ring device %u (device_data:%p)\n",
|
||
+ ring_dev->device_id, ring_dev);
|
||
+
|
||
+ if (!try_module_get(info->module))
|
||
+ return -ENODEV;
|
||
+
|
||
+ ring_info.ring_id = ring_dev->device_id;
|
||
+ error = pka_dev_open_ring(&ring_info);
|
||
+ if (error) {
|
||
+ PKA_DEBUG(PKA_DRIVER,
|
||
+ "failed to open ring %u\n", ring_dev->device_id);
|
||
+ module_put(info->module);
|
||
+ return error;
|
||
+ }
|
||
+
|
||
+ /* Initialize regions */
|
||
+ error = pka_drv_ring_regions_init(ring_dev);
|
||
+ if (error) {
|
||
+ PKA_DEBUG(PKA_DRIVER, "failed to initialize regions\n");
|
||
+ pka_dev_close_ring(&ring_info);
|
||
+ module_put(info->module);
|
||
+ return error;
|
||
+ }
|
||
+
|
||
+ return 0;
|
||
+}
|
||
+
|
||
+static void pka_drv_ring_release(void *device_data)
|
||
+{
|
||
+ struct pka_ring_device *ring_dev = device_data;
|
||
+ struct pka_info *info = ring_dev->info;
|
||
+ pka_ring_info_t ring_info;
|
||
+
|
||
+ int error;
|
||
+
|
||
+ PKA_DEBUG(PKA_DRIVER,
|
||
+ "release ring device %u (device_data:%p)\n",
|
||
+ ring_dev->device_id, ring_dev);
|
||
+
|
||
+ pka_drv_ring_regions_cleanup(ring_dev);
|
||
+
|
||
+ ring_info.ring_id = ring_dev->device_id;
|
||
+ error = pka_dev_close_ring(&ring_info);
|
||
+ if (error)
|
||
+ PKA_DEBUG(PKA_DRIVER,
|
||
+ "failed to close ring %u\n",
|
||
+ ring_dev->device_id);
|
||
+
|
||
+ module_put(info->module);
|
||
+}
|
||
+
|
||
+static int pka_drv_ring_mmap_region(struct pka_ring_region region,
|
||
+ struct vm_area_struct *vma)
|
||
+{
|
||
+ u64 req_len, pgoff, req_start;
|
||
+
|
||
+ req_len = vma->vm_end - vma->vm_start;
|
||
+ pgoff = vma->vm_pgoff &
|
||
+ ((1U << (PKA_RING_REGION_OFFSET_SHIFT - PAGE_SHIFT)) - 1);
|
||
+ req_start = pgoff << PAGE_SHIFT;
|
||
+
|
||
+ region.size = roundup(region.size, PAGE_SIZE);
|
||
+
|
||
+ if (req_start + req_len > region.size)
|
||
+ return -EINVAL;
|
||
+
|
||
+ vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
||
+ vma->vm_pgoff = (region.addr >> PAGE_SHIFT) + pgoff;
|
||
+
|
||
+ return remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff,
|
||
+ req_len, vma->vm_page_prot);
|
||
+}
|
||
+
|
||
+static int pka_drv_ring_mmap(void *device_data, struct vm_area_struct *vma)
|
||
+{
|
||
+ struct pka_ring_device *ring_dev = device_data;
|
||
+ struct pka_ring_region *region;
|
||
+ unsigned int index;
|
||
+
|
||
+ PKA_DEBUG(PKA_DRIVER, "mmap device %u\n", ring_dev->device_id);
|
||
+
|
||
+ index = vma->vm_pgoff >> (PKA_RING_REGION_OFFSET_SHIFT - PAGE_SHIFT);
|
||
+
|
||
+ if (vma->vm_end < vma->vm_start)
|
||
+ return -EINVAL;
|
||
+ if (!(vma->vm_flags & VM_SHARED))
|
||
+ return -EINVAL;
|
||
+ if (index >= ring_dev->num_regions)
|
||
+ return -EINVAL;
|
||
+ if (vma->vm_start & ~PAGE_MASK)
|
||
+ return -EINVAL;
|
||
+ if (vma->vm_end & ~PAGE_MASK)
|
||
+ return -EINVAL;
|
||
+
|
||
+ region = &ring_dev->regions[index];
|
||
+
|
||
+ if (!(region->flags & PKA_RING_REGION_FLAG_MMAP))
|
||
+ return -EINVAL;
|
||
+
|
||
+ if (!(region->flags & PKA_RING_REGION_FLAG_READ)
|
||
+ && (vma->vm_flags & VM_READ))
|
||
+ return -EINVAL;
|
||
+
|
||
+ if (!(region->flags & PKA_RING_REGION_FLAG_WRITE)
|
||
+ && (vma->vm_flags & VM_WRITE))
|
||
+ return -EINVAL;
|
||
+
|
||
+ vma->vm_private_data = ring_dev;
|
||
+
|
||
+ if (region->type & PKA_RING_RES_TYPE_CNTRS ||
|
||
+ region->type & PKA_RING_RES_TYPE_MEM)
|
||
+ return pka_drv_ring_mmap_region(ring_dev->regions[index], vma);
|
||
+
|
||
+ if (region->type & PKA_RING_RES_TYPE_WORDS)
|
||
+ /*
|
||
+ * Currently user space is not allowed to access this
|
||
+ * region.
|
||
+ */
|
||
+ return -EINVAL;
|
||
+
|
||
+ return -EINVAL;
|
||
+}
|
||
+
|
||
+static long pka_drv_ring_ioctl(void *device_data,
|
||
+ unsigned int cmd, unsigned long arg)
|
||
+{
|
||
+ struct pka_ring_device *ring_dev = device_data;
|
||
+
|
||
+ int error = -ENOTTY;
|
||
+
|
||
+ if (cmd == PKA_RING_GET_REGION_INFO) {
|
||
+ pka_dev_region_info_t info;
|
||
+
|
||
+ info.mem_index = PKA_RING_REGION_MEM_IDX;
|
||
+ info.mem_offset = ring_dev->regions[info.mem_index].off;
|
||
+ info.mem_size = ring_dev->regions[info.mem_index].size;
|
||
+
|
||
+ info.reg_index = PKA_RING_REGION_CNTRS_IDX;
|
||
+ info.reg_offset = ring_dev->regions[info.reg_index].off;
|
||
+ info.reg_size = ring_dev->regions[info.reg_index].size;
|
||
+
|
||
+ return copy_to_user((void __user *)arg, &info, sizeof(info)) ?
|
||
+ -EFAULT : 0;
|
||
+
|
||
+ } else if (cmd == PKA_GET_RING_INFO) {
|
||
+ pka_dev_hw_ring_info_t *this_ring_info;
|
||
+ pka_dev_hw_ring_info_t hw_ring_info;
|
||
+
|
||
+ this_ring_info = ring_dev->ring->ring_info;
|
||
+
|
||
+ hw_ring_info.cmmd_base = this_ring_info->cmmd_base;
|
||
+ hw_ring_info.rslt_base = this_ring_info->rslt_base;
|
||
+ hw_ring_info.size = this_ring_info->size;
|
||
+ hw_ring_info.host_desc_size = this_ring_info->host_desc_size;
|
||
+ hw_ring_info.in_order = this_ring_info->in_order;
|
||
+ hw_ring_info.cmmd_rd_ptr = this_ring_info->cmmd_rd_ptr;
|
||
+ hw_ring_info.rslt_wr_ptr = this_ring_info->rslt_wr_ptr;
|
||
+ hw_ring_info.cmmd_rd_stats = this_ring_info->cmmd_rd_ptr;
|
||
+ hw_ring_info.rslt_wr_stats = this_ring_info->rslt_wr_stats;
|
||
+
|
||
+ return copy_to_user((void __user *)arg, &hw_ring_info,
|
||
+ sizeof(hw_ring_info)) ? -EFAULT : 0;
|
||
+ } else if (cmd == PKA_CLEAR_RING_COUNTERS) {
|
||
+ return pka_dev_clear_ring_counters(ring_dev->ring);
|
||
+ } else if (cmd == PKA_GET_RANDOM_BYTES) {
|
||
+ pka_dev_trng_info_t *trng_data;
|
||
+ pka_dev_shim_t *shim;
|
||
+ bool trng_present;
|
||
+ uint32_t byte_cnt;
|
||
+ uint32_t *data;
|
||
+ int ret;
|
||
+
|
||
+ ret = -ENOENT;
|
||
+ shim = ring_dev->ring->shim;
|
||
+ trng_data = (pka_dev_trng_info_t *)arg;
|
||
+ /*
|
||
+ * We need byte count which is multiple of 4 as
|
||
+ * required by pka_dev_trng_read() interface.
|
||
+ */
|
||
+ byte_cnt = round_up(trng_data->count, 4);
|
||
+
|
||
+ data = kzalloc(byte_cnt, GFP_KERNEL);
|
||
+ if (data == NULL) {
|
||
+ PKA_DEBUG(PKA_DRIVER, "failed to allocate memory.\n");
|
||
+ return -ENOMEM;
|
||
+ }
|
||
+
|
||
+ trng_present = pka_dev_has_trng(shim);
|
||
+ if (!trng_present) {
|
||
+ kfree(data);
|
||
+ return ret;
|
||
+ }
|
||
+
|
||
+ ret = pka_dev_trng_read(shim, data, byte_cnt);
|
||
+ if (ret) {
|
||
+ PKA_DEBUG(PKA_DRIVER, "TRNG failed %d\n", ret);
|
||
+ kfree(data);
|
||
+ return ret;
|
||
+ }
|
||
+
|
||
+ ret = copy_to_user((void __user *)(trng_data->data), data, trng_data->count);
|
||
+ kfree(data);
|
||
+ return ret ? -EFAULT : 0;
|
||
+ }
|
||
+
|
||
+ return error;
|
||
+}
|
||
+
|
||
+#ifdef CONFIG_PKA_VFIO_IOMMU
|
||
+static const struct vfio_device_ops pka_ring_vfio_ops = {
|
||
+ .name = PKA_DRIVER_NAME,
|
||
+ .open = pka_drv_ring_open,
|
||
+ .release = pka_drv_ring_release,
|
||
+ .ioctl = pka_drv_ring_ioctl,
|
||
+ .mmap = pka_drv_ring_mmap,
|
||
+};
|
||
+
|
||
+static int pka_drv_add_ring_device(struct pka_ring_device *ring_dev)
|
||
+{
|
||
+ struct device *dev = ring_dev->device;
|
||
+ int ret;
|
||
+
|
||
+ ring_dev->parent_module = THIS_MODULE;
|
||
+ ring_dev->flags = VFIO_DEVICE_FLAGS_PLATFORM;
|
||
+
|
||
+ ring_dev->group = vfio_iommu_group_get(dev);
|
||
+ if (!ring_dev->group) {
|
||
+ PKA_DEBUG(PKA_DRIVER,
|
||
+ "failed to get IOMMU group for device %d\n",
|
||
+ ring_dev->device_id);
|
||
+ return -EINVAL;
|
||
+ }
|
||
+
|
||
+ /*
|
||
+ * Note that this call aims to add the given child device to a vfio
|
||
+ * group. This function creates a new driver data for the device
|
||
+ * different from the structure passed as a 3rd argument - i.e.
|
||
+ * pka_ring_dev. The struct newly created corresponds to 'vfio_device'
|
||
+ * structure which includes a field called 'device_data' that holds
|
||
+ * the initialized 'pka_ring_dev'. So to retrieve our private data,
|
||
+ * we must call 'dev_get_drvdata()' which returns the 'vfio_device'
|
||
+ * struct and access its 'device_data' field. Here one can use
|
||
+ * 'pka_platdata' structure instead to be consistent with the parent
|
||
+ * devices, and have a common driver data structure which will be used
|
||
+ * to manage devices - 'pka_drv_remove()' for instance. Since the VFIO
|
||
+ * framework alters the driver data and introduce an indirection, it
|
||
+ * is no more relevant to have a common driver data structure. Hence,
|
||
+ * we prefer to set the struct 'pka_vfio_dev' instead to avoid
|
||
+ * indirection when we have to retrieve this structure during the
|
||
+ * open(), mmap(), and ioctl() calls. Since, this structure is used
|
||
+ * as driver data here, it will be immediately reachable for these
|
||
+ * functions (see first argument passed (void *device_data) passed
|
||
+ * to those functions).
|
||
+ */
|
||
+ ret = vfio_add_group_dev(dev, &pka_ring_vfio_ops, ring_dev);
|
||
+ if (ret) {
|
||
+ PKA_DEBUG(PKA_DRIVER,
|
||
+ "failed to add group device %d\n",
|
||
+ ring_dev->device_id);
|
||
+ vfio_iommu_group_put(ring_dev->group, dev);
|
||
+ return ret;
|
||
+ }
|
||
+
|
||
+ ring_dev->group_id = iommu_group_id(ring_dev->group);
|
||
+
|
||
+ PKA_DEBUG(PKA_DRIVER,
|
||
+ "ring device %d bus:%p iommu_ops:%p group:%p\n",
|
||
+ ring_dev->device_id,
|
||
+ dev->bus,
|
||
+ dev->bus->iommu_ops,
|
||
+ ring_dev->group);
|
||
+
|
||
+ return 0;
|
||
+}
|
||
+
|
||
+static struct pka_ring_device *pka_drv_del_ring_device(struct device *dev)
|
||
+{
|
||
+ struct pka_ring_device *ring_dev;
|
||
+
|
||
+ ring_dev = vfio_del_group_dev(dev);
|
||
+ if (ring_dev)
|
||
+ vfio_iommu_group_put(dev->iommu_group, dev);
|
||
+
|
||
+ return ring_dev;
|
||
+}
|
||
+
|
||
+static int pka_drv_init_class(void)
|
||
+{
|
||
+ return 0;
|
||
+}
|
||
+
|
||
+static void pka_drv_destroy_class(void)
|
||
+{
|
||
+}
|
||
+#else
|
||
+static struct pka {
|
||
+ struct class *class;
|
||
+ struct idr ring_idr;
|
||
+ struct mutex ring_lock;
|
||
+ struct cdev ring_cdev;
|
||
+ dev_t ring_devt;
|
||
+} pka;
|
||
+
|
||
+static int pka_drv_open(struct inode *inode, struct file *filep)
|
||
+{
|
||
+ struct pka_ring_device *ring_dev;
|
||
+ int ret;
|
||
+
|
||
+ ring_dev = idr_find(&pka.ring_idr, iminor(inode));
|
||
+ if (!ring_dev) {
|
||
+ PKA_ERROR(PKA_DRIVER,
|
||
+ "failed to find idr for device %d\n",
|
||
+ ring_dev->device_id);
|
||
+ return -ENODEV;
|
||
+ }
|
||
+
|
||
+ ret = pka_drv_ring_open(ring_dev);
|
||
+ if (ret)
|
||
+ return ret;
|
||
+
|
||
+ filep->private_data = ring_dev;
|
||
+ return 0;
|
||
+}
|
||
+
|
||
+static int pka_drv_release(struct inode *inode, struct file *filep)
|
||
+{
|
||
+ struct pka_ring_device *ring_dev = filep->private_data;
|
||
+
|
||
+ filep->private_data = NULL;
|
||
+ pka_drv_ring_release(ring_dev);
|
||
+
|
||
+ return 0;
|
||
+}
|
||
+
|
||
+static int pka_drv_mmap(struct file *filep, struct vm_area_struct *vma)
|
||
+{
|
||
+ return pka_drv_ring_mmap(filep->private_data, vma);
|
||
+}
|
||
+
|
||
+static long pka_drv_unlocked_ioctl(struct file *filep,
|
||
+ unsigned int cmd, unsigned long arg)
|
||
+{
|
||
+ return pka_drv_ring_ioctl(filep->private_data, cmd, arg);
|
||
+}
|
||
+
|
||
+static const struct file_operations pka_ring_fops = {
|
||
+ .owner = THIS_MODULE,
|
||
+ .open = pka_drv_open,
|
||
+ .release = pka_drv_release,
|
||
+ .unlocked_ioctl = pka_drv_unlocked_ioctl,
|
||
+ .mmap = pka_drv_mmap,
|
||
+};
|
||
+
|
||
+static int pka_drv_add_ring_device(struct pka_ring_device *ring_dev)
|
||
+{
|
||
+ struct device *dev = ring_dev->device;
|
||
+
|
||
+ ring_dev->minor = idr_alloc(&pka.ring_idr,
|
||
+ ring_dev, 0, MINORMASK + 1, GFP_KERNEL);
|
||
+ if (ring_dev->minor < 0) {
|
||
+ PKA_DEBUG(PKA_DRIVER,
|
||
+ "failed to alloc minor to device %d\n",
|
||
+ ring_dev->device_id);
|
||
+ return ring_dev->minor;
|
||
+ }
|
||
+
|
||
+ dev = device_create(pka.class, NULL,
|
||
+ MKDEV(MAJOR(pka.ring_devt), ring_dev->minor),
|
||
+ ring_dev, "%d", ring_dev->device_id);
|
||
+ if (IS_ERR(dev)) {
|
||
+ PKA_DEBUG(PKA_DRIVER,
|
||
+ "failed to create device %d\n",
|
||
+ ring_dev->device_id);
|
||
+ idr_remove(&pka.ring_idr, ring_dev->minor);
|
||
+ return PTR_ERR(dev);
|
||
+ }
|
||
+
|
||
+ PKA_DEBUG(PKA_DRIVER,
|
||
+ "ring device %d minor:%d\n",
|
||
+ ring_dev->device_id, ring_dev->minor);
|
||
+
|
||
+ return 0;
|
||
+}
|
||
+
|
||
+static struct pka_ring_device *pka_drv_del_ring_device(struct device *dev)
|
||
+{
|
||
+ struct platform_device *pdev =
|
||
+ container_of(dev, struct platform_device, dev);
|
||
+ struct pka_platdata *priv = platform_get_drvdata(pdev);
|
||
+ struct pka_info *info = priv->info;
|
||
+ struct pka_ring_device *ring_dev = info->priv;
|
||
+
|
||
+ if (ring_dev) {
|
||
+ device_destroy(pka.class, MKDEV(MAJOR(pka.ring_devt),
|
||
+ ring_dev->minor));
|
||
+ idr_remove(&pka.ring_idr, ring_dev->minor);
|
||
+ }
|
||
+
|
||
+ return ring_dev;
|
||
+}
|
||
+
|
||
+static char *pka_drv_devnode(struct device *dev, umode_t *mode)
|
||
+{
|
||
+ if (mode != NULL)
|
||
+ *mode = PKA_DEVICE_ACCESS_MODE;
|
||
+ return kasprintf(GFP_KERNEL, "pka/%s", dev_name(dev));
|
||
+}
|
||
+
|
||
+static int pka_drv_init_class(void)
|
||
+{
|
||
+ int ret;
|
||
+
|
||
+ idr_init(&pka.ring_idr);
|
||
+ /* /sys/class/pka/$RING */
|
||
+ pka.class = class_create(THIS_MODULE, "pka");
|
||
+ if (IS_ERR(pka.class))
|
||
+ return PTR_ERR(pka.class);
|
||
+
|
||
+ /* /dev/pka/$RING */
|
||
+ pka.class->devnode = pka_drv_devnode;
|
||
+
|
||
+ ret = alloc_chrdev_region(&pka.ring_devt, 0, MINORMASK, "pka");
|
||
+ if (ret)
|
||
+ goto err_alloc_chrdev;
|
||
+
|
||
+ cdev_init(&pka.ring_cdev, &pka_ring_fops);
|
||
+ ret = cdev_add(&pka.ring_cdev, pka.ring_devt, MINORMASK);
|
||
+ if (ret)
|
||
+ goto err_cdev_add;
|
||
+
|
||
+ return 0;
|
||
+
|
||
+err_cdev_add:
|
||
+ unregister_chrdev_region(pka.ring_devt, MINORMASK);
|
||
+err_alloc_chrdev:
|
||
+ class_destroy(pka.class);
|
||
+ pka.class = NULL;
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+static void pka_drv_destroy_class(void)
|
||
+{
|
||
+ idr_destroy(&pka.ring_idr);
|
||
+ cdev_del(&pka.ring_cdev);
|
||
+ unregister_chrdev_region(pka.ring_devt, MINORMASK);
|
||
+ class_destroy(pka.class);
|
||
+ pka.class = NULL;
|
||
+}
|
||
+#endif
|
||
+
|
||
+static void pka_drv_get_mem_res(struct pka_device *pka_dev,
|
||
+ struct pka_dev_mem_res *mem_res,
|
||
+ uint64_t wndw_ram_off_mask)
|
||
+{
|
||
+ enum pka_mem_res_idx acpi_mem_idx;
|
||
+
|
||
+ acpi_mem_idx = PKA_ACPI_EIP154_IDX;
|
||
+ mem_res->wndw_ram_off_mask = wndw_ram_off_mask;
|
||
+
|
||
+ /* PKA EIP154 MMIO base address*/
|
||
+ mem_res->eip154_base = pka_dev->resource[acpi_mem_idx]->start;
|
||
+ mem_res->eip154_size = pka_dev->resource[acpi_mem_idx]->end -
|
||
+ mem_res->eip154_base + 1;
|
||
+ acpi_mem_idx++;
|
||
+
|
||
+ /* PKA window ram base address*/
|
||
+ mem_res->wndw_ram_base = pka_dev->resource[acpi_mem_idx]->start;
|
||
+ mem_res->wndw_ram_size = pka_dev->resource[acpi_mem_idx]->end -
|
||
+ mem_res->wndw_ram_base + 1;
|
||
+ acpi_mem_idx++;
|
||
+
|
||
+ /* PKA alternate window ram base address
|
||
+ * Note: Here the size of all the alt window ram is same, depicted by
|
||
+ * 'alt_wndw_ram_size' variable. All alt window ram resources are read
|
||
+ * here even though not all of them are used currently.
|
||
+ */
|
||
+ mem_res->alt_wndw_ram_0_base = pka_dev->resource[acpi_mem_idx]->start;
|
||
+ mem_res->alt_wndw_ram_size = pka_dev->resource[acpi_mem_idx]->end -
|
||
+ mem_res->alt_wndw_ram_0_base + 1;
|
||
+
|
||
+ if (mem_res->alt_wndw_ram_size != PKA_WINDOW_RAM_REGION_SIZE)
|
||
+ PKA_ERROR(PKA_DRIVER,
|
||
+ "Alternate Window RAM size read from ACPI is incorrect.\n");
|
||
+
|
||
+ acpi_mem_idx++;
|
||
+
|
||
+ mem_res->alt_wndw_ram_1_base = pka_dev->resource[acpi_mem_idx]->start;
|
||
+ acpi_mem_idx++;
|
||
+
|
||
+ mem_res->alt_wndw_ram_2_base = pka_dev->resource[acpi_mem_idx]->start;
|
||
+ acpi_mem_idx++;
|
||
+
|
||
+ mem_res->alt_wndw_ram_3_base = pka_dev->resource[acpi_mem_idx]->start;
|
||
+ acpi_mem_idx++;
|
||
+
|
||
+ /* PKA CSR base address*/
|
||
+ mem_res->csr_base = pka_dev->resource[acpi_mem_idx]->start;
|
||
+ mem_res->csr_size = pka_dev->resource[acpi_mem_idx]->end -
|
||
+ mem_res->csr_base + 1;
|
||
+}
|
||
+
|
||
+/*
|
||
+ * Note that this function must be serialized because it calls
|
||
+ * 'pka_dev_register_shim' which manipulates common counters for
|
||
+ * pka devices.
|
||
+ */
|
||
+static int pka_drv_register_device(struct pka_device *pka_dev,
|
||
+ uint64_t wndw_ram_off_mask)
|
||
+{
|
||
+ uint32_t pka_shim_id;
|
||
+ uint8_t pka_shim_fw_id;
|
||
+ struct pka_dev_mem_res mem_res;
|
||
+
|
||
+ /* Register Shim */
|
||
+ pka_shim_id = pka_dev->device_id;
|
||
+ pka_shim_fw_id = pka_dev->fw_id;
|
||
+
|
||
+ pka_drv_get_mem_res(pka_dev, &mem_res, wndw_ram_off_mask);
|
||
+
|
||
+ pka_dev->shim = pka_dev_register_shim(pka_shim_id, pka_shim_fw_id,
|
||
+ &mem_res);
|
||
+ if (!pka_dev->shim) {
|
||
+ PKA_DEBUG(PKA_DRIVER,
|
||
+ "failed to register shim id=%u\n", pka_shim_id);
|
||
+ return -EFAULT;
|
||
+ }
|
||
+
|
||
+ return 0;
|
||
+}
|
||
+
|
||
+static int pka_drv_unregister_device(struct pka_device *pka_dev)
|
||
+{
|
||
+ if (!pka_dev)
|
||
+ return -EINVAL;
|
||
+
|
||
+ if (pka_dev->shim) {
|
||
+ PKA_DEBUG(PKA_DRIVER,
|
||
+ "unregister device shim %u\n",
|
||
+ pka_dev->shim->shim_id);
|
||
+ return pka_dev_unregister_shim(pka_dev->shim);
|
||
+ }
|
||
+
|
||
+ return 0;
|
||
+}
|
||
+
|
||
+/*
|
||
+ * Note that this function must be serialized because it calls
|
||
+ * 'pka_dev_register_ring' which manipulates common counters for
|
||
+ * vfio devices.
|
||
+ */
|
||
+static int pka_drv_register_ring_device(struct pka_ring_device *ring_dev)
|
||
+{
|
||
+ uint32_t ring_id;
|
||
+ uint32_t shim_id;
|
||
+
|
||
+ ring_id = ring_dev->device_id;
|
||
+ shim_id = ring_dev->parent_device_id;
|
||
+
|
||
+ ring_dev->ring = pka_dev_register_ring(ring_id, shim_id);
|
||
+ if (!ring_dev->ring) {
|
||
+ PKA_DEBUG(PKA_DRIVER,
|
||
+ "failed to register ring device %u\n", ring_id);
|
||
+ return -EFAULT;
|
||
+ }
|
||
+
|
||
+ return 0;
|
||
+}
|
||
+
|
||
+static int pka_drv_unregister_ring_device(struct pka_ring_device *ring_dev)
|
||
+{
|
||
+ uint32_t ring_id;
|
||
+
|
||
+ if (!ring_dev)
|
||
+ return -EINVAL;
|
||
+
|
||
+ ring_id = ring_dev->ring->ring_id;
|
||
+
|
||
+ if (ring_dev->ring) {
|
||
+ PKA_DEBUG(PKA_DRIVER, "unregister ring device %u\n", ring_id);
|
||
+ return pka_dev_unregister_ring(ring_dev->ring);
|
||
+ }
|
||
+
|
||
+ return 0;
|
||
+}
|
||
+
|
||
+static const struct of_device_id pka_ring_match[] = {
|
||
+ { .compatible = PKA_RING_DEVICE_COMPAT },
|
||
+ {},
|
||
+};
|
||
+
|
||
+static int pka_drv_rng_read(struct hwrng *rng, void *data, size_t max,
|
||
+ bool wait)
|
||
+{
|
||
+ int ret;
|
||
+
|
||
+ struct pka_device *pka_dev = container_of(rng, struct pka_device, rng);
|
||
+ uint32_t *buffer = data;
|
||
+
|
||
+ ret = pka_dev_trng_read(pka_dev->shim, buffer, max);
|
||
+ if (ret) {
|
||
+ PKA_DEBUG(PKA_DRIVER,
|
||
+ "%s: failed to read random bytes ret=%d",
|
||
+ rng->name, ret);
|
||
+ return 0;
|
||
+ }
|
||
+
|
||
+ return max;
|
||
+}
|
||
+
|
||
+static int pka_drv_probe_device(struct pka_info *info)
|
||
+{
|
||
+ struct pka_device *pka_dev;
|
||
+ struct device *dev = info->dev;
|
||
+ struct device_node *of_node = dev->of_node;
|
||
+ struct platform_device *pdev = to_platform_device(dev);
|
||
+ struct hwrng *trng;
|
||
+ const struct acpi_device_id *aid;
|
||
+ struct pka_drv_plat_info *plat_info;
|
||
+ uint64_t wndw_ram_off_mask;
|
||
+ int ret;
|
||
+ enum pka_mem_res_idx acpi_mem_idx;
|
||
+
|
||
+ if (!info)
|
||
+ return -EINVAL;
|
||
+
|
||
+ pka_dev = kzalloc(sizeof(*pka_dev), GFP_KERNEL);
|
||
+ if (!pka_dev)
|
||
+ return -ENOMEM;
|
||
+
|
||
+ mutex_lock(&pka_drv_lock);
|
||
+ pka_device_cnt += 1;
|
||
+ if (pka_device_cnt > PKA_DRIVER_DEV_MAX) {
|
||
+ PKA_DEBUG(PKA_DRIVER,
|
||
+ "cannot support %u devices\n", pka_device_cnt);
|
||
+ kfree(pka_dev);
|
||
+ mutex_unlock(&pka_drv_lock);
|
||
+ return -EPERM;
|
||
+ }
|
||
+ pka_dev->device_id = pka_device_cnt - 1;
|
||
+ mutex_unlock(&pka_drv_lock);
|
||
+
|
||
+ pka_dev->info = info;
|
||
+ pka_dev->device = dev;
|
||
+ info->flag = PKA_DRIVER_FLAG_DEVICE;
|
||
+ mutex_init(&pka_dev->mutex);
|
||
+
|
||
+ for (acpi_mem_idx = PKA_ACPI_EIP154_IDX;
|
||
+ acpi_mem_idx < PKA_DEVICE_RES_CNT; acpi_mem_idx++) {
|
||
+ pka_dev->resource[acpi_mem_idx] =
|
||
+ platform_get_resource(pdev, IORESOURCE_MEM, acpi_mem_idx);
|
||
+ }
|
||
+
|
||
+ /* Window ram offset mask is platform dependent */
|
||
+ aid = acpi_match_device(pka_drv_acpi_ids, dev);
|
||
+ if (!aid)
|
||
+ return -ENODEV;
|
||
+
|
||
+ plat_info = (struct pka_drv_plat_info *)aid->driver_data;
|
||
+ if (plat_info->type <= PKA_PLAT_TYPE_BF2) {
|
||
+ wndw_ram_off_mask = PKA_WINDOW_RAM_OFFSET_MASK1;
|
||
+ } else {
|
||
+ PKA_ERROR(PKA_DRIVER, "Invalid platform type: %d\n",
|
||
+ (int)plat_info->type);
|
||
+ return -EINVAL;
|
||
+ }
|
||
+
|
||
+ /* Set interrupts */
|
||
+ ret = platform_get_irq(pdev, 0);
|
||
+ pka_dev->irq = ret;
|
||
+ if (ret == -ENXIO && of_node) {
|
||
+ pka_dev->irq = PKA_IRQ_NONE;
|
||
+ } else if (ret < 0) {
|
||
+ PKA_ERROR(PKA_DRIVER,
|
||
+ "failed to get device %u IRQ\n", pka_dev->device_id);
|
||
+ return ret;
|
||
+ }
|
||
+
|
||
+ /* Register IRQ */
|
||
+ ret = pka_drv_register_irq(pka_dev);
|
||
+ if (ret) {
|
||
+ PKA_ERROR(PKA_DRIVER,
|
||
+ "failed to register device %u IRQ\n",
|
||
+ pka_dev->device_id);
|
||
+ return ret;
|
||
+ }
|
||
+
|
||
+ /* Firmware version */
|
||
+ pka_dev->fw_id = plat_info->fw_id;
|
||
+
|
||
+ mutex_lock(&pka_drv_lock);
|
||
+ ret = pka_drv_register_device(pka_dev, wndw_ram_off_mask);
|
||
+ if (ret) {
|
||
+ PKA_DEBUG(PKA_DRIVER, "failed to register shim id=%u\n",
|
||
+ pka_dev->device_id);
|
||
+ mutex_unlock(&pka_drv_lock);
|
||
+ return ret;
|
||
+ }
|
||
+ mutex_unlock(&pka_drv_lock);
|
||
+
|
||
+ /* Setup the TRNG, if needed */
|
||
+ if (pka_dev_has_trng(pka_dev->shim)) {
|
||
+ trng = &pka_dev->rng;
|
||
+ trng->name = pdev->name;
|
||
+ trng->read = pka_drv_rng_read;
|
||
+
|
||
+ ret = hwrng_register(&pka_dev->rng);
|
||
+ if (ret) {
|
||
+ PKA_ERROR(PKA_DRIVER,
|
||
+ "failed to register trng\n");
|
||
+ return ret;
|
||
+ }
|
||
+ }
|
||
+
|
||
+ info->priv = pka_dev;
|
||
+
|
||
+#ifdef BUG_SW_1127083_FIXED
|
||
+ /*
|
||
+ * Create platform devices (pka-ring) from current node.
|
||
+ * This code is reserverd for DT.
|
||
+ */
|
||
+ if (of_node) {
|
||
+ ret = of_platform_populate(of_node, pka_ring_match,
|
||
+ NULL, dev);
|
||
+ if (ret) {
|
||
+ PKA_ERROR(PKA_DRIVER,
|
||
+ "failed to create platform devices\n");
|
||
+ return ret;
|
||
+ }
|
||
+ }
|
||
+#endif
|
||
+
|
||
+ return 0;
|
||
+}
|
||
+
|
||
+static int pka_drv_remove_device(struct platform_device *pdev)
|
||
+{
|
||
+ struct pka_platdata *priv = platform_get_drvdata(pdev);
|
||
+ struct pka_info *info = priv->info;
|
||
+ struct pka_device *pka_dev = (struct pka_device *)info->priv;
|
||
+
|
||
+ if (!pka_dev) {
|
||
+ PKA_ERROR(PKA_DRIVER, "failed to unregister device\n");
|
||
+ return -EINVAL;
|
||
+ }
|
||
+
|
||
+ if (pka_dev_has_trng(pka_dev->shim))
|
||
+ hwrng_unregister(&pka_dev->rng);
|
||
+
|
||
+ if (pka_drv_unregister_device(pka_dev))
|
||
+ PKA_ERROR(PKA_DRIVER, "failed to unregister device\n");
|
||
+
|
||
+ return 0;
|
||
+}
|
||
+
|
||
+static int pka_drv_probe_ring_device(struct pka_info *info)
|
||
+{
|
||
+ struct pka_ring_device *ring_dev;
|
||
+ struct device *dev = info->dev;
|
||
+
|
||
+ int ret;
|
||
+
|
||
+ if (!info)
|
||
+ return -EINVAL;
|
||
+
|
||
+ ring_dev = kzalloc(sizeof(*ring_dev), GFP_KERNEL);
|
||
+ if (!ring_dev)
|
||
+ return -ENOMEM;
|
||
+
|
||
+ mutex_lock(&pka_drv_lock);
|
||
+ pka_ring_device_cnt += 1;
|
||
+ if (pka_ring_device_cnt > PKA_DRIVER_RING_DEV_MAX) {
|
||
+ PKA_DEBUG(PKA_DRIVER, "cannot support %u ring devices\n",
|
||
+ pka_ring_device_cnt);
|
||
+ kfree(ring_dev);
|
||
+ mutex_unlock(&pka_drv_lock);
|
||
+ return -EPERM;
|
||
+ }
|
||
+ ring_dev->device_id = pka_ring_device_cnt - 1;
|
||
+ ring_dev->parent_device_id = pka_device_cnt - 1;
|
||
+ mutex_unlock(&pka_drv_lock);
|
||
+
|
||
+ ring_dev->info = info;
|
||
+ ring_dev->device = dev;
|
||
+ info->flag = PKA_DRIVER_FLAG_RING_DEVICE;
|
||
+ mutex_init(&ring_dev->mutex);
|
||
+
|
||
+ ret = pka_drv_add_ring_device(ring_dev);
|
||
+ if (ret) {
|
||
+ PKA_DEBUG(PKA_DRIVER,
|
||
+ "failed to add ring device %u\n",
|
||
+ ring_dev->device_id);
|
||
+ kfree(ring_dev);
|
||
+ return ret;
|
||
+ }
|
||
+
|
||
+ mutex_lock(&pka_drv_lock);
|
||
+ /* Register ring device */
|
||
+ ret = pka_drv_register_ring_device(ring_dev);
|
||
+ if (ret) {
|
||
+ PKA_DEBUG(PKA_DRIVER,
|
||
+ "failed to register ring device %u\n",
|
||
+ ring_dev->device_id);
|
||
+ mutex_unlock(&pka_drv_lock);
|
||
+ goto err_register_ring;
|
||
+ }
|
||
+ mutex_unlock(&pka_drv_lock);
|
||
+
|
||
+ info->priv = ring_dev;
|
||
+
|
||
+ return 0;
|
||
+
|
||
+ err_register_ring:
|
||
+ pka_drv_del_ring_device(dev);
|
||
+ kfree(ring_dev);
|
||
+ return ret;
|
||
+}
|
||
+
|
||
+static int pka_drv_remove_ring_device(struct platform_device *pdev)
|
||
+{
|
||
+ struct pka_ring_device *ring_dev;
|
||
+ struct device *dev = &pdev->dev;
|
||
+ int ret;
|
||
+
|
||
+ ring_dev = pka_drv_del_ring_device(dev);
|
||
+ if (ring_dev) {
|
||
+ ret = pka_drv_unregister_ring_device(ring_dev);
|
||
+ if (ret) {
|
||
+ PKA_ERROR(PKA_DRIVER,
|
||
+ "failed to unregister vfio device\n");
|
||
+ return ret;
|
||
+ }
|
||
+ kfree(ring_dev);
|
||
+ }
|
||
+
|
||
+ return 0;
|
||
+}
|
||
+
|
||
+static int pka_drv_of_probe(struct platform_device *pdev,
|
||
+ struct pka_info *info)
|
||
+{
|
||
+#ifdef BUG_SW_1127083_FIXED
|
||
+ struct device *dev = &pdev->dev;
|
||
+
|
||
+ int error;
|
||
+
|
||
+ error = device_property_read_string(dev, "compatible", &info->compat);
|
||
+ if (error) {
|
||
+ PKA_DEBUG(PKA_DRIVER, "cannot retrieve compat for %s\n",
|
||
+ pdev->name);
|
||
+ return -EINVAL;
|
||
+ }
|
||
+
|
||
+ if (!strcmp(info->compat, pka_ring_compat)) {
|
||
+ PKA_PRINT(PKA_DRIVER, "probe ring device %s\n",
|
||
+ pdev->name);
|
||
+ error = pka_drv_probe_ring_device(info);
|
||
+ if (error) {
|
||
+ PKA_DEBUG(PKA_DRIVER,
|
||
+ "failed to register ring device compat=%s\n",
|
||
+ info->compat);
|
||
+ return error;
|
||
+ }
|
||
+
|
||
+ } else if (!strcmp(info->compat, pka_compat)) {
|
||
+ PKA_PRINT(PKA_DRIVER, "probe device %s\n", pdev->name);
|
||
+ error = pka_drv_probe_device(info);
|
||
+ if (error) {
|
||
+ PKA_DEBUG(PKA_DRIVER,
|
||
+ "failed to register device compat=%s\n",
|
||
+ info->compat);
|
||
+ return error;
|
||
+ }
|
||
+ }
|
||
+
|
||
+ return 0;
|
||
+#endif
|
||
+ return -EPERM;
|
||
+}
|
||
+
|
||
+static int pka_drv_acpi_probe(struct platform_device *pdev,
|
||
+ struct pka_info *info)
|
||
+{
|
||
+ struct acpi_device *adev;
|
||
+ struct device *dev = &pdev->dev;
|
||
+
|
||
+ int error;
|
||
+
|
||
+ if (acpi_disabled)
|
||
+ return -ENOENT;
|
||
+
|
||
+ adev = ACPI_COMPANION(dev);
|
||
+ if (!adev) {
|
||
+ PKA_DEBUG(PKA_DRIVER,
|
||
+ "ACPI companion device not found for %s\n",
|
||
+ pdev->name);
|
||
+ return -ENODEV;
|
||
+ }
|
||
+
|
||
+ info->acpihid = acpi_device_hid(adev);
|
||
+ if (WARN_ON(!info->acpihid))
|
||
+ return -EINVAL;
|
||
+
|
||
+ if (!strcmp(info->acpihid, pka_ring_acpihid_bf1)
|
||
+ || !strcmp(info->acpihid, pka_ring_acpihid_bf2)) {
|
||
+ error = pka_drv_probe_ring_device(info);
|
||
+ if (error) {
|
||
+ PKA_DEBUG(PKA_DRIVER,
|
||
+ "failed to register ring device %s\n",
|
||
+ pdev->name);
|
||
+ return error;
|
||
+ }
|
||
+ PKA_DEBUG(PKA_DRIVER, "ring device %s probed\n",
|
||
+ pdev->name);
|
||
+
|
||
+ } else if (!strcmp(info->acpihid, pka_acpihid_bf1)
|
||
+ || !strcmp(info->acpihid, pka_acpihid_bf2)) {
|
||
+ error = pka_drv_probe_device(info);
|
||
+ if (error) {
|
||
+ PKA_DEBUG(PKA_DRIVER,
|
||
+ "failed to register device %s\n",
|
||
+ pdev->name);
|
||
+ return error;
|
||
+ }
|
||
+ PKA_PRINT(PKA_DRIVER, "device %s probed\n", pdev->name);
|
||
+ }
|
||
+
|
||
+ return 0;
|
||
+}
|
||
+
|
||
+static int pka_drv_probe(struct platform_device *pdev)
|
||
+{
|
||
+ struct pka_platdata *priv;
|
||
+ struct pka_info *info;
|
||
+ struct device *dev = &pdev->dev;
|
||
+
|
||
+ int ret;
|
||
+
|
||
+ priv = kzalloc(sizeof(*priv), GFP_KERNEL);
|
||
+ if (!priv)
|
||
+ return -ENOMEM;
|
||
+
|
||
+ spin_lock_init(&priv->lock);
|
||
+ priv->pdev = pdev;
|
||
+ /* interrupt is disabled to begin with */
|
||
+ priv->irq_flags = 0;
|
||
+
|
||
+ info = kzalloc(sizeof(*info), GFP_KERNEL);
|
||
+ if (!info)
|
||
+ return -ENOMEM;
|
||
+
|
||
+ info->name = pdev->name;
|
||
+ info->version = PKA_DRIVER_VERSION;
|
||
+ info->module = THIS_MODULE;
|
||
+ info->dev = dev;
|
||
+
|
||
+ priv->info = info;
|
||
+
|
||
+ platform_set_drvdata(pdev, priv);
|
||
+
|
||
+ /*
|
||
+ * There can be two kernel build combinations. One build where
|
||
+ * ACPI is not selected and another one with the ACPI.
|
||
+ *
|
||
+ * In the first case, 'pka_drv_acpi_probe' will return since
|
||
+ * acpi_disabled is 1. DT user will not see any kind of messages
|
||
+ * from ACPI.
|
||
+ *
|
||
+ * In the second case, both DT and ACPI is compiled in but the
|
||
+ * system is booting with any of these combinations.
|
||
+ *
|
||
+ * If the firmware is DT type, then acpi_disabled is 1. The ACPI
|
||
+ * probe routine terminates immediately without any messages.
|
||
+ *
|
||
+ * If the firmware is ACPI type, then acpi_disabled is 0. All other
|
||
+ * checks are valid checks. We cannot claim that this system is DT.
|
||
+ */
|
||
+ ret = pka_drv_acpi_probe(pdev, info);
|
||
+ if (ret)
|
||
+ ret = pka_drv_of_probe(pdev, info);
|
||
+
|
||
+ if (ret) {
|
||
+ PKA_DEBUG(PKA_DRIVER, "unknown device\n");
|
||
+ return ret;
|
||
+ }
|
||
+
|
||
+ return 0;
|
||
+}
|
||
+
|
||
+static int pka_drv_remove(struct platform_device *pdev)
|
||
+{
|
||
+ struct device *dev = &pdev->dev;
|
||
+
|
||
+ /*
|
||
+ * Little hack here:
|
||
+ * The issue here is that the driver data structure which holds our
|
||
+ * initialized private data cannot be used when the 'pdev' arguments
|
||
+ * points to child device -i.e. vfio device. Indeed, during the probe
|
||
+ * function we set an initialized structure called 'priv' as driver
|
||
+ * data for all platform devices including parents devices and child
|
||
+ * devices. This driver data is unique to each device - see call to
|
||
+ * 'platform_set_drvdata()'. However, when we add the child device to
|
||
+ * a vfio group through 'vfio_add_group_dev()' call, this function
|
||
+ * creates a new driver data for the device - i.e. a 'vfio_device'
|
||
+ * structure which includes a field called 'device_data' to hold the
|
||
+ * aforementionned initialized private data. So, to retrieve our
|
||
+ * private data, we must call 'dev_get_drvdata()' which returns the
|
||
+ * 'vfio_device' struct and access its 'device_data' field. However,
|
||
+ * this cannot be done before determining if the 'pdev' is associated
|
||
+ * with a child device or a parent device.
|
||
+ * In order to deal with that we propose this little hack which uses
|
||
+ * the iommu_group to distinguich between parent and child devices.
|
||
+ * For now, let's say it is a customized solution that works for our
|
||
+ * case. Indeed, in the current design, the private data holds some
|
||
+ * infos that defines the type of the device. The intuitive way to do
|
||
+ * that is as following:
|
||
+ *
|
||
+ * struct pka_platdata *priv = platform_get_drvdata(pdev);
|
||
+ * struct pka_info *info = priv->info;
|
||
+ *
|
||
+ * if (info->flag == PKA_DRIVER_FLAG_RING_DEVICE)
|
||
+ * return pka_drv_remove_ring_device(info);
|
||
+ * if (info->flag == PKA_DRIVER_FLAG_DEVICE)
|
||
+ * return pka_drv_remove_ring_device(info);
|
||
+ *
|
||
+ * Since the returned private data of child devices -i.e vfio devices
|
||
+ * corresponds to 'vfio_device' structure, we cannot use it to
|
||
+ * differentiate between parent and child devices. This alternative
|
||
+ * solution is used instead.
|
||
+ */
|
||
+ if (dev->iommu_group) {
|
||
+ PKA_PRINT(PKA_DRIVER, "remove ring device %s\n",
|
||
+ pdev->name);
|
||
+ return pka_drv_remove_ring_device(pdev);
|
||
+ }
|
||
+
|
||
+ PKA_PRINT(PKA_DRIVER, "remove device %s\n", pdev->name);
|
||
+ return pka_drv_remove_device(pdev);
|
||
+}
|
||
+
|
||
+static const struct of_device_id pka_drv_match[] = {
|
||
+ { .compatible = PKA_DEVICE_COMPAT },
|
||
+ { .compatible = PKA_RING_DEVICE_COMPAT },
|
||
+ {}
|
||
+};
|
||
+
|
||
+MODULE_DEVICE_TABLE(of, pka_drv_match);
|
||
+
|
||
+MODULE_DEVICE_TABLE(acpi, pka_drv_acpi_ids);
|
||
+
|
||
+static struct platform_driver pka_drv = {
|
||
+ .driver = {
|
||
+ .name = PKA_DRIVER_NAME,
|
||
+ .of_match_table = of_match_ptr(pka_drv_match),
|
||
+ .acpi_match_table = ACPI_PTR(pka_drv_acpi_ids),
|
||
+ },
|
||
+ .probe = pka_drv_probe,
|
||
+ .remove = pka_drv_remove,
|
||
+};
|
||
+
|
||
+/* Initialize the module - Register the pka platform driver */
|
||
+static int __init pka_drv_register(void)
|
||
+{
|
||
+ int ret;
|
||
+
|
||
+ ret = pka_drv_init_class();
|
||
+ if (ret) {
|
||
+ PKA_ERROR(PKA_DRIVER, "failed to create class\n");
|
||
+ return ret;
|
||
+ }
|
||
+
|
||
+ ret = platform_driver_register(&pka_drv);
|
||
+ if (ret) {
|
||
+ PKA_ERROR(PKA_DRIVER, "failed to register platform driver\n");
|
||
+ return ret;
|
||
+ }
|
||
+
|
||
+ PKA_PRINT(PKA_DRIVER, "version: " PKA_DRIVER_VERSION "\n");
|
||
+
|
||
+ return 0;
|
||
+}
|
||
+
|
||
+/* Cleanup the module - unregister the pka platform driver */
|
||
+static void __exit pka_drv_unregister(void)
|
||
+{
|
||
+ platform_driver_unregister(&pka_drv);
|
||
+ pka_drv_destroy_class();
|
||
+}
|
||
+
|
||
+module_init(pka_drv_register);
|
||
+module_exit(pka_drv_unregister);
|
||
+
|
||
+MODULE_DESCRIPTION(PKA_DRIVER_DESCRIPTION);
|
||
+MODULE_VERSION(PKA_DRIVER_VERSION);
|
||
+MODULE_LICENSE("Dual BSD/GPL");
|
||
diff --git a/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_firmware.h b/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_firmware.h
|
||
new file mode 100644
|
||
index 000000000..29ea27ce0
|
||
--- /dev/null
|
||
+++ b/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_firmware.h
|
||
@@ -0,0 +1,4823 @@
|
||
+//
|
||
+// BSD LICENSE
|
||
+//
|
||
+// Copyright(c) 2016 Mellanox Technologies, Ltd. All rights reserved.
|
||
+// All rights reserved.
|
||
+//
|
||
+// Redistribution and use in source and binary forms, with or without
|
||
+// modification, are permitted provided that the following conditions
|
||
+// are met:
|
||
+//
|
||
+// * Redistributions of source code must retain the above copyright
|
||
+// notice, this list of conditions and the following disclaimer.
|
||
+// * Redistributions in binary form must reproduce the above copyright
|
||
+// notice, this list of conditions and the following disclaimer in
|
||
+// the documentation and/or other materials provided with the
|
||
+// distribution.
|
||
+// * Neither the name of Mellanox Technologies nor the names of its
|
||
+// contributors may be used to endorse or promote products derived
|
||
+// from this software without specific prior written permission.
|
||
+//
|
||
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
+//
|
||
+
|
||
+#ifndef __DRIVERS_MICA_PKA_FW_H__
|
||
+#define __DRIVERS_MICA_PKA_FW_H__
|
||
+
|
||
+#include <linux/types.h>
|
||
+
|
||
+//
|
||
+// Program binaries
|
||
+//
|
||
+
|
||
+// Align to PKA_BUFFER_RAM_SIZE. This is greater than the actual buffer
|
||
+// length so that the image is zero padded.
|
||
+static const uint32_t fw0_farm_img_data_buf[2048] =
|
||
+{
|
||
+ 0x137001C9, 0x692040FA, 0x55502301, 0x328C0200,
|
||
+ 0x5E7000C9, 0x3D7000C8, 0x3670001D, 0x5370001F,
|
||
+ 0x746A4010, 0x046B4014, 0x3C621FF8, 0x4B631FF4,
|
||
+ 0x2A684000, 0x5A694004, 0x4F601FF6, 0x3F611FF2,
|
||
+ 0x5A6A4008, 0x2A6B400C, 0x19621FFA, 0x6D631FF0,
|
||
+ 0x0F684034, 0x7070001E, 0x5D34003F, 0x08601FFE,
|
||
+ 0x0328000B, 0x52C40047, 0x69240027, 0x04880000,
|
||
+ 0x76800047, 0x3380002E, 0x36800047, 0x7A800039,
|
||
+ 0xB6800047, 0xDF80003B, 0xD7800027, 0x9B800035,
|
||
+ 0xDC80003D, 0xB980003F, 0xB5800041, 0xF36A4018,
|
||
+ 0xDA621FFC, 0x9997017D, 0xA4300002, 0xD9D00061,
|
||
+ 0xBC30FFFE, 0xFC800056, 0xF36A4018, 0x9A621FFC,
|
||
+ 0xD59701CC, 0xA4300002, 0x99D00061, 0xFC30FFFE,
|
||
+ 0x99800062, 0xD097026C, 0xD38C0400, 0x8B614018,
|
||
+ 0xBC800056, 0xFF97039F, 0xFC800056, 0x9A97039D,
|
||
+ 0xFC800056, 0x9D9703A3, 0xBC800056, 0xF89703A1,
|
||
+ 0xBC800056, 0xDC970367, 0xFC800056, 0x9D200003,
|
||
+ 0xFC800056, 0xB7200023, 0xBC800056, 0xFD7000C8,
|
||
+ 0xD2200021, 0xBA8C5000, 0x9B80006F, 0xF5707FC8,
|
||
+ 0x84702084, 0xF670001D, 0xDB200000, 0xB6010000,
|
||
+ 0xCF220001, 0xB197007F, 0xA0684084, 0xD3340020,
|
||
+ 0xA7CC0052, 0xFC20000F, 0xF18C0100, 0xA4300002,
|
||
+ 0x99D00061, 0xED601FFC, 0xD5681FF0, 0x926A4014,
|
||
+ 0xF6010000, 0xB18C0100, 0x9260400C, 0xF197007F,
|
||
+ 0x34681FFC, 0x7C30FFFE, 0x616A1FF6, 0x336B1FF8,
|
||
+ 0x44624000, 0x3B634010, 0x076A1FF2, 0x526B1FF4,
|
||
+ 0x62624004, 0x1D634014, 0x006A1FFA, 0x7A230000,
|
||
+ 0x03624008, 0x7A8C5000, 0x5A63401C, 0x086440C9,
|
||
+ 0x5B800003, 0x3B6B1FE4, 0x118B4000, 0x7F8C0480,
|
||
+ 0x17BC004B, 0x6D61401C, 0x518B4000, 0x36010000,
|
||
+ 0x3C30FFFE, 0x66500000, 0x66500000, 0x26500000,
|
||
+ 0x66500000, 0x24300002, 0x102A0002, 0x65614000,
|
||
+ 0xAD624010, 0xF4604008, 0xEE218808, 0x93800073,
|
||
+ 0xE5631FEC, 0x8B6B4000, 0x846A1FF4, 0xF3604000,
|
||
+ 0xC3614004, 0x95634008, 0xAD624010, 0xCB624014,
|
||
+ 0xBB218001, 0xD0970073, 0xFA068000, 0x8C6B4008,
|
||
+ 0xE6691FF2, 0x92634000, 0x83614004, 0xF4604008,
|
||
+ 0xAD624010, 0xD6218200, 0xD0970073, 0xBC6B1FEC,
|
||
+ 0x918B4000, 0xE2631FE4, 0xF0681FF2, 0xB56040A0,
|
||
+ 0xE5691FF4, 0xB3604000, 0xB4604008, 0xCC614010,
|
||
+ 0x138C0400, 0x6470081C, 0x5270881D, 0x20F000A3,
|
||
+ 0x7C30FFFE, 0x33490000, 0x34310001, 0x5D200003,
|
||
+ 0x48D40071, 0x0931FFFF, 0x146540B4, 0x706B1FFE,
|
||
+ 0x216A1FF6, 0x7E33FFFF, 0x56D000BA, 0x336B1FF8,
|
||
+ 0x44624000, 0x03624008, 0x3B634010, 0x7F8C0480,
|
||
+ 0x17BC004B, 0x5E70011F, 0x6470081C, 0x1270881D,
|
||
+ 0x08F000B8, 0x538000BC, 0x7F8C0480, 0x17BC004B,
|
||
+ 0x6C6840A0, 0x30694024, 0x2F090000, 0x7FC8017A,
|
||
+ 0x23024000, 0x6E2E0001, 0x4B624014, 0x2F31FFFB,
|
||
+ 0x47684028, 0x1370001F, 0x3734001F, 0x57184000,
|
||
+ 0x592C0001, 0x17020000, 0x24240008, 0x6934FFE0,
|
||
+ 0x04300005, 0x65691FF4, 0x506040A2, 0x366040A6,
|
||
+ 0x592C0001, 0x2F090000, 0x10C400DF, 0x7A6940A0,
|
||
+ 0x0E050000, 0x722DFFFF, 0x6A31FFFE, 0x30510000,
|
||
+ 0x30510000, 0x61691FFA, 0x4E050000, 0x322DFFFF,
|
||
+ 0x6A31FFFE, 0x30510000, 0x30510000, 0x592C0001,
|
||
+ 0x8434FFFE, 0xC4601FEC, 0xF526000C, 0xB0621FEA,
|
||
+ 0xD126005F, 0xBA200060, 0xBA230000, 0xCB0B2000,
|
||
+ 0xF22DFFFF, 0x816140AA, 0x8F2D0001, 0xEA072000,
|
||
+ 0xBF6B1FEA, 0xD4004000, 0xFA30FFFD, 0xAF0AC000,
|
||
+ 0xFA230000, 0xA6631FEA, 0x8B0B2000, 0xFA20000C,
|
||
+ 0xBA230000, 0xF4290007, 0xF9C400F9, 0x95250007,
|
||
+ 0x9B8000FA, 0xED210007, 0xCD084000, 0xB61B4000,
|
||
+ 0xF9634088, 0x986940AA, 0xBA30FFFD, 0xCF2D0001,
|
||
+ 0xAA072000, 0xF22A0008, 0xD5621FE8, 0xB5008000,
|
||
+ 0xEE2E0001, 0xA934FFE0, 0x84300005, 0xD92C0001,
|
||
+ 0xF46B1FF0, 0x8B691FEC, 0xA1601FEE, 0xCD074000,
|
||
+ 0x92634000, 0xDD33FFFE, 0xC7530000, 0x87530000,
|
||
+ 0xC7530000, 0x87530000, 0x85330002, 0xD5634008,
|
||
+ 0xB9070000, 0xE52B0003, 0xE4280004, 0x8FC00130,
|
||
+ 0x992C0001, 0xDA604010, 0xFF8C0480, 0x97BC004B,
|
||
+ 0xDE70011F, 0x9570001C, 0x9270881D, 0xE3F0011F,
|
||
+ 0x07691FFE, 0x66684024, 0x4931FFFF, 0x1BD0012F,
|
||
+ 0x40691FF6, 0x02140000, 0x3ED00177, 0x4D084000,
|
||
+ 0x51694028, 0x2135001F, 0x3930FFFB, 0x57184000,
|
||
+ 0x3BC80174, 0x592C0001, 0x40601FE2, 0x1370001F,
|
||
+ 0x75008000, 0x3E3CFFFF, 0x18218000, 0x6C110000,
|
||
+ 0x1D33FFFE, 0x50340010, 0x57C8013B, 0x0B41C000,
|
||
+ 0x27270002, 0x47530000, 0x5180013D, 0x07530000,
|
||
+ 0x4B41C000, 0x38681FEE, 0x3A6940A0, 0x5A604010,
|
||
+ 0x0B6B4000, 0x7904C000, 0x592C0001, 0x0434FFFE,
|
||
+ 0x43614004, 0x34604008, 0x2268401C, 0x7F8C0480,
|
||
+ 0x57BC004B, 0x1E70011F, 0x1570001C, 0x6D70821D,
|
||
+ 0x07F0014C, 0x7E340008, 0x73C8015E, 0x07691FFE,
|
||
+ 0x66684024, 0x0931FFFF, 0x30D0015E, 0x40691FF6,
|
||
+ 0x02140000, 0x7ED00177, 0x4D084000, 0x11694028,
|
||
+ 0x3930FFFB, 0x6135001F, 0x57184000, 0x3BC80174,
|
||
+ 0x592C0001, 0x00601FE2, 0x1370001F, 0x6D691FE8,
|
||
+ 0x9F20000E, 0xF4310001, 0xC931FFFF, 0xB4D00166,
|
||
+ 0xE42CFFFF, 0x94800162, 0xBC694000, 0xC62207FA,
|
||
+ 0xCC6B4008, 0xA46140A8, 0xB26340A4, 0xE36240AC,
|
||
+ 0xB16040AE, 0xD77000B2, 0xFF8C0480, 0x97BC004B,
|
||
+ 0xF8700484, 0x9CE00171, 0xB8200001, 0xF6800071,
|
||
+ 0xBF200009, 0xD370001F, 0xF6800071, 0x9E200005,
|
||
+ 0x9370001F, 0xF6800071, 0xFB200007, 0x9370001F,
|
||
+ 0xF3C80071, 0x84631FE0, 0xBA230000, 0xE9631FFE,
|
||
+ 0x3F970099, 0x433C0001, 0x7CC80185, 0x033C0001,
|
||
+ 0x558001CA, 0x37681FFA, 0x136040A4, 0x5D8C0180,
|
||
+ 0x57BC004B, 0x1A700184, 0x39E0018A, 0x7D6940A8,
|
||
+ 0x096840A2, 0x65614000, 0x592C0001, 0x346B1FF0,
|
||
+ 0x5A604010, 0x15634008, 0x1D8C0180, 0x57BC004B,
|
||
+ 0x1570001C, 0x5270881D, 0x62691FFC, 0x322DFFFF,
|
||
+ 0x17C801AE, 0x54004000, 0x4034FFF0, 0x1A20000B,
|
||
+ 0x68CC01CA, 0x2A6A1FEC, 0x0100C000, 0x4D048000,
|
||
+ 0x936340A8, 0xF26340A4, 0xFF8C0480, 0x97BC004B,
|
||
+ 0xDA700184, 0xB4E001A5, 0xB26040A8, 0xCD048000,
|
||
+ 0xDD8C0180, 0x97BC004B, 0x99700284, 0xF0E001AB,
|
||
+ 0xB22DFFFF, 0xE8CC01A6, 0xD5681FF0, 0x8B691FEC,
|
||
+ 0xCE050000, 0xA16A1FF6, 0xB86B1FE2, 0xF26040A8,
|
||
+ 0x856140A4, 0xE36240AC, 0xF4681FFC, 0x862B0002,
|
||
+ 0xA42CFFFF, 0xD06340AE, 0xF96040B2, 0x968C5080,
|
||
+ 0xD7BC004B, 0xB8700484, 0x9CE001BE, 0xFE201FE8,
|
||
+ 0x85500001, 0xE4300002, 0xD36040A4, 0x9B200000,
|
||
+ 0xF66040A6, 0x9D8C0180, 0x97BC004B, 0xDA700184,
|
||
+ 0xD7E001C8, 0xB8200001, 0x9D6B1FE0, 0xD18B4000,
|
||
+ 0x87631FE6, 0xE6691FF2, 0xC06A1FFA, 0x83614004,
|
||
+ 0xE5691FF4, 0xB3621FDA, 0xAA614014, 0xD4004000,
|
||
+ 0x86240002, 0xC434FFFE, 0xE1601FD8, 0xBA054000,
|
||
+ 0xA26A1FF0, 0xCC614010, 0xC4624000, 0xAF060000,
|
||
+ 0xEF060000, 0xB1260002, 0x83624008, 0xD6218200,
|
||
+ 0x10970073, 0x516B1FF2, 0x6F060000, 0x39070000,
|
||
+ 0x74634004, 0x03624008, 0x10970073, 0x57020000,
|
||
+ 0x7B694008, 0x15681FF0, 0x3A098000, 0x7A068000,
|
||
+ 0x3197007F, 0x78681FD8, 0x476A1FF2, 0x00691FF6,
|
||
+ 0x736B1FF8, 0x2F060000, 0x21270001, 0x6537FFFE,
|
||
+ 0x2F05C000, 0x746B1FF0, 0x59611FF6, 0x3904C000,
|
||
+ 0x1E621FF2, 0x6E601FFA, 0x4C601FF0, 0x138C0400,
|
||
+ 0x5997017D, 0x01030000, 0x223F0001, 0x6DCC026A,
|
||
+ 0xB18C0100, 0xCF6A1FD8, 0xC3691FF0, 0x94004000,
|
||
+ 0xFA098000, 0x8D048000, 0xB197007F, 0xF6010000,
|
||
+ 0xEA684000, 0xBA098000, 0xBA068000, 0xF197007F,
|
||
+ 0xB36B1FF8, 0xC0691FF6, 0xE1270001, 0xA537FFFE,
|
||
+ 0xCE09C000, 0x996B1FD8, 0x876A1FF2, 0xD9611FF6,
|
||
+ 0xAF0AC000, 0xDE621FF2, 0xD38C0400, 0x9997017D,
|
||
+ 0xBC6B1FDA, 0xCF6A1FD8, 0xC3691FF0, 0x8F631FFA,
|
||
+ 0xFA098000, 0x9A611FF0, 0x81030000, 0xE23F0001,
|
||
+ 0x2DCC026A, 0x718C0100, 0x54004000, 0x0D048000,
|
||
+ 0x5260400C, 0x0D048000, 0x06240002, 0x66691FF2,
|
||
+ 0x446A1FF4, 0x3C30FFFE, 0x26500000, 0x66500000,
|
||
+ 0x24300002, 0x7197007F, 0x4B624014, 0x2A6B400C,
|
||
+ 0x77260001, 0x03691FF0, 0x21280001, 0x6D624010,
|
||
+ 0x34604008, 0x43614004, 0x52634000, 0x162A0001,
|
||
+ 0x1B058000, 0x6A31FFFE, 0x70510000, 0x30510000,
|
||
+ 0x6C078000, 0x1D33FFFE, 0x07530000, 0x47530000,
|
||
+ 0x3D218002, 0x50970073, 0x71260002, 0x2D624010,
|
||
+ 0x61691FFA, 0x1A6A4008, 0x03614004, 0x43624008,
|
||
+ 0x7B218001, 0x10970073, 0x30681FF2, 0x7C694000,
|
||
+ 0x04624000, 0x55604004, 0x526B1FF4, 0x22614008,
|
||
+ 0x5807C000, 0x27270002, 0x3B634010, 0x56218200,
|
||
+ 0x10970073, 0x7B694008, 0x43624008, 0x196B1FD8,
|
||
+ 0x25614000, 0x79070000, 0x73681FF4, 0x34634004,
|
||
+ 0x5A604010, 0x3B218001, 0x10970073, 0x62624004,
|
||
+ 0xA26A1FF0, 0xD8040000, 0xC4624000, 0x83624008,
|
||
+ 0xFC604014, 0xB6218018, 0x90970073, 0xE562400C,
|
||
+ 0xD38C0400, 0xB8200001, 0x9E6B1FE6, 0xD18B4000,
|
||
+ 0xA2631FE4, 0xD5681FF0, 0xD260400C, 0x84691FF8,
|
||
+ 0xF4611FDE, 0x846A1FF4, 0xB0621FDC, 0xFA0A4000,
|
||
+ 0x820E4000, 0xC5D40277, 0xE3024000, 0x92260003,
|
||
+ 0xB336FFFE, 0xC0601FE2, 0xCD048000, 0xA5601FE0,
|
||
+ 0xCD048000, 0xBA068000, 0xBB621FF0, 0xCD048000,
|
||
+ 0x25601FD6, 0x4B68400C, 0x76970077, 0x226A1FF0,
|
||
+ 0x4B68400C, 0x0D048000, 0x36970077, 0x656A1FF8,
|
||
+ 0x59681FE2, 0x346B1FF0, 0x3904C000, 0x40691FF6,
|
||
+ 0x3197007F, 0x538C0400, 0x476B4024, 0x22631FD2,
|
||
+ 0x4D378000, 0x23CC035A, 0x3C681FE0, 0x746B1FF0,
|
||
+ 0x3904C000, 0x66691FF2, 0x446A1FF4, 0x3197007F,
|
||
+ 0x19681FE2, 0x7C30FFFE, 0x45500001, 0x3C681FE0,
|
||
+ 0x66691FF2, 0x3197007F, 0x3D201FD8, 0x66500000,
|
||
+ 0xA6500000, 0xE6691FF2, 0xEA31FFFE, 0x87494000,
|
||
+ 0xF4310001, 0x80D4035D, 0x8931FFFF, 0xDB200000,
|
||
+ 0xC0601FD4, 0x99230001, 0x8F220001, 0xC100C000,
|
||
+ 0x97148000, 0xDCC802B2, 0xD9681FD4, 0x8D048000,
|
||
+ 0xC0601FD4, 0x8D074000, 0xBA054000, 0xFA068000,
|
||
+ 0xA9CC02AB, 0xD9681FE2, 0xF46B1FF0, 0xB904C000,
|
||
+ 0x8D210000, 0xCC6A1FDE, 0xDF970361, 0xBC30FFFE,
|
||
+ 0xE5480000, 0x8D388000, 0xA2300001, 0xD7D002C2,
|
||
+ 0x96250001, 0xF88002BE, 0xF63D0000, 0x94C802F4,
|
||
+ 0xD38C0400, 0x8B614018, 0x93218040, 0xD0970073,
|
||
+ 0xD9681FD4, 0x8F691FE2, 0xAA31FFFE, 0xC7494000,
|
||
+ 0xAA072000, 0xEE210001, 0xE56B4018, 0x9F3FFFFF,
|
||
+ 0xE1270001, 0x8D11C000, 0xB22DFFFF, 0xC1164000,
|
||
+ 0x996B1FD8, 0xD38C0400, 0xF0694024, 0x95611FD2,
|
||
+ 0xBAC802EC, 0xEF1F8000, 0xDEC802E5, 0x96621FD8,
|
||
+ 0xF0681FF2, 0x862107F6, 0xBC970360, 0xCF220001,
|
||
+ 0x0B624014, 0x7C681FD6, 0x74604008, 0x3B218001,
|
||
+ 0x50970073, 0x2A691FD6, 0x19681FE2, 0x446A1FF4,
|
||
+ 0x77260001, 0x1F970361, 0x31218010, 0x50970073,
|
||
+ 0x19681FE2, 0x4D210000, 0x446A1FF4, 0x37260001,
|
||
+ 0x5F970361, 0x13218040, 0x10970073, 0x798002B5,
|
||
+ 0x3C681FE0, 0x746B1FF0, 0x7904C000, 0x15604004,
|
||
+ 0x19681FE2, 0x7904C000, 0x73604000, 0x0C6A1FDE,
|
||
+ 0x7F6B1FDC, 0x1D634014, 0x2F0AC000, 0x570EC000,
|
||
+ 0x05D40302, 0x7602C000, 0x6D624010, 0x37218400,
|
||
+ 0x50970073, 0x0C691FD2, 0x2F1C4000, 0x44CC030F,
|
||
+ 0x6A31FFFE, 0x11484000, 0x033C0001, 0x492D0002,
|
||
+ 0x07494000, 0x57184000, 0x79C80350, 0x138C0400,
|
||
+ 0x40684020, 0x22300001, 0x18D0035A, 0x64300002,
|
||
+ 0x33D0031D, 0x6A684000, 0x5A694004, 0x15604004,
|
||
+ 0x25614000, 0x43684010, 0x73694014, 0x3C604014,
|
||
+ 0x4C614010, 0x0B6B4000, 0x15634008, 0x47631FD0,
|
||
+ 0xB2218020, 0xD0970073, 0xF1D00326, 0xBC681FE0,
|
||
+ 0xCF691FE2, 0xB3800328, 0x99681FE2, 0xEA691FE0,
|
||
+ 0xC46A1FF4, 0xB7260001, 0x9F970361, 0xD38C0400,
|
||
+ 0x916A4024, 0xF2218020, 0xD0970073, 0xBF681FD0,
|
||
+ 0xCE0A0000, 0xB7260001, 0xAA691FE0, 0xF46B1FF0,
|
||
+ 0xAF05C000, 0xCD1D0000, 0xE2CC033D, 0x99681FE2,
|
||
+ 0xAA691FE0, 0xE5601FE0, 0xD6611FE2, 0xBB681FDE,
|
||
+ 0xC7601FDC, 0x95621FDE, 0x99681FE2, 0xE6691FF2,
|
||
+ 0xBC970360, 0xF46A4010, 0xCD048000, 0xBC30FFFE,
|
||
+ 0xD38C0400, 0x844B0000, 0xA6500000, 0xE6500000,
|
||
+ 0xC13F0000, 0xBCC802B5, 0xB1218010, 0xD0970073,
|
||
+ 0xA22CFFFC, 0xD38C0400, 0xE6500000, 0xB98002B5,
|
||
+ 0xCF691FE2, 0xBC681FE0, 0x846A1FF4, 0xF197007F,
|
||
+ 0x8B624014, 0xF8200001, 0xCD210000, 0xAA6B400C,
|
||
+ 0xAD631FF0, 0xF6800071, 0xD2200017, 0xAD210007,
|
||
+ 0xDC800357, 0x9D200003, 0x8321001F, 0xDC800357,
|
||
+ 0x046A1FF4, 0x6D624010, 0x4B624014, 0x33604000,
|
||
+ 0x43614004, 0x34604008, 0x118B4000, 0x47631FE6,
|
||
+ 0x56681FF6, 0x04691FF8, 0x046A1FF4, 0x6E601FCC,
|
||
+ 0x3B611FCA, 0x7C621FF8, 0x52260003, 0x3336FFFE,
|
||
+ 0x7C621FCE, 0x346B1FF0, 0x2C078000, 0x6C078000,
|
||
+ 0x2E631FF6, 0x6C078000, 0x6D631FF0, 0x1097026C,
|
||
+ 0x033C0001, 0x72C8037C, 0x433C0001, 0x3980039A,
|
||
+ 0x55681FF0, 0x256A1FCE, 0x2C088000, 0x76970077,
|
||
+ 0x83691FF0, 0xE56A1FCE, 0xF5034000, 0x94004000,
|
||
+ 0xEC078000, 0x92634000, 0xAC088000, 0xEC088000,
|
||
+ 0xD4970084, 0x83691FF0, 0xA56A1FCE, 0xD4004000,
|
||
+ 0xAC088000, 0xFC30FFFE, 0xC5500001, 0xA7280002,
|
||
+ 0xE4300002, 0xAC088000, 0xAC088000, 0xCC601FF0,
|
||
+ 0x94970084, 0xE1691FCC, 0xC36A1FCA, 0x99611FF6,
|
||
+ 0xBC621FF8, 0xF8200001, 0xD38C0400, 0x9E6B1FE6,
|
||
+ 0xD18B4000, 0xAC220000, 0xBE8003A4, 0xD8224000,
|
||
+ 0x3E8003A4, 0x79228000, 0x7E8003A4, 0x0D22C000,
|
||
+ 0x7F621FFE, 0x07631FE6, 0x3F970099, 0x526B1FF4,
|
||
+ 0x44270003, 0x2537FFFE, 0x22631FBE, 0x76010000,
|
||
+ 0x033C0001, 0x718C0100, 0x67CC04E2, 0x3E6A40A2,
|
||
+ 0x6B6840A8, 0x37260001, 0x1A970658, 0x70681FF2,
|
||
+ 0x046A1FF4, 0x5A970658, 0x77260001, 0x3336FFFE,
|
||
+ 0x276240A2, 0x416240A6, 0x7D6940A8, 0x2D6A1FBE,
|
||
+ 0x70611FBC, 0x13201FC0, 0x13230010, 0x5B058000,
|
||
+ 0x2A410000, 0x5F2C0002, 0x452FFFFF, 0x2BCC03BF,
|
||
+ 0x56681FC0, 0x2E32FFFC, 0x36970077, 0x7B970638,
|
||
+ 0x4F691FD4, 0x30681FF2, 0x0F220001, 0x7197061F,
|
||
+ 0x306B1FFE, 0x7E33FFFF, 0x74D0052F, 0x3B6B1FBE,
|
||
+ 0x66691FF2, 0x0B6A1FD6, 0x2F05C000, 0x7797062A,
|
||
+ 0x00691FC0, 0x4F220001, 0x7E97063D, 0x2D691FDE,
|
||
+ 0x0A220004, 0x7E97063D, 0x6A6A1FDA, 0x21691FFA,
|
||
+ 0x7797062A, 0x2E691FD8, 0x3B6B1FBE, 0x70681FF2,
|
||
+ 0x89220002, 0xF904C000, 0xF904C000, 0xB197061F,
|
||
+ 0xD2970628, 0xB06B1FFE, 0xA1691FFA, 0xE31BC000,
|
||
+ 0xCAD403EF, 0xBB6B1FBE, 0xA26A1FC6, 0xEF05C000,
|
||
+ 0xAF05C000, 0xF797062A, 0xDF8003F2, 0x80691FC0,
|
||
+ 0xD5681FC6, 0xB0970614, 0x8B691FDA, 0xF0681FC4,
|
||
+ 0xA26A1FC6, 0xD46040AC, 0xE46140A8, 0xA46240A4,
|
||
+ 0xBA8C5000, 0xD4700384, 0xFA970605, 0x8D21889C,
|
||
+ 0xC5614092, 0xBA8C5000, 0xB1700080, 0xCF691FE2,
|
||
+ 0xB597064B, 0xE9204096, 0xC0502A27, 0xA15030A7,
|
||
+ 0xE9204096, 0xAA504A52, 0x995024A5, 0xD1970642,
|
||
+ 0xEF502E27, 0xBF502084, 0xB7970646, 0xC450292F,
|
||
+ 0x91970642, 0xE76B4080, 0xF2370020, 0xA2CC0444,
|
||
+ 0xE9503548, 0xA1501CE4, 0xB7970646, 0xF85024A9,
|
||
+ 0x91970642, 0xE150A148, 0xC55035A4, 0xB7970646,
|
||
+ 0x94502530, 0xD1970642, 0xC7502929, 0x8C5035B3,
|
||
+ 0xF7970646, 0xBF502108, 0x91970642, 0xF55025A9,
|
||
+ 0x2E502CA6, 0x77970646, 0x4A50288A, 0x11970642,
|
||
+ 0x7150B4EB, 0x0C509525, 0x37970646, 0x7B501086,
|
||
+ 0x51970642, 0x27502D67, 0x215035AD, 0x77970646,
|
||
+ 0x2350198F, 0x51970642, 0x676B4080, 0x00631FEE,
|
||
+ 0x715098C4, 0x1E509DB1, 0x37970646, 0x4A50316C,
|
||
+ 0x11970642, 0x40509148, 0x4F502CC6, 0x37970646,
|
||
+ 0x20503590, 0x51970642, 0x7A5099AB, 0x01194000,
|
||
+ 0x5CC80447, 0x3597064B, 0x2D204098, 0x615030A7,
|
||
+ 0x37970646, 0x595024A5, 0x51970642, 0x35800408,
|
||
+ 0x7A8C5000, 0x34200013, 0x398004E3, 0x7A8C5000,
|
||
+ 0x716A4080, 0x3B681FDE, 0x24360020, 0x4ECC04F2,
|
||
+ 0x2D6A1FBE, 0x76970077, 0x7B970638, 0x0F220001,
|
||
+ 0x6D691FDE, 0x3E97063D, 0x0C691FD2, 0x7B6B1FBE,
|
||
+ 0x37681FFA, 0x4F220001, 0x7904C000, 0x3197061F,
|
||
+ 0x12970628, 0x7B6B1FBE, 0x66691FF2, 0x086A1FD0,
|
||
+ 0x6F05C000, 0x2F05C000, 0x3797062A, 0x6E691FD8,
|
||
+ 0xBB6B1FBE, 0xF0681FF2, 0xCF220001, 0xB904C000,
|
||
+ 0xF904C000, 0xB197061F, 0x92970628, 0xD8700090,
|
||
+ 0xFA970605, 0xBA8C5000, 0xA9204096, 0xEA504A52,
|
||
+ 0x815029E5, 0xE9204096, 0xEA504A52, 0xBC502491,
|
||
+ 0xD1970642, 0x8150292A, 0xB95020B1, 0xF7970646,
|
||
+ 0x9D501264, 0xD1970642, 0xC0502D04, 0xBD5040B0,
|
||
+ 0xB7970646, 0xD25024E5, 0xD1970642, 0x8B50A088,
|
||
+ 0xDC504130, 0xB7970646, 0xAC502D4B, 0xD1970642,
|
||
+ 0x2A504A52, 0x45502924, 0x77970646, 0x27502CEB,
|
||
+ 0x51970642, 0x24502E0B, 0x3D5011AA, 0x77970646,
|
||
+ 0x7F502108, 0x11970642, 0x2A504A52, 0x45502E6B,
|
||
+ 0x37970646, 0x555020C8, 0x51970642, 0x3250AD0B,
|
||
+ 0x66502925, 0x11970642, 0x03501E52, 0x5550166B,
|
||
+ 0x37970646, 0x4C5019AA, 0x51970642, 0x2A504A52,
|
||
+ 0x115020C6, 0x77970646, 0x595024A5, 0x11970642,
|
||
+ 0x6A504A52, 0x01502D0F, 0x37970646, 0x4E502884,
|
||
+ 0x91970642, 0xCA50296A, 0xD3502188, 0x91970642,
|
||
+ 0xE650A509, 0xA4502944, 0x91970642, 0xEA504A52,
|
||
+ 0xD95024C9, 0x91970642, 0xAD50A549, 0xD5502144,
|
||
+ 0xB7970646, 0xD1502669, 0xD1970642, 0x95681FC6,
|
||
+ 0xFA8C5000, 0xA76B4080, 0xBC30FFFE, 0xDF370008,
|
||
+ 0x80CC04B7, 0xF320001B, 0xF98004E3, 0x85500001,
|
||
+ 0xB06B1FFE, 0xED204098, 0xE31BC000, 0x8DD404C4,
|
||
+ 0xFF5010E4, 0xAD204098, 0xB35014E5, 0xF7970646,
|
||
+ 0xAB5018E6, 0xD1970642, 0xF18C0100, 0xB180051F,
|
||
+ 0xEB5018E6, 0xB46B1FF0, 0x96681FF6, 0xC4691FF8,
|
||
+ 0xCC631FCA, 0xAE601FCC, 0x9D611FCE, 0xF0681FC4,
|
||
+ 0xA5691FF4, 0xF46B1FC6, 0xCF2D0001, 0x9D611FF8,
|
||
+ 0xED631FF0, 0x8F601FF6, 0xBA8C5000, 0xD097026C,
|
||
+ 0x956B1FCA, 0xC06A1FCC, 0xC4691FCE, 0xAD631FF0,
|
||
+ 0xB8621FF6, 0xDD611FF8, 0xD38C0400, 0x833C0001,
|
||
+ 0xE7CC04E2, 0x80691FC0, 0xBA97065F, 0xE5691FC2,
|
||
+ 0x3A97065F, 0x7180051F, 0x433C0001, 0x3423001F,
|
||
+ 0x44601FEC, 0x00631FEE, 0x2D6A1FBE, 0x47691FFE,
|
||
+ 0x55681FF0, 0x01194000, 0x14038000, 0x43D404ED,
|
||
+ 0x3A068000, 0x4E06C000, 0x76970077, 0x1D681FEC,
|
||
+ 0x596B1FEE, 0x1480052B, 0x0F6A1FEE, 0x4E6B4090,
|
||
+ 0x33320005, 0x4D1EC000, 0x6D360001, 0x12C804FB,
|
||
+ 0x1920000D, 0x5A230007, 0x598004E4, 0x2D6A1FBE,
|
||
+ 0x55681FF0, 0x07691FFE, 0x14038000, 0x7A068000,
|
||
+ 0x01194000, 0x47D40503, 0x4E06C000, 0x36970077,
|
||
+ 0x61691FFA, 0x15681FF0, 0x046A1FF4, 0x55970616,
|
||
+ 0x6D6A1FBE, 0x166B1FFA, 0x15681FF0, 0x6C078000,
|
||
+ 0x34634004, 0x4D048000, 0x74604008, 0x26691FF2,
|
||
+ 0x446A1FF4, 0x25614000, 0x0B624014, 0x72218020,
|
||
+ 0x266A1FFE, 0x50970073, 0x411A8000, 0x0FD40529,
|
||
+ 0x3B6B1FBE, 0x55681FF0, 0x5807C000, 0x3904C000,
|
||
+ 0x7C30FFFE, 0x05500001, 0x31800529, 0x6D6A1FBE,
|
||
+ 0x80691FC0, 0xD1681FFE, 0xD4038000, 0xA3180000,
|
||
+ 0xE8D40526, 0xBA068000, 0x8E06C000, 0xD5681FF0,
|
||
+ 0xD5970616, 0xBA230000, 0xB8200001, 0xD38C0400,
|
||
+ 0xBC634018, 0xDE6B1FE6, 0xD18B4000, 0xAD691FDE,
|
||
+ 0xCF220001, 0xBE97063D, 0xA16A1FC0, 0xE1691FFA,
|
||
+ 0xB797062A, 0xFB6B1FBE, 0xE1691FFA, 0x8F6A1FD8,
|
||
+ 0xAF05C000, 0xF797062A, 0xC76A1FC4, 0x80691FF6,
|
||
+ 0xF797062A, 0xBB6B1FBE, 0x80691FF6, 0xEA6A1FDA,
|
||
+ 0xAF05C000, 0xF797062A, 0xD1681FFE, 0xA3180000,
|
||
+ 0xD3D0054C, 0xAD691FDE, 0xB3681FC2, 0xF6970617,
|
||
+ 0xED691FDE, 0x95681FC6, 0xB6970617, 0xDA800558,
|
||
+ 0xBB6B1FBE, 0xE1691FFA, 0xC46A1FC2, 0xAF05C000,
|
||
+ 0xEF05C000, 0xB797062A, 0xBB6B1FBE, 0xC0691FF6,
|
||
+ 0xA26A1FC6, 0xEF05C000, 0xEF05C000, 0xB797062A,
|
||
+ 0x98700090, 0xFA970605, 0xFA8C5000, 0xB1700080,
|
||
+ 0xE9204096, 0xAA504A52, 0xB15024E4, 0xE9204096,
|
||
+ 0x2A504A52, 0x425030A6, 0x51970642, 0x1450B12C,
|
||
+ 0x515020F0, 0x37970646, 0x085028B1, 0x51970642,
|
||
+ 0x7E50A90A, 0x3E50AD8C, 0x11970642, 0x5050456B,
|
||
+ 0x2850BD4A, 0x77970646, 0x676B4080, 0x00631FEE,
|
||
+ 0x71700080, 0x0E50352B, 0x11970642, 0x596B1FEE,
|
||
+ 0x316A4080, 0x63330006, 0x6BD4057A, 0x35320006,
|
||
+ 0x35D005B1, 0x518004F8, 0x6A504A52, 0x0B502D8B,
|
||
+ 0x77970646, 0x37502531, 0x11970642, 0x7C50252B,
|
||
+ 0xB950210B, 0xF7970646, 0xED5018E5, 0x91970642,
|
||
+ 0xEA504A52, 0x99503CCF, 0xB7970646, 0xD1502669,
|
||
+ 0xD1970642, 0x8F50A52F, 0x835018CB, 0xD1970642,
|
||
+ 0xAA504A52, 0xD2503E69, 0xF7970646, 0x9250112C,
|
||
+ 0xD1970642, 0xBF50B5ED, 0x8950326C, 0xD1970642,
|
||
+ 0xAA504A52, 0xC15035AA, 0xD1970642, 0xB250B50D,
|
||
+ 0x92502533, 0xD1970642, 0xC3501E52, 0x9650166D,
|
||
+ 0xD1970642, 0xBB970638, 0xBB6B1FBE, 0xE6691FF2,
|
||
+ 0x0B6A1FD6, 0x6F05C000, 0x7797062A, 0x3B6B1FBE,
|
||
+ 0x66691FF2, 0x086A1FD0, 0x2F05C000, 0x6F05C000,
|
||
+ 0x7797062A, 0x3A970605, 0x3A8C5000, 0x69204096,
|
||
+ 0x2A504A52, 0x515020C6, 0x69204096, 0x2A504A52,
|
||
+ 0x5580049A, 0x3B970638, 0x3B6B1FBE, 0x66691FF2,
|
||
+ 0x0B6A1FD6, 0x6F05C000, 0x7797062A, 0x08691FDC,
|
||
+ 0x1D681FDA, 0x70970614, 0x4B691FDA, 0x09220002,
|
||
+ 0x7E97063D, 0x08691FDC, 0x15681FC6, 0x76970617,
|
||
+ 0x03691FC6, 0x6A220003, 0x7E97063D, 0x3A970605,
|
||
+ 0x7A8C5000, 0x31700080, 0x29204096, 0x6A504A52,
|
||
+ 0x7F502084, 0x29204096, 0x2A504A52, 0x6C503611,
|
||
+ 0x11970642, 0x6A504A52, 0x46502D07, 0x37970646,
|
||
+ 0x6C5034AD, 0x11970642, 0x2A504A52, 0x595024A5,
|
||
+ 0x37970646, 0x665029B0, 0x51970642, 0x27503144,
|
||
+ 0x1A50252F, 0x77970646, 0x4150194A, 0x11970642,
|
||
+ 0x745010C8, 0x0750318C, 0x37970646, 0x695028D1,
|
||
+ 0x91970642, 0xD2502569, 0xEC5019AD, 0xB7970646,
|
||
+ 0xDD501264, 0x91970642, 0x9F50B08C, 0xE8502D29,
|
||
+ 0xF7970646, 0xAD5019A6, 0x91970642, 0xEA504A52,
|
||
+ 0xB550166C, 0xF7970646, 0xDE502191, 0x91970642,
|
||
+ 0xF250AD0B, 0xAD502953, 0x91970642, 0xEA504A52,
|
||
+ 0xA950326B, 0xF7970646, 0xDE5011AB, 0x91970642,
|
||
+ 0x9950B585, 0xD2502533, 0xD1970642, 0xAA504A52,
|
||
+ 0xC75035A9, 0x91970642, 0xB950B54D, 0xC5502E6B,
|
||
+ 0x11970642, 0x43501E52, 0x5650166D, 0x11970642,
|
||
+ 0x7880059D, 0x2D6A1FBE, 0x00691FC0, 0x4B624014,
|
||
+ 0x4B32FFFE, 0x3A098000, 0x25614000, 0x456140A4,
|
||
+ 0x0F691FD4, 0x696A1FDC, 0x62614008, 0x25691FF4,
|
||
+ 0x62624004, 0x0F2D0001, 0x0C614010, 0x518B4000,
|
||
+ 0x046A1FF4, 0x6E2E0001, 0x6D624010, 0x25614000,
|
||
+ 0x34604008, 0x538C0400, 0x5570001C, 0x1270881D,
|
||
+ 0x5B058000, 0x0D048000, 0x118B4000, 0x73604000,
|
||
+ 0xB3681FF4, 0xE2614008, 0xDA604010, 0x938C0400,
|
||
+ 0xEA624018, 0x97020000, 0xB4218080, 0xD3800073,
|
||
+ 0xED684008, 0x99800634, 0xA5631FEC, 0xE5614000,
|
||
+ 0x83624008, 0xF5008000, 0xE9218800, 0x90970073,
|
||
+ 0xC46A1FF4, 0x9A970658, 0xAD684008, 0xFC6B1FEC,
|
||
+ 0xB26040A8, 0xFA8C5000, 0xDA700184, 0x918B4000,
|
||
+ 0x846A1FF4, 0xE9691FBC, 0xED624010, 0x856140A4,
|
||
+ 0xD18B4000, 0x94004000, 0xAA31FFFE, 0xD38C0400,
|
||
+ 0xBF424000, 0xD9800634, 0xD68C5080, 0x97BC004B,
|
||
+ 0xE9204096, 0x918B4000, 0x968C5080, 0xD7BC004B,
|
||
+ 0xE9204096, 0xAA504A52, 0x918B4000, 0xD6681FF6,
|
||
+ 0xB22DFFFF, 0xE3024000, 0xF736FFF0, 0xB0320003,
|
||
+ 0xFC30FFFE, 0xAF060000, 0x874A8000, 0xD4004000,
|
||
+ 0x9E34000F, 0xCD120000, 0xC1624090, 0x918B4000,
|
||
+ 0x8D048000, 0xFC30FFFE, 0xE6500000, 0xA6500000,
|
||
+ 0xE6500000, 0xA6500000, 0x918B4000, 0xE26A1FC6,
|
||
+ 0x246140A8, 0x646240A4, 0x718C0100, 0x1A700184,
|
||
+ 0x476A1FF2, 0x22624004, 0x046A1FF4, 0x4B624014,
|
||
+ 0x65614000, 0x22614008, 0x318C0100, 0x50694080,
|
||
+ 0x0C350001, 0x47CC066F, 0x518B4000, 0x2E2E0001,
|
||
+ 0x6D624010, 0x32218020, 0x13800073, 0x0079084F
|
||
+};
|
||
+
|
||
+static const uint32_t fw0_boot_img_data_buf[] =
|
||
+{
|
||
+ 0x3F200503, 0x6E210001, 0x6A710249, 0x38200001,
|
||
+ 0x5460B41C, 0x1397008C, 0x0D210000, 0x4931FFFF,
|
||
+ 0x6D390001, 0x242CFFFF, 0x00CC0007, 0x736AB1F8,
|
||
+ 0x2361B140, 0x6F3A0000, 0x4FCC0013, 0x1F200777,
|
||
+ 0x5860B438, 0x1F60B45C, 0x14800017, 0x5D200333,
|
||
+ 0x1860B438, 0x5F60B45C, 0x7E60B43C, 0x0520FFFF,
|
||
+ 0x3660B420, 0x4D210000, 0x6F68B420, 0x0561B422,
|
||
+ 0x4934FEFE, 0x22300001, 0x3660B420, 0x4661B424,
|
||
+ 0xA361B426, 0xE761B428, 0xC261B42A, 0x8161B42C,
|
||
+ 0xE461B42E, 0xAF61B434, 0x8A61B436, 0xD397008C,
|
||
+ 0xCE21A0CA, 0xB9228000, 0xBF424000, 0xE12D0100,
|
||
+ 0xA42CFFFF, 0xE8CC002A, 0xCB710449, 0x83B80032,
|
||
+ 0xD8224000, 0x98800033, 0xAC220000, 0xC3210045,
|
||
+ 0x8661B424, 0xFA230000, 0xF663B42C, 0x9397008C,
|
||
+ 0xA9232000, 0xC662B428, 0xD863B434, 0x9269B1F8,
|
||
+ 0xCE390000, 0xABCC0040, 0x89210777, 0xF5800041,
|
||
+ 0x8B210333, 0xF38C0078, 0xD6BC0076, 0x8E61B438,
|
||
+ 0xE42CFFFF, 0x87CC0039, 0x85710649, 0xD397008C,
|
||
+ 0xEB21A0C8, 0xAC220000, 0xBF424000, 0xC92D0002,
|
||
+ 0xBF424000, 0xCC2D00FE, 0xE42CFFFF, 0x89CC004A,
|
||
+ 0xC468B1F8, 0x8D223000, 0x98380000, 0xC0CC005D,
|
||
+ 0x96711049, 0xE5B8005A, 0xEF204000, 0xBF222000,
|
||
+ 0x91230071, 0xD2800078, 0xDB200000, 0x91230071,
|
||
+ 0xD2800078, 0xB7712049, 0x82B80063, 0xF9214000,
|
||
+ 0x3A230000, 0x7F222000, 0x79800065, 0x0D210000,
|
||
+ 0x7A230000, 0x0C20B424, 0x2C500011, 0x45500001,
|
||
+ 0x6850C400, 0x05500001, 0x0161B42C, 0x5363B42E,
|
||
+ 0x0E62B434, 0x7C230333, 0x738C0078, 0x16BC0076,
|
||
+ 0x7963B438, 0x1B200000, 0x3560B140, 0x69710149,
|
||
+ 0x3C8C0000, 0x73800074, 0x7971FF49, 0x33800074,
|
||
+ 0x15320001, 0x45367FFF, 0x75C8008B, 0x322A0008,
|
||
+ 0x4DC00087, 0x26500000, 0x26500000, 0x66500000,
|
||
+ 0xA6500000, 0xE6500000, 0xE6500000, 0xA6500000,
|
||
+ 0xE6500000, 0xB5C8008B, 0x9480007B, 0xD3260008,
|
||
+ 0xE6500000, 0x932EFFFF, 0x8BCC0088, 0xD18B4000,
|
||
+ 0x8468B1F8, 0xDE34000F, 0xDBC80093, 0xA028000A,
|
||
+ 0xFAC40093, 0x8124000A, 0x918B4000, 0xF920000A,
|
||
+ 0x918B4000, 0xE0000000, 0xE0000000, 0xA0000000
|
||
+};
|
||
+
|
||
+static const uint32_t fw0_master_img_data_buf[] =
|
||
+{
|
||
+ 0x3F200503, 0x6E210001, 0x5E605FF4, 0x2D615FF6,
|
||
+ 0x5B200000, 0x3260B148, 0x0D205FE0, 0x5C215FE8,
|
||
+ 0x7D230008, 0x2F090000, 0x23C000F3, 0x78200001,
|
||
+ 0x1460B41C, 0x719700B0, 0x539700BA, 0x0E208000,
|
||
+ 0x7560B140, 0x20000000, 0x20000000, 0x60000000,
|
||
+ 0x25685FFE, 0x5269B1F8, 0x626B5FFA, 0x353C4600,
|
||
+ 0x2CCC0012, 0x793B0000, 0x48D4001D, 0x1B3700FF,
|
||
+ 0x5763B47A, 0x1D200333, 0x1860B438, 0x5F60B45C,
|
||
+ 0xBE60B43C, 0xFC230003, 0xF722B400, 0x8520FFFF,
|
||
+ 0xE9408000, 0x8D210000, 0xB0488000, 0xF1260002,
|
||
+ 0xFF418000, 0x8934FEFE, 0xA2300001, 0xD02A0002,
|
||
+ 0xA9408000, 0xFE260020, 0xC52FFFFF, 0x8CCC0023,
|
||
+ 0xDB200000, 0x9F60B406, 0xB660B416, 0xF560B426,
|
||
+ 0x9C60B436, 0xD460B446, 0xFD60B456, 0xA16B5FFC,
|
||
+ 0x80210100, 0xE2222F00, 0xF4370080, 0x9FC8003E,
|
||
+ 0xCD210000, 0x8D223000, 0x8C20B424, 0xEC500011,
|
||
+ 0x85500001, 0xE850C400, 0xC5500001, 0xAA410000,
|
||
+ 0xDF2C0002, 0xA6500000, 0x8E62B434, 0xC8205E90,
|
||
+ 0xE6220164, 0xAF970F80, 0x9269B1F8, 0xEA220333,
|
||
+ 0x9B200000, 0xF38C0078, 0xD1BC00EB, 0xAF62B438,
|
||
+ 0xD060B424, 0xB560B426, 0xB9610102, 0xC835000F,
|
||
+ 0x9C610100, 0xC568B400, 0xF969B420, 0x99605FCA,
|
||
+ 0xA9615FCE, 0xFA3400FF, 0xD6380200, 0x9A605FCC,
|
||
+ 0xF235FF00, 0xAB390002, 0x84615FD0, 0xC1970F0D,
|
||
+ 0x38200001, 0x57605EA0, 0x502001A0, 0x2B60010C,
|
||
+ 0x7A203000, 0x0E60010E, 0x38200001, 0x7260B148,
|
||
+ 0x58695EA0, 0x39228000, 0x14004000, 0x433C0001,
|
||
+ 0x26CC006F, 0x4262B140, 0x50800075, 0x14004000,
|
||
+ 0x463C0004, 0x2DCC0075, 0x2C68B140, 0x543C4000,
|
||
+ 0x3560B140, 0x4835000F, 0x4931FFFF, 0x002D0079,
|
||
+ 0x26894000, 0x528C1D78, 0x5F800098, 0x378C1D7A,
|
||
+ 0x5F800098, 0x3E8C1DF8, 0x1F800098, 0x5B8C1DFA,
|
||
+ 0x9F800098, 0xF48C1D7C, 0xDF800098, 0x918C1D7E,
|
||
+ 0xDF800098, 0x988C1DFC, 0x9F800098, 0xFD8C1DFE,
|
||
+ 0xDF800098, 0xB18C1D79, 0x9F800098, 0xD48C1D7B,
|
||
+ 0x9F800098, 0xDD8C1DF9, 0xDF800098, 0xB88C1DFB,
|
||
+ 0xDF800098, 0x978C1D7D, 0x9F800098, 0xF28C1D7F,
|
||
+ 0x9F800098, 0xFB8C1DFD, 0xDF800098, 0x9E8C1DFF,
|
||
+ 0x95B000E9, 0xC8BC0BF6, 0xFDD80CC3, 0x90A00BF7,
|
||
+ 0xEBA40C1D, 0xA5A80C38, 0x8CF80EFB, 0xD3E80CE1,
|
||
+ 0x17E00107, 0x796A5EA0, 0x7F2300A6, 0x2B360002,
|
||
+ 0x5DC800A6, 0x38AC0E86, 0x38215EA2, 0x63220014,
|
||
+ 0x44970F9D, 0x3EC80068, 0x30884000, 0x58380000,
|
||
+ 0x36C80101, 0x78215EA2, 0x63220014, 0x27800FC0,
|
||
+ 0x5B200000, 0x3360B000, 0x3460B008, 0x4F220001,
|
||
+ 0x2B2D0008, 0x6D62B010, 0x7B60B01C, 0x08228800,
|
||
+ 0x0C62B01C, 0x518B4000, 0x4468B1F8, 0x36635E96,
|
||
+ 0x5E34000F, 0x01030000, 0x012B000A, 0x45C000C1,
|
||
+ 0x3920000A, 0x41030000, 0x4D210000, 0x0931FFFF,
|
||
+ 0x6D390001, 0x242CFFFF, 0x01CC00C3, 0x6361B140,
|
||
+ 0x79228000, 0x36010000, 0x10310008, 0x4D39A0CA,
|
||
+ 0x3F424000, 0x6C220000, 0x7F424000, 0x06220020,
|
||
+ 0x7C2DFFBA, 0x3F424000, 0x2C220000, 0x582DFF7C,
|
||
+ 0x3F424000, 0x6B2D0008, 0x7F424000, 0x0F220001,
|
||
+ 0x2B2D0008, 0x7F424000, 0x6C220000, 0x0D2D000C,
|
||
+ 0x7F424000, 0x08228800, 0x3F424000, 0x43220400,
|
||
+ 0xA462B144, 0xD7020000, 0xE13A0200, 0xA462B144,
|
||
+ 0xD92C0001, 0x852FFFFF, 0x80CC00C8, 0xEF6B5E96,
|
||
+ 0xD18B4000, 0x8222008D, 0x988000FC, 0xE4220089,
|
||
+ 0x988000FC, 0xC6220083, 0xD88000FC, 0x85220085,
|
||
+ 0xD88000FC, 0xA9220005, 0x988000FC, 0xE0220087,
|
||
+ 0x988000FC, 0xCC220007, 0xD88000FC, 0xA6220011,
|
||
+ 0x988000FC, 0xC122008B, 0xD88000FC, 0xAD22000B,
|
||
+ 0xEA625FF2, 0x99635FF0, 0xB1320008, 0xC562B148,
|
||
+ 0xB3D00102, 0xD18B4000, 0xF8200001, 0xB19700B0,
|
||
+ 0xD39700BA, 0xBC8C0000, 0x95800105, 0xF9695F20,
|
||
+ 0xFE20011B, 0x8E35C000, 0x91C8010E, 0xC9685F24,
|
||
+ 0x823D4000, 0xC5CC00A1, 0xDF2300A1, 0xB96A5EA0,
|
||
+ 0xE1210080, 0xB336FFFE, 0xA0625EA0, 0xFB655F21,
|
||
+ 0x9A8000AB, 0xF9695F20, 0xC9685F24, 0x8E35C000,
|
||
+ 0x973DC000, 0xF2C8010F, 0xD18B4000, 0xA9970F20,
|
||
+ 0xFBC801BB, 0x90605F24, 0x80685FFC, 0xCD210000,
|
||
+ 0x24615F2E, 0x7F340003, 0x5F2C012D, 0x30884000,
|
||
+ 0x5B200000, 0x3160B122, 0x30800131, 0x4A6BB124,
|
||
+ 0x5C695F22, 0x1B200000, 0x3B370001, 0x4ECC0137,
|
||
+ 0x3C65B123, 0x70800131, 0x5C800124, 0x1A800127,
|
||
+ 0x7B9700FB, 0x2868B122, 0x3D69B124, 0x7734001F,
|
||
+ 0x34310001, 0x6C110000, 0x62D401B1, 0x216B5FFC,
|
||
+ 0x0E645F20, 0x4537FF00, 0x67330008, 0x180B0000,
|
||
+ 0x4EC001AE, 0x3E6A5F24, 0x3F215F26, 0x462E0040,
|
||
+ 0x29408000, 0x7930FFFB, 0x4E2C4000, 0x0F970FDD,
|
||
+ 0x7A695F26, 0x1B2C000C, 0x29350003, 0x49CC01AA,
|
||
+ 0x7F215F26, 0x1122FFFE, 0x21970FF3, 0x5F695F24,
|
||
+ 0x1C2C0004, 0x524A0000, 0x422D0042, 0x3F424000,
|
||
+ 0x6E2E0001, 0x0B420000, 0x26971027, 0x64970C53,
|
||
+ 0x2C685F26, 0x7E695F28, 0x5B60B408, 0x2861B40A,
|
||
+ 0x09685F24, 0x5221B40E, 0x7D60B40C, 0x30510000,
|
||
+ 0x52200021, 0x3A60B404, 0x10200040, 0x5360B414,
|
||
+ 0x91200164, 0xC7210152, 0xFF2300A6, 0xA9800C7A,
|
||
+ 0xEF685F20, 0xB86A5FE8, 0xBA3400FF, 0xD3605F22,
|
||
+ 0xEE2E0001, 0xA1625FE8, 0x81030000, 0xF930FFFB,
|
||
+ 0xA72C4010, 0xD24A0000, 0xDC2C0004, 0xB3490000,
|
||
+ 0xD63B0400, 0x8F2D0001, 0xBA0A4000, 0xF9C40175,
|
||
+ 0x8D210000, 0xEA410000, 0xC9685F24, 0xB563B120,
|
||
+ 0xBE2C0038, 0xE6500000, 0xE6500000, 0xA6500000,
|
||
+ 0xE6500000, 0x802CFFF6, 0x924A0000, 0xE22CFFCA,
|
||
+ 0x0A6B5F2E, 0x5B368000, 0x63CC018A, 0x393B0000,
|
||
+ 0x50C801A6, 0x392F003C, 0x1D40C000, 0x46685F30,
|
||
+ 0x50605F24, 0x158001A6, 0x32605F2E, 0x793B0000,
|
||
+ 0x26CC018F, 0x5F605F30, 0x76800191, 0x392F003C,
|
||
+ 0x5D40C000, 0x39695F20, 0x2B68B124, 0x4F220001,
|
||
+ 0x3A230000, 0x6C3500FF, 0x6C0B4000, 0x2C12C000,
|
||
+ 0x17148000, 0x4FCC019F, 0x5A9700F7, 0x11230191,
|
||
+ 0x71635F24, 0x10200040, 0x198001B4, 0x69970F20,
|
||
+ 0x9EC801B9, 0xD0605F24, 0xEF685F20, 0xBE6A5F24,
|
||
+ 0xFA3400FF, 0x9780013E, 0xBA215FDA, 0xE4970F39,
|
||
+ 0xDE2301B3, 0xB78001C0, 0xAF685F20, 0xFF9700F5,
|
||
+ 0xBA3400FF, 0xF18001AF, 0xFB9700FB, 0xB7380400,
|
||
+ 0xD460B120, 0x89685F24, 0x86970F33, 0xDB200000,
|
||
+ 0xB96A5EA0, 0xED645F21, 0xCC3A0001, 0xA0625EA0,
|
||
+ 0x988000A6, 0xD523019F, 0xDE8001BC, 0x9F23011B,
|
||
+ 0xF1635F24, 0xBC2000C0, 0xAD645F21, 0xD88000A6,
|
||
+ 0xB5695F32, 0xCE208000, 0xD4150000, 0xB7C801C5,
|
||
+ 0xD18B4000, 0xBA605F32, 0xB62001C8, 0xDA8000AB,
|
||
+ 0xCC685FD8, 0x9F215FD8, 0x98380000, 0xDAC801ED,
|
||
+ 0xA0970F5B, 0xF9605F34, 0xF6010000, 0x9F2C0034,
|
||
+ 0xE5480000, 0x9E6A5FEC, 0x81030000, 0xDE34000F,
|
||
+ 0xAE2E0001, 0xC7625FEC, 0xEC220000, 0x8A625F3A,
|
||
+ 0xBA62013E, 0xC6330004, 0xFF37000F, 0x9A2F01DD,
|
||
+ 0xD18B4000, 0xB48003B5, 0x9B80053F, 0xF08006DD,
|
||
+ 0x138006EA, 0x53800200, 0x53800200, 0x13800200,
|
||
+ 0x53800200, 0x13800200, 0x13800200, 0x53800200,
|
||
+ 0x53800200, 0x13800200, 0x13800200, 0x4B800BC6,
|
||
+ 0x13800200, 0x79605F34, 0x7A605F32, 0x188000A6,
|
||
+ 0x682200C1, 0x15800203, 0x2C2200A3, 0x55800203,
|
||
+ 0x2722008F, 0x55800203, 0x45220085, 0x15800203,
|
||
+ 0x0B2200C0, 0x55800203, 0x6A2200A0, 0x15800203,
|
||
+ 0x492200A1, 0x15800203, 0x23220081, 0x55800203,
|
||
+ 0xA0220087, 0xD5800203, 0xEC220000, 0xA3685F32,
|
||
+ 0xEF625F38, 0xB3230208, 0x8B341000, 0xE8CC02A0,
|
||
+ 0xFB97035E, 0xA0685F34, 0xB66A5F38, 0xDA230218,
|
||
+ 0xBC2C0035, 0xF3460000, 0xF6695F34, 0x9D800273,
|
||
+ 0xE860013C, 0xB5635F46, 0xBB97035E, 0xF9200215,
|
||
+ 0x9C605F36, 0xDE970393, 0xC9CC0263, 0x90970236,
|
||
+ 0x856A010C, 0xFA680110, 0xFE2A01A0, 0xB5C801C8,
|
||
+ 0xD8380000, 0x8DCC01C8, 0x94620110, 0xE7970C63,
|
||
+ 0x0D6A0110, 0x4C20B424, 0x6C500011, 0x05500001,
|
||
+ 0x6850C400, 0x05500001, 0x2D5001A0, 0x66500000,
|
||
+ 0x4E62B434, 0x0821022C, 0x172301C8, 0x6B940C7D,
|
||
+ 0x3E6B0112, 0x672201A0, 0x5C62010C, 0x1B200000,
|
||
+ 0x4D6A0110, 0x06600112, 0x23600110, 0x793B0000,
|
||
+ 0x0ACC0385, 0x588000A6, 0x79635F38, 0x201A4000,
|
||
+ 0x0262B140, 0x6F6B5EA0, 0x57020000, 0x1F3B0004,
|
||
+ 0x76635EA0, 0x0D388000, 0x3A605F32, 0x75008000,
|
||
+ 0x07300003, 0x75605F4A, 0x75008000, 0x3F30FFF8,
|
||
+ 0x4F384001, 0x36605F4C, 0x2832FFFF, 0x5D2E0D06,
|
||
+ 0x5D23024A, 0x078A4000, 0x13605F4E, 0x456A010C,
|
||
+ 0x102001A0, 0x4D210000, 0x4E0A0000, 0x26970DE4,
|
||
+ 0x6B970E02, 0x026B5F32, 0x0A685F4E, 0x7F37000F,
|
||
+ 0x343B0100, 0x576A5F34, 0x7263B144, 0x0B420000,
|
||
+ 0x1B695F46, 0x5F2C0002, 0x6A410000, 0x136A5F3A,
|
||
+ 0x5F2C0002, 0x0B420000, 0x31695F3C, 0x606B5F38,
|
||
+ 0x9F2C0002, 0xEA410000, 0xD18B4000, 0xBA20C000,
|
||
+ 0xFA605F32, 0xAE970C74, 0xA7220040, 0xCC20B424,
|
||
+ 0xEC500011, 0xA0500003, 0xA850C400, 0xC5500001,
|
||
+ 0x87500180, 0xE6500000, 0xCE62B434, 0x9E2000A6,
|
||
+ 0xC82100A6, 0xBF2300A6, 0x89800C7D, 0xD4635E9C,
|
||
+ 0xAD6B5FEE, 0xC5615E98, 0xEC2D0036, 0x91484000,
|
||
+ 0xB82F0001, 0xF4635FEE, 0xC0349FFF, 0x88404000,
|
||
+ 0xEC348000, 0xB9C80286, 0x912DFFFE, 0xE64A4000,
|
||
+ 0x2B2D0008, 0x51484000, 0x41625E9A, 0x30510000,
|
||
+ 0x58380000, 0x32C8029C, 0x10605E9E, 0x4A685E98,
|
||
+ 0x79215FDC, 0x2A970F4A, 0x21970E86, 0x49685E9E,
|
||
+ 0x0D6B5E9C, 0x58380000, 0x6BCC0290, 0x118B4000,
|
||
+ 0x586A5E9A, 0x1F215FD8, 0x1336FF00, 0x70D00297,
|
||
+ 0x2A970F4A, 0x4D6B5E9C, 0x778001C0, 0x31320008,
|
||
+ 0x3C2C0035, 0x73460000, 0x5F695E9E, 0x3D800274,
|
||
+ 0x7C9700F3, 0x3C209000, 0x3A605F32, 0x4480101D,
|
||
+ 0x8E208000, 0xFA605F32, 0xE480102C, 0xBD635F36,
|
||
+ 0xEC685F4A, 0xB9695F4C, 0x8B32FFFE, 0xCD048000,
|
||
+ 0xF0C402AB, 0x8F2D0001, 0xA0615F4C, 0xF5605F4A,
|
||
+ 0x93320002, 0xE4685F3A, 0xD88002B9, 0xBD635F36,
|
||
+ 0xD8380000, 0xBCD002B3, 0x99970354, 0xE4685F3A,
|
||
+ 0x8E390000, 0xDDC802B9, 0xE4300002, 0x88404000,
|
||
+ 0xBC30FFFE, 0xF6010000, 0xE72D01A0, 0x9F610106,
|
||
+ 0xCB32FFFE, 0x9CC80352, 0x94038000, 0xC3330001,
|
||
+ 0xAFD402C2, 0xEB2E0004, 0xD40C8000, 0xBD605F3A,
|
||
+ 0xD4038000, 0xBF37000F, 0x95C802C9, 0xF736FFF0,
|
||
+ 0xE42E0010, 0xAF6B5F40, 0xAC625F3E, 0xCD0B8000,
|
||
+ 0x94C402CE, 0xE0625F40, 0xDC6A5F42, 0x9B200000,
|
||
+ 0xE93600C0, 0xB5320006, 0x9BC802D6, 0xF12C0040,
|
||
+ 0x932EFFFF, 0xF88002D2, 0xEC600104, 0x85970CA6,
|
||
+ 0x9E2000A6, 0xE1970CAF, 0xEC970CB6, 0xA7970C63,
|
||
+ 0xE3690104, 0xB5680104, 0xAF2D0030, 0xE64A4000,
|
||
+ 0x092D0002, 0x704B4000, 0x493EFFFF, 0x0D1EC000,
|
||
+ 0x6CCC0322, 0x1A21B424, 0x18510041, 0x7160B428,
|
||
+ 0x4A2D0004, 0x30510000, 0x3851C010, 0x53510001,
|
||
+ 0x28220038, 0x4E62B434, 0x4C2102DB, 0x3F2300A6,
|
||
+ 0x6B940C7D, 0x3920003C, 0x3C60B348, 0x64970C53,
|
||
+ 0x27970C63, 0x50680106, 0x7B21B428, 0x356A5F3E,
|
||
+ 0x2A6B5FD0, 0x4251E000, 0x53510001, 0x1760B42C,
|
||
+ 0x492D0002, 0x30510000, 0x12200311, 0x5763B420,
|
||
+ 0x1060B424, 0x4E62B434, 0x6C685F4A, 0x39695F4C,
|
||
+ 0x5B60B408, 0x2861B40A, 0x226B5FCC, 0x7721B40C,
|
||
+ 0x4251E000, 0x13510001, 0x2B201061, 0x7D63B400,
|
||
+ 0x3A60B404, 0x6462B414, 0x5D200003, 0x3E605F50,
|
||
+ 0x7020031B, 0x21210325, 0x0A970C7D, 0x7F2300A6,
|
||
+ 0x0B940C7A, 0x67685F50, 0x4434FFFE, 0x3E605F50,
|
||
+ 0x18380000, 0x71C80320, 0x588000A6, 0x27685F50,
|
||
+ 0x4234FFFD, 0x3E605F50, 0x18380000, 0x65CC00A6,
|
||
+ 0xA46B5F36, 0xEE800CBD, 0xEA970C83, 0xB62301F2,
|
||
+ 0xEE800CBD, 0xBB2302DB, 0xA9800C83, 0xFD635F36,
|
||
+ 0xD8380000, 0xB3D0032B, 0x99970354, 0xE4685F3A,
|
||
+ 0x8E390000, 0xFBC80331, 0xE4300002, 0x88404000,
|
||
+ 0xFC30FFFE, 0xB6010000, 0xA72D01A0, 0xDF610106,
|
||
+ 0x8B32FFFE, 0xDCC80352, 0xEF6B5F40, 0xAC625F3E,
|
||
+ 0x8D0B8000, 0xF8C4033B, 0xE0625F40, 0x94038000,
|
||
+ 0xE6330003, 0x84D4033F, 0xAB2E0004, 0xD40C8000,
|
||
+ 0xBD605F3A, 0xE4970C53, 0xEC685F4A, 0xB9695F4C,
|
||
+ 0xDB60B408, 0xA861B40A, 0x90680106, 0xF56A5F3E,
|
||
+ 0xD221B40E, 0xB0510000, 0xBD60B40C, 0xD2200021,
|
||
+ 0xBA60B404, 0xE462B414, 0xC5685F36, 0xA6210341,
|
||
+ 0xFF2300A6, 0xA9800C7A, 0xA46B5F36, 0xF88000FB,
|
||
+ 0xB5635E90, 0xC16B5F34, 0xE00CC000, 0x844B0000,
|
||
+ 0x9F2C0002, 0xE5480000, 0xD4635F4A, 0xAC6B5E90,
|
||
+ 0xF6605F4C, 0x918B4000, 0xB96A5F40, 0xDB200000,
|
||
+ 0x17605F40, 0x6F3A0000, 0x7ECC0C95, 0x118B4000,
|
||
+ 0x4520FFFF, 0x2C2D0036, 0x264A4000, 0x772DFFFA,
|
||
+ 0x45625F42, 0x1D34003F, 0x17148000, 0x6CCC01F2,
|
||
+ 0x118B4000, 0x664A4000, 0x492D0002, 0x273607FC,
|
||
+ 0x57C801F4, 0x13320002, 0x2C088000, 0x4EC001F4,
|
||
+ 0x35008000, 0x62300001, 0x6FD40378, 0x2E2E0001,
|
||
+ 0x1F30FFFF, 0x518B4000, 0x76635E96, 0x33200102,
|
||
+ 0x7E97036D, 0x09600130, 0x06625F44, 0x73200102,
|
||
+ 0xBE97036D, 0xEF6B5E96, 0xEF600134, 0xA3625F46,
|
||
+ 0xD18B4000, 0xA469010C, 0x9768010E, 0xFD3D01A0,
|
||
+ 0xE6CC0390, 0x862E01A0, 0x9C62010C, 0xD8380000,
|
||
+ 0x90C8038F, 0xEC088000, 0xE8C001F0, 0x918B4000,
|
||
+ 0xD4620110, 0xA7630112, 0x988000A6, 0xD3680100,
|
||
+ 0xB6635E96, 0xDB6AB140, 0xEE210001, 0xBA230000,
|
||
+ 0xA1280001, 0xD80B0000, 0xCD11C000, 0x94038000,
|
||
+ 0xD7174000, 0xBEC803A1, 0xB4310001, 0xE1280001,
|
||
+ 0x3EC4039B, 0x6F6B5E96, 0x518B4000, 0x36635E96,
|
||
+ 0x6C220000, 0x05625E94, 0x0D6BB140, 0x45690100,
|
||
+ 0x78200001, 0x3602C000, 0x35160000, 0x5C6A5E94,
|
||
+ 0x02CC03AF, 0x6E2E0001, 0x45625E94, 0x1F30FFFF,
|
||
+ 0x722DFFFF, 0x01CC03A9, 0x2F6B5E96, 0x5C6A5E94,
|
||
+ 0x118B4000, 0x64625F4E, 0x512C03B8, 0x30884000,
|
||
+ 0x13800200, 0x7E8003C8, 0x5C800442, 0x3C800445,
|
||
+ 0x56800465, 0x1D800486, 0x3E8004EB, 0x7B8004EE,
|
||
+ 0x1B800509, 0x5E80050C, 0x7780052A, 0x13800200,
|
||
+ 0x53800200, 0x13800200, 0x13800200, 0x53800200,
|
||
+ 0x54230018, 0x0963013C, 0x1A970364, 0x7797037A,
|
||
+ 0x276A0130, 0x41030000, 0x4D0B8000, 0x2FC003D1,
|
||
+ 0x57020000, 0x106B013C, 0x28685F44, 0x5B695F46,
|
||
+ 0x32370020, 0x4DCC03D7, 0x6E2E0001, 0x09625F3C,
|
||
+ 0x360E0000, 0x420E4000, 0x4B32FFFE, 0x34970385,
|
||
+ 0x5797029D, 0x1B200000, 0x2A210120, 0x5F6A5F44,
|
||
+ 0x97970327, 0xDC200008, 0xCC210124, 0xBA6A5F46,
|
||
+ 0xD7970327, 0x969702A0, 0xA4685F3A, 0xE4210010,
|
||
+ 0xE4300002, 0xA7600128, 0xBA610104, 0xFB97035E,
|
||
+ 0xA6970CCB, 0xD0680130, 0xE0690134, 0x8E6A0120,
|
||
+ 0xFE6B0124, 0x9A60B010, 0xAA61B014, 0xFE680128,
|
||
+ 0x8E69012C, 0xEB2E0068, 0xC462B000, 0xBD2F0068,
|
||
+ 0xB463B004, 0xE06A0138, 0xDC2C0068, 0xB460B008,
|
||
+ 0xCA2D0068, 0x8461B00C, 0xAA62B018, 0xF168013C,
|
||
+ 0xBF2300A6, 0xCD388000, 0xFB60B01C, 0xAF940CD0,
|
||
+ 0xCA685F4E, 0x976A5F34, 0x98380000, 0xF5C8040D,
|
||
+ 0xF0884000, 0x8E208000, 0xA9408000, 0xDB200000,
|
||
+ 0xBF800419, 0xE4685F3A, 0xF069B024, 0xA02E0028,
|
||
+ 0xCE390000, 0x90D00409, 0xA4300002, 0xDC2C0068,
|
||
+ 0xAF090000, 0xEA31FFFE, 0xC768B028, 0xBF418000,
|
||
+ 0xB734001F, 0xE82E0002, 0xE9408000, 0xB5008000,
|
||
+ 0xDF2C0002, 0xA6500000, 0xA6500000, 0xC9970CD8,
|
||
+ 0x106A5F3C, 0x60685F34, 0x4B32FFFE, 0x33C80202,
|
||
+ 0x546B0104, 0x32695F3A, 0x09625F3C, 0x60625F40,
|
||
+ 0x600CC000, 0x272D01A0, 0x3A610104, 0x73490000,
|
||
+ 0x1F2C0002, 0x65480000, 0x63615F4A, 0x36605F4C,
|
||
+ 0x64970C53, 0x2C685F4A, 0x39695F4C, 0x7D60B40C,
|
||
+ 0x0E61B40E, 0x75680104, 0x4D210000, 0x2861B40A,
|
||
+ 0x1B60B408, 0x506A5F3C, 0x54200081, 0x3A60B404,
|
||
+ 0x6462B414, 0x21210430, 0x3F2300A6, 0x4B940C7A,
|
||
+ 0x11230202, 0x7880035E, 0x57230028, 0x0963013C,
|
||
+ 0x5B8003CA, 0x1A970364, 0x33200102, 0x7E97036D,
|
||
+ 0x49600130, 0x06625F44, 0x192C0001, 0x7E605F3C,
|
||
+ 0x2E32FFFC, 0x6B2E0004, 0x74970385, 0x1797029D,
|
||
+ 0x5B200000, 0x2A210120, 0x1F6A5F44, 0x57970327,
|
||
+ 0x1F6A5F44, 0x5C200008, 0x4C210124, 0x17970327,
|
||
+ 0x1F6A5F44, 0x72200010, 0x6D210128, 0x17970327,
|
||
+ 0x569702A0, 0x24685F3A, 0x23210018, 0x64300002,
|
||
+ 0x8160012C, 0xFA610104, 0xD823000A, 0x8963013C,
|
||
+ 0xD28003EB, 0x9A970364, 0xB797037A, 0xE8685F44,
|
||
+ 0xF60E0000, 0x8B32FFFE, 0xB4970385, 0xD797029D,
|
||
+ 0x9B200000, 0xEA210120, 0xDF6A5F44, 0x97970327,
|
||
+ 0xFA6A5F46, 0x9C200008, 0x8C210124, 0xD7970327,
|
||
+ 0x969702A0, 0xE4685F3A, 0xE76A0130, 0x976B0134,
|
||
+ 0xA4300002, 0xE7600128, 0xD70EC000, 0x8B32FFFE,
|
||
+ 0xC9625F3C, 0xAA208009, 0xB9970210, 0xC1970D7E,
|
||
+ 0x1F680148, 0x61970E49, 0x4D210000, 0x316A5F5C,
|
||
+ 0x72200010, 0x2F800E66, 0x03208100, 0x6860013C,
|
||
+ 0x5A970364, 0x3797037A, 0x316B0130, 0x7E695F44,
|
||
+ 0x180B0000, 0x4EC001F4, 0x4434FFFE, 0x17C801F4,
|
||
+ 0x420E4000, 0x0B32FFFE, 0x34970385, 0x5797029D,
|
||
+ 0x1B200000, 0x6A210120, 0x5F6A5F44, 0x17970327,
|
||
+ 0x3A6A5F46, 0x5C200008, 0x4C210124, 0x17970327,
|
||
+ 0x569702A0, 0x016A0134, 0x09690124, 0x532EFFFF,
|
||
+ 0x820D8000, 0xEA31FFFE, 0xE72D01A0, 0xA64A4000,
|
||
+ 0xC92D0002, 0x87494000, 0xB168013C, 0xE01A4000,
|
||
+ 0xD3C801FA, 0xB2695F3A, 0x816A0134, 0xF2310002,
|
||
+ 0xB1610128, 0xF4340100, 0xFAC804BA, 0xB16B0130,
|
||
+ 0xF5008000, 0x8D0B8000, 0xB82F0001, 0xEE2E0001,
|
||
+ 0xA2300001, 0xFBD004B7, 0xEE2E0001, 0x820D8000,
|
||
+ 0x9761012C, 0xD70EC000, 0xCB32FFFE, 0x89625F3C,
|
||
+ 0xF168013C, 0xB9970210, 0x81970D7E, 0xC669015C,
|
||
+ 0xB968014C, 0xE2350100, 0xDCC804E4, 0xA1970E49,
|
||
+ 0xD1520000, 0xAB2E0004, 0xA3690168, 0xDF680148,
|
||
+ 0xCE390000, 0x91D004CD, 0xAF090000, 0xEA31FFFE,
|
||
+ 0x918004CE, 0xD8218000, 0xC2685F52, 0x952EFFFC,
|
||
+ 0xFF418000, 0xAA381000, 0x9B605F52, 0xC797101D,
|
||
+ 0xA06A0154, 0xD068015C, 0xCD210000, 0x8B32FFFE,
|
||
+ 0xB4340100, 0xF2200010, 0xFCC804E3, 0x8F970E67,
|
||
+ 0xDF680148, 0xAF69014C, 0xB16A5F5C, 0xEF090000,
|
||
+ 0x2A31FFFE, 0x7A0A4000, 0x75200018, 0x2F800E66,
|
||
+ 0x576A5F58, 0x202E0028, 0x11520000, 0x51520000,
|
||
+ 0x51520000, 0x11520000, 0x168004C6, 0x40208200,
|
||
+ 0x2860013C, 0x59800488, 0x70200088, 0x2860013C,
|
||
+ 0x5A970364, 0x21361F00, 0x31320008, 0x79620138,
|
||
+ 0x33200102, 0x7E97036D, 0x49600130, 0x366B0138,
|
||
+ 0x06625F44, 0x793B0000, 0x506B013C, 0x29CC04FD,
|
||
+ 0x7F800500, 0x13370040, 0x02CC0500, 0x592C0001,
|
||
+ 0x3E605F3C, 0x760E0000, 0x4B32FFFE, 0x34970385,
|
||
+ 0x5B200000, 0x2A210120, 0x1F6A5F44, 0x772303E6,
|
||
+ 0x54800327, 0x17200048, 0x2860013C, 0x568004F0,
|
||
+ 0x1A970364, 0x73200102, 0x7E97036D, 0x09600130,
|
||
+ 0x46625F44, 0x0D32FFFD, 0x34970385, 0x5797029D,
|
||
+ 0x1B200000, 0x6A210120, 0x5F6A5F44, 0x17970327,
|
||
+ 0x1F6A5F44, 0x5C200008, 0x4C210124, 0x17970327,
|
||
+ 0x569702A0, 0x36200522, 0x13605F4E, 0x55230400,
|
||
+ 0x8963013C, 0xD28003EB, 0xD669B020, 0xA02E0028,
|
||
+ 0xD1520000, 0x91520000, 0x91520000, 0xFF418000,
|
||
+ 0xD1230202, 0x8A800CD8, 0x9A970364, 0xD52001FF,
|
||
+ 0xBE97036D, 0xC9600130, 0xFE605F3C, 0x97020000,
|
||
+ 0xC6625F44, 0x8B32FFFE, 0xB4970385, 0xDB200000,
|
||
+ 0xAA210120, 0xDF6A5F44, 0xD7970327, 0x9B200000,
|
||
+ 0xBD605F3A, 0xE7600128, 0xE4210010, 0xBA610104,
|
||
+ 0xCC230808, 0x8963013C, 0x928003EB, 0xC1030000,
|
||
+ 0xA637FFF8, 0xEECC0200, 0xF52C0544, 0xB0884000,
|
||
+ 0xD580054C, 0xBC800593, 0x9A800604, 0xD3800200,
|
||
+ 0xD780061D, 0xB380064E, 0x93800200, 0xD3800200,
|
||
+ 0x8320FFFC, 0xF9970365, 0xE1361F00, 0xB2C801F6,
|
||
+ 0xF1320008, 0xB9620138, 0xBF2A0011, 0xD3C401F6,
|
||
+ 0xB797037A, 0xE2300001, 0xDCD00558, 0xA82E0002,
|
||
+ 0xB2347FFF, 0xD7C801F4, 0xD7680138, 0xA3625F46,
|
||
+ 0xF6010000, 0x92290003, 0xBAC40560, 0xDD200003,
|
||
+ 0x3C2C0003, 0x63018000, 0x6A072000, 0x393B0000,
|
||
+ 0x4ECC01F8, 0x3E695F44, 0x242E0010, 0x420E4000,
|
||
+ 0x442A0800, 0x3A6A5F46, 0x17C401F8, 0x6832FFFF,
|
||
+ 0x020E4000, 0x4B32FFFE, 0x74970385, 0x1797029D,
|
||
+ 0x5B200000, 0x2A210120, 0x0A6B5F42, 0x5F6A5F44,
|
||
+ 0x03330001, 0x76D00578, 0x74230579, 0x14800327,
|
||
+ 0x319702AF, 0x4A6B5F42, 0x5C200008, 0x0C210124,
|
||
+ 0x7A6A5F46, 0x05330002, 0x36D00581, 0x51230582,
|
||
+ 0x94800327, 0xF19702AF, 0xC56B5F3A, 0xBA6A5F46,
|
||
+ 0xED210128, 0xB5635F46, 0xB2200010, 0xD7970327,
|
||
+ 0xD69702A0, 0xAC6B5F46, 0xBE680128, 0xC16A0134,
|
||
+ 0x8160012C, 0xCB32FFFE, 0xDC635F3A, 0x89625F3C,
|
||
+ 0xE920E000, 0xBE2305FD, 0xBA800210, 0xE520FFF8,
|
||
+ 0xB9970365, 0xE1361F00, 0xF2C801F6, 0xB1320008,
|
||
+ 0xB9620138, 0xFF2A0011, 0xD3C401F6, 0x92200082,
|
||
+ 0xFE97036D, 0x89600130, 0x86625F44, 0xD2200082,
|
||
+ 0x3E97036D, 0x6F600134, 0x62300001, 0x3AD005A5,
|
||
+ 0x682E0002, 0x32347FFF, 0x17C801F4, 0x57680138,
|
||
+ 0x63625F46, 0x36010000, 0x12290003, 0x5FC405AD,
|
||
+ 0x1D200003, 0x792C0006, 0x63018000, 0x2A072000,
|
||
+ 0x793B0000, 0x0ECC01F8, 0x3E695F44, 0x76680134,
|
||
+ 0x242E0010, 0x4931FFFF, 0x420E4000, 0x042A0800,
|
||
+ 0x17C401F8, 0x57020000, 0x4B32FFFE, 0x360E0000,
|
||
+ 0x420E4000, 0x082E0005, 0x0B32FFFE, 0x74970385,
|
||
+ 0x1797029D, 0x5B200000, 0x6A210120, 0x0A6B5F42,
|
||
+ 0x5F6A5F44, 0x03330001, 0x3CD005CA, 0x6832FFFF,
|
||
+ 0x7D2305CD, 0x14800327, 0x319702AF, 0x5F6A5F44,
|
||
+ 0x109702A3, 0x4A6B5F42, 0x5C200008, 0x0C210124,
|
||
+ 0x7A6A5F46, 0x05330002, 0x34D005D6, 0x6832FFFF,
|
||
+ 0x322305D9, 0x54800327, 0x719702AF, 0x3A6A5F46,
|
||
+ 0x109702A3, 0x49690124, 0x7A6A5F46, 0x2A31FFFE,
|
||
+ 0x672D01A0, 0x11484000, 0x0B32FFFE, 0x420D8000,
|
||
+ 0xB04B4000, 0xDA340001, 0xF5C801FE, 0xBB370001,
|
||
+ 0xF5C801FE, 0x816A0134, 0xB2200010, 0xCA6B5F42,
|
||
+ 0xED210128, 0xA6330003, 0xB6D005ED, 0xD12305EE,
|
||
+ 0x94800327, 0xF19702AF, 0xE4685F3A, 0x816A0134,
|
||
+ 0xD3605F4E, 0xB6200028, 0x8B21012C, 0xE832FFFF,
|
||
+ 0x97970327, 0xD69702A0, 0xCA685F4E, 0x816A0134,
|
||
+ 0xBD605F3A, 0xFC209000, 0xCD32FFFD, 0x89625F3C,
|
||
+ 0xF9970210, 0x81970D7E, 0xB968014C, 0xE1970E49,
|
||
+ 0x0D210000, 0x716A5F5C, 0x75200018, 0x2F800E66,
|
||
+ 0x5A970364, 0x3797037A, 0x096B5F44, 0x570EC000,
|
||
+ 0x4B32FFFE, 0x34970385, 0x1797029D, 0x5B200000,
|
||
+ 0x2A210120, 0x5F6A5F44, 0x57970327, 0x1C200008,
|
||
+ 0x4C210124, 0x3A6A5F46, 0x17970327, 0x569702A0,
|
||
+ 0x056B5F3A, 0x416A0134, 0x45330002, 0x2063012C,
|
||
+ 0x0B32FFFE, 0x49625F3C, 0x5B20F000, 0x3E2305FD,
|
||
+ 0x7A800210, 0x0620FFF9, 0x39970365, 0x45625F42,
|
||
+ 0x892D0002, 0xF5200018, 0xFE97036D, 0xAF600134,
|
||
+ 0xC434FFFE, 0x97C801F4, 0xA82E0002, 0xE3625F46,
|
||
+ 0xF420013C, 0xB3508000, 0x85500001, 0xF1290002,
|
||
+ 0x91484000, 0xD4038000, 0xCD32FFFD, 0x970EC000,
|
||
+ 0xFF340003, 0x90605F48, 0x8B32FFFE, 0xF4970385,
|
||
+ 0x9797029D, 0xFA6A5F46, 0xE86B5F48, 0xB5008000,
|
||
+ 0xA832FFFF, 0xFB370001, 0xDBC8063C, 0xB60E0000,
|
||
+ 0xEA210120, 0x9B200000, 0x97970327, 0xE86B5F48,
|
||
+ 0xBA6A5F46, 0xFB370001, 0xCCCC0675, 0x96230675,
|
||
+ 0xE4685F3A, 0x9701C000, 0xB12C01A0, 0xC5500001,
|
||
+ 0xCB32FFFE, 0x902A0002, 0xAF970F80, 0xC92801A0,
|
||
+ 0xBD605F3A, 0xE6894000, 0xE520FFF8, 0xB9970365,
|
||
+ 0xC5625F42, 0xB5200018, 0xBE97036D, 0xC9600130,
|
||
+ 0x86625F44, 0xF5200018, 0xFE97036D, 0xAF600134,
|
||
+ 0x8434FFFE, 0xD7C801F4, 0xE82E0002, 0xA3625F46,
|
||
+ 0xF420013C, 0x81509000, 0x85500001, 0xF1290002,
|
||
+ 0x11484000, 0x7E695F44, 0x5C340002, 0x10605F48,
|
||
+ 0x6832FFFF, 0x14038000, 0x170EC000, 0x570EC000,
|
||
+ 0x420E4000, 0x0B32FFFE, 0x34970385, 0x5797029D,
|
||
+ 0x1B200000, 0x6A210120, 0x4A6B5F42, 0x1F6A5F44,
|
||
+ 0x43330001, 0x14D00674, 0x16230675, 0x54800327,
|
||
+ 0x319702AF, 0x4A6B5F42, 0x7A6A5F46, 0x1C200008,
|
||
+ 0x05330002, 0x56D00680, 0x63018000, 0x2832FFFF,
|
||
+ 0x420E4000, 0x0C210124, 0x34230686, 0x54800327,
|
||
+ 0x8C210124, 0xF19702AF, 0xFA6A5F46, 0x909702A3,
|
||
+ 0xFA6A5F46, 0x909702A3, 0x8A6B5F42, 0xFA6A5F46,
|
||
+ 0xED210128, 0xA6330003, 0xBED006AD, 0xE86B5F48,
|
||
+ 0xB5008000, 0xE832FFFF, 0xFB370001, 0x9FC80691,
|
||
+ 0xF60E0000, 0xB2200010, 0x97970327, 0xE86B5F48,
|
||
+ 0xBA6A5F46, 0xFB370001, 0xEDCC06B6, 0xA769013C,
|
||
+ 0xA0685F34, 0xFA6A5F46, 0xD13D9000, 0x86CC06AB,
|
||
+ 0xD72C0028, 0x844B0000, 0x9F2C0002, 0xF3490000,
|
||
+ 0x1F2C0002, 0x761B4000, 0x73490000, 0x1F2C0002,
|
||
+ 0x761B4000, 0x33490000, 0x36200028, 0x761B4000,
|
||
+ 0x7EC806AB, 0x372306B6, 0x14800327, 0x772306B6,
|
||
+ 0x11800644, 0x72200010, 0x719702AF, 0x3A6A5F46,
|
||
+ 0x509702A3, 0x286B5F48, 0x3A6A5F46, 0x7B370001,
|
||
+ 0x1CC80697, 0x509702A3, 0x569702A0, 0x3E6A5F48,
|
||
+ 0x24685F3A, 0x6B360002, 0x5EC806C0, 0x3A6A5F46,
|
||
+ 0x60690134, 0x2832FFFF, 0x020E4000, 0x4B32FFFE,
|
||
+ 0x09625F3C, 0x64300002, 0x4160012C, 0x3168013C,
|
||
+ 0x79970210, 0x36695F58, 0x0A2D0032, 0x51484000,
|
||
+ 0x5C340002, 0x0CCC06D6, 0x206A0154, 0x5D20A000,
|
||
+ 0x14038000, 0x43330001, 0x4CD406D0, 0x2E2E0001,
|
||
+ 0x682E0002, 0x3E33FFFF, 0x170EC000, 0x4B32FFFE,
|
||
+ 0x28625F5C, 0x4E970D6A, 0x41970D7E, 0x3968014C,
|
||
+ 0x21970E49, 0x4D210000, 0x716A5F5C, 0x35200018,
|
||
+ 0x6F800E66, 0x01030000, 0x2637FFF8, 0x6ECC0200,
|
||
+ 0xB32C06E2, 0xF0884000, 0xF38006ED, 0x978007A7,
|
||
+ 0xE38009AE, 0xAE800A87, 0x93800200, 0xD78007A7,
|
||
+ 0xD3800200, 0xAE800A87, 0x98380000, 0xEECC0200,
|
||
+ 0x8D800BC5, 0xC320FFFC, 0xF9970365, 0x892D0002,
|
||
+ 0xF5200018, 0xBE97036D, 0x89600130, 0xEF600134,
|
||
+ 0x8434FFFE, 0xD7C801F4, 0xE82E0002, 0xB1290002,
|
||
+ 0x91484000, 0xE3625F46, 0xDA340001, 0x90605F48,
|
||
+ 0xF5008000, 0xBA30FFFD, 0xB60E0000, 0xF60E0000,
|
||
+ 0x8B32FFFE, 0xF4970385, 0xD797029D, 0x9B200000,
|
||
+ 0xEA210120, 0x8A6B5F42, 0xBA6A5F46, 0xC3330001,
|
||
+ 0xF6D0070B, 0xB723070C, 0x94800327, 0xF19702AF,
|
||
+ 0xA897097D, 0xFA6A5F46, 0xF6200028, 0x8D210000,
|
||
+ 0xD7970327, 0x969702A0, 0x8D685F46, 0xDB695F46,
|
||
+ 0xBA30FFFD, 0xF50C4000, 0xE0600120, 0xAA31FFFE,
|
||
+ 0x90610124, 0xC16A0134, 0xFC30FFFE, 0xB12C01A0,
|
||
+ 0xE832FFFF, 0x8D210000, 0x844B0000, 0xDF2C0002,
|
||
+ 0x1419C000, 0x532EFFFF, 0x61CC071E, 0x1235FFFE,
|
||
+ 0x50C801FC, 0x26970CCB, 0x20690134, 0x4E6A0120,
|
||
+ 0x7E6B0124, 0x21208400, 0x2B2E0068, 0x7D2F0068,
|
||
+ 0x0C61B010, 0x4462B000, 0x7463B004, 0x3B60B01C,
|
||
+ 0x7F2300A6, 0x2F940CD0, 0x1669B020, 0x72310002,
|
||
+ 0x14D00737, 0x49970CD8, 0x558001FC, 0x09970CD8,
|
||
+ 0x0D685F46, 0x6C220000, 0x46600124, 0x36010000,
|
||
+ 0x6A31FFFE, 0x170D0000, 0x31610128, 0x630D4000,
|
||
+ 0x170D0000, 0x5761012C, 0x49625F3C, 0x38200001,
|
||
+ 0x4D60013E, 0x3C209000, 0x39970210, 0x5D20A000,
|
||
+ 0x4E970D6A, 0x14680164, 0x286A0148, 0x58380000,
|
||
+ 0x20D00E47, 0x6F69014C, 0x630E8000, 0x17610140,
|
||
+ 0x71620148, 0x3A098000, 0x3661014C, 0x6A31FFFE,
|
||
+ 0x31610144, 0x40208200, 0x4D970D6C, 0x35680168,
|
||
+ 0x0E6A014C, 0x58380000, 0x60D00E47, 0x09690148,
|
||
+ 0x71620148, 0x3A098000, 0x17610140, 0x7A098000,
|
||
+ 0x8B32FFFE, 0xC20D8000, 0xF661014C, 0x9B20F000,
|
||
+ 0xCD970D6C, 0x9F680148, 0x8E690140, 0xEC220000,
|
||
+ 0xD0620144, 0xA060014C, 0x970D0000, 0xD7610140,
|
||
+ 0x9930FFFC, 0xC6600148, 0xED208001, 0x8D970D6C,
|
||
+ 0xE86A0148, 0xB968014C, 0xB66B0154, 0xF6620140,
|
||
+ 0xB6010000, 0xFA30FFFD, 0xE7600144, 0xA2300001,
|
||
+ 0x8E0A0000, 0xC20D8000, 0xD0610148, 0x810FC000,
|
||
+ 0xC9630150, 0xA7208010, 0x8D970D6C, 0xD4680164,
|
||
+ 0x0E690140, 0x58380000, 0x60D00E47, 0x286A0148,
|
||
+ 0x7968014C, 0x106B0150, 0x10610148, 0x76620140,
|
||
+ 0x782F0001, 0x09630150, 0x0E0A0000, 0x50620144,
|
||
+ 0x2D208001, 0x4D970D6C, 0x466A0150, 0x366B0154,
|
||
+ 0x7968014C, 0x09690148, 0x170EC000, 0x5F620150,
|
||
+ 0x096A0144, 0x57610140, 0x4E0A0000, 0x31620148,
|
||
+ 0x200F0000, 0x5D33FFFE, 0x7E635F5C, 0x3C30FFFE,
|
||
+ 0x67600144, 0x00208200, 0x0D970D6C, 0x41970D7E,
|
||
+ 0xA3690168, 0xF16A5F5C, 0xCE390000, 0xA0D00E47,
|
||
+ 0xE8970E5E, 0xB5200018, 0xAF800E66, 0xE020FFFD,
|
||
+ 0xF9970365, 0x892D0002, 0xB5200018, 0xFE97036D,
|
||
+ 0x89600130, 0xEF600134, 0xC434FFFE, 0x97C801F4,
|
||
+ 0xE82E0002, 0xB1290002, 0x91484000, 0xE3625F46,
|
||
+ 0x9C340002, 0xD0605F48, 0xF5008000, 0xA3018000,
|
||
+ 0xBC30FFFE, 0xCD32FFFD, 0xF60E0000, 0x820E4000,
|
||
+ 0xCB32FFFE, 0xB4970385, 0x9797029D, 0xE897097D,
|
||
+ 0xBA6A5F46, 0xF6200028, 0xCD210000, 0xA832FFFF,
|
||
+ 0xD7970327, 0x9B200000, 0xBA6A5F46, 0xCD210000,
|
||
+ 0xE832FFFF, 0x97970327, 0x969702A0, 0xFA6A5F46,
|
||
+ 0x92970644, 0xDB695F46, 0xCD685F46, 0xAC31FFFD,
|
||
+ 0xF6610120, 0xB4310001, 0xAF090000, 0xD0610124,
|
||
+ 0xA6970CCB, 0xE0690134, 0xCE6A0120, 0x8C61B010,
|
||
+ 0xAB2E0068, 0xC462B000, 0xC362B008, 0xB8208808,
|
||
+ 0xFB60B01C, 0xBF2300A6, 0xAF940CD0, 0xF069B024,
|
||
+ 0x0E390000, 0x62D00889, 0x49690124, 0x21208400,
|
||
+ 0x4A2D0068, 0x0361B004, 0x3B60B01C, 0x7F2300A6,
|
||
+ 0x6F940CD0, 0x1669B020, 0x32310002, 0x5AD40889,
|
||
+ 0x1B695F46, 0x4E6A0120, 0x78208808, 0x020E4000,
|
||
+ 0x57620120, 0x2B2E0068, 0x0462B000, 0x4362B008,
|
||
+ 0x3B60B01C, 0x7F2300A6, 0x6F940CD0, 0x3069B024,
|
||
+ 0x0E390000, 0x62D00889, 0x61208400, 0x3B60B01C,
|
||
+ 0x7F2300A6, 0x2F940CD0, 0x1669B020, 0x72310002,
|
||
+ 0x9AD40889, 0xC9970CD8, 0xCD685F46, 0xAF690120,
|
||
+ 0xE7600128, 0xBC30FFFE, 0x970D0000, 0xD761012C,
|
||
+ 0xDD9703A3, 0xA8615F3C, 0x9B20F000, 0xD02A0002,
|
||
+ 0xA5C4088B, 0xDF695F48, 0xCA350002, 0xBCCC088B,
|
||
+ 0xF9970210, 0x83970956, 0xA0970961, 0xE06A0154,
|
||
+ 0xB968014C, 0xF96B0140, 0xDF620150, 0x89690148,
|
||
+ 0xA7630148, 0xD80B0000, 0xC6630144, 0x9F30FFFF,
|
||
+ 0xEF090000, 0x97610140, 0xAD208001, 0xCD970D6C,
|
||
+ 0x2A970970, 0x7968014C, 0x6F6A0140, 0x09690148,
|
||
+ 0x766B0154, 0x0E0A0000, 0x1762014C, 0x5F30FFFF,
|
||
+ 0x570D0000, 0x17610140, 0x22300001, 0x570D0000,
|
||
+ 0x10610148, 0x5B200000, 0x67600144, 0x09630150,
|
||
+ 0x7C209000, 0x0E970D6A, 0x1F680148, 0x4E690140,
|
||
+ 0x0E6A014C, 0x4D084000, 0x6060014C, 0x10610148,
|
||
+ 0x36620140, 0x76010000, 0x5F30FFFF, 0x170D0000,
|
||
+ 0x7E610150, 0x3F208800, 0x0D970D6C, 0x7968014C,
|
||
+ 0x2F6A0140, 0x49690148, 0x766B0154, 0x0E0A0000,
|
||
+ 0x5762014C, 0x1F30FFFF, 0x2F090000, 0x57610140,
|
||
+ 0x7C30FFFE, 0x0E0A0000, 0x31620148, 0x49630150,
|
||
+ 0x3C209000, 0x4E970D6A, 0x7968014C, 0x09690148,
|
||
+ 0x6F6A0140, 0x06600148, 0x0D084000, 0x54038000,
|
||
+ 0x360E0000, 0x5762014C, 0x64300002, 0x200F0000,
|
||
+ 0x20630140, 0x4E208000, 0x4E970D6A, 0x1D20A000,
|
||
+ 0x4E970D6A, 0x17680154, 0x0E6A014C, 0x76010000,
|
||
+ 0xB4310001, 0xF5D40863, 0xD92C0001, 0x9F2C0002,
|
||
+ 0xE060014C, 0xB6620140, 0xB6010000, 0xDF30FFFF,
|
||
+ 0xF50C4000, 0xA7600144, 0xB6010000, 0xDF30FFFF,
|
||
+ 0x970D0000, 0xD0610148, 0xC0208200, 0x8D970D6C,
|
||
+ 0xDF680148, 0x986B014C, 0xA06A0154, 0xC1600140,
|
||
+ 0xB6010000, 0xFC30FFFE, 0xDC605F5A, 0x8E09C000,
|
||
+ 0xB1610144, 0xCB32FFFE, 0xE8625F5C, 0xA1208400,
|
||
+ 0xCD970D6C, 0x81970D7E, 0xA8970E5E, 0xC16B5F58,
|
||
+ 0x056A0160, 0x7E2F0034, 0x654BC000, 0x0B420000,
|
||
+ 0x7E370004, 0x34CC0D3E, 0x316A5F5C, 0x75200018,
|
||
+ 0x6F800E66, 0x09970CD8, 0x168001FA, 0x6860013C,
|
||
+ 0x3B97035E, 0x61230939, 0x75635F46, 0x0C200891,
|
||
+ 0x5C605F36, 0x1E970393, 0x09CC0263, 0x50970236,
|
||
+ 0x2E230897, 0x75635F46, 0x7C800213, 0x1F680148,
|
||
+ 0x0E6A014C, 0x4E690140, 0x6060014C, 0x10620144,
|
||
+ 0x760E0000, 0x1F30FFFF, 0x2F090000, 0x57610140,
|
||
+ 0xB1620148, 0xED208001, 0xCD970D6C, 0xAA970970,
|
||
+ 0xC9690148, 0xB968014C, 0xAF6A0140, 0xF66B0154,
|
||
+ 0xD7610140, 0x8E0A0000, 0x8E0A0000, 0xD762014C,
|
||
+ 0xBC30FFFE, 0xC6600148, 0xDB200000, 0xA7600144,
|
||
+ 0xC9630150, 0xBC209000, 0x8E970D6A, 0xF968014C,
|
||
+ 0x89690148, 0xEF6A0140, 0xC6600148, 0x8D084000,
|
||
+ 0xA4300002, 0xF60E0000, 0xF6620140, 0xA2300001,
|
||
+ 0xE060014C, 0xB2200010, 0x94695F52, 0xEC220000,
|
||
+ 0xB5190000, 0xCD615F52, 0xD3695F6C, 0xAF238000,
|
||
+ 0xDC635F56, 0x91484000, 0x816B5F34, 0xC92D0002,
|
||
+ 0xFF424000, 0xBA1F0000, 0xA0C80D47, 0xCB235F7A,
|
||
+ 0x9249C000, 0xFE2F0002, 0xCD1D0000, 0xBFCC08D7,
|
||
+ 0xD249C000, 0x8E390000, 0x98CC0D47, 0xF2695F56,
|
||
+ 0x8E390000, 0xFED408DA, 0xCA625F56, 0x982F0006,
|
||
+ 0xAE2E0001, 0xEA8008CC, 0xC2685F52, 0xA36B5F52,
|
||
+ 0xDE34000F, 0xBC3700F0, 0xB9CC08E2, 0xCE1C8000,
|
||
+ 0x3ACC08E4, 0x628008E6, 0x4E1C8000, 0x1FCC08E6,
|
||
+ 0x6E32FFFC, 0x018008E7, 0x0F31FFFC, 0x60198000,
|
||
+ 0x6B615F56, 0x236B5F52, 0x31310004, 0x4835000F,
|
||
+ 0x3F37000F, 0x4E1F4000, 0x6CC808FC, 0x14004000,
|
||
+ 0x63645F52, 0x2931FFF8, 0x19394001, 0x49615F6A,
|
||
+ 0x36010000, 0x51310003, 0x6C615F68, 0x1F30FFFF,
|
||
+ 0x2A2C0D06, 0x6E2308FB, 0x70884000, 0x1C605F6C,
|
||
+ 0x686A0148, 0x2F69014C, 0x18680140, 0x420D8000,
|
||
+ 0x2A31FFFE, 0x6B615F60, 0x7E6B0148, 0x0E0A0000,
|
||
+ 0x750F8000, 0x0163014C, 0x3C30FFFE, 0x58605F62,
|
||
+ 0x4B32FFFE, 0x09625F66, 0x05970C69, 0x5A200051,
|
||
+ 0x3160B444, 0x64685F56, 0x456B5F60, 0x1E34000F,
|
||
+ 0x47300003, 0x36010000, 0x2434FF00, 0x600CC000,
|
||
+ 0x1060B448, 0x6C3500FF, 0x6361B44A, 0x23685F68,
|
||
+ 0x206B5F62, 0x506A5F66, 0x76010000, 0x2434FF00,
|
||
+ 0x600CC000, 0x3660B44C, 0x2C3500FF, 0x4561B44E,
|
||
+ 0xAF62B454, 0xC8200925, 0xD321090A, 0xBF2300A6,
|
||
+ 0xEF800C80, 0xAE210001, 0xBA61015E, 0xCE208000,
|
||
+ 0xC960015C, 0x89970E08, 0xA36B5F52, 0xC5685F6C,
|
||
+ 0xBF37000F, 0xF43B0100, 0xF263B144, 0x9F21085B,
|
||
+ 0xDF2C0002, 0xAA410000, 0xA4685F56, 0xC2230D47,
|
||
+ 0x9E34000F, 0xE3645F52, 0xC7300003, 0xBA605F68,
|
||
+ 0x82800D7E, 0xC3970956, 0xE0970961, 0xB968014C,
|
||
+ 0xEF6A0140, 0x89690148, 0xB66B0154, 0xCE0A0000,
|
||
+ 0x9762014C, 0xEF6A0140, 0xC9630150, 0x97610140,
|
||
+ 0xFC30FFFE, 0x8E0A0000, 0xB1620148, 0xDB200000,
|
||
+ 0xE7600144, 0xBC209000, 0x8E970D6A, 0xCE690140,
|
||
+ 0x9F680148, 0xE86A0148, 0xD7610140, 0x8D084000,
|
||
+ 0xE060014C, 0x9F30FFFF, 0xB60E0000, 0xF1620148,
|
||
+ 0x9B200000, 0xC78008BE, 0xDF680148, 0x8E6A014C,
|
||
+ 0x8E690140, 0xE060014C, 0xD0620144, 0xAF090000,
|
||
+ 0xF60E0000, 0x97610140, 0xB1620148, 0xED208001,
|
||
+ 0x0E800D6C, 0x7968014C, 0x49690148, 0x2F6A0140,
|
||
+ 0x57610140, 0x360E0000, 0x31620148, 0x57020000,
|
||
+ 0x4B32FFFE, 0x0E0A0000, 0x17680154, 0x50620144,
|
||
+ 0x010C0000, 0x68600150, 0x40208200, 0x0E800D6C,
|
||
+ 0x6F6A0140, 0x09690148, 0x3968014C, 0x71620148,
|
||
+ 0x17610140, 0x7C30FFFE, 0x4E0A0000, 0x17680154,
|
||
+ 0x10620144, 0x410C0000, 0x68600150, 0x00208200,
|
||
+ 0x4E800D6C, 0x32635F4E, 0x0A6B5F42, 0x7A6A5F46,
|
||
+ 0x9C200008, 0xCD210000, 0xC5330002, 0xA9D0098A,
|
||
+ 0xD4038000, 0x8B32FFFE, 0xBE33FFFF, 0xD70EC000,
|
||
+ 0xC6230995, 0x94800327, 0xB19702AF, 0xFA6A5F46,
|
||
+ 0x909702A3, 0xFA6A5F46, 0xD09702A3, 0xBA6A5F46,
|
||
+ 0xD09702A3, 0xBA6A5F46, 0x909702A3, 0xFA6A5F46,
|
||
+ 0x909702A3, 0xDF695F48, 0xFA6A5F46, 0x8C350001,
|
||
+ 0xA5C809A8, 0xF6200028, 0xD9970354, 0xAC685F4A,
|
||
+ 0xF9695F4C, 0x8B32FFFE, 0x8D048000, 0xE6C409A2,
|
||
+ 0x0F2D0001, 0x60615F4C, 0x75605F4A, 0x0520FFFF,
|
||
+ 0x4D210000, 0x3A6A5F46, 0x242309A9, 0x54800327,
|
||
+ 0x52970644, 0x3A6A5F46, 0x32200010, 0x4D210000,
|
||
+ 0x2B6B5F4E, 0x54800327, 0x4320FFFC, 0x39970365,
|
||
+ 0x61361F00, 0x32C801F6, 0x31320008, 0x79620138,
|
||
+ 0x3F2A0011, 0x53C401F6, 0x7797037A, 0x316B0130,
|
||
+ 0x36010000, 0x5235FFFE, 0x57C801F4, 0x1808C000,
|
||
+ 0x56C009BE, 0x2FCC01F4, 0x096B5F44, 0x682E0002,
|
||
+ 0x23625F46, 0x7E2F0002, 0x50635F44, 0x3E33FFFF,
|
||
+ 0x4B32FFFE, 0x170EC000, 0x0B32FFFE, 0x74970385,
|
||
+ 0x57680138, 0x3E695F44, 0x01030000, 0x652B0003,
|
||
+ 0x26C409CE, 0x5D200003, 0x7C2C0003, 0x2A072000,
|
||
+ 0x793B0000, 0x0ECC01F8, 0x1B695F46, 0x642E0010,
|
||
+ 0x35034000, 0x6C31FFFD, 0x4E09C000, 0x020E4000,
|
||
+ 0x042A0800, 0x57C401F8, 0x5797029D, 0x1B200000,
|
||
+ 0x6A210120, 0x0A6B5F42, 0x3A6A5F46, 0x43330001,
|
||
+ 0xACD009E3, 0xED2309E4, 0xD4800327, 0xB19702AF,
|
||
+ 0xCC970BA4, 0xBA6A5F46, 0xB6200028, 0xCD210000,
|
||
+ 0xD7970327, 0x969702A0, 0xBE695F44, 0xCD685F46,
|
||
+ 0x8931FFFF, 0xD70D0000, 0xD0610124, 0x9F30FFFF,
|
||
+ 0xD70D0000, 0xB6610120, 0xA6970CCB, 0xE0690134,
|
||
+ 0x8E6A0120, 0xCC61B010, 0xEB2E0068, 0x8462B000,
|
||
+ 0x8362B008, 0xF8208808, 0xFB60B01C, 0xBF2300A6,
|
||
+ 0xEF940CD0, 0xB069B024, 0x8E390000, 0xC6D00A0A,
|
||
+ 0x09690124, 0x61208400, 0x4A2D0068, 0x0361B004,
|
||
+ 0x7B60B01C, 0x3F2300A6, 0x2F940CD0, 0x5669B020,
|
||
+ 0x72310002, 0x05D00A0C, 0x09970CD8, 0x558001FC,
|
||
+ 0x09970CD8, 0x4D685F46, 0x7E695F44, 0x0E6A0120,
|
||
+ 0x46600124, 0x170D0000, 0x31610128, 0x46690130,
|
||
+ 0x176B0134, 0x7C30FFFE, 0x760E0000, 0x3662012C,
|
||
+ 0x28630130, 0x79610134, 0x6C220000, 0x09625F3C,
|
||
+ 0x6920E000, 0x39970210, 0x14680164, 0x67690150,
|
||
+ 0x98380000, 0xE0D00E47, 0xF66B0154, 0x896A0144,
|
||
+ 0xF968014C, 0x98610154, 0xB82F0001, 0xC9630150,
|
||
+ 0xCE690140, 0x9762014C, 0x81600140, 0xD4004000,
|
||
+ 0x820D8000, 0xD0610148, 0xE832FFFF, 0xAC088000,
|
||
+ 0xE7600144, 0x80208200, 0x8D970D6C, 0xF5680168,
|
||
+ 0xB66B0154, 0xD8380000, 0xE0D00E47, 0x8E6A014C,
|
||
+ 0x89690148, 0xC9630150, 0xF1620148, 0xBA098000,
|
||
+ 0xD7610140, 0x820D8000, 0xA832FFFF, 0xC20D8000,
|
||
+ 0xB661014C, 0xDB20F000, 0xCD970D6C, 0x9F680148,
|
||
+ 0xEF69014C, 0xAF6A0140, 0xBA230000, 0xC6630144,
|
||
+ 0xE060014C, 0x970D0000, 0x90610148, 0xF60E0000,
|
||
+ 0xB6620140, 0xED208001, 0xCD970D6C, 0xA86A0148,
|
||
+ 0xF968014C, 0x8E690140, 0xB66B0154, 0xF6620140,
|
||
+ 0xB60E0000, 0xDF30FFFF, 0xF60E0000, 0xB1620148,
|
||
+ 0xAF090000, 0xF1610144, 0xFE33FFFF, 0x89630150,
|
||
+ 0xE7208010, 0x8D970D6C, 0x82690164, 0xF968014C,
|
||
+ 0x0E390000, 0x60D00E47, 0x4E690140, 0x286A0148,
|
||
+ 0x506B0150, 0x10610148, 0x36620140, 0x782F0001,
|
||
+ 0x49630150, 0x2F090000, 0x31610144, 0x6D208001,
|
||
+ 0x0D970D6C, 0x466A0150, 0x766B0154, 0x3968014C,
|
||
+ 0x49690148, 0x170EC000, 0x1F620150, 0x600F0000,
|
||
+ 0x1D33FFFE, 0x7E635F5C, 0x5F6B0144, 0x17610140,
|
||
+ 0x180B0000, 0x67630148, 0x7C30FFFE, 0x180B0000,
|
||
+ 0x46630144, 0x00208200, 0x0D970D6C, 0x41970D7E,
|
||
+ 0xA3690168, 0xF16A5F5C, 0xCE390000, 0xA0D00E47,
|
||
+ 0xE8970E5E, 0xB5200018, 0xAF800E66, 0xE020FFFD,
|
||
+ 0xF9970365, 0xA1361F00, 0xB2C801F6, 0xF1320008,
|
||
+ 0xB9620138, 0xFF2A0011, 0xD3C401F6, 0xB797037A,
|
||
+ 0xF16B0130, 0xB6010000, 0x9235FFFE, 0xD7C801F4,
|
||
+ 0x9808C000, 0xDBC00A97, 0xEFCC01F4, 0x896B5F44,
|
||
+ 0xA82E0002, 0xE3625F46, 0xFE2F0002, 0x90635F44,
|
||
+ 0xC100C000, 0xBE33FFFF, 0xA00F0000, 0xCB32FFFE,
|
||
+ 0x170EC000, 0x4B32FFFE, 0x74970385, 0x17680138,
|
||
+ 0x7E695F44, 0x01030000, 0x252B0003, 0x64C40AA9,
|
||
+ 0x5D200003, 0x3F2C0005, 0x2A072000, 0x793B0000,
|
||
+ 0x0ECC01F8, 0x5B695F46, 0x642E0010, 0x2A31FFFE,
|
||
+ 0x420E4000, 0x042A0800, 0x17C401F8, 0x5797029D,
|
||
+ 0x1B200000, 0x4D210000, 0x5F6A5F44, 0x17970327,
|
||
+ 0x0C970BA4, 0x7A6A5F46, 0x76200028, 0x0D210000,
|
||
+ 0x6832FFFF, 0x17970327, 0x169702A0, 0x68685F44,
|
||
+ 0x1B695F46, 0x57020000, 0x75034000, 0x1F30FFFF,
|
||
+ 0x4931FFFF, 0x140C8000, 0x06600124, 0x750C4000,
|
||
+ 0x67600128, 0x200CC000, 0x20600120, 0x66970CCB,
|
||
+ 0x20690134, 0x496A0128, 0x5F610130, 0x0C61B010,
|
||
+ 0x6B2E0068, 0x0462B000, 0x0362B008, 0x78208808,
|
||
+ 0x3B60B01C, 0x7F2300A6, 0x6F940CD0, 0x3069B024,
|
||
+ 0x0E390000, 0x73D40ADC, 0x49970CD8, 0x168001FA,
|
||
+ 0x49690124, 0x21208400, 0x0A2D0068, 0x4361B004,
|
||
+ 0xBB60B01C, 0xFF2300A6, 0xEF940CD0, 0x9669B020,
|
||
+ 0xF2310002, 0xB0D40ADA, 0x8E6A0120, 0xF8208808,
|
||
+ 0xEB2E0068, 0x8462B000, 0x8362B008, 0xFB60B01C,
|
||
+ 0xBF2300A6, 0xEF940CD0, 0xF069B024, 0x8E390000,
|
||
+ 0xC8D00ADA, 0xA1208400, 0xBB60B01C, 0xFF2300A6,
|
||
+ 0xAF940CD0, 0xD669B020, 0xF2310002, 0xB0D40ADA,
|
||
+ 0x89970CD8, 0xCD685F46, 0xEF690120, 0xA7600128,
|
||
+ 0xD70D0000, 0x9761012C, 0xAC220000, 0xC9625F3C,
|
||
+ 0x9B20F000, 0xF9970210, 0xDF680148, 0x8E6A014C,
|
||
+ 0xCE690140, 0xA060014C, 0x90620144, 0xEF090000,
|
||
+ 0xD7610140, 0xB60E0000, 0xB1620148, 0xED208001,
|
||
+ 0x8D970D6C, 0xF968014C, 0xC9690148, 0xAF6A0140,
|
||
+ 0xD7610140, 0xA3018000, 0x970D0000, 0xD0610148,
|
||
+ 0x9F30FFFF, 0xCE0A0000, 0xD7680154, 0x90620144,
|
||
+ 0x810C0000, 0xE8600150, 0xC0208200, 0x8D970D6C,
|
||
+ 0xE06A0154, 0xB968014C, 0xB96B0140, 0xDF620150,
|
||
+ 0x09690148, 0x67630148, 0x580B0000, 0x06630144,
|
||
+ 0x5F30FFFF, 0x2F090000, 0x17610140, 0x6D208001,
|
||
+ 0x4D970D6C, 0x3968014C, 0x2F6A0140, 0x49690148,
|
||
+ 0x31620148, 0x4E0A0000, 0x57680154, 0x10620144,
|
||
+ 0x57610140, 0x010C0000, 0x28600150, 0x40208200,
|
||
+ 0x0D970D6C, 0x7968014C, 0x766B0154, 0x09690148,
|
||
+ 0x2F6A0140, 0x49630150, 0x57610140, 0x36695F58,
|
||
+ 0x4E0A0000, 0x1762014C, 0x2F2D0030, 0x664A4000,
|
||
+ 0x2F2D0006, 0x47494000, 0x673607FC, 0x13320002,
|
||
+ 0x79620154, 0x14038000, 0x03330001, 0x7ED40B49,
|
||
+ 0x6E2E0001, 0x282E0002, 0x10620144, 0x6832FFFF,
|
||
+ 0x31620148, 0x40351F00, 0x50310008, 0x39610158,
|
||
+ 0x6920E000, 0x0D970D6C, 0x3E680144, 0x4E6A014C,
|
||
+ 0x0E690140, 0x506B0150, 0x760E0000, 0x1762014C,
|
||
+ 0x0100C000, 0x43330001, 0x52D40B5C, 0x192C0001,
|
||
+ 0x5F2C0002, 0x1F30FFFF, 0x170D0000, 0x57610140,
|
||
+ 0x8D210000, 0xD0610148, 0xE920E000, 0x8D970D6C,
|
||
+ 0xD06B0150, 0x97680154, 0x8E6A014C, 0xC163014C,
|
||
+ 0xE8600150, 0x8E600154, 0x81030000, 0xC3330001,
|
||
+ 0xB4D40B6E, 0xD92C0001, 0xDF2C0002, 0x90620144,
|
||
+ 0xCE0A0000, 0xB6620140, 0x9F30FFFF, 0xF60E0000,
|
||
+ 0xB1620148, 0xED208001, 0xCD970D6C, 0x89690148,
|
||
+ 0x896A0144, 0xD06B0150, 0xD7610140, 0xB1620148,
|
||
+ 0xC100C000, 0xBE33FFFF, 0x89630150, 0xCE600154,
|
||
+ 0x01030000, 0x43330001, 0x5BD40B84, 0x192C0001,
|
||
+ 0x5F2C0002, 0x27600144, 0x00208200, 0x4D970D6C,
|
||
+ 0x68690144, 0x286A0148, 0x3968014C, 0x766B0154,
|
||
+ 0x36620140, 0x49630150, 0x4E600154, 0x01030000,
|
||
+ 0x43330001, 0x12D40B93, 0x192C0001, 0x5F2C0002,
|
||
+ 0x2060014C, 0x7A0A4000, 0x71620148, 0x3C30FFFE,
|
||
+ 0x0E0A0000, 0x50620144, 0x40208200, 0x0D970D6C,
|
||
+ 0x49690148, 0x206A0154, 0x186B014C, 0x57610140,
|
||
+ 0x9F620150, 0xFE33FFFF, 0xCE09C000, 0xA3800878,
|
||
+ 0xF2635F4E, 0x8A6B5F42, 0x9C200008, 0xCD210000,
|
||
+ 0xDF6A5F44, 0x85330002, 0x86D00BB0, 0xEC6B5F46,
|
||
+ 0xA832FFFF, 0xD70EC000, 0xEF230BC0, 0x94800327,
|
||
+ 0xF19702AF, 0x9F6A5F44, 0x909702A3, 0xDF6A5F44,
|
||
+ 0xAC685F4A, 0xF9695F4C, 0xCB32FFFE, 0x8D048000,
|
||
+ 0xA5C40BBB, 0xCF2D0001, 0xE0615F4C, 0xB5605F4A,
|
||
+ 0xFA6A5F46, 0x8520FFFF, 0x8D210000, 0xF19702AF,
|
||
+ 0xBA6A5F46, 0xF2200010, 0xCD210000, 0xAB6B5F4E,
|
||
+ 0xD4800327, 0x93800200, 0x81030000, 0xC637FFFF,
|
||
+ 0xEECC0200, 0xAE2C0BCB, 0xB0884000, 0xE9800BCC,
|
||
+ 0x9A970364, 0xDF20000E, 0xFE97036D, 0xA43C000E,
|
||
+ 0xEFCC01F4, 0x952001FF, 0xBE97036D, 0xFE605F3C,
|
||
+ 0xBF340003, 0xEFCC01F4, 0xC92E000E, 0x8B32FFFE,
|
||
+ 0xB4970385, 0xD797029D, 0xE822000E, 0x9B200000,
|
||
+ 0xCD210000, 0x97970327, 0xA0685F34, 0xC92101D8,
|
||
+ 0x1F610106, 0x7D2C0008, 0x73490000, 0x1F2C0002,
|
||
+ 0x65480000, 0x23615F4A, 0x36605F4C, 0x67685F3C,
|
||
+ 0x58695F40, 0x3C30FFFE, 0x1B605F3E, 0x6F090000,
|
||
+ 0x02C40BEE, 0x57605F40, 0x502001A0, 0x2A230BF3,
|
||
+ 0x6C600104, 0x3D635F36, 0x3D8002D7, 0x72200010,
|
||
+ 0x2C600104, 0x58800420, 0x529700EB, 0x2A220003,
|
||
+ 0x2F62B438, 0x56695FCA, 0x42685EDE, 0x2C220000,
|
||
+ 0x4A61B400, 0x2862B406, 0x18380000, 0x7CC8009C,
|
||
+ 0x15340080, 0x43C80C05, 0x6F200C16, 0x27230C06,
|
||
+ 0x5A8000AB, 0x1B605EDE, 0x24685EEC, 0x5E23009C,
|
||
+ 0x6C220000, 0x0A625EEC, 0x14695EDE, 0x5B6A5EF0,
|
||
+ 0x18380000, 0x7AC800F3, 0x60198000, 0x176A5F02,
|
||
+ 0x60198000, 0x396A5EA0, 0x1CD000AB, 0x5E36FDFF,
|
||
+ 0x20625EA0, 0x5A8000AB, 0x51215EDE, 0x2F220006,
|
||
+ 0x04970F9D, 0x77215EEC, 0x70510000, 0x30510000,
|
||
+ 0x70884000, 0x2F220030, 0x2F62B438, 0x70695FCE,
|
||
+ 0xAC685EF0, 0xEC220000, 0xE061B420, 0x8262B426,
|
||
+ 0xD8380000, 0x9FC8009D, 0x95340080, 0xEDC80C2B,
|
||
+ 0xE5200C31, 0xAF230C2C, 0x9A8000AB, 0xF5605EF0,
|
||
+ 0xA8685EFE, 0xFD23009D, 0xEC220000, 0x86625EFE,
|
||
+ 0xE1800C0A, 0xBF215EF0, 0xAF220006, 0xC4970F9D,
|
||
+ 0xBB215EFE, 0xF0510000, 0xF0510000, 0xB0884000,
|
||
+ 0xAF220300, 0xEF62B438, 0xF0695FCE, 0xA0685F02,
|
||
+ 0xEC220000, 0x8161B440, 0xA362B446, 0xD8380000,
|
||
+ 0x99C8009E, 0xD5340080, 0xCEC80C46, 0xAF200C4C,
|
||
+ 0xCF230C47, 0x9A8000AB, 0xB9605F02, 0xEC685F10,
|
||
+ 0xFB23009E, 0xAC220000, 0x82625F10, 0xE1800C0A,
|
||
+ 0xB3215F02, 0xEF220006, 0xC4970F9D, 0xBF215F10,
|
||
+ 0xF0510000, 0xB0510000, 0xB0884000, 0xC2685EDE,
|
||
+ 0x91215EDE, 0xD8380000, 0xC0D00C5F, 0xA1205EEC,
|
||
+ 0xA5518000, 0xE6500000, 0xD8695EA0, 0xA6500000,
|
||
+ 0xC0390200, 0x81615EA0, 0x918B4000, 0xC100C000,
|
||
+ 0x2F220006, 0x7F2300A6, 0x67800FC0, 0x2C685EF0,
|
||
+ 0x7F215EF0, 0x18380000, 0x00D00C5F, 0x6D205EFE,
|
||
+ 0x66800C58, 0x20685F02, 0x33215F02, 0x58380000,
|
||
+ 0x00D00C5F, 0x69205F10, 0x66800C58, 0x02685EDE,
|
||
+ 0x51215EDE, 0x18380000, 0x3FD40C57, 0x588000A6,
|
||
+ 0x2C685EF0, 0x7F215EF0, 0x58380000, 0x1ED000A6,
|
||
+ 0x2D205EFE, 0x66800C58, 0x7D605EEC, 0x0E615EEE,
|
||
+ 0x518B4000, 0x31605EFE, 0x0A615F00, 0x518B4000,
|
||
+ 0xB5605F10, 0xC6615F12, 0xD18B4000, 0xAC685EF0,
|
||
+ 0xCD210000, 0x98380000, 0xA5C80C94, 0xEF61B434,
|
||
+ 0xD16A5FCE, 0xA361B426, 0x8162B420, 0xD5340080,
|
||
+ 0x85C80C93, 0xD4635E9C, 0xFF215EF0, 0xAF220006,
|
||
+ 0xC4970F9D, 0x8D6B5E9C, 0x9A8000AB, 0xE3615EF0,
|
||
+ 0x918B4000, 0xD7620116, 0xC7200C98, 0x9A8000AB,
|
||
+ 0x86970C6F, 0xCE6A0116, 0xE620B404, 0xAC500011,
|
||
+ 0xE0500003, 0xA850C400, 0x85500001, 0xC7500180,
|
||
+ 0x26500000, 0x6462B414, 0x5E2000A6, 0x082100A6,
|
||
+ 0x7F2300A6, 0x29800C7A, 0x20690102, 0x5B200000,
|
||
+ 0x45350020, 0x14C801F2, 0x18218000, 0x6F615ED4,
|
||
+ 0x3D605EDA, 0x7E605EDC, 0x518B4000, 0x36695ED4,
|
||
+ 0x58380000, 0x3AC800F3, 0x0E390000, 0x49D400EF,
|
||
+ 0x3D605EDA, 0x518B4000, 0x76695ED4, 0x18380000,
|
||
+ 0x3AC800F3, 0x4E390000, 0x49D400EF, 0x3E605EDC,
|
||
+ 0x518B4000, 0x20685ED4, 0x33215ED4, 0x58380000,
|
||
+ 0x24D400F1, 0x70510000, 0x518B4000, 0x18695ECC,
|
||
+ 0x63685ED2, 0x0E390000, 0x27D4009B, 0x58380000,
|
||
+ 0x5CC8009B, 0x3E23009B, 0x1A8000AB, 0x5D215ECC,
|
||
+ 0x25518000, 0x5B200000, 0x7A605ED2, 0x118B4000,
|
||
+ 0x58695ECC, 0x3A605ED2, 0x0E390000, 0x58695EA0,
|
||
+ 0x09D400EF, 0x49390008, 0x41615EA0, 0x118B4000,
|
||
+ 0x396A5EA0, 0x4E685ECC, 0x5D215ECC, 0x1736FFF7,
|
||
+ 0x60625EA0, 0x18380000, 0x24D400F1, 0x70510000,
|
||
+ 0x918B4000, 0xC2685F52, 0xD8218000, 0xB6144000,
|
||
+ 0xE6CC00A0, 0x8D615F52, 0xBC2300A0, 0xEC200CE9,
|
||
+ 0xDA8000AB, 0xB4200400, 0x9360B144, 0xC3210200,
|
||
+ 0x8A68B144, 0xDE34000F, 0xF5190000, 0x8561B144,
|
||
+ 0xE3645F52, 0xB6010000, 0x90310008, 0xE839A0C8,
|
||
+ 0xB04B4000, 0xE72D002C, 0xC7494000, 0x97020000,
|
||
+ 0x83330001, 0xD0377F00, 0xC963010A, 0xB0320003,
|
||
+ 0xCD625F68, 0x97020000, 0x8832FFF8, 0xF83A4001,
|
||
+ 0xA8625F6A, 0xD7020000, 0xE832FFFF, 0x9D2E0D06,
|
||
+ 0xE2230D1A, 0x878A4000, 0xAA205F7A, 0xD18B4000,
|
||
+ 0xC9205F82, 0x918B4000, 0x8E205F8A, 0xD18B4000,
|
||
+ 0xA0205F92, 0xD18B4000, 0xE7205F9A, 0x918B4000,
|
||
+ 0xE3205FA2, 0x918B4000, 0xA4205FAA, 0xD18B4000,
|
||
+ 0x8A205FB2, 0xD18B4000, 0xCD205FBA, 0x918B4000,
|
||
+ 0x82205FC2, 0xD18B4000, 0xDC605F6C, 0xB3490000,
|
||
+ 0xDF2C0002, 0x844B0000, 0x9F2C0002, 0xD24A0000,
|
||
+ 0x1F2C0002, 0x65480000, 0x6F615F58, 0x1C635F56,
|
||
+ 0x6B625F5A, 0x1F605F5C, 0x27970E26, 0x716A5F5C,
|
||
+ 0x536B010C, 0x2F3A0000, 0x0BC80D36, 0x6C213000,
|
||
+ 0x3A098000, 0x6C0B4000, 0x5861010E, 0x32C00D31,
|
||
+ 0x7ECC0E45, 0x05685F5A, 0x29230D36, 0x79635F54,
|
||
+ 0x026B5F68, 0x66800E2B, 0x6769010A, 0x056B5F56,
|
||
+ 0x10310008, 0x4AC80D67, 0x576A5F58, 0x22390080,
|
||
+ 0x4B2E0035, 0x07458000, 0x01970D7E, 0x42685F52,
|
||
+ 0x24230D43, 0x4B341000, 0x59CC102C, 0x1D2000A0,
|
||
+ 0x40645F53, 0x36695F58, 0x1E970273, 0x4169010E,
|
||
+ 0x4D223000, 0x3A0A4000, 0x2CC80D63, 0x54680108,
|
||
+ 0x32620114, 0x58380000, 0x69C80D50, 0x00970C95,
|
||
+ 0x45970C69, 0x0169010E, 0x2D20B444, 0x6C500011,
|
||
+ 0x05500001, 0x6850C400, 0x45500001, 0x3135FFFF,
|
||
+ 0x2A410000, 0x6B6A0114, 0x5F2C0002, 0x26500000,
|
||
+ 0x6F62B454, 0x0A200D61, 0x1C210D61, 0x7F2300A6,
|
||
+ 0xAF800C80, 0xFA203000, 0xCE60010E, 0x8D210000,
|
||
+ 0xDB610108, 0x8D615F52, 0x988000A6, 0xEC220000,
|
||
+ 0xDB62015E, 0x918B4000, 0xAE210001, 0xFA61015E,
|
||
+ 0x8960015C, 0xDC635F56, 0xC9970E08, 0xA36B5F52,
|
||
+ 0xC5685F6C, 0xBF37000F, 0xB43B0100, 0xF263B144,
|
||
+ 0xB2695F56, 0xDF2C0002, 0xEA410000, 0x93695F5A,
|
||
+ 0x9F2C0002, 0xEA410000, 0xD0695F5C, 0x9F2C0002,
|
||
+ 0xEA410000, 0xA5800D47, 0x82685F52, 0xFA69B140,
|
||
+ 0x3C30FFFE, 0x53D0038F, 0x79635F54, 0x24300002,
|
||
+ 0x41030000, 0x1E34000F, 0x3E3CFFFF, 0x79228000,
|
||
+ 0x4D120000, 0x181D8000, 0x2361B140, 0x796A5EA0,
|
||
+ 0x38CC0D8F, 0x7636FFFB, 0x60625EA0, 0x2A3B2000,
|
||
+ 0x63685F32, 0x3A635F52, 0x0D344000, 0x6AC80D99,
|
||
+ 0x05685F36, 0x599700AB, 0x41685F54, 0x3F2300A6,
|
||
+ 0x1A8000AB, 0x42685F52, 0x7A69B140, 0x2F238000,
|
||
+ 0x5E34000F, 0x17020000, 0x093EFFFF, 0x4E138000,
|
||
+ 0x9419C000, 0xE361B140, 0xFF30FFF8, 0x9438A084,
|
||
+ 0xCC500020, 0xBD680118, 0x97695F54, 0xC218C000,
|
||
+ 0xE4600118, 0xBA1CC000, 0xB8CC0DE3, 0xF161011E,
|
||
+ 0xA3685F68, 0xE363011C, 0xC160011A, 0x85970C69,
|
||
+ 0xF96B011A, 0xAD20B444, 0x8E500041, 0xC5500001,
|
||
+ 0x87500180, 0xE6500000, 0xF602C000, 0x9336FF00,
|
||
+ 0x8162B44C, 0xDB3700FF, 0xF263B44E, 0xBF222000,
|
||
+ 0xEF62B454, 0x9F6B011E, 0x9B200000, 0xE760011E,
|
||
+ 0xB93B0000, 0xD2CC0DC3, 0xFF2300A6, 0xAC200DC6,
|
||
+ 0xFA210DC6, 0xAF800C80, 0x9B68011C, 0xFA69B140,
|
||
+ 0xCA6A0118, 0x8D1D0000, 0xA361B140, 0xEC1E0000,
|
||
+ 0x93620118, 0xE2C80DDF, 0xDB200000, 0xAE210001,
|
||
+ 0xD4038000, 0x97174000, 0xBECC0DD6, 0xD92C0001,
|
||
+ 0x8931FFFF, 0xC0800DD0, 0xD461011C, 0x87300003,
|
||
+ 0xB5695F32, 0xC160011A, 0xDB354000, 0xAAC80DAF,
|
||
+ 0xE9200DAF, 0xA46B5F36, 0x9A8000AB, 0xE3685F32,
|
||
+ 0x13695F36, 0x4D344000, 0x5DC800A6, 0x26894000,
|
||
+ 0x6F3A0000, 0x10C8038F, 0x3D635F36, 0x4D6B5F4A,
|
||
+ 0x6C600104, 0x1F610106, 0x2C625F3E, 0x71635F48,
|
||
+ 0x27970C63, 0x75680104, 0x676A0106, 0x286B5F48,
|
||
+ 0x7160B428, 0x1E21B42A, 0x30510000, 0x4100C000,
|
||
+ 0x2434FF00, 0x541A0000, 0x6062B42C, 0x1B3700FF,
|
||
+ 0x1363B42E, 0x756A5F3E, 0x73200041, 0x1060B424,
|
||
+ 0x4E62B434, 0x32210DEC, 0x3F2300A6, 0x6B940C7D,
|
||
+ 0xA46B5F36, 0xD18B4000, 0xFD635F36, 0xBC200120,
|
||
+ 0xCD210000, 0x86220020, 0x8E6B5F4C, 0xC4800DE8,
|
||
+ 0xF9635F54, 0xA76B5F6A, 0x9D200140, 0xCD210000,
|
||
+ 0x86220020, 0xFD605F60, 0xCE615F62, 0x89625F66,
|
||
+ 0xDB635F5E, 0x85970C69, 0xA4685F60, 0xF66A5F62,
|
||
+ 0x826B5F5E, 0xD060B448, 0xFF21B44A, 0xB0510000,
|
||
+ 0x8100C000, 0xE434FF00, 0xD41A0000, 0x8162B44C,
|
||
+ 0xDB3700FF, 0xB263B44E, 0x906A5F66, 0xF3200041,
|
||
+ 0x3160B444, 0x6F62B454, 0x46200E43, 0x17210E11,
|
||
+ 0x7F2300A6, 0x2F800C80, 0x39635F54, 0x5B200000,
|
||
+ 0x4B210140, 0x2722002C, 0x276B5F6A, 0x7D605F60,
|
||
+ 0x0E615F62, 0x49625F66, 0x5B635F5E, 0x05970C69,
|
||
+ 0x546A5F5E, 0x24685F60, 0x17695F62, 0x54038000,
|
||
+ 0x0537FF00, 0x4218C000, 0x5060B448, 0x0D3600FF,
|
||
+ 0x0262B44A, 0x6061B44C, 0x5B200000, 0x1360B44E,
|
||
+ 0x506A5F66, 0x11200011, 0x3160B444, 0x6F62B454,
|
||
+ 0x10210E2F, 0x7F2300A6, 0x4D940C80, 0x206B5F54,
|
||
+ 0x518B4000, 0x25210041, 0x2F800D3A, 0x44210021,
|
||
+ 0x6F800D3A, 0x176A5F58, 0x02690164, 0x602E0028,
|
||
+ 0x0E390000, 0x4BD00E5A, 0x6F090000, 0x2A31FFFE,
|
||
+ 0x75680168, 0x3F418000, 0x3734001F, 0x682E0002,
|
||
+ 0x29408000, 0x75008000, 0x5F2C0002, 0x26500000,
|
||
+ 0x26500000, 0x518B4000, 0x4E208000, 0x29408000,
|
||
+ 0x5B200000, 0x29800E53, 0x20685F58, 0x4D210000,
|
||
+ 0x972C0028, 0xE6500000, 0xE6500000, 0xA6500000,
|
||
+ 0xEA410000, 0x918B4000, 0xAE230D3E, 0xE73607FC,
|
||
+ 0xD0C8038F, 0xB9635F54, 0x816B5F58, 0xC9625F66,
|
||
+ 0xA00CC000, 0xC44B0000, 0xDF2C0002, 0xA5480000,
|
||
+ 0xF9635F62, 0xB66B010E, 0x9B605F64, 0xF60DC000,
|
||
+ 0x9B610108, 0xE4970C53, 0xC1685F62, 0x94695F64,
|
||
+ 0xBD60B40C, 0xCE61B40E, 0xD4680108, 0x906A5F66,
|
||
+ 0xF421B40A, 0x9B60B408, 0xB0510000, 0xD4200081,
|
||
+ 0x3A60B404, 0x6462B414, 0x41685F54, 0x10210E75,
|
||
+ 0x7F2300A6, 0x29800C7A, 0x36695F6E, 0x4E208000,
|
||
+ 0x54150000, 0x25C80E8B, 0x118B4000, 0x796A5EA0,
|
||
+ 0x39605F6E, 0x6D200E91, 0x7536FFFD, 0x20625EA0,
|
||
+ 0x5A8000AB, 0x2A685FDC, 0x36695F6E, 0x58380000,
|
||
+ 0x0AC80EF4, 0x54605F70, 0x712C0040, 0x33490000,
|
||
+ 0x17655F6E, 0x5C65B112, 0x6F31FFFB, 0x312D4010,
|
||
+ 0x664A4000, 0x2F6BB110, 0x092D0002, 0x6F0AC000,
|
||
+ 0x9BC00EE8, 0xF04B4000, 0xD62DFFF6, 0xB93B0000,
|
||
+ 0xF7D40EAD, 0x8D685F70, 0xA02D0012, 0xE64A4000,
|
||
+ 0xD42C0042, 0x844B0000, 0xB82DFFEE, 0xEF1F8000,
|
||
+ 0x9FCC0EEA, 0xD4004000, 0xFB215F72, 0x8F970FDD,
|
||
+ 0xFE695F72, 0xB92C0006, 0xA9350003, 0xDACC0EEF,
|
||
+ 0xBB215F72, 0xF422FFFC, 0xE1970FF3, 0x8D685F70,
|
||
+ 0xB9215FDC, 0xE0970F5B, 0xE6971027, 0xA4970C53,
|
||
+ 0xEC6B5F70, 0xA8685F72, 0xBD695F74, 0xD522B40A,
|
||
+ 0xBA63B408, 0xD1520000, 0xFD60B40C, 0x8E61B40E,
|
||
+ 0xD4200081, 0xBA60B404, 0x90200040, 0xD360B414,
|
||
+ 0xD0210EBA, 0xBF2300A6, 0x8B940C7A, 0xE0685F6E,
|
||
+ 0xBC695FEA, 0xFA3400FF, 0xF930FFFB, 0x852C401A,
|
||
+ 0xC44B0000, 0x8F2D0001, 0xB82F0001, 0xDD430000,
|
||
+ 0x802CFFF6, 0xD24A0000, 0xF92C0006, 0x844B0000,
|
||
+ 0xA5615FEA, 0xF82F0001, 0xEF0AC000, 0xA5C40EDD,
|
||
+ 0xFA230000, 0x9D430000, 0x976A5F6E, 0xCD685F70,
|
||
+ 0x0D3600FF, 0x5D3A1000, 0x4A62B130, 0x06970F33,
|
||
+ 0x4E208000, 0x39605F6E, 0x0C230E91, 0x7C800115,
|
||
+ 0x66210088, 0x34655F6F, 0x0D685F70, 0x76695F6E,
|
||
+ 0x3E2C0038, 0x65480000, 0x4E800E93, 0x3F9700F5,
|
||
+ 0x4D685F70, 0x39215FDC, 0x21230EE3, 0x63800F5B,
|
||
+ 0x396A5EA0, 0x5E350800, 0x6F615F6E, 0x1DC800A6,
|
||
+ 0x0A3A0002, 0x60625EA0, 0x588000A6, 0x2B68B148,
|
||
+ 0x62300001, 0x20D00F04, 0x21300007, 0x62D00F09,
|
||
+ 0x06300008, 0x7E3CFFFF, 0x4A64B148, 0x3F80009F,
|
||
+ 0x7A230000, 0x1363B148, 0x3C635FF2, 0x59635FF0,
|
||
+ 0x6D800EFE, 0x07710048, 0x29710149, 0x5471804B,
|
||
+ 0x01800F0B, 0x40685FFC, 0x736AB1F8, 0x2434FF00,
|
||
+ 0x46300008, 0x192C0001, 0x21361F00, 0x71320008,
|
||
+ 0x0E0A0000, 0x41C000F9, 0x7F225E90, 0x3930FFFB,
|
||
+ 0x0E2C4000, 0x4E0A0000, 0x63C000F3, 0x37605FD2,
|
||
+ 0x43625FD4, 0x122A000F, 0x0EC000ED, 0x518B4000,
|
||
+ 0x88685FD6, 0xFB695FD4, 0xD8380000, 0x8FC80F27,
|
||
+ 0xF3490000, 0x87615FD6, 0x918B4000, 0xF9290044,
|
||
+ 0xD1C00F2F, 0xAE685FD2, 0xA2615FD4, 0xF6010000,
|
||
+ 0x812D0044, 0xE1615FD2, 0xD18B4000, 0x9B1C0000,
|
||
+ 0xF7605FD2, 0xB4605FD4, 0x918B4000, 0xDE695FD6,
|
||
+ 0x98380000, 0xFAC800F3, 0xEA410000, 0x91605FD6,
|
||
+ 0x918B4000, 0xCE390000, 0xD7C800ED, 0xA64A4000,
|
||
+ 0xD8380000, 0xBAC800F3, 0x88404000, 0xEF3A0000,
|
||
+ 0xAEC80F47, 0xDB2C003A, 0xCB420000, 0x892E0038,
|
||
+ 0xC32CFFC6, 0xA9408000, 0x918B4000, 0xD12DFFFE,
|
||
+ 0xC8404000, 0x918B4000, 0x8E390000, 0xD7C800ED,
|
||
+ 0xA64A4000, 0xD8380000, 0xFAC800F3, 0x88404000,
|
||
+ 0xEF3A0000, 0xA0C80F58, 0xBE2C0038, 0xCB420000,
|
||
+ 0xAC2E003A, 0xC72CFFC8, 0xE9408000, 0x918B4000,
|
||
+ 0x892D0002, 0xC8404000, 0xD18B4000, 0x8E390000,
|
||
+ 0xD7C800ED, 0x98380000, 0xBAC800F3, 0xF6635E96,
|
||
+ 0x1B2C003A, 0x444B0000, 0x472CFFFE, 0x124A0000,
|
||
+ 0x793B0000, 0x20C80F6E, 0x2F3A0000, 0x4CC80F7B,
|
||
+ 0x5F2F0038, 0x2A42C000, 0x2C2E003A, 0x662FFFC8,
|
||
+ 0x08438000, 0x4B800F76, 0x7F424000, 0x2F3A0000,
|
||
+ 0x6BC80F74, 0x2C2E003A, 0x08438000, 0x4B800F76,
|
||
+ 0x092D0002, 0x7F424000, 0x66500000, 0x26500000,
|
||
+ 0x2F6B5E96, 0x662CFFC4, 0x518B4000, 0x092D0002,
|
||
+ 0x7F424000, 0x1F2F0038, 0x2A42C000, 0x4B800F76,
|
||
+ 0x95320001, 0xC5367FFF, 0xC6C80F93, 0xB22A0008,
|
||
+ 0xD7C00F8F, 0xA6500000, 0xA6500000, 0xE6500000,
|
||
+ 0xE6500000, 0xA6500000, 0xA6500000, 0xE6500000,
|
||
+ 0xA6500000, 0xC6C80F93, 0xEA800F83, 0x93260008,
|
||
+ 0xE6500000, 0x932EFFFF, 0xB8CC0F90, 0xD18B4000,
|
||
+ 0x93635E94, 0xC4970F9D, 0xCA6B5E94, 0x9A8000AB,
|
||
+ 0x93635E94, 0xC4970F9D, 0xC1030000, 0xAB685E94,
|
||
+ 0xDA8000AB, 0x91484000, 0xA7615E92, 0xD4605E90,
|
||
+ 0x06300008, 0x55D40FBE, 0x76635E96, 0x1634007F,
|
||
+ 0x5F30FFFF, 0x092D0002, 0x170D0000, 0x704B4000,
|
||
+ 0x62300001, 0x192C0001, 0x1B695E90, 0x6C1E0000,
|
||
+ 0x3FCC0FAE, 0x5B200000, 0x63024000, 0x1B368000,
|
||
+ 0x4035007F, 0x0D1D0000, 0x3E695E92, 0x4BC80FBC,
|
||
+ 0x31320008, 0x541A0000, 0x4F2D0001, 0x07464000,
|
||
+ 0x0100C000, 0x6F6B5E96, 0x58380000, 0x118B4000,
|
||
+ 0x7F424000, 0x28800FB8, 0x1B1C0000, 0x518B4000,
|
||
+ 0x14605E90, 0x51484000, 0x45625E94, 0x06300008,
|
||
+ 0x71D40FDB, 0x17020000, 0x06300008, 0x5634007F,
|
||
+ 0x6136007F, 0x2C1E0000, 0x17C800ED, 0x5F30FFFF,
|
||
+ 0x3A6A5E90, 0x67615E92, 0x492D0002, 0x170D0000,
|
||
+ 0x7F424000, 0x1C6A5E94, 0x3E695E92, 0x62300001,
|
||
+ 0x192C0001, 0x6C1E0000, 0x74CC0FD8, 0x1B200000,
|
||
+ 0x34380080, 0x70444000, 0x518B4000, 0x1B200000,
|
||
+ 0x46800FCC, 0x36635E96, 0x044B0000, 0x5F2C0002,
|
||
+ 0xA9434000, 0xD24A0000, 0xC92D0002, 0xBF424000,
|
||
+ 0xD71B8000, 0x9F2C0002, 0x924A0000, 0xC92D0002,
|
||
+ 0xFF424000, 0x971B8000, 0x9F2C0002, 0xD24A0000,
|
||
+ 0x892D0002, 0xFF424000, 0xF51AC000, 0xAF6B5E96,
|
||
+ 0xDF2C0002, 0x892D0002, 0x918B4000, 0xD4605E90,
|
||
+ 0xA7615E92, 0xF6635E96, 0xF3490000, 0x940C8000,
|
||
+ 0xA5480000, 0xCE390000, 0xE1C8101A, 0xA1340FFC,
|
||
+ 0xCFC81002, 0xAA280041, 0x96C01002, 0xCB240041,
|
||
+ 0xAA072000, 0xCF801007, 0xCC31FFFA, 0xA3024000,
|
||
+ 0xF436FFC0, 0xB5034000, 0xBC37003F, 0xFE695E92,
|
||
+ 0xD1484000, 0x8D048000, 0x88404000, 0xC92D0002,
|
||
+ 0x91484000, 0xD604C400, 0xC8404000, 0x80C4101A,
|
||
+ 0xC92D0002, 0x91484000, 0xAC220000, 0xE2048400,
|
||
+ 0x88404000, 0xC0C4101A, 0xC92D0002, 0x91484000,
|
||
+ 0xA2048400, 0xC8404000, 0xEF6B5E96, 0x8D685E90,
|
||
+ 0xD18B4000, 0x8A685F14, 0x99215F14, 0xD8380000,
|
||
+ 0x05D01023, 0x65518000, 0x518B4000, 0x0100C000,
|
||
+ 0x49220002, 0x3F2300A6, 0x27800FC0, 0x4A685F14,
|
||
+ 0x5D215F1A, 0x18380000, 0x05D01023, 0x518B4000,
|
||
+ 0x0A685F14, 0x59215F14, 0x58380000, 0x24D400F1,
|
||
+ 0x55340080, 0x0FC81034, 0x09220002, 0x42800F98,
|
||
+ 0x30510000, 0x4E685F1A, 0x54635E9C, 0x18380000,
|
||
+ 0x33CC103A, 0x518B4000, 0x5D215F1A, 0x09220002,
|
||
+ 0x60970F94, 0x0D6B5E9C, 0x29801035, 0x60000000,
|
||
+ 0x20000000
|
||
+};
|
||
+
|
||
+// Align to PKA_BUFFER_RAM_SIZE. This is greater than the actual buffer
|
||
+// length so that the image is zero padded.
|
||
+static const uint32_t fw1_farm_img_data_buf[2048] =
|
||
+{
|
||
+ 0x267001C9, 0x132040FA, 0x26502421, 0x032040D0,
|
||
+ 0x295046C7, 0x0D500000, 0x258C0200, 0x0F70AAC9,
|
||
+ 0x3B7000C8, 0x2D70001D, 0x2670001F, 0x296A4010,
|
||
+ 0x086B4014, 0x39621FF8, 0x16631FF4, 0x15684000,
|
||
+ 0x34694004, 0x1E601FF6, 0x3F611FF2, 0x346A4008,
|
||
+ 0x156B400C, 0x32621FFA, 0x1B631FF0, 0x219700BB,
|
||
+ 0x1E684034, 0x2170001E, 0x3A34003F, 0x281A0000,
|
||
+ 0x3F621FFE, 0x0628000B, 0x20C4004A, 0x1124002C,
|
||
+ 0x21884000, 0x2980004A, 0x30800033, 0x22800048,
|
||
+ 0x3480003E, 0x2980004A, 0x2C800040, 0x2C80002C,
|
||
+ 0x3980003A, 0x27800042, 0x21800044, 0x2A800046,
|
||
+ 0x276A4018, 0x34621FFC, 0x339701D9, 0x09300002,
|
||
+ 0x39D00063, 0x3930FFFE, 0x36800059, 0x276A4018,
|
||
+ 0x34621FFC, 0x2A97025F, 0x09300002, 0x39D00063,
|
||
+ 0x3930FFFE, 0x34800064, 0x2E970327, 0x268C0400,
|
||
+ 0x16614018, 0x36800059, 0x2F970733, 0x36800059,
|
||
+ 0x2A9706EF, 0x36800059, 0x29970735, 0x36800059,
|
||
+ 0x319706F1, 0x36800059, 0x3D970422, 0x36800059,
|
||
+ 0x27970767, 0x36800059, 0x3B7000C8, 0x24200021,
|
||
+ 0x358C5000, 0x26800073, 0x2B707FC8, 0x08702084,
|
||
+ 0x2D70001D, 0x36200000, 0x2D010000, 0x1E220001,
|
||
+ 0x2F970085, 0x01684084, 0x26340020, 0x0ECC0055,
|
||
+ 0x3920000F, 0x238C0100, 0x09300002, 0x39D00063,
|
||
+ 0x1B601FFC, 0x2A681FF0, 0x246A4014, 0x2D010000,
|
||
+ 0x2460400C, 0x2F970085, 0x29681FFC, 0x3930FFFE,
|
||
+ 0x036A1FF6, 0x276B1FF8, 0x08624000, 0x37634010,
|
||
+ 0x0D6A1FFE, 0x3F9700C3, 0x0E6A1FF2, 0x246B1FF4,
|
||
+ 0x05624004, 0x3A634014, 0x006A1FFA, 0x35230000,
|
||
+ 0x06624008, 0x358C5000, 0x3463401C, 0x106440C9,
|
||
+ 0x3C800006, 0x376B1FE4, 0x228B4000, 0x3C6B1FE6,
|
||
+ 0x228B4000, 0x3F8C0480, 0x24BC004E, 0x1B61401C,
|
||
+ 0x228B4000, 0x2D010000, 0x3930FFFE, 0x0D500000,
|
||
+ 0x0D500000, 0x0D500000, 0x0D500000, 0x09300002,
|
||
+ 0x202A0002, 0x0B614000, 0x1B624010, 0x29604008,
|
||
+ 0x1D218808, 0x23800079, 0x0B631FEC, 0x166B4000,
|
||
+ 0x086A1FF4, 0x27604000, 0x06614004, 0x2A634008,
|
||
+ 0x1B624010, 0x16624014, 0x37218001, 0x25970079,
|
||
+ 0x35068000, 0x186B4008, 0x0D691FF2, 0x24634000,
|
||
+ 0x06614004, 0x29604008, 0x1B624010, 0x2A320001,
|
||
+ 0x262EFFFF, 0x36058000, 0x1531FFFE, 0x214B4000,
|
||
+ 0x20250002, 0x0E494000, 0x2819C000, 0x07CC00A5,
|
||
+ 0x16624014, 0x2C218200, 0x25970079, 0x396B1FEC,
|
||
+ 0x228B4000, 0x37694008, 0x268C0400, 0x0D684024,
|
||
+ 0x04140000, 0x18D400B0, 0x36200000, 0x228B4000,
|
||
+ 0x00240001, 0x1A084000, 0x228B4000, 0x13684030,
|
||
+ 0x37380001, 0x21604030, 0x228B4000, 0x13684030,
|
||
+ 0x0834FFFE, 0x21604030, 0x228B4000, 0x386A40C4,
|
||
+ 0x3F694030, 0x1B360001, 0x1732FFF9, 0x18350001,
|
||
+ 0x1831FFFA, 0x011A4000, 0x228B4000, 0x07018000,
|
||
+ 0x28310006, 0x18350001, 0x0D614030, 0x2C320007,
|
||
+ 0x1B360001, 0x0A6240C4, 0x228B4000, 0x29604008,
|
||
+ 0x06614004, 0x16624014, 0x37218001, 0x268C0400,
|
||
+ 0x1B61401C, 0x2A694010, 0x27604000, 0x36064000,
|
||
+ 0x1B624010, 0x228B4000, 0x29604008, 0x06614004,
|
||
+ 0x16624014, 0x2D218018, 0x268C0400, 0x1B61401C,
|
||
+ 0x296A4010, 0x27604000, 0x2F260001, 0x1B624010,
|
||
+ 0x228B4000, 0x29604008, 0x06614004, 0x16624014,
|
||
+ 0x2C218200, 0x268C0400, 0x1B61401C, 0x246A4014,
|
||
+ 0x27604000, 0x1B624010, 0x228B4000, 0x1C2100FF,
|
||
+ 0x288000EE, 0x1A210000, 0x05631FE4, 0x24611FEC,
|
||
+ 0x21681FF2, 0x2B6040A0, 0x0B691FF4, 0x27604000,
|
||
+ 0x29604008, 0x18614010, 0x268C0400, 0x0970081C,
|
||
+ 0x2470881D, 0x01F000F9, 0x3930FFFE, 0x27490000,
|
||
+ 0x29310001, 0x3A200003, 0x1DD40075, 0x1231FFFF,
|
||
+ 0x286540B4, 0x216B1FFE, 0x036A1FF6, 0x3D33FFFF,
|
||
+ 0x3FD00110, 0x276B1FF8, 0x08624000, 0x06624008,
|
||
+ 0x37634010, 0x3F8C0480, 0x24BC004E, 0x3C70011F,
|
||
+ 0x0970081C, 0x2470881D, 0x13F0010E, 0x38800112,
|
||
+ 0x3F8C0480, 0x24BC004E, 0x196840A0, 0x21694024,
|
||
+ 0x1F090000, 0x30C801D6, 0x07024000, 0x1D2E0001,
|
||
+ 0x16624014, 0x1F31FFFB, 0x0E684028, 0x2670001F,
|
||
+ 0x2F34001F, 0x2E184000, 0x322C0001, 0x2E020000,
|
||
+ 0x09240008, 0x1334FFE0, 0x08300005, 0x0B691FF4,
|
||
+ 0x206040A2, 0x2D6040A6, 0x322C0001, 0x1F090000,
|
||
+ 0x25C40135, 0x356940A0, 0x1C050000, 0x252DFFFF,
|
||
+ 0x1531FFFE, 0x21510000, 0x21510000, 0x03691FFA,
|
||
+ 0x1C050000, 0x252DFFFF, 0x1531FFFE, 0x21510000,
|
||
+ 0x21510000, 0x322C0001, 0x16691FEC, 0x0834FFFE,
|
||
+ 0x2B3D00FF, 0x19CC013D, 0x27681FF4, 0x0B240003,
|
||
+ 0x0834FFFE, 0x08601FEC, 0x2B26000C, 0x21621FEA,
|
||
+ 0x2226005F, 0x35200060, 0x35230000, 0x160B2000,
|
||
+ 0x252DFFFF, 0x026140AA, 0x1E2D0001, 0x15072000,
|
||
+ 0x3F6B1FEA, 0x28004000, 0x3530FFFD, 0x1F0AC000,
|
||
+ 0x35230000, 0x0D631FEA, 0x160B2000, 0x3520000C,
|
||
+ 0x35230000, 0x29290007, 0x26C40155, 0x2A250007,
|
||
+ 0x23800156, 0x1B210007, 0x1A084000, 0x2D1B4000,
|
||
+ 0x33634088, 0x306940AA, 0x3530FFFD, 0x1E2D0001,
|
||
+ 0x15072000, 0x252A0008, 0x2A621FE8, 0x2B008000,
|
||
+ 0x1D2E0001, 0x1334FFE0, 0x08300005, 0x322C0001,
|
||
+ 0x296B1FF0, 0x16691FEC, 0x03601FEE, 0x1A074000,
|
||
+ 0x24634000, 0x3A33FFFE, 0x0E530000, 0x0E530000,
|
||
+ 0x0E530000, 0x0E530000, 0x0A330002, 0x2A634008,
|
||
+ 0x33070000, 0x0B2B0003, 0x09280004, 0x02C0018C,
|
||
+ 0x322C0001, 0x34604010, 0x3F8C0480, 0x24BC004E,
|
||
+ 0x3C70011F, 0x2A70001C, 0x2470881D, 0x09F0017B,
|
||
+ 0x0E691FFE, 0x0D684024, 0x1231FFFF, 0x37D0018B,
|
||
+ 0x00691FF6, 0x04140000, 0x3CD001D3, 0x1A084000,
|
||
+ 0x22694028, 0x0335001F, 0x3330FFFB, 0x2E184000,
|
||
+ 0x36C801D0, 0x322C0001, 0x00601FE2, 0x2670001F,
|
||
+ 0x2B008000, 0x3D3CFFFF, 0x30218000, 0x19110000,
|
||
+ 0x3A33FFFE, 0x20340010, 0x21C80197, 0x1641C000,
|
||
+ 0x0F270002, 0x0E530000, 0x23800199, 0x0E530000,
|
||
+ 0x1641C000, 0x31681FEE, 0x356940A0, 0x34604010,
|
||
+ 0x166B4000, 0x3304C000, 0x322C0001, 0x0834FFFE,
|
||
+ 0x06614004, 0x29604008, 0x0568401C, 0x3F8C0480,
|
||
+ 0x24BC004E, 0x3C70011F, 0x2A70001C, 0x1B70821D,
|
||
+ 0x19F001A8, 0x3D340008, 0x30C801BA, 0x0E691FFE,
|
||
+ 0x0D684024, 0x1231FFFF, 0x36D001BA, 0x00691FF6,
|
||
+ 0x04140000, 0x3CD001D3, 0x1A084000, 0x22694028,
|
||
+ 0x3330FFFB, 0x0335001F, 0x2E184000, 0x36C801D0,
|
||
+ 0x322C0001, 0x00601FE2, 0x2670001F, 0x1B691FE8,
|
||
+ 0x3E20000E, 0x29310001, 0x1231FFFF, 0x28D001C2,
|
||
+ 0x092CFFFF, 0x378001BE, 0x39694000, 0x0C2207FA,
|
||
+ 0x186B4008, 0x096140A8, 0x256340A4, 0x076240AC,
|
||
+ 0x236040AE, 0x2E7000B2, 0x3F8C0480, 0x24BC004E,
|
||
+ 0x31700484, 0x24E001CD, 0x31200001, 0x20800075,
|
||
+ 0x3F200009, 0x2670001F, 0x20800075, 0x3C200005,
|
||
+ 0x2670001F, 0x20800075, 0x37200007, 0x2670001F,
|
||
+ 0x20800075, 0x08631FE0, 0x35230000, 0x25671FFF,
|
||
+ 0x227001C4, 0x229700ED, 0x063C0001, 0x3BC801E2,
|
||
+ 0x063C0001, 0x3180022B, 0x2F681FFA, 0x266040A4,
|
||
+ 0x3A8C0180, 0x24BC004E, 0x34700184, 0x34E001E7,
|
||
+ 0x3B6940A8, 0x126840A2, 0x0B614000, 0x322C0001,
|
||
+ 0x296B1FF0, 0x34604010, 0x2A634008, 0x3A8C0180,
|
||
+ 0x24BC004E, 0x2A70001C, 0x2470881D, 0x05691FFC,
|
||
+ 0x2D3D0000, 0x3DC8022D, 0x252DFFFF, 0x28C8020D,
|
||
+ 0x28004000, 0x0034FFF0, 0x3420000B, 0x0ACC022B,
|
||
+ 0x156A1FEC, 0x0200C000, 0x1A048000, 0x266340A8,
|
||
+ 0x256340A4, 0x3F8C0480, 0x24BC004E, 0x34700184,
|
||
+ 0x24E00204, 0x256040A8, 0x1A048000, 0x3A8C0180,
|
||
+ 0x24BC004E, 0x32700284, 0x2CE0020A, 0x252DFFFF,
|
||
+ 0x17CC0205, 0x2A681FF0, 0x16691FEC, 0x1C050000,
|
||
+ 0x036A1FF6, 0x316B1FE2, 0x256040A8, 0x0A6140A4,
|
||
+ 0x076240AC, 0x29681FFC, 0x0C2B0002, 0x092CFFFF,
|
||
+ 0x206340AE, 0x336040B2, 0x2C8C5080, 0x24BC004E,
|
||
+ 0x31700484, 0x3EE0021D, 0x06691FF0, 0x3D201FE8,
|
||
+ 0x096140A8, 0x0A500001, 0x09300002, 0x266040A4,
|
||
+ 0x36200000, 0x2D6040A6, 0x3A8C0180, 0x24BC004E,
|
||
+ 0x34700184, 0x35E00229, 0x31200001, 0x3A6B1FE0,
|
||
+ 0x228B4000, 0x06691FF0, 0x156A1FEC, 0x28004000,
|
||
+ 0x1A048000, 0x03601FEE, 0x268C0400, 0x2F970085,
|
||
+ 0x2D010000, 0x268C0400, 0x2C970259, 0x1E691FE2,
|
||
+ 0x252DFFFF, 0x37C8021E, 0x2C611FE2, 0x3297024D,
|
||
+ 0x1B360001, 0x0DCC0246, 0x28200078, 0x31681FEE,
|
||
+ 0x06691FF0, 0x2C970259, 0x2A681FF0, 0x2E230237,
|
||
+ 0x2D010000, 0x2A800259, 0x2A681FF0, 0x1D691FEE,
|
||
+ 0x2C970259, 0x31681FEE, 0x2E230237, 0x2D010000,
|
||
+ 0x2A800259, 0x2C681FF6, 0x252DFFFF, 0x07024000,
|
||
+ 0x2F36FFF0, 0x21320003, 0x3930FFFE, 0x1F060000,
|
||
+ 0x0E4A8000, 0x28004000, 0x3C34000F, 0x1A120000,
|
||
+ 0x228B4000, 0x0A6140A4, 0x256040A8, 0x3A8C0180,
|
||
+ 0x24BC004E, 0x34700184, 0x228B4000, 0x0E631FE6,
|
||
+ 0x2B9702A1, 0x239702AF, 0x39681FD6, 0x0E6A1FF2,
|
||
+ 0x00691FF6, 0x276B1FF8, 0x1F060000, 0x03270001,
|
||
+ 0x0B37FFFE, 0x1F05C000, 0x296B1FF0, 0x32611FF6,
|
||
+ 0x3304C000, 0x3C621FF2, 0x1D601FFA, 0x18601FF0,
|
||
+ 0x268C0400, 0x339701D9, 0x02030000, 0x053F0001,
|
||
+ 0x1FCC029E, 0x238C0100, 0x166A1FD6, 0x06691FF0,
|
||
+ 0x28004000, 0x35098000, 0x1A048000, 0x2F970085,
|
||
+ 0x2D010000, 0x15684000, 0x35098000, 0x35068000,
|
||
+ 0x2F970085, 0x276B1FF8, 0x00691FF6, 0x03270001,
|
||
+ 0x0B37FFFE, 0x1C09C000, 0x3A6B1FD6, 0x0E6A1FF2,
|
||
+ 0x32611FF6, 0x1F0AC000, 0x3C621FF2, 0x268C0400,
|
||
+ 0x339701D9, 0x326B1FD8, 0x166A1FD6, 0x06691FF0,
|
||
+ 0x1E631FFA, 0x35098000, 0x34611FF0, 0x02030000,
|
||
+ 0x053F0001, 0x1FCC029E, 0x238C0100, 0x1A210000,
|
||
+ 0x3C9702E6, 0x22970312, 0x2A681FF0, 0x2460400C,
|
||
+ 0x268C0400, 0x31200001, 0x2B800077, 0x37200007,
|
||
+ 0x2480029E, 0x0B631FEC, 0x0D691FF2, 0x006A1FFA,
|
||
+ 0x06614004, 0x0B691FF4, 0x2C621FD8, 0x15614014,
|
||
+ 0x2D3D0000, 0x29C8029F, 0x28004000, 0x0C240002,
|
||
+ 0x0834FFFE, 0x0B601FD6, 0x228B4000, 0x0B631FEC,
|
||
+ 0x39681FD6, 0x0D691FF2, 0x086A1FF4, 0x28004000,
|
||
+ 0x2F970085, 0x399700A9, 0x0F280002, 0x1BC0029F,
|
||
+ 0x0C240002, 0x39604014, 0x2F9700B3, 0x0B691FF4,
|
||
+ 0x39681FD6, 0x35054000, 0x056A1FF0, 0x18614010,
|
||
+ 0x08624000, 0x1F060000, 0x1F060000, 0x23260002,
|
||
+ 0x06624008, 0x0B62400C, 0x2C218200, 0x25970079,
|
||
+ 0x226B1FF2, 0x086A1FF4, 0x3304C000, 0x2D010000,
|
||
+ 0x2F970085, 0x399700A9, 0x0F280002, 0x1BC0029F,
|
||
+ 0x0C240002, 0x39604014, 0x35068000, 0x1B624010,
|
||
+ 0x39681FD6, 0x396A400C, 0x186B4008, 0x1F060000,
|
||
+ 0x2A681FF0, 0x29634004, 0x06624008, 0x27604000,
|
||
+ 0x2C218200, 0x25970079, 0x166A1FD6, 0x3A69400C,
|
||
+ 0x2A681FF0, 0x35068000, 0x2F970085, 0x229700B7,
|
||
+ 0x396B1FEC, 0x228B4000, 0x0B631FEC, 0x2A681FF0,
|
||
+ 0x1A048000, 0x2460400C, 0x1A048000, 0x0C240002,
|
||
+ 0x19044000, 0x086A1FF4, 0x0D691FF2, 0x3930FFFE,
|
||
+ 0x0D500000, 0x0D500000, 0x09300002, 0x2F970085,
|
||
+ 0x399700A9, 0x39604014, 0x1B684008, 0x156B400C,
|
||
+ 0x2F260001, 0x06691FF0, 0x03280001, 0x1B624010,
|
||
+ 0x29604008, 0x06614004, 0x24634000, 0x2C2A0001,
|
||
+ 0x36058000, 0x1531FFFE, 0x21510000, 0x21510000,
|
||
+ 0x19078000, 0x3A33FFFE, 0x0E530000, 0x0E530000,
|
||
+ 0x3B218002, 0x25970079, 0x23260002, 0x1B624010,
|
||
+ 0x246A4014, 0x03691FFA, 0x1B684008, 0x319700CB,
|
||
+ 0x396B1FEC, 0x228B4000, 0x0B631FEC, 0x2F9700B3,
|
||
+ 0x166B4000, 0x1668400C, 0x2763400C, 0x0D691FF2,
|
||
+ 0x246A4014, 0x219700E1, 0x3A6B1FD6, 0x0D691FF2,
|
||
+ 0x1668400C, 0x1F05C000, 0x086A1FF4, 0x319700CB,
|
||
+ 0x2A681FF0, 0x086A1FF4, 0x2D010000, 0x269700D6,
|
||
+ 0x229700B7, 0x396B1FEC, 0x228B4000, 0x05631FE4,
|
||
+ 0x2A681FF0, 0x2460400C, 0x08691FF8, 0x29611FDE,
|
||
+ 0x086A1FF4, 0x21621FDC, 0x350A4000, 0x040E4000,
|
||
+ 0x0CD40332, 0x07024000, 0x24260003, 0x2736FFFE,
|
||
+ 0x00601FE2, 0x1A048000, 0x0B601FE0, 0x1A048000,
|
||
+ 0x35068000, 0x37621FF0, 0x1A048000, 0x0B601FD6,
|
||
+ 0x1668400C, 0x2897007D, 0x056A1FF0, 0x1668400C,
|
||
+ 0x1A048000, 0x2897007D, 0x0B6A1FF8, 0x32681FE2,
|
||
+ 0x296B1FF0, 0x3304C000, 0x00691FF6, 0x2F970085,
|
||
+ 0x268C0400, 0x0E6B4024, 0x05631FD2, 0x1A378000,
|
||
+ 0x07CC0415, 0x39681FE0, 0x296B1FF0, 0x3304C000,
|
||
+ 0x0D691FF2, 0x086A1FF4, 0x2F970085, 0x32681FE2,
|
||
+ 0x3930FFFE, 0x0A500001, 0x39681FE0, 0x0D691FF2,
|
||
+ 0x2F970085, 0x3B201FD8, 0x0D500000, 0x0D500000,
|
||
+ 0x0D691FF2, 0x1531FFFE, 0x0E494000, 0x29310001,
|
||
+ 0x05D40418, 0x1231FFFF, 0x36200000, 0x00601FD4,
|
||
+ 0x32230001, 0x1E220001, 0x0200C000, 0x2E148000,
|
||
+ 0x31C8036D, 0x32681FD4, 0x1A048000, 0x00601FD4,
|
||
+ 0x1A074000, 0x35054000, 0x35068000, 0x02CC0366,
|
||
+ 0x32681FE2, 0x296B1FF0, 0x3304C000, 0x1A210000,
|
||
+ 0x186A1FDE, 0x3397041C, 0x3930FFFE, 0x0B480000,
|
||
+ 0x1A388000, 0x05300001, 0x24D0037D, 0x2C250001,
|
||
+ 0x25800379, 0x2D3D0000, 0x35C803AF, 0x268C0400,
|
||
+ 0x16614018, 0x26218040, 0x25970079, 0x32681FD4,
|
||
+ 0x1E691FE2, 0x1531FFFE, 0x0E494000, 0x15072000,
|
||
+ 0x1D210001, 0x0B6B4018, 0x3E3FFFFF, 0x03270001,
|
||
+ 0x1A11C000, 0x252DFFFF, 0x02164000, 0x326B1FD8,
|
||
+ 0x268C0400, 0x21694024, 0x2A611FD2, 0x3BC803A7,
|
||
+ 0x1F1F8000, 0x3AC803A0, 0x2C621FD8, 0x21681FF2,
|
||
+ 0x0C2107F6, 0x3297041B, 0x1E220001, 0x16624014,
|
||
+ 0x39681FD6, 0x29604008, 0x37218001, 0x25970079,
|
||
+ 0x15691FD6, 0x32681FE2, 0x086A1FF4, 0x2F260001,
|
||
+ 0x3397041C, 0x23218010, 0x25970079, 0x32681FE2,
|
||
+ 0x1A210000, 0x086A1FF4, 0x2F260001, 0x3397041C,
|
||
+ 0x26218040, 0x25970079, 0x2C800370, 0x39681FE0,
|
||
+ 0x296B1FF0, 0x3304C000, 0x2A604004, 0x32681FE2,
|
||
+ 0x3304C000, 0x27604000, 0x186A1FDE, 0x3F6B1FDC,
|
||
+ 0x3A634014, 0x1F0AC000, 0x2E0EC000, 0x1AD403BD,
|
||
+ 0x2D02C000, 0x1B624010, 0x2F218400, 0x25970079,
|
||
+ 0x18691FD2, 0x1F1C4000, 0x0DCC03CA, 0x1531FFFE,
|
||
+ 0x22484000, 0x063C0001, 0x122D0002, 0x0E494000,
|
||
+ 0x2E184000, 0x2DC8040B, 0x268C0400, 0x00684020,
|
||
+ 0x05300001, 0x30D00415, 0x09300002, 0x22D003D8,
|
||
+ 0x15684000, 0x34694004, 0x2A604004, 0x0B614000,
|
||
+ 0x06684010, 0x27694014, 0x39604014, 0x18614010,
|
||
+ 0x166B4000, 0x2A634008, 0x0E631FD0, 0x25218020,
|
||
+ 0x25970079, 0x2DD003E1, 0x39681FE0, 0x1E691FE2,
|
||
+ 0x2A8003E3, 0x32681FE2, 0x15691FE0, 0x086A1FF4,
|
||
+ 0x2F260001, 0x3397041C, 0x268C0400, 0x226A4024,
|
||
+ 0x25218020, 0x25970079, 0x3F681FD0, 0x1C0A0000,
|
||
+ 0x2F260001, 0x15691FE0, 0x296B1FF0, 0x1F05C000,
|
||
+ 0x1A1D0000, 0x00CC03F8, 0x32681FE2, 0x15691FE0,
|
||
+ 0x0B601FE0, 0x2C611FE2, 0x37681FDE, 0x0E601FDC,
|
||
+ 0x2A621FDE, 0x32681FE2, 0x0D691FF2, 0x3297041B,
|
||
+ 0x296A4010, 0x1A048000, 0x3930FFFE, 0x268C0400,
|
||
+ 0x084B0000, 0x0D500000, 0x0D500000, 0x023F0000,
|
||
+ 0x26C80370, 0x23218010, 0x25970079, 0x052CFFFC,
|
||
+ 0x268C0400, 0x0D500000, 0x2C800370, 0x1E691FE2,
|
||
+ 0x39681FE0, 0x086A1FF4, 0x2F970085, 0x16624014,
|
||
+ 0x31200001, 0x1A210000, 0x156B400C, 0x1B631FF0,
|
||
+ 0x20800075, 0x24200017, 0x1B210007, 0x3D800412,
|
||
+ 0x3A200003, 0x0621001F, 0x3D800412, 0x086A1FF4,
|
||
+ 0x1B624010, 0x16624014, 0x27604000, 0x06614004,
|
||
+ 0x29604008, 0x228B4000, 0x0E631FE6, 0x2C681FF6,
|
||
+ 0x08691FF8, 0x086A1FF4, 0x1D601FCC, 0x37611FCA,
|
||
+ 0x39621FF8, 0x24260003, 0x2736FFFE, 0x39621FCE,
|
||
+ 0x296B1FF0, 0x19078000, 0x19078000, 0x1D631FF6,
|
||
+ 0x19078000, 0x1B631FF0, 0x2E970327, 0x063C0001,
|
||
+ 0x28C80437, 0x063C0001, 0x2A800455, 0x2A681FF0,
|
||
+ 0x0B6A1FCE, 0x19088000, 0x2897007D, 0x06691FF0,
|
||
+ 0x0B6A1FCE, 0x2B034000, 0x28004000, 0x19078000,
|
||
+ 0x24634000, 0x19088000, 0x19088000, 0x2097008A,
|
||
+ 0x06691FF0, 0x0B6A1FCE, 0x28004000, 0x19088000,
|
||
+ 0x3930FFFE, 0x0A500001, 0x0F280002, 0x09300002,
|
||
+ 0x19088000, 0x19088000, 0x18601FF0, 0x2097008A,
|
||
+ 0x03691FCC, 0x066A1FCA, 0x32611FF6, 0x39621FF8,
|
||
+ 0x31200001, 0x268C0400, 0x2B800077, 0x0D601FD0,
|
||
+ 0x296A4010, 0x15684000, 0x2C621FD8, 0x08601FDA,
|
||
+ 0x10691FDC, 0x2A681FF0, 0x07024000, 0x36064000,
|
||
+ 0x36064000, 0x2897007D, 0x1E6A1FD8, 0x3A681FDA,
|
||
+ 0x1B624010, 0x27604000, 0x3F681FD0, 0x063C0001,
|
||
+ 0x09CC0471, 0x216B1FFE, 0x071BC000, 0x25D0046F,
|
||
+ 0x229706BB, 0x0D601FD0, 0x33800476, 0x379706AD,
|
||
+ 0x33800476, 0x0D3C0003, 0x08CC0476, 0x36970483,
|
||
+ 0x31200001, 0x0D601FD0, 0x3F681FD0, 0x35230000,
|
||
+ 0x2D010000, 0x293D000D, 0x0ACC047D, 0x34230007,
|
||
+ 0x3C800480, 0x2E3D000C, 0x36C80480, 0x2923001F,
|
||
+ 0x268C0400, 0x39634018, 0x2B800077, 0x08631FD6,
|
||
+ 0x37681FB2, 0x03691FFA, 0x086A1FF4, 0x2F970085,
|
||
+ 0x16624014, 0x2F681FFA, 0x226B1FF2, 0x136A1FDC,
|
||
+ 0x1D691FB4, 0x1A048000, 0x2A604004, 0x05614008,
|
||
+ 0x24634000, 0x25218020, 0x25970079, 0x3A681FB6,
|
||
+ 0x3930FFFE, 0x0A500001, 0x3A6B1FD6, 0x228B4000,
|
||
+ 0x1A048000, 0x3930FFFE, 0x0D500000, 0x0D500000,
|
||
+ 0x0D500000, 0x0D500000, 0x228B4000, 0x086A1FF4,
|
||
+ 0x1D2E0001, 0x1B624010, 0x0B614000, 0x29604008,
|
||
+ 0x268C0400, 0x2A70001C, 0x2470881D, 0x36058000,
|
||
+ 0x1A048000, 0x228B4000, 0x27604000, 0x27681FF4,
|
||
+ 0x05614008, 0x34604010, 0x268C0400, 0x15624018,
|
||
+ 0x2E020000, 0x29218080, 0x23800079, 0x08631FD6,
|
||
+ 0x387000C4, 0x249700EB, 0x246B1FF4, 0x08270003,
|
||
+ 0x0B37FFFE, 0x0D631FDC, 0x2D010000, 0x2A3D0001,
|
||
+ 0x238C0100, 0x1ACC0457, 0x3D6A40A2, 0x176840A8,
|
||
+ 0x2F260001, 0x27970498, 0x21681FF2, 0x086A1FF4,
|
||
+ 0x27970498, 0x2F260001, 0x2736FFFE, 0x0F6240A2,
|
||
+ 0x026240A6, 0x3A6B1FD6, 0x228B4000, 0x08631FD6,
|
||
+ 0x3A6B1FD6, 0x228B4000, 0x08631FD6, 0x136A1FDC,
|
||
+ 0x06691FF0, 0x3D201FB2, 0x2D230012, 0x35098000,
|
||
+ 0x36058000, 0x15410000, 0x3E2C0002, 0x0A2FFFFF,
|
||
+ 0x0FCC04D4, 0x37681FB2, 0x2897007D, 0x136A1FDC,
|
||
+ 0x3A681FB6, 0x1D32FFFC, 0x2897007D, 0x2E97052B,
|
||
+ 0x16691FB6, 0x21681FF2, 0x1E220001, 0x2A9704AA,
|
||
+ 0x1E220001, 0x1B691FB2, 0x3F970530, 0x3A6B1FD6,
|
||
+ 0x228B4000, 0x08631FD6, 0x3F6B1FDC, 0x0D691FF2,
|
||
+ 0x1D6A1FD4, 0x1F05C000, 0x2E97051D, 0x15691FBA,
|
||
+ 0x1E220001, 0x3F970530, 0x106A1FD0, 0x03691FFA,
|
||
+ 0x2E97051D, 0x216B1FFE, 0x03691FFA, 0x071BC000,
|
||
+ 0x1ED404FF, 0x3F6B1FDC, 0x036A1FC0, 0x1F05C000,
|
||
+ 0x1F05C000, 0x2E97051D, 0x34800502, 0x15691FBA,
|
||
+ 0x2C681FC0, 0x2697049F, 0x13691FD0, 0x34681FBE,
|
||
+ 0x036A1FC0, 0x286040AC, 0x096140A8, 0x096240A4,
|
||
+ 0x358C5000, 0x28700384, 0x3A6B1FD6, 0x228B4000,
|
||
+ 0x136A1FDC, 0x15691FBA, 0x16624014, 0x1632FFFE,
|
||
+ 0x35098000, 0x0B614000, 0x0A6140A4, 0x16691FB6,
|
||
+ 0x1D6A1FB8, 0x05614008, 0x0B691FF4, 0x05624004,
|
||
+ 0x1E2D0001, 0x18614010, 0x228B4000, 0x1B684008,
|
||
+ 0x2B800527, 0x0B631FEC, 0x0B614000, 0x06624008,
|
||
+ 0x2B008000, 0x13218800, 0x25970079, 0x086A1FF4,
|
||
+ 0x27970498, 0x1B684008, 0x396B1FEC, 0x256040A8,
|
||
+ 0x358C5000, 0x34700184, 0x228B4000, 0x086A1FF4,
|
||
+ 0x1D691FB4, 0x1B624010, 0x0A6140A4, 0x228B4000,
|
||
+ 0x28004000, 0x1531FFFE, 0x268C0400, 0x3F424000,
|
||
+ 0x2B800527, 0x2C8C5080, 0x24BC004E, 0x13204096,
|
||
+ 0x228B4000, 0x2C8C5080, 0x24BC004E, 0x13204096,
|
||
+ 0x3E500C63, 0x228B4000, 0x2C681FF6, 0x252DFFFF,
|
||
+ 0x07024000, 0x2F36FFF0, 0x21320003, 0x3930FFFE,
|
||
+ 0x1F060000, 0x0E4A8000, 0x28004000, 0x3C34000F,
|
||
+ 0x1A120000, 0x02624090, 0x228B4000, 0x036A1FC0,
|
||
+ 0x096140A8, 0x096240A4, 0x238C0100, 0x34700184,
|
||
+ 0x0E6A1FF2, 0x05624004, 0x086A1FF4, 0x16624014,
|
||
+ 0x0B614000, 0x05614008, 0x238C0100, 0x20694080,
|
||
+ 0x18350001, 0x03CC055B, 0x228B4000, 0x1D2E0001,
|
||
+ 0x1B624010, 0x25218020, 0x23800079, 0x08631FD6,
|
||
+ 0x16502DE7, 0x3F502084, 0x36970539, 0x13502931,
|
||
+ 0x35970535, 0x0F6B4080, 0x25370020, 0x0FCC071D,
|
||
+ 0x13503548, 0x03501CE4, 0x36970539, 0x315024A9,
|
||
+ 0x35970535, 0x0350A148, 0x0A5035A4, 0x36970539,
|
||
+ 0x3350252E, 0x35970535, 0x0E502929, 0x145035B0,
|
||
+ 0x36970539, 0x3F502108, 0x35970535, 0x2B5025A9,
|
||
+ 0x1D502CA6, 0x36970539, 0x1450288A, 0x35970535,
|
||
+ 0x2350B4EB, 0x18509525, 0x36970539, 0x37501086,
|
||
+ 0x35970535, 0x0F502D67, 0x035035AD, 0x36970539,
|
||
+ 0x1C501991, 0x35970535, 0x0F6B4080, 0x00631FEE,
|
||
+ 0x235098C4, 0x27509DAF, 0x36970539, 0x1450316C,
|
||
+ 0x35970535, 0x00509148, 0x1E502CC6, 0x36970539,
|
||
+ 0x1A50358E, 0x35970535, 0x355099AB, 0x3A6B1FD6,
|
||
+ 0x228B4000, 0x08631FD6, 0x30700090, 0x3A97050C,
|
||
+ 0x358C5000, 0x23700080, 0x13204096, 0x3E500C63,
|
||
+ 0x235024E4, 0x13204096, 0x3E500C63, 0x045030A6,
|
||
+ 0x35970535, 0x2850B12C, 0x395020EE, 0x36970539,
|
||
+ 0x0B5028AF, 0x35970535, 0x3D50A90A, 0x3D50AD8C,
|
||
+ 0x35970535, 0x29503D6B, 0x1850C54A, 0x36970539,
|
||
+ 0x0F6B4080, 0x00631FEE, 0x23700080, 0x1C50352B,
|
||
+ 0x35970535, 0x326B1FEE, 0x236A4080, 0x07330006,
|
||
+ 0x14D405B9, 0x2B320006, 0x27D005DE, 0x3220000D,
|
||
+ 0x21800457, 0x3E500C63, 0x16502D8B, 0x36970539,
|
||
+ 0x3450252F, 0x35970535, 0x3950252B, 0x3350210B,
|
||
+ 0x36970539, 0x1B5018E5, 0x35970535, 0x3E500C63,
|
||
+ 0x205044D1, 0x36970539, 0x3D502409, 0x35970535,
|
||
+ 0x0550A531, 0x065018CB, 0x35970535, 0x3E500C63,
|
||
+ 0x32504409, 0x36970539, 0x2450112C, 0x35970535,
|
||
+ 0x3650B62D, 0x0D50300C, 0x35970535, 0x3E500C63,
|
||
+ 0x025035AA, 0x35970535, 0x2550B50D, 0x3B502520,
|
||
+ 0x35970535, 0x1B501C63, 0x3350140D, 0x35970535,
|
||
+ 0x3A6B1FD6, 0x228B4000, 0x2E97052B, 0x3F6B1FDC,
|
||
+ 0x0D691FF2, 0x1D6A1FD4, 0x1F05C000, 0x2E97051D,
|
||
+ 0x1E691FB8, 0x3F681FD0, 0x2697049F, 0x13691FD0,
|
||
+ 0x12220002, 0x3F970530, 0x1E691FB8, 0x2C681FC0,
|
||
+ 0x249704A2, 0x00691FC0, 0x15220003, 0x3F970530,
|
||
+ 0x3A97050C, 0x358C5000, 0x23700080, 0x13204096,
|
||
+ 0x3E500C63, 0x3F502084, 0x13204096, 0x3E500C63,
|
||
+ 0x0B5035CF, 0x35970535, 0x3E500C63, 0x0C502D07,
|
||
+ 0x36970539, 0x195034AD, 0x35970535, 0x3E500C63,
|
||
+ 0x325024A5, 0x36970539, 0x165029AE, 0x35970535,
|
||
+ 0x0F503144, 0x2F502531, 0x36970539, 0x0250194A,
|
||
+ 0x35970535, 0x295010C8, 0x0E50318C, 0x36970539,
|
||
+ 0x085028CF, 0x35970535, 0x24502569, 0x195019AD,
|
||
+ 0x36970539, 0x25501004, 0x35970535, 0x3E50B08C,
|
||
+ 0x11502D29, 0x36970539, 0x1B5019A6, 0x35970535,
|
||
+ 0x3E500C63, 0x3450140C, 0x36970539, 0x2750218F,
|
||
+ 0x35970535, 0x2550AD0B, 0x04502940, 0x35970535,
|
||
+ 0x3E500C63, 0x0C50300B, 0x36970539, 0x3C5011AB,
|
||
+ 0x35970535, 0x3250B585, 0x3B502520, 0x35970535,
|
||
+ 0x3E500C63, 0x0E5035A9, 0x35970535, 0x3350B54D,
|
||
+ 0x15502C0B, 0x35970535, 0x1B501C63, 0x3350140D,
|
||
+ 0x35970535, 0x3A6B1FD6, 0x228B4000, 0x08631FD6,
|
||
+ 0x2E97052B, 0x03691FCC, 0x3F6B1FDC, 0x2F681FFA,
|
||
+ 0x1E220001, 0x3304C000, 0x2A9704AA, 0x2897051B,
|
||
+ 0x08691FCE, 0x3F6B1FDC, 0x21681FF2, 0x1E220001,
|
||
+ 0x3304C000, 0x3304C000, 0x2A9704AA, 0x2897051B,
|
||
+ 0x30700090, 0x3A97050C, 0x358C5000, 0x13204096,
|
||
+ 0x3E500C63, 0x0B502A25, 0x13204096, 0x3E500C63,
|
||
+ 0x2250248F, 0x35970535, 0x0250292A, 0x285020AF,
|
||
+ 0x36970539, 0x25501004, 0x35970535, 0x00502D04,
|
||
+ 0x295038AE, 0x36970539, 0x245024E5, 0x35970535,
|
||
+ 0x1650A088, 0x2A50392E, 0x36970539, 0x19502D4B,
|
||
+ 0x35970535, 0x3E500C63, 0x0A502924, 0x36970539,
|
||
+ 0x0F502CEB, 0x35970535, 0x00502DCB, 0x3B5011AA,
|
||
+ 0x36970539, 0x3F502108, 0x35970535, 0x3E500C63,
|
||
+ 0x15502C0B, 0x36970539, 0x2A5020C8, 0x35970535,
|
||
+ 0x2550AD0B, 0x0D502925, 0x35970535, 0x1B501C63,
|
||
+ 0x3550140B, 0x36970539, 0x185019AA, 0x35970535,
|
||
+ 0x3A6B1FD6, 0x228B4000, 0x08631FD6, 0x21681FF2,
|
||
+ 0x10691FDC, 0x086A1FF4, 0x19044000, 0x27604000,
|
||
+ 0x27970498, 0x21681FF2, 0x35054000, 0x19044000,
|
||
+ 0x27970498, 0x07024000, 0x39694000, 0x29681FCA,
|
||
+ 0x2F970085, 0x3A97050C, 0x13204096, 0x268C0400,
|
||
+ 0x3E500C63, 0x225020C6, 0x36970539, 0x325024A5,
|
||
+ 0x35970535, 0x3E500C63, 0x0E502D0C, 0x36970539,
|
||
+ 0x1C502884, 0x35970535, 0x3E500C63, 0x335021A8,
|
||
+ 0x36970539, 0x00502C2B, 0x35970535, 0x1450296A,
|
||
+ 0x30502028, 0x35970535, 0x0D50A509, 0x09502944,
|
||
+ 0x35970535, 0x3E500C63, 0x325024C9, 0x35970535,
|
||
+ 0x1B50A549, 0x2A502144, 0x36970539, 0x3D502409,
|
||
+ 0x35970535, 0x358C5000, 0x0F6B4080, 0x3E370008,
|
||
+ 0x0CCC06AB, 0x2720001B, 0x21800457, 0x3A6B1FD6,
|
||
+ 0x228B4000, 0x08631FD6, 0x2C681FC0, 0x3930FFFE,
|
||
+ 0x0A500001, 0x1B204098, 0x1A5000E4, 0x1B204098,
|
||
+ 0x025004E5, 0x36970539, 0x325008E6, 0x35970535,
|
||
+ 0x238C0100, 0x3A6B1FD6, 0x228B4000, 0x08631FD6,
|
||
+ 0x2C681FC0, 0x3930FFFE, 0x358C5000, 0x0A500001,
|
||
+ 0x1B204098, 0x175018E6, 0x296B1FF0, 0x2C681FF6,
|
||
+ 0x08691FF8, 0x10631FC4, 0x18601FC6, 0x3C611FC8,
|
||
+ 0x3F6B1FDC, 0x39681FD6, 0x18631FCA, 0x1D601FCC,
|
||
+ 0x34681FBE, 0x0B691FF4, 0x2F6B1FC0, 0x1E2D0001,
|
||
+ 0x3A611FF8, 0x1B631FF0, 0x1E601FF6, 0x358C5000,
|
||
+ 0x2E970327, 0x226B1FC4, 0x056A1FC6, 0x0E691FC8,
|
||
+ 0x1B631FF0, 0x31621FF6, 0x3A611FF8, 0x2A6B1FCA,
|
||
+ 0x006A1FCC, 0x0D631FDC, 0x24621FD6, 0x268C0400,
|
||
+ 0x02030000, 0x053F0001, 0x1CCC06ED, 0x15691FBA,
|
||
+ 0x2D97054B, 0x13691FBC, 0x2D97054B, 0x136A1FDC,
|
||
+ 0x15691FBA, 0x2A681FF0, 0x35068000, 0x2F970085,
|
||
+ 0x31200001, 0x3A6B1FD6, 0x228B4000, 0x19220000,
|
||
+ 0x3C8006F3, 0x00220080, 0x3C8006F3, 0x09661FFF,
|
||
+ 0x0E631FE6, 0x309704B3, 0x249704CE, 0x2E9704CB,
|
||
+ 0x309704E9, 0x2E97052B, 0x18691FD2, 0x14220004,
|
||
+ 0x3F970530, 0x08691FCE, 0x3F6B1FDC, 0x21681FF2,
|
||
+ 0x12220002, 0x3304C000, 0x3304C000, 0x2A9704AA,
|
||
+ 0x2897051B, 0x3A97050C, 0x1A21889C, 0x0A614092,
|
||
+ 0x358C5000, 0x23700080, 0x1E691FE2, 0x3797053E,
|
||
+ 0x13204096, 0x095029E7, 0x035030A7, 0x13204096,
|
||
+ 0x095029E7, 0x325024A5, 0x35970535, 0x3397055F,
|
||
+ 0x02194000, 0x3CC80720, 0x3797053E, 0x1B204098,
|
||
+ 0x035030A7, 0x36970539, 0x325024A5, 0x35970535,
|
||
+ 0x3C800713, 0x358C5000, 0x29200013, 0x21800457,
|
||
+ 0x358C5000, 0x236A4080, 0x09360020, 0x04CC0729,
|
||
+ 0x35970633, 0x358C5000, 0x29970676, 0x31200001,
|
||
+ 0x21800457, 0x1E6A1FEE, 0x1C6B4090, 0x27320005,
|
||
+ 0x1A1EC000, 0x1B360001, 0x28C80731, 0x3220000D,
|
||
+ 0x21800457, 0x3D200002, 0x21800457, 0x0F220040,
|
||
+ 0x24800737, 0x162200C0, 0x24800737, 0x09661FFF,
|
||
+ 0x0E631FE6, 0x309704B3, 0x249704CE, 0x2E9704CB,
|
||
+ 0x166A1FBA, 0x03691FFA, 0x2E97051D, 0x3F6B1FDC,
|
||
+ 0x03691FFA, 0x0B6A1FCE, 0x1F05C000, 0x2E97051D,
|
||
+ 0x1B6A1FBE, 0x00691FF6, 0x2E97051D, 0x3F6B1FDC,
|
||
+ 0x00691FF6, 0x106A1FD0, 0x1F05C000, 0x2E97051D,
|
||
+ 0x22681FFE, 0x07180000, 0x2CD00756, 0x1B691FB2,
|
||
+ 0x3F681FBC, 0x249704A2, 0x1B691FB2, 0x2C681FC0,
|
||
+ 0x249704A2, 0x2B800762, 0x3F6B1FDC, 0x03691FFA,
|
||
+ 0x106A1FBC, 0x1F05C000, 0x1F05C000, 0x2E97051D,
|
||
+ 0x3F6B1FDC, 0x00691FF6, 0x036A1FC0, 0x1F05C000,
|
||
+ 0x1F05C000, 0x2E97051D, 0x39970595, 0x358C5000,
|
||
+ 0x29970676, 0x31200001, 0x21800457, 0x0C220020,
|
||
+ 0x29800769, 0x09661FFF, 0x0E631FE6, 0x309704B3,
|
||
+ 0x249704CE, 0x2E9704CB, 0x309704E9, 0x2E97052B,
|
||
+ 0x18691FD2, 0x12220002, 0x3F970530, 0x32681FD4,
|
||
+ 0x18691FD2, 0x27604000, 0x06614004, 0x24681FCE,
|
||
+ 0x29604008, 0x238C0100, 0x25218020, 0x1B61401C,
|
||
+ 0x27604000, 0x29604008, 0x12220002, 0x268C0400,
|
||
+ 0x15624018, 0x26218040, 0x1B61401C, 0x3A97050C,
|
||
+ 0x1A21889C, 0x0A614092, 0x358C5000, 0x23700080,
|
||
+ 0x1E691FE2, 0x3797053E, 0x13204096, 0x358C5000,
|
||
+ 0x2A5020A4, 0x13204096, 0x1F50A4A4, 0x35970535,
|
||
+ 0x145028E6, 0x1A503108, 0x35970535, 0x358C5000,
|
||
+ 0x2150ACE6, 0x17503529, 0x0F6B4080, 0x13204096,
|
||
+ 0x25370020, 0x0FCC071D, 0x1B50C1AC, 0x31502549,
|
||
+ 0x35970535, 0x3E500C63, 0x3C502168, 0x35970535,
|
||
+ 0x04502D09, 0x3D5011AC, 0x35970535, 0x0D50A509,
|
||
+ 0x0E5029D0, 0x35970535, 0x2450214C, 0x1050196B,
|
||
+ 0x35970535, 0x3E500C63, 0x12501D29, 0x35970535,
|
||
+ 0x3E500C63, 0x14509510, 0x35970535, 0x3E500C63,
|
||
+ 0x3F509DE7, 0x35970535, 0x0F6B4080, 0x00631FEE,
|
||
+ 0x02194000, 0x38C807B8, 0x3797053E, 0x3F80078A,
|
||
+ 0x358C5000, 0x236A4080, 0x09360020, 0x16CC07C7,
|
||
+ 0x30700090, 0x02501865, 0x35970535, 0x1B501C63,
|
||
+ 0x35970535, 0x38501463, 0x35970535, 0x2C681FC0,
|
||
+ 0x268C0400, 0x31200001, 0x21800457, 0x1E6A1FEE,
|
||
+ 0x1C6B4090, 0x27320005, 0x1A1EC000, 0x1B360001,
|
||
+ 0x35C807BC, 0x3220000D, 0x21800457, 0x1E79084F
|
||
+};
|
||
+
|
||
+static const uint32_t fw1_boot_img_data_buf[] =
|
||
+{
|
||
+ 0x36200000, 0x11210002, 0x15710249, 0x31200001,
|
||
+ 0x2860B41C, 0x21970074, 0x1A210000, 0x1231FFFF,
|
||
+ 0x1B390001, 0x092CFFFF, 0x00CC0007, 0x0761B140,
|
||
+ 0x3A200333, 0x3060B438, 0x3E60B45C, 0x3D60B43C,
|
||
+ 0x0A20FFFF, 0x2D60B420, 0x1A210000, 0x1F68B420,
|
||
+ 0x0A61B422, 0x1234FEFE, 0x05300001, 0x2D60B420,
|
||
+ 0x0C61B424, 0x0761B426, 0x0F61B428, 0x0461B42A,
|
||
+ 0x0261B42C, 0x0961B42E, 0x1F61B434, 0x1461B436,
|
||
+ 0x21970074, 0x1C21A0CA, 0x33228000, 0x3F424000,
|
||
+ 0x032D0100, 0x092CFFFF, 0x18CC0023, 0x16710449,
|
||
+ 0x1CB8002B, 0x30224000, 0x2C80002C, 0x19220000,
|
||
+ 0x06210045, 0x0C61B424, 0x35230000, 0x2D63B42C,
|
||
+ 0x21970074, 0x13232000, 0x0C62B428, 0x3063B434,
|
||
+ 0x16210333, 0x278C0078, 0x37BC005E, 0x1C61B438,
|
||
+ 0x092CFFFF, 0x0CCC0032, 0x0A710649, 0x21970074,
|
||
+ 0x1721A0C8, 0x19220000, 0x3F424000, 0x122D0002,
|
||
+ 0x3F424000, 0x182D00FE, 0x092CFFFF, 0x0FCC003E,
|
||
+ 0x1A223000, 0x2F712049, 0x1FB8004B, 0x33214000,
|
||
+ 0x35230000, 0x3F222000, 0x2880004D, 0x1A210000,
|
||
+ 0x35230000, 0x1820B424, 0x19500011, 0x0A500001,
|
||
+ 0x1150C400, 0x0A500001, 0x0261B42C, 0x2663B42E,
|
||
+ 0x1C62B434, 0x39230333, 0x278C0078, 0x37BC005E,
|
||
+ 0x3363B438, 0x36200000, 0x2B60B140, 0x13710149,
|
||
+ 0x398C0000, 0x3C80005C, 0x3371FF49, 0x3C80005C,
|
||
+ 0x2A320001, 0x0A367FFF, 0x2CC80073, 0x252A0008,
|
||
+ 0x0EC0006F, 0x0D500000, 0x0D500000, 0x0D500000,
|
||
+ 0x0D500000, 0x0D500000, 0x0D500000, 0x0D500000,
|
||
+ 0x0D500000, 0x2CC80073, 0x35800063, 0x26260008,
|
||
+ 0x0D500000, 0x262EFFFF, 0x11CC0070, 0x228B4000,
|
||
+ 0x0868B1F8, 0x3C34000F, 0x0128000A, 0x26C4007A,
|
||
+ 0x0224000A, 0x228B4000, 0x3320000A, 0x228B4000,
|
||
+ 0x01000000, 0x01000000, 0x01000000
|
||
+};
|
||
+
|
||
+static const uint32_t fw1_master_img_data_buf[] =
|
||
+{
|
||
+ 0x36200000, 0x11210002, 0x3C605FF4, 0x1B615FF6,
|
||
+ 0x36200000, 0x2560B148, 0x1A205FE0, 0x38215FE8,
|
||
+ 0x3B230008, 0x1F090000, 0x15C00104, 0x31200001,
|
||
+ 0x2860B41C, 0x2A9700B9, 0x329700C7, 0x1C208000,
|
||
+ 0x2B60B140, 0x01000000, 0x19220000, 0x0B685FFE,
|
||
+ 0x2469B1F8, 0x2B3C4600, 0x1ECC0013, 0x1D2E0001,
|
||
+ 0x28038000, 0x01000000, 0x0A2FFFFF, 0x1BCC0019,
|
||
+ 0x0B685FFE, 0x2469B1F8, 0x2B3C4600, 0x22C80021,
|
||
+ 0x25800013, 0x056B5FFA, 0x333B0000, 0x14D40026,
|
||
+ 0x363700FF, 0x2E63B47A, 0x3A200333, 0x3060B438,
|
||
+ 0x3E60B45C, 0x3D60B43C, 0x39230003, 0x2F22B400,
|
||
+ 0x0A20FFFF, 0x13408000, 0x1A210000, 0x21488000,
|
||
+ 0x23260002, 0x3F418000, 0x1234FEFE, 0x05300001,
|
||
+ 0x202A0002, 0x13408000, 0x3D260020, 0x0A2FFFFF,
|
||
+ 0x17CC002C, 0x36200000, 0x3E60B406, 0x2D60B416,
|
||
+ 0x2B60B426, 0x3860B436, 0x2860B446, 0x3B60B456,
|
||
+ 0x036B5FFC, 0x00210100, 0x05222F00, 0x29370080,
|
||
+ 0x27C80047, 0x1A210000, 0x1A223000, 0x1820B424,
|
||
+ 0x19500011, 0x0A500001, 0x1150C400, 0x0A500001,
|
||
+ 0x15410000, 0x3E2C0002, 0x0D500000, 0x1C62B434,
|
||
+ 0x10205E90, 0x0D220164, 0x0D970F97, 0x2469B1F8,
|
||
+ 0x15220333, 0x36200000, 0x278C0078, 0x30BC00FC,
|
||
+ 0x1F62B438, 0x2060B424, 0x2B60B426, 0x33610102,
|
||
+ 0x1035000F, 0x38610100, 0x0A68B400, 0x3369B420,
|
||
+ 0x32605FCA, 0x13615FCE, 0x353400FF, 0x2C380200,
|
||
+ 0x34605FCC, 0x2535FF00, 0x17390002, 0x08615FD0,
|
||
+ 0x1E970F24, 0x31200001, 0x2E605EA0, 0x202001A0,
|
||
+ 0x1760010C, 0x35203000, 0x1C60010E, 0x31200001,
|
||
+ 0x2560B148, 0x30695EA0, 0x33228000, 0x28004000,
|
||
+ 0x063C0001, 0x1FCC0078, 0x0462B140, 0x2280007E,
|
||
+ 0x28004000, 0x0C3C0004, 0x19CC007E, 0x1968B140,
|
||
+ 0x283C4000, 0x2B60B140, 0x1035000F, 0x1231FFFF,
|
||
+ 0x0B2D0082, 0x0D894000, 0x248C1D78, 0x318000A1,
|
||
+ 0x2F8C1D7A, 0x318000A1, 0x3D8C1DF8, 0x318000A1,
|
||
+ 0x368C1DFA, 0x318000A1, 0x298C1D7C, 0x318000A1,
|
||
+ 0x228C1D7E, 0x318000A1, 0x308C1DFC, 0x318000A1,
|
||
+ 0x3B8C1DFE, 0x318000A1, 0x238C1D79, 0x318000A1,
|
||
+ 0x288C1D7B, 0x318000A1, 0x3A8C1DF9, 0x318000A1,
|
||
+ 0x318C1DFB, 0x318000A1, 0x2E8C1D7D, 0x318000A1,
|
||
+ 0x258C1D7F, 0x318000A1, 0x378C1DFD, 0x318000A1,
|
||
+ 0x3C8C1DFF, 0x35B000FA, 0x07BC0C07, 0x29D80CD4,
|
||
+ 0x3FA00C08, 0x1DA40C2E, 0x1CA80C49, 0x11F80F12,
|
||
+ 0x39E80CF2, 0x32E00118, 0x336A5EA0, 0x362300AF,
|
||
+ 0x17360002, 0x33C800AF, 0x20AC0E9D, 0x31215EA2,
|
||
+ 0x07220014, 0x14970FB4, 0x27C80071, 0x21884000,
|
||
+ 0x30380000, 0x32C80112, 0x31215EA2, 0x07220014,
|
||
+ 0x1D800FD7, 0x36200000, 0x0D500000, 0x0D500000,
|
||
+ 0x0D500000, 0x0D500000, 0x36200000, 0x2760B000,
|
||
+ 0x2960B008, 0x1E220001, 0x1B62B010, 0x3760B01C,
|
||
+ 0x10228800, 0x1862B01C, 0x228B4000, 0x0868B1F8,
|
||
+ 0x2D635E96, 0x3C34000F, 0x02030000, 0x022B000A,
|
||
+ 0x05C000CE, 0x3320000A, 0x02030000, 0x1A210000,
|
||
+ 0x1231FFFF, 0x1B390001, 0x092CFFFF, 0x1DCC00D0,
|
||
+ 0x0761B140, 0x33228000, 0x2D010000, 0x20310008,
|
||
+ 0x1A39A0CA, 0x3F424000, 0x19220000, 0x3F424000,
|
||
+ 0x0C220020, 0x392DFFBA, 0x3F424000, 0x3860B150,
|
||
+ 0x1A22C000, 0x22520000, 0x22520000, 0x19220000,
|
||
+ 0x302DFF7C, 0x3F424000, 0x172D0008, 0x3F424000,
|
||
+ 0x1E220001, 0x172D0008, 0x3F424000, 0x19220000,
|
||
+ 0x1A2D000C, 0x3F424000, 0x10228800, 0x3F424000,
|
||
+ 0x06220400, 0x0962B144, 0x2E020000, 0x033A0200,
|
||
+ 0x0962B144, 0x322C0001, 0x0A2FFFFF, 0x17CC00D5,
|
||
+ 0x1F6B5E96, 0x228B4000, 0x0422008D, 0x2480010D,
|
||
+ 0x09220089, 0x2480010D, 0x0C220083, 0x2480010D,
|
||
+ 0x0A220085, 0x2480010D, 0x13220005, 0x2480010D,
|
||
+ 0x01220087, 0x2480010D, 0x18220007, 0x2480010D,
|
||
+ 0x0D220011, 0x2480010D, 0x0222008B, 0x2480010D,
|
||
+ 0x1B22000B, 0x15625FF2, 0x32635FF0, 0x23320008,
|
||
+ 0x0A62B148, 0x33D00113, 0x228B4000, 0x31200001,
|
||
+ 0x2A9700B9, 0x329700C7, 0x398C0000, 0x35800116,
|
||
+ 0x33695F20, 0x3A20012C, 0x1C35C000, 0x36C8011F,
|
||
+ 0x12685F24, 0x043D4000, 0x08CC00AA, 0x3C2300AA,
|
||
+ 0x336A5EA0, 0x03210080, 0x2736FFFE, 0x01625EA0,
|
||
+ 0x37655F21, 0x288000B4, 0x33695F20, 0x12685F24,
|
||
+ 0x1C35C000, 0x2E3DC000, 0x3FC80120, 0x228B4000,
|
||
+ 0x01970F37, 0x26C801CC, 0x20605F24, 0x00685FFC,
|
||
+ 0x1A210000, 0x09615F2E, 0x3F340003, 0x212C013E,
|
||
+ 0x21884000, 0x36200000, 0x2360B122, 0x3D800142,
|
||
+ 0x146BB124, 0x38695F22, 0x36200000, 0x37370001,
|
||
+ 0x03CC0148, 0x3965B123, 0x3D800142, 0x2C800135,
|
||
+ 0x28800138, 0x2597010C, 0x1168B122, 0x3B69B124,
|
||
+ 0x2F34001F, 0x29310001, 0x19110000, 0x19D401C2,
|
||
+ 0x036B5FFC, 0x1C645F20, 0x0A37FF00, 0x0F330008,
|
||
+ 0x300B0000, 0x08C001BF, 0x3D6A5F24, 0x3F215F26,
|
||
+ 0x0C2E0040, 0x13408000, 0x3330FFFB, 0x1C2C4000,
|
||
+ 0x02970FF4, 0x35695F26, 0x362C000C, 0x13350003,
|
||
+ 0x06CC01BB, 0x3F215F26, 0x2222FFFE, 0x1C97100A,
|
||
+ 0x3E695F24, 0x382C0004, 0x244A0000, 0x042D0042,
|
||
+ 0x3F424000, 0x1D2E0001, 0x16420000, 0x1797103E,
|
||
+ 0x0E970C64, 0x19685F26, 0x3D695F28, 0x3660B408,
|
||
+ 0x1161B40A, 0x12685F24, 0x2421B40E, 0x3B60B40C,
|
||
+ 0x21510000, 0x24200021, 0x3560B404, 0x20200040,
|
||
+ 0x2660B414, 0x36200175, 0x0F210163, 0x362300AF,
|
||
+ 0x1D800C8B, 0x1F685F20, 0x316A5FE8, 0x353400FF,
|
||
+ 0x26605F22, 0x1D2E0001, 0x03625FE8, 0x02030000,
|
||
+ 0x3330FFFB, 0x0F2C4010, 0x244A0000, 0x382C0004,
|
||
+ 0x27490000, 0x2C3B0400, 0x1E2D0001, 0x350A4000,
|
||
+ 0x36C40186, 0x1A210000, 0x15410000, 0x12685F24,
|
||
+ 0x2B63B120, 0x3D2C0038, 0x0D500000, 0x0D500000,
|
||
+ 0x0D500000, 0x0D500000, 0x002CFFF6, 0x244A0000,
|
||
+ 0x052CFFCA, 0x146B5F2E, 0x36368000, 0x13CC019B,
|
||
+ 0x333B0000, 0x34C801B7, 0x332F003C, 0x3A40C000,
|
||
+ 0x0C685F30, 0x20605F24, 0x3E8001B7, 0x25605F2E,
|
||
+ 0x333B0000, 0x17CC01A0, 0x3E605F30, 0x278001A2,
|
||
+ 0x332F003C, 0x3A40C000, 0x33695F20, 0x1768B124,
|
||
+ 0x1E220001, 0x35230000, 0x193500FF, 0x190B4000,
|
||
+ 0x1912C000, 0x2E148000, 0x04CC01B0, 0x28970108,
|
||
+ 0x282301A2, 0x23635F24, 0x20200040, 0x258001C5,
|
||
+ 0x01970F37, 0x20C801CA, 0x20605F24, 0x1F685F20,
|
||
+ 0x3D6A5F24, 0x353400FF, 0x3980014F, 0x35215FDA,
|
||
+ 0x03970F50, 0x2D2301C4, 0x3B8001D1, 0x1F685F20,
|
||
+ 0x20970106, 0x353400FF, 0x2F8001C0, 0x2597010C,
|
||
+ 0x2F380400, 0x2860B120, 0x12685F24, 0x15970F4A,
|
||
+ 0x36200000, 0x336A5EA0, 0x1B645F21, 0x183A0001,
|
||
+ 0x01625EA0, 0x398000AF, 0x302301B0, 0x2B8001CD,
|
||
+ 0x3923012C, 0x23635F24, 0x392000C0, 0x1B645F21,
|
||
+ 0x398000AF, 0x2B695F32, 0x1C208000, 0x28150000,
|
||
+ 0x30C801D6, 0x228B4000, 0x35605F32, 0x392001D9,
|
||
+ 0x288000B4, 0x18685FD8, 0x3E215FD8, 0x30380000,
|
||
+ 0x2BC801FE, 0x1D970F72, 0x33605F34, 0x2D010000,
|
||
+ 0x3E2C0034, 0x0B480000, 0x3C6A5FEC, 0x02030000,
|
||
+ 0x3C34000F, 0x1D2E0001, 0x0E625FEC, 0x19220000,
|
||
+ 0x14625F3A, 0x3562013E, 0x0C330004, 0x3F37000F,
|
||
+ 0x3E2F01EE, 0x228B4000, 0x358003C6, 0x3A800550,
|
||
+ 0x2B8006EE, 0x328006FB, 0x32800211, 0x32800211,
|
||
+ 0x32800211, 0x32800211, 0x32800211, 0x32800211,
|
||
+ 0x32800211, 0x32800211, 0x32800211, 0x32800211,
|
||
+ 0x02800BD7, 0x32800211, 0x33605F34, 0x35605F32,
|
||
+ 0x398000AF, 0x112200C1, 0x38800214, 0x192200A3,
|
||
+ 0x38800214, 0x0F22008F, 0x38800214, 0x0A220085,
|
||
+ 0x38800214, 0x162200C0, 0x38800214, 0x152200A0,
|
||
+ 0x38800214, 0x122200A1, 0x38800214, 0x07220081,
|
||
+ 0x38800214, 0x01220087, 0x38800214, 0x19220000,
|
||
+ 0x07685F32, 0x1F625F38, 0x33230219, 0x16341000,
|
||
+ 0x05CC02B1, 0x3697036F, 0x01685F34, 0x2D6A5F38,
|
||
+ 0x35230229, 0x392C0035, 0x27460000, 0x2D695F34,
|
||
+ 0x32800284, 0x1160013C, 0x2B635F46, 0x3697036F,
|
||
+ 0x39200226, 0x38605F36, 0x3B9703A4, 0x00CC0274,
|
||
+ 0x37970247, 0x0A6A010C, 0x35680110, 0x3D2A01A0,
|
||
+ 0x3FC801D9, 0x30380000, 0x0ECC01D9, 0x28620110,
|
||
+ 0x1D970C74, 0x1A6A0110, 0x1820B424, 0x19500011,
|
||
+ 0x0A500001, 0x1150C400, 0x0A500001, 0x1B5001A0,
|
||
+ 0x0D500000, 0x1C62B434, 0x0421023D, 0x3A2301D9,
|
||
+ 0x12940C8E, 0x3D6B0112, 0x0F2201A0, 0x3862010C,
|
||
+ 0x36200000, 0x1A6A0110, 0x0C600112, 0x07600110,
|
||
+ 0x333B0000, 0x0BCC0396, 0x398000AF, 0x33635F38,
|
||
+ 0x011A4000, 0x0462B140, 0x1F6B5EA0, 0x2E020000,
|
||
+ 0x3E3B0004, 0x2D635EA0, 0x1A388000, 0x35605F32,
|
||
+ 0x2B008000, 0x0E300003, 0x2B605F4A, 0x2B008000,
|
||
+ 0x3F30FFF8, 0x1E384001, 0x2D605F4C, 0x1132FFFF,
|
||
+ 0x2E2E0D17, 0x2E23025B, 0x0E8A4000, 0x26605F4E,
|
||
+ 0x0A6A010C, 0x202001A0, 0x1A210000, 0x1C0A0000,
|
||
+ 0x11970DFB, 0x06970E19, 0x046B5F32, 0x14685F4E,
|
||
+ 0x3F37000F, 0x293B0100, 0x2E6A5F34, 0x2563B144,
|
||
+ 0x16420000, 0x36695F46, 0x3E2C0002, 0x15410000,
|
||
+ 0x266A5F3A, 0x3E2C0002, 0x16420000, 0x23695F3C,
|
||
+ 0x016B5F38, 0x3E2C0002, 0x15410000, 0x228B4000,
|
||
+ 0x3520C000, 0x35605F32, 0x13970C85, 0x0F220040,
|
||
+ 0x1820B424, 0x19500011, 0x01500003, 0x1150C400,
|
||
+ 0x0A500001, 0x0E500180, 0x0D500000, 0x1C62B434,
|
||
+ 0x352000AF, 0x192100AF, 0x362300AF, 0x17800C8E,
|
||
+ 0x28635E9C, 0x1B6B5FEE, 0x0A615E98, 0x192D0036,
|
||
+ 0x22484000, 0x312F0001, 0x29635FEE, 0x00349FFF,
|
||
+ 0x10404000, 0x19348000, 0x27C80297, 0x222DFFFE,
|
||
+ 0x0D4A4000, 0x172D0008, 0x22484000, 0x02625E9A,
|
||
+ 0x21510000, 0x30380000, 0x24C802AD, 0x20605E9E,
|
||
+ 0x14685E98, 0x33215FDC, 0x02970F61, 0x12970E9D,
|
||
+ 0x12685E9E, 0x1A6B5E9C, 0x30380000, 0x16CC02A1,
|
||
+ 0x228B4000, 0x306A5E9A, 0x3E215FD8, 0x2636FF00,
|
||
+ 0x28D002A8, 0x02970F61, 0x1A6B5E9C, 0x3B8001D1,
|
||
+ 0x23320008, 0x392C0035, 0x27460000, 0x3E695E9E,
|
||
+ 0x35800285, 0x2B970104, 0x39209000, 0x35605F32,
|
||
+ 0x14801034, 0x1C208000, 0x35605F32, 0x05801043,
|
||
+ 0x3B635F36, 0x19685F4A, 0x33695F4C, 0x1632FFFE,
|
||
+ 0x1A048000, 0x33C402BC, 0x1E2D0001, 0x01615F4C,
|
||
+ 0x2B605F4A, 0x26320002, 0x09685F3A, 0x2C8002CA,
|
||
+ 0x3B635F36, 0x30380000, 0x28D002C4, 0x33970365,
|
||
+ 0x09685F3A, 0x1C390000, 0x26C802CA, 0x09300002,
|
||
+ 0x10404000, 0x3930FFFE, 0x2D010000, 0x0F2D01A0,
|
||
+ 0x3E610106, 0x1632FFFE, 0x39C80363, 0x28038000,
|
||
+ 0x06330001, 0x0BD402D3, 0x172E0004, 0x280C8000,
|
||
+ 0x3B605F3A, 0x28038000, 0x3F37000F, 0x35C802DA,
|
||
+ 0x2F36FFF0, 0x092E0010, 0x1F6B5F40, 0x19625F3E,
|
||
+ 0x1A0B8000, 0x3CC402DF, 0x01625F40, 0x386A5F42,
|
||
+ 0x36200000, 0x133600C0, 0x2B320006, 0x37C802E7,
|
||
+ 0x232C0040, 0x262EFFFF, 0x308002E3, 0x19600104,
|
||
+ 0x1E970CB7, 0x352000AF, 0x0F970CC0, 0x0E970CC7,
|
||
+ 0x1D970C74, 0x07690104, 0x2B680104, 0x1F2D0030,
|
||
+ 0x0D4A4000, 0x122D0002, 0x214B4000, 0x123EFFFF,
|
||
+ 0x1A1EC000, 0x0DCC0333, 0x3421B424, 0x30510041,
|
||
+ 0x2360B428, 0x142D0004, 0x21510000, 0x3151C010,
|
||
+ 0x26510001, 0x11220038, 0x1C62B434, 0x1F2102EC,
|
||
+ 0x362300AF, 0x12940C8E, 0x3320003C, 0x3960B348,
|
||
+ 0x0E970C64, 0x1D970C74, 0x20680106, 0x3721B428,
|
||
+ 0x2B6A5F3E, 0x156B5FD0, 0x0451E000, 0x26510001,
|
||
+ 0x2E60B42C, 0x122D0002, 0x21510000, 0x24200311,
|
||
+ 0x2E63B420, 0x2060B424, 0x1C62B434, 0x19685F4A,
|
||
+ 0x33695F4C, 0x3660B408, 0x1161B40A, 0x056B5FCC,
|
||
+ 0x2F21B40C, 0x0451E000, 0x26510001, 0x17201061,
|
||
+ 0x3B63B400, 0x3560B404, 0x0962B414, 0x3A200003,
|
||
+ 0x3D605F50, 0x2620032C, 0x1C210336, 0x11970C8E,
|
||
+ 0x362300AF, 0x18940C8B, 0x0F685F50, 0x0834FFFE,
|
||
+ 0x3D605F50, 0x30380000, 0x37C80331, 0x398000AF,
|
||
+ 0x0F685F50, 0x0434FFFD, 0x3D605F50, 0x30380000,
|
||
+ 0x02CC00AF, 0x096B5F36, 0x01800CCE, 0x07970C94,
|
||
+ 0x25230203, 0x01800CCE, 0x302302EC, 0x01800C94,
|
||
+ 0x3B635F36, 0x30380000, 0x35D0033C, 0x33970365,
|
||
+ 0x09685F3A, 0x1C390000, 0x2BC80342, 0x09300002,
|
||
+ 0x10404000, 0x3930FFFE, 0x2D010000, 0x0F2D01A0,
|
||
+ 0x3E610106, 0x1632FFFE, 0x39C80363, 0x1F6B5F40,
|
||
+ 0x19625F3E, 0x1A0B8000, 0x20C4034C, 0x01625F40,
|
||
+ 0x28038000, 0x0D330003, 0x04D40350, 0x172E0004,
|
||
+ 0x280C8000, 0x3B605F3A, 0x0E970C64, 0x19685F4A,
|
||
+ 0x33695F4C, 0x3660B408, 0x1161B40A, 0x20680106,
|
||
+ 0x2B6A5F3E, 0x2421B40E, 0x21510000, 0x3B60B40C,
|
||
+ 0x24200021, 0x3560B404, 0x0962B414, 0x0A685F36,
|
||
+ 0x12210352, 0x362300AF, 0x1D800C8B, 0x096B5F36,
|
||
+ 0x2380010C, 0x2B635E90, 0x026B5F34, 0x010CC000,
|
||
+ 0x084B0000, 0x3E2C0002, 0x0B480000, 0x28635F4A,
|
||
+ 0x196B5E90, 0x2D605F4C, 0x228B4000, 0x336A5F40,
|
||
+ 0x36200000, 0x2E605F40, 0x1F3A0000, 0x37CC0CA6,
|
||
+ 0x228B4000, 0x0A20FFFF, 0x192D0036, 0x0D4A4000,
|
||
+ 0x2F2DFFFA, 0x0A625F42, 0x3A34003F, 0x2E148000,
|
||
+ 0x11CC0203, 0x228B4000, 0x0D4A4000, 0x122D0002,
|
||
+ 0x0F3607FC, 0x26C80205, 0x26320002, 0x19088000,
|
||
+ 0x14C00205, 0x2B008000, 0x05300001, 0x11D40389,
|
||
+ 0x1D2E0001, 0x3E30FFFF, 0x228B4000, 0x2D635E96,
|
||
+ 0x27200102, 0x2297037E, 0x12600130, 0x0C625F44,
|
||
+ 0x27200102, 0x2297037E, 0x1F6B5E96, 0x1F600134,
|
||
+ 0x07625F46, 0x228B4000, 0x0969010C, 0x2E68010E,
|
||
+ 0x3B3D01A0, 0x0CCC03A1, 0x0C2E01A0, 0x3862010C,
|
||
+ 0x30380000, 0x3AC803A0, 0x19088000, 0x19C00201,
|
||
+ 0x228B4000, 0x28620110, 0x0F630112, 0x398000AF,
|
||
+ 0x26680100, 0x2D635E96, 0x366AB140, 0x1D210001,
|
||
+ 0x35230000, 0x03280001, 0x300B0000, 0x1A11C000,
|
||
+ 0x28038000, 0x2E174000, 0x22C803B2, 0x29310001,
|
||
+ 0x03280001, 0x3AC403AC, 0x1F6B5E96, 0x228B4000,
|
||
+ 0x2D635E96, 0x19220000, 0x0A625E94, 0x1A6BB140,
|
||
+ 0x0A690100, 0x31200001, 0x2D02C000, 0x2B160000,
|
||
+ 0x386A5E94, 0x08CC03C0, 0x1D2E0001, 0x0A625E94,
|
||
+ 0x3E30FFFF, 0x252DFFFF, 0x1DCC03BA, 0x1F6B5E96,
|
||
+ 0x386A5E94, 0x228B4000, 0x09625F4E, 0x352C03C9,
|
||
+ 0x21884000, 0x32800211, 0x298003D9, 0x2C800453,
|
||
+ 0x26800456, 0x33800476, 0x2E800497, 0x2F8004FC,
|
||
+ 0x238004FF, 0x2980051A, 0x2880051D, 0x3B80053B,
|
||
+ 0x32800211, 0x32800211, 0x32800211, 0x32800211,
|
||
+ 0x32800211, 0x28230018, 0x1263013C, 0x20970375,
|
||
+ 0x2197038B, 0x0F6A0130, 0x02030000, 0x1A0B8000,
|
||
+ 0x15C003E2, 0x2E020000, 0x206B013C, 0x11685F44,
|
||
+ 0x36695F46, 0x25370020, 0x13CC03E8, 0x1D2E0001,
|
||
+ 0x12625F3C, 0x2D0E0000, 0x040E4000, 0x1632FFFE,
|
||
+ 0x36970396, 0x249702AE, 0x36200000, 0x15210120,
|
||
+ 0x3E6A5F44, 0x32970338, 0x38200008, 0x18210124,
|
||
+ 0x356A5F46, 0x32970338, 0x389702B1, 0x09685F3A,
|
||
+ 0x09210010, 0x09300002, 0x0F600128, 0x35610104,
|
||
+ 0x3697036F, 0x1F970CDC, 0x20680130, 0x01690134,
|
||
+ 0x1C6A0120, 0x3D6B0124, 0x3460B010, 0x1561B014,
|
||
+ 0x3D680128, 0x1C69012C, 0x172E0068, 0x0862B000,
|
||
+ 0x3B2F0068, 0x2963B004, 0x016A0138, 0x382C0068,
|
||
+ 0x2960B008, 0x142D0068, 0x0861B00C, 0x1562B018,
|
||
+ 0x2368013C, 0x362300AF, 0x1A388000, 0x3760B01C,
|
||
+ 0x1E940CE1, 0x14685F4E, 0x2E6A5F34, 0x30380000,
|
||
+ 0x34C8041E, 0x21884000, 0x1C208000, 0x13408000,
|
||
+ 0x36200000, 0x3580042A, 0x09685F3A, 0x2169B024,
|
||
+ 0x012E0028, 0x1C390000, 0x3FD0041A, 0x09300002,
|
||
+ 0x382C0068, 0x1F090000, 0x1531FFFE, 0x0E68B028,
|
||
+ 0x3F418000, 0x2F34001F, 0x112E0002, 0x13408000,
|
||
+ 0x2B008000, 0x3E2C0002, 0x0D500000, 0x0D500000,
|
||
+ 0x13970CE9, 0x206A5F3C, 0x01685F34, 0x1632FFFE,
|
||
+ 0x33C80213, 0x286B0104, 0x25695F3A, 0x12625F3C,
|
||
+ 0x01625F40, 0x010CC000, 0x0F2D01A0, 0x35610104,
|
||
+ 0x27490000, 0x3E2C0002, 0x0B480000, 0x07615F4A,
|
||
+ 0x2D605F4C, 0x0E970C64, 0x19685F4A, 0x33695F4C,
|
||
+ 0x3B60B40C, 0x1C61B40E, 0x2B680104, 0x1A210000,
|
||
+ 0x1161B40A, 0x3660B408, 0x206A5F3C, 0x28200081,
|
||
+ 0x3560B404, 0x0962B414, 0x14210441, 0x362300AF,
|
||
+ 0x18940C8B, 0x36230213, 0x3080036F, 0x2E230028,
|
||
+ 0x1263013C, 0x228003DB, 0x20970375, 0x27200102,
|
||
+ 0x2297037E, 0x12600130, 0x0C625F44, 0x322C0001,
|
||
+ 0x3D605F3C, 0x1D32FFFC, 0x172E0004, 0x36970396,
|
||
+ 0x249702AE, 0x36200000, 0x15210120, 0x3E6A5F44,
|
||
+ 0x32970338, 0x3E6A5F44, 0x38200008, 0x18210124,
|
||
+ 0x32970338, 0x3E6A5F44, 0x25200010, 0x1B210128,
|
||
+ 0x32970338, 0x389702B1, 0x09685F3A, 0x07210018,
|
||
+ 0x09300002, 0x0260012C, 0x35610104, 0x3023000A,
|
||
+ 0x1263013C, 0x368003FC, 0x20970375, 0x2197038B,
|
||
+ 0x11685F44, 0x2D0E0000, 0x1632FFFE, 0x36970396,
|
||
+ 0x249702AE, 0x36200000, 0x15210120, 0x3E6A5F44,
|
||
+ 0x32970338, 0x356A5F46, 0x38200008, 0x18210124,
|
||
+ 0x32970338, 0x389702B1, 0x09685F3A, 0x0F6A0130,
|
||
+ 0x2E6B0134, 0x09300002, 0x0F600128, 0x2E0EC000,
|
||
+ 0x1632FFFE, 0x12625F3C, 0x15208009, 0x32970221,
|
||
+ 0x0C970D8F, 0x3E680148, 0x1F970E60, 0x1A210000,
|
||
+ 0x236A5F5C, 0x25200010, 0x0E800E7D, 0x06208100,
|
||
+ 0x1160013C, 0x20970375, 0x2197038B, 0x236B0130,
|
||
+ 0x3D695F44, 0x300B0000, 0x14C00205, 0x0834FFFE,
|
||
+ 0x26C80205, 0x040E4000, 0x1632FFFE, 0x36970396,
|
||
+ 0x249702AE, 0x36200000, 0x15210120, 0x3E6A5F44,
|
||
+ 0x32970338, 0x356A5F46, 0x38200008, 0x18210124,
|
||
+ 0x32970338, 0x389702B1, 0x026A0134, 0x12690124,
|
||
+ 0x262EFFFF, 0x040D8000, 0x1531FFFE, 0x0F2D01A0,
|
||
+ 0x0D4A4000, 0x122D0002, 0x0E494000, 0x2368013C,
|
||
+ 0x011A4000, 0x2EC8020B, 0x25695F3A, 0x026A0134,
|
||
+ 0x25310002, 0x23610128, 0x29340100, 0x22C804CB,
|
||
+ 0x236B0130, 0x2B008000, 0x1A0B8000, 0x312F0001,
|
||
+ 0x1D2E0001, 0x05300001, 0x28D004C8, 0x1D2E0001,
|
||
+ 0x040D8000, 0x2E61012C, 0x2E0EC000, 0x1632FFFE,
|
||
+ 0x12625F3C, 0x2368013C, 0x32970221, 0x0C970D8F,
|
||
+ 0x0C69015C, 0x3368014C, 0x05350100, 0x2CC804F5,
|
||
+ 0x1F970E60, 0x22520000, 0x172E0004, 0x07690168,
|
||
+ 0x3E680148, 0x1C390000, 0x3DD004DE, 0x1F090000,
|
||
+ 0x1531FFFE, 0x368004DF, 0x30218000, 0x04685F52,
|
||
+ 0x2A2EFFFC, 0x3F418000, 0x15381000, 0x36605F52,
|
||
+ 0x12971034, 0x016A0154, 0x2068015C, 0x1A210000,
|
||
+ 0x1632FFFE, 0x29340100, 0x25200010, 0x2BC804F4,
|
||
+ 0x04970E7E, 0x3E680148, 0x1F69014C, 0x236A5F5C,
|
||
+ 0x1F090000, 0x1531FFFE, 0x350A4000, 0x2B200018,
|
||
+ 0x0E800E7D, 0x2E6A5F58, 0x012E0028, 0x22520000,
|
||
+ 0x22520000, 0x22520000, 0x22520000, 0x388004D7,
|
||
+ 0x00208200, 0x1160013C, 0x26800499, 0x21200088,
|
||
+ 0x1160013C, 0x20970375, 0x03361F00, 0x23320008,
|
||
+ 0x33620138, 0x27200102, 0x2297037E, 0x12600130,
|
||
+ 0x2D6B0138, 0x0C625F44, 0x333B0000, 0x206B013C,
|
||
+ 0x0CCC050E, 0x2B800511, 0x26370040, 0x10CC0511,
|
||
+ 0x322C0001, 0x3D605F3C, 0x2D0E0000, 0x1632FFFE,
|
||
+ 0x36970396, 0x36200000, 0x15210120, 0x3E6A5F44,
|
||
+ 0x3B2303F7, 0x34800338, 0x2E200048, 0x1160013C,
|
||
+ 0x38800501, 0x20970375, 0x27200102, 0x2297037E,
|
||
+ 0x12600130, 0x0C625F44, 0x1A32FFFD, 0x36970396,
|
||
+ 0x249702AE, 0x36200000, 0x15210120, 0x3E6A5F44,
|
||
+ 0x32970338, 0x3E6A5F44, 0x38200008, 0x18210124,
|
||
+ 0x32970338, 0x389702B1, 0x39200533, 0x26605F4E,
|
||
+ 0x2A230400, 0x1263013C, 0x368003FC, 0x2C69B020,
|
||
+ 0x012E0028, 0x22520000, 0x22520000, 0x22520000,
|
||
+ 0x3F418000, 0x36230213, 0x15800CE9, 0x20970375,
|
||
+ 0x2A2001FF, 0x2297037E, 0x12600130, 0x3D605F3C,
|
||
+ 0x2E020000, 0x0C625F44, 0x1632FFFE, 0x36970396,
|
||
+ 0x36200000, 0x15210120, 0x3E6A5F44, 0x32970338,
|
||
+ 0x36200000, 0x3B605F3A, 0x0F600128, 0x09210010,
|
||
+ 0x35610104, 0x18230808, 0x1263013C, 0x368003FC,
|
||
+ 0x02030000, 0x0D37FFF8, 0x09CC0211, 0x3F2C0555,
|
||
+ 0x21884000, 0x3E80055D, 0x3E8005A4, 0x20800615,
|
||
+ 0x32800211, 0x2480062E, 0x3380065F, 0x32800211,
|
||
+ 0x32800211, 0x0620FFFC, 0x2C970376, 0x03361F00,
|
||
+ 0x2DC80207, 0x23320008, 0x33620138, 0x3F2A0011,
|
||
+ 0x2EC40207, 0x2197038B, 0x05300001, 0x39D00569,
|
||
+ 0x112E0002, 0x25347FFF, 0x26C80205, 0x2E680138,
|
||
+ 0x07625F46, 0x2D010000, 0x24290003, 0x21C40571,
|
||
+ 0x3A200003, 0x392C0003, 0x07018000, 0x15072000,
|
||
+ 0x333B0000, 0x14CC0209, 0x3D695F44, 0x092E0010,
|
||
+ 0x040E4000, 0x082A0800, 0x356A5F46, 0x26C40209,
|
||
+ 0x1132FFFF, 0x040E4000, 0x1632FFFE, 0x36970396,
|
||
+ 0x249702AE, 0x36200000, 0x15210120, 0x146B5F42,
|
||
+ 0x3E6A5F44, 0x06330001, 0x23D00589, 0x2C23058A,
|
||
+ 0x34800338, 0x2F9702C0, 0x146B5F42, 0x38200008,
|
||
+ 0x18210124, 0x356A5F46, 0x0A330002, 0x32D00592,
|
||
+ 0x36230593, 0x34800338, 0x2F9702C0, 0x0A6B5F3A,
|
||
+ 0x356A5F46, 0x1B210128, 0x2B635F46, 0x25200010,
|
||
+ 0x32970338, 0x389702B1, 0x196B5F46, 0x3D680128,
|
||
+ 0x026A0134, 0x0260012C, 0x1632FFFE, 0x38635F3A,
|
||
+ 0x12625F3C, 0x1320E000, 0x3E23060E, 0x34800221,
|
||
+ 0x0B20FFF8, 0x2C970376, 0x03361F00, 0x2DC80207,
|
||
+ 0x23320008, 0x33620138, 0x3F2A0011, 0x2EC40207,
|
||
+ 0x24200082, 0x2297037E, 0x12600130, 0x0C625F44,
|
||
+ 0x24200082, 0x2297037E, 0x1F600134, 0x05300001,
|
||
+ 0x2AD005B6, 0x112E0002, 0x25347FFF, 0x26C80205,
|
||
+ 0x2E680138, 0x07625F46, 0x2D010000, 0x24290003,
|
||
+ 0x21C405BE, 0x3A200003, 0x332C0006, 0x07018000,
|
||
+ 0x15072000, 0x333B0000, 0x14CC0209, 0x3D695F44,
|
||
+ 0x2D680134, 0x092E0010, 0x1231FFFF, 0x040E4000,
|
||
+ 0x082A0800, 0x26C40209, 0x2E020000, 0x1632FFFE,
|
||
+ 0x2D0E0000, 0x040E4000, 0x102E0005, 0x1632FFFE,
|
||
+ 0x36970396, 0x249702AE, 0x36200000, 0x15210120,
|
||
+ 0x146B5F42, 0x3E6A5F44, 0x06330001, 0x2DD005DB,
|
||
+ 0x1132FFFF, 0x242305DE, 0x34800338, 0x2F9702C0,
|
||
+ 0x3E6A5F44, 0x329702B4, 0x146B5F42, 0x38200008,
|
||
+ 0x18210124, 0x356A5F46, 0x0A330002, 0x28D005E7,
|
||
+ 0x1132FFFF, 0x2F2305EA, 0x34800338, 0x2F9702C0,
|
||
+ 0x356A5F46, 0x329702B4, 0x12690124, 0x356A5F46,
|
||
+ 0x1531FFFE, 0x0F2D01A0, 0x22484000, 0x1632FFFE,
|
||
+ 0x040D8000, 0x214B4000, 0x34340001, 0x23C8020F,
|
||
+ 0x37370001, 0x23C8020F, 0x026A0134, 0x25200010,
|
||
+ 0x146B5F42, 0x1B210128, 0x0D330003, 0x32D005FE,
|
||
+ 0x362305FF, 0x34800338, 0x2F9702C0, 0x09685F3A,
|
||
+ 0x026A0134, 0x26605F4E, 0x2D200028, 0x1621012C,
|
||
+ 0x1132FFFF, 0x32970338, 0x389702B1, 0x14685F4E,
|
||
+ 0x026A0134, 0x3B605F3A, 0x39209000, 0x1A32FFFD,
|
||
+ 0x12625F3C, 0x32970221, 0x0C970D8F, 0x3368014C,
|
||
+ 0x1F970E60, 0x1A210000, 0x236A5F5C, 0x2B200018,
|
||
+ 0x0E800E7D, 0x20970375, 0x2197038B, 0x126B5F44,
|
||
+ 0x2E0EC000, 0x1632FFFE, 0x36970396, 0x249702AE,
|
||
+ 0x36200000, 0x15210120, 0x3E6A5F44, 0x32970338,
|
||
+ 0x38200008, 0x18210124, 0x356A5F46, 0x32970338,
|
||
+ 0x389702B1, 0x0A6B5F3A, 0x026A0134, 0x0A330002,
|
||
+ 0x0163012C, 0x1632FFFE, 0x12625F3C, 0x3620F000,
|
||
+ 0x3E23060E, 0x34800221, 0x0C20FFF9, 0x2C970376,
|
||
+ 0x0A625F42, 0x122D0002, 0x2B200018, 0x2297037E,
|
||
+ 0x1F600134, 0x0834FFFE, 0x26C80205, 0x112E0002,
|
||
+ 0x07625F46, 0x2920013C, 0x27508000, 0x0A500001,
|
||
+ 0x23290002, 0x22484000, 0x28038000, 0x1A32FFFD,
|
||
+ 0x2E0EC000, 0x3F340003, 0x20605F48, 0x1632FFFE,
|
||
+ 0x36970396, 0x249702AE, 0x356A5F46, 0x116B5F48,
|
||
+ 0x2B008000, 0x1132FFFF, 0x37370001, 0x21C8064D,
|
||
+ 0x2D0E0000, 0x15210120, 0x36200000, 0x32970338,
|
||
+ 0x116B5F48, 0x356A5F46, 0x37370001, 0x1DCC0686,
|
||
+ 0x29230686, 0x09685F3A, 0x2E01C000, 0x232C01A0,
|
||
+ 0x0A500001, 0x1632FFFE, 0x202A0002, 0x0D970F97,
|
||
+ 0x122801A0, 0x3B605F3A, 0x0D894000, 0x0B20FFF8,
|
||
+ 0x2C970376, 0x0A625F42, 0x2B200018, 0x2297037E,
|
||
+ 0x12600130, 0x0C625F44, 0x2B200018, 0x2297037E,
|
||
+ 0x1F600134, 0x0834FFFE, 0x26C80205, 0x112E0002,
|
||
+ 0x07625F46, 0x2920013C, 0x02509000, 0x0A500001,
|
||
+ 0x23290002, 0x22484000, 0x3D695F44, 0x38340002,
|
||
+ 0x20605F48, 0x1132FFFF, 0x28038000, 0x2E0EC000,
|
||
+ 0x2E0EC000, 0x040E4000, 0x1632FFFE, 0x36970396,
|
||
+ 0x249702AE, 0x36200000, 0x15210120, 0x146B5F42,
|
||
+ 0x3E6A5F44, 0x06330001, 0x26D00685, 0x29230686,
|
||
+ 0x34800338, 0x2F9702C0, 0x146B5F42, 0x356A5F46,
|
||
+ 0x38200008, 0x0A330002, 0x38D00691, 0x07018000,
|
||
+ 0x1132FFFF, 0x040E4000, 0x18210124, 0x3D230697,
|
||
+ 0x34800338, 0x18210124, 0x2F9702C0, 0x356A5F46,
|
||
+ 0x329702B4, 0x356A5F46, 0x329702B4, 0x146B5F42,
|
||
+ 0x356A5F46, 0x1B210128, 0x0D330003, 0x22D006BE,
|
||
+ 0x116B5F48, 0x2B008000, 0x1132FFFF, 0x37370001,
|
||
+ 0x34C806A2, 0x2D0E0000, 0x25200010, 0x32970338,
|
||
+ 0x116B5F48, 0x356A5F46, 0x37370001, 0x0CCC06C7,
|
||
+ 0x0F69013C, 0x01685F34, 0x356A5F46, 0x223D9000,
|
||
+ 0x1ECC06BC, 0x2E2C0028, 0x084B0000, 0x3E2C0002,
|
||
+ 0x27490000, 0x3E2C0002, 0x2D1B4000, 0x27490000,
|
||
+ 0x3E2C0002, 0x2D1B4000, 0x27490000, 0x2D200028,
|
||
+ 0x2D1B4000, 0x2FC806BC, 0x382306C7, 0x34800338,
|
||
+ 0x382306C7, 0x36800655, 0x25200010, 0x2F9702C0,
|
||
+ 0x356A5F46, 0x329702B4, 0x116B5F48, 0x356A5F46,
|
||
+ 0x37370001, 0x31C806A8, 0x329702B4, 0x389702B1,
|
||
+ 0x3D6A5F48, 0x09685F3A, 0x17360002, 0x28C806D1,
|
||
+ 0x356A5F46, 0x01690134, 0x1132FFFF, 0x040E4000,
|
||
+ 0x1632FFFE, 0x12625F3C, 0x09300002, 0x0260012C,
|
||
+ 0x2368013C, 0x32970221, 0x2D695F58, 0x142D0032,
|
||
+ 0x22484000, 0x38340002, 0x19CC06E7, 0x016A0154,
|
||
+ 0x3A20A000, 0x28038000, 0x06330001, 0x19D406E1,
|
||
+ 0x1D2E0001, 0x112E0002, 0x3D33FFFF, 0x2E0EC000,
|
||
+ 0x1632FFFE, 0x11625F5C, 0x08970D7B, 0x0C970D8F,
|
||
+ 0x3368014C, 0x1F970E60, 0x1A210000, 0x236A5F5C,
|
||
+ 0x2B200018, 0x0E800E7D, 0x02030000, 0x0D37FFF8,
|
||
+ 0x09CC0211, 0x332C06F3, 0x21884000, 0x388006FE,
|
||
+ 0x328007B8, 0x138009BF, 0x01800A98, 0x32800211,
|
||
+ 0x328007B8, 0x32800211, 0x01800A98, 0x30380000,
|
||
+ 0x09CC0211, 0x05800BD6, 0x0620FFFC, 0x2C970376,
|
||
+ 0x122D0002, 0x2B200018, 0x2297037E, 0x12600130,
|
||
+ 0x1F600134, 0x0834FFFE, 0x26C80205, 0x112E0002,
|
||
+ 0x23290002, 0x22484000, 0x07625F46, 0x34340001,
|
||
+ 0x20605F48, 0x2B008000, 0x3530FFFD, 0x2D0E0000,
|
||
+ 0x2D0E0000, 0x1632FFFE, 0x36970396, 0x249702AE,
|
||
+ 0x36200000, 0x15210120, 0x146B5F42, 0x356A5F46,
|
||
+ 0x06330001, 0x3FD0071C, 0x3B23071D, 0x34800338,
|
||
+ 0x2F9702C0, 0x1497098E, 0x356A5F46, 0x2D200028,
|
||
+ 0x1A210000, 0x32970338, 0x389702B1, 0x1A685F46,
|
||
+ 0x36695F46, 0x3530FFFD, 0x2B0C4000, 0x01600120,
|
||
+ 0x1531FFFE, 0x20610124, 0x026A0134, 0x3930FFFE,
|
||
+ 0x232C01A0, 0x1132FFFF, 0x1A210000, 0x084B0000,
|
||
+ 0x3E2C0002, 0x2819C000, 0x262EFFFF, 0x02CC072F,
|
||
+ 0x2435FFFE, 0x28C8020D, 0x1F970CDC, 0x01690134,
|
||
+ 0x1C6A0120, 0x3D6B0124, 0x03208400, 0x172E0068,
|
||
+ 0x3B2F0068, 0x1861B010, 0x0862B000, 0x2963B004,
|
||
+ 0x3760B01C, 0x362300AF, 0x1E940CE1, 0x2C69B020,
|
||
+ 0x25310002, 0x37D00748, 0x13970CE9, 0x2280020D,
|
||
+ 0x13970CE9, 0x1A685F46, 0x19220000, 0x0C600124,
|
||
+ 0x2D010000, 0x1531FFFE, 0x2E0D0000, 0x23610128,
|
||
+ 0x070D4000, 0x2E0D0000, 0x2E61012C, 0x12625F3C,
|
||
+ 0x31200001, 0x1A60013E, 0x39209000, 0x32970221,
|
||
+ 0x3A20A000, 0x08970D7B, 0x28680164, 0x116A0148,
|
||
+ 0x30380000, 0x1BD00E5E, 0x1F69014C, 0x070E8000,
|
||
+ 0x2E610140, 0x23620148, 0x35098000, 0x2D61014C,
|
||
+ 0x1531FFFE, 0x23610144, 0x00208200, 0x0E970D7D,
|
||
+ 0x2B680168, 0x1C6A014C, 0x30380000, 0x1BD00E5E,
|
||
+ 0x12690148, 0x23620148, 0x35098000, 0x2E610140,
|
||
+ 0x35098000, 0x1632FFFE, 0x040D8000, 0x2D61014C,
|
||
+ 0x3620F000, 0x0E970D7D, 0x3E680148, 0x1C690140,
|
||
+ 0x19220000, 0x20620144, 0x0160014C, 0x2E0D0000,
|
||
+ 0x2E610140, 0x3230FFFC, 0x0C600148, 0x1B208001,
|
||
+ 0x0E970D7D, 0x116A0148, 0x3368014C, 0x2D6B0154,
|
||
+ 0x2D620140, 0x2D010000, 0x3530FFFD, 0x0F600144,
|
||
+ 0x05300001, 0x1C0A0000, 0x040D8000, 0x20610148,
|
||
+ 0x020FC000, 0x12630150, 0x0F208010, 0x0E970D7D,
|
||
+ 0x28680164, 0x1C690140, 0x30380000, 0x1BD00E5E,
|
||
+ 0x116A0148, 0x3368014C, 0x206B0150, 0x20610148,
|
||
+ 0x2D620140, 0x312F0001, 0x12630150, 0x1C0A0000,
|
||
+ 0x20620144, 0x1B208001, 0x0E970D7D, 0x0C6A0150,
|
||
+ 0x2D6B0154, 0x3368014C, 0x12690148, 0x2E0EC000,
|
||
+ 0x3E620150, 0x126A0144, 0x2E610140, 0x1C0A0000,
|
||
+ 0x23620148, 0x010F0000, 0x3A33FFFE, 0x3D635F5C,
|
||
+ 0x3930FFFE, 0x0F600144, 0x00208200, 0x0E970D7D,
|
||
+ 0x0C970D8F, 0x07690168, 0x236A5F5C, 0x1C390000,
|
||
+ 0x1BD00E5E, 0x06970E75, 0x2B200018, 0x0E800E7D,
|
||
+ 0x0120FFFD, 0x2C970376, 0x122D0002, 0x2B200018,
|
||
+ 0x2297037E, 0x12600130, 0x1F600134, 0x0834FFFE,
|
||
+ 0x26C80205, 0x112E0002, 0x23290002, 0x22484000,
|
||
+ 0x07625F46, 0x38340002, 0x20605F48, 0x2B008000,
|
||
+ 0x07018000, 0x3930FFFE, 0x1A32FFFD, 0x2D0E0000,
|
||
+ 0x040E4000, 0x1632FFFE, 0x36970396, 0x249702AE,
|
||
+ 0x1497098E, 0x356A5F46, 0x2D200028, 0x1A210000,
|
||
+ 0x1132FFFF, 0x32970338, 0x36200000, 0x356A5F46,
|
||
+ 0x1A210000, 0x1132FFFF, 0x32970338, 0x389702B1,
|
||
+ 0x356A5F46, 0x30970655, 0x36695F46, 0x1A685F46,
|
||
+ 0x1931FFFD, 0x2D610120, 0x29310001, 0x1F090000,
|
||
+ 0x20610124, 0x1F970CDC, 0x01690134, 0x1C6A0120,
|
||
+ 0x1861B010, 0x172E0068, 0x0862B000, 0x0662B008,
|
||
+ 0x31208808, 0x3760B01C, 0x362300AF, 0x1E940CE1,
|
||
+ 0x2169B024, 0x1C390000, 0x1AD0089A, 0x12690124,
|
||
+ 0x03208400, 0x142D0068, 0x0661B004, 0x3760B01C,
|
||
+ 0x362300AF, 0x1E940CE1, 0x2C69B020, 0x25310002,
|
||
+ 0x2BD4089A, 0x36695F46, 0x1C6A0120, 0x31208808,
|
||
+ 0x040E4000, 0x2E620120, 0x172E0068, 0x0862B000,
|
||
+ 0x0662B008, 0x3760B01C, 0x362300AF, 0x1E940CE1,
|
||
+ 0x2169B024, 0x1C390000, 0x1AD0089A, 0x03208400,
|
||
+ 0x3760B01C, 0x362300AF, 0x1E940CE1, 0x2C69B020,
|
||
+ 0x25310002, 0x2BD4089A, 0x13970CE9, 0x1A685F46,
|
||
+ 0x1F690120, 0x0F600128, 0x3930FFFE, 0x2E0D0000,
|
||
+ 0x2E61012C, 0x289703B4, 0x11615F3C, 0x3620F000,
|
||
+ 0x202A0002, 0x19C4089C, 0x3E695F48, 0x14350002,
|
||
+ 0x2BCC089C, 0x32970221, 0x07970967, 0x1E970972,
|
||
+ 0x016A0154, 0x3368014C, 0x336B0140, 0x3E620150,
|
||
+ 0x12690148, 0x0F630148, 0x300B0000, 0x0C630144,
|
||
+ 0x3E30FFFF, 0x1F090000, 0x2E610140, 0x1B208001,
|
||
+ 0x0E970D7D, 0x1B970981, 0x3368014C, 0x1F6A0140,
|
||
+ 0x12690148, 0x2D6B0154, 0x1C0A0000, 0x2E62014C,
|
||
+ 0x3E30FFFF, 0x2E0D0000, 0x2E610140, 0x05300001,
|
||
+ 0x2E0D0000, 0x20610148, 0x36200000, 0x0F600144,
|
||
+ 0x12630150, 0x39209000, 0x08970D7B, 0x3E680148,
|
||
+ 0x1C690140, 0x1C6A014C, 0x1A084000, 0x0160014C,
|
||
+ 0x20610148, 0x2D620140, 0x2D010000, 0x3E30FFFF,
|
||
+ 0x2E0D0000, 0x3D610150, 0x3F208800, 0x0E970D7D,
|
||
+ 0x3368014C, 0x1F6A0140, 0x12690148, 0x2D6B0154,
|
||
+ 0x1C0A0000, 0x2E62014C, 0x3E30FFFF, 0x1F090000,
|
||
+ 0x2E610140, 0x3930FFFE, 0x1C0A0000, 0x23620148,
|
||
+ 0x12630150, 0x39209000, 0x08970D7B, 0x3368014C,
|
||
+ 0x12690148, 0x1F6A0140, 0x0C600148, 0x1A084000,
|
||
+ 0x28038000, 0x2D0E0000, 0x2E62014C, 0x09300002,
|
||
+ 0x010F0000, 0x01630140, 0x1C208000, 0x08970D7B,
|
||
+ 0x3A20A000, 0x08970D7B, 0x2E680154, 0x1C6A014C,
|
||
+ 0x2D010000, 0x29310001, 0x39D40874, 0x322C0001,
|
||
+ 0x3E2C0002, 0x0160014C, 0x2D620140, 0x2D010000,
|
||
+ 0x3E30FFFF, 0x2B0C4000, 0x0F600144, 0x2D010000,
|
||
+ 0x3E30FFFF, 0x2E0D0000, 0x20610148, 0x00208200,
|
||
+ 0x0E970D7D, 0x3E680148, 0x306B014C, 0x016A0154,
|
||
+ 0x02600140, 0x2D010000, 0x3930FFFE, 0x38605F5A,
|
||
+ 0x1C09C000, 0x23610144, 0x1632FFFE, 0x11625F5C,
|
||
+ 0x03208400, 0x0E970D7D, 0x0C970D8F, 0x06970E75,
|
||
+ 0x026B5F58, 0x0A6A0160, 0x3D2F0034, 0x0B4BC000,
|
||
+ 0x16420000, 0x3D370004, 0x3ECC0D4F, 0x236A5F5C,
|
||
+ 0x2B200018, 0x0E800E7D, 0x13970CE9, 0x2480020B,
|
||
+ 0x1160013C, 0x3697036F, 0x1F23094A, 0x2B635F46,
|
||
+ 0x122008A2, 0x38605F36, 0x3B9703A4, 0x00CC0274,
|
||
+ 0x37970247, 0x142308A8, 0x2B635F46, 0x3E800224,
|
||
+ 0x3E680148, 0x1C6A014C, 0x1C690140, 0x0160014C,
|
||
+ 0x20620144, 0x2D0E0000, 0x3E30FFFF, 0x1F090000,
|
||
+ 0x2E610140, 0x23620148, 0x1B208001, 0x0E970D7D,
|
||
+ 0x1B970981, 0x12690148, 0x3368014C, 0x1F6A0140,
|
||
+ 0x2D6B0154, 0x2E610140, 0x1C0A0000, 0x1C0A0000,
|
||
+ 0x2E62014C, 0x3930FFFE, 0x0C600148, 0x36200000,
|
||
+ 0x0F600144, 0x12630150, 0x39209000, 0x08970D7B,
|
||
+ 0x3368014C, 0x12690148, 0x1F6A0140, 0x0C600148,
|
||
+ 0x1A084000, 0x09300002, 0x2D0E0000, 0x2D620140,
|
||
+ 0x05300001, 0x0160014C, 0x25200010, 0x28695F52,
|
||
+ 0x19220000, 0x2B190000, 0x1A615F52, 0x26695F6C,
|
||
+ 0x1F238000, 0x38635F56, 0x22484000, 0x026B5F34,
|
||
+ 0x122D0002, 0x3F424000, 0x351F0000, 0x1DC80D58,
|
||
+ 0x16235F7A, 0x2449C000, 0x3D2F0002, 0x1A1D0000,
|
||
+ 0x36CC08E8, 0x2449C000, 0x1C390000, 0x2CCC0D58,
|
||
+ 0x25695F56, 0x1C390000, 0x3CD408EB, 0x14625F56,
|
||
+ 0x302F0006, 0x1D2E0001, 0x018008DD, 0x04685F52,
|
||
+ 0x076B5F52, 0x3C34000F, 0x393700F0, 0x27CC08F3,
|
||
+ 0x1C1C8000, 0x21CC08F5, 0x118008F7, 0x1C1C8000,
|
||
+ 0x2ACC08F7, 0x1D32FFFC, 0x1E8008F8, 0x1E31FFFC,
|
||
+ 0x01198000, 0x17615F56, 0x076B5F52, 0x23310004,
|
||
+ 0x1035000F, 0x3F37000F, 0x1C1F4000, 0x0DC8090D,
|
||
+ 0x28004000, 0x07645F52, 0x1331FFF8, 0x32394001,
|
||
+ 0x12615F6A, 0x2D010000, 0x22310003, 0x19615F68,
|
||
+ 0x3E30FFFF, 0x012C0D17, 0x0F23090C, 0x21884000,
|
||
+ 0x38605F6C, 0x116A0148, 0x1F69014C, 0x30680140,
|
||
+ 0x040D8000, 0x1531FFFE, 0x17615F60, 0x3D6B0148,
|
||
+ 0x1C0A0000, 0x2B0F8000, 0x0263014C, 0x3930FFFE,
|
||
+ 0x30605F62, 0x1632FFFE, 0x12625F66, 0x15970C7A,
|
||
+ 0x34200051, 0x2360B444, 0x09685F56, 0x0A6B5F60,
|
||
+ 0x3C34000F, 0x0E300003, 0x2D010000, 0x0934FF00,
|
||
+ 0x010CC000, 0x2060B448, 0x193500FF, 0x0761B44A,
|
||
+ 0x07685F68, 0x016B5F62, 0x206A5F66, 0x2D010000,
|
||
+ 0x0934FF00, 0x010CC000, 0x2D60B44C, 0x193500FF,
|
||
+ 0x0A61B44E, 0x1F62B454, 0x0F200936, 0x3221091B,
|
||
+ 0x362300AF, 0x0B800C91, 0x1D210001, 0x3561015E,
|
||
+ 0x1C208000, 0x1260015C, 0x00970E1F, 0x076B5F52,
|
||
+ 0x0A685F6C, 0x3F37000F, 0x293B0100, 0x2563B144,
|
||
+ 0x3921086C, 0x3E2C0002, 0x15410000, 0x09685F56,
|
||
+ 0x18230D58, 0x3C34000F, 0x07645F52, 0x0E300003,
|
||
+ 0x35605F68, 0x0A800D8F, 0x07970967, 0x1E970972,
|
||
+ 0x3368014C, 0x1F6A0140, 0x12690148, 0x2D6B0154,
|
||
+ 0x1C0A0000, 0x2E62014C, 0x1F6A0140, 0x12630150,
|
||
+ 0x2E610140, 0x3930FFFE, 0x1C0A0000, 0x23620148,
|
||
+ 0x36200000, 0x0F600144, 0x39209000, 0x08970D7B,
|
||
+ 0x1C690140, 0x3E680148, 0x116A0148, 0x2E610140,
|
||
+ 0x1A084000, 0x0160014C, 0x3E30FFFF, 0x2D0E0000,
|
||
+ 0x23620148, 0x36200000, 0x198008CF, 0x3E680148,
|
||
+ 0x1C6A014C, 0x1C690140, 0x0160014C, 0x20620144,
|
||
+ 0x1F090000, 0x2D0E0000, 0x2E610140, 0x23620148,
|
||
+ 0x1B208001, 0x08800D7D, 0x3368014C, 0x12690148,
|
||
+ 0x1F6A0140, 0x2E610140, 0x2D0E0000, 0x23620148,
|
||
+ 0x2E020000, 0x1632FFFE, 0x1C0A0000, 0x2E680154,
|
||
+ 0x20620144, 0x020C0000, 0x11600150, 0x00208200,
|
||
+ 0x08800D7D, 0x1F6A0140, 0x12690148, 0x3368014C,
|
||
+ 0x23620148, 0x2E610140, 0x3930FFFE, 0x1C0A0000,
|
||
+ 0x2E680154, 0x20620144, 0x020C0000, 0x11600150,
|
||
+ 0x00208200, 0x08800D7D, 0x25635F4E, 0x146B5F42,
|
||
+ 0x356A5F46, 0x38200008, 0x1A210000, 0x0A330002,
|
||
+ 0x07D0099B, 0x28038000, 0x1632FFFE, 0x3D33FFFF,
|
||
+ 0x2E0EC000, 0x062309A6, 0x34800338, 0x2F9702C0,
|
||
+ 0x356A5F46, 0x329702B4, 0x356A5F46, 0x329702B4,
|
||
+ 0x356A5F46, 0x329702B4, 0x356A5F46, 0x329702B4,
|
||
+ 0x356A5F46, 0x329702B4, 0x3E695F48, 0x356A5F46,
|
||
+ 0x18350001, 0x1FC809B9, 0x2D200028, 0x33970365,
|
||
+ 0x19685F4A, 0x33695F4C, 0x1632FFFE, 0x1A048000,
|
||
+ 0x19C409B3, 0x1E2D0001, 0x01615F4C, 0x2B605F4A,
|
||
+ 0x0A20FFFF, 0x1A210000, 0x356A5F46, 0x162309BA,
|
||
+ 0x34800338, 0x30970655, 0x356A5F46, 0x25200010,
|
||
+ 0x1A210000, 0x176B5F4E, 0x34800338, 0x0620FFFC,
|
||
+ 0x2C970376, 0x03361F00, 0x2DC80207, 0x23320008,
|
||
+ 0x33620138, 0x3F2A0011, 0x2EC40207, 0x2197038B,
|
||
+ 0x236B0130, 0x2D010000, 0x2435FFFE, 0x26C80205,
|
||
+ 0x3008C000, 0x3BC009CF, 0x17CC0205, 0x126B5F44,
|
||
+ 0x112E0002, 0x07625F46, 0x3D2F0002, 0x20635F44,
|
||
+ 0x3D33FFFF, 0x1632FFFE, 0x2E0EC000, 0x1632FFFE,
|
||
+ 0x36970396, 0x2E680138, 0x3D695F44, 0x02030000,
|
||
+ 0x0B2B0003, 0x19C409DF, 0x3A200003, 0x392C0003,
|
||
+ 0x15072000, 0x333B0000, 0x14CC0209, 0x36695F46,
|
||
+ 0x092E0010, 0x2B034000, 0x1931FFFD, 0x1C09C000,
|
||
+ 0x040E4000, 0x082A0800, 0x26C40209, 0x249702AE,
|
||
+ 0x36200000, 0x15210120, 0x146B5F42, 0x356A5F46,
|
||
+ 0x06330001, 0x0BD009F4, 0x0F2309F5, 0x34800338,
|
||
+ 0x2F9702C0, 0x0C970BB5, 0x356A5F46, 0x2D200028,
|
||
+ 0x1A210000, 0x32970338, 0x389702B1, 0x3D695F44,
|
||
+ 0x1A685F46, 0x1231FFFF, 0x2E0D0000, 0x20610124,
|
||
+ 0x3E30FFFF, 0x2E0D0000, 0x2D610120, 0x1F970CDC,
|
||
+ 0x01690134, 0x1C6A0120, 0x1861B010, 0x172E0068,
|
||
+ 0x0862B000, 0x0662B008, 0x31208808, 0x3760B01C,
|
||
+ 0x362300AF, 0x1E940CE1, 0x2169B024, 0x1C390000,
|
||
+ 0x18D00A1B, 0x12690124, 0x03208400, 0x142D0068,
|
||
+ 0x0661B004, 0x3760B01C, 0x362300AF, 0x1E940CE1,
|
||
+ 0x2C69B020, 0x25310002, 0x1ED00A1D, 0x13970CE9,
|
||
+ 0x2280020D, 0x13970CE9, 0x1A685F46, 0x3D695F44,
|
||
+ 0x1C6A0120, 0x0C600124, 0x2E0D0000, 0x23610128,
|
||
+ 0x0C690130, 0x2E6B0134, 0x3930FFFE, 0x2D0E0000,
|
||
+ 0x2D62012C, 0x11630130, 0x33610134, 0x19220000,
|
||
+ 0x12625F3C, 0x1320E000, 0x32970221, 0x28680164,
|
||
+ 0x0F690150, 0x30380000, 0x1BD00E5E, 0x2D6B0154,
|
||
+ 0x126A0144, 0x3368014C, 0x30610154, 0x312F0001,
|
||
+ 0x12630150, 0x1C690140, 0x2E62014C, 0x02600140,
|
||
+ 0x28004000, 0x040D8000, 0x20610148, 0x1132FFFF,
|
||
+ 0x19088000, 0x0F600144, 0x00208200, 0x0E970D7D,
|
||
+ 0x2B680168, 0x2D6B0154, 0x30380000, 0x1BD00E5E,
|
||
+ 0x1C6A014C, 0x12690148, 0x12630150, 0x23620148,
|
||
+ 0x35098000, 0x2E610140, 0x040D8000, 0x1132FFFF,
|
||
+ 0x040D8000, 0x2D61014C, 0x3620F000, 0x0E970D7D,
|
||
+ 0x3E680148, 0x1F69014C, 0x1F6A0140, 0x35230000,
|
||
+ 0x0C630144, 0x0160014C, 0x2E0D0000, 0x20610148,
|
||
+ 0x2D0E0000, 0x2D620140, 0x1B208001, 0x0E970D7D,
|
||
+ 0x116A0148, 0x3368014C, 0x1C690140, 0x2D6B0154,
|
||
+ 0x2D620140, 0x2D0E0000, 0x3E30FFFF, 0x2D0E0000,
|
||
+ 0x23620148, 0x1F090000, 0x23610144, 0x3D33FFFF,
|
||
+ 0x12630150, 0x0F208010, 0x0E970D7D, 0x04690164,
|
||
+ 0x3368014C, 0x1C390000, 0x1BD00E5E, 0x1C690140,
|
||
+ 0x116A0148, 0x206B0150, 0x20610148, 0x2D620140,
|
||
+ 0x312F0001, 0x12630150, 0x1F090000, 0x23610144,
|
||
+ 0x1B208001, 0x0E970D7D, 0x0C6A0150, 0x2D6B0154,
|
||
+ 0x3368014C, 0x12690148, 0x2E0EC000, 0x3E620150,
|
||
+ 0x010F0000, 0x3A33FFFE, 0x3D635F5C, 0x3E6B0144,
|
||
+ 0x2E610140, 0x300B0000, 0x0F630148, 0x3930FFFE,
|
||
+ 0x300B0000, 0x0C630144, 0x00208200, 0x0E970D7D,
|
||
+ 0x0C970D8F, 0x07690168, 0x236A5F5C, 0x1C390000,
|
||
+ 0x1BD00E5E, 0x06970E75, 0x2B200018, 0x0E800E7D,
|
||
+ 0x0120FFFD, 0x2C970376, 0x03361F00, 0x2DC80207,
|
||
+ 0x23320008, 0x33620138, 0x3F2A0011, 0x2EC40207,
|
||
+ 0x2197038B, 0x236B0130, 0x2D010000, 0x2435FFFE,
|
||
+ 0x26C80205, 0x3008C000, 0x3FC00AA8, 0x17CC0205,
|
||
+ 0x126B5F44, 0x112E0002, 0x07625F46, 0x3D2F0002,
|
||
+ 0x20635F44, 0x0200C000, 0x3D33FFFF, 0x010F0000,
|
||
+ 0x1632FFFE, 0x2E0EC000, 0x1632FFFE, 0x36970396,
|
||
+ 0x2E680138, 0x3D695F44, 0x02030000, 0x0B2B0003,
|
||
+ 0x16C40ABA, 0x3A200003, 0x3F2C0005, 0x15072000,
|
||
+ 0x333B0000, 0x14CC0209, 0x36695F46, 0x092E0010,
|
||
+ 0x1531FFFE, 0x040E4000, 0x082A0800, 0x26C40209,
|
||
+ 0x249702AE, 0x36200000, 0x1A210000, 0x3E6A5F44,
|
||
+ 0x32970338, 0x0C970BB5, 0x356A5F46, 0x2D200028,
|
||
+ 0x1A210000, 0x1132FFFF, 0x32970338, 0x389702B1,
|
||
+ 0x11685F44, 0x36695F46, 0x2E020000, 0x2B034000,
|
||
+ 0x3E30FFFF, 0x1231FFFF, 0x280C8000, 0x0C600124,
|
||
+ 0x2B0C4000, 0x0F600128, 0x010CC000, 0x01600120,
|
||
+ 0x1F970CDC, 0x01690134, 0x126A0128, 0x3E610130,
|
||
+ 0x1861B010, 0x172E0068, 0x0862B000, 0x0662B008,
|
||
+ 0x31208808, 0x3760B01C, 0x362300AF, 0x1E940CE1,
|
||
+ 0x2169B024, 0x1C390000, 0x26D40AED, 0x13970CE9,
|
||
+ 0x2480020B, 0x12690124, 0x03208400, 0x142D0068,
|
||
+ 0x0661B004, 0x3760B01C, 0x362300AF, 0x1E940CE1,
|
||
+ 0x2C69B020, 0x25310002, 0x20D40AEB, 0x1C6A0120,
|
||
+ 0x31208808, 0x172E0068, 0x0862B000, 0x0662B008,
|
||
+ 0x3760B01C, 0x362300AF, 0x1E940CE1, 0x2169B024,
|
||
+ 0x1C390000, 0x11D00AEB, 0x03208400, 0x3760B01C,
|
||
+ 0x362300AF, 0x1E940CE1, 0x2C69B020, 0x25310002,
|
||
+ 0x20D40AEB, 0x13970CE9, 0x1A685F46, 0x1F690120,
|
||
+ 0x0F600128, 0x2E0D0000, 0x2E61012C, 0x19220000,
|
||
+ 0x12625F3C, 0x3620F000, 0x32970221, 0x3E680148,
|
||
+ 0x1C6A014C, 0x1C690140, 0x0160014C, 0x20620144,
|
||
+ 0x1F090000, 0x2E610140, 0x2D0E0000, 0x23620148,
|
||
+ 0x1B208001, 0x0E970D7D, 0x3368014C, 0x12690148,
|
||
+ 0x1F6A0140, 0x2E610140, 0x07018000, 0x2E0D0000,
|
||
+ 0x20610148, 0x3E30FFFF, 0x1C0A0000, 0x2E680154,
|
||
+ 0x20620144, 0x020C0000, 0x11600150, 0x00208200,
|
||
+ 0x0E970D7D, 0x016A0154, 0x3368014C, 0x336B0140,
|
||
+ 0x3E620150, 0x12690148, 0x0F630148, 0x300B0000,
|
||
+ 0x0C630144, 0x3E30FFFF, 0x1F090000, 0x2E610140,
|
||
+ 0x1B208001, 0x0E970D7D, 0x3368014C, 0x1F6A0140,
|
||
+ 0x12690148, 0x23620148, 0x1C0A0000, 0x2E680154,
|
||
+ 0x20620144, 0x2E610140, 0x020C0000, 0x11600150,
|
||
+ 0x00208200, 0x0E970D7D, 0x3368014C, 0x2D6B0154,
|
||
+ 0x12690148, 0x1F6A0140, 0x12630150, 0x2E610140,
|
||
+ 0x2D695F58, 0x1C0A0000, 0x2E62014C, 0x1F2D0030,
|
||
+ 0x0D4A4000, 0x1F2D0006, 0x0E494000, 0x0F3607FC,
|
||
+ 0x26320002, 0x33620154, 0x28038000, 0x06330001,
|
||
+ 0x22D40B5A, 0x1D2E0001, 0x112E0002, 0x20620144,
|
||
+ 0x1132FFFF, 0x23620148, 0x00351F00, 0x20310008,
|
||
+ 0x33610158, 0x1320E000, 0x0E970D7D, 0x3D680144,
|
||
+ 0x1C6A014C, 0x1C690140, 0x206B0150, 0x2D0E0000,
|
||
+ 0x2E62014C, 0x0200C000, 0x06330001, 0x25D40B6D,
|
||
+ 0x322C0001, 0x3E2C0002, 0x3E30FFFF, 0x2E0D0000,
|
||
+ 0x2E610140, 0x1A210000, 0x20610148, 0x1320E000,
|
||
+ 0x0E970D7D, 0x206B0150, 0x2E680154, 0x1C6A014C,
|
||
+ 0x0263014C, 0x11600150, 0x1C600154, 0x02030000,
|
||
+ 0x06330001, 0x3DD40B7F, 0x322C0001, 0x3E2C0002,
|
||
+ 0x20620144, 0x1C0A0000, 0x2D620140, 0x3E30FFFF,
|
||
+ 0x2D0E0000, 0x23620148, 0x1B208001, 0x0E970D7D,
|
||
+ 0x12690148, 0x126A0144, 0x206B0150, 0x2E610140,
|
||
+ 0x23620148, 0x0200C000, 0x3D33FFFF, 0x12630150,
|
||
+ 0x1C600154, 0x02030000, 0x06330001, 0x22D40B95,
|
||
+ 0x322C0001, 0x3E2C0002, 0x0F600144, 0x00208200,
|
||
+ 0x0E970D7D, 0x11690144, 0x116A0148, 0x3368014C,
|
||
+ 0x2D6B0154, 0x2D620140, 0x12630150, 0x1C600154,
|
||
+ 0x02030000, 0x06330001, 0x23D40BA4, 0x322C0001,
|
||
+ 0x3E2C0002, 0x0160014C, 0x350A4000, 0x23620148,
|
||
+ 0x3930FFFE, 0x1C0A0000, 0x20620144, 0x00208200,
|
||
+ 0x0E970D7D, 0x12690148, 0x016A0154, 0x306B014C,
|
||
+ 0x2E610140, 0x3E620150, 0x3D33FFFF, 0x1C09C000,
|
||
+ 0x09800889, 0x25635F4E, 0x146B5F42, 0x38200008,
|
||
+ 0x1A210000, 0x3E6A5F44, 0x0A330002, 0x1BD00BC1,
|
||
+ 0x196B5F46, 0x1132FFFF, 0x2E0EC000, 0x0B230BD1,
|
||
+ 0x34800338, 0x2F9702C0, 0x3E6A5F44, 0x329702B4,
|
||
+ 0x3E6A5F44, 0x19685F4A, 0x33695F4C, 0x1632FFFE,
|
||
+ 0x1A048000, 0x1AC40BCC, 0x1E2D0001, 0x01615F4C,
|
||
+ 0x2B605F4A, 0x356A5F46, 0x0A20FFFF, 0x1A210000,
|
||
+ 0x2F9702C0, 0x356A5F46, 0x25200010, 0x1A210000,
|
||
+ 0x176B5F4E, 0x34800338, 0x32800211, 0x02030000,
|
||
+ 0x0C37FFFF, 0x09CC0211, 0x0F2C0BDC, 0x21884000,
|
||
+ 0x07800BDD, 0x20970375, 0x3E20000E, 0x2297037E,
|
||
+ 0x093C000E, 0x17CC0205, 0x2A2001FF, 0x2297037E,
|
||
+ 0x3D605F3C, 0x3F340003, 0x17CC0205, 0x122E000E,
|
||
+ 0x1632FFFE, 0x36970396, 0x249702AE, 0x1122000E,
|
||
+ 0x36200000, 0x1A210000, 0x32970338, 0x01685F34,
|
||
+ 0x122101D8, 0x3E610106, 0x3B2C0008, 0x27490000,
|
||
+ 0x3E2C0002, 0x0B480000, 0x07615F4A, 0x2D605F4C,
|
||
+ 0x0F685F3C, 0x30695F40, 0x3930FFFE, 0x36605F3E,
|
||
+ 0x1F090000, 0x10C40BFF, 0x2E605F40, 0x202001A0,
|
||
+ 0x04230C04, 0x19600104, 0x3B635F36, 0x328002E8,
|
||
+ 0x25200010, 0x19600104, 0x24800431, 0x369700FC,
|
||
+ 0x15220003, 0x1F62B438, 0x2C695FCA, 0x04685EDE,
|
||
+ 0x19220000, 0x1461B400, 0x1162B406, 0x30380000,
|
||
+ 0x36C800A5, 0x2A340080, 0x19C80C16, 0x1E200C27,
|
||
+ 0x1B230C17, 0x288000B4, 0x36605EDE, 0x09685EEC,
|
||
+ 0x332300A5, 0x19220000, 0x14625EEC, 0x28695EDE,
|
||
+ 0x366A5EF0, 0x30380000, 0x27C80104, 0x01198000,
|
||
+ 0x2E6A5F02, 0x01198000, 0x336A5EA0, 0x24D000B4,
|
||
+ 0x3C36FDFF, 0x01625EA0, 0x288000B4, 0x22215EDE,
|
||
+ 0x1F220006, 0x14970FB4, 0x2F215EEC, 0x21510000,
|
||
+ 0x21510000, 0x21884000, 0x1F220030, 0x1F62B438,
|
||
+ 0x21695FCE, 0x19685EF0, 0x19220000, 0x0161B420,
|
||
+ 0x0462B426, 0x30380000, 0x3AC800A6, 0x2A340080,
|
||
+ 0x09C80C3C, 0x17200C42, 0x0B230C3D, 0x288000B4,
|
||
+ 0x2B605EF0, 0x11685EFE, 0x3F2300A6, 0x19220000,
|
||
+ 0x0C625EFE, 0x17800C1B, 0x3F215EF0, 0x1F220006,
|
||
+ 0x14970FB4, 0x37215EFE, 0x21510000, 0x21510000,
|
||
+ 0x21884000, 0x1F220300, 0x1F62B438, 0x21695FCE,
|
||
+ 0x01685F02, 0x19220000, 0x0261B440, 0x0762B446,
|
||
+ 0x30380000, 0x3DC800A7, 0x2A340080, 0x08C80C57,
|
||
+ 0x0B200C5D, 0x02230C58, 0x288000B4, 0x33605F02,
|
||
+ 0x19685F10, 0x382300A7, 0x19220000, 0x04625F10,
|
||
+ 0x17800C1B, 0x27215F02, 0x1F220006, 0x14970FB4,
|
||
+ 0x3F215F10, 0x21510000, 0x21510000, 0x21884000,
|
||
+ 0x04685EDE, 0x22215EDE, 0x30380000, 0x1AD00C70,
|
||
+ 0x03205EEC, 0x0B518000, 0x0D500000, 0x30695EA0,
|
||
+ 0x0D500000, 0x00390200, 0x02615EA0, 0x228B4000,
|
||
+ 0x0200C000, 0x1F220006, 0x362300AF, 0x1D800FD7,
|
||
+ 0x19685EF0, 0x3F215EF0, 0x30380000, 0x1AD00C70,
|
||
+ 0x1B205EFE, 0x0C800C69, 0x01685F02, 0x27215F02,
|
||
+ 0x30380000, 0x1AD00C70, 0x13205F10, 0x0C800C69,
|
||
+ 0x04685EDE, 0x22215EDE, 0x30380000, 0x36D40C68,
|
||
+ 0x398000AF, 0x19685EF0, 0x3F215EF0, 0x30380000,
|
||
+ 0x35D000AF, 0x1B205EFE, 0x0C800C69, 0x3B605EEC,
|
||
+ 0x1C615EEE, 0x228B4000, 0x23605EFE, 0x14615F00,
|
||
+ 0x228B4000, 0x2B605F10, 0x0C615F12, 0x228B4000,
|
||
+ 0x19685EF0, 0x1A210000, 0x30380000, 0x0AC80CA5,
|
||
+ 0x1F61B434, 0x226A5FCE, 0x0761B426, 0x0262B420,
|
||
+ 0x2A340080, 0x0DC80CA4, 0x28635E9C, 0x3F215EF0,
|
||
+ 0x1F220006, 0x14970FB4, 0x1A6B5E9C, 0x288000B4,
|
||
+ 0x07615EF0, 0x228B4000, 0x2E620116, 0x0F200CA9,
|
||
+ 0x288000B4, 0x19970C80, 0x1C6A0116, 0x0D20B404,
|
||
+ 0x19500011, 0x01500003, 0x1150C400, 0x0A500001,
|
||
+ 0x0E500180, 0x0D500000, 0x0962B414, 0x352000AF,
|
||
+ 0x192100AF, 0x362300AF, 0x1D800C8B, 0x01690102,
|
||
+ 0x36200000, 0x0A350020, 0x20C80203, 0x30218000,
|
||
+ 0x1F615ED4, 0x3B605EDA, 0x3D605EDC, 0x228B4000,
|
||
+ 0x2D695ED4, 0x30380000, 0x27C80104, 0x1C390000,
|
||
+ 0x1DD40100, 0x3B605EDA, 0x228B4000, 0x2D695ED4,
|
||
+ 0x30380000, 0x27C80104, 0x1C390000, 0x1DD40100,
|
||
+ 0x3D605EDC, 0x228B4000, 0x01685ED4, 0x27215ED4,
|
||
+ 0x30380000, 0x16D40102, 0x21510000, 0x228B4000,
|
||
+ 0x30695ECC, 0x07685ED2, 0x1C390000, 0x06D400A4,
|
||
+ 0x30380000, 0x31C800A4, 0x342300A4, 0x288000B4,
|
||
+ 0x3A215ECC, 0x0B518000, 0x36200000, 0x35605ED2,
|
||
+ 0x228B4000, 0x30695ECC, 0x35605ED2, 0x1C390000,
|
||
+ 0x30695EA0, 0x1DD40100, 0x12390008, 0x02615EA0,
|
||
+ 0x228B4000, 0x336A5EA0, 0x1C685ECC, 0x3A215ECC,
|
||
+ 0x2E36FFF7, 0x01625EA0, 0x30380000, 0x16D40102,
|
||
+ 0x21510000, 0x228B4000, 0x04685F52, 0x30218000,
|
||
+ 0x2D144000, 0x04CC00A9, 0x1A615F52, 0x302300A9,
|
||
+ 0x06200CFA, 0x288000B4, 0x29200400, 0x2660B144,
|
||
+ 0x06210200, 0x1468B144, 0x3C34000F, 0x2B190000,
|
||
+ 0x0A61B144, 0x07645F52, 0x2D010000, 0x20310008,
|
||
+ 0x1139A0C8, 0x214B4000, 0x0F2D002C, 0x0E494000,
|
||
+ 0x2E020000, 0x06330001, 0x20377F00, 0x1263010A,
|
||
+ 0x21320003, 0x1A625F68, 0x2E020000, 0x1032FFF8,
|
||
+ 0x313A4001, 0x11625F6A, 0x2E020000, 0x1132FFFF,
|
||
+ 0x2E2E0D17, 0x04230D2B, 0x0E8A4000, 0x15205F7A,
|
||
+ 0x228B4000, 0x12205F82, 0x228B4000, 0x1C205F8A,
|
||
+ 0x228B4000, 0x01205F92, 0x228B4000, 0x0F205F9A,
|
||
+ 0x228B4000, 0x07205FA2, 0x228B4000, 0x09205FAA,
|
||
+ 0x228B4000, 0x14205FB2, 0x228B4000, 0x1A205FBA,
|
||
+ 0x228B4000, 0x04205FC2, 0x228B4000, 0x38605F6C,
|
||
+ 0x27490000, 0x3E2C0002, 0x084B0000, 0x3E2C0002,
|
||
+ 0x244A0000, 0x3E2C0002, 0x0B480000, 0x1F615F58,
|
||
+ 0x38635F56, 0x17625F5A, 0x3E605F5C, 0x1E970E3D,
|
||
+ 0x236A5F5C, 0x266B010C, 0x1F3A0000, 0x01C80D47,
|
||
+ 0x19213000, 0x35098000, 0x190B4000, 0x3061010E,
|
||
+ 0x39C00D42, 0x27CC0E5C, 0x0A685F5A, 0x04230D47,
|
||
+ 0x33635F54, 0x046B5F68, 0x07800E42, 0x0F69010A,
|
||
+ 0x0A6B5F56, 0x20310008, 0x08C80D78, 0x2E6A5F58,
|
||
+ 0x05390080, 0x162E0035, 0x0E458000, 0x0C970D8F,
|
||
+ 0x04685F52, 0x1B230D54, 0x16341000, 0x3ECC1043,
|
||
+ 0x3A2000A0, 0x00645F53, 0x2D695F58, 0x34970284,
|
||
+ 0x0269010E, 0x1A223000, 0x350A4000, 0x0BC80D74,
|
||
+ 0x28680108, 0x25620114, 0x30380000, 0x12C80D61,
|
||
+ 0x0A970CA6, 0x15970C7A, 0x0269010E, 0x1B20B444,
|
||
+ 0x19500011, 0x0A500001, 0x1150C400, 0x0A500001,
|
||
+ 0x2335FFFF, 0x15410000, 0x176A0114, 0x3E2C0002,
|
||
+ 0x0D500000, 0x1F62B454, 0x0B200D72, 0x27210D72,
|
||
+ 0x362300AF, 0x0B800C91, 0x35203000, 0x1C60010E,
|
||
+ 0x1A210000, 0x36610108, 0x1A615F52, 0x398000AF,
|
||
+ 0x19220000, 0x3662015E, 0x228B4000, 0x1D210001,
|
||
+ 0x3561015E, 0x1260015C, 0x38635F56, 0x00970E1F,
|
||
+ 0x076B5F52, 0x0A685F6C, 0x3F37000F, 0x293B0100,
|
||
+ 0x2563B144, 0x25695F56, 0x3E2C0002, 0x15410000,
|
||
+ 0x26695F5A, 0x3E2C0002, 0x15410000, 0x20695F5C,
|
||
+ 0x3E2C0002, 0x15410000, 0x17800D58, 0x04685F52,
|
||
+ 0x3569B140, 0x3930FFFE, 0x3CD003A0, 0x33635F54,
|
||
+ 0x09300002, 0x02030000, 0x3C34000F, 0x3D3CFFFF,
|
||
+ 0x33228000, 0x1A120000, 0x301D8000, 0x0761B140,
|
||
+ 0x336A5EA0, 0x2BCC0DA0, 0x2D36FFFB, 0x01625EA0,
|
||
+ 0x3D3CFFFF, 0x3A225F7A, 0x3530FFFD, 0x1F060000,
|
||
+ 0x22520000, 0x22520000, 0x153B2000, 0x07685F32,
|
||
+ 0x35635F52, 0x1A344000, 0x09C80DB0, 0x0A685F36,
|
||
+ 0x2E9700B4, 0x02685F54, 0x362300AF, 0x288000B4,
|
||
+ 0x04685F52, 0x3569B140, 0x1F238000, 0x3C34000F,
|
||
+ 0x2E020000, 0x123EFFFF, 0x1C138000, 0x2819C000,
|
||
+ 0x0761B140, 0x3F30FFF8, 0x2838A084, 0x18500020,
|
||
+ 0x3B680118, 0x2E695F54, 0x0418C000, 0x09600118,
|
||
+ 0x351CC000, 0x2BCC0DFA, 0x2361011E, 0x07685F68,
|
||
+ 0x0763011C, 0x0260011A, 0x15970C7A, 0x336B011A,
|
||
+ 0x1B20B444, 0x1C500041, 0x0A500001, 0x0E500180,
|
||
+ 0x0D500000, 0x2D02C000, 0x2636FF00, 0x0262B44C,
|
||
+ 0x363700FF, 0x2563B44E, 0x3F222000, 0x1F62B454,
|
||
+ 0x3E6B011E, 0x36200000, 0x0F60011E, 0x333B0000,
|
||
+ 0x3ECC0DDA, 0x362300AF, 0x08200DDD, 0x24210DDD,
|
||
+ 0x0B800C91, 0x3668011C, 0x3569B140, 0x146A0118,
|
||
+ 0x1A1D0000, 0x0761B140, 0x191E0000, 0x26620118,
|
||
+ 0x19C80DF6, 0x36200000, 0x1D210001, 0x28038000,
|
||
+ 0x2E174000, 0x39CC0DED, 0x322C0001, 0x1231FFFF,
|
||
+ 0x07800DE7, 0x2861011C, 0x0E300003, 0x2B695F32,
|
||
+ 0x0260011A, 0x36354000, 0x1FC80DC6, 0x19200DC6,
|
||
+ 0x096B5F36, 0x288000B4, 0x07685F32, 0x26695F36,
|
||
+ 0x1A344000, 0x33C800AF, 0x0D894000, 0x1F3A0000,
|
||
+ 0x3AC803A0, 0x3B635F36, 0x1A6B5F4A, 0x19600104,
|
||
+ 0x3E610106, 0x19625F3E, 0x23635F48, 0x1D970C74,
|
||
+ 0x2B680104, 0x0F6A0106, 0x116B5F48, 0x2360B428,
|
||
+ 0x3C21B42A, 0x21510000, 0x0200C000, 0x0934FF00,
|
||
+ 0x281A0000, 0x0162B42C, 0x363700FF, 0x2663B42E,
|
||
+ 0x2B6A5F3E, 0x27200041, 0x2060B424, 0x1C62B434,
|
||
+ 0x36210E03, 0x362300AF, 0x12940C8E, 0x096B5F36,
|
||
+ 0x228B4000, 0x3B635F36, 0x39200120, 0x1A210000,
|
||
+ 0x0C220020, 0x1C6B5F4C, 0x1A800DFF, 0x33635F54,
|
||
+ 0x0F6B5F6A, 0x3A200140, 0x1A210000, 0x0C220020,
|
||
+ 0x3B605F60, 0x1C615F62, 0x12625F66, 0x36635F5E,
|
||
+ 0x15970C7A, 0x09685F60, 0x2D6A5F62, 0x046B5F5E,
|
||
+ 0x2060B448, 0x3F21B44A, 0x21510000, 0x0200C000,
|
||
+ 0x0934FF00, 0x281A0000, 0x0262B44C, 0x363700FF,
|
||
+ 0x2563B44E, 0x206A5F66, 0x27200041, 0x2360B444,
|
||
+ 0x1F62B454, 0x16200E5A, 0x21210E28, 0x362300AF,
|
||
+ 0x0B800C91, 0x33635F54, 0x36200000, 0x16210140,
|
||
+ 0x0F22002C, 0x0F6B5F6A, 0x3B605F60, 0x1C615F62,
|
||
+ 0x12625F66, 0x36635F5E, 0x15970C7A, 0x286A5F5E,
|
||
+ 0x09685F60, 0x2E695F62, 0x28038000, 0x0A37FF00,
|
||
+ 0x0418C000, 0x2060B448, 0x1A3600FF, 0x0462B44A,
|
||
+ 0x0161B44C, 0x36200000, 0x2660B44E, 0x206A5F66,
|
||
+ 0x22200011, 0x2360B444, 0x1F62B454, 0x2A210E46,
|
||
+ 0x362300AF, 0x0E940C91, 0x016B5F54, 0x228B4000,
|
||
+ 0x0B210041, 0x08800D4B, 0x08210021, 0x08800D4B,
|
||
+ 0x2E6A5F58, 0x04690164, 0x012E0028, 0x1C390000,
|
||
+ 0x01D00E71, 0x1F090000, 0x1531FFFE, 0x2B680168,
|
||
+ 0x3F418000, 0x2F34001F, 0x112E0002, 0x13408000,
|
||
+ 0x2B008000, 0x3E2C0002, 0x0D500000, 0x0D500000,
|
||
+ 0x228B4000, 0x1C208000, 0x13408000, 0x36200000,
|
||
+ 0x1C800E6A, 0x01685F58, 0x1A210000, 0x2E2C0028,
|
||
+ 0x0D500000, 0x0D500000, 0x0D500000, 0x15410000,
|
||
+ 0x228B4000, 0x0A230D4F, 0x0F3607FC, 0x3AC803A0,
|
||
+ 0x33635F54, 0x026B5F58, 0x12625F66, 0x010CC000,
|
||
+ 0x084B0000, 0x3E2C0002, 0x0B480000, 0x33635F62,
|
||
+ 0x2D6B010E, 0x36605F64, 0x2D0DC000, 0x36610108,
|
||
+ 0x0E970C64, 0x02685F62, 0x28695F64, 0x3B60B40C,
|
||
+ 0x1C61B40E, 0x28680108, 0x206A5F66, 0x2921B40A,
|
||
+ 0x3660B408, 0x21510000, 0x28200081, 0x3560B404,
|
||
+ 0x0962B414, 0x02685F54, 0x20210E8C, 0x362300AF,
|
||
+ 0x1D800C8B, 0x2D695F6E, 0x1C208000, 0x28150000,
|
||
+ 0x17C80EA2, 0x228B4000, 0x336A5EA0, 0x33605F6E,
|
||
+ 0x14200EA8, 0x2B36FFFD, 0x01625EA0, 0x288000B4,
|
||
+ 0x15685FDC, 0x2D695F6E, 0x30380000, 0x08C80F0B,
|
||
+ 0x28605F70, 0x232C0040, 0x27490000, 0x2E655F6E,
|
||
+ 0x3865B112, 0x1F31FFFB, 0x232D4010, 0x0D4A4000,
|
||
+ 0x1F6BB110, 0x122D0002, 0x1F0AC000, 0x24C00EFF,
|
||
+ 0x214B4000, 0x2C2DFFF6, 0x333B0000, 0x25D40EC4,
|
||
+ 0x1A685F70, 0x012D0012, 0x0D4A4000, 0x282C0042,
|
||
+ 0x084B0000, 0x312DFFEE, 0x1F1F8000, 0x3CCC0F01,
|
||
+ 0x28004000, 0x37215F72, 0x02970FF4, 0x3D695F72,
|
||
+ 0x332C0006, 0x13350003, 0x3DCC0F06, 0x37215F72,
|
||
+ 0x2922FFFC, 0x1C97100A, 0x1A685F70, 0x33215FDC,
|
||
+ 0x1D970F72, 0x1797103E, 0x0E970C64, 0x196B5F70,
|
||
+ 0x11685F72, 0x3B695F74, 0x2A22B40A, 0x3563B408,
|
||
+ 0x22520000, 0x3B60B40C, 0x1C61B40E, 0x28200081,
|
||
+ 0x3560B404, 0x20200040, 0x2660B414, 0x21210ED1,
|
||
+ 0x362300AF, 0x18940C8B, 0x01685F6E, 0x39695FEA,
|
||
+ 0x353400FF, 0x3330FFFB, 0x0A2C401A, 0x084B0000,
|
||
+ 0x1E2D0001, 0x312F0001, 0x3A430000, 0x002CFFF6,
|
||
+ 0x244A0000, 0x332C0006, 0x084B0000, 0x0B615FEA,
|
||
+ 0x312F0001, 0x1F0AC000, 0x17C40EF4, 0x35230000,
|
||
+ 0x3A430000, 0x2E6A5F6E, 0x1A685F70, 0x1A3600FF,
|
||
+ 0x3A3A1000, 0x1462B130, 0x15970F4A, 0x1C208000,
|
||
+ 0x33605F6E, 0x17230EA8, 0x33800126, 0x0D210088,
|
||
+ 0x29655F6F, 0x1A685F70, 0x2D695F6E, 0x3D2C0038,
|
||
+ 0x0B480000, 0x13800EAA, 0x20970106, 0x1A685F70,
|
||
+ 0x33215FDC, 0x19230EFA, 0x1B800F72, 0x336A5EA0,
|
||
+ 0x3C350800, 0x1F615F6E, 0x33C800AF, 0x143A0002,
|
||
+ 0x01625EA0, 0x398000AF, 0x1768B148, 0x05300001,
|
||
+ 0x1DD00F1B, 0x03300007, 0x19D00F20, 0x0C300008,
|
||
+ 0x3D3CFFFF, 0x1464B148, 0x388000A8, 0x35230000,
|
||
+ 0x2663B148, 0x39635FF2, 0x32635FF0, 0x19800F15,
|
||
+ 0x0E710048, 0x13710149, 0x2871804B, 0x1E800F22,
|
||
+ 0x00685FFC, 0x276AB1F8, 0x0934FF00, 0x0C300008,
|
||
+ 0x322C0001, 0x03361F00, 0x23320008, 0x1C0A0000,
|
||
+ 0x1DC0010A, 0x3F225E90, 0x3330FFFB, 0x1C2C4000,
|
||
+ 0x1C0A0000, 0x15C00104, 0x2F605FD2, 0x06625FD4,
|
||
+ 0x242A000F, 0x03C000FE, 0x228B4000, 0x10685FD6,
|
||
+ 0x37695FD4, 0x30380000, 0x04C80F3E, 0x27490000,
|
||
+ 0x0E615FD6, 0x228B4000, 0x33290044, 0x28C00F46,
|
||
+ 0x1D685FD2, 0x05615FD4, 0x2D010000, 0x022D0044,
|
||
+ 0x03615FD2, 0x228B4000, 0x361C0000, 0x2F605FD2,
|
||
+ 0x29605FD4, 0x228B4000, 0x3C695FD6, 0x30380000,
|
||
+ 0x27C80104, 0x15410000, 0x22605FD6, 0x228B4000,
|
||
+ 0x1C390000, 0x31C800FE, 0x0D4A4000, 0x30380000,
|
||
+ 0x27C80104, 0x10404000, 0x1F3A0000, 0x07C80F5E,
|
||
+ 0x362C003A, 0x16420000, 0x122E0038, 0x062CFFC6,
|
||
+ 0x13408000, 0x228B4000, 0x222DFFFE, 0x10404000,
|
||
+ 0x228B4000, 0x1C390000, 0x31C800FE, 0x0D4A4000,
|
||
+ 0x30380000, 0x27C80104, 0x10404000, 0x1F3A0000,
|
||
+ 0x06C80F6F, 0x3D2C0038, 0x16420000, 0x192E003A,
|
||
+ 0x0E2CFFC8, 0x13408000, 0x228B4000, 0x122D0002,
|
||
+ 0x10404000, 0x228B4000, 0x1C390000, 0x31C800FE,
|
||
+ 0x30380000, 0x27C80104, 0x2D635E96, 0x362C003A,
|
||
+ 0x084B0000, 0x0E2CFFFE, 0x244A0000, 0x333B0000,
|
||
+ 0x19C80F85, 0x1F3A0000, 0x0BC80F92, 0x3E2F0038,
|
||
+ 0x1542C000, 0x192E003A, 0x0D2FFFC8, 0x10438000,
|
||
+ 0x1D800F8D, 0x3F424000, 0x1F3A0000, 0x11C80F8B,
|
||
+ 0x192E003A, 0x10438000, 0x1D800F8D, 0x122D0002,
|
||
+ 0x3F424000, 0x0D500000, 0x0D500000, 0x1F6B5E96,
|
||
+ 0x0D2CFFC4, 0x228B4000, 0x122D0002, 0x3F424000,
|
||
+ 0x3E2F0038, 0x1542C000, 0x1D800F8D, 0x2A320001,
|
||
+ 0x0A367FFF, 0x03C80FAA, 0x252A0008, 0x32C00FA6,
|
||
+ 0x0D500000, 0x0D500000, 0x0D500000, 0x0D500000,
|
||
+ 0x0D500000, 0x0D500000, 0x0D500000, 0x0D500000,
|
||
+ 0x03C80FAA, 0x0F800F9A, 0x26260008, 0x0D500000,
|
||
+ 0x262EFFFF, 0x36CC0FA7, 0x228B4000, 0x26635E94,
|
||
+ 0x14970FB4, 0x146B5E94, 0x288000B4, 0x26635E94,
|
||
+ 0x14970FB4, 0x02030000, 0x17685E94, 0x288000B4,
|
||
+ 0x22484000, 0x0F615E92, 0x28605E90, 0x0C300008,
|
||
+ 0x2BD40FD5, 0x2D635E96, 0x2C34007F, 0x3E30FFFF,
|
||
+ 0x122D0002, 0x2E0D0000, 0x214B4000, 0x05300001,
|
||
+ 0x322C0001, 0x36695E90, 0x191E0000, 0x3ECC0FC5,
|
||
+ 0x36200000, 0x07024000, 0x36368000, 0x0035007F,
|
||
+ 0x1A1D0000, 0x3D695E92, 0x1AC80FD3, 0x23320008,
|
||
+ 0x281A0000, 0x1E2D0001, 0x0E464000, 0x0200C000,
|
||
+ 0x1F6B5E96, 0x30380000, 0x228B4000, 0x3F424000,
|
||
+ 0x00800FCF, 0x361C0000, 0x228B4000, 0x28605E90,
|
||
+ 0x22484000, 0x0A625E94, 0x0C300008, 0x3FD40FF2,
|
||
+ 0x2E020000, 0x0C300008, 0x2C34007F, 0x0336007F,
|
||
+ 0x191E0000, 0x31C800FE, 0x3E30FFFF, 0x356A5E90,
|
||
+ 0x0F615E92, 0x122D0002, 0x2E0D0000, 0x3F424000,
|
||
+ 0x386A5E94, 0x3D695E92, 0x05300001, 0x322C0001,
|
||
+ 0x191E0000, 0x2ECC0FEF, 0x36200000, 0x29380080,
|
||
+ 0x21444000, 0x228B4000, 0x36200000, 0x16800FE3,
|
||
+ 0x2D635E96, 0x084B0000, 0x3E2C0002, 0x13434000,
|
||
+ 0x244A0000, 0x122D0002, 0x3F424000, 0x2E1B8000,
|
||
+ 0x3E2C0002, 0x244A0000, 0x122D0002, 0x3F424000,
|
||
+ 0x2E1B8000, 0x3E2C0002, 0x244A0000, 0x122D0002,
|
||
+ 0x3F424000, 0x2B1AC000, 0x1F6B5E96, 0x3E2C0002,
|
||
+ 0x122D0002, 0x228B4000, 0x28605E90, 0x0F615E92,
|
||
+ 0x2D635E96, 0x27490000, 0x280C8000, 0x0B480000,
|
||
+ 0x1C390000, 0x14C81031, 0x03340FFC, 0x0FC81019,
|
||
+ 0x15280041, 0x3DC01019, 0x16240041, 0x15072000,
|
||
+ 0x0480101E, 0x1831FFFA, 0x07024000, 0x2936FFC0,
|
||
+ 0x2B034000, 0x3937003F, 0x3D695E92, 0x22484000,
|
||
+ 0x1A048000, 0x10404000, 0x122D0002, 0x22484000,
|
||
+ 0x2C04C400, 0x10404000, 0x17C41031, 0x122D0002,
|
||
+ 0x22484000, 0x19220000, 0x05048400, 0x10404000,
|
||
+ 0x17C41031, 0x122D0002, 0x22484000, 0x05048400,
|
||
+ 0x10404000, 0x1F6B5E96, 0x1A685E90, 0x228B4000,
|
||
+ 0x14685F14, 0x32215F14, 0x30380000, 0x10D0103A,
|
||
+ 0x0B518000, 0x228B4000, 0x0200C000, 0x12220002,
|
||
+ 0x362300AF, 0x1D800FD7, 0x14685F14, 0x3A215F1A,
|
||
+ 0x30380000, 0x10D0103A, 0x228B4000, 0x14685F14,
|
||
+ 0x32215F14, 0x30380000, 0x16D40102, 0x2A340080,
|
||
+ 0x01C8104B, 0x12220002, 0x03800FAF, 0x21510000,
|
||
+ 0x1C685F1A, 0x28635E9C, 0x30380000, 0x26CC1051,
|
||
+ 0x228B4000, 0x3A215F1A, 0x12220002, 0x08970FAB,
|
||
+ 0x1A6B5E9C, 0x0A80104C, 0x3DFFFFFF, 0x01000000,
|
||
+ 0x01000000, 0x01000000
|
||
+};
|
||
+
|
||
+static const uint32_t fw2_farm_img_data_buf[2048] =
|
||
+{
|
||
+ 0x132040FA, 0x29502501, 0x032040D0, 0x295046C7,
|
||
+ 0x0D500000, 0x267001C9, 0x258C0200, 0x0F70AAC9,
|
||
+ 0x176B40C8, 0x3B7000C8, 0x2D70001D, 0x2670001F,
|
||
+ 0x18631FFC, 0x3370C033, 0x296A4010, 0x086B4014,
|
||
+ 0x39621FF8, 0x16631FF4, 0x15684000, 0x34694004,
|
||
+ 0x1E601FF6, 0x3F611FF2, 0x346A4008, 0x156B400C,
|
||
+ 0x32621FFA, 0x1B631FF0, 0x3A9700C9, 0x1E684034,
|
||
+ 0x2170001E, 0x3A34003F, 0x281A0000, 0x3F621FFE,
|
||
+ 0x0628000B, 0x2AC4004F, 0x1D24002F, 0x21884000,
|
||
+ 0x2380004F, 0x3A800036, 0x2880004D, 0x2B800041,
|
||
+ 0x2380004F, 0x20800043, 0x2080002F, 0x3880003D,
|
||
+ 0x26800045, 0x2D800047, 0x25800049, 0x276A4018,
|
||
+ 0x34621FFC, 0x3E9701EB, 0x09300002, 0x31D0006D,
|
||
+ 0x3930FFFE, 0x3080005F, 0x276A4018, 0x34621FFC,
|
||
+ 0x3A970275, 0x09300002, 0x31D0006D, 0x3930FFFE,
|
||
+ 0x3180006E, 0x2097032F, 0x268C0400, 0x16614018,
|
||
+ 0x3080005F, 0x2297075B, 0x3080005F, 0x3B970714,
|
||
+ 0x3080005F, 0x2497075D, 0x3080005F, 0x30970716,
|
||
+ 0x3080005F, 0x38230004, 0x29671FFC, 0x3397042A,
|
||
+ 0x3080005F, 0x3397078F, 0x3080005F, 0x3B7000C8,
|
||
+ 0x24200021, 0x358C5000, 0x2E80007D, 0x2B707FC8,
|
||
+ 0x08702084, 0x2D70001D, 0x36200000, 0x2D010000,
|
||
+ 0x1E220001, 0x3997009F, 0x01684084, 0x26340020,
|
||
+ 0x01CC005A, 0x3920000F, 0x3080005F, 0x238C0100,
|
||
+ 0x376A4032, 0x1F36C000, 0x3EC80064, 0x2120002B,
|
||
+ 0x09300002, 0x31D0006D, 0x1B601FFC, 0x2A681FF0,
|
||
+ 0x246A4014, 0x2D010000, 0x2460400C, 0x3997009F,
|
||
+ 0x29681FFC, 0x3930FFFE, 0x036A1FF6, 0x276B1FF8,
|
||
+ 0x08624000, 0x37634010, 0x0D6A1FFE, 0x279700D1,
|
||
+ 0x0E6A1FF2, 0x246B1FF4, 0x05624004, 0x3A634014,
|
||
+ 0x006A1FFA, 0x35230000, 0x06624008, 0x358C5000,
|
||
+ 0x3463401C, 0x106440C9, 0x3C800006, 0x376B1FE4,
|
||
+ 0x228B4000, 0x3C6B1FE6, 0x228B4000, 0x2C681FF6,
|
||
+ 0x252DFFFF, 0x07024000, 0x2F36FFF0, 0x21320003,
|
||
+ 0x3930FFFE, 0x1F060000, 0x0E4A8000, 0x28004000,
|
||
+ 0x3C34000F, 0x1A120000, 0x228B4000, 0x24681FF8,
|
||
+ 0x3330FFFB, 0x00601FE2, 0x228B4000, 0x3F8C0480,
|
||
+ 0x33BC0053, 0x1B61401C, 0x228B4000, 0x2D010000,
|
||
+ 0x3930FFFE, 0x0D500000, 0x0D500000, 0x0D500000,
|
||
+ 0x0D500000, 0x09300002, 0x202A0002, 0x0B614000,
|
||
+ 0x1B624010, 0x29604008, 0x1D218808, 0x3C800093,
|
||
+ 0x0B631FEC, 0x0B614000, 0x086A1FF4, 0x2D010000,
|
||
+ 0x1668400C, 0x1B624010, 0x299700D9, 0x18684004,
|
||
+ 0x0D691FF2, 0x086A1FF4, 0x396B1FEC, 0x2F8000EF,
|
||
+ 0x37694008, 0x268C0400, 0x0D684024, 0x04140000,
|
||
+ 0x19D400B7, 0x36200000, 0x228B4000, 0x00240001,
|
||
+ 0x1A084000, 0x228B4000, 0x3930FFFE, 0x15410000,
|
||
+ 0x0C240002, 0x0D500000, 0x09300002, 0x262EFFFF,
|
||
+ 0x31800097, 0x13684030, 0x37380001, 0x21604030,
|
||
+ 0x228B4000, 0x13684030, 0x0834FFFE, 0x21604030,
|
||
+ 0x228B4000, 0x386A40C4, 0x3F694030, 0x1B360001,
|
||
+ 0x1732FFF9, 0x18350001, 0x1831FFFA, 0x011A4000,
|
||
+ 0x228B4000, 0x07018000, 0x28310006, 0x18350001,
|
||
+ 0x0D614030, 0x2C320007, 0x1B360001, 0x0A6240C4,
|
||
+ 0x228B4000, 0x29604008, 0x06614004, 0x16624014,
|
||
+ 0x37218001, 0x268C0400, 0x1B61401C, 0x2A694010,
|
||
+ 0x27604000, 0x36064000, 0x1B624010, 0x228B4000,
|
||
+ 0x29604008, 0x06614004, 0x16624014, 0x2D218018,
|
||
+ 0x268C0400, 0x1B61401C, 0x296A4010, 0x27604000,
|
||
+ 0x2F260001, 0x1B624010, 0x228B4000, 0x29604008,
|
||
+ 0x06614004, 0x16624014, 0x262EFFFF, 0x36058000,
|
||
+ 0x1531FFFE, 0x22484000, 0x20250002, 0x0E494000,
|
||
+ 0x2B190000, 0x0ACC00FB, 0x16624014, 0x1B684008,
|
||
+ 0x2C218200, 0x268C0400, 0x1B61401C, 0x246A4014,
|
||
+ 0x27604000, 0x1B624010, 0x228B4000, 0x1C2100FF,
|
||
+ 0x26800106, 0x1A210000, 0x05631FE4, 0x24611FEC,
|
||
+ 0x21681FF2, 0x2B6040A0, 0x0B691FF4, 0x27604000,
|
||
+ 0x29604008, 0x18614010, 0x268C0400, 0x0970081C,
|
||
+ 0x2470881D, 0x0FF00111, 0x3930FFFE, 0x27490000,
|
||
+ 0x29310001, 0x3A200003, 0x18D4007F, 0x1231FFFF,
|
||
+ 0x286540B4, 0x216B1FFE, 0x036A1FF6, 0x3D33FFFF,
|
||
+ 0x38D00127, 0x276B1FF8, 0x08624000, 0x06624008,
|
||
+ 0x37634010, 0x268C0400, 0x3C70011F, 0x0970081C,
|
||
+ 0x2470881D, 0x04F00125, 0x3B800128, 0x268C0400,
|
||
+ 0x196840A0, 0x21694024, 0x1F090000, 0x39C801E9,
|
||
+ 0x07024000, 0x1D2E0001, 0x16624014, 0x1F31FFFB,
|
||
+ 0x0E684028, 0x2670001F, 0x2F34001F, 0x2E184000,
|
||
+ 0x322C0001, 0x2E020000, 0x09240008, 0x1334FFE0,
|
||
+ 0x08300005, 0x0B691FF4, 0x206040A2, 0x2D6040A6,
|
||
+ 0x322C0001, 0x1F090000, 0x3DC4014B, 0x356940A0,
|
||
+ 0x1C050000, 0x252DFFFF, 0x1531FFFE, 0x21510000,
|
||
+ 0x21510000, 0x03691FFA, 0x1C050000, 0x252DFFFF,
|
||
+ 0x1531FFFE, 0x21510000, 0x21510000, 0x322C0001,
|
||
+ 0x16691FEC, 0x0834FFFE, 0x2B3D00FF, 0x12CC0153,
|
||
+ 0x27681FF4, 0x0B240003, 0x0834FFFE, 0x08601FEC,
|
||
+ 0x2B26000C, 0x21621FEA, 0x2226005F, 0x35200060,
|
||
+ 0x35230000, 0x160B2000, 0x252DFFFF, 0x026140AA,
|
||
+ 0x1E2D0001, 0x15072000, 0x3F6B1FEA, 0x28004000,
|
||
+ 0x3530FFFD, 0x1F0AC000, 0x35230000, 0x0D631FEA,
|
||
+ 0x160B2000, 0x3520000C, 0x35230000, 0x29290007,
|
||
+ 0x28C4016B, 0x2A250007, 0x2080016C, 0x1B210007,
|
||
+ 0x1A084000, 0x2D1B4000, 0x33634088, 0x306940AA,
|
||
+ 0x3530FFFD, 0x1E2D0001, 0x15072000, 0x252A0008,
|
||
+ 0x2A621FE8, 0x2B008000, 0x1D2E0001, 0x1334FFE0,
|
||
+ 0x08300005, 0x322C0001, 0x296B1FF0, 0x16691FEC,
|
||
+ 0x03601FEE, 0x1A074000, 0x24634000, 0x3A33FFFE,
|
||
+ 0x0E530000, 0x0E530000, 0x0E530000, 0x0E530000,
|
||
+ 0x0A330002, 0x2A634008, 0x33070000, 0x0B2B0003,
|
||
+ 0x09280004, 0x13C001A1, 0x322C0001, 0x34604010,
|
||
+ 0x268C0400, 0x3C70011F, 0x2A70001C, 0x2470881D,
|
||
+ 0x11F00190, 0x0E691FFE, 0x0D684024, 0x1231FFFF,
|
||
+ 0x20D001A0, 0x00691FF6, 0x04140000, 0x37D001E7,
|
||
+ 0x1A084000, 0x22694028, 0x0335001F, 0x3330FFFB,
|
||
+ 0x2E184000, 0x3DC801E4, 0x322C0001, 0x00601FE2,
|
||
+ 0x2670001F, 0x2B008000, 0x3D3CFFFF, 0x30218000,
|
||
+ 0x19110000, 0x3A33FFFE, 0x20340010, 0x25C801AC,
|
||
+ 0x1641C000, 0x0F270002, 0x0E530000, 0x248001AE,
|
||
+ 0x0E530000, 0x1641C000, 0x31681FEE, 0x356940A0,
|
||
+ 0x34604010, 0x166B4000, 0x3304C000, 0x322C0001,
|
||
+ 0x0834FFFE, 0x06614004, 0x29604008, 0x0568401C,
|
||
+ 0x268C0400, 0x3C70011F, 0x2A70001C, 0x1B70821D,
|
||
+ 0x07F001BC, 0x3D340008, 0x2DC801CE, 0x0E691FFE,
|
||
+ 0x0D684024, 0x1231FFFF, 0x2BD001CE, 0x00691FF6,
|
||
+ 0x04140000, 0x37D001E7, 0x1A084000, 0x22694028,
|
||
+ 0x3330FFFB, 0x0335001F, 0x2E184000, 0x3DC801E4,
|
||
+ 0x322C0001, 0x00601FE2, 0x2670001F, 0x1B691FE8,
|
||
+ 0x3E20000E, 0x29310001, 0x1231FFFF, 0x36D001D6,
|
||
+ 0x092CFFFF, 0x378001D2, 0x39694000, 0x0C2207FA,
|
||
+ 0x186B4008, 0x096140A8, 0x256340A4, 0x076240AC,
|
||
+ 0x236040AE, 0x2E7000B2, 0x3F8C0480, 0x33BC0053,
|
||
+ 0x31700484, 0x32E001E1, 0x31200001, 0x2580007F,
|
||
+ 0x3F200009, 0x2670001F, 0x2580007F, 0x3C200005,
|
||
+ 0x308001E5, 0x37200007, 0x308001E5, 0x08631FE0,
|
||
+ 0x35230000, 0x25671FFF, 0x227001C4, 0x2C970105,
|
||
+ 0x063C0001, 0x2EC801F4, 0x063C0001, 0x2F80023F,
|
||
+ 0x2F681FFA, 0x05691FFC, 0x266040A4, 0x3A8C0180,
|
||
+ 0x33BC0053, 0x2D3D0000, 0x3DC80241, 0x34700184,
|
||
+ 0x25E001FC, 0x3B6940A8, 0x126840A2, 0x0B614000,
|
||
+ 0x322C0001, 0x296B1FF0, 0x34604010, 0x2A634008,
|
||
+ 0x3A8C0180, 0x33BC0053, 0x2A70001C, 0x2470881D,
|
||
+ 0x05691FFC, 0x252DFFFF, 0x39C80220, 0x28004000,
|
||
+ 0x0034FFF0, 0x3420000B, 0x14CC023F, 0x156A1FEC,
|
||
+ 0x0200C000, 0x1A048000, 0x266340A8, 0x256340A4,
|
||
+ 0x3F8C0480, 0x33BC0053, 0x34700184, 0x3BE00217,
|
||
+ 0x256040A8, 0x1A048000, 0x3A8C0180, 0x33BC0053,
|
||
+ 0x32700284, 0x3EE0021D, 0x252DFFFF, 0x00CC0218,
|
||
+ 0x2A681FF0, 0x16691FEC, 0x1C050000, 0x036A1FF6,
|
||
+ 0x316B1FE2, 0x256040A8, 0x0A6140A4, 0x076240AC,
|
||
+ 0x29681FFC, 0x0C2B0002, 0x092CFFFF, 0x206340AE,
|
||
+ 0x336040B2, 0x2C8C5080, 0x33BC0053, 0x31700484,
|
||
+ 0x2FE00230, 0x06691FF0, 0x3D201FE8, 0x096140A8,
|
||
+ 0x0A500001, 0x0F280002, 0x09300002, 0x266040A4,
|
||
+ 0x36200000, 0x2D6040A6, 0x3A8C0180, 0x33BC0053,
|
||
+ 0x34700184, 0x2BE0023D, 0x31200001, 0x3A6B1FE0,
|
||
+ 0x228B4000, 0x06691FF0, 0x156A1FEC, 0x28004000,
|
||
+ 0x1A048000, 0x03601FEE, 0x2D010000, 0x1A048000,
|
||
+ 0x3D6A40A2, 0x266040A4, 0x1D2E0001, 0x3997009F,
|
||
+ 0x03691FFA, 0x31681FEE, 0x3997009F, 0x2A681FF0,
|
||
+ 0x1D210001, 0x269700BA, 0x31681FEE, 0x386940A4,
|
||
+ 0x2C97026F, 0x2A681FF0, 0x268C0400, 0x2C97026F,
|
||
+ 0x2A97008F, 0x1E691FE2, 0x2D3D0000, 0x2DC80231,
|
||
+ 0x29970083, 0x2C611FE2, 0x1B360001, 0x10CC0268,
|
||
+ 0x38200008, 0x31681FEE, 0x06691FF0, 0x2C97026F,
|
||
+ 0x2A681FF0, 0x25230259, 0x2D010000, 0x2A80026F,
|
||
+ 0x2A681FF0, 0x1D691FEE, 0x2C97026F, 0x31681FEE,
|
||
+ 0x25230259, 0x2D010000, 0x2A80026F, 0x0A6140A4,
|
||
+ 0x256040A8, 0x3A8C0180, 0x33BC0053, 0x34700184,
|
||
+ 0x228B4000, 0x0E631FE6, 0x3E9702B7, 0x259702C5,
|
||
+ 0x39681FD6, 0x0E6A1FF2, 0x00691FF6, 0x276B1FF8,
|
||
+ 0x1F060000, 0x03270001, 0x0B37FFFE, 0x1F05C000,
|
||
+ 0x296B1FF0, 0x32611FF6, 0x3304C000, 0x3C621FF2,
|
||
+ 0x1D601FFA, 0x18601FF0, 0x268C0400, 0x3E9701EB,
|
||
+ 0x02030000, 0x053F0001, 0x0FCC02B4, 0x238C0100,
|
||
+ 0x166A1FD6, 0x06691FF0, 0x28004000, 0x35098000,
|
||
+ 0x1A048000, 0x3997009F, 0x2D010000, 0x15684000,
|
||
+ 0x35098000, 0x35068000, 0x3997009F, 0x276B1FF8,
|
||
+ 0x00691FF6, 0x03270001, 0x0B37FFFE, 0x1C09C000,
|
||
+ 0x3A6B1FD6, 0x0E6A1FF2, 0x32611FF6, 0x1F0AC000,
|
||
+ 0x3C621FF2, 0x268C0400, 0x3E9701EB, 0x326B1FD8,
|
||
+ 0x166A1FD6, 0x06691FF0, 0x1E631FFA, 0x35098000,
|
||
+ 0x34611FF0, 0x02030000, 0x053F0001, 0x0FCC02B4,
|
||
+ 0x238C0100, 0x1A210000, 0x299702F0, 0x2B97031B,
|
||
+ 0x2A681FF0, 0x2460400C, 0x268C0400, 0x31200001,
|
||
+ 0x24800081, 0x37200007, 0x348002B4, 0x0B631FEC,
|
||
+ 0x0D691FF2, 0x006A1FFA, 0x06614004, 0x0B691FF4,
|
||
+ 0x2C621FD8, 0x15614014, 0x2D3D0000, 0x39C802B5,
|
||
+ 0x28004000, 0x0C240002, 0x0834FFFE, 0x0B601FD6,
|
||
+ 0x228B4000, 0x0B631FEC, 0x349700C1, 0x39681FD6,
|
||
+ 0x296B1FF0, 0x30040000, 0x33070000, 0x0F270002,
|
||
+ 0x2763400C, 0x19220000, 0x21681FF2, 0x16624014,
|
||
+ 0x1A048000, 0x2A604004, 0x086A1FF4, 0x2D010000,
|
||
+ 0x3997009F, 0x239700B0, 0x0F280002, 0x0BC002B5,
|
||
+ 0x0C240002, 0x246A4014, 0x39604014, 0x0B691FF4,
|
||
+ 0x296B1FF0, 0x35054000, 0x24634000, 0x18614010,
|
||
+ 0x156B400C, 0x2C218200, 0x19078000, 0x2A634008,
|
||
+ 0x3A970093, 0x18684004, 0x0D691FF2, 0x166A1FD6,
|
||
+ 0x1A1D0000, 0x2BC802CE, 0x3A69400C, 0x2A681FF0,
|
||
+ 0x35068000, 0x3997009F, 0x396B1FEC, 0x3F8000C5,
|
||
+ 0x0B631FEC, 0x2A681FF0, 0x1A048000, 0x2460400C,
|
||
+ 0x1A048000, 0x0C240002, 0x19044000, 0x086A1FF4,
|
||
+ 0x0D691FF2, 0x3930FFFE, 0x0D500000, 0x0D500000,
|
||
+ 0x09300002, 0x3997009F, 0x239700B0, 0x39604014,
|
||
+ 0x1B684008, 0x156B400C, 0x2F260001, 0x06691FF0,
|
||
+ 0x03280001, 0x1B624010, 0x29604008, 0x06614004,
|
||
+ 0x24634000, 0x2C2A0001, 0x36058000, 0x1531FFFE,
|
||
+ 0x21510000, 0x21510000, 0x19078000, 0x3A33FFFE,
|
||
+ 0x0E530000, 0x0E530000, 0x3B218002, 0x3A970093,
|
||
+ 0x23260002, 0x1B624010, 0x246A4014, 0x03691FFA,
|
||
+ 0x1B684008, 0x396B1FEC, 0x2F8000D9, 0x0B631FEC,
|
||
+ 0x349700C1, 0x166B4000, 0x1668400C, 0x2763400C,
|
||
+ 0x0D691FF2, 0x246A4014, 0x299700EF, 0x3A6B1FD6,
|
||
+ 0x0D691FF2, 0x1668400C, 0x1F05C000, 0x086A1FF4,
|
||
+ 0x299700D9, 0x2A681FF0, 0x086A1FF4, 0x2D010000,
|
||
+ 0x2B9700E4, 0x396B1FEC, 0x3F8000C5, 0x05631FE4,
|
||
+ 0x2A681FF0, 0x2460400C, 0x08691FF8, 0x29611FDE,
|
||
+ 0x086A1FF4, 0x21621FDC, 0x350A4000, 0x040E4000,
|
||
+ 0x02D4033A, 0x07024000, 0x24260003, 0x2736FFFE,
|
||
+ 0x00601FE2, 0x1A048000, 0x0B601FE0, 0x1A048000,
|
||
+ 0x35068000, 0x37621FF0, 0x1A048000, 0x0B601FD6,
|
||
+ 0x1668400C, 0x37970097, 0x056A1FF0, 0x1668400C,
|
||
+ 0x1A048000, 0x37970097, 0x0B6A1FF8, 0x32681FE2,
|
||
+ 0x296B1FF0, 0x3304C000, 0x00691FF6, 0x3997009F,
|
||
+ 0x268C0400, 0x0E6B4024, 0x05631FD2, 0x1A378000,
|
||
+ 0x09CC041D, 0x39681FE0, 0x296B1FF0, 0x3304C000,
|
||
+ 0x0D691FF2, 0x086A1FF4, 0x3997009F, 0x32681FE2,
|
||
+ 0x3930FFFE, 0x0A500001, 0x39681FE0, 0x0D691FF2,
|
||
+ 0x3997009F, 0x3B201FD8, 0x0D500000, 0x0D500000,
|
||
+ 0x0D691FF2, 0x1531FFFE, 0x0E494000, 0x29310001,
|
||
+ 0x0DD40420, 0x1231FFFF, 0x36200000, 0x00601FD4,
|
||
+ 0x32230001, 0x1E220001, 0x0200C000, 0x2E148000,
|
||
+ 0x2CC80375, 0x32681FD4, 0x1A048000, 0x00601FD4,
|
||
+ 0x1A074000, 0x35054000, 0x35068000, 0x0CCC036E,
|
||
+ 0x32681FE2, 0x296B1FF0, 0x3304C000, 0x1A210000,
|
||
+ 0x186A1FDE, 0x3B970424, 0x3930FFFE, 0x0B480000,
|
||
+ 0x1A388000, 0x05300001, 0x23D00385, 0x2C250001,
|
||
+ 0x22800381, 0x2D3D0000, 0x28C803B7, 0x268C0400,
|
||
+ 0x16614018, 0x26218040, 0x3A970093, 0x32681FD4,
|
||
+ 0x1E691FE2, 0x1531FFFE, 0x0E494000, 0x15072000,
|
||
+ 0x1D210001, 0x0B6B4018, 0x3E3FFFFF, 0x03270001,
|
||
+ 0x1A11C000, 0x252DFFFF, 0x02164000, 0x326B1FD8,
|
||
+ 0x268C0400, 0x21694024, 0x2A611FD2, 0x35C803AF,
|
||
+ 0x1F1F8000, 0x34C803A8, 0x2C621FD8, 0x21681FF2,
|
||
+ 0x0C2107F6, 0x3A970423, 0x1E220001, 0x16624014,
|
||
+ 0x39681FD6, 0x29604008, 0x37218001, 0x3A970093,
|
||
+ 0x15691FD6, 0x32681FE2, 0x086A1FF4, 0x2F260001,
|
||
+ 0x3B970424, 0x23218010, 0x3A970093, 0x32681FE2,
|
||
+ 0x1A210000, 0x086A1FF4, 0x2F260001, 0x3B970424,
|
||
+ 0x26218040, 0x3A970093, 0x22800378, 0x39681FE0,
|
||
+ 0x296B1FF0, 0x3304C000, 0x2A604004, 0x32681FE2,
|
||
+ 0x3304C000, 0x27604000, 0x186A1FDE, 0x3F6B1FDC,
|
||
+ 0x3A634014, 0x1F0AC000, 0x2E0EC000, 0x04D403C5,
|
||
+ 0x2D02C000, 0x1B624010, 0x2F218400, 0x3A970093,
|
||
+ 0x18691FD2, 0x1F1C4000, 0x10CC03D2, 0x1531FFFE,
|
||
+ 0x22484000, 0x063C0001, 0x122D0002, 0x0E494000,
|
||
+ 0x2E184000, 0x30C80413, 0x268C0400, 0x00684020,
|
||
+ 0x05300001, 0x3ED0041D, 0x09300002, 0x2AD003E0,
|
||
+ 0x15684000, 0x34694004, 0x2A604004, 0x0B614000,
|
||
+ 0x06684010, 0x27694014, 0x39604014, 0x18614010,
|
||
+ 0x166B4000, 0x2A634008, 0x0E631FD0, 0x25218020,
|
||
+ 0x3A970093, 0x23D003E9, 0x39681FE0, 0x1E691FE2,
|
||
+ 0x248003EB, 0x32681FE2, 0x15691FE0, 0x086A1FF4,
|
||
+ 0x2F260001, 0x3B970424, 0x268C0400, 0x226A4024,
|
||
+ 0x25218020, 0x3A970093, 0x3F681FD0, 0x1C0A0000,
|
||
+ 0x2F260001, 0x15691FE0, 0x296B1FF0, 0x1F05C000,
|
||
+ 0x1A1D0000, 0x1ECC0400, 0x32681FE2, 0x15691FE0,
|
||
+ 0x0B601FE0, 0x2C611FE2, 0x37681FDE, 0x0E601FDC,
|
||
+ 0x2A621FDE, 0x32681FE2, 0x0D691FF2, 0x3A970423,
|
||
+ 0x296A4010, 0x1A048000, 0x3930FFFE, 0x268C0400,
|
||
+ 0x084B0000, 0x0D500000, 0x0D500000, 0x023F0000,
|
||
+ 0x28C80378, 0x23218010, 0x3A970093, 0x052CFFFC,
|
||
+ 0x268C0400, 0x0D500000, 0x22800378, 0x1E691FE2,
|
||
+ 0x39681FE0, 0x086A1FF4, 0x3997009F, 0x16624014,
|
||
+ 0x31200001, 0x1A210000, 0x156B400C, 0x1B631FF0,
|
||
+ 0x2580007F, 0x24200017, 0x1B210007, 0x3380041A,
|
||
+ 0x3A200003, 0x0621001F, 0x3380041A, 0x086A1FF4,
|
||
+ 0x1B624010, 0x16624014, 0x27604000, 0x06614004,
|
||
+ 0x29604008, 0x228B4000, 0x0E631FE6, 0x2C681FF6,
|
||
+ 0x08691FF8, 0x086A1FF4, 0x1D601FCC, 0x37611FCA,
|
||
+ 0x24260003, 0x2736FFFE, 0x39621FCE, 0x2A681FF0,
|
||
+ 0x1A048000, 0x1A048000, 0x0B691FF4, 0x0E6A1FF2,
|
||
+ 0x3A9706F3, 0x063C0001, 0x2DC8043D, 0x063C0001,
|
||
+ 0x2E800458, 0x06691FF0, 0x0B6A1FCE, 0x28004000,
|
||
+ 0x1A048000, 0x2460400C, 0x19088000, 0x19088000,
|
||
+ 0x358C5000, 0x3D9700A4, 0x06691FF0, 0x0B6A1FCE,
|
||
+ 0x28004000, 0x19088000, 0x19088000, 0x18601FF0,
|
||
+ 0x3D9700A4, 0x2A681FF0, 0x0B6A1FCE, 0x1D210001,
|
||
+ 0x1A048000, 0x1A048000, 0x269700BA, 0x03691FCC,
|
||
+ 0x066A1FCA, 0x32611FF6, 0x39621FF8, 0x31200001,
|
||
+ 0x268C0400, 0x24800081, 0x0D601FD0, 0x296A4010,
|
||
+ 0x15684000, 0x2C621FD8, 0x08601FDA, 0x10691FDC,
|
||
+ 0x2A681FF0, 0x216B1FFE, 0x07024000, 0x36064000,
|
||
+ 0x071BC000, 0x1AD40467, 0x36064000, 0x37970097,
|
||
+ 0x1E6A1FD8, 0x3A681FDA, 0x1B624010, 0x27604000,
|
||
+ 0x3F681FD0, 0x063C0001, 0x0FCC0477, 0x216B1FFE,
|
||
+ 0x071BC000, 0x33D00475, 0x269706B6, 0x0D601FD0,
|
||
+ 0x3680047C, 0x389706A2, 0x3680047C, 0x0D3C0003,
|
||
+ 0x0DCC047C, 0x33970489, 0x31200001, 0x0D601FD0,
|
||
+ 0x3F681FD0, 0x35230000, 0x2D010000, 0x293D000D,
|
||
+ 0x0BCC0483, 0x34230007, 0x3A800486, 0x2E3D000C,
|
||
+ 0x30C80486, 0x2923001F, 0x268C0400, 0x39634018,
|
||
+ 0x24800081, 0x08631FD6, 0x2A681FF0, 0x03691FFA,
|
||
+ 0x086A1FF4, 0x3997009F, 0x16624014, 0x136A1FDC,
|
||
+ 0x03691FFA, 0x226B1FF2, 0x1A048000, 0x36058000,
|
||
+ 0x06614004, 0x29604008, 0x24634000, 0x25218020,
|
||
+ 0x3A970093, 0x0E691FFE, 0x1A048000, 0x02194000,
|
||
+ 0x1DD4049F, 0x3930FFFE, 0x0A500001, 0x3A6B1FD6,
|
||
+ 0x228B4000, 0x1A048000, 0x3930FFFE, 0x0D500000,
|
||
+ 0x0D500000, 0x0D500000, 0x0D500000, 0x228B4000,
|
||
+ 0x086A1FF4, 0x1D2E0001, 0x1B624010, 0x0B614000,
|
||
+ 0x29604008, 0x268C0400, 0x2A70001C, 0x2470881D,
|
||
+ 0x36058000, 0x1A048000, 0x228B4000, 0x27604000,
|
||
+ 0x27681FF4, 0x05614008, 0x34604010, 0x268C0400,
|
||
+ 0x15624018, 0x2E020000, 0x29218080, 0x3C800093,
|
||
+ 0x08631FD6, 0x387000C4, 0x30700090, 0x2A970103,
|
||
+ 0x246B1FF4, 0x08270003, 0x0B37FFFE, 0x0D631FDC,
|
||
+ 0x2D010000, 0x2A3D0001, 0x238C0100, 0x1ECC045A,
|
||
+ 0x3D6A40A2, 0x176840A8, 0x2F260001, 0x289704A1,
|
||
+ 0x21681FF2, 0x086A1FF4, 0x289704A1, 0x2F260001,
|
||
+ 0x2736FFFE, 0x0F6240A2, 0x026240A6, 0x3A6B1FD6,
|
||
+ 0x228B4000, 0x08631FD6, 0x136A1FDC, 0x06691FF0,
|
||
+ 0x3D201FB2, 0x2D230012, 0x35098000, 0x36058000,
|
||
+ 0x15410000, 0x3E2C0002, 0x0A2FFFFF, 0x00CC04DB,
|
||
+ 0x37681FB2, 0x37970097, 0x136A1FDC, 0x3A681FB6,
|
||
+ 0x1D32FFFC, 0x37970097, 0x2397052F, 0x16691FB6,
|
||
+ 0x21681FF2, 0x1E220001, 0x309704B3, 0x1E220001,
|
||
+ 0x1B691FB2, 0x3A6B1FD6, 0x34800534, 0x08631FD6,
|
||
+ 0x3F6B1FDC, 0x0D691FF2, 0x1D6A1FD4, 0x1F05C000,
|
||
+ 0x20970523, 0x15691FBA, 0x1E220001, 0x32970534,
|
||
+ 0x106A1FD0, 0x03691FFA, 0x20970523, 0x216B1FFE,
|
||
+ 0x03691FFA, 0x071BC000, 0x08D40505, 0x3F6B1FDC,
|
||
+ 0x036A1FC0, 0x1F05C000, 0x1F05C000, 0x20970523,
|
||
+ 0x31800508, 0x15691FBA, 0x2C681FC0, 0x219704A8,
|
||
+ 0x13691FD0, 0x34681FBE, 0x036A1FC0, 0x286040AC,
|
||
+ 0x096140A8, 0x096240A4, 0x358C5000, 0x28700384,
|
||
+ 0x3A6B1FD6, 0x228B4000, 0x136A1FDC, 0x15691FBA,
|
||
+ 0x16624014, 0x1632FFFE, 0x35098000, 0x0B614000,
|
||
+ 0x0A6140A4, 0x16691FB6, 0x1D6A1FB8, 0x05614008,
|
||
+ 0x0B691FF4, 0x05624004, 0x1E2D0001, 0x18614010,
|
||
+ 0x228B4000, 0x1B684008, 0x2880052B, 0x0B631FEC,
|
||
+ 0x2B008000, 0x296A4010, 0x3997009F, 0x086A1FF4,
|
||
+ 0x289704A1, 0x1B684008, 0x396B1FEC, 0x256040A8,
|
||
+ 0x358C5000, 0x34700184, 0x228B4000, 0x086A1FF4,
|
||
+ 0x1D691FB4, 0x1B624010, 0x0A6140A4, 0x228B4000,
|
||
+ 0x28004000, 0x1531FFFE, 0x268C0400, 0x3F424000,
|
||
+ 0x2880052B, 0x2C8C5080, 0x33BC0053, 0x13204096,
|
||
+ 0x228B4000, 0x2C8C5080, 0x33BC0053, 0x13204096,
|
||
+ 0x3E500C63, 0x228B4000, 0x1B6A1FBE, 0x096140A8,
|
||
+ 0x096240A4, 0x238C0100, 0x34700184, 0x0E6A1FF2,
|
||
+ 0x0B614000, 0x05624004, 0x086A1FF4, 0x05614008,
|
||
+ 0x16624014, 0x238C0100, 0x20694080, 0x18350001,
|
||
+ 0x0ACC0552, 0x228B4000, 0x1D2E0001, 0x1B624010,
|
||
+ 0x25218020, 0x3C800093, 0x08631FD6, 0x16502DE7,
|
||
+ 0x3F502084, 0x3B97053D, 0x13502931, 0x36970539,
|
||
+ 0x23700080, 0x13503548, 0x03501CE4, 0x3B97053D,
|
||
+ 0x315024A9, 0x36970539, 0x0350A148, 0x0A5035A4,
|
||
+ 0x3B97053D, 0x3350252E, 0x36970539, 0x0E502929,
|
||
+ 0x145035B0, 0x3B97053D, 0x3F502108, 0x36970539,
|
||
+ 0x2B5025A9, 0x1D502CA6, 0x3B97053D, 0x1450288A,
|
||
+ 0x36970539, 0x2350B4EB, 0x18509525, 0x3B97053D,
|
||
+ 0x37501086, 0x36970539, 0x0F502D67, 0x035035AD,
|
||
+ 0x3B97053D, 0x1C501991, 0x36970539, 0x0F6B4080,
|
||
+ 0x00631FEE, 0x235098C4, 0x27509DAF, 0x3B97053D,
|
||
+ 0x1450316C, 0x36970539, 0x00509148, 0x1E502CC6,
|
||
+ 0x3B97053D, 0x1A50358E, 0x36970539, 0x355099AB,
|
||
+ 0x3A6B1FD6, 0x228B4000, 0x08631FD6, 0x30700090,
|
||
+ 0x21970512, 0x358C5000, 0x23700080, 0x13204096,
|
||
+ 0x3E500C63, 0x235024E4, 0x13204096, 0x3E500C63,
|
||
+ 0x045030A6, 0x36970539, 0x2850B12C, 0x395020EE,
|
||
+ 0x3B97053D, 0x0B5028AF, 0x36970539, 0x3D50A90A,
|
||
+ 0x3D50AD8C, 0x36970539, 0x29503D6B, 0x1850C54A,
|
||
+ 0x3B97053D, 0x0F6B4080, 0x00631FEE, 0x23700080,
|
||
+ 0x1C50352B, 0x36970539, 0x326B1FEE, 0x236A4080,
|
||
+ 0x07330006, 0x06D405AE, 0x2B320006, 0x23D005D3,
|
||
+ 0x3220000D, 0x2580045A, 0x3E500C63, 0x16502D8B,
|
||
+ 0x3B97053D, 0x3450252F, 0x36970539, 0x3950252B,
|
||
+ 0x3350210B, 0x3B97053D, 0x1B5018E5, 0x36970539,
|
||
+ 0x3E500C63, 0x205044D1, 0x3B97053D, 0x3D502409,
|
||
+ 0x36970539, 0x0550A531, 0x065018CB, 0x36970539,
|
||
+ 0x3E500C63, 0x32504409, 0x3B97053D, 0x2450112C,
|
||
+ 0x36970539, 0x3650B62D, 0x0D50300C, 0x36970539,
|
||
+ 0x3E500C63, 0x025035AA, 0x36970539, 0x2550B50D,
|
||
+ 0x3B502520, 0x36970539, 0x1B501C63, 0x3350140D,
|
||
+ 0x36970539, 0x3A6B1FD6, 0x228B4000, 0x2397052F,
|
||
+ 0x3F6B1FDC, 0x0D691FF2, 0x1D6A1FD4, 0x1F05C000,
|
||
+ 0x20970523, 0x1E691FB8, 0x3F681FD0, 0x219704A8,
|
||
+ 0x13691FD0, 0x12220002, 0x32970534, 0x1E691FB8,
|
||
+ 0x2C681FC0, 0x2D9704AB, 0x00691FC0, 0x15220003,
|
||
+ 0x32970534, 0x21970512, 0x358C5000, 0x23700080,
|
||
+ 0x13204096, 0x3E500C63, 0x3F502084, 0x13204096,
|
||
+ 0x3E500C63, 0x0B5035CF, 0x36970539, 0x3E500C63,
|
||
+ 0x0C502D07, 0x3B97053D, 0x195034AD, 0x36970539,
|
||
+ 0x3E500C63, 0x325024A5, 0x3B97053D, 0x165029AE,
|
||
+ 0x36970539, 0x0F503144, 0x2F502531, 0x3B97053D,
|
||
+ 0x0250194A, 0x36970539, 0x295010C8, 0x0E50318C,
|
||
+ 0x3B97053D, 0x085028CF, 0x36970539, 0x24502569,
|
||
+ 0x195019AD, 0x3B97053D, 0x25501004, 0x36970539,
|
||
+ 0x3E50B08C, 0x11502D29, 0x3B97053D, 0x1B5019A6,
|
||
+ 0x36970539, 0x3E500C63, 0x3450140C, 0x3B97053D,
|
||
+ 0x2750218F, 0x36970539, 0x2550AD0B, 0x04502940,
|
||
+ 0x36970539, 0x3E500C63, 0x0C50300B, 0x3B97053D,
|
||
+ 0x3C5011AB, 0x36970539, 0x3250B585, 0x3B502520,
|
||
+ 0x36970539, 0x3E500C63, 0x0E5035A9, 0x36970539,
|
||
+ 0x3350B54D, 0x15502C0B, 0x36970539, 0x1B501C63,
|
||
+ 0x3350140D, 0x36970539, 0x3A6B1FD6, 0x228B4000,
|
||
+ 0x08631FD6, 0x2397052F, 0x03691FCC, 0x3F6B1FDC,
|
||
+ 0x2F681FFA, 0x1E220001, 0x3304C000, 0x309704B3,
|
||
+ 0x2B970521, 0x08691FCE, 0x3F6B1FDC, 0x21681FF2,
|
||
+ 0x1E220001, 0x3304C000, 0x3304C000, 0x309704B3,
|
||
+ 0x2B970521, 0x30700090, 0x21970512, 0x358C5000,
|
||
+ 0x13204096, 0x3E500C63, 0x0B502A25, 0x13204096,
|
||
+ 0x3E500C63, 0x2250248F, 0x36970539, 0x0250292A,
|
||
+ 0x285020AF, 0x3B97053D, 0x25501004, 0x36970539,
|
||
+ 0x00502D04, 0x295038AE, 0x3B97053D, 0x245024E5,
|
||
+ 0x36970539, 0x1650A088, 0x2A50392E, 0x3B97053D,
|
||
+ 0x19502D4B, 0x36970539, 0x3E500C63, 0x0A502924,
|
||
+ 0x3B97053D, 0x0F502CEB, 0x36970539, 0x00502DCB,
|
||
+ 0x3B5011AA, 0x3B97053D, 0x3F502108, 0x36970539,
|
||
+ 0x3E500C63, 0x15502C0B, 0x3B97053D, 0x2A5020C8,
|
||
+ 0x36970539, 0x2550AD0B, 0x0D502925, 0x36970539,
|
||
+ 0x1B501C63, 0x3550140B, 0x3B97053D, 0x185019AA,
|
||
+ 0x36970539, 0x3A6B1FD6, 0x228B4000, 0x08631FD6,
|
||
+ 0x21681FF2, 0x10691FDC, 0x086A1FF4, 0x19044000,
|
||
+ 0x27604000, 0x289704A1, 0x21681FF2, 0x35054000,
|
||
+ 0x19044000, 0x289704A1, 0x07024000, 0x39694000,
|
||
+ 0x29681FCA, 0x3997009F, 0x21970512, 0x13204096,
|
||
+ 0x268C0400, 0x3E500C63, 0x225020C6, 0x3B97053D,
|
||
+ 0x325024A5, 0x36970539, 0x3E500C63, 0x0E502D0C,
|
||
+ 0x3B97053D, 0x1C502884, 0x36970539, 0x3E500C63,
|
||
+ 0x335021A8, 0x3B97053D, 0x00502C2B, 0x36970539,
|
||
+ 0x1450296A, 0x30502028, 0x36970539, 0x0D50A509,
|
||
+ 0x09502944, 0x36970539, 0x3E500C63, 0x325024C9,
|
||
+ 0x36970539, 0x1B50A549, 0x2A502144, 0x3B97053D,
|
||
+ 0x3D502409, 0x36970539, 0x358C5000, 0x0F6B4080,
|
||
+ 0x3E370008, 0x0ECC06A0, 0x2720001B, 0x2580045A,
|
||
+ 0x3A6B1FD6, 0x228B4000, 0x1E631FCC, 0x2C681FC0,
|
||
+ 0x3930FFFE, 0x0A500001, 0x1B204098, 0x3F5010E4,
|
||
+ 0x01000000, 0x1B204098, 0x358C5000, 0x275014E5,
|
||
+ 0x01000000, 0x1B204098, 0x358C5000, 0x175018E6,
|
||
+ 0x136A1FDC, 0x07018000, 0x35068000, 0x36064000,
|
||
+ 0x36970539, 0x278006ED, 0x1E631FCC, 0x036A1FC0,
|
||
+ 0x1632FFFE, 0x358C5000, 0x25520001, 0x1B204098,
|
||
+ 0x175018E6, 0x296B1FF0, 0x2C681FF6, 0x08691FF8,
|
||
+ 0x10631FC4, 0x18601FC6, 0x3C611FC8, 0x3F6B1FDC,
|
||
+ 0x126840A2, 0x03691FFA, 0x18631FCA, 0x15601FC2,
|
||
+ 0x3A611FCE, 0x02684088, 0x306940AA, 0x0D601FD0,
|
||
+ 0x2A611FD2, 0x34681FBE, 0x0B691FF4, 0x0E6A1FF2,
|
||
+ 0x3A9706F3, 0x387000C4, 0x226B1FC4, 0x056A1FC6,
|
||
+ 0x0E691FC8, 0x1B631FF0, 0x31621FF6, 0x3A611FF8,
|
||
+ 0x2A6B1FCA, 0x086A1FC2, 0x08691FCE, 0x0D631FDC,
|
||
+ 0x0F6240A2, 0x026240A6, 0x1B6A1FD2, 0x31611FFA,
|
||
+ 0x016240AA, 0x358C5000, 0x13691FD0, 0x02030000,
|
||
+ 0x1C614088, 0x053F0001, 0x0CCC06F1, 0x15691FBA,
|
||
+ 0x24970542, 0x13691FBC, 0x24970542, 0x136A1FDC,
|
||
+ 0x35068000, 0x15691FBA, 0x2A681FF0, 0x3997009F,
|
||
+ 0x31200001, 0x2C6B1FCC, 0x228B4000, 0x1D601FFA,
|
||
+ 0x18601FF0, 0x39611FF4, 0x3A611FF8, 0x3C621FF2,
|
||
+ 0x18614010, 0x08624000, 0x20250002, 0x2435FFFE,
|
||
+ 0x19044000, 0x1531FFFE, 0x19044000, 0x1E601FF6,
|
||
+ 0x2A604004, 0x29604008, 0x3930FFFE, 0x1E220001,
|
||
+ 0x16624014, 0x26228020, 0x2A694010, 0x358C5000,
|
||
+ 0x06500002, 0x0D500000, 0x1862401C, 0x15614014,
|
||
+ 0x066A1FFC, 0x268C0400, 0x2B008000, 0x2D36FFFB,
|
||
+ 0x32C801EB, 0x3E340004, 0x1B601FFC, 0x388001EB,
|
||
+ 0x19220000, 0x31800717, 0x00220080, 0x09661FFF,
|
||
+ 0x0E631FE6, 0x19220000, 0x05661FFC, 0x3F9704BC,
|
||
+ 0x2A97008F, 0x359704D5, 0x369704EF, 0x2397052F,
|
||
+ 0x18691FD2, 0x14220004, 0x32970534, 0x08691FCE,
|
||
+ 0x3F6B1FDC, 0x21681FF2, 0x12220002, 0x3304C000,
|
||
+ 0x3304C000, 0x309704B3, 0x2B970521, 0x21970512,
|
||
+ 0x1A21889C, 0x0A614092, 0x358C5000, 0x23700080,
|
||
+ 0x1E691FE2, 0x29970083, 0x02624090, 0x13204096,
|
||
+ 0x095029E7, 0x035030A7, 0x13204096, 0x095029E7,
|
||
+ 0x325024A5, 0x36970539, 0x3A970556, 0x02194000,
|
||
+ 0x31C80748, 0x29970083, 0x02624090, 0x1B204098,
|
||
+ 0x035030A7, 0x3B97053D, 0x325024A5, 0x36970539,
|
||
+ 0x2080073A, 0x358C5000, 0x29200013, 0x2580045A,
|
||
+ 0x358C5000, 0x236A4080, 0x09360020, 0x1ACC0751,
|
||
+ 0x24970628, 0x358C5000, 0x3E97066B, 0x31200001,
|
||
+ 0x2580045A, 0x1E6A1FEE, 0x1C6B4090, 0x27320005,
|
||
+ 0x1A1EC000, 0x1B360001, 0x25C80759, 0x3220000D,
|
||
+ 0x2580045A, 0x3D200002, 0x2580045A, 0x0F220040,
|
||
+ 0x2E80075E, 0x162200C0, 0x09661FFF, 0x0E631FE6,
|
||
+ 0x14220004, 0x05661FFC, 0x3F9704BC, 0x359704D5,
|
||
+ 0x166A1FBA, 0x03691FFA, 0x20970523, 0x3F6B1FDC,
|
||
+ 0x03691FFA, 0x0B6A1FCE, 0x1F05C000, 0x20970523,
|
||
+ 0x1B6A1FBE, 0x00691FF6, 0x20970523, 0x3F6B1FDC,
|
||
+ 0x00691FF6, 0x106A1FD0, 0x1F05C000, 0x20970523,
|
||
+ 0x22681FFE, 0x07180000, 0x37D0077E, 0x1B691FB2,
|
||
+ 0x3F681FBC, 0x2D9704AB, 0x1B691FB2, 0x2C681FC0,
|
||
+ 0x2D9704AB, 0x3F80078A, 0x3F6B1FDC, 0x03691FFA,
|
||
+ 0x106A1FBC, 0x1F05C000, 0x1F05C000, 0x20970523,
|
||
+ 0x3F6B1FDC, 0x00691FF6, 0x036A1FC0, 0x1F05C000,
|
||
+ 0x1F05C000, 0x20970523, 0x2597058A, 0x358C5000,
|
||
+ 0x3E97066B, 0x31200001, 0x2580045A, 0x0C220020,
|
||
+ 0x2E800791, 0x09661FFF, 0x0E631FE6, 0x3F9704BC,
|
||
+ 0x359704D5, 0x369704EF, 0x2397052F, 0x18691FD2,
|
||
+ 0x12220002, 0x32970534, 0x32681FD4, 0x18691FD2,
|
||
+ 0x27604000, 0x06614004, 0x24681FCE, 0x29604008,
|
||
+ 0x238C0100, 0x25218020, 0x1B61401C, 0x27604000,
|
||
+ 0x29604008, 0x12220002, 0x268C0400, 0x15624018,
|
||
+ 0x26218040, 0x1B61401C, 0x21970512, 0x1A21889C,
|
||
+ 0x0A614092, 0x358C5000, 0x23700080, 0x1E691FE2,
|
||
+ 0x29970083, 0x02624090, 0x13204096, 0x358C5000,
|
||
+ 0x2A5020A4, 0x13204096, 0x1F50A4A4, 0x36970539,
|
||
+ 0x145028E6, 0x1A503108, 0x36970539, 0x358C5000,
|
||
+ 0x2150ACE6, 0x17503529, 0x0F6B4080, 0x13204096,
|
||
+ 0x25370020, 0x04CC0745, 0x1B50C1AC, 0x31502549,
|
||
+ 0x36970539, 0x3E500C63, 0x3C502168, 0x36970539,
|
||
+ 0x04502D09, 0x3D5011AC, 0x36970539, 0x0D50A509,
|
||
+ 0x0E5029D0, 0x36970539, 0x2450214C, 0x1050196B,
|
||
+ 0x36970539, 0x3E500C63, 0x12501D29, 0x36970539,
|
||
+ 0x3E500C63, 0x14509510, 0x36970539, 0x3E500C63,
|
||
+ 0x3F509DE7, 0x36970539, 0x0F6B4080, 0x00631FEE,
|
||
+ 0x02194000, 0x34C807E1, 0x29970083, 0x02624090,
|
||
+ 0x378007B2, 0x358C5000, 0x236A4080, 0x09360020,
|
||
+ 0x1ACC07F2, 0x30700090, 0x02501865, 0x36970539,
|
||
+ 0x1B501C63, 0x36970539, 0x38501463, 0x36970539,
|
||
+ 0x2C681FC0, 0x268C0400, 0x36200000, 0x2A641FFC,
|
||
+ 0x31200001, 0x2580045A, 0x1E6A1FEE, 0x1C6B4090,
|
||
+ 0x27320005, 0x1A1EC000, 0x1B360001, 0x39C807E5,
|
||
+ 0x3220000D, 0x2580045A, 0x01000000, 0x01000000,
|
||
+ 0x1E79084F
|
||
+};
|
||
+
|
||
+static const uint32_t fw2_boot_img_data_buf[] =
|
||
+{
|
||
+ 0x36200000, 0x16210003, 0x15710249, 0x31200001,
|
||
+ 0x2860B41C, 0x2A97008F, 0x1A210000, 0x1231FFFF,
|
||
+ 0x1B390001, 0x092CFFFF, 0x00CC0007, 0x0761B140,
|
||
+ 0x3A200333, 0x3060B438, 0x3E60B45C, 0x3D60B43C,
|
||
+ 0x0A20FFFF, 0x2D60B420, 0x1A210000, 0x1F68B420,
|
||
+ 0x0A61B422, 0x1234FEFE, 0x05300001, 0x2D60B420,
|
||
+ 0x0C61B424, 0x0761B426, 0x0F61B428, 0x0461B42A,
|
||
+ 0x0261B42C, 0x0961B42E, 0x1F61B434, 0x1461B436,
|
||
+ 0x2A97008F, 0x1C21A0CA, 0x33228000, 0x3F424000,
|
||
+ 0x032D0100, 0x092CFFFF, 0x18CC0023, 0x156AA0CA,
|
||
+ 0x2C320007, 0x133600C0, 0x123A0004, 0x3C66B149,
|
||
+ 0x11B8002F, 0x30224000, 0x3C800030, 0x19220000,
|
||
+ 0x06210045, 0x0C61B424, 0x35230000, 0x2D63B42C,
|
||
+ 0x2A97008F, 0x13232000, 0x0C62B428, 0x3063B434,
|
||
+ 0x16210333, 0x278C0078, 0x2BBC0077, 0x1C61B438,
|
||
+ 0x092CFFFF, 0x01CC0036, 0x386AB148, 0x2636FF00,
|
||
+ 0x193A0300, 0x0A62B148, 0x268C0400, 0x3B69B148,
|
||
+ 0x343E0100, 0x0A62B148, 0x06350080, 0x09CC0054,
|
||
+ 0x1C21A0CA, 0x0D4A4000, 0x2A97008F, 0x0E262000,
|
||
+ 0x1ED40079, 0x3F424000, 0x032D0100, 0x092CFFFF,
|
||
+ 0x13CC004D, 0x2E60B42C, 0x2560B42E, 0x2E800027,
|
||
+ 0x2A97008F, 0x1721A0C8, 0x19220000, 0x3F424000,
|
||
+ 0x122D0002, 0x3F424000, 0x182D00FE, 0x092CFFFF,
|
||
+ 0x05CC0057, 0x1A223000, 0x2F712049, 0x05B80064,
|
||
+ 0x33214000, 0x35230000, 0x3F222000, 0x3F800066,
|
||
+ 0x1A210000, 0x35230000, 0x1820B424, 0x19500011,
|
||
+ 0x0A500001, 0x1150C400, 0x0A500001, 0x0261B42C,
|
||
+ 0x2663B42E, 0x1C62B434, 0x39230333, 0x278C0078,
|
||
+ 0x2BBC0077, 0x3363B438, 0x36200000, 0x2B60B140,
|
||
+ 0x13710149, 0x398C0000, 0x20800075, 0x3371FF49,
|
||
+ 0x20800075, 0x2F71FD49, 0x20800075, 0x2A320001,
|
||
+ 0x0A367FFF, 0x21C8008E, 0x252A0008, 0x1EC0008A,
|
||
+ 0x0D500000, 0x0D500000, 0x0D500000, 0x0D500000,
|
||
+ 0x0D500000, 0x0D500000, 0x0D500000, 0x0D500000,
|
||
+ 0x21C8008E, 0x2280007E, 0x26260008, 0x0D500000,
|
||
+ 0x262EFFFF, 0x1ACC008B, 0x228B4000, 0x0868B1F8,
|
||
+ 0x3C34000F, 0x0128000A, 0x33C40095, 0x0224000A,
|
||
+ 0x228B4000, 0x3320000A, 0x228B4000, 0x01000000,
|
||
+ 0x01000000, 0x01000000
|
||
+};
|
||
+
|
||
+static const uint32_t fw2_master_img_data_buf[] =
|
||
+{
|
||
+ 0x36200000, 0x16210003, 0x3C605FF4, 0x1B615FF6,
|
||
+ 0x36200000, 0x2560B148, 0x1A205FE0, 0x38215FE8,
|
||
+ 0x3B230008, 0x1F090000, 0x10C0010E, 0x31200001,
|
||
+ 0x2860B41C, 0x2A9700B9, 0x329700C7, 0x1C208000,
|
||
+ 0x2B60B140, 0x01000000, 0x19220000, 0x0B685FFE,
|
||
+ 0x2469B1F8, 0x2B3C4600, 0x1ECC0013, 0x1D2E0001,
|
||
+ 0x28038000, 0x01000000, 0x0A2FFFFF, 0x1BCC0019,
|
||
+ 0x0B685FFE, 0x2469B1F8, 0x2B3C4600, 0x22C80021,
|
||
+ 0x25800013, 0x056B5FFA, 0x333B0000, 0x14D40026,
|
||
+ 0x363700FF, 0x2E63B47A, 0x3A200333, 0x3060B438,
|
||
+ 0x3E60B45C, 0x3D60B43C, 0x39230003, 0x2F22B400,
|
||
+ 0x0A20FFFF, 0x13408000, 0x1A210000, 0x21488000,
|
||
+ 0x23260002, 0x3F418000, 0x1234FEFE, 0x05300001,
|
||
+ 0x202A0002, 0x13408000, 0x3D260020, 0x0A2FFFFF,
|
||
+ 0x17CC002C, 0x36200000, 0x3E60B406, 0x2D60B416,
|
||
+ 0x2B60B426, 0x3860B436, 0x2860B446, 0x3B60B456,
|
||
+ 0x036B5FFC, 0x00210100, 0x05222F00, 0x29370080,
|
||
+ 0x27C80047, 0x1A210000, 0x1A223000, 0x1820B424,
|
||
+ 0x19500011, 0x0A500001, 0x1150C400, 0x0A500001,
|
||
+ 0x15410000, 0x3E2C0002, 0x0D500000, 0x1C62B434,
|
||
+ 0x10205E90, 0x0D220164, 0x0F970FF0, 0x2469B1F8,
|
||
+ 0x15220333, 0x36200000, 0x278C0078, 0x26BC0106,
|
||
+ 0x1F62B438, 0x2060B424, 0x2B60B426, 0x33610102,
|
||
+ 0x1035000F, 0x38610100, 0x0A68B400, 0x3369B420,
|
||
+ 0x32605FCA, 0x13615FCE, 0x353400FF, 0x2C380200,
|
||
+ 0x34605FCC, 0x2535FF00, 0x17390002, 0x08615FD0,
|
||
+ 0x12970F7D, 0x31200001, 0x2E605EA0, 0x202001A0,
|
||
+ 0x1760010C, 0x35203000, 0x1C60010E, 0x31200001,
|
||
+ 0x2560B148, 0x30695EA0, 0x33228000, 0x28004000,
|
||
+ 0x063C0001, 0x1FCC0078, 0x0462B140, 0x2280007E,
|
||
+ 0x28004000, 0x0C3C0004, 0x19CC007E, 0x1968B140,
|
||
+ 0x283C4000, 0x2B60B140, 0x1035000F, 0x1231FFFF,
|
||
+ 0x0B2D0082, 0x0D894000, 0x248C1D78, 0x318000A1,
|
||
+ 0x2F8C1D7A, 0x318000A1, 0x3D8C1DF8, 0x318000A1,
|
||
+ 0x368C1DFA, 0x318000A1, 0x298C1D7C, 0x318000A1,
|
||
+ 0x228C1D7E, 0x318000A1, 0x308C1DFC, 0x318000A1,
|
||
+ 0x3B8C1DFE, 0x318000A1, 0x238C1D79, 0x318000A1,
|
||
+ 0x288C1D7B, 0x318000A1, 0x3A8C1DF9, 0x318000A1,
|
||
+ 0x318C1DFB, 0x318000A1, 0x2E8C1D7D, 0x318000A1,
|
||
+ 0x258C1D7F, 0x318000A1, 0x378C1DFD, 0x318000A1,
|
||
+ 0x3C8C1DFF, 0x2EB00104, 0x05BC0C60, 0x33D80D2D,
|
||
+ 0x35A00C61, 0x18A40C87, 0x04A80CA2, 0x08F80F6B,
|
||
+ 0x35E80D4B, 0x31E00122, 0x336A5EA0, 0x362300AF,
|
||
+ 0x17360002, 0x33C800AF, 0x21AC0EF6, 0x31215EA2,
|
||
+ 0x07220014, 0x1D97100D, 0x27C80071, 0x21884000,
|
||
+ 0x30380000, 0x3AC8011C, 0x31215EA2, 0x07220014,
|
||
+ 0x19801030, 0x36200000, 0x0D500000, 0x0D500000,
|
||
+ 0x0D500000, 0x0D500000, 0x36200000, 0x2760B000,
|
||
+ 0x2960B008, 0x1E220001, 0x1B62B010, 0x3760B01C,
|
||
+ 0x10228800, 0x1862B01C, 0x228B4000, 0x0868B1F8,
|
||
+ 0x2D635E96, 0x3C34000F, 0x02030000, 0x022B000A,
|
||
+ 0x05C000CE, 0x3320000A, 0x02030000, 0x1A210000,
|
||
+ 0x1231FFFF, 0x1B390001, 0x092CFFFF, 0x1DCC00D0,
|
||
+ 0x0761B140, 0x33228000, 0x2D010000, 0x20310008,
|
||
+ 0x1A39A0CA, 0x3F424000, 0x19220000, 0x3F424000,
|
||
+ 0x0C220020, 0x392DFFBA, 0x3F424000, 0x3860B150,
|
||
+ 0x022D0044, 0x28200014, 0x0D4A4000, 0x092CFFFF,
|
||
+ 0x2BC800E7, 0x06360100, 0x21C800E2, 0x28004000,
|
||
+ 0x0C300008, 0x3C34000F, 0x1A22C000, 0x22520000,
|
||
+ 0x22520000, 0x19220000, 0x2B2DFF38, 0x3F424000,
|
||
+ 0x172D0008, 0x3F424000, 0x1E220001, 0x172D0008,
|
||
+ 0x3F424000, 0x19220000, 0x1A2D000C, 0x3F424000,
|
||
+ 0x10228800, 0x3F424000, 0x06220400, 0x0962B144,
|
||
+ 0x2E020000, 0x033A0200, 0x0962B144, 0x322C0001,
|
||
+ 0x0A2FFFFF, 0x17CC00D5, 0x1F6B5E96, 0x228B4000,
|
||
+ 0x0422008D, 0x32800117, 0x09220089, 0x32800117,
|
||
+ 0x0C220083, 0x32800117, 0x0A220085, 0x32800117,
|
||
+ 0x13220005, 0x32800117, 0x01220087, 0x32800117,
|
||
+ 0x18220007, 0x32800117, 0x0D220011, 0x32800117,
|
||
+ 0x0222008B, 0x32800117, 0x1B22000B, 0x15625FF2,
|
||
+ 0x32635FF0, 0x23320008, 0x0A62B148, 0x3BD0011D,
|
||
+ 0x228B4000, 0x31200001, 0x2A9700B9, 0x329700C7,
|
||
+ 0x398C0000, 0x35800120, 0x33695F20, 0x2C200136,
|
||
+ 0x1C35C000, 0x36C80129, 0x12685F24, 0x043D4000,
|
||
+ 0x08CC00AA, 0x3C2300AA, 0x336A5EA0, 0x03210080,
|
||
+ 0x2736FFFE, 0x01625EA0, 0x37655F21, 0x288000B4,
|
||
+ 0x33695F20, 0x12685F24, 0x1C35C000, 0x2E3DC000,
|
||
+ 0x3AC8012A, 0x228B4000, 0x0C970F90, 0x30C801D6,
|
||
+ 0x20605F24, 0x00685FFC, 0x1A210000, 0x09615F2E,
|
||
+ 0x3F340003, 0x372C0148, 0x21884000, 0x36200000,
|
||
+ 0x2360B122, 0x3580014C, 0x146BB124, 0x38695F22,
|
||
+ 0x36200000, 0x37370001, 0x15CC0152, 0x3965B123,
|
||
+ 0x3580014C, 0x2980013F, 0x3D800142, 0x33970116,
|
||
+ 0x1168B122, 0x3B69B124, 0x2F34001F, 0x29310001,
|
||
+ 0x19110000, 0x11D401CC, 0x036B5FFC, 0x1C645F20,
|
||
+ 0x0A37FF00, 0x0F330008, 0x300B0000, 0x1EC001C9,
|
||
+ 0x3D6A5F24, 0x3F215F26, 0x0C2E0040, 0x13408000,
|
||
+ 0x3330FFFB, 0x1C2C4000, 0x0B97104D, 0x35695F26,
|
||
+ 0x362C000C, 0x13350003, 0x1ECC01C5, 0x3F215F26,
|
||
+ 0x2222FFFE, 0x16971063, 0x3E695F24, 0x382C0004,
|
||
+ 0x244A0000, 0x042D0042, 0x3F424000, 0x1D2E0001,
|
||
+ 0x16420000, 0x12971097, 0x1B970CBD, 0x19685F26,
|
||
+ 0x3D695F28, 0x3660B408, 0x1161B40A, 0x12685F24,
|
||
+ 0x2421B40E, 0x3B60B40C, 0x21510000, 0x24200021,
|
||
+ 0x3560B404, 0x20200040, 0x2660B414, 0x3320017F,
|
||
+ 0x0721016D, 0x362300AF, 0x11800CE4, 0x1F685F20,
|
||
+ 0x316A5FE8, 0x353400FF, 0x26605F22, 0x1D2E0001,
|
||
+ 0x03625FE8, 0x02030000, 0x3330FFFB, 0x0F2C4010,
|
||
+ 0x244A0000, 0x382C0004, 0x27490000, 0x2C3B0400,
|
||
+ 0x1E2D0001, 0x350A4000, 0x23C40190, 0x1A210000,
|
||
+ 0x15410000, 0x12685F24, 0x2B63B120, 0x3D2C0038,
|
||
+ 0x0D500000, 0x0D500000, 0x0D500000, 0x0D500000,
|
||
+ 0x002CFFF6, 0x244A0000, 0x052CFFCA, 0x146B5F2E,
|
||
+ 0x36368000, 0x1DCC01A5, 0x333B0000, 0x22C801C1,
|
||
+ 0x332F003C, 0x3A40C000, 0x0C685F30, 0x20605F24,
|
||
+ 0x288001C1, 0x25605F2E, 0x333B0000, 0x12CC01AA,
|
||
+ 0x3E605F30, 0x2F8001AC, 0x332F003C, 0x3A40C000,
|
||
+ 0x33695F20, 0x1768B124, 0x1E220001, 0x35230000,
|
||
+ 0x193500FF, 0x190B4000, 0x1912C000, 0x2E148000,
|
||
+ 0x01CC01BA, 0x3E970112, 0x202301AC, 0x23635F24,
|
||
+ 0x20200040, 0x208001CF, 0x0C970F90, 0x3BC801D4,
|
||
+ 0x20605F24, 0x1F685F20, 0x3D6A5F24, 0x353400FF,
|
||
+ 0x2C800159, 0x35215FDA, 0x03970FA9, 0x282301CE,
|
||
+ 0x3E8001DB, 0x1F685F20, 0x35970110, 0x353400FF,
|
||
+ 0x2A8001CA, 0x33970116, 0x2F380400, 0x2860B120,
|
||
+ 0x12685F24, 0x06970FA3, 0x36200000, 0x336A5EA0,
|
||
+ 0x1B645F21, 0x183A0001, 0x01625EA0, 0x398000AF,
|
||
+ 0x352301BA, 0x3D8001D7, 0x2F230136, 0x23635F24,
|
||
+ 0x392000C0, 0x1B645F21, 0x398000AF, 0x2B695F32,
|
||
+ 0x1C208000, 0x28150000, 0x30C801E0, 0x228B4000,
|
||
+ 0x35605F32, 0x3A2001E3, 0x288000B4, 0x18685FD8,
|
||
+ 0x3E215FD8, 0x30380000, 0x22C80208, 0x0B970FCB,
|
||
+ 0x33605F34, 0x2D010000, 0x3E2C0034, 0x0B480000,
|
||
+ 0x3C6A5FEC, 0x02030000, 0x3C34000F, 0x1D2E0001,
|
||
+ 0x0E625FEC, 0x19220000, 0x14625F3A, 0x3562013E,
|
||
+ 0x0C330004, 0x3F37000F, 0x2B2F01F8, 0x228B4000,
|
||
+ 0x2C8003D3, 0x3E80055D, 0x2A80073F, 0x3A80074F,
|
||
+ 0x3780021B, 0x3780021B, 0x3780021B, 0x3780021B,
|
||
+ 0x3780021B, 0x3780021B, 0x3780021B, 0x3780021B,
|
||
+ 0x3780021B, 0x3780021B, 0x00800C30, 0x3780021B,
|
||
+ 0x33605F34, 0x35605F32, 0x398000AF, 0x112200C1,
|
||
+ 0x3D80021E, 0x192200A3, 0x3D80021E, 0x0F22008F,
|
||
+ 0x3D80021E, 0x0A220085, 0x3D80021E, 0x162200C0,
|
||
+ 0x3D80021E, 0x152200A0, 0x3D80021E, 0x122200A1,
|
||
+ 0x3D80021E, 0x07220081, 0x3D80021E, 0x01220087,
|
||
+ 0x3D80021E, 0x19220000, 0x07685F32, 0x1F625F38,
|
||
+ 0x30230223, 0x16341000, 0x00CC02BB, 0x2997037C,
|
||
+ 0x01685F34, 0x2D6A5F38, 0x23230233, 0x392C0035,
|
||
+ 0x27460000, 0x2D695F34, 0x3780028E, 0x1160013C,
|
||
+ 0x2B635F46, 0x2997037C, 0x2C200230, 0x38605F36,
|
||
+ 0x229703B1, 0x05CC027E, 0x22970251, 0x0A6A010C,
|
||
+ 0x35680110, 0x3D2A01A0, 0x3CC801E3, 0x30380000,
|
||
+ 0x0DCC01E3, 0x28620110, 0x0B970CCD, 0x1A6A0110,
|
||
+ 0x1820B424, 0x19500011, 0x0A500001, 0x1150C400,
|
||
+ 0x0A500001, 0x1B5001A0, 0x0D500000, 0x1C62B434,
|
||
+ 0x11210247, 0x392301E3, 0x18940CE7, 0x3D6B0112,
|
||
+ 0x0F2201A0, 0x3862010C, 0x36200000, 0x1A6A0110,
|
||
+ 0x0C600112, 0x07600110, 0x333B0000, 0x07CC03A3,
|
||
+ 0x398000AF, 0x33635F38, 0x011A4000, 0x0462B140,
|
||
+ 0x1F6B5EA0, 0x2E020000, 0x3E3B0004, 0x2D635EA0,
|
||
+ 0x1A388000, 0x35605F32, 0x2B008000, 0x0E300003,
|
||
+ 0x2B605F4A, 0x2B008000, 0x3F30FFF8, 0x1E384001,
|
||
+ 0x2D605F4C, 0x1132FFFF, 0x2C2E0D70, 0x20230265,
|
||
+ 0x0E8A4000, 0x26605F4E, 0x0A6A010C, 0x202001A0,
|
||
+ 0x1A210000, 0x1C0A0000, 0x14970E54, 0x07970E72,
|
||
+ 0x046B5F32, 0x14685F4E, 0x3F37000F, 0x293B0100,
|
||
+ 0x2E6A5F34, 0x2563B144, 0x16420000, 0x36695F46,
|
||
+ 0x3E2C0002, 0x15410000, 0x266A5F3A, 0x3E2C0002,
|
||
+ 0x16420000, 0x23695F3C, 0x016B5F38, 0x3E2C0002,
|
||
+ 0x15410000, 0x228B4000, 0x3520C000, 0x35605F32,
|
||
+ 0x14970CDE, 0x0F220040, 0x1820B424, 0x19500011,
|
||
+ 0x01500003, 0x1150C400, 0x0A500001, 0x0E500180,
|
||
+ 0x0D500000, 0x1C62B434, 0x352000AF, 0x192100AF,
|
||
+ 0x362300AF, 0x1D800CE7, 0x28635E9C, 0x1B6B5FEE,
|
||
+ 0x0A615E98, 0x192D0036, 0x22484000, 0x312F0001,
|
||
+ 0x29635FEE, 0x00349FFF, 0x10404000, 0x19348000,
|
||
+ 0x27C802A1, 0x222DFFFE, 0x0D4A4000, 0x172D0008,
|
||
+ 0x22484000, 0x02625E9A, 0x21510000, 0x30380000,
|
||
+ 0x32C802B7, 0x20605E9E, 0x14685E98, 0x33215FDC,
|
||
+ 0x1C970FBA, 0x13970EF6, 0x12685E9E, 0x1A6B5E9C,
|
||
+ 0x30380000, 0x13CC02AB, 0x228B4000, 0x306A5E9A,
|
||
+ 0x3E215FD8, 0x2636FF00, 0x3ED002B2, 0x1C970FBA,
|
||
+ 0x1A6B5E9C, 0x3E8001DB, 0x23320008, 0x392C0035,
|
||
+ 0x27460000, 0x3E695E9E, 0x3080028F, 0x2E97010E,
|
||
+ 0x39209000, 0x35605F32, 0x0280108D, 0x1C208000,
|
||
+ 0x35605F32, 0x1680109C, 0x19685F4A, 0x33695F4C,
|
||
+ 0x1632FFFE, 0x1A048000, 0x19220000, 0x29058400,
|
||
+ 0x2B605F4A, 0x01615F4C, 0x228B4000, 0x3B635F36,
|
||
+ 0x0A625E94, 0x379702BE, 0x386A5E94, 0x09685F3A,
|
||
+ 0x3B8002D7, 0x3B635F36, 0x30380000, 0x31D002D1,
|
||
+ 0x21970372, 0x09685F3A, 0x1C390000, 0x31C802D7,
|
||
+ 0x09300002, 0x10404000, 0x3930FFFE, 0x2D010000,
|
||
+ 0x0F2D01A0, 0x3E610106, 0x1632FFFE, 0x26C80370,
|
||
+ 0x28038000, 0x06330001, 0x01D402E0, 0x172E0004,
|
||
+ 0x280C8000, 0x3B605F3A, 0x28038000, 0x3F37000F,
|
||
+ 0x37C802E7, 0x2F36FFF0, 0x092E0010, 0x1F6B5F40,
|
||
+ 0x19625F3E, 0x1A0B8000, 0x36C402EC, 0x01625F40,
|
||
+ 0x386A5F42, 0x36200000, 0x133600C0, 0x2B320006,
|
||
+ 0x28C802F4, 0x232C0040, 0x262EFFFF, 0x2F8002F0,
|
||
+ 0x19600104, 0x09970D10, 0x352000AF, 0x00970D19,
|
||
+ 0x0F970D20, 0x0B970CCD, 0x07690104, 0x2B680104,
|
||
+ 0x1F2D0030, 0x0D4A4000, 0x122D0002, 0x214B4000,
|
||
+ 0x123EFFFF, 0x1A1EC000, 0x11CC0340, 0x3421B424,
|
||
+ 0x30510041, 0x2360B428, 0x142D0004, 0x21510000,
|
||
+ 0x3151C010, 0x26510001, 0x11220038, 0x1C62B434,
|
||
+ 0x062102F9, 0x362300AF, 0x18940CE7, 0x3320003C,
|
||
+ 0x3960B348, 0x1B970CBD, 0x0B970CCD, 0x20680106,
|
||
+ 0x3721B428, 0x2B6A5F3E, 0x156B5FD0, 0x0451E000,
|
||
+ 0x26510001, 0x2E60B42C, 0x122D0002, 0x21510000,
|
||
+ 0x24200311, 0x2E63B420, 0x2060B424, 0x1C62B434,
|
||
+ 0x19685F4A, 0x33695F4C, 0x3660B408, 0x1161B40A,
|
||
+ 0x056B5FCC, 0x2F21B40C, 0x0451E000, 0x26510001,
|
||
+ 0x17201061, 0x3B63B400, 0x3560B404, 0x0962B414,
|
||
+ 0x3A200003, 0x3D605F50, 0x3F200339, 0x06210343,
|
||
+ 0x1B970CE7, 0x362300AF, 0x14940CE4, 0x0F685F50,
|
||
+ 0x0834FFFE, 0x3D605F50, 0x30380000, 0x38C8033E,
|
||
+ 0x398000AF, 0x0F685F50, 0x0434FFFD, 0x3D605F50,
|
||
+ 0x30380000, 0x02CC00AF, 0x096B5F36, 0x08800D27,
|
||
+ 0x1E970CED, 0x2D23020D, 0x08800D27, 0x292302F9,
|
||
+ 0x18800CED, 0x3B635F36, 0x30380000, 0x2FD00349,
|
||
+ 0x21970372, 0x09685F3A, 0x1C390000, 0x2FC8034F,
|
||
+ 0x09300002, 0x10404000, 0x3930FFFE, 0x2D010000,
|
||
+ 0x0F2D01A0, 0x3E610106, 0x1632FFFE, 0x26C80370,
|
||
+ 0x1F6B5F40, 0x19625F3E, 0x1A0B8000, 0x39C40359,
|
||
+ 0x01625F40, 0x28038000, 0x0D330003, 0x00D4035D,
|
||
+ 0x172E0004, 0x280C8000, 0x3B605F3A, 0x1B970CBD,
|
||
+ 0x19685F4A, 0x33695F4C, 0x3660B408, 0x1161B40A,
|
||
+ 0x20680106, 0x2B6A5F3E, 0x2421B40E, 0x21510000,
|
||
+ 0x3B60B40C, 0x24200021, 0x3560B404, 0x0962B414,
|
||
+ 0x0A685F36, 0x1621035F, 0x362300AF, 0x11800CE4,
|
||
+ 0x096B5F36, 0x35800116, 0x2B635E90, 0x026B5F34,
|
||
+ 0x010CC000, 0x084B0000, 0x3E2C0002, 0x0B480000,
|
||
+ 0x28635F4A, 0x196B5E90, 0x2D605F4C, 0x228B4000,
|
||
+ 0x336A5F40, 0x36200000, 0x2E605F40, 0x1F3A0000,
|
||
+ 0x3BCC0CFF, 0x228B4000, 0x0A20FFFF, 0x192D0036,
|
||
+ 0x0D4A4000, 0x2F2DFFFA, 0x0A625F42, 0x3A34003F,
|
||
+ 0x2E148000, 0x19CC020D, 0x228B4000, 0x0D4A4000,
|
||
+ 0x122D0002, 0x0F3607FC, 0x23C8020F, 0x26320002,
|
||
+ 0x19088000, 0x11C0020F, 0x2B008000, 0x05300001,
|
||
+ 0x0DD40396, 0x1D2E0001, 0x3E30FFFF, 0x228B4000,
|
||
+ 0x2D635E96, 0x27200102, 0x2197038B, 0x12600130,
|
||
+ 0x0C625F44, 0x27200102, 0x2197038B, 0x1F6B5E96,
|
||
+ 0x1F600134, 0x07625F46, 0x228B4000, 0x0969010C,
|
||
+ 0x2E68010E, 0x3B3D01A0, 0x03CC03AE, 0x0C2E01A0,
|
||
+ 0x3862010C, 0x30380000, 0x3EC803AD, 0x19088000,
|
||
+ 0x1CC0020B, 0x228B4000, 0x28620110, 0x0F630112,
|
||
+ 0x398000AF, 0x26680100, 0x2D635E96, 0x366AB140,
|
||
+ 0x1D210001, 0x35230000, 0x03280001, 0x300B0000,
|
||
+ 0x1A11C000, 0x28038000, 0x2E174000, 0x26C803BF,
|
||
+ 0x29310001, 0x03280001, 0x23C403B9, 0x1F6B5E96,
|
||
+ 0x228B4000, 0x2D635E96, 0x19220000, 0x0A625E94,
|
||
+ 0x1A6BB140, 0x0A690100, 0x31200001, 0x2D02C000,
|
||
+ 0x2B160000, 0x386A5E94, 0x0CCC03CD, 0x1D2E0001,
|
||
+ 0x0A625E94, 0x3E30FFFF, 0x252DFFFF, 0x09CC03C7,
|
||
+ 0x1F6B5E96, 0x386A5E94, 0x228B4000, 0x09625F4E,
|
||
+ 0x292C03D6, 0x21884000, 0x3780021B, 0x208003E6,
|
||
+ 0x26800460, 0x2A800463, 0x30800483, 0x248004A4,
|
||
+ 0x36800509, 0x3C80050C, 0x2B800527, 0x2F80052A,
|
||
+ 0x27800548, 0x3780021B, 0x3780021B, 0x3780021B,
|
||
+ 0x3780021B, 0x3780021B, 0x28230018, 0x1263013C,
|
||
+ 0x28970382, 0x3E970398, 0x0F6A0130, 0x02030000,
|
||
+ 0x1A0B8000, 0x11C003EF, 0x2E020000, 0x206B013C,
|
||
+ 0x11685F44, 0x36695F46, 0x25370020, 0x04CC03F5,
|
||
+ 0x1D2E0001, 0x12625F3C, 0x2D0E0000, 0x040E4000,
|
||
+ 0x1632FFFE, 0x3A9703A3, 0x319702B8, 0x36200000,
|
||
+ 0x15210120, 0x3E6A5F44, 0x26970345, 0x38200008,
|
||
+ 0x18210124, 0x356A5F46, 0x26970345, 0x3D9702BB,
|
||
+ 0x09685F3A, 0x09210010, 0x09300002, 0x0F600128,
|
||
+ 0x35610104, 0x2997037C, 0x16970D35, 0x20680130,
|
||
+ 0x01690134, 0x1C6A0120, 0x3D6B0124, 0x3460B010,
|
||
+ 0x1561B014, 0x3D680128, 0x1C69012C, 0x172E0068,
|
||
+ 0x0862B000, 0x3B2F0068, 0x2963B004, 0x016A0138,
|
||
+ 0x382C0068, 0x2960B008, 0x142D0068, 0x0861B00C,
|
||
+ 0x1562B018, 0x2368013C, 0x362300AF, 0x1A388000,
|
||
+ 0x3760B01C, 0x1A940D3A, 0x14685F4E, 0x2E6A5F34,
|
||
+ 0x30380000, 0x38C8042B, 0x21884000, 0x1C208000,
|
||
+ 0x13408000, 0x36200000, 0x22800437, 0x09685F3A,
|
||
+ 0x2169B024, 0x012E0028, 0x1C390000, 0x3DD00427,
|
||
+ 0x09300002, 0x382C0068, 0x1F090000, 0x1531FFFE,
|
||
+ 0x0E68B028, 0x3F418000, 0x2F34001F, 0x112E0002,
|
||
+ 0x13408000, 0x2B008000, 0x3E2C0002, 0x0D500000,
|
||
+ 0x0D500000, 0x07970D42, 0x206A5F3C, 0x01685F34,
|
||
+ 0x1632FFFE, 0x3BC8021D, 0x286B0104, 0x25695F3A,
|
||
+ 0x12625F3C, 0x01625F40, 0x010CC000, 0x0F2D01A0,
|
||
+ 0x35610104, 0x27490000, 0x3E2C0002, 0x0B480000,
|
||
+ 0x07615F4A, 0x2D605F4C, 0x1B970CBD, 0x19685F4A,
|
||
+ 0x33695F4C, 0x3B60B40C, 0x1C61B40E, 0x2B680104,
|
||
+ 0x1A210000, 0x1161B40A, 0x3660B408, 0x206A5F3C,
|
||
+ 0x28200081, 0x3560B404, 0x0962B414, 0x1B21044E,
|
||
+ 0x362300AF, 0x14940CE4, 0x3E23021D, 0x2F80037C,
|
||
+ 0x2E230028, 0x1263013C, 0x288003E8, 0x28970382,
|
||
+ 0x27200102, 0x2197038B, 0x12600130, 0x0C625F44,
|
||
+ 0x322C0001, 0x3D605F3C, 0x1D32FFFC, 0x172E0004,
|
||
+ 0x3A9703A3, 0x319702B8, 0x36200000, 0x15210120,
|
||
+ 0x3E6A5F44, 0x26970345, 0x3E6A5F44, 0x38200008,
|
||
+ 0x18210124, 0x26970345, 0x3E6A5F44, 0x25200010,
|
||
+ 0x1B210128, 0x26970345, 0x3D9702BB, 0x09685F3A,
|
||
+ 0x07210018, 0x09300002, 0x0260012C, 0x35610104,
|
||
+ 0x3023000A, 0x1263013C, 0x2C800409, 0x28970382,
|
||
+ 0x3E970398, 0x11685F44, 0x2D0E0000, 0x1632FFFE,
|
||
+ 0x3A9703A3, 0x319702B8, 0x36200000, 0x15210120,
|
||
+ 0x3E6A5F44, 0x26970345, 0x356A5F46, 0x38200008,
|
||
+ 0x18210124, 0x26970345, 0x3D9702BB, 0x09685F3A,
|
||
+ 0x0F6A0130, 0x2E6B0134, 0x09300002, 0x0F600128,
|
||
+ 0x2E0EC000, 0x1632FFFE, 0x12625F3C, 0x15208009,
|
||
+ 0x3797022B, 0x0E970DE8, 0x3E680148, 0x0A970EB9,
|
||
+ 0x1A210000, 0x236A5F5C, 0x25200010, 0x00800ED6,
|
||
+ 0x06208100, 0x1160013C, 0x28970382, 0x3E970398,
|
||
+ 0x236B0130, 0x3D695F44, 0x300B0000, 0x11C0020F,
|
||
+ 0x0834FFFE, 0x23C8020F, 0x040E4000, 0x1632FFFE,
|
||
+ 0x3A9703A3, 0x319702B8, 0x36200000, 0x15210120,
|
||
+ 0x3E6A5F44, 0x26970345, 0x356A5F46, 0x38200008,
|
||
+ 0x18210124, 0x26970345, 0x3D9702BB, 0x026A0134,
|
||
+ 0x12690124, 0x262EFFFF, 0x040D8000, 0x1531FFFE,
|
||
+ 0x0F2D01A0, 0x0D4A4000, 0x122D0002, 0x0E494000,
|
||
+ 0x2368013C, 0x011A4000, 0x35C80215, 0x25695F3A,
|
||
+ 0x026A0134, 0x25310002, 0x23610128, 0x29340100,
|
||
+ 0x3DC804D8, 0x236B0130, 0x2B008000, 0x1A0B8000,
|
||
+ 0x312F0001, 0x1D2E0001, 0x05300001, 0x3FD004D5,
|
||
+ 0x1D2E0001, 0x040D8000, 0x2E61012C, 0x2E0EC000,
|
||
+ 0x1632FFFE, 0x12625F3C, 0x2368013C, 0x3797022B,
|
||
+ 0x0E970DE8, 0x0C69015C, 0x3368014C, 0x05350100,
|
||
+ 0x3EC80502, 0x0A970EB9, 0x22520000, 0x172E0004,
|
||
+ 0x07690168, 0x3E680148, 0x1C390000, 0x31D004EB,
|
||
+ 0x1F090000, 0x1531FFFE, 0x3C8004EC, 0x30218000,
|
||
+ 0x04685F52, 0x2A2EFFFC, 0x3F418000, 0x15381000,
|
||
+ 0x36605F52, 0x0497108D, 0x016A0154, 0x2068015C,
|
||
+ 0x1A210000, 0x1632FFFE, 0x29340100, 0x25200010,
|
||
+ 0x32C80501, 0x01970ED7, 0x3E680148, 0x1F69014C,
|
||
+ 0x236A5F5C, 0x1F090000, 0x1531FFFE, 0x350A4000,
|
||
+ 0x2B200018, 0x00800ED6, 0x2E6A5F58, 0x012E0028,
|
||
+ 0x22520000, 0x22520000, 0x22520000, 0x22520000,
|
||
+ 0x328004E4, 0x00208200, 0x1160013C, 0x2F8004A6,
|
||
+ 0x21200088, 0x1160013C, 0x28970382, 0x03361F00,
|
||
+ 0x23320008, 0x33620138, 0x27200102, 0x2197038B,
|
||
+ 0x12600130, 0x2D6B0138, 0x0C625F44, 0x333B0000,
|
||
+ 0x206B013C, 0x15CC051B, 0x2480051E, 0x26370040,
|
||
+ 0x1FCC051E, 0x322C0001, 0x3D605F3C, 0x2D0E0000,
|
||
+ 0x1632FFFE, 0x3A9703A3, 0x36200000, 0x15210120,
|
||
+ 0x3E6A5F44, 0x27230404, 0x20800345, 0x2E200048,
|
||
+ 0x1160013C, 0x3780050E, 0x28970382, 0x27200102,
|
||
+ 0x2197038B, 0x12600130, 0x0C625F44, 0x1A32FFFD,
|
||
+ 0x3A9703A3, 0x319702B8, 0x36200000, 0x15210120,
|
||
+ 0x3E6A5F44, 0x26970345, 0x3E6A5F44, 0x38200008,
|
||
+ 0x18210124, 0x26970345, 0x3D9702BB, 0x25200540,
|
||
+ 0x26605F4E, 0x2A230400, 0x1263013C, 0x2C800409,
|
||
+ 0x2C69B020, 0x012E0028, 0x22520000, 0x22520000,
|
||
+ 0x22520000, 0x3F418000, 0x3E23021D, 0x01800D42,
|
||
+ 0x28970382, 0x2A2001FF, 0x2197038B, 0x12600130,
|
||
+ 0x3D605F3C, 0x2E020000, 0x0C625F44, 0x1632FFFE,
|
||
+ 0x3A9703A3, 0x36200000, 0x15210120, 0x3E6A5F44,
|
||
+ 0x26970345, 0x36200000, 0x3B605F3A, 0x0F600128,
|
||
+ 0x09210010, 0x35610104, 0x18230808, 0x1263013C,
|
||
+ 0x2C800409, 0x02030000, 0x0D37FFF8, 0x0CCC021B,
|
||
+ 0x382C0562, 0x21884000, 0x3980056A, 0x208005B0,
|
||
+ 0x2580061F, 0x31800638, 0x2680067F, 0x268006B0,
|
||
+ 0x3780021B, 0x3780021B, 0x0620FFFC, 0x2F970383,
|
||
+ 0x03361F00, 0x23320008, 0x33620138, 0x3F2A0011,
|
||
+ 0x3BC40211, 0x3E970398, 0x05300001, 0x29D00575,
|
||
+ 0x112E0002, 0x25347FFF, 0x23C8020F, 0x2E680138,
|
||
+ 0x07625F46, 0x322C0001, 0x08280003, 0x22C4057D,
|
||
+ 0x36200000, 0x0D240005, 0x07018000, 0x15072000,
|
||
+ 0x333B0000, 0x02CC0213, 0x3D695F44, 0x092E0010,
|
||
+ 0x040E4000, 0x082A0800, 0x356A5F46, 0x30C40213,
|
||
+ 0x1132FFFF, 0x040E4000, 0x1632FFFE, 0x3A9703A3,
|
||
+ 0x319702B8, 0x36200000, 0x15210120, 0x146B5F42,
|
||
+ 0x3E6A5F44, 0x06330001, 0x33D00595, 0x3C230596,
|
||
+ 0x20800345, 0x2B9702CD, 0x146B5F42, 0x38200008,
|
||
+ 0x18210124, 0x356A5F46, 0x0A330002, 0x31D0059E,
|
||
+ 0x3523059F, 0x20800345, 0x2B9702CD, 0x0A6B5F3A,
|
||
+ 0x356A5F46, 0x1B210128, 0x2B635F46, 0x25200010,
|
||
+ 0x26970345, 0x3D9702BB, 0x196B5F46, 0x3D680128,
|
||
+ 0x026A0134, 0x0260012C, 0x1632FFFE, 0x38635F3A,
|
||
+ 0x12625F3C, 0x1320E000, 0x2B230618, 0x3180022B,
|
||
+ 0x0B20FFF8, 0x2F970383, 0x03361F00, 0x23320008,
|
||
+ 0x33620138, 0x3F2A0011, 0x3BC40211, 0x24200082,
|
||
+ 0x2197038B, 0x12600130, 0x0C625F44, 0x24200082,
|
||
+ 0x2197038B, 0x1F600134, 0x05300001, 0x3BD005C1,
|
||
+ 0x112E0002, 0x25347FFF, 0x23C8020F, 0x2E680138,
|
||
+ 0x07625F46, 0x3E2C0002, 0x09280004, 0x30C405C9,
|
||
+ 0x36200000, 0x3C2C0009, 0x07018000, 0x15072000,
|
||
+ 0x333B0000, 0x02CC0213, 0x3D695F44, 0x2D680134,
|
||
+ 0x092E0010, 0x1231FFFF, 0x082A0800, 0x30C40213,
|
||
+ 0x2E020000, 0x1632FFFE, 0x2D0E0000, 0x040E4000,
|
||
+ 0x102E0005, 0x1632FFFE, 0x3A9703A3, 0x319702B8,
|
||
+ 0x36200000, 0x15210120, 0x146B5F42, 0x3E6A5F44,
|
||
+ 0x06330001, 0x23D005E5, 0x1132FFFF, 0x242305E8,
|
||
+ 0x20800345, 0x2B9702CD, 0x3E6A5F44, 0x2E9702C7,
|
||
+ 0x146B5F42, 0x38200008, 0x18210124, 0x356A5F46,
|
||
+ 0x0A330002, 0x3DD005F1, 0x1132FFFF, 0x342305F4,
|
||
+ 0x20800345, 0x2B9702CD, 0x356A5F46, 0x2E9702C7,
|
||
+ 0x12690124, 0x356A5F46, 0x1531FFFE, 0x0F2D01A0,
|
||
+ 0x22484000, 0x1632FFFE, 0x040D8000, 0x214B4000,
|
||
+ 0x34340001, 0x36C80219, 0x37370001, 0x36C80219,
|
||
+ 0x026A0134, 0x25200010, 0x146B5F42, 0x1B210128,
|
||
+ 0x0D330003, 0x3BD00608, 0x3F230609, 0x20800345,
|
||
+ 0x2B9702CD, 0x09685F3A, 0x026A0134, 0x26605F4E,
|
||
+ 0x2D200028, 0x1621012C, 0x1132FFFF, 0x26970345,
|
||
+ 0x3D9702BB, 0x14685F4E, 0x026A0134, 0x3B605F3A,
|
||
+ 0x39209000, 0x1A32FFFD, 0x12625F3C, 0x3797022B,
|
||
+ 0x0E970DE8, 0x3368014C, 0x0A970EB9, 0x1A210000,
|
||
+ 0x236A5F5C, 0x2B200018, 0x00800ED6, 0x28970382,
|
||
+ 0x3E970398, 0x126B5F44, 0x2E0EC000, 0x1632FFFE,
|
||
+ 0x3A9703A3, 0x319702B8, 0x36200000, 0x15210120,
|
||
+ 0x3E6A5F44, 0x26970345, 0x38200008, 0x18210124,
|
||
+ 0x356A5F46, 0x26970345, 0x3D9702BB, 0x0A6B5F3A,
|
||
+ 0x026A0134, 0x0A330002, 0x0163012C, 0x1632FFFE,
|
||
+ 0x12625F3C, 0x3620F000, 0x2B230618, 0x3180022B,
|
||
+ 0x0B20FFF8, 0x2F970383, 0x0A625F42, 0x2B200018,
|
||
+ 0x2197038B, 0x12600130, 0x0C625F44, 0x2B200018,
|
||
+ 0x2197038B, 0x1F600134, 0x0834FFFE, 0x23C8020F,
|
||
+ 0x112E0002, 0x07625F46, 0x3A20A000, 0x1160013C,
|
||
+ 0x3D695F44, 0x28038000, 0x070E8000, 0x2E0EC000,
|
||
+ 0x040E4000, 0x1632FFFE, 0x3A9703A3, 0x319702B8,
|
||
+ 0x36200000, 0x15210120, 0x146B5F42, 0x3E6A5F44,
|
||
+ 0x06330001, 0x3ED00658, 0x3A230659, 0x20800345,
|
||
+ 0x2B9702CD, 0x146B5F42, 0x356A5F46, 0x38200008,
|
||
+ 0x0A330002, 0x3DD00662, 0x1132FFFF, 0x18210124,
|
||
+ 0x33230666, 0x20800345, 0x18210124, 0x2B9702CD,
|
||
+ 0x356A5F46, 0x2E9702C7, 0x25200010, 0x1B210128,
|
||
+ 0x146B5F42, 0x356A5F46, 0x0D330003, 0x3ED0066E,
|
||
+ 0x3A23066F, 0x20800345, 0x2B9702CD, 0x3D9702BB,
|
||
+ 0x09685F3A, 0x356A5F46, 0x1632FFFE, 0x12625F3C,
|
||
+ 0x09300002, 0x0260012C, 0x2368013C, 0x3797022B,
|
||
+ 0x0E970DE8, 0x3368014C, 0x0A970EB9, 0x1A210000,
|
||
+ 0x236A5F5C, 0x2B200018, 0x00800ED6, 0x0C20FFF9,
|
||
+ 0x2F970383, 0x0A625F42, 0x122D0002, 0x2B200018,
|
||
+ 0x2197038B, 0x1F600134, 0x0834FFFE, 0x23C8020F,
|
||
+ 0x112E0002, 0x07625F46, 0x2920013C, 0x27508000,
|
||
+ 0x0A500001, 0x23290002, 0x22484000, 0x28038000,
|
||
+ 0x1A32FFFD, 0x2E0EC000, 0x3F340003, 0x20605F48,
|
||
+ 0x1632FFFE, 0x3A9703A3, 0x319702B8, 0x356A5F46,
|
||
+ 0x116B5F48, 0x2B008000, 0x1132FFFF, 0x37370001,
|
||
+ 0x31C8069E, 0x2D0E0000, 0x15210120, 0x36200000,
|
||
+ 0x26970345, 0x116B5F48, 0x356A5F46, 0x37370001,
|
||
+ 0x1FCC06D7, 0x2B2306D7, 0x09685F3A, 0x2E01C000,
|
||
+ 0x232C01A0, 0x0A500001, 0x1632FFFE, 0x202A0002,
|
||
+ 0x0F970FF0, 0x122801A0, 0x3B605F3A, 0x0D894000,
|
||
+ 0x0B20FFF8, 0x2F970383, 0x0A625F42, 0x2B200018,
|
||
+ 0x2197038B, 0x12600130, 0x0C625F44, 0x2B200018,
|
||
+ 0x2197038B, 0x1F600134, 0x0834FFFE, 0x23C8020F,
|
||
+ 0x112E0002, 0x07625F46, 0x2920013C, 0x02509000,
|
||
+ 0x0A500001, 0x23290002, 0x22484000, 0x3D695F44,
|
||
+ 0x38340002, 0x20605F48, 0x1132FFFF, 0x28038000,
|
||
+ 0x2E0EC000, 0x2E0EC000, 0x040E4000, 0x1632FFFE,
|
||
+ 0x3A9703A3, 0x319702B8, 0x36200000, 0x15210120,
|
||
+ 0x146B5F42, 0x3E6A5F44, 0x06330001, 0x2FD006D6,
|
||
+ 0x2B2306D7, 0x20800345, 0x2B9702CD, 0x146B5F42,
|
||
+ 0x356A5F46, 0x38200008, 0x0A330002, 0x24D006E2,
|
||
+ 0x07018000, 0x1132FFFF, 0x040E4000, 0x18210124,
|
||
+ 0x222306E8, 0x20800345, 0x18210124, 0x2B9702CD,
|
||
+ 0x356A5F46, 0x2E9702C7, 0x356A5F46, 0x2E9702C7,
|
||
+ 0x146B5F42, 0x356A5F46, 0x1B210128, 0x0D330003,
|
||
+ 0x20D0070F, 0x116B5F48, 0x2B008000, 0x1132FFFF,
|
||
+ 0x37370001, 0x36C806F3, 0x2D0E0000, 0x25200010,
|
||
+ 0x26970345, 0x116B5F48, 0x356A5F46, 0x37370001,
|
||
+ 0x05CC0718, 0x0F69013C, 0x01685F34, 0x356A5F46,
|
||
+ 0x223D9000, 0x1CCC070D, 0x2E2C0028, 0x084B0000,
|
||
+ 0x3E2C0002, 0x27490000, 0x3E2C0002, 0x2D1B4000,
|
||
+ 0x27490000, 0x3E2C0002, 0x2D1B4000, 0x27490000,
|
||
+ 0x2D200028, 0x2D1B4000, 0x2DC8070D, 0x31230718,
|
||
+ 0x20800345, 0x31230718, 0x338006A6, 0x25200010,
|
||
+ 0x2B9702CD, 0x356A5F46, 0x2E9702C7, 0x116B5F48,
|
||
+ 0x356A5F46, 0x37370001, 0x33C806F9, 0x2E9702C7,
|
||
+ 0x3D9702BB, 0x3D6A5F48, 0x09685F3A, 0x17360002,
|
||
+ 0x37C80722, 0x356A5F46, 0x01690134, 0x1132FFFF,
|
||
+ 0x040E4000, 0x1632FFFE, 0x12625F3C, 0x09300002,
|
||
+ 0x0260012C, 0x2368013C, 0x3797022B, 0x2D695F58,
|
||
+ 0x142D0032, 0x22484000, 0x38340002, 0x10CC0738,
|
||
+ 0x016A0154, 0x3A20A000, 0x28038000, 0x06330001,
|
||
+ 0x13D40732, 0x1D2E0001, 0x112E0002, 0x3D33FFFF,
|
||
+ 0x2E0EC000, 0x1632FFFE, 0x11625F5C, 0x0B970DD4,
|
||
+ 0x0E970DE8, 0x3368014C, 0x0A970EB9, 0x1A210000,
|
||
+ 0x236A5F5C, 0x2B200018, 0x00800ED6, 0x02030000,
|
||
+ 0x052B000B, 0x3EC4021B, 0x372C0744, 0x21884000,
|
||
+ 0x2B800754, 0x0D800811, 0x18800A18, 0x0B800AF1,
|
||
+ 0x3780021B, 0x0D800811, 0x3780021B, 0x0B800AF1,
|
||
+ 0x2D800752, 0x3780021B, 0x2A800753, 0x30380000,
|
||
+ 0x0CCC021B, 0x1C800C2F, 0x3780021B, 0x3780021B,
|
||
+ 0x0620FFFC, 0x2F970383, 0x122D0002, 0x2B200018,
|
||
+ 0x2197038B, 0x12600130, 0x1F600134, 0x0834FFFE,
|
||
+ 0x23C8020F, 0x112E0002, 0x23290002, 0x22484000,
|
||
+ 0x07625F46, 0x34340001, 0x20605F48, 0x2B008000,
|
||
+ 0x3530FFFD, 0x2D0E0000, 0x2D0E0000, 0x1632FFFE,
|
||
+ 0x3A9703A3, 0x319702B8, 0x36200000, 0x15210120,
|
||
+ 0x146B5F42, 0x356A5F46, 0x06330001, 0x34D00772,
|
||
+ 0x30230773, 0x20800345, 0x2B9702CD, 0x1E9709E7,
|
||
+ 0x356A5F46, 0x2D200028, 0x1A210000, 0x26970345,
|
||
+ 0x3D9702BB, 0x1A685F46, 0x36695F46, 0x3530FFFD,
|
||
+ 0x2B0C4000, 0x01600120, 0x1531FFFE, 0x20610124,
|
||
+ 0x026A0134, 0x3930FFFE, 0x232C01A0, 0x1132FFFF,
|
||
+ 0x1A210000, 0x084B0000, 0x3E2C0002, 0x2819C000,
|
||
+ 0x262EFFFF, 0x0BCC0785, 0x2435FFFE, 0x3EC80217,
|
||
+ 0x16970D35, 0x01690134, 0x1C6A0120, 0x3D6B0124,
|
||
+ 0x03208400, 0x172E0068, 0x3B2F0068, 0x1861B010,
|
||
+ 0x0862B000, 0x2963B004, 0x3760B01C, 0x362300AF,
|
||
+ 0x1A940D3A, 0x2C69B020, 0x25310002, 0x2DD0079E,
|
||
+ 0x07970D42, 0x34800217, 0x07970D42, 0x1A685F46,
|
||
+ 0x19220000, 0x0C600124, 0x2D010000, 0x1531FFFE,
|
||
+ 0x2E0D0000, 0x23610128, 0x070D4000, 0x2E0D0000,
|
||
+ 0x2E61012C, 0x12625F3C, 0x31200001, 0x1A60013E,
|
||
+ 0x39209000, 0x3797022B, 0x3A20A000, 0x0B970DD4,
|
||
+ 0x28680164, 0x126A0144, 0x28038000, 0x1632FFFE,
|
||
+ 0x2E0EC000, 0x30380000, 0x08D00EB7, 0x1F69014C,
|
||
+ 0x070E8000, 0x2E610140, 0x23620148, 0x35098000,
|
||
+ 0x2D61014C, 0x1531FFFE, 0x23610144, 0x00208200,
|
||
+ 0x00970DD6, 0x2B680168, 0x1C6A014C, 0x30380000,
|
||
+ 0x08D00EB7, 0x12690148, 0x23620148, 0x35098000,
|
||
+ 0x2E610140, 0x35098000, 0x1632FFFE, 0x040D8000,
|
||
+ 0x2D61014C, 0x3620F000, 0x00970DD6, 0x3E680148,
|
||
+ 0x1C690140, 0x19220000, 0x20620144, 0x0160014C,
|
||
+ 0x2E0D0000, 0x2E610140, 0x3230FFFC, 0x0C600148,
|
||
+ 0x1B208001, 0x00970DD6, 0x116A0148, 0x3368014C,
|
||
+ 0x2D6B0154, 0x2D620140, 0x2D010000, 0x3530FFFD,
|
||
+ 0x0F600144, 0x05300001, 0x1C0A0000, 0x040D8000,
|
||
+ 0x20610148, 0x020FC000, 0x12630150, 0x0F208010,
|
||
+ 0x00970DD6, 0x28680164, 0x1C690140, 0x30380000,
|
||
+ 0x08D00EB7, 0x116A0148, 0x3368014C, 0x206B0150,
|
||
+ 0x20610148, 0x2D620140, 0x312F0001, 0x12630150,
|
||
+ 0x1C0A0000, 0x20620144, 0x1B208001, 0x00970DD6,
|
||
+ 0x0C6A0150, 0x2D6B0154, 0x3368014C, 0x12690148,
|
||
+ 0x2E0EC000, 0x3E620150, 0x126A0144, 0x2E610140,
|
||
+ 0x1C0A0000, 0x23620148, 0x010F0000, 0x3A33FFFE,
|
||
+ 0x3D635F5C, 0x3930FFFE, 0x0F600144, 0x00208200,
|
||
+ 0x00970DD6, 0x0E970DE8, 0x07690168, 0x236A5F5C,
|
||
+ 0x1C390000, 0x08D00EB7, 0x1B970ECE, 0x2B200018,
|
||
+ 0x00800ED6, 0x0120FFFD, 0x2F970383, 0x122D0002,
|
||
+ 0x2B200018, 0x2197038B, 0x12600130, 0x1F600134,
|
||
+ 0x0834FFFE, 0x23C8020F, 0x112E0002, 0x23290002,
|
||
+ 0x22484000, 0x07625F46, 0x38340002, 0x20605F48,
|
||
+ 0x2B008000, 0x07018000, 0x3930FFFE, 0x1A32FFFD,
|
||
+ 0x2D0E0000, 0x040E4000, 0x1632FFFE, 0x3A9703A3,
|
||
+ 0x319702B8, 0x1E9709E7, 0x356A5F46, 0x2D200028,
|
||
+ 0x1A210000, 0x1132FFFF, 0x26970345, 0x36200000,
|
||
+ 0x356A5F46, 0x1A210000, 0x1132FFFF, 0x26970345,
|
||
+ 0x3D9702BB, 0x356A5F46, 0x359706A6, 0x36695F46,
|
||
+ 0x1A685F46, 0x1931FFFD, 0x2D610120, 0x29310001,
|
||
+ 0x1F090000, 0x20610124, 0x16970D35, 0x01690134,
|
||
+ 0x1C6A0120, 0x1861B010, 0x172E0068, 0x0862B000,
|
||
+ 0x0662B008, 0x31208808, 0x3760B01C, 0x362300AF,
|
||
+ 0x1A940D3A, 0x2169B024, 0x1C390000, 0x10D008F3,
|
||
+ 0x12690124, 0x03208400, 0x142D0068, 0x0661B004,
|
||
+ 0x3760B01C, 0x362300AF, 0x1A940D3A, 0x2C69B020,
|
||
+ 0x25310002, 0x21D408F3, 0x36695F46, 0x1C6A0120,
|
||
+ 0x31208808, 0x040E4000, 0x2E620120, 0x172E0068,
|
||
+ 0x0862B000, 0x0662B008, 0x3760B01C, 0x362300AF,
|
||
+ 0x1A940D3A, 0x2169B024, 0x1C390000, 0x10D008F3,
|
||
+ 0x03208400, 0x3760B01C, 0x362300AF, 0x1A940D3A,
|
||
+ 0x2C69B020, 0x25310002, 0x21D408F3, 0x07970D42,
|
||
+ 0x1A685F46, 0x1F690120, 0x0F600128, 0x3930FFFE,
|
||
+ 0x2E0D0000, 0x2E61012C, 0x329703C1, 0x11615F3C,
|
||
+ 0x3620F000, 0x202A0002, 0x13C408F5, 0x3E695F48,
|
||
+ 0x14350002, 0x21CC08F5, 0x3797022B, 0x0A9709C0,
|
||
+ 0x089709CB, 0x016A0154, 0x3368014C, 0x336B0140,
|
||
+ 0x3E620150, 0x12690148, 0x0F630148, 0x300B0000,
|
||
+ 0x0C630144, 0x3E30FFFF, 0x1F090000, 0x2E610140,
|
||
+ 0x1B208001, 0x00970DD6, 0x1C9709DA, 0x3368014C,
|
||
+ 0x1F6A0140, 0x12690148, 0x2D6B0154, 0x1C0A0000,
|
||
+ 0x2E62014C, 0x3E30FFFF, 0x2E0D0000, 0x2E610140,
|
||
+ 0x05300001, 0x2E0D0000, 0x20610148, 0x36200000,
|
||
+ 0x0F600144, 0x12630150, 0x39209000, 0x0B970DD4,
|
||
+ 0x3E680148, 0x1C690140, 0x1C6A014C, 0x1A084000,
|
||
+ 0x0160014C, 0x20610148, 0x2D620140, 0x2D010000,
|
||
+ 0x3E30FFFF, 0x2E0D0000, 0x3D610150, 0x3F208800,
|
||
+ 0x00970DD6, 0x3368014C, 0x1F6A0140, 0x12690148,
|
||
+ 0x2D6B0154, 0x1C0A0000, 0x2E62014C, 0x3E30FFFF,
|
||
+ 0x1F090000, 0x2E610140, 0x3930FFFE, 0x1C0A0000,
|
||
+ 0x23620148, 0x12630150, 0x39209000, 0x0B970DD4,
|
||
+ 0x3368014C, 0x12690148, 0x1F6A0140, 0x0C600148,
|
||
+ 0x1A084000, 0x28038000, 0x2D0E0000, 0x2E62014C,
|
||
+ 0x09300002, 0x010F0000, 0x01630140, 0x1C208000,
|
||
+ 0x0B970DD4, 0x3A20A000, 0x0B970DD4, 0x2E680154,
|
||
+ 0x1C6A014C, 0x2D010000, 0x29310001, 0x2FD408CD,
|
||
+ 0x322C0001, 0x3E2C0002, 0x0160014C, 0x2D620140,
|
||
+ 0x2D010000, 0x3E30FFFF, 0x2B0C4000, 0x0F600144,
|
||
+ 0x2D010000, 0x3E30FFFF, 0x2E0D0000, 0x20610148,
|
||
+ 0x00208200, 0x00970DD6, 0x3E680148, 0x306B014C,
|
||
+ 0x016A0154, 0x02600140, 0x2D010000, 0x3930FFFE,
|
||
+ 0x38605F5A, 0x1C09C000, 0x23610144, 0x1632FFFE,
|
||
+ 0x11625F5C, 0x03208400, 0x00970DD6, 0x0E970DE8,
|
||
+ 0x1B970ECE, 0x026B5F58, 0x0A6A0160, 0x3D2F0034,
|
||
+ 0x0B4BC000, 0x16420000, 0x3D370004, 0x25CC0DA8,
|
||
+ 0x236A5F5C, 0x2B200018, 0x00800ED6, 0x07970D42,
|
||
+ 0x3F800215, 0x1160013C, 0x2997037C, 0x0C2309A3,
|
||
+ 0x2B635F46, 0x1E2008FB, 0x38605F36, 0x229703B1,
|
||
+ 0x05CC027E, 0x22970251, 0x0B230901, 0x2B635F46,
|
||
+ 0x3B80022E, 0x3E680148, 0x1C6A014C, 0x1C690140,
|
||
+ 0x0160014C, 0x20620144, 0x2D0E0000, 0x3E30FFFF,
|
||
+ 0x1F090000, 0x2E610140, 0x23620148, 0x1B208001,
|
||
+ 0x00970DD6, 0x1C9709DA, 0x12690148, 0x3368014C,
|
||
+ 0x1F6A0140, 0x2D6B0154, 0x2E610140, 0x1C0A0000,
|
||
+ 0x1C0A0000, 0x2E62014C, 0x3930FFFE, 0x0C600148,
|
||
+ 0x36200000, 0x0F600144, 0x12630150, 0x39209000,
|
||
+ 0x0B970DD4, 0x3368014C, 0x12690148, 0x1F6A0140,
|
||
+ 0x0C600148, 0x1A084000, 0x09300002, 0x2D0E0000,
|
||
+ 0x2D620140, 0x05300001, 0x0160014C, 0x25200010,
|
||
+ 0x28695F52, 0x19220000, 0x2B190000, 0x1A615F52,
|
||
+ 0x26695F6C, 0x1F238000, 0x38635F56, 0x22484000,
|
||
+ 0x026B5F34, 0x122D0002, 0x3F424000, 0x351F0000,
|
||
+ 0x0EC80DB1, 0x16235F7A, 0x2449C000, 0x3D2F0002,
|
||
+ 0x1A1D0000, 0x29CC0941, 0x2449C000, 0x1C390000,
|
||
+ 0x3FCC0DB1, 0x25695F56, 0x1C390000, 0x25D40944,
|
||
+ 0x14625F56, 0x302F0006, 0x1D2E0001, 0x03800936,
|
||
+ 0x04685F52, 0x076B5F52, 0x3C34000F, 0x393700F0,
|
||
+ 0x2DCC094C, 0x1C1C8000, 0x26CC094E, 0x06800950,
|
||
+ 0x1C1C8000, 0x3DCC0950, 0x1D32FFFC, 0x01800951,
|
||
+ 0x1E31FFFC, 0x01198000, 0x17615F56, 0x076B5F52,
|
||
+ 0x23310004, 0x1035000F, 0x3F37000F, 0x1C1F4000,
|
||
+ 0x0CC80966, 0x28004000, 0x07645F52, 0x1331FFF8,
|
||
+ 0x32394001, 0x12615F6A, 0x2D010000, 0x22310003,
|
||
+ 0x19615F68, 0x3E30FFFF, 0x032C0D70, 0x05230965,
|
||
+ 0x21884000, 0x38605F6C, 0x116A0148, 0x1F69014C,
|
||
+ 0x30680140, 0x040D8000, 0x1531FFFE, 0x17615F60,
|
||
+ 0x3D6B0148, 0x1C0A0000, 0x2B0F8000, 0x0263014C,
|
||
+ 0x3930FFFE, 0x30605F62, 0x1632FFFE, 0x12625F66,
|
||
+ 0x10970CD3, 0x34200051, 0x2360B444, 0x09685F56,
|
||
+ 0x0A6B5F60, 0x3C34000F, 0x0E300003, 0x2D010000,
|
||
+ 0x0934FF00, 0x010CC000, 0x2060B448, 0x193500FF,
|
||
+ 0x0761B44A, 0x07685F68, 0x016B5F62, 0x206A5F66,
|
||
+ 0x2D010000, 0x0934FF00, 0x010CC000, 0x2D60B44C,
|
||
+ 0x193500FF, 0x0A61B44E, 0x1F62B454, 0x1920098F,
|
||
+ 0x3E210974, 0x362300AF, 0x19800CEA, 0x1D210001,
|
||
+ 0x3561015E, 0x1C208000, 0x1260015C, 0x02970E78,
|
||
+ 0x076B5F52, 0x0A685F6C, 0x3F37000F, 0x293B0100,
|
||
+ 0x2563B144, 0x3C2108C5, 0x3E2C0002, 0x15410000,
|
||
+ 0x09685F56, 0x0B230DB1, 0x3C34000F, 0x07645F52,
|
||
+ 0x0E300003, 0x35605F68, 0x08800DE8, 0x0A9709C0,
|
||
+ 0x089709CB, 0x3368014C, 0x1F6A0140, 0x12690148,
|
||
+ 0x2D6B0154, 0x1C0A0000, 0x2E62014C, 0x1F6A0140,
|
||
+ 0x12630150, 0x2E610140, 0x3930FFFE, 0x1C0A0000,
|
||
+ 0x23620148, 0x36200000, 0x0F600144, 0x39209000,
|
||
+ 0x0B970DD4, 0x1C690140, 0x3E680148, 0x116A0148,
|
||
+ 0x2E610140, 0x1A084000, 0x0160014C, 0x3E30FFFF,
|
||
+ 0x2D0E0000, 0x23620148, 0x36200000, 0x18800928,
|
||
+ 0x3E680148, 0x1C6A014C, 0x1C690140, 0x0160014C,
|
||
+ 0x20620144, 0x1F090000, 0x2D0E0000, 0x2E610140,
|
||
+ 0x23620148, 0x1B208001, 0x06800DD6, 0x3368014C,
|
||
+ 0x12690148, 0x1F6A0140, 0x2E610140, 0x2D0E0000,
|
||
+ 0x23620148, 0x2E020000, 0x1632FFFE, 0x1C0A0000,
|
||
+ 0x2E680154, 0x20620144, 0x020C0000, 0x11600150,
|
||
+ 0x00208200, 0x06800DD6, 0x1F6A0140, 0x12690148,
|
||
+ 0x3368014C, 0x23620148, 0x2E610140, 0x3930FFFE,
|
||
+ 0x1C0A0000, 0x2E680154, 0x20620144, 0x020C0000,
|
||
+ 0x11600150, 0x00208200, 0x06800DD6, 0x25635F4E,
|
||
+ 0x146B5F42, 0x356A5F46, 0x38200008, 0x1A210000,
|
||
+ 0x0A330002, 0x0BD009F4, 0x28038000, 0x1632FFFE,
|
||
+ 0x3D33FFFF, 0x2E0EC000, 0x0A2309FF, 0x20800345,
|
||
+ 0x2B9702CD, 0x356A5F46, 0x2E9702C7, 0x356A5F46,
|
||
+ 0x2E9702C7, 0x356A5F46, 0x2E9702C7, 0x356A5F46,
|
||
+ 0x2E9702C7, 0x356A5F46, 0x2E9702C7, 0x3E695F48,
|
||
+ 0x356A5F46, 0x18350001, 0x17C80A12, 0x2D200028,
|
||
+ 0x21970372, 0x19685F4A, 0x33695F4C, 0x1632FFFE,
|
||
+ 0x1A048000, 0x0FC40A0C, 0x1E2D0001, 0x01615F4C,
|
||
+ 0x2B605F4A, 0x0A20FFFF, 0x1A210000, 0x356A5F46,
|
||
+ 0x15230A13, 0x20800345, 0x359706A6, 0x356A5F46,
|
||
+ 0x25200010, 0x1A210000, 0x176B5F4E, 0x20800345,
|
||
+ 0x0620FFFC, 0x2F970383, 0x03361F00, 0x38C80211,
|
||
+ 0x23320008, 0x33620138, 0x3F2A0011, 0x3BC40211,
|
||
+ 0x3E970398, 0x236B0130, 0x2D010000, 0x2435FFFE,
|
||
+ 0x23C8020F, 0x3008C000, 0x26C00A28, 0x12CC020F,
|
||
+ 0x126B5F44, 0x112E0002, 0x07625F46, 0x3D2F0002,
|
||
+ 0x20635F44, 0x3D33FFFF, 0x1632FFFE, 0x2E0EC000,
|
||
+ 0x1632FFFE, 0x3A9703A3, 0x2E680138, 0x3D695F44,
|
||
+ 0x02030000, 0x0B2B0003, 0x04C40A38, 0x3A200003,
|
||
+ 0x392C0003, 0x15072000, 0x333B0000, 0x02CC0213,
|
||
+ 0x36695F46, 0x092E0010, 0x2B034000, 0x1931FFFD,
|
||
+ 0x1C09C000, 0x040E4000, 0x082A0800, 0x30C40213,
|
||
+ 0x319702B8, 0x36200000, 0x15210120, 0x146B5F42,
|
||
+ 0x356A5F46, 0x06330001, 0x1BD00A4D, 0x14230A4E,
|
||
+ 0x20800345, 0x2B9702CD, 0x08970C0E, 0x356A5F46,
|
||
+ 0x2D200028, 0x1A210000, 0x26970345, 0x3D9702BB,
|
||
+ 0x3D695F44, 0x1A685F46, 0x1231FFFF, 0x2E0D0000,
|
||
+ 0x20610124, 0x3E30FFFF, 0x2E0D0000, 0x2D610120,
|
||
+ 0x16970D35, 0x01690134, 0x1C6A0120, 0x1861B010,
|
||
+ 0x172E0068, 0x0862B000, 0x0662B008, 0x31208808,
|
||
+ 0x3760B01C, 0x362300AF, 0x1A940D3A, 0x2169B024,
|
||
+ 0x1C390000, 0x14D00A74, 0x12690124, 0x03208400,
|
||
+ 0x142D0068, 0x0661B004, 0x3760B01C, 0x362300AF,
|
||
+ 0x1A940D3A, 0x2C69B020, 0x25310002, 0x1FD00A76,
|
||
+ 0x07970D42, 0x34800217, 0x07970D42, 0x1A685F46,
|
||
+ 0x3D695F44, 0x1C6A0120, 0x0C600124, 0x2E0D0000,
|
||
+ 0x23610128, 0x0C690130, 0x2E6B0134, 0x3930FFFE,
|
||
+ 0x2D0E0000, 0x2D62012C, 0x11630130, 0x33610134,
|
||
+ 0x19220000, 0x12625F3C, 0x1320E000, 0x3797022B,
|
||
+ 0x28680164, 0x0F690150, 0x30380000, 0x08D00EB7,
|
||
+ 0x2D6B0154, 0x126A0144, 0x3368014C, 0x30610154,
|
||
+ 0x312F0001, 0x12630150, 0x1C690140, 0x2E62014C,
|
||
+ 0x02600140, 0x28004000, 0x040D8000, 0x20610148,
|
||
+ 0x1132FFFF, 0x19088000, 0x0F600144, 0x00208200,
|
||
+ 0x00970DD6, 0x2B680168, 0x2D6B0154, 0x30380000,
|
||
+ 0x08D00EB7, 0x1C6A014C, 0x12690148, 0x12630150,
|
||
+ 0x23620148, 0x35098000, 0x2E610140, 0x040D8000,
|
||
+ 0x1132FFFF, 0x040D8000, 0x2D61014C, 0x3620F000,
|
||
+ 0x00970DD6, 0x3E680148, 0x1F69014C, 0x1F6A0140,
|
||
+ 0x35230000, 0x0C630144, 0x0160014C, 0x2E0D0000,
|
||
+ 0x20610148, 0x2D0E0000, 0x2D620140, 0x1B208001,
|
||
+ 0x00970DD6, 0x116A0148, 0x3368014C, 0x1C690140,
|
||
+ 0x2D6B0154, 0x2D620140, 0x2D0E0000, 0x3E30FFFF,
|
||
+ 0x2D0E0000, 0x23620148, 0x1F090000, 0x23610144,
|
||
+ 0x3D33FFFF, 0x12630150, 0x0F208010, 0x00970DD6,
|
||
+ 0x04690164, 0x3368014C, 0x1C390000, 0x08D00EB7,
|
||
+ 0x1C690140, 0x116A0148, 0x206B0150, 0x20610148,
|
||
+ 0x2D620140, 0x312F0001, 0x12630150, 0x1F090000,
|
||
+ 0x23610144, 0x1B208001, 0x00970DD6, 0x0C6A0150,
|
||
+ 0x2D6B0154, 0x3368014C, 0x12690148, 0x2E0EC000,
|
||
+ 0x3E620150, 0x010F0000, 0x3A33FFFE, 0x3D635F5C,
|
||
+ 0x3E6B0144, 0x2E610140, 0x300B0000, 0x0F630148,
|
||
+ 0x3930FFFE, 0x300B0000, 0x0C630144, 0x00208200,
|
||
+ 0x00970DD6, 0x0E970DE8, 0x07690168, 0x236A5F5C,
|
||
+ 0x1C390000, 0x08D00EB7, 0x1B970ECE, 0x2B200018,
|
||
+ 0x00800ED6, 0x0120FFFD, 0x2F970383, 0x03361F00,
|
||
+ 0x38C80211, 0x23320008, 0x33620138, 0x3F2A0011,
|
||
+ 0x3BC40211, 0x3E970398, 0x236B0130, 0x2D010000,
|
||
+ 0x2435FFFE, 0x23C8020F, 0x3008C000, 0x20C00B01,
|
||
+ 0x12CC020F, 0x126B5F44, 0x112E0002, 0x07625F46,
|
||
+ 0x3D2F0002, 0x20635F44, 0x0200C000, 0x3D33FFFF,
|
||
+ 0x010F0000, 0x1632FFFE, 0x2E0EC000, 0x1632FFFE,
|
||
+ 0x3A9703A3, 0x2E680138, 0x3D695F44, 0x02030000,
|
||
+ 0x0B2B0003, 0x09C40B13, 0x3A200003, 0x3F2C0005,
|
||
+ 0x15072000, 0x333B0000, 0x02CC0213, 0x36695F46,
|
||
+ 0x092E0010, 0x1531FFFE, 0x040E4000, 0x082A0800,
|
||
+ 0x30C40213, 0x319702B8, 0x36200000, 0x1A210000,
|
||
+ 0x3E6A5F44, 0x26970345, 0x08970C0E, 0x356A5F46,
|
||
+ 0x2D200028, 0x1A210000, 0x1132FFFF, 0x26970345,
|
||
+ 0x3D9702BB, 0x11685F44, 0x36695F46, 0x2E020000,
|
||
+ 0x2B034000, 0x3E30FFFF, 0x1231FFFF, 0x280C8000,
|
||
+ 0x0C600124, 0x2B0C4000, 0x0F600128, 0x010CC000,
|
||
+ 0x01600120, 0x16970D35, 0x01690134, 0x126A0128,
|
||
+ 0x3E610130, 0x1861B010, 0x172E0068, 0x0862B000,
|
||
+ 0x0662B008, 0x31208808, 0x3760B01C, 0x362300AF,
|
||
+ 0x1A940D3A, 0x2169B024, 0x1C390000, 0x32D40B46,
|
||
+ 0x07970D42, 0x3F800215, 0x12690124, 0x03208400,
|
||
+ 0x142D0068, 0x0661B004, 0x3760B01C, 0x362300AF,
|
||
+ 0x1A940D3A, 0x2C69B020, 0x25310002, 0x39D40B44,
|
||
+ 0x1C6A0120, 0x31208808, 0x172E0068, 0x0862B000,
|
||
+ 0x0662B008, 0x3760B01C, 0x362300AF, 0x1A940D3A,
|
||
+ 0x2169B024, 0x1C390000, 0x08D00B44, 0x03208400,
|
||
+ 0x3760B01C, 0x362300AF, 0x1A940D3A, 0x2C69B020,
|
||
+ 0x25310002, 0x39D40B44, 0x07970D42, 0x1A685F46,
|
||
+ 0x1F690120, 0x0F600128, 0x2E0D0000, 0x2E61012C,
|
||
+ 0x19220000, 0x12625F3C, 0x3620F000, 0x3797022B,
|
||
+ 0x3E680148, 0x1C6A014C, 0x1C690140, 0x0160014C,
|
||
+ 0x20620144, 0x1F090000, 0x2E610140, 0x2D0E0000,
|
||
+ 0x23620148, 0x1B208001, 0x00970DD6, 0x3368014C,
|
||
+ 0x12690148, 0x1F6A0140, 0x2E610140, 0x07018000,
|
||
+ 0x2E0D0000, 0x20610148, 0x3E30FFFF, 0x1C0A0000,
|
||
+ 0x2E680154, 0x20620144, 0x020C0000, 0x11600150,
|
||
+ 0x00208200, 0x00970DD6, 0x016A0154, 0x3368014C,
|
||
+ 0x336B0140, 0x3E620150, 0x12690148, 0x0F630148,
|
||
+ 0x300B0000, 0x0C630144, 0x3E30FFFF, 0x1F090000,
|
||
+ 0x2E610140, 0x1B208001, 0x00970DD6, 0x3368014C,
|
||
+ 0x1F6A0140, 0x12690148, 0x23620148, 0x1C0A0000,
|
||
+ 0x2E680154, 0x20620144, 0x2E610140, 0x020C0000,
|
||
+ 0x11600150, 0x00208200, 0x00970DD6, 0x3368014C,
|
||
+ 0x2D6B0154, 0x12690148, 0x1F6A0140, 0x12630150,
|
||
+ 0x2E610140, 0x2D695F58, 0x1C0A0000, 0x2E62014C,
|
||
+ 0x1F2D0030, 0x0D4A4000, 0x1F2D0006, 0x0E494000,
|
||
+ 0x0F3607FC, 0x26320002, 0x33620154, 0x28038000,
|
||
+ 0x06330001, 0x31D40BB3, 0x1D2E0001, 0x112E0002,
|
||
+ 0x20620144, 0x1132FFFF, 0x23620148, 0x00351F00,
|
||
+ 0x20310008, 0x33610158, 0x1320E000, 0x00970DD6,
|
||
+ 0x3D680144, 0x1C6A014C, 0x1C690140, 0x206B0150,
|
||
+ 0x2D0E0000, 0x2E62014C, 0x0200C000, 0x06330001,
|
||
+ 0x2BD40BC6, 0x322C0001, 0x3E2C0002, 0x3E30FFFF,
|
||
+ 0x2E0D0000, 0x2E610140, 0x1A210000, 0x20610148,
|
||
+ 0x1320E000, 0x00970DD6, 0x206B0150, 0x2E680154,
|
||
+ 0x1C6A014C, 0x0263014C, 0x11600150, 0x1C600154,
|
||
+ 0x02030000, 0x06330001, 0x30D40BD8, 0x322C0001,
|
||
+ 0x3E2C0002, 0x20620144, 0x1C0A0000, 0x2D620140,
|
||
+ 0x3E30FFFF, 0x2D0E0000, 0x23620148, 0x1B208001,
|
||
+ 0x00970DD6, 0x12690148, 0x126A0144, 0x206B0150,
|
||
+ 0x2E610140, 0x23620148, 0x0200C000, 0x3D33FFFF,
|
||
+ 0x12630150, 0x1C600154, 0x02030000, 0x06330001,
|
||
+ 0x30D40BEE, 0x322C0001, 0x3E2C0002, 0x0F600144,
|
||
+ 0x00208200, 0x00970DD6, 0x11690144, 0x116A0148,
|
||
+ 0x3368014C, 0x2D6B0154, 0x2D620140, 0x12630150,
|
||
+ 0x1C600154, 0x02030000, 0x06330001, 0x2FD40BFD,
|
||
+ 0x322C0001, 0x3E2C0002, 0x0160014C, 0x350A4000,
|
||
+ 0x23620148, 0x3930FFFE, 0x1C0A0000, 0x20620144,
|
||
+ 0x00208200, 0x00970DD6, 0x12690148, 0x016A0154,
|
||
+ 0x306B014C, 0x2E610140, 0x3E620150, 0x3D33FFFF,
|
||
+ 0x1C09C000, 0x088008E2, 0x25635F4E, 0x146B5F42,
|
||
+ 0x38200008, 0x1A210000, 0x3E6A5F44, 0x0A330002,
|
||
+ 0x1CD00C1A, 0x196B5F46, 0x1132FFFF, 0x2E0EC000,
|
||
+ 0x19230C2A, 0x20800345, 0x2B9702CD, 0x3E6A5F44,
|
||
+ 0x2E9702C7, 0x3E6A5F44, 0x19685F4A, 0x33695F4C,
|
||
+ 0x1632FFFE, 0x1A048000, 0x10C40C25, 0x1E2D0001,
|
||
+ 0x01615F4C, 0x2B605F4A, 0x356A5F46, 0x0A20FFFF,
|
||
+ 0x1A210000, 0x2B9702CD, 0x356A5F46, 0x25200010,
|
||
+ 0x1A210000, 0x176B5F4E, 0x20800345, 0x3780021B,
|
||
+ 0x02030000, 0x0C37FFFF, 0x0CCC021B, 0x052C0C35,
|
||
+ 0x21884000, 0x06800C36, 0x28970382, 0x3E20000E,
|
||
+ 0x2197038B, 0x093C000E, 0x12CC020F, 0x2A2001FF,
|
||
+ 0x2197038B, 0x3D605F3C, 0x3F340003, 0x12CC020F,
|
||
+ 0x122E000E, 0x1632FFFE, 0x3A9703A3, 0x319702B8,
|
||
+ 0x1122000E, 0x36200000, 0x1A210000, 0x26970345,
|
||
+ 0x01685F34, 0x122101D8, 0x3E610106, 0x3B2C0008,
|
||
+ 0x27490000, 0x3E2C0002, 0x0B480000, 0x07615F4A,
|
||
+ 0x2D605F4C, 0x0F685F3C, 0x30695F40, 0x3930FFFE,
|
||
+ 0x36605F3E, 0x1F090000, 0x04C40C58, 0x2E605F40,
|
||
+ 0x202001A0, 0x08230C5D, 0x19600104, 0x3B635F36,
|
||
+ 0x258002F5, 0x25200010, 0x19600104, 0x2B80043E,
|
||
+ 0x20970106, 0x15220003, 0x1F62B438, 0x2C695FCA,
|
||
+ 0x04685EDE, 0x19220000, 0x1461B400, 0x1162B406,
|
||
+ 0x30380000, 0x36C800A5, 0x2A340080, 0x00C80C6F,
|
||
+ 0x13200C80, 0x19230C70, 0x288000B4, 0x36605EDE,
|
||
+ 0x09685EEC, 0x332300A5, 0x19220000, 0x14625EEC,
|
||
+ 0x28695EDE, 0x366A5EF0, 0x30380000, 0x22C8010E,
|
||
+ 0x01198000, 0x2E6A5F02, 0x01198000, 0x336A5EA0,
|
||
+ 0x24D000B4, 0x3C36FDFF, 0x01625EA0, 0x288000B4,
|
||
+ 0x22215EDE, 0x1F220006, 0x1D97100D, 0x2F215EEC,
|
||
+ 0x21510000, 0x21510000, 0x21884000, 0x1F220030,
|
||
+ 0x1F62B438, 0x21695FCE, 0x19685EF0, 0x19220000,
|
||
+ 0x0161B420, 0x0462B426, 0x30380000, 0x3AC800A6,
|
||
+ 0x2A340080, 0x0CC80C95, 0x02200C9B, 0x05230C96,
|
||
+ 0x288000B4, 0x2B605EF0, 0x11685EFE, 0x3F2300A6,
|
||
+ 0x19220000, 0x0C625EFE, 0x1B800C74, 0x3F215EF0,
|
||
+ 0x1F220006, 0x1D97100D, 0x37215EFE, 0x21510000,
|
||
+ 0x21510000, 0x21884000, 0x1F220300, 0x1F62B438,
|
||
+ 0x21695FCE, 0x01685F02, 0x19220000, 0x0261B440,
|
||
+ 0x0762B446, 0x30380000, 0x3DC800A7, 0x2A340080,
|
||
+ 0x13C80CB0, 0x13200CB6, 0x11230CB1, 0x288000B4,
|
||
+ 0x33605F02, 0x19685F10, 0x382300A7, 0x19220000,
|
||
+ 0x04625F10, 0x1B800C74, 0x27215F02, 0x1F220006,
|
||
+ 0x1D97100D, 0x3F215F10, 0x21510000, 0x21510000,
|
||
+ 0x21884000, 0x04685EDE, 0x22215EDE, 0x30380000,
|
||
+ 0x0CD00CC9, 0x03205EEC, 0x0B518000, 0x0D500000,
|
||
+ 0x30695EA0, 0x0D500000, 0x00390200, 0x02615EA0,
|
||
+ 0x228B4000, 0x0200C000, 0x1F220006, 0x362300AF,
|
||
+ 0x19801030, 0x19685EF0, 0x3F215EF0, 0x30380000,
|
||
+ 0x0CD00CC9, 0x1B205EFE, 0x02800CC2, 0x01685F02,
|
||
+ 0x27215F02, 0x30380000, 0x0CD00CC9, 0x13205F10,
|
||
+ 0x02800CC2, 0x04685EDE, 0x22215EDE, 0x30380000,
|
||
+ 0x33D40CC1, 0x398000AF, 0x19685EF0, 0x3F215EF0,
|
||
+ 0x30380000, 0x35D000AF, 0x1B205EFE, 0x02800CC2,
|
||
+ 0x3B605EEC, 0x1C615EEE, 0x228B4000, 0x23605EFE,
|
||
+ 0x14615F00, 0x228B4000, 0x2B605F10, 0x0C615F12,
|
||
+ 0x228B4000, 0x19685EF0, 0x1A210000, 0x30380000,
|
||
+ 0x0DC80CFE, 0x1F61B434, 0x226A5FCE, 0x0761B426,
|
||
+ 0x0262B420, 0x2A340080, 0x01C80CFD, 0x28635E9C,
|
||
+ 0x3F215EF0, 0x1F220006, 0x1D97100D, 0x1A6B5E9C,
|
||
+ 0x288000B4, 0x07615EF0, 0x228B4000, 0x2E620116,
|
||
+ 0x1B200D02, 0x288000B4, 0x15970CD9, 0x1C6A0116,
|
||
+ 0x0D20B404, 0x19500011, 0x01500003, 0x1150C400,
|
||
+ 0x0A500001, 0x0E500180, 0x0D500000, 0x0962B414,
|
||
+ 0x352000AF, 0x192100AF, 0x362300AF, 0x11800CE4,
|
||
+ 0x01690102, 0x36200000, 0x0A350020, 0x28C8020D,
|
||
+ 0x30218000, 0x1F615ED4, 0x3B605EDA, 0x3D605EDC,
|
||
+ 0x228B4000, 0x2D695ED4, 0x30380000, 0x22C8010E,
|
||
+ 0x1C390000, 0x18D4010A, 0x3B605EDA, 0x228B4000,
|
||
+ 0x2D695ED4, 0x30380000, 0x22C8010E, 0x1C390000,
|
||
+ 0x18D4010A, 0x3D605EDC, 0x228B4000, 0x01685ED4,
|
||
+ 0x27215ED4, 0x30380000, 0x1ED4010C, 0x21510000,
|
||
+ 0x228B4000, 0x30695ECC, 0x07685ED2, 0x1C390000,
|
||
+ 0x06D400A4, 0x30380000, 0x31C800A4, 0x342300A4,
|
||
+ 0x288000B4, 0x3A215ECC, 0x0B518000, 0x36200000,
|
||
+ 0x35605ED2, 0x228B4000, 0x30695ECC, 0x35605ED2,
|
||
+ 0x1C390000, 0x30695EA0, 0x18D4010A, 0x12390008,
|
||
+ 0x02615EA0, 0x228B4000, 0x336A5EA0, 0x1C685ECC,
|
||
+ 0x3A215ECC, 0x2E36FFF7, 0x01625EA0, 0x30380000,
|
||
+ 0x1ED4010C, 0x21510000, 0x228B4000, 0x04685F52,
|
||
+ 0x30218000, 0x2D144000, 0x04CC00A9, 0x1A615F52,
|
||
+ 0x302300A9, 0x19200D53, 0x288000B4, 0x29200400,
|
||
+ 0x2660B144, 0x06210200, 0x1468B144, 0x3C34000F,
|
||
+ 0x2B190000, 0x0A61B144, 0x07645F52, 0x2D010000,
|
||
+ 0x20310008, 0x1139A0C8, 0x214B4000, 0x0F2D002C,
|
||
+ 0x0E494000, 0x2E020000, 0x06330001, 0x20377F00,
|
||
+ 0x1263010A, 0x21320003, 0x1A625F68, 0x2E020000,
|
||
+ 0x1032FFF8, 0x313A4001, 0x11625F6A, 0x2E020000,
|
||
+ 0x1132FFFF, 0x2C2E0D70, 0x07230D84, 0x0E8A4000,
|
||
+ 0x15205F7A, 0x228B4000, 0x12205F82, 0x228B4000,
|
||
+ 0x1C205F8A, 0x228B4000, 0x01205F92, 0x228B4000,
|
||
+ 0x0F205F9A, 0x228B4000, 0x07205FA2, 0x228B4000,
|
||
+ 0x09205FAA, 0x228B4000, 0x14205FB2, 0x228B4000,
|
||
+ 0x1A205FBA, 0x228B4000, 0x04205FC2, 0x228B4000,
|
||
+ 0x38605F6C, 0x27490000, 0x3E2C0002, 0x084B0000,
|
||
+ 0x3E2C0002, 0x244A0000, 0x3E2C0002, 0x0B480000,
|
||
+ 0x1F615F58, 0x38635F56, 0x17625F5A, 0x3E605F5C,
|
||
+ 0x10970E96, 0x236A5F5C, 0x266B010C, 0x1F3A0000,
|
||
+ 0x1AC80DA0, 0x19213000, 0x35098000, 0x190B4000,
|
||
+ 0x3061010E, 0x2CC00D9B, 0x34CC0EB5, 0x0A685F5A,
|
||
+ 0x1F230DA0, 0x33635F54, 0x046B5F68, 0x12800E9B,
|
||
+ 0x0F69010A, 0x0A6B5F56, 0x20310008, 0x0DC80DD1,
|
||
+ 0x2E6A5F58, 0x05390080, 0x162E0035, 0x0E458000,
|
||
+ 0x0E970DE8, 0x04685F52, 0x1B230DAD, 0x16341000,
|
||
+ 0x2DCC109C, 0x3A2000A0, 0x00645F53, 0x2D695F58,
|
||
+ 0x3197028E, 0x0269010E, 0x1A223000, 0x350A4000,
|
||
+ 0x1DC80DCD, 0x28680108, 0x25620114, 0x30380000,
|
||
+ 0x0CC80DBA, 0x06970CFF, 0x10970CD3, 0x0269010E,
|
||
+ 0x1B20B444, 0x19500011, 0x0A500001, 0x1150C400,
|
||
+ 0x0A500001, 0x2335FFFF, 0x15410000, 0x176A0114,
|
||
+ 0x3E2C0002, 0x0D500000, 0x1F62B454, 0x1D200DCB,
|
||
+ 0x31210DCB, 0x362300AF, 0x19800CEA, 0x35203000,
|
||
+ 0x1C60010E, 0x1A210000, 0x36610108, 0x1A615F52,
|
||
+ 0x398000AF, 0x19220000, 0x3662015E, 0x228B4000,
|
||
+ 0x1D210001, 0x3561015E, 0x1260015C, 0x38635F56,
|
||
+ 0x02970E78, 0x076B5F52, 0x0A685F6C, 0x3F37000F,
|
||
+ 0x293B0100, 0x2563B144, 0x25695F56, 0x3E2C0002,
|
||
+ 0x15410000, 0x26695F5A, 0x3E2C0002, 0x15410000,
|
||
+ 0x20695F5C, 0x3E2C0002, 0x15410000, 0x04800DB1,
|
||
+ 0x04685F52, 0x3569B140, 0x3930FFFE, 0x38D003AD,
|
||
+ 0x33635F54, 0x09300002, 0x02030000, 0x3C34000F,
|
||
+ 0x3D3CFFFF, 0x33228000, 0x1A120000, 0x301D8000,
|
||
+ 0x0761B140, 0x336A5EA0, 0x27CC0DF9, 0x2D36FFFB,
|
||
+ 0x01625EA0, 0x3D3CFFFF, 0x3A225F7A, 0x3530FFFD,
|
||
+ 0x1F060000, 0x22520000, 0x22520000, 0x153B2000,
|
||
+ 0x07685F32, 0x35635F52, 0x1A344000, 0x19C80E09,
|
||
+ 0x0A685F36, 0x2E9700B4, 0x02685F54, 0x362300AF,
|
||
+ 0x288000B4, 0x04685F52, 0x3569B140, 0x1F238000,
|
||
+ 0x3C34000F, 0x2E020000, 0x123EFFFF, 0x1C138000,
|
||
+ 0x2819C000, 0x0761B140, 0x3F30FFF8, 0x2838A084,
|
||
+ 0x18500020, 0x3B680118, 0x2E695F54, 0x0418C000,
|
||
+ 0x09600118, 0x351CC000, 0x28CC0E53, 0x2361011E,
|
||
+ 0x07685F68, 0x0763011C, 0x0260011A, 0x10970CD3,
|
||
+ 0x336B011A, 0x1B20B444, 0x1C500041, 0x0A500001,
|
||
+ 0x0E500180, 0x0D500000, 0x2D02C000, 0x2636FF00,
|
||
+ 0x0262B44C, 0x363700FF, 0x2563B44E, 0x3F222000,
|
||
+ 0x1F62B454, 0x3E6B011E, 0x36200000, 0x0F60011E,
|
||
+ 0x333B0000, 0x2BCC0E33, 0x362300AF, 0x16200E36,
|
||
+ 0x3A210E36, 0x19800CEA, 0x3668011C, 0x3569B140,
|
||
+ 0x146A0118, 0x1A1D0000, 0x0761B140, 0x191E0000,
|
||
+ 0x26620118, 0x09C80E4F, 0x36200000, 0x1D210001,
|
||
+ 0x28038000, 0x2E174000, 0x31CC0E46, 0x322C0001,
|
||
+ 0x1231FFFF, 0x0C800E40, 0x2861011C, 0x0E300003,
|
||
+ 0x2B695F32, 0x0260011A, 0x36354000, 0x0CC80E1F,
|
||
+ 0x0A200E1F, 0x096B5F36, 0x288000B4, 0x07685F32,
|
||
+ 0x26695F36, 0x1A344000, 0x33C800AF, 0x0D894000,
|
||
+ 0x1F3A0000, 0x3EC803AD, 0x3B635F36, 0x1A6B5F4A,
|
||
+ 0x19600104, 0x3E610106, 0x19625F3E, 0x23635F48,
|
||
+ 0x0B970CCD, 0x2B680104, 0x0F6A0106, 0x116B5F48,
|
||
+ 0x2360B428, 0x3C21B42A, 0x21510000, 0x0200C000,
|
||
+ 0x0934FF00, 0x281A0000, 0x0162B42C, 0x363700FF,
|
||
+ 0x2663B42E, 0x2B6A5F3E, 0x27200041, 0x2060B424,
|
||
+ 0x1C62B434, 0x3C210E5C, 0x362300AF, 0x18940CE7,
|
||
+ 0x096B5F36, 0x228B4000, 0x3B635F36, 0x39200120,
|
||
+ 0x1A210000, 0x0C220020, 0x1C6B5F4C, 0x11800E58,
|
||
+ 0x33635F54, 0x0F6B5F6A, 0x3A200140, 0x1A210000,
|
||
+ 0x0C220020, 0x3B605F60, 0x1C615F62, 0x12625F66,
|
||
+ 0x36635F5E, 0x10970CD3, 0x09685F60, 0x2D6A5F62,
|
||
+ 0x046B5F5E, 0x2060B448, 0x3F21B44A, 0x21510000,
|
||
+ 0x0200C000, 0x0934FF00, 0x281A0000, 0x0262B44C,
|
||
+ 0x363700FF, 0x2563B44E, 0x206A5F66, 0x27200041,
|
||
+ 0x2360B444, 0x1F62B454, 0x05200EB3, 0x24210E81,
|
||
+ 0x362300AF, 0x19800CEA, 0x33635F54, 0x36200000,
|
||
+ 0x16210140, 0x0F22002C, 0x0F6B5F6A, 0x3B605F60,
|
||
+ 0x1C615F62, 0x12625F66, 0x36635F5E, 0x10970CD3,
|
||
+ 0x286A5F5E, 0x09685F60, 0x2E695F62, 0x28038000,
|
||
+ 0x0A37FF00, 0x0418C000, 0x2060B448, 0x1A3600FF,
|
||
+ 0x0462B44A, 0x0161B44C, 0x36200000, 0x2660B44E,
|
||
+ 0x206A5F66, 0x22200011, 0x2360B444, 0x1F62B454,
|
||
+ 0x3F210E9F, 0x362300AF, 0x1C940CEA, 0x016B5F54,
|
||
+ 0x228B4000, 0x0B210041, 0x1D800DA4, 0x08210021,
|
||
+ 0x1D800DA4, 0x2E6A5F58, 0x04690164, 0x012E0028,
|
||
+ 0x1C390000, 0x1CD00ECA, 0x1F090000, 0x1531FFFE,
|
||
+ 0x2B680168, 0x3F418000, 0x2F34001F, 0x112E0002,
|
||
+ 0x13408000, 0x2B008000, 0x3E2C0002, 0x0D500000,
|
||
+ 0x0D500000, 0x228B4000, 0x1C208000, 0x13408000,
|
||
+ 0x36200000, 0x19800EC3, 0x01685F58, 0x1A210000,
|
||
+ 0x2E2C0028, 0x0D500000, 0x0D500000, 0x0D500000,
|
||
+ 0x15410000, 0x228B4000, 0x11230DA8, 0x0F3607FC,
|
||
+ 0x3EC803AD, 0x33635F54, 0x026B5F58, 0x12625F66,
|
||
+ 0x010CC000, 0x084B0000, 0x3E2C0002, 0x0B480000,
|
||
+ 0x33635F62, 0x2D6B010E, 0x36605F64, 0x2D0DC000,
|
||
+ 0x36610108, 0x1B970CBD, 0x02685F62, 0x28695F64,
|
||
+ 0x3B60B40C, 0x1C61B40E, 0x28680108, 0x206A5F66,
|
||
+ 0x2921B40A, 0x3660B408, 0x21510000, 0x28200081,
|
||
+ 0x3560B404, 0x0962B414, 0x02685F54, 0x2A210EE5,
|
||
+ 0x362300AF, 0x11800CE4, 0x2D695F6E, 0x1C208000,
|
||
+ 0x28150000, 0x1BC80EFB, 0x228B4000, 0x336A5EA0,
|
||
+ 0x33605F6E, 0x0B200F01, 0x2B36FFFD, 0x01625EA0,
|
||
+ 0x288000B4, 0x15685FDC, 0x2D695F6E, 0x30380000,
|
||
+ 0x04C80F64, 0x28605F70, 0x232C0040, 0x27490000,
|
||
+ 0x2E655F6E, 0x3865B112, 0x1F31FFFB, 0x232D4010,
|
||
+ 0x0D4A4000, 0x1F6BB110, 0x122D0002, 0x1F0AC000,
|
||
+ 0x33C00F58, 0x214B4000, 0x2C2DFFF6, 0x333B0000,
|
||
+ 0x2AD40F1D, 0x1A685F70, 0x012D0012, 0x0D4A4000,
|
||
+ 0x282C0042, 0x084B0000, 0x312DFFEE, 0x1F1F8000,
|
||
+ 0x3BCC0F5A, 0x28004000, 0x37215F72, 0x0B97104D,
|
||
+ 0x3D695F72, 0x332C0006, 0x13350003, 0x31CC0F5F,
|
||
+ 0x37215F72, 0x2922FFFC, 0x16971063, 0x1A685F70,
|
||
+ 0x33215FDC, 0x0B970FCB, 0x12971097, 0x1B970CBD,
|
||
+ 0x196B5F70, 0x11685F72, 0x3B695F74, 0x2A22B40A,
|
||
+ 0x3563B408, 0x22520000, 0x3B60B40C, 0x1C61B40E,
|
||
+ 0x28200081, 0x3560B404, 0x20200040, 0x2660B414,
|
||
+ 0x30210F2A, 0x362300AF, 0x14940CE4, 0x01685F6E,
|
||
+ 0x39695FEA, 0x353400FF, 0x3330FFFB, 0x0A2C401A,
|
||
+ 0x084B0000, 0x1E2D0001, 0x312F0001, 0x3A430000,
|
||
+ 0x002CFFF6, 0x244A0000, 0x332C0006, 0x084B0000,
|
||
+ 0x0B615FEA, 0x312F0001, 0x1F0AC000, 0x1BC40F4D,
|
||
+ 0x35230000, 0x3A430000, 0x2E6A5F6E, 0x1A685F70,
|
||
+ 0x1A3600FF, 0x3A3A1000, 0x1462B130, 0x06970FA3,
|
||
+ 0x1C208000, 0x33605F6E, 0x08230F01, 0x26800130,
|
||
+ 0x0D210088, 0x29655F6F, 0x1A685F70, 0x2D695F6E,
|
||
+ 0x3D2C0038, 0x0B480000, 0x0C800F03, 0x35970110,
|
||
+ 0x1A685F70, 0x33215FDC, 0x06230F53, 0x0D800FCB,
|
||
+ 0x336A5EA0, 0x3C350800, 0x1F615F6E, 0x33C800AF,
|
||
+ 0x143A0002, 0x01625EA0, 0x398000AF, 0x1768B148,
|
||
+ 0x05300001, 0x11D00F74, 0x03300007, 0x15D00F79,
|
||
+ 0x0C300008, 0x3D3CFFFF, 0x1464B148, 0x388000A8,
|
||
+ 0x35230000, 0x2663B148, 0x39635FF2, 0x32635FF0,
|
||
+ 0x0B800F6E, 0x0E710048, 0x13710149, 0x2871804B,
|
||
+ 0x12800F7B, 0x00685FFC, 0x276AB1F8, 0x0934FF00,
|
||
+ 0x0C300008, 0x322C0001, 0x03361F00, 0x23320008,
|
||
+ 0x1C0A0000, 0x06C00114, 0x3F225E90, 0x3330FFFB,
|
||
+ 0x1C2C4000, 0x1C0A0000, 0x10C0010E, 0x2F605FD2,
|
||
+ 0x06625FD4, 0x242A000F, 0x16C00108, 0x228B4000,
|
||
+ 0x10685FD6, 0x37695FD4, 0x30380000, 0x01C80F97,
|
||
+ 0x27490000, 0x0E615FD6, 0x228B4000, 0x33290044,
|
||
+ 0x3DC00F9F, 0x1D685FD2, 0x05615FD4, 0x2D010000,
|
||
+ 0x022D0044, 0x03615FD2, 0x228B4000, 0x361C0000,
|
||
+ 0x2F605FD2, 0x29605FD4, 0x228B4000, 0x3C695FD6,
|
||
+ 0x30380000, 0x22C8010E, 0x15410000, 0x22605FD6,
|
||
+ 0x228B4000, 0x1C390000, 0x24C80108, 0x0D4A4000,
|
||
+ 0x30380000, 0x22C8010E, 0x10404000, 0x1F3A0000,
|
||
+ 0x14C80FB7, 0x362C003A, 0x16420000, 0x122E0038,
|
||
+ 0x062CFFC6, 0x13408000, 0x228B4000, 0x222DFFFE,
|
||
+ 0x10404000, 0x228B4000, 0x1C390000, 0x24C80108,
|
||
+ 0x0D4A4000, 0x30380000, 0x22C8010E, 0x10404000,
|
||
+ 0x1F3A0000, 0x0BC80FC8, 0x3D2C0038, 0x16420000,
|
||
+ 0x192E003A, 0x0E2CFFC8, 0x13408000, 0x228B4000,
|
||
+ 0x122D0002, 0x10404000, 0x228B4000, 0x1C390000,
|
||
+ 0x24C80108, 0x30380000, 0x22C8010E, 0x2D635E96,
|
||
+ 0x362C003A, 0x084B0000, 0x0E2CFFFE, 0x244A0000,
|
||
+ 0x333B0000, 0x1EC80FDE, 0x1F3A0000, 0x12C80FEB,
|
||
+ 0x3E2F0038, 0x1542C000, 0x192E003A, 0x0D2FFFC8,
|
||
+ 0x10438000, 0x1C800FE6, 0x3F424000, 0x1F3A0000,
|
||
+ 0x1DC80FE4, 0x192E003A, 0x10438000, 0x1C800FE6,
|
||
+ 0x122D0002, 0x3F424000, 0x0D500000, 0x0D500000,
|
||
+ 0x1F6B5E96, 0x0D2CFFC4, 0x228B4000, 0x122D0002,
|
||
+ 0x3F424000, 0x3E2F0038, 0x1542C000, 0x1C800FE6,
|
||
+ 0x2A320001, 0x0A367FFF, 0x19C81003, 0x252A0008,
|
||
+ 0x3EC00FFF, 0x0D500000, 0x0D500000, 0x0D500000,
|
||
+ 0x0D500000, 0x0D500000, 0x0D500000, 0x0D500000,
|
||
+ 0x0D500000, 0x19C81003, 0x05800FF3, 0x26260008,
|
||
+ 0x0D500000, 0x262EFFFF, 0x24CC1000, 0x228B4000,
|
||
+ 0x26635E94, 0x1D97100D, 0x146B5E94, 0x288000B4,
|
||
+ 0x26635E94, 0x1D97100D, 0x02030000, 0x17685E94,
|
||
+ 0x288000B4, 0x22484000, 0x0F615E92, 0x28605E90,
|
||
+ 0x0C300008, 0x3FD4102E, 0x2D635E96, 0x2C34007F,
|
||
+ 0x3E30FFFF, 0x122D0002, 0x2E0D0000, 0x214B4000,
|
||
+ 0x05300001, 0x322C0001, 0x36695E90, 0x191E0000,
|
||
+ 0x3FCC101E, 0x36200000, 0x07024000, 0x36368000,
|
||
+ 0x0035007F, 0x1A1D0000, 0x3D695E92, 0x03C8102C,
|
||
+ 0x23320008, 0x281A0000, 0x1E2D0001, 0x0E464000,
|
||
+ 0x0200C000, 0x1F6B5E96, 0x30380000, 0x228B4000,
|
||
+ 0x3F424000, 0x04801028, 0x361C0000, 0x228B4000,
|
||
+ 0x28605E90, 0x22484000, 0x0A625E94, 0x0C300008,
|
||
+ 0x36D4104B, 0x2E020000, 0x0C300008, 0x2C34007F,
|
||
+ 0x0336007F, 0x191E0000, 0x24C80108, 0x3E30FFFF,
|
||
+ 0x356A5E90, 0x0F615E92, 0x122D0002, 0x2E0D0000,
|
||
+ 0x3F424000, 0x386A5E94, 0x3D695E92, 0x05300001,
|
||
+ 0x322C0001, 0x191E0000, 0x3CCC1048, 0x36200000,
|
||
+ 0x29380080, 0x21444000, 0x228B4000, 0x36200000,
|
||
+ 0x1A80103C, 0x2D635E96, 0x084B0000, 0x3E2C0002,
|
||
+ 0x13434000, 0x244A0000, 0x122D0002, 0x3F424000,
|
||
+ 0x2E1B8000, 0x3E2C0002, 0x244A0000, 0x122D0002,
|
||
+ 0x3F424000, 0x2E1B8000, 0x3E2C0002, 0x244A0000,
|
||
+ 0x122D0002, 0x3F424000, 0x2B1AC000, 0x1F6B5E96,
|
||
+ 0x3E2C0002, 0x122D0002, 0x228B4000, 0x28605E90,
|
||
+ 0x0F615E92, 0x2D635E96, 0x27490000, 0x280C8000,
|
||
+ 0x0B480000, 0x1C390000, 0x09C8108A, 0x03340FFC,
|
||
+ 0x0EC81072, 0x15280041, 0x3CC01072, 0x16240041,
|
||
+ 0x15072000, 0x0E801077, 0x1831FFFA, 0x07024000,
|
||
+ 0x2936FFC0, 0x2B034000, 0x3937003F, 0x3D695E92,
|
||
+ 0x22484000, 0x1A048000, 0x10404000, 0x122D0002,
|
||
+ 0x22484000, 0x2C04C400, 0x10404000, 0x0AC4108A,
|
||
+ 0x122D0002, 0x22484000, 0x19220000, 0x05048400,
|
||
+ 0x10404000, 0x0AC4108A, 0x122D0002, 0x22484000,
|
||
+ 0x05048400, 0x10404000, 0x1F6B5E96, 0x1A685E90,
|
||
+ 0x228B4000, 0x14685F14, 0x32215F14, 0x30380000,
|
||
+ 0x15D01093, 0x0B518000, 0x228B4000, 0x0200C000,
|
||
+ 0x12220002, 0x362300AF, 0x19801030, 0x14685F14,
|
||
+ 0x3A215F1A, 0x30380000, 0x15D01093, 0x228B4000,
|
||
+ 0x14685F14, 0x32215F14, 0x30380000, 0x1ED4010C,
|
||
+ 0x2A340080, 0x14C810A4, 0x12220002, 0x11801008,
|
||
+ 0x21510000, 0x1C685F1A, 0x28635E9C, 0x30380000,
|
||
+ 0x2DCC10AA, 0x228B4000, 0x3A215F1A, 0x12220002,
|
||
+ 0x14971004, 0x1A6B5E9C, 0x198010A5, 0x3DFFFFFF,
|
||
+ 0x01000000, 0x01000000, 0x01000000
|
||
+};
|
||
+
|
||
+// Encapsulates the PKA firmware images information.
|
||
+typedef struct {
|
||
+ const uint32_t *farm_img;
|
||
+ uint32_t farm_img_size;
|
||
+ const uint32_t *boot_img;
|
||
+ uint32_t boot_img_size;
|
||
+ const uint32_t *master_img;
|
||
+ uint32_t master_img_size;
|
||
+} pka_firmware_info_t;
|
||
+
|
||
+static const pka_firmware_info_t pka_firmware_array[] =
|
||
+{
|
||
+ {
|
||
+ fw0_farm_img_data_buf, 2048, // actual length is 1652
|
||
+ fw0_boot_img_data_buf, 152,
|
||
+ fw0_master_img_data_buf, 4161
|
||
+ },
|
||
+ {
|
||
+ fw1_farm_img_data_buf, 2048, // actual length is 2000
|
||
+ fw1_boot_img_data_buf, 127,
|
||
+ fw1_master_img_data_buf, 4186
|
||
+ },
|
||
+ {
|
||
+ fw2_farm_img_data_buf, 2048, // actual length is 2045
|
||
+ fw2_boot_img_data_buf, 154,
|
||
+ fw2_master_img_data_buf, 4275
|
||
+ }
|
||
+};
|
||
+
|
||
+#define PKA_FIRMWARE_IMAGE_0_ID 0
|
||
+#define PKA_FIRMWARE_IMAGE_1_ID 1
|
||
+#define PKA_FIRMWARE_IMAGE_2_ID 2
|
||
+
|
||
+// Global storage for the actual firmware identifier
|
||
+static uint8_t pka_firmware_id;
|
||
+
|
||
+// Setter of pka_firmware_id
|
||
+static inline void pka_firmware_set_id(uint8_t id)
|
||
+{
|
||
+ pka_firmware_id = id;
|
||
+}
|
||
+
|
||
+// Getter of pka_firmware_id
|
||
+static inline uint8_t pka_firmware_get_id(void)
|
||
+{
|
||
+ return pka_firmware_id;
|
||
+}
|
||
+
|
||
+
|
||
+#endif
|
||
diff --git a/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_ioctl.h b/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_ioctl.h
|
||
new file mode 100644
|
||
index 000000000..8081a01fd
|
||
--- /dev/null
|
||
+++ b/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_ioctl.h
|
||
@@ -0,0 +1,127 @@
|
||
+//
|
||
+// BSD LICENSE
|
||
+//
|
||
+// Copyright(c) 2016 Mellanox Technologies, Ltd. All rights reserved.
|
||
+// All rights reserved.
|
||
+//
|
||
+// Redistribution and use in source and binary forms, with or without
|
||
+// modification, are permitted provided that the following conditions
|
||
+// are met:
|
||
+//
|
||
+// * Redistributions of source code must retain the above copyright
|
||
+// notice, this list of conditions and the following disclaimer.
|
||
+// * Redistributions in binary form must reproduce the above copyright
|
||
+// notice, this list of conditions and the following disclaimer in
|
||
+// the documentation and/or other materials provided with the
|
||
+// distribution.
|
||
+// * Neither the name of Mellanox Technologies nor the names of its
|
||
+// contributors may be used to endorse or promote products derived
|
||
+// from this software without specific prior written permission.
|
||
+//
|
||
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
+//
|
||
+
|
||
+#ifndef __PKA_IOCTL_H__
|
||
+#define __PKA_IOCTL_H__
|
||
+
|
||
+
|
||
+#include <linux/types.h>
|
||
+#include <linux/ioctl.h>
|
||
+
|
||
+#define PKA_IOC_TYPE 0xB7
|
||
+
|
||
+/// PKA_RING_GET_REGION_INFO - _IORW(PKA_IOC_TYPE, 0x0, pka_dev_region_info_t)
|
||
+///
|
||
+/// Retrieve information about a device region. This is intended to describe
|
||
+/// MMIO, I/O port, as well as bus specific regions (ex. PCI config space).
|
||
+/// Zero sized regions may be used to describe unimplemented regions.
|
||
+/// Return: 0 on success, -errno on failure.
|
||
+typedef struct
|
||
+{
|
||
+ uint32_t reg_index; ///< Registers region index.
|
||
+ uint64_t reg_size; ///< Registers region size (bytes).
|
||
+ uint64_t reg_offset; ///< Registers region offset from start of device fd.
|
||
+
|
||
+ uint32_t mem_index; ///< Memory region index.
|
||
+ uint64_t mem_size; ///< Memory region size (bytes).
|
||
+ uint64_t mem_offset; ///< Memeory region offset from start of device fd.
|
||
+} pka_dev_region_info_t;
|
||
+#define PKA_RING_GET_REGION_INFO _IOWR(PKA_IOC_TYPE, 0x0, pka_dev_region_info_t)
|
||
+
|
||
+/// PKA_GET_RING_INFO - _IORW(PKA_IOC_TYPE, 0x1, pka_dev_ring_info_t)
|
||
+///
|
||
+/// Retrieve information about a ring. This is intended to describe ring
|
||
+/// information words located in PKA_BUFFER_RAM. Ring information includes
|
||
+/// base addresses, size and statistics.
|
||
+/// Return: 0 on success, -errno on failure.
|
||
+typedef struct // Bluefield specific ring information
|
||
+{
|
||
+ /// Base address of the command descriptor ring.
|
||
+ uint64_t cmmd_base;
|
||
+
|
||
+ /// Base address of the result descriptor ring.
|
||
+ uint64_t rslt_base;
|
||
+
|
||
+ /// Size of a command ring in number of descriptors, minus 1.
|
||
+ /// Minimum value is 0 (for 1 descriptor); maximum value is
|
||
+ /// 65535 (for 64K descriptors).
|
||
+ uint16_t size;
|
||
+
|
||
+ /// This field specifies the size (in 32-bit words) of the
|
||
+ /// space that PKI command and result descriptor occupies on
|
||
+ /// the Host.
|
||
+ uint16_t host_desc_size : 10;
|
||
+
|
||
+ /// Indicates whether the result ring delivers results strictly
|
||
+ /// in-order ('1') or that result descriptors are written to the
|
||
+ /// result ring as soon as they become available, so out-of-order
|
||
+ /// ('0').
|
||
+ uint8_t in_order : 1;
|
||
+
|
||
+ /// Read pointer of the command descriptor ring.
|
||
+ uint16_t cmmd_rd_ptr;
|
||
+
|
||
+ /// Write pointer of the result descriptor ring.
|
||
+ uint16_t rslt_wr_ptr;
|
||
+
|
||
+ /// Read statistics of the command descriptor ring.
|
||
+ uint16_t cmmd_rd_stats;
|
||
+
|
||
+ /// Write statistics of the result descriptor ring.
|
||
+ uint16_t rslt_wr_stats;
|
||
+
|
||
+} pka_dev_hw_ring_info_t;
|
||
+#define PKA_GET_RING_INFO _IOWR(PKA_IOC_TYPE, 0x1, pka_dev_hw_ring_info_t)
|
||
+
|
||
+/// PKA_CLEAR_RING_COUNTERS - _IO(PKA_IOC_TYPE, 0x2)
|
||
+///
|
||
+/// Clear counters. This is intended to reset all command and result counters.
|
||
+/// Return: 0 on success, -errno on failure.
|
||
+#define PKA_CLEAR_RING_COUNTERS _IO(PKA_IOC_TYPE, 0x2)
|
||
+
|
||
+/// PKA_GET_RANDOM_BYTES - _IOWR(PKA_IOC_TYPE, 0x3, pka_dev_trng_info_t)
|
||
+///
|
||
+/// Get random bytes from True Random Number Generator(TRNG).
|
||
+/// Return: 0 on success, -errno on failure.
|
||
+typedef struct // True Random Number Generator information
|
||
+{
|
||
+ /// Number of random bytes in the buffer; Length of the buffer.
|
||
+ uint32_t count;
|
||
+
|
||
+ /// Data buffer to hold the random bytes.
|
||
+ uint8_t *data;
|
||
+
|
||
+} pka_dev_trng_info_t;
|
||
+#define PKA_GET_RANDOM_BYTES _IOWR(PKA_IOC_TYPE, 0x3, pka_dev_trng_info_t)
|
||
+
|
||
+#endif // __PKA_IOCTL_H__
|
||
diff --git a/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_mmio.h b/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_mmio.h
|
||
new file mode 100644
|
||
index 000000000..c70823c2a
|
||
--- /dev/null
|
||
+++ b/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_mmio.h
|
||
@@ -0,0 +1,49 @@
|
||
+//
|
||
+// BSD LICENSE
|
||
+//
|
||
+// Copyright(c) 2016 Mellanox Technologies, Ltd. All rights reserved.
|
||
+// All rights reserved.
|
||
+//
|
||
+// Redistribution and use in source and binary forms, with or without
|
||
+// modification, are permitted provided that the following conditions
|
||
+// are met:
|
||
+//
|
||
+// * Redistributions of source code must retain the above copyright
|
||
+// notice, this list of conditions and the following disclaimer.
|
||
+// * Redistributions in binary form must reproduce the above copyright
|
||
+// notice, this list of conditions and the following disclaimer in
|
||
+// the documentation and/or other materials provided with the
|
||
+// distribution.
|
||
+// * Neither the name of Mellanox Technologies nor the names of its
|
||
+// contributors may be used to endorse or promote products derived
|
||
+// from this software without specific prior written permission.
|
||
+//
|
||
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
+//
|
||
+
|
||
+#ifndef __PKA_MMIO_H__
|
||
+#define __PKA_MMIO_H__
|
||
+
|
||
+
|
||
+/// Macros for standard MMIO functions.
|
||
+
|
||
+#include <linux/types.h>
|
||
+#include <linux/compiler.h>
|
||
+#include <linux/io.h>
|
||
+
|
||
+#define pka_mmio_read64(addr) readq_relaxed(addr)
|
||
+#define pka_mmio_write64(addr, val) writeq_relaxed((val), (addr))
|
||
+#define pka_mmio_read(addr) pka_mmio_read64(addr)
|
||
+#define pka_mmio_write(addr, val) pka_mmio_write64((addr), (val))
|
||
+
|
||
+#endif // __PKA_MMIO_H__
|
||
diff --git a/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_ring.h b/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_ring.h
|
||
new file mode 100644
|
||
index 000000000..be56b61ee
|
||
--- /dev/null
|
||
+++ b/drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_ring.h
|
||
@@ -0,0 +1,276 @@
|
||
+//
|
||
+// BSD LICENSE
|
||
+//
|
||
+// Copyright(c) 2016 Mellanox Technologies, Ltd. All rights reserved.
|
||
+// All rights reserved.
|
||
+//
|
||
+// Redistribution and use in source and binary forms, with or without
|
||
+// modification, are permitted provided that the following conditions
|
||
+// are met:
|
||
+//
|
||
+// * Redistributions of source code must retain the above copyright
|
||
+// notice, this list of conditions and the following disclaimer.
|
||
+// * Redistributions in binary form must reproduce the above copyright
|
||
+// notice, this list of conditions and the following disclaimer in
|
||
+// the documentation and/or other materials provided with the
|
||
+// distribution.
|
||
+// * Neither the name of Mellanox Technologies nor the names of its
|
||
+// contributors may be used to endorse or promote products derived
|
||
+// from this software without specific prior written permission.
|
||
+//
|
||
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
+//
|
||
+
|
||
+#ifndef __PKA_RING_H__
|
||
+#define __PKA_RING_H__
|
||
+
|
||
+///
|
||
+/// @file
|
||
+///
|
||
+/// This file forms an interface to the BlueField Public Key Accelerator based
|
||
+/// on EIP-154.
|
||
+///
|
||
+/// Rings are used as a communication mechanism between ARM cores (controller)
|
||
+/// and the farm engines controlled by EIP-154 master firmware.
|
||
+///
|
||
+/// Note that the API defines data stuctures and functions to manage rings
|
||
+/// within window RAM, and to enqueue/dequeue descriptors. Rings are considered
|
||
+/// as a memory of descriptors (command/result descriptors) using finite size
|
||
+/// circular queue and a couple of control status registers (count registers).
|
||
+///
|
||
+
|
||
+
|
||
+#include <linux/types.h>
|
||
+
|
||
+#ifdef PKA_LIB_RING_DEBUG
|
||
+// A structure that stores the ring statistics.
|
||
+typedef struct
|
||
+{
|
||
+ uint64_t enq_success_cmd; ///< Cmd descriptors successfully enqueued.
|
||
+ uint64_t enq_fail_cmd; ///< Cmd descriptors that failed to be enqueued.
|
||
+ uint64_t deq_success_rslt; ///< Rslt descriptors successfully dequeued.
|
||
+ uint64_t deq_fail_rslt; ///< Rslt descriptors that failed to be dequeued.
|
||
+} pka_ring_debug_stats __pka_cache_aligned;
|
||
+#endif
|
||
+
|
||
+#ifdef PKA_LIB_RING_DEBUG
|
||
+#define __RING_STAT_ADD(r, name, n) ({ ##r##->stats.##name += 1; })
|
||
+#else
|
||
+#define __RING_STAT_ADD(r, name, n) do {} while(0)
|
||
+#endif
|
||
+
|
||
+/// Bluefield PKA command descriptor.
|
||
+typedef struct // 64 bytes long. 64 bytes aligned
|
||
+{
|
||
+ uint64_t pointer_a;
|
||
+ uint64_t pointer_b;
|
||
+ uint64_t pointer_c;
|
||
+ uint64_t pointer_d;
|
||
+ uint64_t tag;
|
||
+ uint64_t pointer_e;
|
||
+
|
||
+#ifdef __AARCH64EB__
|
||
+ uint64_t linked : 1;
|
||
+ uint64_t driver_status : 2;
|
||
+ uint64_t odd_powers : 5; ///< shiftCnt for shift ops
|
||
+ uint64_t kdk : 2; ///< Key Decryption Key number
|
||
+ uint64_t encrypted_mask : 6;
|
||
+ uint64_t rsvd_3 : 8;
|
||
+ uint64_t command : 8;
|
||
+ uint64_t rsvd_2 : 5;
|
||
+ uint64_t length_b : 9;
|
||
+ uint64_t output_attr : 1;
|
||
+ uint64_t input_attr : 1;
|
||
+ uint64_t rsvd_1 : 5;
|
||
+ uint64_t length_a : 9;
|
||
+ uint64_t rsvd_0 : 2;
|
||
+#else
|
||
+ uint64_t rsvd_0 : 2;
|
||
+ uint64_t length_a : 9;
|
||
+ uint64_t rsvd_1 : 5;
|
||
+ uint64_t input_attr : 1;
|
||
+ uint64_t output_attr : 1;
|
||
+ uint64_t length_b : 9;
|
||
+ uint64_t rsvd_2 : 5;
|
||
+ uint64_t command : 8;
|
||
+ uint64_t rsvd_3 : 8;
|
||
+ uint64_t encrypted_mask : 6;
|
||
+ uint64_t kdk : 2; ///< Key Decryption Key number
|
||
+ uint64_t odd_powers : 5; ///< shiftCnt for shift ops
|
||
+ uint64_t driver_status : 2;
|
||
+ uint64_t linked : 1;
|
||
+#endif
|
||
+
|
||
+ uint64_t rsvd_4;
|
||
+} pka_ring_hw_cmd_desc_t;
|
||
+
|
||
+#define CMD_DESC_SIZE sizeof(pka_ring_hw_cmd_desc_t) // Must be 64
|
||
+
|
||
+/// Bluefield PKA result descriptor.
|
||
+typedef struct // 64 bytes long. 64 bytes aligned
|
||
+{
|
||
+ uint64_t pointer_a;
|
||
+ uint64_t pointer_b;
|
||
+ uint64_t pointer_c;
|
||
+ uint64_t pointer_d;
|
||
+ uint64_t tag;
|
||
+
|
||
+#ifdef __AARCH64EB__
|
||
+ uint64_t rsvd_5 : 13;
|
||
+ uint64_t cmp_result : 3;
|
||
+ uint64_t modulo_is_0 : 1;
|
||
+ uint64_t rsvd_4 : 2;
|
||
+ uint64_t modulo_msw_offset : 11;
|
||
+ uint64_t rsvd_3 : 2;
|
||
+ uint64_t rsvd_2 : 11;
|
||
+ uint64_t main_result_msb_offset : 5;
|
||
+ uint64_t result_is_0 : 1;
|
||
+ uint64_t rsvd_1 : 2;
|
||
+ uint64_t main_result_msw_offset : 11;
|
||
+ uint64_t rsvd_0 : 2;
|
||
+
|
||
+ uint64_t linked : 1;
|
||
+ uint64_t driver_status : 2; ///< Always written to 0
|
||
+ uint64_t odd_powers : 5; ///< shiftCnt for shift ops
|
||
+ uint64_t kdk : 2; ///< Key Decryption Key number
|
||
+ uint64_t encrypted_mask : 6;
|
||
+ uint64_t result_code : 8;
|
||
+ uint64_t command : 8;
|
||
+ uint64_t rsvd_8 : 5;
|
||
+ uint64_t length_b : 9;
|
||
+ uint64_t output_attr : 1;
|
||
+ uint64_t input_attr : 1;
|
||
+ uint64_t rsvd_7 : 5;
|
||
+ uint64_t length_a : 9;
|
||
+ uint64_t rsvd_6 : 2;
|
||
+#else
|
||
+ uint64_t rsvd_0 : 2;
|
||
+ uint64_t main_result_msw_offset : 11;
|
||
+ uint64_t rsvd_1 : 2;
|
||
+ uint64_t result_is_0 : 1;
|
||
+ uint64_t main_result_msb_offset : 5;
|
||
+ uint64_t rsvd_2 : 11;
|
||
+ uint64_t rsvd_3 : 2;
|
||
+ uint64_t modulo_msw_offset : 11;
|
||
+ uint64_t rsvd_4 : 2;
|
||
+ uint64_t modulo_is_0 : 1;
|
||
+ uint64_t cmp_result : 3;
|
||
+ uint64_t rsvd_5 : 13;
|
||
+
|
||
+ uint64_t rsvd_6 : 2;
|
||
+ uint64_t length_a : 9;
|
||
+ uint64_t rsvd_7 : 5;
|
||
+ uint64_t input_attr : 1;
|
||
+ uint64_t output_attr : 1;
|
||
+ uint64_t length_b : 9;
|
||
+ uint64_t rsvd_8 : 5;
|
||
+ uint64_t command : 8;
|
||
+ uint64_t result_code : 8;
|
||
+ uint64_t encrypted_mask : 6;
|
||
+ uint64_t kdk : 2; ///< Key Decryption Key number
|
||
+ uint64_t odd_powers : 5; ///< shiftCnt for shift ops
|
||
+ uint64_t driver_status : 2; ///< Always written to 0
|
||
+ uint64_t linked : 1;
|
||
+#endif
|
||
+
|
||
+ uint64_t rsvd_9;
|
||
+} pka_ring_hw_rslt_desc_t;
|
||
+
|
||
+#define RESULT_DESC_SIZE sizeof(pka_ring_hw_rslt_desc_t) // Must be 64
|
||
+
|
||
+/// Describes a PKA command/result ring as used by the hardware. A pair of
|
||
+/// command and result rings in PKA window memory, and the data memory used
|
||
+/// by the commands.
|
||
+typedef struct
|
||
+{
|
||
+ uint32_t num_descs; ///< total number of descriptors in the ring.
|
||
+
|
||
+ uint32_t cmd_ring_base; ///< base address of the command ring.
|
||
+ uint32_t cmd_idx; ///< index of the command in a ring.
|
||
+
|
||
+ uint32_t rslt_ring_base; ///< base address of the result ring.
|
||
+ uint32_t rslt_idx; ///< index of the result in a ring.
|
||
+
|
||
+ uint32_t operands_base; ///< operands memory base address.
|
||
+ uint32_t operands_end; ///< end address of operands memory.
|
||
+
|
||
+ uint32_t desc_size; ///< size of each element in the ring.
|
||
+
|
||
+ uint64_t cmd_desc_mask; ///< bitmask of free(0)/in_use(1) cmd descriptors.
|
||
+ uint32_t cmd_desc_cnt; ///< number of command descriptors currently in use.
|
||
+ uint32_t rslt_desc_cnt; ///< number of result descriptors currently ready.
|
||
+} pka_ring_desc_t;
|
||
+
|
||
+/// This structure declares ring parameters which can be used by user interface.
|
||
+typedef struct
|
||
+{
|
||
+ int fd; ///< file descriptor.
|
||
+ int group; ///< iommu group.
|
||
+ int container; ///< vfio cointainer
|
||
+
|
||
+ uint32_t idx; ///< ring index.
|
||
+ uint32_t ring_id; ///< hardware ring identifier.
|
||
+
|
||
+ uint64_t mem_off; ///< offset specific to window RAM region.
|
||
+ uint64_t mem_addr; ///< window RAM region address.
|
||
+ uint64_t mem_size; ///< window RAM region size.
|
||
+
|
||
+ uint64_t reg_off; ///< offset specific to count registers region.
|
||
+ uint64_t reg_addr; ///< count registers region address.
|
||
+ uint64_t reg_size; ///< count registers region size.
|
||
+
|
||
+ void *mem_ptr; ///< pointer to map-ped memory region.
|
||
+ void *reg_ptr; ///< pointer to map-ped counters region.
|
||
+
|
||
+ pka_ring_desc_t ring_desc; ///< ring descriptor.
|
||
+
|
||
+#ifdef PKA_LIB_RING_DEBUG
|
||
+ struct pka_ring_debug_stats stats;
|
||
+#endif
|
||
+
|
||
+ uint8_t big_endian; ///< big endian byte order when enabled.
|
||
+} pka_ring_info_t;
|
||
+
|
||
+typedef struct
|
||
+{
|
||
+ uint32_t dst_offset; ///< operands desctination offset.
|
||
+ uint32_t max_dst_offset; ///< operands end offset.
|
||
+
|
||
+ pka_ring_info_t *ring;
|
||
+} pka_ring_alloc_t;
|
||
+
|
||
+// This sturcture encapsulates 'user data' information, it also includes
|
||
+// additional information useful for command processing and statistics.
|
||
+typedef struct
|
||
+{
|
||
+ uint64_t valid; ///< if set to 'PKA_UDATA_INFO_VALID' then info is valid
|
||
+ uint64_t user_data; ///< opaque user address.
|
||
+ uint64_t cmd_num; ///< command request number.
|
||
+ uint8_t cmd_desc_idx; ///< index of the cmd descriptor in HW rings
|
||
+ uint8_t ring_num; ///< command request number.
|
||
+ uint8_t queue_num; ///< queue number.
|
||
+} pka_udata_info_t;
|
||
+
|
||
+#define PKA_UDATA_INFO_VALID 0xDEADBEEF
|
||
+
|
||
+// This structure consists of a data base to store user data information.
|
||
+// Note that a data base should be associated with a hardware ring.
|
||
+typedef struct
|
||
+{
|
||
+ pka_udata_info_t entries[32]; // user data information entries.
|
||
+ uint8_t index : 5; // entry index. Wrapping is permitted.
|
||
+} pka_udata_db_t;
|
||
+
|
||
+#endif /// __PKA_RING_H__
|
||
+
|
||
+
|
||
--
|
||
2.20.1
|
||
|