From 0e372ce284fb69bb7dccf483a703dc6e2435489f Mon Sep 17 00:00:00 2001 From: Adrian Chiris Date: Sun, 19 Apr 2015 16:26:30 +0300 Subject: [PATCH] ported MFT-4.0.0 changes --- Makefile.am | 2 +- cmdif/Makefile.am | 2 +- cmdif/tools_cif.c | 66 +- cmdif/tools_cif.h | 39 +- configure.ac | 4 +- debian/changelog | 7 + dev_mgt/tools_dev_types.c | 72 +- dev_mgt/tools_dev_types.h | 7 + flint/Makefile.am | 2 + flint/cmd_line_parser.cpp | 8 + flint/flint.cpp | 9 +- flint/flint_params.cpp | 1 + flint/flint_params.h | 1 + flint/subcommands.cpp | 11 +- include/mtcr_ul/mtcr.h | 49 +- man/mstflint.1 | 119 +- mflash/Makefile.am | 3 +- mflash/mflash.c | 172 +- mflash/mflash.h | 7 +- mflash/mflash_access_layer.c | 81 +- mflash/mflash_access_layer.h | 1 - mflash/mflash_common_structs.h | 8 +- mflash/mflash_pack_layer.c | 17 +- mflash/mflash_pack_layer.h | 6 +- mflash/mflash_types.h | 6 +- mft_utils/errmsg.h | 1 + mft_utils/mft_sig_handler.c | 1 - mft_utils/mft_sig_handler.h | 1 - mlxconfig/Makefile.am | 7 +- mlxconfig/mlxcfg_lib.cpp | 860 +- mlxconfig/mlxcfg_lib.h | 169 +- mlxconfig/mlxcfg_param_lib.cpp | 1045 ++ mlxconfig/mlxcfg_param_lib.h | 357 + mlxconfig/mlxcfg_parser.cpp | 6 +- mlxconfig/mlxcfg_status.h | 79 + mlxconfig/mlxcfg_ui.cpp | 6 +- mlxconfig/mlxcfg_ui.h | 5 +- mlxfwops/lib/flint_base.h | 6 +- mlxfwops/lib/flint_io.cpp | 4 +- mlxfwops/lib/flint_io.h | 3 +- mlxfwops/lib/fs2_ops.cpp | 4 +- mlxfwops/lib/fs3_ops.cpp | 254 +- mlxfwops/lib/fs3_ops.h | 8 +- mlxfwops/lib/fw_ops.cpp | 46 +- mlxfwops/lib/fw_ops.h | 6 +- mstdump/crd_lib/crdump.c | 3 +- mstdump/crd_lib/crdump.h | 5 +- mstdump/crd_main/Makefile.am | 3 +- mstdump/crd_main/mstdump.c | 57 +- mstdump/mstdump_dbs/ConnectX4.csv | 100 +- mstdump/mstdump_dbs/ConnectX4LX.csv | 3265 ++++ mstdump/mstdump_dbs/SwitchEN.csv | 14231 ++++++++++------- mstdump/mstdump_dbs/SwitchIB.csv | 60 +- mtcr_ul/mtcr_ib.h | 1 - mtcr_ul/mtcr_ib_ofed.c | 63 +- mtcr_ul/mtcr_icmd_cif.h | 1 - mtcr_ul/mtcr_int_defs.h | 18 +- mtcr_ul/mtcr_tools_cif.c | 294 +- mtcr_ul/mtcr_tools_cif.h | 3 +- mtcr_ul/mtcr_ul.c | 60 +- mtcr_ul/packets_common.c | 4 +- mtcr_ul/packets_common.h | 4 +- reg_access/reg_access.c | 113 +- reg_access/reg_access.h | 4 + small_utils/mcra.c | 14 +- tools_layouts/adb_to_c_utils.c | 100 +- tools_layouts/adb_to_c_utils.h | 22 +- tools_layouts/cibfw_layouts.c | 145 +- tools_layouts/cibfw_layouts.h | 87 +- tools_layouts/cx4fw_layouts.c | 39 +- tools_layouts/cx4fw_layouts.h | 46 +- tools_layouts/register_access_open_layouts.c | 31 +- tools_layouts/register_access_open_layouts.h | 15 +- tools_layouts/register_access_sib_layouts.c | 85 +- tools_layouts/register_access_sib_layouts.h | 60 +- tools_layouts/tools_open_layouts.c | 1643 +- tools_layouts/tools_open_layouts.h | 687 +- tools_res_mgmt/Makefile.am | 42 + tools_res_mgmt/tools_res_mgmt.c | 372 + tools_res_mgmt/tools_res_mgmt.h | 98 + 80 files changed, 17746 insertions(+), 7597 deletions(-) create mode 100644 mlxconfig/mlxcfg_param_lib.cpp create mode 100644 mlxconfig/mlxcfg_param_lib.h create mode 100644 mlxconfig/mlxcfg_status.h create mode 100644 mstdump/mstdump_dbs/ConnectX4LX.csv create mode 100644 tools_res_mgmt/Makefile.am create mode 100644 tools_res_mgmt/tools_res_mgmt.c create mode 100644 tools_res_mgmt/tools_res_mgmt.h diff --git a/Makefile.am b/Makefile.am index 87ab2e8..4244974 100644 --- a/Makefile.am +++ b/Makefile.am @@ -30,7 +30,7 @@ # SOFTWARE. #-- -SUBDIRS = mft_utils tools_layouts mtcr_ul reg_access cmdif dev_mgt mflash mlxconfig mlxfwops cmdparser flint small_utils mstdump +SUBDIRS = mft_utils tools_layouts mtcr_ul reg_access cmdif dev_mgt tools_res_mgmt mflash mlxconfig mlxfwops cmdparser flint small_utils mstdump man_MANS = man/mstflint.1 diff --git a/cmdif/Makefile.am b/cmdif/Makefile.am index b3ac612..78aba47 100644 --- a/cmdif/Makefile.am +++ b/cmdif/Makefile.am @@ -34,7 +34,7 @@ USER_DIR = $(top_srcdir) MTCR_DIR = $(USER_DIR)/include/mtcr_ul TOOLS_LAYOUTS_DIR = $(USER_DIR)/tools_layouts -INCLUDES = -I. -I../common -I../tools_layouts -I$(MTCR_DIR) -I.. +INCLUDES = -I. -I../common -I../tools_layouts -I$(MTCR_DIR) -I.. -I$(USER_DIR)/mtcr_ul AM_CFLAGS = -W -Wall -Werror -g -MP -MD $(COMPILER_FPIC) -DCMDIF_EXPORTS CMDIF_VERSION = 1 diff --git a/cmdif/tools_cif.c b/cmdif/tools_cif.c index ea4658b..29b2fc9 100644 --- a/cmdif/tools_cif.c +++ b/cmdif/tools_cif.c @@ -1,5 +1,4 @@ -/* - * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. +/* Copyright (c) 2013 Mellanox Technologies Ltd. All rights reserved. * * This software is available to you under a choice of one of two * licenses. You may choose to be licensed under the terms of the GNU @@ -29,15 +28,17 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * + * Version: $Id$ * - * tools_cif.c - * - * Created on: Nov 5, 2014 - * Author: adrianc */ #include #include + +#ifndef __FreeBSD__ +#include +#endif + #include "tools_cif.h" #define TOOLS_HCR_MAX_MBOX 288 @@ -58,13 +59,31 @@ *p = __be32_to_cpu(*p); \ } while(0) +#if __BYTE_ORDER == __BIG_ENDIAN + +static u_int64_t swap_dwords_be(u_int8_t* buff) { + u_int32_t first = *(u_int32_t*)(&buff[0]);\ + u_int32_t second = *(u_int32_t*)(&buff[4]);\ + u_int64_t dest = 0; + dest = MERGE64(dest, first, 0, 32); + dest = MERGE64(dest, second, 32, 32); + return dest; +} +#else +static u_int64_t swap_dwords_be(u_int8_t* buff) { + return *((u_int64_t*)buff); +} +#endif + //TODO: adrianc: if we find ourselves adding more and more commands consider using a macro to save code. //TODO: adrianc: when library expands consider returning its own error code MError tcif_query_dev_cap(mfile *dev, u_int32_t offset, u_int64_t* data) { - int rc = tools_cmdif_send_mbox_command(dev, 0, QUERY_DEV_CAP_OP, 0, offset, data, 8, 1); CHECK_RC(rc); + int rc = tools_cmdif_send_mbox_command(dev, 0, QUERY_DEV_CAP_OP, 0, offset, (u_int32_t*)data, 8, 1); CHECK_RC(rc); BE32_TO_CPU(data, 2); + *data = swap_dwords_be((u_int8_t*)data); + return ME_OK; } @@ -87,6 +106,28 @@ MError tcif_query_per_port_def_params(mfile* dev, u_int8_t port, struct tools_op } +MError tcif_qpc_context_read(mfile* dev, u_int32_t qpn, u_int32_t source, u_int8_t* data, u_int32_t len) +{ + u_int32_t input_mod = 0; + input_mod = MERGE(input_mod, source, 24, 8); + input_mod = MERGE(input_mod, qpn , 0, 24); + int rc = tools_cmdif_send_mbox_command(dev, input_mod, QPC_READ_OP, 0, 0, data, len, 1); + CHECK_RC(rc); + return ME_OK; +} + + +MError tcif_qpc_context_write(mfile* dev, u_int32_t qpn, u_int32_t source, u_int8_t* data, u_int32_t len) +{ + u_int32_t input_mod = 0; + input_mod = MERGE(input_mod, source, 24, 8); + input_mod = MERGE(input_mod, qpn , 0, 24); + int rc = tools_cmdif_send_mbox_command(dev, input_mod, QPC_WRITE_OP, 0, 0, data, len, 0); + CHECK_RC(rc); + return ME_OK; +} + + MError tcif_hw_access(mfile* dev, u_int64_t key, int lock_unlock) { return tools_cmdif_send_inline_cmd(dev, key, NULL, 0, HW_ACCESS_OP, lock_unlock); @@ -95,3 +136,14 @@ const char* tcif_err2str(MError rc) { return m_err2str(rc); } + +MError tcif_cr_mbox_supported(mfile* dev) +{ +#ifdef __FreeBSD__ + (void)dev; + return ME_NOT_IMPLEMENTED; +#else + return tools_cmdif_is_cr_mbox_supported(dev); +#endif + +} diff --git a/cmdif/tools_cif.h b/cmdif/tools_cif.h index 7e35ea5..6b636fa 100644 --- a/cmdif/tools_cif.h +++ b/cmdif/tools_cif.h @@ -1,5 +1,4 @@ -/* - * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. +/* Copyright (c) 2013 Mellanox Technologies Ltd. All rights reserved. * * This software is available to you under a choice of one of two * licenses. You may choose to be licensed under the terms of the GNU @@ -29,9 +28,8 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * + * Version: $Id$ * - * Created on: Nov 5, 2014 - * Author: adrianc */ #ifndef TOOLS_CIF_H @@ -74,6 +72,29 @@ MError tcif_query_global_def_params(mfile* dev, struct tools_open_query_def_para **/ MError tcif_query_per_port_def_params(mfile* dev, u_int8_t port, struct tools_open_query_def_params_per_port* port_params); +/** + * tcif_qpc_context_read: + * @param[in] dev A pointer to a device context. + * @param[in] qpn QP Number + * @param[in] source QP Source + * @param[in] data Data that was read + * + * @return One of the MError* values, or a raw + **/ +MError tcif_qpc_context_read(mfile* dev, u_int32_t qpn, u_int32_t source, u_int8_t* data, u_int32_t len); + +/** + * tcif_qpc_context_write: + * @param[in] dev A pointer to a device context. + * @param[in] qpn QP Number + * @param[in] source QP Source + * @param[in] data Data to be written + * + * @return One of the MError* values, or a raw + **/ +MError tcif_qpc_context_write(mfile* dev, u_int32_t qpn, u_int32_t source, u_int8_t* data, u_int32_t len); + + /** * tcif_hw_access: * @param[in] dev A pointer to a device context. @@ -84,6 +105,16 @@ MError tcif_query_per_port_def_params(mfile* dev, u_int8_t port, struct tools_op **/ MError tcif_hw_access(mfile* dev, u_int64_t key, int lock_unlock); +/** + * tcif_cr_mailbox_supported: + * @param[in] dev A pointer to a device context. + + * @return ME_OK - cr mailbox supported + * ME_SEM_LOCKED - tools HCR semaphore locked + * ME_CMDIF_NOT_SUPP - cr mailbox not supported + **/ +MError tcif_cr_mbox_supported(mfile* dev); + /** * tcif_err2str: * @param[in] rc return code from one of the above functions diff --git a/configure.ac b/configure.ac index f76c2ff..4b4f90e 100644 --- a/configure.ac +++ b/configure.ac @@ -59,7 +59,7 @@ CXXFLAGS="$CXXFLAGS -Werror -DMST_UL" AC_CONFIG_FILES( mstflint.spec ) -AC_OUTPUT( Makefile mft_utils/Makefile mtcr_ul/Makefile dev_mgt/Makefile tools_layouts/Makefile reg_access/Makefile cmdif/Makefile mlxconfig/Makefile \ - mflash/Makefile mlxfwops/Makefile mlxfwops/lib/Makefile cmdparser/Makefile flint/Makefile \ +AC_OUTPUT( Makefile mft_utils/Makefile mtcr_ul/Makefile dev_mgt/Makefile tools_layouts/Makefile reg_access/Makefile cmdif/Makefile tools_res_mgmt/Makefile \ + mlxconfig/Makefile mflash/Makefile mlxfwops/Makefile mlxfwops/lib/Makefile cmdparser/Makefile flint/Makefile \ small_utils/Makefile mstdump/Makefile mstdump/crd_lib/Makefile mstdump/crd_main/Makefile mstdump/mstdump_dbs/Makefile ) diff --git a/debian/changelog b/debian/changelog index 827f064..be5574d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +mstflint (4.0.0) unstable; urgency=low + + * Updated from MFT-4.0.0 + + -- Adrian Chiris Sun, 19 Apr 2015 16:17:33 +0200 + + mstflint (4.0.0) unstable; urgency=low * Updated from MFT-4.0.0 initial release diff --git a/dev_mgt/tools_dev_types.c b/dev_mgt/tools_dev_types.c index f8b0f39..251388b 100644 --- a/dev_mgt/tools_dev_types.c +++ b/dev_mgt/tools_dev_types.c @@ -34,6 +34,7 @@ #include #include #include +#include #include "tools_dev_types.h" enum dm_dev_type { @@ -210,6 +211,24 @@ static struct dev_info g_devs_info[] = { .port_num = 2, .dev_type = DM_HCA }, + { + .dm_id = DeviceConnectX4LX, + .hw_dev_id = 0x20b, + .hw_rev_id = -1, + .sw_dev_id = -1, + .name = "ConnectX4LX", + .port_num = 2, + .dev_type = DM_HCA + }, + { + .dm_id = DeviceFPGA, + .hw_dev_id = 0x600, + .hw_rev_id = -1, + .sw_dev_id = -1, + .name = "FPGA", + .port_num = 2, + .dev_type = DM_HCA + }, { .dm_id = DeviceEndMarker, } @@ -225,6 +244,8 @@ int dm_get_device_id(mfile* mf, { u_int32_t dword; u_int32_t i; + int rc; + u_int32_t dev_flags; #if 1 for (i = 0; i < DeviceEndMarker; i++) { @@ -236,14 +257,43 @@ int dm_get_device_id(mfile* mf, } #endif - if (mread4(mf, DEVID_ADDR, &dword) != 4) - { - //printf("FATAL - crspace read (0x%x) failed: %s\n", DEVID_ADDR, strerror(errno)); - return 1; + rc = mget_mdevs_flags(mf, &dev_flags); + if (rc) { + dev_flags = 0; } + // get hw id + // Special case for MLNX OS getting dev_id using REG MGIR + if (dev_flags & MDEVS_MLNX_OS) { + reg_access_status_t rc; + struct register_access_sib_mgir mgir; + memset(&mgir, 0, sizeof(mgir)); + rc = reg_access_mgir(mf, REG_ACCESS_METHOD_GET, &mgir); + //printf("-D- RC[%s] -- REVID: %d -- DEVID: %d hw_dev_id: %d\n", m_err2str(rc), mgir.HWInfo.REVID, mgir.HWInfo.DEVID, mgir.HWInfo.hw_dev_id); + if (rc) { + dword = g_devs_info[DeviceSwitchX].hw_dev_id; + *ptr_hw_rev = 0; + *ptr_hw_dev_id = g_devs_info[DeviceSwitchX].hw_dev_id; + } else { + dword = mgir.HWInfo.hw_dev_id; + if (dword == 0) { + dword = g_devs_info[DeviceSwitchX].hw_dev_id; + *ptr_hw_dev_id = g_devs_info[DeviceSwitchX].hw_dev_id; + *ptr_hw_rev = mgir.HWInfo.REVID & 0xf; + } else { + *ptr_hw_dev_id = dword; + *ptr_hw_rev = 0; //WA: MGIR should have also hw_rev_id and then we can use it. + } + } + } else { + if (mread4(mf, DEVID_ADDR, &dword) != 4) + { + //printf("FATAL - crspace read (0x%x) failed: %s\n", DEVID_ADDR, strerror(errno)); + return 1; + } - *ptr_hw_dev_id = EXTRACT(dword, 0, 16); - *ptr_hw_rev = EXTRACT(dword, 16, 8); + *ptr_hw_dev_id = EXTRACT(dword, 0, 16); + *ptr_hw_rev = EXTRACT(dword, 16, 8); + } for (i = 0; i < DeviceEndMarker; i++) { struct dev_info* di = &(g_devs_info[i]); @@ -376,3 +426,13 @@ u_int32_t dm_get_hw_rev_id(dm_dev_id_t type) return 0; } } + +int dm_is_fpp_supported(dm_dev_id_t type) +{ + if (g_devs_info[type].dm_id == DeviceConnectX4 || g_devs_info[type].dm_id == DeviceConnectX4LX) { + return 1; + } else { + return 0; + } +} + diff --git a/dev_mgt/tools_dev_types.h b/dev_mgt/tools_dev_types.h index 3dc9169..0879595 100644 --- a/dev_mgt/tools_dev_types.h +++ b/dev_mgt/tools_dev_types.h @@ -63,6 +63,8 @@ enum dm_dev_id DeviceSwitchIB, DeviceSwitchEN, DeviceConnectX4, + DeviceConnectX4LX, + DeviceFPGA, DeviceEndMarker // Dummy Device - Marker for indicating error and end of devices }; @@ -120,6 +122,11 @@ u_int32_t dm_get_hw_dev_id(dm_dev_id_t type); */ u_int32_t dm_get_hw_rev_id(dm_dev_id_t type); +/** + * A predicate returning if the device supports Function Per Port + */ +int dm_is_fpp_supported(dm_dev_id_t type); + #ifdef __cplusplus } /* end of 'extern "C"' */ #endif diff --git a/flint/Makefile.am b/flint/Makefile.am index e1f5b71..f001515 100755 --- a/flint/Makefile.am +++ b/flint/Makefile.am @@ -50,8 +50,10 @@ mstflint_SOURCES = flint.cpp flint.h subcommands.cpp subcommands.h\ mstflint_LDADD = ../mlxfwops/lib/libmlxfwops.a \ ../cmdparser/libcmdparser.a \ ../mflash/libmflash.a \ + ../tools_res_mgmt/libtools_res_mgmt.a \ $(CMDIF_DIR)/libcmdif.a \ ../reg_access/libreg_access.a \ + ../dev_mgt/libdev_mgt.a \ ../mtcr_ul/libmtcr_ul.a \ ../tools_layouts/libtools_layouts.a \ ../mft_utils/libmftutils.a\ diff --git a/flint/cmd_line_parser.cpp b/flint/cmd_line_parser.cpp index 1a13af0..a278a7e 100644 --- a/flint/cmd_line_parser.cpp +++ b/flint/cmd_line_parser.cpp @@ -181,6 +181,7 @@ FlagMetaData::FlagMetaData() { _flags.push_back(new Flag("", "flash_params", 1)); //its actually 3 but separated by comma so we refer to them as one _flags.push_back(new Flag("v", "version", 0)); _flags.push_back(new Flag("", "no_devid_check", 0)); + _flags.push_back(new Flag("", "use_fw", 0)); } FlagMetaData::~FlagMetaData() { @@ -579,6 +580,11 @@ void Flint::initCmdParser() { "", "Do not verify each write on the flash."); + AddOptions("use_fw", + ' ', + "", + "Flash access will be done using FW (ConnectX-3/ConnectX-3Pro only)."); + AddOptions("silent", 's', "", @@ -835,6 +841,8 @@ ParseStatus Flint::HandleOption(string name, string value) _flintParams.allow_rom_change = true; } else if (name == "override_cache_replacement" || name == "ocr") { _flintParams.override_cache_replacement = true; + } else if (name == "use_fw") { + _flintParams.use_fw = true; } else if (name == "no_flash_verify") { _flintParams.no_flash_verify = true; } else if (name == "silent" || name == "s") { diff --git a/flint/flint.cpp b/flint/flint.cpp index 83c2cdb..08b2733 100644 --- a/flint/flint.cpp +++ b/flint/flint.cpp @@ -158,6 +158,7 @@ map_sub_cmd_t_to_subcommand Flint::initSubcommandMap() cmdMap[SC_Wbne] = new WbneSubCommand(); cmdMap[SC_Wb] = new WbSubCommand(); cmdMap[SC_Rb] = new RbSubCommand(); + cmdMap[SC_Clear_Sem] = new ClearSemSubCommand(); return cmdMap; } @@ -215,9 +216,15 @@ FlintStatus Flint::run(int argc, char* argv[]) printf(FLINT_CLEAR_SEM_CMD_ERROR); return FLINT_FAILED; } - _subcommands[SC_Clear_Sem] = new ClearSemSubCommand(); _flintParams.cmd = SC_Clear_Sem; } + + //TODO: adrianc: remove use_fw flag and this condition before MFT-4.1.0 + if (_flintParams.use_fw && _flintParams.override_cache_replacement) { + printf("-E- flags --use_fw and --override_cache_replacement/-ocr cannot be specified simultaneously"); + return FLINT_FAILED; + } + // Step 2 save argv as a single cmd string in flint params for the log functionallity for(int i=0; iopen(_flintParams.device.c_str(), _flintParams.clear_semaphore, false, _flintParams.banks, \ - NULL, _flintParams.override_cache_replacement)) { + _flintParams.flash_params_specified ? &_flintParams.flash_params : NULL, _flintParams.override_cache_replacement, _flintParams.use_fw)) { // if we have Hw_Access command we dont fail straght away if (_flintParams.cmd == SC_Hw_Access && ((Flash*)_io)->get_cr_space_locked()) { return FLINT_SUCCESS; @@ -1239,7 +1240,7 @@ bool BurnSubCommand::checkFwVersion() printf(" New FW version: "); if (_imgInfo.fw_info.fw_ver[0] != 0) { - snprintf(new_ver, 124, VERSION_FORMAT(_devInfo.fw_type == FIT_FS2), _imgInfo.fw_info.fw_ver[0], _imgInfo.fw_info.fw_ver[1], _imgInfo.fw_info.fw_ver[2]); + snprintf(new_ver, 124, VERSION_FORMAT(_imgInfo.fw_type == FIT_FS2), _imgInfo.fw_info.fw_ver[0], _imgInfo.fw_info.fw_ver[1], _imgInfo.fw_info.fw_ver[2]); } else { snprintf(new_ver, 124, "N/A"); } @@ -1853,7 +1854,8 @@ bool QuerySubCommand::displayFs3Uids(const fw_info_t& fwInfo) FlintStatus QuerySubCommand::printInfo(const fw_info_t& fwInfo, bool fullQuery) { - bool isFs2 = (fwInfo.fw_type == FIT_FS2) ? true : false; + bool isFs2 = (fwInfo.fw_type == FIT_FS2) ? true : false; + printf("Image type: %s\n",(isFs2)? "FS2" : "FS3"); if (fwInfo.fw_info.fw_ver[0] || fwInfo.fw_info.fw_ver[1] || fwInfo.fw_info.fw_ver[2]) { @@ -2654,7 +2656,9 @@ SmgSubCommand:: SmgSubCommand() _v = Wtv_Dev_Or_Img; _maxCmdParamNum = 2; _cmdType = SC_Smg; + _ops = NULL; memset(&_baseGuid, 0, sizeof(_baseGuid)); + memset(&_info, 0, sizeof(_info)); } SmgSubCommand:: ~SmgSubCommand() @@ -3957,6 +3961,7 @@ ClearSemSubCommand:: ~ClearSemSubCommand() FlintStatus ClearSemSubCommand::executeCommand() { + _flintParams.clear_semaphore = true; return preFwAccess(); } diff --git a/include/mtcr_ul/mtcr.h b/include/mtcr_ul/mtcr.h index 054116f..e5e627e 100644 --- a/include/mtcr_ul/mtcr.h +++ b/include/mtcr_ul/mtcr.h @@ -1,14 +1,33 @@ -/* - Mellanox Confidential and Proprietary - +/* + * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: * - * Copyright (C) Jan 2013, Mellanox Technologies Ltd. ALL RIGHTS RESERVED. + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: * - * Except as specifically permitted herein, no portion of the information, - * including but not limited to object code and source code, may be reproduced, - * modified, distributed, republished or otherwise exploited in any form or by - * any means for any purpose without the prior written permission of Mellanox - * Technologies Ltd. Use of software subject to the terms and conditions - * detailed in the file "LICENSE.txt". + * - 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. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. */ #ifndef MTCR_H @@ -60,6 +79,7 @@ typedef enum MError { ME_REG_ACCESS_LEN_TOO_SMALL, ME_REG_ACCESS_BAD_CONFIG, ME_REG_ACCESS_ERASE_EXEEDED, + ME_REG_ACCESS_INTERNAL_ERROR, // errors regarding ICMD ME_ICMD_STATUS_CR_FAIL = 0x200, // cr-space access failure @@ -127,6 +147,12 @@ typedef enum { MACCESS_REG_METHOD_SET = 2 } maccess_reg_method_t; +typedef enum { + AS_ICMD = 3, + AS_CR_SPACE = 2, + AS_SEMAPHORE = 0xa +} address_space_t; + typedef struct dev_info_t { Mdevs type; @@ -175,7 +201,7 @@ typedef enum mtcr_access_method { MTCR_ACCESS_ERROR = 0x0, MTCR_ACCESS_MEMORY = 0x1, MTCR_ACCESS_CONFIG = 0x2, - MTCR_ACCESS_INBAND = 0x3 + MTCR_ACCESS_INBAND = 0x3, } mtcr_access_method_t; /* * Read 4 bytes, return number of succ. read bytes or -1 on failure @@ -272,6 +298,11 @@ const char* m_err2str(MError status); int mread_buffer(mfile *mf, unsigned int offset, u_int8_t* data, int byte_len); int mwrite_buffer(mfile *mf, unsigned int offset, u_int8_t* data, int byte_len); +int mget_vsec_supp(mfile* mf); + +int mget_addr_space(mfile* mf); +int mset_addr_space(mfile* mf, int space); + #ifdef __cplusplus } #endif diff --git a/man/mstflint.1 b/man/mstflint.1 index a68f4c9..0ac287b 100644 --- a/man/mstflint.1 +++ b/man/mstflint.1 @@ -1,11 +1,11 @@ .\"Text automatically generated by txt2man -.TH mstflint 3.7.0 "August 2014" "" "" +.TH mstflint 4.0.0 "April 2015" "" "" .SH NAME -\fBmstflint \fP- Mellanox Technologies Firmware Update Tool +\fBmstflint \fP- Flash Interface .SH SYNOPSIS .nf .fam C - \fBmstlint\fP [\fIOPTIONS\fP] [\fIParameters\fP] + \fBmstflint\fP [\fIOPTIONS\fP] [\fIParameters\fP] [\fB-d\fP|\fB--device\fP ] [\fB--guid\fP ] [\fB--guids\fP ] [\fB--mac\fP ] [\fB--macs\fP ] [\fB--uid\fP ] @@ -16,7 +16,8 @@ [\fB--override_cache_replacement\fP] [\fB--no_flash_verify\fP] [\fB-s\fP|\fB--silent\fP] [\fB-y\fP|\fB--yes\fP] [\fB--no\fP] [\fB--vsd\fP ] [\fB--use_image_ps\fP] [\fB--use_image_guids\fP] - [\fB--use_image_rom\fP] [\fB--dual_image\fP] + [\fB--use_image_rom\fP] [\fB--dual_image\fP] [\fB--ignore_dev_data\fP] + [\fB--use_fw\fP] [\fB--striped_image\fP] [\fB--banks\fP ] [\fB--log\fP ] [\fB--flash_params\fP ] [\fB-v\fP|\fB--version\fP] @@ -128,6 +129,7 @@ G1-MAC-PI2 G1-MAC-PE0 G1-MAC-PE1 G1-MAC-PE2 G1-MAC-PE3 G1-FC-WWPN-P0 G1-FC-WWPN-P1 G1-FC-WWPN-P2 G1-FC-WWPN-P3 G1-IB-NODE-GUID G1-IB-PORT-GUID G1-FC-WWNN IB-SYSTEM-GUID + Commands affected: burn, sg .RE @@ -253,11 +255,15 @@ Commands affected: burn .B \fB--ignore_dev_data\fP : Do not attempt to take device data sections -from device(sections will be taken from -the image. FS3 Only). +from device(sections will be taken from the image. FS3 Only). Commands affected: burn .TP .B +\fB--use_fw\fP +: Access to flash using FW (ConnectX3/ConnectX3Pro Device Only) +Commands affected: all +.TP +.B \fB--dual_image\fP : Make the burn process burn two images on flash (previously default algorithm). Currentdefault @@ -337,11 +343,9 @@ bb .TP .B sg -[guids_num= step_size=] | [nocrc] : Set GUIDs. -.TP -.B -smg -: Set manufacture GUIDs (For FS3 image only). +[guids_num= step_size=] +[nocrc] : Set GUIDs. + .TP .B set_vpd @@ -378,7 +382,7 @@ the command is given .TP .B hw -query : Query HW info and flash attributes. + [ATTR=VAL] : Set/query HW info and flash attributes. .TP .B erase|e @@ -433,9 +437,9 @@ COMMANDS DESCRIPTION: .IP \fIExamples\fP: .IP \(bu 4 -mstflint \fB-d\fP 03:00.0 \fB-i\fP image1.bin burn +mstflint \fB-d\fP 04:00.0 \fB-i\fP image1.bin burn .IP \(bu 4 -mstflint \fB-d\fP mlx4_0 \fB-guid\fP 0x2c9000100d050 \fB-i\fP image1.bin b +mstflint \fB-d\fP 04:00.0 \fB-guid\fP 0x2c9000100d050 \fB-i\fP image1.bin b ."*************************************************************************************** @@ -454,7 +458,7 @@ Display FW Version, GUIDs, PSID, and other info. .IP \fIExamples\fP: .IP \(bu 4 -mstflint \fB-d\fP 03:00.0 query +mstflint \fB-d\fP 04:00.0 query ."*************************************************************************************** @@ -471,7 +475,7 @@ mstflint \fB-d\fP 03:00.0 query .IP \fIExamples\fP: .IP \(bu 4 -mstflint \fB-d\fP 03:00.0 v +mstflint \fB-d\fP 04:00.0 v ."*************************************************************************************** @@ -504,7 +508,7 @@ This command is supported only in the In-Band access method. .IP \fIExamples\fP: .IP \(bu 4 -mstflint \fB-d\fP 03:00.0 brom exp-rom.rom +mstflint \fB-d\fP 04:00.0 brom exp-rom.rom ."*************************************************************************************** @@ -521,7 +525,7 @@ mstflint \fB-d\fP 03:00.0 brom exp-rom.rom .IP \fIExamples\fP: .IP \(bu 4 -mstflint \fB-d\fP 03:00.0 drom +mstflint \fB-d\fP 04:00.0 drom ."*************************************************************************************** @@ -538,7 +542,7 @@ mstflint \fB-d\fP 03:00.0 drom .IP \fIExamples\fP: .IP \(bu 4 -mstflint \fB-d\fP 03:00.0 rrom exp-rom.rom +mstflint \fB-d\fP 04:00.0 rrom exp-rom.rom ."*************************************************************************************** @@ -557,7 +561,7 @@ on the given image file. No fields (such as VSD or Guids) are read from flash. .IP \fIExamples\fP: .IP \(bu 4 -mstflint \fB-d\fP 03:00.0 \fB-i\fP image1.bin bb +mstflint \fB-d\fP 04:00.0 \fB-i\fP image1.bin bb ."*************************************************************************************** @@ -580,7 +584,7 @@ If the GUIDs/MACs/UIDs in the image on flash are non-blank, .IP mstflint will re-burn the current image using the given GUIDs/MACs/UIDs. .IP -\fICommand\fP: sg [guids_num= step_size=] | [nocrc] +\fICommand\fP: sg [guids_num= step_size=] | [nocrc] .IP \fIParameters\fP: .IP @@ -594,30 +598,9 @@ step_size: step size between GUIDs (FS3 Only) .IP \fIExamples\fP: .IP \(bu 4 -mstflint \fB-d\fP 03:00.0 \fB-guid\fP 0x0002c9000100d050 sg - -."*************************************************************************************** - -.RE -.TP -.B -\fIName\fP: smg -.IP -\fIDescription\fP: Set manufacture GUID, Set manufacture GUIDs in the given FS3 image. -.IP -Use \fB-uid\fP flag to set the desired GUIDs. -.IP -\fICommand\fP: smg [guids_num= step_size=] -.IP -\fIParameters\fP: -.IP -num_of_guids: number of GUIDs to be allocated per physical port -.IP -step_size: step size between GUIDs -.IP -\fIExamples\fP: +mstflint \fB-d\fP 04:00.0 \fB-guid\fP 0x0002c9000100d050 sg .IP \(bu 4 -mstflint \fB-i\fP fw_image.bin \fB-uid\fP 0x0002c9000100d050 smg +mstflint -d 08:00.0 -guid 0x0002c9000100d050 -mac 0x0002c900d050 sg ."*************************************************************************************** @@ -653,7 +636,7 @@ Use \fB-vsd\fP flag to set the desired VSD string. .IP \fIExamples\fP: .IP \(bu 4 -mstflint \fB-d\fP 03:00.0 \fB-vsd\fP VSD_STRING sv +mstflint \fB-d\fP 04:00.0 \fB-vsd\fP VSD_STRING sv ."*************************************************************************************** @@ -670,7 +653,7 @@ mstflint \fB-d\fP 03:00.0 \fB-vsd\fP VSD_STRING sv .IP \fIExamples\fP: .IP \(bu 4 -mstflint \fB-d\fP 03:00.0 ri file.bin +mstflint \fB-d\fP 04:00.0 ri file.bin ."*************************************************************************************** @@ -691,7 +674,7 @@ section depends on the version of the image generation tool. .IP \fIExamples\fP: .IP \(bu 4 -mstflint \fB-d\fP 03:00.0 dc +mstflint \fB-d\fP 04:00.0 dc ."*************************************************************************************** @@ -709,7 +692,7 @@ This command would fail if the image does not contain a Hash file. .IP \fIExamples\fP: .IP \(bu 4 -mstflint \fB-d\fP 03:00.0 dh hash.csv +mstflint \fB-d\fP 04:00.0 dh hash.csv ."*************************************************************************************** @@ -726,7 +709,7 @@ mstflint \fB-d\fP 03:00.0 dh hash.csv .IP \fIExamples\fP: .IP \(bu 4 -mstflint \fB-d\fP 03:00.0 set_key 1234deaf5678 +mstflint \fB-d\fP 04:00.0 set_key 1234deaf5678 ."*************************************************************************************** @@ -748,7 +731,7 @@ key: (optional) The key you intend to use for enabling the HW access. .IP \fIExamples\fP: .IP \(bu 4 -mstflint \fB-d\fP 03:00.0 hw_access enable +mstflint \fB-d\fP 04:00.0 hw_access enable ."*************************************************************************************** @@ -759,13 +742,29 @@ mstflint \fB-d\fP 03:00.0 hw_access enable .IP \fIDescription\fP: Access HW info and flash attributes. .IP -\fICommand\fP: hw query +\fICommand\fP: hw [ATTR=VAL] .IP \fIParameters\fP: query: query HW info .IP -\fIExample\fP: +set [ATTR=VAL]: set flash attribure +.IP +Supported attributes: +.IP +QuadEn: can be 0 or 1 +.IP +DummyCycles: can be [1..15] +.IP +Flash[0|1|2|3].WriteProtected can be: +.IP +,<1|2|4|8|16|32|64>- +.IP +\fIExamples\fP: +.IP \(bu 4 +mstflint \fB-d\fP 04:00.0 hw query +.IP \(bu 4 +mstflint \fB-d\fP 04:00.0 hw set QuadEn=1 .IP \(bu 4 -mstflint \fB-d\fP 03:00.0 hw query +mstflint \fB-d\fP 04:00.0 hw set Flash1.WriteProtected=Top,1-SubSectors ."*************************************************************************************** @@ -782,7 +781,7 @@ mstflint \fB-d\fP 03:00.0 hw query .IP \fIExamples\fP: .IP \(bu 4 -mstflint \fB-d\fP 03:00.0 erase 0x10000 +mstflint \fB-d\fP 04:00.0 erase 0x10000 ."*************************************************************************************** @@ -799,7 +798,7 @@ mstflint \fB-d\fP 03:00.0 erase 0x10000 .IP \fIExamples\fP: .IP \(bu 4 -mstflint \fB-d\fP 03:00.0 rw 0x20 +mstflint \fB-d\fP 04:00.0 rw 0x20 ."*************************************************************************************** @@ -822,7 +821,7 @@ data - value of word .IP \fIExamples\fP: .IP \(bu 4 -mstflint \fB-d\fP 03:00.0 ww 0x10008 0x5a445a44 +mstflint \fB-d\fP 04:00.0 ww 0x10008 0x5a445a44 ."*************************************************************************************** @@ -849,7 +848,7 @@ data - value of word .IP \fIExamples\fP: .IP \(bu 4 -mstflint \fB-d\fP 03:00.0 wwne 0x10008 0x5a445a44 +mstflint \fB-d\fP 04:00.0 wwne 0x10008 0x5a445a44 ."*************************************************************************************** @@ -870,7 +869,7 @@ data - data to write - space seperated dwords .IP Examples: .IP \(bu 4 -mstflint \fB-d\fP 03:00.0 wbne 0x10000 12 0x30000 0x76800 0x5a445a44 +mstflint \fB-d\fP 04:00.0 wbne 0x10000 12 0x30000 0x76800 0x5a445a44 ."*************************************************************************************** @@ -889,7 +888,7 @@ addr - address to write the block to .IP \fIExamples\fP: .IP \(bu 4 -mstflint \fB-d\fP 03:00.0 wb myData.bin 0x0 +mstflint \fB-d\fP 04:00.0 wb myData.bin 0x0 ."*************************************************************************************** @@ -911,7 +910,7 @@ size - size of data to read in bytes file - filename to write the block (raw binary). If not given, the data is printed to screen. \fIExamples\fP: .IP \(bu 4 -mstflint \fB-d\fP 03:00.0 rb 0x10000 100 file.bin +mstflint \fB-d\fP 04:00.0 rb 0x10000 100 file.bin ."*************************************************************************************** diff --git a/mflash/Makefile.am b/mflash/Makefile.am index b4a87cf..950cabd 100644 --- a/mflash/Makefile.am +++ b/mflash/Makefile.am @@ -31,7 +31,8 @@ #-- # Makefile.am -- Process this file with automake to produce Makefile.in -INCLUDES= -I. -I$(top_srcdir)/include/mtcr_ul -I$(top_srcdir)/common -I$(top_srcdir)/tools_layouts -I$(top_srcdir)/reg_access -I$(top_srcdir)/cmdif +INCLUDES= -I. -I$(top_srcdir)/include/mtcr_ul -I$(top_srcdir)/common -I$(top_srcdir)/tools_layouts -I$(top_srcdir)/reg_access \ + -I$(top_srcdir)/cmdif -I$(top_srcdir)/tools_res_mgmt AM_CFLAGS = -MD -pipe -Wall -W -DMST_UL -g ${MFLASH_INBAND_FLAG} diff --git a/mflash/mflash.c b/mflash/mflash.c index 648861f..73d1709 100644 --- a/mflash/mflash.c +++ b/mflash/mflash.c @@ -230,6 +230,7 @@ int release_semaphore(mflash* mfl, int ignore_writer_lock); #define CX3_PRO_HW_ID 0x1F7 #define CX3_HW_ID 0x1F5 #define CX4_HW_ID 0x209 +#define CX4LX_HW_ID 0x20b #define CONNECT_IB_HW_ID 0x1FF #define SWITCH_IB_HW_ID 0x247 @@ -253,8 +254,12 @@ int release_semaphore(mflash* mfl, int ignore_writer_lock); ((dev_id) ==CONNECT_IB_HW_ID) #define IS_CONNECTX4(dev_id) \ ((dev_id) ==CX4_HW_ID) +#define IS_CONNECTX4LX(dev_id) \ + ((dev_id) ==CX4LX_HW_ID) +#define HAS_TOOLS_CMDIF(dev_id) \ + ((((dev_id) == CX3_HW_ID) || ((dev_id) == CX3_PRO_HW_ID))) #define HAS_ICMD_IF(dev_id) \ - ((IS_CONNECT_IB(dev_id)) || (IS_SIB(dev_id)) || (IS_CONNECTX4(dev_id)) || (IS_SEN(dev_id))) + ((IS_CONNECT_IB(dev_id)) || (IS_SIB(dev_id)) || (IS_CONNECTX4(dev_id)) || (IS_CONNECTX4LX(dev_id)) || (IS_SEN(dev_id))) #define IS_SWITCH(dev_id) \ ((IS_IS4_FAMILY(dev_id)) || (IS_SX(dev_id)) || (IS_SIB(dev_id)) || (IS_SEN(dev_id))) #define IS_REALLY_OLD_DEVICE(dev_id) \ @@ -333,7 +338,8 @@ static u_int32_t log2up (u_int32_t in) { } // ConnectX SPI interface: -int cntx_flash_init (mflash* mfl, flash_params_t* flash_params); +int cntx_flash_init (mflash* mfl, flash_params_t* flash_params); +int cntx_flash_init_direct_access (mflash* mfl, flash_params_t* flash_params); int cntx_st_spi_reset (mflash* mfl); int cntx_st_spi_erase_sect (mflash* mfl, u_int32_t addr); @@ -709,7 +715,7 @@ int cntx_get_flash_info(mflash* mfl, unsigned *type_index, int *log2size, u_int8 { int rc; u_int8_t type = 0, capacity = 0, vendor = 0, no_flash_res = 0, no_flash_rdid = 0; - unsigned char es; + unsigned char es = 0; // Assume there is a flash. *no_flash = 0; @@ -780,7 +786,7 @@ int cntx_st_spi_get_status(mflash* mfl, u_int8_t op_type, u_int8_t* status) { int get_num_of_banks_int(mflash *mfl) { int num; - if ( (mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] != ATBM_NO) && ((num = get_num_of_banks(mfl->mf)) != -1) ){ + if ( (mfl->opts[MFO_USER_BANKS_NUM] == 0) && (mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] != ATBM_NO) && ((num = get_num_of_banks(mfl->mf)) != -1) ){ return num; // if mfpa register is supported get the exact number of flash banks } return mfl->opts[MFO_NUM_OF_BANKS]; @@ -794,6 +800,11 @@ int get_flash_params(mflash* mfl, flash_params_t *flash_params, unsigned *type_i flash_info_t *flash_info; memset(flash_params, 0, sizeof(flash_params_t)); + // if number of flash banks is zero exit with error + if (num_of_flashes == 0) { + return MFE_NO_FLASH_DETECTED; + } + for (spi_sel = 0 ; spi_sel < num_of_flashes ; spi_sel++) { int log2size; u_int8_t no_flash = 0; @@ -843,7 +854,13 @@ int spi_fill_attr_from_params(mflash* mfl, flash_params_t* flash_params, unsigne mfl->attr.size = mfl->attr.bank_size * flash_params->num_of_flashes; mfl->attr.block_write = 16; // In SPI context, this is the transaction size. Max is 16. mfl->attr.num_erase_blocks = 1; - mfl->attr.erase_block[0].sector_size = flash_info->sector_size; + // HACK: Use fw_sector size only in CX3 family devices for now + if (HAS_TOOLS_CMDIF(mfl->attr.hw_dev_id)) { + mfl->attr.erase_block[0].sector_size = mfl->attr.fw_flash_sector_sz ? mfl->attr.fw_flash_sector_sz : (u_int32_t)flash_info->sector_size; + } else { + mfl->attr.erase_block[0].sector_size = (u_int32_t)flash_info->sector_size; + } + mfl->attr.erase_block[0].sector_mask = ~(mfl->attr.erase_block[0].sector_size - 1); mfl->attr.sector_size = mfl->attr.erase_block[0].sector_size; @@ -1223,10 +1240,8 @@ int cntx_int_spi_get_status_data(mflash* mfl, u_int8_t op_type, u_int32_t* statu gw_cmd = MERGE(gw_cmd, op_type, HBO_CMD, HBS_CMD); - if (bytes_num > 8) { - // self check - printf("-E- attempting to read %d bytes from register but only 8 bytes are read!\n", bytes_num); - return MFE_UNKNOWN_REG; + if (bytes_num > 4) { + return MFE_BAD_PARAMS; } rc = cntx_exec_cmd_get(mfl, gw_cmd, &flash_data, 1, NULL, "Read id"); CHECK_RC(rc); @@ -1336,8 +1351,6 @@ int cntx_spi_write_status_reg(mflash* mfl, u_int32_t status_reg, u_int8_t write_ gw_cmd = MERGE(gw_cmd, write_cmd, HBO_CMD, HBS_CMD); if (bytes_num != 1 && bytes_num != 2) { - // self check - printf("-E- can only write status register of length 1 or 2 not %d\n", bytes_num); return MFE_NOT_SUPPORTED_OPERATION; } // push status reg to upper bytes @@ -1398,7 +1411,7 @@ int spi_get_num_of_flashes(int prev_num_of_flashes) char* mflash_env; int num; - if (prev_num_of_flashes != 0) { + if (prev_num_of_flashes != -1) { return prev_num_of_flashes; } @@ -1406,7 +1419,7 @@ int spi_get_num_of_flashes(int prev_num_of_flashes) if (mflash_env) { num = atoi(mflash_env); // make sure the value makes sense - num = (num > 16 || num < 0) ? -1 : num; + num = (num > 16 || num <= 0) ? -1 : num; return num; } @@ -1424,7 +1437,6 @@ int spi_update_num_of_banks(mflash* mfl, int prev_num_of_flashes) } else { mfl->opts[MFO_NUM_OF_BANKS] = 1; } - mfl->opts[MFO_USER_BANKS_NUM] = 0; } else { mfl->opts[MFO_NUM_OF_BANKS] = num_of_banks; @@ -1793,7 +1805,7 @@ int old_flash_lock(mflash* mfl, int lock_state) { } -int cntx_flash_init(mflash* mfl, flash_params_t* flash_params) { +int cntx_flash_init_direct_access(mflash* mfl, flash_params_t* flash_params) { int rc; u_int32_t tmp; @@ -1827,7 +1839,7 @@ int cntx_flash_init(mflash* mfl, flash_params_t* flash_params) { rc = st_spi_fill_attr(mfl, flash_params); CHECK_RC(rc); - if (mfl->attr.command_set == MCS_STSPI || mfl->attr.command_set == MCS_SSTSPI) { + if (mfl->attr.command_set == MCS_STSPI || mfl->attr.command_set == MCS_SSTSPI) { mfl->f_reset = empty_reset; // Null func mfl->f_write_blk = get_write_blk_func(mfl->attr.command_set); @@ -2075,18 +2087,33 @@ typedef int (*f_sx_get_flash_info) (mflash* mfl, unsigned *type_index, int *log int sx_get_flash_info(mflash* mfl, unsigned *type_index, int *log2size, u_int8_t *no_flash) { - return sx_get_flash_info_by_type(mfl, type_index, log2size, no_flash); + int rc; + int sem_rc; + sem_rc = mfl_com_lock(mfl); CHECK_RC(sem_rc); + rc = sx_get_flash_info_by_type(mfl, type_index, log2size, no_flash); + sem_rc = release_semaphore(mfl, 0); CHECK_RC(sem_rc); + return rc; } int sx_block_read(mflash* mfl, u_int32_t blk_addr, u_int32_t blk_size, u_int8_t* data) { - return sx_block_read_by_type(mfl, blk_addr, blk_size, data); + int rc; + int sem_rc; + sem_rc = mfl_com_lock(mfl); CHECK_RC(sem_rc); + rc = sx_block_read_by_type(mfl, blk_addr, blk_size, data); + sem_rc = release_semaphore(mfl, 0); CHECK_RC(sem_rc); + return rc; } int sx_block_write(mflash* mfl, u_int32_t addr, u_int32_t size, u_int8_t* data) { - return sx_block_write_by_type(mfl, addr, size, data); + int rc; + int sem_rc; + sem_rc = mfl_com_lock(mfl); CHECK_RC(sem_rc); + rc = sx_block_write_by_type(mfl, addr, size, data); + sem_rc = release_semaphore(mfl, 0); CHECK_RC(sem_rc); + return rc; } int sx_flash_lock(mflash* mfl, int lock_state) @@ -2096,7 +2123,12 @@ int sx_flash_lock(mflash* mfl, int lock_state) int sx_erase_sect(mflash* mfl, u_int32_t addr) { - return sx_erase_sect_by_type(mfl, addr); + int rc; + int sem_rc; + sem_rc = mfl_com_lock(mfl); CHECK_RC(sem_rc); + rc = sx_erase_sect_by_type(mfl, addr); + sem_rc = release_semaphore(mfl, 0); CHECK_RC(sem_rc); + return rc; } @@ -2186,6 +2218,11 @@ int flash_init_fw_access(mflash* mfl, flash_params_t* flash_params) } else { return MFE_DIRECT_FW_ACCESS_DISABLED; } + + if (mfl->opts[MFO_IGNORE_SEM_LOCK]) { + rc = mfl->f_lock(mfl, 0); CHECK_RC(rc); + } + return MFE_OK; } @@ -2216,6 +2253,16 @@ int icmd_init(mflash *mfl) return MFE_OK; } +int tools_cmdif_init(mflash *mfl) +{ + // Clear semaphore when asked to by flint or any tool using mflash + if (mfl->opts[MFO_IGNORE_SEM_LOCK]) { + if (tools_cmdif_unlock_semaphore(mfl->mf) != ME_OK) { + return MFE_CR_ERROR; + } + } + return MFE_OK; +} int fifth_gen_flash_init(mflash* mfl, flash_params_t* flash_params) { @@ -2235,6 +2282,31 @@ int fifth_gen_flash_init(mflash* mfl, flash_params_t* flash_params) return MFE_OK; } +int cntx_flash_init(mflash* mfl, flash_params_t* flash_params) +{ + int rc; + + if ( mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] == ATBM_TOOLS_CMDIF &&\ + mfl->opts[MFO_IGNORE_CASHE_REP_GUARD] == 0 &&\ + mfl->opts[MFO_CX3_FW_ACCESS_EN]) { + rc = tcif_cr_mbox_supported(mfl->mf); + // init with direct access if not supported + if (rc == ME_NOT_IMPLEMENTED || rc == ME_CMDIF_NOT_SUPP ) { + mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] = ATBM_NO; + return cntx_flash_init_direct_access(mfl, flash_params); + } + if (rc == ME_SEM_LOCKED && !mfl->opts[MFO_IGNORE_SEM_LOCK]) { + return MFE_SEM_LOCKED; + } + rc = tools_cmdif_init(mfl); CHECK_RC(rc); + rc = flash_init_fw_access(mfl, flash_params); CHECK_RC(rc); + } else { + mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] = ATBM_NO; + rc = cntx_flash_init_direct_access(mfl, flash_params); CHECK_RC(rc); + } + return MFE_OK; +} + // // Interface functions: // @@ -2273,18 +2345,28 @@ int mf_erase_sector(mflash* mfl, u_int32_t addr) { int mf_open_ignore_lock(mflash* mfl) { mfl->opts[MFO_IGNORE_SEM_LOCK] = 1; - return mf_open_fw(mfl, NULL, 0); + return mf_open_fw(mfl, NULL, -1); } #define CR_LOCK_HW_ID 0xbad0cafe +#ifndef MST_UL +#define IS_PCI_DEV(access_type) (access_type == MST_PCICONF || access_type == MST_PCI) +#else +#define IS_PCI_DEV(access_type) (access_type == MTCR_ACCESS_CONFIG || access_type == MTCR_ACCESS_MEMORY) +#endif + + + int get_dev_info(mflash* mfl) { u_int32_t dev_flags; + u_int32_t access_type; int rc; u_int32_t dev_id; mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] = ATBM_NO; rc = mget_mdevs_flags(mfl->mf, &dev_flags); CHECK_RC(rc); + rc = mget_mdevs_type(mfl->mf, &access_type); CHECK_RC(rc); // get hw id // Special case for MLNX OS getting dev_id using REG MGIR @@ -2319,16 +2401,20 @@ int get_dev_info(mflash* mfl) } if (dev_flags & MDEVS_MLNX_OS) { - mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] = ATBM_MLNXOS_CMDIF; - } else if (dev_flags & MDEVS_IB){ - mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] = ATBM_INBAND; - } else { // not mlnxOS or IB device - check HW ID to determine Access type - if (HAS_ICMD_IF(mfl->attr.hw_dev_id)){ - if (mfl->opts[MFO_IGNORE_CASHE_REP_GUARD] == 0) { - mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] = ATBM_ICMD; - } - } - } + mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] = ATBM_MLNXOS_CMDIF; + } else if (dev_flags & MDEVS_IB){ + mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] = ATBM_INBAND; + } else { // not mlnxOS or IB device - check HW ID to determine Access type + if (HAS_ICMD_IF(mfl->attr.hw_dev_id)){ + if (mfl->opts[MFO_IGNORE_CASHE_REP_GUARD] == 0) { + mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] = ATBM_ICMD; + } + } else if (HAS_TOOLS_CMDIF(mfl->attr.hw_dev_id) && (IS_PCI_DEV(access_type))) { + if (mfl->opts[MFO_IGNORE_CASHE_REP_GUARD] == 0) { + mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] = ATBM_TOOLS_CMDIF; + } + } + } return MFE_OK; } @@ -2375,7 +2461,7 @@ int mf_open_fw(mflash* mfl, flash_params_t* flash_params, int num_of_banks) } int mf_opend_int (mflash** pmfl, void* access_dev, int num_of_banks, flash_params_t* flash_params, int ignore_cache_rep_guard, u_int8_t access_type, - void* access_func) { + void* access_func, int cx3_fw_access) { int rc; *pmfl = (mflash*)malloc(sizeof(mflash)); if (!*pmfl) { @@ -2385,6 +2471,7 @@ int mf_opend_int (mflash** pmfl, void* access_dev, int num_of_banks, f memset(*pmfl, 0, sizeof(mflash)); (*pmfl)->opts[MFO_IGNORE_CASHE_REP_GUARD] = ignore_cache_rep_guard; + (*pmfl)->opts[MFO_CX3_FW_ACCESS_EN] = cx3_fw_access; (*pmfl)->access_type = access_type; if (access_type == MFAT_MFILE) { @@ -2403,19 +2490,18 @@ int mf_opend_int (mflash** pmfl, void* access_dev, int num_of_banks, f int mf_opend (mflash** pmfl, struct mfile_t* mf, int num_of_banks, flash_params_t* flash_params, int ignore_cache_rep_guard) { - return mf_opend_int(pmfl, mf, num_of_banks, flash_params, ignore_cache_rep_guard, MFAT_MFILE, NULL); + return mf_opend_int(pmfl, mf, num_of_banks, flash_params, ignore_cache_rep_guard, MFAT_MFILE, NULL, 0); } int mf_open_uefi(mflash** pmfl, uefi_Dev_t *uefi_dev, f_fw_cmd fw_cmd_func) { - return mf_opend_int(pmfl, (void*)uefi_dev, 4, NULL, 0, MFAT_UEFI, (void*)fw_cmd_func); + return mf_opend_int(pmfl, (void*)uefi_dev, 4, NULL, 0, MFAT_UEFI, (void*)fw_cmd_func, 0); } - -int mf_open (mflash** pmfl, const char* dev, int num_of_banks, flash_params_t* flash_params, - int ignore_cache_rep_guard) +int mf_open_int (mflash** pmfl, const char* dev, int num_of_banks, flash_params_t* flash_params, + int ignore_cache_rep_guard, int cx3_fw_access) { mfile* mf; @@ -2431,7 +2517,7 @@ int mf_open (mflash** pmfl, const char* dev, int num_of_banks, flash_ return MFE_CR_ERROR; } - rc = mf_opend(pmfl, (struct mfile_t*) mf, num_of_banks, flash_params, ignore_cache_rep_guard); + rc = mf_opend_int(pmfl, (struct mfile_t*) mf, num_of_banks, flash_params, ignore_cache_rep_guard, MFAT_MFILE, NULL, cx3_fw_access); if ((*pmfl)) { (*pmfl)->opts[MFO_CLOSE_MF_ON_EXIT] = 1; @@ -2440,6 +2526,16 @@ int mf_open (mflash** pmfl, const char* dev, int num_of_banks, flash_ return MFE_OK; } +int mf_open_adv (mflash** pmfl, const char* dev, int num_of_banks, flash_params_t* flash_params, + int ignore_cache_rep_guard, int cx3_fw_access) { + return mf_open_int(pmfl, dev, num_of_banks, flash_params, ignore_cache_rep_guard, cx3_fw_access); +} + +int mf_open (mflash** pmfl, const char* dev, int num_of_banks, flash_params_t* flash_params, + int ignore_cache_rep_guard) { + return mf_open_int(pmfl, dev, num_of_banks, flash_params, ignore_cache_rep_guard, 0); +} + void mf_close (mflash* mfl) { if (!mfl) { return; diff --git a/mflash/mflash.h b/mflash/mflash.h index 55a3bdc..875d100 100644 --- a/mflash/mflash.h +++ b/mflash/mflash.h @@ -1,8 +1,4 @@ /* - * - * mflash.h - Mellanox Technilogies LTD. Flash access lib heared file - * ================================================================== - * * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. * * This software is available to you under a choice of one of two @@ -35,6 +31,7 @@ * */ + #ifndef MFLASH_H #define MFLASH_H @@ -112,6 +109,8 @@ int mf_open (mflash** pmfl, const char* dev, int num_of_banks, flash_ int ignore_cache_rep_guard); int mf_opend (mflash** pmfl, struct mfile_t* mf, int num_of_banks, flash_params_t* flash_params, int ignore_cache_rep_guard); +int mf_open_adv (mflash** pmfl, const char* dev, int num_of_banks, flash_params_t* flash_params, + int ignore_cache_rep_guard, int cx3_fw_access); int mf_open_uefi(mflash** pmfl, uefi_Dev_t *uefi_dev, f_fw_cmd fw_cmd_func); diff --git a/mflash/mflash_access_layer.c b/mflash/mflash_access_layer.c index 8142af6..5e7ddaa 100755 --- a/mflash/mflash_access_layer.c +++ b/mflash/mflash_access_layer.c @@ -28,7 +28,6 @@ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. - * */ @@ -36,8 +35,9 @@ #include #include -#include "mtcr.h" -#include "reg_access.h" +#include +#include +#include #include "mflash_types.h" #include "mflash_pack_layer.h" @@ -48,15 +48,18 @@ int check_access_type(mflash* mfl) //TODO: re-write in a more elegant way. { if (mfl->access_type == MFAT_MFILE) { - if ( mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] == ATBM_INBAND) { -#ifdef NO_INBAND_ACCESS - return MFE_NOT_SUPPORTED_OPERATION; -#endif -#ifndef _WIN_ - } else if ( mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] == ATBM_MLNXOS_CMDIF) { -#endif - } else if ( mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] == ATBM_ICMD) { - } else { + switch (mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE]) { + case ATBM_INBAND: + #ifdef NO_INBAND_ACCESS + return MFE_NOT_SUPPORTED_OPERATION; + #endif + #ifndef _WIN_ + case ATBM_MLNXOS_CMDIF: + #endif + case ATBM_ICMD: + case ATBM_TOOLS_CMDIF: + break; + default: return MFE_UNKOWN_ACCESS_TYPE; } } else if (mfl->access_type == MFAT_UEFI) { @@ -74,7 +77,7 @@ int sx_get_flash_info_by_type(mflash* mfl, unsigned *type_index, int *log2size, u_int32_t jedec_id; rc = check_access_type( mfl); CHECK_RC(rc); - rc = com_get_jedec(mfl->mf, get_bank_int(mfl), &jedec_id); CHECK_RC(rc); + rc = com_get_jedec(mfl->mf, get_bank_int(mfl), &jedec_id, &(mfl->attr.fw_flash_sector_sz)); CHECK_RC(rc); //printf("-D- jedec_id = %#x\n", jedec_id); rc = get_info_from_jededc_id(jedec_id, &vendor, &type, &capacity); CHECK_RC(rc); // Return there is no flash when all the params are 0xff @@ -121,14 +124,56 @@ int sx_block_write_by_type(mflash* mfl, u_int32_t addr, u_int32_t size, u_int8_t return MFE_OK; } -int sx_flash_lock_by_type(mflash* mfl, int lock_state) +#define MAX_FLASH_PROG_SEM_RETRY_CNT 2048 +static int lock_flash_programing_sem(mflash* mfl) { - //AdrianC: this is not implemented for some reason - (void)mfl; - (void)lock_state; + int rc; + if (mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] == ATBM_ICMD) { + rc = trm_lock(mfl->mf, TRM_RES_FLASH_PROGRAMING, MAX_FLASH_PROG_SEM_RETRY_CNT); + if (rc && rc != TRM_STS_RES_NOT_SUPPORTED) { + return MFE_SEM_LOCKED; + } + } else if (mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] == ATBM_TOOLS_CMDIF) { + rc = trm_lock(mfl->mf, TRM_RES_HCR_FLASH_PROGRAMING, MAX_FLASH_PROG_SEM_RETRY_CNT); + if (rc && rc != TRM_STS_RES_NOT_SUPPORTED) { + return MFE_SEM_LOCKED; + } + } + return MFE_OK; +} + +static int unlock_flash_programing_sem(mflash* mfl) +{ + int rc; + if (mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] == ATBM_ICMD) { + rc = trm_unlock(mfl->mf, TRM_RES_FLASH_PROGRAMING); + if (rc && rc != TRM_STS_RES_NOT_SUPPORTED) { + return MFE_SEM_LOCKED; + } + } else if (mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] == ATBM_TOOLS_CMDIF) { + rc = trm_unlock(mfl->mf, TRM_RES_HCR_FLASH_PROGRAMING); + if (rc && rc != TRM_STS_RES_NOT_SUPPORTED) { + return MFE_SEM_LOCKED; + } + } return MFE_OK; } +int sx_flash_lock_by_type(mflash* mfl, int lock_state) +{ + // burning through some FW interface , lock flash programing semaphore if possible + int rc; + if (lock_state) { + rc = lock_flash_programing_sem(mfl); + } else { + rc = unlock_flash_programing_sem(mfl); + } + if (rc == MFE_OK) { + mfl->is_locked = (lock_state != 0); + } + return rc; +} + int sx_erase_sect_by_type(mflash* mfl, u_int32_t addr) { int rc, bank; @@ -145,7 +190,7 @@ int mf_update_boot_addr_by_type(mflash* mfl, u_int32_t boot_addr) int rc; if (mfl->access_type == MFAT_UEFI || mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] == ATBM_MLNXOS_CMDIF) { // No CR-Space access - use mfpa register - rc = run_mfpa_command(mfl->mf, REG_ACCESS_METHOD_SET, get_bank_int(mfl), boot_addr, NULL, NULL); CHECK_RC(rc); + rc = run_mfpa_command(mfl->mf, REG_ACCESS_METHOD_SET, get_bank_int(mfl), boot_addr, NULL, NULL, NULL); CHECK_RC(rc); } return MFE_OK; } diff --git a/mflash/mflash_access_layer.h b/mflash/mflash_access_layer.h index a422195..d3314e5 100755 --- a/mflash/mflash_access_layer.h +++ b/mflash/mflash_access_layer.h @@ -28,7 +28,6 @@ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. - * */ /* diff --git a/mflash/mflash_common_structs.h b/mflash/mflash_common_structs.h index a78ded5..6b6fd1f 100644 --- a/mflash/mflash_common_structs.h +++ b/mflash/mflash_common_structs.h @@ -14,12 +14,12 @@ * - 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. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND @@ -28,7 +28,6 @@ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. - * */ #ifndef MFLASH_COMMON_STRUCTS_H @@ -48,6 +47,7 @@ typedef enum MfOpt { MFO_FW_ACCESS_TYPE_BY_MFILE, MFO_SX_TYPE, MFO_NEW_CACHE_REPLACEMENT_EN, + MFO_CX3_FW_ACCESS_EN, MFO_LAST } MfOpt; @@ -122,6 +122,8 @@ typedef struct flash_attr { u_int8_t protect_sub_and_sector; u_int8_t vendor; u_int8_t type; + // the flash sector size as seen by FW + u_int32_t fw_flash_sector_sz; } flash_attr; diff --git a/mflash/mflash_pack_layer.c b/mflash/mflash_pack_layer.c index d85d092..a0b3cc2 100755 --- a/mflash/mflash_pack_layer.c +++ b/mflash/mflash_pack_layer.c @@ -28,10 +28,8 @@ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. - * */ - #include #include #include @@ -96,7 +94,7 @@ int common_erase_sector(mfile *mf, u_int32_t addr, u_int8_t flash_bank) return MError2MfError(reg_access_mfbe (mf, REG_ACCESS_METHOD_SET, &mfbe)); } -int run_mfpa_command(mfile *mf, u_int8_t access_cmd, u_int8_t flash_bank, u_int32_t boot_address, u_int32_t *jedec_p, int *num_of_banks) +int run_mfpa_command(mfile *mf, u_int8_t access_cmd, u_int8_t flash_bank, u_int32_t boot_address, u_int32_t *jedec_p, int *num_of_banks, u_int32_t* fw_sector_size) { struct register_access_mfpa mfpa; int rc; @@ -125,22 +123,27 @@ int run_mfpa_command(mfile *mf, u_int8_t access_cmd, u_int8_t flash_bank, u_int3 if (num_of_banks != NULL) { *num_of_banks = mfpa.flash_num; } + + if (fw_sector_size != NULL) { + *fw_sector_size = mfpa.sector_size ? ((1 << mfpa.sector_size) * 1024) : 0; // 2^log2_sector_size_in_kb * 1k + } + return MFE_OK; } int get_num_of_banks(mfile *mf) { int num_of_banks; - int rc = run_mfpa_command(mf, REG_ACCESS_METHOD_GET, 0, 0, NULL, &num_of_banks); + int rc = run_mfpa_command(mf, REG_ACCESS_METHOD_GET, 0, 0, NULL, &num_of_banks, NULL); if (rc) { return -1; } return num_of_banks; } -int com_get_jedec(mfile *mf, u_int8_t flash_bank, u_int32_t *jedec_p) +int com_get_jedec(mfile *mf, u_int8_t flash_bank, u_int32_t *jedec_p, u_int32_t* fw_flash_sector_size) { - return run_mfpa_command(mf, REG_ACCESS_METHOD_GET, flash_bank, 0, jedec_p, NULL); + return run_mfpa_command(mf, REG_ACCESS_METHOD_GET, flash_bank, 0, jedec_p, NULL, fw_flash_sector_size); } /* @@ -229,7 +232,7 @@ MfError MError2MfError(MError rc) { case ME_ICMD_STATUS_CR_FAIL: return MFE_CR_ERROR; case ME_ICMD_STATUS_SEMAPHORE_TO: - return MFE_CMDIF_TIMEOUT_ERR; + return MFE_SEM_LOCKED; case ME_ICMD_STATUS_EXECUTE_TO: return MFE_CMDIF_TIMEOUT_ERR; case ME_ICMD_STATUS_IFC_BUSY: diff --git a/mflash/mflash_pack_layer.h b/mflash/mflash_pack_layer.h index a9ae28b..a5186b3 100755 --- a/mflash/mflash_pack_layer.h +++ b/mflash/mflash_pack_layer.h @@ -28,7 +28,6 @@ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. - * */ /* @@ -118,6 +117,7 @@ enum AccessTypeByMfile{ ATBM_INBAND, ATBM_MLNXOS_CMDIF, ATBM_ICMD, + ATBM_TOOLS_CMDIF, }; /* @@ -191,9 +191,9 @@ int sx_st_block_access(mfile *mf, u_int32_t flash_addr, u_int8_t bank, u_int32_t int common_erase_sector(mfile *mf, u_int32_t addr, u_int8_t flash_bank); -int run_mfpa_command(mfile *mf, u_int8_t access_cmd, u_int8_t flash_bank, u_int32_t boot_address, u_int32_t *jedec_p, int *num_of_banks); +int run_mfpa_command(mfile *mf, u_int8_t access_cmd, u_int8_t flash_bank, u_int32_t boot_address, u_int32_t *jedec_p, int *num_of_banks, u_int32_t* fw_flash_sector_sz); -int com_get_jedec(mfile *mf, u_int8_t flash_bank, u_int32_t *jedec_p); +int com_get_jedec(mfile *mf, u_int8_t flash_bank, u_int32_t *jedec_p, u_int32_t* fw_flash_sector_sz); int get_num_of_banks(mfile *mf); int get_info_from_jededc_id(u_int32_t jededc_id, u_int8_t *vendor, u_int8_t* type, u_int8_t* capacity); int get_type_index_by_vendor_and_type(u_int8_t vendor, u_int8_t type, unsigned *type_index); diff --git a/mflash/mflash_types.h b/mflash/mflash_types.h index eb7a39b..4d2a005 100644 --- a/mflash/mflash_types.h +++ b/mflash/mflash_types.h @@ -14,12 +14,12 @@ * - 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. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND @@ -28,9 +28,9 @@ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. - * */ + #ifndef MFLASH_TYPES_H #define MFLASH_TYPES_H diff --git a/mft_utils/errmsg.h b/mft_utils/errmsg.h index 6d071c4..0f08cad 100644 --- a/mft_utils/errmsg.h +++ b/mft_utils/errmsg.h @@ -30,6 +30,7 @@ * SOFTWARE. */ + #ifndef ERRMSG_H_ #define ERRMSG_H_ diff --git a/mft_utils/mft_sig_handler.c b/mft_utils/mft_sig_handler.c index b0516a0..449899e 100644 --- a/mft_utils/mft_sig_handler.c +++ b/mft_utils/mft_sig_handler.c @@ -30,7 +30,6 @@ * SOFTWARE. */ - #include #include diff --git a/mft_utils/mft_sig_handler.h b/mft_utils/mft_sig_handler.h index 78bc49a..e76b4a0 100644 --- a/mft_utils/mft_sig_handler.h +++ b/mft_utils/mft_sig_handler.h @@ -30,7 +30,6 @@ * SOFTWARE. */ - #ifndef MFT_SIG_HANDLER #define MFT_SIG_HANDLER diff --git a/mlxconfig/Makefile.am b/mlxconfig/Makefile.am index 0e395a9..7820ba1 100755 --- a/mlxconfig/Makefile.am +++ b/mlxconfig/Makefile.am @@ -50,9 +50,10 @@ bin_PROGRAMS = mstconfig mstconfig_LDADD = $(CMDIF_DIR)/libcmdif.a ../reg_access/libreg_access.a $(LAYOUTS_LIB) $(MTCR_DIR)/libmtcr_ul.a $(MLNXOS_PPC_LIBS) $(LIBSTD_CPP) $(UTILS_LIB) $(DEV_MGT_DIR)/libdev_mgt.a -ldl -mstconfig_SOURCES = mlxcfg_ui.h mlxcfg_ui.cpp\ - mlxcfg_parser.cpp\ - mlxcfg_lib.h mlxcfg_lib.cpp +mstconfig_SOURCES = mlxcfg_status.h mlxcfg_ui.h mlxcfg_ui.cpp\ + mlxcfg_parser.cpp\ + mlxcfg_lib.h mlxcfg_lib.cpp\ + mlxcfg_param_lib.h mlxcfg_param_lib.cpp #get mst device examples and tool name from makefile AM_CXXFLAGS += -DMLXCFG_NAME=\"mstconfig\" diff --git a/mlxconfig/mlxcfg_lib.cpp b/mlxconfig/mlxcfg_lib.cpp index 34c5281..877b45d 100644 --- a/mlxconfig/mlxcfg_lib.cpp +++ b/mlxconfig/mlxcfg_lib.cpp @@ -14,12 +14,12 @@ * - 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. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND @@ -28,7 +28,6 @@ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. - * */ /* * mlxcfg_lib.cpp @@ -41,14 +40,10 @@ #include #include -#include #include +#include #include -#include #include -#include - - #include "mlxcfg_lib.h" using namespace std; @@ -57,678 +52,11 @@ using namespace std; * Mask and offsets for working with the capability vector * retrieved via query_dev_cap command. */ -#define SRIOV_MASK 0x1 -#define WOL_P1_MASK 0x2 -#define WOL_P2_MASK 0x4 -#define VPI_P1_MASK 0x8 -#define VPI_P2_MASK 0x10 -#define BAR_SZ_MASK 0x20 #define TOOL_CAP_BITS_ADDR 0xc0 -#define MAX_VFS_ADDR 0x38 -#define MAX_BAR_SZ_ADDR 0xc8 -#define DEFAULT_BAR_SZ_ADDR 0x48 - -/* - * Debug print MACRO of the MNV Tlvs: - */ -#ifdef _ENABLE_DEBUG_ -# define DEBUG_PRINT_SEND(data_struct, struct_name)\ - printf("-I- Data Sent:\n");\ - tools_open_##struct_name##_print(data_struct, stdout, 1) -# define DEBUG_PRINT_RECIEVE(data_struct, struct_name)\ - printf("-I- Data Recieved:\n");\ - tools_open_##struct_name##_print(data_struct, stdout, 1) -#else -# define DEBUG_PRINT_SEND(data_struct, struct_name) -# define DEBUG_PRINT_RECIEVE(data_struct, struct_name) -#endif #define CHECK_RC(rc)\ if (rc) return rc; -/* - * Enum for handling error messages - */ - -typedef enum { - MCE_SUCCESS = 0, - MCE_FAILED, - MCE_TLV_NOT_FOUND, - MCE_TLV_NOT_SUPP, - MCE_NVCFG_NOT_SUPP, - MCE_TOOLS_HCR_NOT_SUPP, - MCE_DRIVER_DOWN, - MCE_UNSUPPORTED_DEVICE, - MCE_UNSUPPORTED_CFG, - MCE_BAD_PARAMS, - MCE_BAD_PARAM_VAL, - MCE_DEV_BUSY, - MCE_UNKNOWN_TLV, - MCE_REG_NOT_SUPP, - MCE_METHOD_NOT_SUPP, - MCE_RES_NOT_AVAIL, - MCE_CONF_CORRUPT, - MCE_TLV_LEN_TOO_SMALL, - MCE_BAD_CONFIG, - MCE_ERASE_EXEEDED, - MCE_BAD_OP, - MCE_BAD_STATUS, - MCE_CR_ERROR, - MCE_NOT_IMPLEMENTED, - MCE_INCOMPLETE_PARAMS, - MCE_OPEN_DEVICE, - MCE_PCI, - MCE_GET_DEFAULT_PARAMS, - MCE_UNKNOWN_ERR -}McStatus; - -/* - * Forward Declarations: - */ - -static MError mnvaCom(mfile* mf, u_int8_t* buff, u_int16_t len, u_int16_t type, reg_access_method_t method, u_int16_t typeMod=0); - -/* - * MlxCfgOps::CfgParams implementation - */ - -MlxCfgOps::CfgParams::CfgParams(mlxCfgType t, u_int32_t tlvT) { - // init the ErrMsg Class - std::map errmap; - errmap[MCE_SUCCESS] = "Success"; - errmap[MCE_FAILED] = "General Failure"; - errmap[MCE_BAD_PARAMS] = "Bad parameters"; - errmap[MCE_BAD_PARAM_VAL] = "Bad parameter value"; - errmap[MCE_BAD_STATUS] = "General Failure"; - errmap[MCE_GET_DEFAULT_PARAMS] = "Failed to get default params"; - - updateErrCodes(errmap); - type = t; - tlvType = tlvT; - _updated = false; - _ignoreHardLimits = false; - _ignoreSoftLimits = false; -} - -int MlxCfgOps::CfgParams::getDefaultParams4thGen(mfile* mf, struct tools_open_query_def_params_global* global_params) -{ - MError rc = tcif_query_global_def_params(mf, global_params); - if (rc) { - return errmsg(MCE_BAD_STATUS, "Failed to get default parameters: %s", tcif_err2str(rc)); - } - return MCE_SUCCESS; -} - -int MlxCfgOps::CfgParams::getDefaultParams4thGen(mfile* mf, int port, struct tools_open_query_def_params_per_port* port_params) -{ - MError rc = tcif_query_per_port_def_params(mf, port, port_params); - if (rc) { - return errmsg(MCE_BAD_STATUS, "Failed to get default parameters: %s", tcif_err2str(rc)); - } - return MCE_SUCCESS; -} - -int MlxCfgOps::CfgParams::getDefaultAndFromDev(mfile* mf) -{ - int rc; - rc = getDefaultParams(mf); CHECK_RC(rc); - rc = getFromDev(mf); CHECK_RC(rc); - return MCE_SUCCESS; -} - -bool MlxCfgOps::CfgParams::checkCfg(mfile* mf) -{ - if (!_ignoreHardLimits && !hardLimitCheck()) { - return false; - } - if (!_ignoreSoftLimits && !softLimitCheck(mf)) { - return false; - } - return true; -} - -bool MlxCfgOps::CfgParams::softLimitCheck(mfile* mf) -{ - // by default not implemented - (void)mf; - return true; -} - -void MlxCfgOps::CfgParams::setIgnoreSoftLimits(bool val) -{ - _ignoreSoftLimits = val; -} -void MlxCfgOps::CfgParams::setIgnoreHardLimits(bool val) -{ - _ignoreHardLimits = val; -} -/* - * MlxCfgOps::SriovParams implementation - */ - -int MlxCfgOps::SriovParams::getDefaultParams(mfile* mf) -{ - struct tools_open_query_def_params_global global_params; - int rc; - rc = updateMaxVfs(mf); CHECK_RC(rc); - rc = getDefaultParams4thGen(mf, &global_params); - if (rc == MCE_SUCCESS) { - _sriovEn = global_params.sriov_en; - _numOfVfs = global_params.num_vfs; - } else { - rc = MCE_GET_DEFAULT_PARAMS; - } - return rc; -} - -void MlxCfgOps::SriovParams::setParam(mlxCfgParam paramType, u_int32_t val) -{ - if (paramType == Mcp_Sriov_En) { - _sriovEn = val; - } else if (paramType == Mcp_Num_Of_Vfs) { - _numOfVfs = val; - } -} - -u_int32_t MlxCfgOps::SriovParams::getParam(mlxCfgParam paramType) -{ - if (paramType == Mcp_Sriov_En) { - return _sriovEn; - } else if (paramType == Mcp_Num_Of_Vfs) { - return _numOfVfs; - } - return MLXCFG_UNKNOWN; -} - - -int MlxCfgOps::SriovParams::getFromDev(mfile* mf) -{ - if (_updated) { - return MCE_SUCCESS; - } - MError rc; - // prep tlv - u_int8_t buff[tools_open_sriov_size()]; - struct tools_open_sriov sriovTlv; - memset(buff, 0, tools_open_sriov_size()); - memset(&sriovTlv, 0, sizeof(struct tools_open_sriov)); - // pack it - tools_open_sriov_pack(&sriovTlv, buff); - // send it - DEBUG_PRINT_SEND(&sriovTlv, sriov); - rc = mnvaCom(mf, buff, tools_open_sriov_size(), tlvType, REG_ACCESS_METHOD_GET, 0); - // check rc - DEBUG_PRINT_RECIEVE(&sriovTlv, sriov); - if (rc) {// when attempting to get a nv_cfg tlv from device ME_REG_ACCESS_RES_NOT_AVLBL means - no valid - // tlv found. i.e default configuration are on. - if (rc == ME_REG_ACCESS_RES_NOT_AVLBL) { - - return MCE_SUCCESS; - } - return errmsg(MCE_BAD_STATUS, "Failed to get SRIOV configuration: %s", m_err2str(rc)); - } - // unpack and update - tools_open_sriov_unpack(&sriovTlv, buff); - _sriovEn = sriovTlv.sriov_en; - _numOfVfs = sriovTlv.total_vfs; - _updated = true; - - return MCE_SUCCESS; -} - -int MlxCfgOps::SriovParams::setOnDev(mfile* mf, bool ignoreCheck) -{ - if (_sriovEn == MLXCFG_UNKNOWN || _numOfVfs == MLXCFG_UNKNOWN) { - return errmsg("%s please specify all parameters for SRIOV.", err() ? err() : ""); - } - if (!ignoreCheck && !checkCfg(mf)) { - return MCE_BAD_PARAMS; - } - - // prep tlv - MError ret; - u_int8_t buff[tools_open_sriov_size()]; - struct tools_open_sriov sriovTlv; - - memset(buff, 0, tools_open_sriov_size()); - memset(&sriovTlv, 0, sizeof(struct tools_open_sriov)); - - sriovTlv.sriov_en = _sriovEn; - sriovTlv.total_vfs = _numOfVfs; - // pack it - tools_open_sriov_pack(&sriovTlv, buff); - // send it - ret = mnvaCom(mf, buff, tools_open_sriov_size(), tlvType, REG_ACCESS_METHOD_SET, 0); - // check rc - if (ret) { - return errmsg("failed to set SRIOV params: %s",m_err2str(ret)); - } - _updated = false; - return MCE_SUCCESS; -} - -int MlxCfgOps::SriovParams::updateMaxVfs(mfile* mf) -{ - u_int64_t data = 0; - int rc = tcif_query_dev_cap(mf, MAX_VFS_ADDR, &data); - if (rc) { - return errmsg("failed to query device capabilities: %s", m_err2str((MError)rc)); - } - _maxVfs = (u_int32_t)(data & 0xff); - if (_maxVfs == 0) { // defined in CX PRM , if max_func_idx=0 then all functions(128) are operational - _maxVfs = 128; - } - _maxVfs--; // remove 1 physical function - return MCE_SUCCESS; -} - -bool MlxCfgOps::SriovParams::hardLimitCheck() -{ - if ((_numOfVfs > _maxVfs)) { - errmsg("Number of VFs exceeds limit (%d).", _maxVfs); - return false; - } - - if (_sriovEn != 0 && _sriovEn != 1) { - errmsg("illegal SRIOV_EN parameters value. (should be 0 or 1)"); - return false; - } - return true; -} - -bool MlxCfgOps::SriovParams::softLimitCheck(mfile* mf) -{ - u_int32_t barSz = 0; - BarSzParams barParams; - - if (!mf) { - return false; - } - - if (barParams.getDefaultAndFromDev(mf)) { - return false; - } - - if (_sriovEn == 0) { - return true; - } - - barSz = barParams.getParam(Mcp_Log_Bar_Size); - - if (barSz == MLXCFG_UNKNOWN) { - return errmsg("Failed to get the bar size from device"); - } - // this is the default log2 bar size , we require (numOfVfs+1)*(2^log_uar_bar) <= 512 or else the node might not boot - double TotalMem = (_numOfVfs + 1)*(1 << barSz); // 1 for physical func - - if ((TotalMem > 512)){ - unsigned int maxAlowedVfs =static_cast(512/(1 << barSz)) - 1; - errmsg("illegal SRIOV parameter value. Maximal number of VFs: %d", maxAlowedVfs < _maxVfs ? maxAlowedVfs : _maxVfs); - return false; - } - return true; -} - -/* - * MlxCfgOps::WolParams implementation - */ - -int MlxCfgOps::WolParams::getDefaultParams(mfile* mf) -{ - struct tools_open_query_def_params_per_port port_params; - int rc = getDefaultParams4thGen(mf, _port , &port_params); - if (rc == MCE_SUCCESS) { - _wolMagicEn = port_params.en_wol_magic; - } else { - rc = MCE_GET_DEFAULT_PARAMS; - } - return rc; -} - -void MlxCfgOps::WolParams::setParam(mlxCfgParam paramType, u_int32_t val) -{ - if ((paramType == Mcp_Wol_Magic_En_P1 && _port == 1 ) || (paramType == Mcp_Wol_Magic_En_P2 && _port == 2) ) { - _wolMagicEn = val; - } -} - -u_int32_t MlxCfgOps::WolParams::getParam(mlxCfgParam paramType) -{ - if ((paramType == Mcp_Wol_Magic_En_P1 && _port == 1 ) || (paramType == Mcp_Wol_Magic_En_P2 && _port == 2) ) { - return _wolMagicEn; - } - return MLXCFG_UNKNOWN; -} - -int MlxCfgOps::WolParams::getFromDev(mfile* mf) -{ - if (_updated) { - return MCE_SUCCESS; - } - MError rc; - // prep tlv - u_int8_t buff[tools_open_wol_size()]; - struct tools_open_wol wolTlv; - memset(buff, 0, tools_open_wol_size()); - memset(&wolTlv, 0, sizeof(struct tools_open_wol)); - // pack it - tools_open_wol_pack(&wolTlv, buff); - // send it - rc = mnvaCom(mf, buff, tools_open_wol_size(), tlvType, REG_ACCESS_METHOD_GET, _port); - // check rc - if (rc) { - if (rc == ME_REG_ACCESS_RES_NOT_AVLBL) { - return MCE_SUCCESS; - } - return errmsg("Failed to get WOL port%d configuration: %s", _port, m_err2str(rc)); - } - // unpack and update - tools_open_wol_unpack(&wolTlv, buff); - _wolMagicEn = wolTlv.en_wol_magic; - _updated = true; - - return MCE_SUCCESS; -} - -int MlxCfgOps::WolParams::setOnDev(mfile* mf, bool ignoreCheck) -{ - if (_wolMagicEn == MLXCFG_UNKNOWN) { - return errmsg("%s please specify all the parameters for WOL.", err()? err() : ""); - } - if (!ignoreCheck && !checkCfg()) { - return MCE_BAD_PARAMS; - } - // prep tlv - MError ret; - u_int8_t buff[tools_open_wol_size()]; - struct tools_open_wol wolTlv; - - memset(buff, 0, tools_open_wol_size()); - memset(&wolTlv, 0, sizeof(struct tools_open_wol)); - - wolTlv.en_wol_magic= _wolMagicEn; - // pack it - tools_open_wol_pack(&wolTlv, buff); - // send it - ret = mnvaCom(mf, buff, tools_open_wol_size(), tlvType, REG_ACCESS_METHOD_SET, _port); - // check rc - if (ret) { - return errmsg("failed to set WOL params for port%d: %s", _port, m_err2str(ret)); - } - _updated = false; - return MCE_SUCCESS; -} - -bool MlxCfgOps::WolParams::hardLimitCheck() -{ - if (_wolMagicEn == 0 || _wolMagicEn == 1 ) { - return true; - } - errmsg("illegal WOL parameter value. can be either 0 or 1."); - return false; -} - -/* - * BarSzParams Implementation - */ - -int MlxCfgOps::BarSzParams::getDefaultParams(mfile* mf) -{ - struct tools_open_query_def_params_global global_params; - int rc = getDefaultParams4thGen(mf, &global_params); - if ((rc == MCE_SUCCESS) & 0) { //TODO: adrianc: remove the & 0 when FW displays thesee parameters correctly in QUERY_DEF_PARAMS command - _logBarSz = global_params.uar_bar_size; - _maxLogBarSz = global_params.max_uar_bar_size; - } else { - // attempt to take from query_dev_cap - rc = getDefaultBarSz(mf); - } - return rc; -} - -int MlxCfgOps::BarSzParams::getDefaultBarSz(mfile* mf) -{ - u_int64_t data = 0; - MError rc = tcif_query_dev_cap(mf, MAX_BAR_SZ_ADDR, &data); - if (rc) { - return errmsg(MCE_BAD_STATUS,"Failed to query device capabilities. %s", tcif_err2str(rc)); - } - - _maxLogBarSz = EXTRACT64(data, 3, 6); - - rc = tcif_query_dev_cap(mf, DEFAULT_BAR_SZ_ADDR, &data); - if (rc) { - return errmsg(MCE_BAD_STATUS,"Failed to query device capabilities. %s", tcif_err2str(rc)); - } - - _logBarSz = EXTRACT64(data, 16, 6) + 1; //adrianc: this field reports only half of the bar size (i.e without the blue flame) - return MCE_SUCCESS; -} - -void MlxCfgOps::BarSzParams::setParam(mlxCfgParam paramType, u_int32_t val) -{ - if ((paramType == Mcp_Log_Bar_Size) ) { - _logBarSz = val; - } -} - -u_int32_t MlxCfgOps::BarSzParams::getParam(mlxCfgParam paramType) -{ - if (paramType == Mcp_Log_Bar_Size) { - return _logBarSz; - } - return MLXCFG_UNKNOWN; -} - -int MlxCfgOps::BarSzParams::getFromDev(mfile* mf) -{ - if (_updated) { - return MCE_SUCCESS; - } - MError rc; - // prep tlv - u_int8_t buff[tools_open_bar_size_size()]; - struct tools_open_bar_size barSzTlv; - memset(buff, 0, tools_open_bar_size_size()); - memset(&barSzTlv, 0, sizeof(struct tools_open_bar_size)); - // pack it - tools_open_bar_size_pack(&barSzTlv, buff); - // send it - rc = mnvaCom(mf, buff, tools_open_bar_size_size(), tlvType, REG_ACCESS_METHOD_GET, 0); - // check rc - if (rc) { - if (rc == ME_REG_ACCESS_RES_NOT_AVLBL) { - return MCE_SUCCESS; - } - return errmsg("Failed to get BAR size configuration: %s", m_err2str(rc)); - } - // unpack and update - tools_open_bar_size_unpack(&barSzTlv, buff); - _logBarSz = barSzTlv.log_uar_bar_size; - _updated = true; - - return MCE_SUCCESS; -} - -int MlxCfgOps::BarSzParams::setOnDev(mfile* mf, bool ignoreCheck) -{ - if (_logBarSz == MLXCFG_UNKNOWN) { - return errmsg("%s please specify all the parameters for BAR size.", err() ? err() : ""); - } - - if (!ignoreCheck && !checkCfg(mf)) { - return MCE_BAD_PARAMS; - } - - // prep tlv - MError ret; - u_int8_t buff[tools_open_bar_size_size()]; - struct tools_open_bar_size barSzTlv; - - memset(buff, 0, tools_open_bar_size_size()); - memset(&barSzTlv, 0, sizeof(struct tools_open_bar_size)); - - barSzTlv.log_uar_bar_size= _logBarSz; - // pack it - tools_open_bar_size_pack(&barSzTlv, buff); - // send it - ret = mnvaCom(mf, buff, tools_open_bar_size_size(), tlvType, REG_ACCESS_METHOD_SET, 0); - // check rc - if (ret) { - return errmsg("failed to set BAR size params: %s",m_err2str(ret)); - } - _updated = false; - return MCE_SUCCESS; -} - -bool MlxCfgOps::BarSzParams::hardLimitCheck() -{ - if (_logBarSz > _maxLogBarSz ) { - errmsg("given bar size is too large, max allowed log2 bar size: 0x%x", _maxLogBarSz); - return false; - } - return true; -} - - -bool MlxCfgOps::BarSzParams::softLimitCheck(mfile* mf) -{ - u_int32_t numOfVfs = 0; - int sriovEn; - SriovParams sriovParams; - - if (!mf) { - return false; - } - - if (sriovParams.getDefaultAndFromDev(mf)) { - errmsg("Failed to get SRIOV parameters from device: %s", sriovParams.err()); - return false; - } - - numOfVfs = sriovParams.getParam(Mcp_Num_Of_Vfs); - sriovEn = sriovParams.getParam(Mcp_Sriov_En); - - if (numOfVfs== MLXCFG_UNKNOWN || numOfVfs == MLXCFG_UNKNOWN) { - errmsg("Illegal SRIOV parameters values"); - return false; - } - - if (sriovEn == 0) { - return true; - } - // this is the default log2 bar size , we require numOfVfs*(2^log_uar_bar) <= 512 or else the node might not boot - double TotalMem = (numOfVfs+1)*(1 << _logBarSz); - //printf("-D- num_of_vfs*2^(bar_sz+1) = %d*2^%ld = %d\n", _numOfVfs, data, (int)(_numOfVfs*(std::pow((double)2, (int)data)))); - //printf("-D- maxVfs(default set by fw) : %d\n", _maxVfs); - - if (TotalMem > 512){ - unsigned int maxAlowedLogBarSz =static_cast(log2((512/(numOfVfs + 1 )))); - errmsg("illegal Bar Size parameter value. Maximal allowed bar size: %d", maxAlowedLogBarSz < _maxLogBarSz ? maxAlowedLogBarSz : _maxLogBarSz); - return false; - } - return true; -} - -/* - * VpiParams Implementation - */ - -int MlxCfgOps::VpiParams::getDefaultParams(mfile* mf) -{ - struct tools_open_query_def_params_per_port port_params; - int rc = getDefaultParams4thGen(mf, _port , &port_params); - if (rc) { - return MCE_GET_DEFAULT_PARAMS; - } - _linkType = port_params.network_link_type; - return MCE_SUCCESS; -} - -void MlxCfgOps::VpiParams::setParam(mlxCfgParam paramType, u_int32_t val) -{ - if ((paramType == Mcp_Link_Type_P1 && _port == 1 ) || (paramType == Mcp_Link_Type_P2 && _port == 2) ) { - _linkType = val; - } -} - -u_int32_t MlxCfgOps::VpiParams::getParam(mlxCfgParam paramType) -{ - if ((paramType == Mcp_Link_Type_P1 && _port == 1 ) || (paramType == Mcp_Link_Type_P2 && _port == 2) ) { - return _linkType; - } - return MLXCFG_UNKNOWN; -} - -int MlxCfgOps::VpiParams::getFromDev(mfile* mf) -{ - if (_updated) { - return MCE_SUCCESS; - } - MError rc; - // prep tlv - u_int8_t buff[tools_open_vpi_settings_size()]; - struct tools_open_vpi_settings vpiTlv; - memset(buff, 0, tools_open_vpi_settings_size()); - memset(&vpiTlv, 0, sizeof(struct tools_open_vpi_settings)); - // pack it - tools_open_vpi_settings_pack(&vpiTlv, buff); - // send it - rc = mnvaCom(mf, buff, tools_open_vpi_settings_size(), tlvType, REG_ACCESS_METHOD_GET, _port); - // check rc - if (rc) { - if (rc == ME_REG_ACCESS_RES_NOT_AVLBL) { - return MCE_SUCCESS; - } - return errmsg("Failed to get VPI port%d configuration: %s", _port, m_err2str(rc)); - } - // unpack and update - tools_open_vpi_settings_unpack(&vpiTlv, buff); - _linkType = vpiTlv.network_link_type; - _updated = true; - - return MCE_SUCCESS; -} - -int MlxCfgOps::VpiParams::setOnDev(mfile* mf, bool ignoreCheck) -{ - if (_linkType == MLXCFG_UNKNOWN) { - return errmsg("%s please specify all the parameters for VPI settings.", err() ? err() : ""); - } - if (!ignoreCheck && !checkCfg()) { - return MCE_BAD_PARAMS; - } - - // prep tlv - MError ret; - u_int8_t buff[tools_open_vpi_settings_size()]; - struct tools_open_vpi_settings vpiTlv; - - memset(buff, 0, tools_open_vpi_settings_size()); - memset(&vpiTlv, 0, sizeof(struct tools_open_vpi_settings)); - - vpiTlv.network_link_type= _linkType; - // pack it - tools_open_vpi_settings_pack(&vpiTlv, buff); - // send it - ret = mnvaCom(mf, buff, tools_open_vpi_settings_size(), tlvType, REG_ACCESS_METHOD_SET, _port); - // check rc - if (ret) { - return errmsg("failed to set VPI port%d params: %s", _port, m_err2str(ret)); - } - _updated = false; - return MCE_SUCCESS; -} - -bool MlxCfgOps::VpiParams::hardLimitCheck() -{ - if (_linkType == 1 || _linkType == 2 || _linkType == 3 ) { - return true; - } - errmsg("illegal VPI link type (should be 1|2|3)."); - return false; -} - /* * MlxCfgOps implementation */ @@ -769,14 +97,9 @@ MlxCfgOps::MlxCfgOps() updateErrCodes(errmap); _mf = NULL; + _deviceId = DeviceEndMarker; _suppVec = 0; - _cfgList.resize(Mct_Last); - _cfgList[Mct_Sriov] = new SriovParams(); - _cfgList[Mct_Wol_P1] = new WolParams(1); - _cfgList[Mct_Wol_P2] = new WolParams(2); - _cfgList[Mct_Vpi_P1] = new VpiParams(1); - _cfgList[Mct_Vpi_P2] = new VpiParams(2); - _cfgList[Mct_Bar_Size] = new BarSzParams(); + _isFifthGen = false; return; } @@ -840,18 +163,56 @@ int MlxCfgOps::supportsToolsHCR() return errmsg(MCE_UNSUPPORTED_DEVICE); } +static void dealWithSignal() +{ + int sig; + sig = mft_signal_is_fired(); + if (sig) { + // reset recieved signal + mft_signal_set_fired(0); + // retore prev handler + mft_signal_set_handling(0); + //raise signal to let the previous handle deal with it. + raise(sig); + } + mft_signal_set_handling(0); + return; +} + +int MlxCfgOps::supportsNVData() +{ + struct tools_open_nvqc nvqcTlv; + memset(&nvqcTlv, 0, sizeof(struct tools_open_nvqc)); + MError rc; + // "suspend" signals as we are going to take semaphores + mft_signal_set_handling(1); + rc = reg_access_nvqc(_mf, REG_ACCESS_METHOD_GET, &nvqcTlv); + dealWithSignal(); + if (rc == ME_REG_ACCESS_BAD_PARAM || rc == ME_REG_ACCESS_INTERNAL_ERROR) { + return errmsg(MCE_NVCFG_NOT_SUPP); + } + return MCE_SUCCESS; +} + int MlxCfgOps::openComChk() { bool rc; int ret; // check if we support Tools HCR and update _suppVec - rc = supportsToolsHCR(); CHECK_RC(rc); + if (_isFifthGen) { + rc = supportsNVData(); CHECK_RC(rc); + } else { + rc = supportsToolsHCR(); CHECK_RC(rc); + } // update cfg specific info. for (int i = Mct_Sriov; i < Mct_Last; i++) { - ret = _cfgList[i]->getDefaultParams(_mf); - if (ret && ret!= MCE_GET_DEFAULT_PARAMS) { - return ret; + _cfgList[i]->setDevCapVec(_suppVec); + if (_cfgList[i]->cfgSupported(_mf)) { + ret = _cfgList[i]->getDefaultParams(_mf); + if (ret && ret!= MCE_GET_DEFAULT_PARAMS && ret != MCE_NOT_IMPLEMENTED) { + return ret; + } } } return MCE_SUCCESS; @@ -869,15 +230,53 @@ int MlxCfgOps::open(const char* devStr, bool forceClearSem) int MlxCfgOps::opend(mfile* mf, bool forceClearSem) { + u_int32_t hwDevId, hwRevId; if (!mf) { return errmsg(MCE_BAD_PARAMS); } _mf = mf; + if( dm_get_device_id(mf, &_deviceId, &hwDevId, &hwRevId) ) { + return errmsg("Failed to identify device."); + } + // check if device is supported: + switch(_deviceId) { + case DeviceConnectX3: + case DeviceConnectX3Pro: + _isFifthGen = false; + break; + case DeviceConnectIB: + case DeviceConnectX4: + _isFifthGen = true; + break; + default: + return errmsg(MCE_UNSUPPORTED_DEVICE); + } + + // init _cfgList + _cfgList.resize(Mct_Last); + if (_isFifthGen) { + _cfgList[Mct_Sriov] = new SriovParams5thGen(); + _cfgList[Mct_Wol_P1] = new WolParams5thGen(1); + _cfgList[Mct_Wol_P2] = new WolParams5thGen(2); + _cfgList[Mct_Vpi_P1] = new VpiParams5thGen(1); + _cfgList[Mct_Vpi_P2] = new VpiParams5thGen(2); + _cfgList[Mct_Bar_Size] = new BarSzParams5thGen(); + } else { + _cfgList[Mct_Sriov] = new SriovParams4thGen(); + _cfgList[Mct_Wol_P1] = new WolParams4thGen(1); + _cfgList[Mct_Wol_P2] = new WolParams4thGen(2); + _cfgList[Mct_Vpi_P1] = new VpiParams4thGen(1); + _cfgList[Mct_Vpi_P2] = new VpiParams4thGen(2); + _cfgList[Mct_Bar_Size] = new BarSzParams4thGen(); + } + + if (forceClearSem) { - int rc = tools_cmdif_unlock_semaphore(_mf); + int rc; + rc = _isFifthGen ? icmd_clear_semaphore(mf) : tools_cmdif_unlock_semaphore(_mf); if (rc) { - return errmsg("failed to unlock semaphore, %s.", m_err2str((MError)rc)); + return errmsg("Failed to unlock semaphore, %s.", m_err2str((MError)rc)); } } return openComChk(); @@ -888,8 +287,7 @@ bool MlxCfgOps::supportsCfg(mlxCfgType cfg) if (!isLegal(cfg)) { return false; } - - return _suppVec & cfgSuppMask[cfg]; + return _cfgList[cfg]->cfgSupported(_mf); } bool MlxCfgOps::supportsParam(mlxCfgParam param) @@ -905,6 +303,11 @@ int MlxCfgOps::getCfg(mlxCfgParam cfgParam, u_int32_t& val) if (!isLegal(cfgParam)) { return MCE_BAD_PARAMS; } + + if (!supportsParam(cfgParam)) { + return errmsg(MCE_UNSUPPORTED_CFG); + } + int rc = _cfgList[cfgParam2Type(cfgParam)]->getFromDev(_mf); if (rc) { return errmsgConcatMsg(rc,*_cfgList[cfgParam2Type(cfgParam)]); @@ -929,6 +332,11 @@ int MlxCfgOps::setCfg(mlxCfgParam cfgParam, u_int32_t val) if (!isLegal(cfgParam)) { return MCE_BAD_PARAMS; } + + if (!supportsParam(cfgParam)) { + return errmsg(MCE_UNSUPPORTED_CFG); + } + // get parameters from device if present int rc = _cfgList[cfgParam2Type(cfgParam)]->getFromDev(_mf); if (rc) { @@ -989,22 +397,37 @@ void MlxCfgOps::setIgnoreHardLimits(bool val) return; } -int MlxCfgOps::invalidateCfgs() +int MlxCfgOps::invalidateCfgs4thGen() { - struct tools_open_mnvia mnviaTlv; u_int8_t buffer[tools_open_mnvia_size()]; memset(&mnviaTlv, 0, sizeof(struct tools_open_mnvia)); memset(buffer, 0, tools_open_mnvia_size()); - - mnviaTlv.mnv_hdr.length = 0; - mnviaTlv.mnv_hdr.type = 0; - mnviaTlv.mnv_hdr.type_mod = 0; tools_open_mnvia_pack(&mnviaTlv, buffer); - MError rc; - rc = reg_access_mnvia(_mf, REG_ACCESS_METHOD_SET, &mnviaTlv); + return reg_access_mnvia(_mf, REG_ACCESS_METHOD_SET, &mnviaTlv); +} + +int MlxCfgOps::invalidateCfgs5thGen() +{ + struct tools_open_nvdia nvdiaTlv; + u_int8_t buffer[tools_open_nvdia_size()]; + memset(&nvdiaTlv, 0, sizeof(struct tools_open_nvdia)); + memset(buffer, 0, tools_open_nvdia_size()); + tools_open_nvdia_pack(&nvdiaTlv, buffer); + return reg_access_nvdia(_mf, REG_ACCESS_METHOD_SET, &nvdiaTlv); +} + +int MlxCfgOps::invalidateCfgs() +{ + int rc; + if (_isFifthGen) { + return errmsg(MCE_REG_NOT_SUPP, "Reset configuration not supported."); + //rc = invalidateCfgs5thGen(); + } else { + rc = invalidateCfgs4thGen(); + } if (rc) { - return errmsg("failed to invalidate configurations, %s.", m_err2str(rc)); + return errmsg("failed to invalidate configurations, %s.", m_err2str((MError)rc)); } return MCE_SUCCESS; } @@ -1027,7 +450,7 @@ bool MlxCfgOps::isLegal(mlxCfgParam cfg) return false; } -u_int64_t MlxCfgOps::cfgSuppMask[Mct_Last] = {SRIOV_MASK, WOL_P1_MASK, WOL_P2_MASK , VPI_P1_MASK, VPI_P2_MASK, BAR_SZ_MASK}; + mlxCfgType MlxCfgOps::cfgParam2Type(mlxCfgParam param) { @@ -1051,40 +474,3 @@ mlxCfgType MlxCfgOps::cfgParam2Type(mlxCfgParam param) } } -static void dealWithSignal() -{ - int sig; - sig = mft_signal_is_fired(); - if (sig) { - // reset recieved signal - mft_signal_set_fired(0); - // retore prev handler - mft_signal_set_handling(0); - //raise signal to let the previous handle deal with it. - raise(sig); - } - mft_signal_set_handling(0); - return; -} - -MError mnvaCom(mfile* mf, u_int8_t* buff, u_int16_t len, u_int16_t type, reg_access_method_t method, u_int16_t typeMod) -{ - struct tools_open_mnva mnvaTlv; - memset(&mnvaTlv, 0, sizeof(struct tools_open_mnva)); - - mnvaTlv.mnv_hdr.length = len >> 2; // length is in dwords - mnvaTlv.mnv_hdr.type = type; - mnvaTlv.mnv_hdr.type_mod = typeMod; - memcpy(mnvaTlv.data, buff, len); - MError rc; - // "suspend" signals as we are going to take semaphores - mft_signal_set_handling(1); - rc = reg_access_mnva(mf, method, &mnvaTlv); - dealWithSignal(); - if (rc) { - return rc; - } - memcpy(buff, mnvaTlv.data, len); - return ME_OK; -} - diff --git a/mlxconfig/mlxcfg_lib.h b/mlxconfig/mlxcfg_lib.h index 513e68a..d2ef6d8 100644 --- a/mlxconfig/mlxcfg_lib.h +++ b/mlxconfig/mlxcfg_lib.h @@ -14,12 +14,12 @@ * - 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. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND @@ -28,7 +28,6 @@ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. - * */ /* * mlxcfg_lib.h @@ -44,40 +43,11 @@ #include #include +#include +#include -#include "errmsg.h" - - -#define MLXCFG_UNKNOWN 0xffffffff - -#define WOL_TYPE 0x10 -#define SRIOV_TYPE 0x11 -#define VPI_TYPE 0x12 -#define BAR_SIZE_TYPE 0x13 - - -typedef enum { - Mct_Sriov = 0, - Mct_Wol_P1, - Mct_Wol_P2, - Mct_Vpi_P1, - Mct_Vpi_P2, - Mct_Bar_Size, - Mct_Last -} mlxCfgType; - -typedef enum { - Mcp_Sriov_En = 0, - Mcp_Num_Of_Vfs, - Mcp_Wol_Magic_En_P1, - Mcp_Wol_Magic_En_P2, - Mcp_Link_Type_P1, - Mcp_Link_Type_P2, - Mcp_Log_Bar_Size, - Mcp_Last -} mlxCfgParam; - -typedef std::pair cfgInfo; +#include "mlxcfg_status.h" +#include "mlxcfg_param_lib.h" class MlxCfgOps : public ErrMsg { public: @@ -107,136 +77,21 @@ public: // Adrianc: TBD private: - class CfgParams : public ErrMsg - { - public: - CfgParams(mlxCfgType t=Mct_Last, u_int32_t tlvT=0); - virtual ~CfgParams() {} - - virtual void setParam(mlxCfgParam paramType, u_int32_t val) = 0; - virtual u_int32_t getParam(mlxCfgParam paramType) = 0; - - virtual int getDefaultAndFromDev(mfile* mf); - virtual int getFromDev(mfile* mf) = 0; - virtual int setOnDev(mfile* mf, bool ignoreCheck=false) = 0; - virtual int getDefaultParams(mfile* mf) = 0; - - void setIgnoreSoftLimits(bool val); - void setIgnoreHardLimits(bool val); - - mlxCfgType type; - u_int32_t tlvType; - protected: - // param validadion methods, only checkCfg shuold be called - virtual bool checkCfg(mfile* mf=NULL); - virtual bool hardLimitCheck() = 0; - virtual bool softLimitCheck(mfile* mf=NULL); - - // get default parameters for configuration - int getDefaultParams4thGen(mfile* mf, struct tools_open_query_def_params_global* global_params); - int getDefaultParams4thGen(mfile* mf, int port, struct tools_open_query_def_params_per_port* port_params); - - bool _updated; // set true on get and false on set - bool _ignoreSoftLimits; // soft limits checks will not be performed for configuration - bool _ignoreHardLimits; // hard limits checks will not be performed - }; - - class SriovParams : public CfgParams - { - public: - SriovParams() : CfgParams(Mct_Sriov, SRIOV_TYPE) , _sriovEn(MLXCFG_UNKNOWN), _numOfVfs(MLXCFG_UNKNOWN), _maxVfs(1) {} - ~SriovParams() {}; - - virtual void setParam(mlxCfgParam paramType, u_int32_t val); - virtual u_int32_t getParam(mlxCfgParam paramType); - - virtual int getFromDev(mfile* mf); - virtual int setOnDev(mfile* mf, bool ignoreCheck=false); - virtual int getDefaultParams(mfile* mf); - - private: - virtual bool hardLimitCheck(); - virtual bool softLimitCheck(mfile* mf=NULL); - int updateMaxVfs(mfile* mf); - - u_int32_t _sriovEn; - u_int32_t _numOfVfs; - u_int32_t _maxVfs; - }; - - class WolParams : public CfgParams - { - public: - WolParams(int port) : CfgParams(port == 1 ? Mct_Wol_P1 : Mct_Wol_P2, WOL_TYPE), _port(port), _wolMagicEn(MLXCFG_UNKNOWN) {} - ~WolParams() {} - - virtual void setParam(mlxCfgParam paramType, u_int32_t val); - virtual u_int32_t getParam(mlxCfgParam paramType); - - virtual int getFromDev(mfile* mf); - virtual int setOnDev(mfile* mf, bool ignoreCheck=false); - virtual int getDefaultParams(mfile* mf); - - private: - virtual bool hardLimitCheck(); - // Wake on magic packet (atm this is the only mode which is supported) - int _port; - u_int32_t _wolMagicEn; - }; - - class VpiParams : public CfgParams - { - public: - VpiParams(int port) : CfgParams(port == 1 ? Mct_Vpi_P1 : Mct_Vpi_P2, VPI_TYPE), _port(port), _linkType(MLXCFG_UNKNOWN) {} - ~VpiParams() {} - - virtual void setParam(mlxCfgParam paramType, u_int32_t val); - virtual u_int32_t getParam(mlxCfgParam paramType); - - virtual int getFromDev(mfile* mf); - virtual int setOnDev(mfile* mf, bool ignoreCheck=false); - virtual int getDefaultParams(mfile* mf); - - private: - virtual bool hardLimitCheck(); - - int _port; - u_int32_t _linkType; - }; - - class BarSzParams : public CfgParams - { - public: - BarSzParams() : CfgParams(Mct_Bar_Size, BAR_SIZE_TYPE) ,_maxLogBarSz(1), _logBarSz(MLXCFG_UNKNOWN) {} - ~BarSzParams() {}; - - virtual void setParam(mlxCfgParam paramType, u_int32_t val); - virtual u_int32_t getParam(mlxCfgParam paramType); - - virtual int getFromDev(mfile* mf); - virtual int setOnDev(mfile* mf, bool ignoreCheck=false); - virtual int getDefaultParams(mfile* mf); - - private: - virtual bool hardLimitCheck(); - virtual bool softLimitCheck(mfile* mf=NULL); - int getDefaultBarSz(mfile* mf); - u_int32_t _maxLogBarSz; - u_int32_t _logBarSz; - - }; - - int openComChk(); int supportsToolsHCR(); + int supportsNVData(); bool isLegal(mlxCfgType cfg); bool isLegal(mlxCfgParam cfg); + int invalidateCfgs4thGen(); + int invalidateCfgs5thGen(); + static mlxCfgType cfgParam2Type(mlxCfgParam param); std::vector _cfgList; // needs to be initialized in constructor and freed in destructor, will contain all the tools supported cfgs - static u_int64_t cfgSuppMask[Mct_Last]; + dm_dev_id_t _deviceId; mfile* _mf; u_int64_t _suppVec; + bool _isFifthGen; }; diff --git a/mlxconfig/mlxcfg_param_lib.cpp b/mlxconfig/mlxcfg_param_lib.cpp new file mode 100644 index 0000000..5c24284 --- /dev/null +++ b/mlxconfig/mlxcfg_param_lib.cpp @@ -0,0 +1,1045 @@ +/* + * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * 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. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +/* + * mlxcfg_param_lib.cpp + * + * Created on: Mar 22, 2015 + * Author: adrianc + */ + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "mlxcfg_param_lib.h" +#include "mlxcfg_status.h" + +enum { + SRIOV_MASK = 0x1, + WOL_P1_MASK = 0x2, + WOL_P2_MASK = 0x4 , + VPI_P1_MASK = 0x8, + VPI_P2_MASK = 0x10, + BAR_SZ_MASK = 0x20 +}; + +// tlv classes: +enum { + CLASS_GLOBAL = 0x0, + CLASS_PHYS_PORT = 0x1, + CLASS_BMC = 0x2, + CLASS_PER_HOST = 0x3, + CLASS_ESWITCH = 0x4 +}; + +#define MAX_VFS_ADDR 0x38 +#define MAX_BAR_SZ_ADDR 0xc8 +#define DEFAULT_BAR_SZ_ADDR 0x48 + + +/* + * Debug print MACRO of the NV Tlvs: + */ +//#define _ENABLE_DEBUG_ +#ifdef _ENABLE_DEBUG_ +# define DEBUG_PRINT_SEND(data_struct, struct_name)\ + printf("-I- Data Sent:\n");\ + tools_open_##struct_name##_print(data_struct, stdout, 1) +# define DEBUG_PRINT_RECIEVE(data_struct, struct_name)\ + printf("-I- Data Recieved:\n");\ + tools_open_##struct_name##_print(data_struct, stdout, 1) +#else +# define DEBUG_PRINT_SEND(data_struct, struct_name) +# define DEBUG_PRINT_RECIEVE(data_struct, struct_name) +#endif + +#define CHECK_RC(rc)\ + if (rc) return rc; + +static void dealWithSignal() +{ + int sig; + sig = mft_signal_is_fired(); + if (sig) { + // reset recieved signal + mft_signal_set_fired(0); + // retore prev handler + mft_signal_set_handling(0); + //raise signal to let the previous handle deal with it. + raise(sig); + } + mft_signal_set_handling(0); + return; +} + +MError mnvaCom4thGen(mfile* mf, u_int8_t* buff, u_int16_t len, u_int16_t tlvTypeIdx, reg_access_method_t method, u_int16_t typeMod) +{ + struct tools_open_mnva mnvaTlv; + memset(&mnvaTlv, 0, sizeof(struct tools_open_mnva)); + + mnvaTlv.nv_hdr.length = len >> 2; // length is in dwords + mnvaTlv.nv_hdr.type = tlvTypeIdx; + mnvaTlv.nv_hdr.type_mod = typeMod; + memcpy(mnvaTlv.data, buff, len); + MError rc; + // "suspend" signals as we are going to take semaphores + mft_signal_set_handling(1); + rc = reg_access_mnva(mf, method, &mnvaTlv); + dealWithSignal(); + if (rc) { + return rc; + } + memcpy(buff, mnvaTlv.data, len); + return ME_OK; +} + +MError mnvaCom5thGen(mfile* mf, u_int8_t* buff, u_int16_t len, u_int32_t tlvType, reg_access_method_t method) +{ + struct tools_open_nvda mnvaTlv; + memset(&mnvaTlv, 0, sizeof(struct tools_open_nvda)); + + mnvaTlv.nv_hdr.length = len; + mnvaTlv.nv_hdr.rd_en = 0; + mnvaTlv.nv_hdr.over_en = 1; + // tlvType should be in the correct endianess + mnvaTlv.nv_hdr.type.tlv_type_dw.tlv_type_dw = __be32_to_cpu(tlvType); + memcpy(mnvaTlv.data, buff, len); + MError rc; + // "suspend" signals as we are going to take semaphores + mft_signal_set_handling(1); + DEBUG_PRINT_SEND(&mnvaTlv, nvda); + rc = reg_access_nvda(mf, method, &mnvaTlv); + DEBUG_PRINT_RECIEVE(&mnvaTlv, nvda); + dealWithSignal(); + if (rc) { + return rc; + } + memcpy(buff, mnvaTlv.data, len); + return ME_OK; +} + +MError nvqcCom5thGen(mfile* mf, u_int32_t tlvType, bool& suppRead, bool& suppWrite) +{ + struct tools_open_nvqc nvqcTlv; + memset(&nvqcTlv, 0, sizeof(struct tools_open_nvqc)); + + // tlvType should be in the correct endianess + nvqcTlv.type.tlv_type_dw.tlv_type_dw = __be32_to_cpu(tlvType); + MError rc; + // "suspend" signals as we are going to take semaphores + mft_signal_set_handling(1); + rc = reg_access_nvqc(mf, REG_ACCESS_METHOD_GET, &nvqcTlv); + dealWithSignal(); + if (rc) { + return rc; + } + suppRead = nvqcTlv.support_rd; + suppWrite = nvqcTlv.support_wr; + return ME_OK; +} + +/*************************** + * Class implementations : + ***************************/ + +/* + * CfgParams Class implementation : + */ + +CfgParams::CfgParams(mlxCfgType t, u_int32_t tlvT) { + // init the ErrMsg Class + std::map errmap; + errmap[MCE_SUCCESS] = "Success"; + errmap[MCE_FAILED] = "General Failure"; + errmap[MCE_BAD_PARAMS] = "Bad parameters"; + errmap[MCE_BAD_PARAM_VAL] = "Bad parameter value"; + errmap[MCE_BAD_STATUS] = "General Failure"; + errmap[MCE_GET_DEFAULT_PARAMS] = "Failed to get default params"; + + updateErrCodes(errmap); + type = t; + tlvTypeIdx = tlvT; + _updated = false; + _ignoreHardLimits = false; + _ignoreSoftLimits = false; + _devCapVec = 0; +} + +int CfgParams::getDefaultParams4thGen(mfile* mf, struct tools_open_query_def_params_global* global_params) +{ + MError rc = tcif_query_global_def_params(mf, global_params); + if (rc) { + return errmsg(MCE_BAD_STATUS, "Failed to get default parameters: %s", tcif_err2str(rc)); + } + return MCE_SUCCESS; +} + +int CfgParams::getDefaultParams4thGen(mfile* mf, int port, struct tools_open_query_def_params_per_port* port_params) +{ + MError rc = tcif_query_per_port_def_params(mf, port, port_params); + if (rc) { + return errmsg(MCE_BAD_STATUS, "Failed to get default parameters: %s", tcif_err2str(rc)); + } + return MCE_SUCCESS; +} + +int CfgParams::getDefaultAndFromDev(mfile* mf) +{ + int rc; + rc = getDefaultParams(mf); CHECK_RC(rc); + rc = getFromDev(mf); CHECK_RC(rc); + return MCE_SUCCESS; +} + +bool CfgParams::checkCfg(mfile* mf) +{ + if (!_ignoreHardLimits && !hardLimitCheck()) { + return false; + } + if (!_ignoreSoftLimits && !softLimitCheck(mf)) { + return false; + } + return true; +} + +bool CfgParams::softLimitCheck(mfile* mf) +{ + // by default not implemented + (void)mf; + return true; +} + +void CfgParams::setIgnoreSoftLimits(bool val) +{ + _ignoreSoftLimits = val; +} +void CfgParams::setIgnoreHardLimits(bool val) +{ + _ignoreHardLimits = val; +} + +/* + * SriovParam Class implementation: + */ + +void SriovParams::setParam(mlxCfgParam paramType, u_int32_t val) +{ + if (paramType == Mcp_Sriov_En) { + _sriovEn = val; + } else if (paramType == Mcp_Num_Of_Vfs) { + _numOfVfs = val; + } +} + +u_int32_t SriovParams::getParam(mlxCfgParam paramType) +{ + if (paramType == Mcp_Sriov_En) { + return _sriovEn; + } else if (paramType == Mcp_Num_Of_Vfs) { + return _numOfVfs; + } + return MLXCFG_UNKNOWN; +} + +bool SriovParams::hardLimitCheck() +{ + if ((_numOfVfs > _maxVfs)) { + errmsg("Number of VFs exceeds limit (%d).", _maxVfs); + return false; + } + + if (_sriovEn != 0 && _sriovEn != 1) { + errmsg("illegal SRIOV_EN parameters value. (should be 0 or 1)"); + return false; + } + return true; +} + +/* + * SriovParam4thGen Class implementation + */ + +bool SriovParams4thGen::cfgSupported(mfile* mf) +{ + (void)mf; + return _devCapVec & SRIOV_MASK; +} + +int SriovParams4thGen::getDefaultParams(mfile* mf) +{ + struct tools_open_query_def_params_global global_params; + int rc; + rc = updateMaxVfs(mf); CHECK_RC(rc); + rc = getDefaultParams4thGen(mf, &global_params); + if (rc == MCE_SUCCESS) { + _sriovEn = global_params.sriov_en; + _numOfVfs = global_params.num_vfs; + } else { + rc = MCE_GET_DEFAULT_PARAMS; + } + return rc; +} + +int SriovParams4thGen::getFromDev(mfile* mf) +{ + if (_updated) { + return MCE_SUCCESS; + } + MError rc; + // prep tlv + u_int8_t buff[tools_open_sriov_size()]; + struct tools_open_sriov sriovTlv; + memset(buff, 0, tools_open_sriov_size()); + memset(&sriovTlv, 0, sizeof(struct tools_open_sriov)); + // pack it + tools_open_sriov_pack(&sriovTlv, buff); + // send it + DEBUG_PRINT_SEND(&sriovTlv, sriov); + rc = mnvaCom4thGen(mf, buff, tools_open_sriov_size(), tlvTypeIdx, REG_ACCESS_METHOD_GET, 0); + // check rc + DEBUG_PRINT_RECIEVE(&sriovTlv, sriov); + if (rc) {// when attempting to get a nv_cfg tlv from device ME_REG_ACCESS_RES_NOT_AVLBL means - no valid + // tlv found. i.e default configuration are on. + if (rc == ME_REG_ACCESS_RES_NOT_AVLBL) { + + return MCE_SUCCESS; + } + return errmsg(MCE_BAD_STATUS, "Failed to get SRIOV configuration: %s", m_err2str(rc)); + } + // unpack and update + tools_open_sriov_unpack(&sriovTlv, buff); + _sriovEn = sriovTlv.sriov_en; + _numOfVfs = sriovTlv.total_vfs; + _updated = true; + + return MCE_SUCCESS; +} + +int SriovParams4thGen::setOnDev(mfile* mf, bool ignoreCheck) +{ + if (_sriovEn == MLXCFG_UNKNOWN || _numOfVfs == MLXCFG_UNKNOWN) { + return errmsg("%s please specify all parameters for SRIOV.", err() ? err() : ""); + } + if (!ignoreCheck && !checkCfg(mf)) { + return MCE_BAD_PARAMS; + } + + // prep tlv + MError ret; + u_int8_t buff[tools_open_sriov_size()]; + struct tools_open_sriov sriovTlv; + + memset(buff, 0, tools_open_sriov_size()); + memset(&sriovTlv, 0, sizeof(struct tools_open_sriov)); + + sriovTlv.sriov_en = _sriovEn; + sriovTlv.total_vfs = _numOfVfs; + // pack it + tools_open_sriov_pack(&sriovTlv, buff); + // send it + ret = mnvaCom4thGen(mf, buff, tools_open_sriov_size(), tlvTypeIdx, REG_ACCESS_METHOD_SET, 0); + // check rc + if (ret) { + return errmsg("failed to set SRIOV params: %s",m_err2str(ret)); + } + _updated = false; + return MCE_SUCCESS; +} + +int SriovParams4thGen::updateMaxVfs(mfile* mf) +{ + u_int64_t data = 0; + int rc = tcif_query_dev_cap(mf, MAX_VFS_ADDR, &data); + if (rc) { + return errmsg("failed to query device capabilities: %s", m_err2str((MError)rc)); + } + _maxVfs = (u_int32_t)(data & 0xff); + if (_maxVfs == 0) { // defined in CX PRM , if max_func_idx=0 then all functions(128) are operational + _maxVfs = 128; + } + _maxVfs--; // remove 1 physical function + return MCE_SUCCESS; +} + +bool SriovParams4thGen::softLimitCheck(mfile* mf) +{ + u_int32_t barSz = 0; + BarSzParams4thGen barParams; + + if (!mf) { + return false; + } + + if (barParams.getDefaultAndFromDev(mf)) { + return false; + } + + if (_sriovEn == 0) { + return true; + } + + barSz = barParams.getParam(Mcp_Log_Bar_Size); + + if (barSz == MLXCFG_UNKNOWN) { + return errmsg("Failed to get the bar size from device"); + } + // this is the default log2 bar size , we require (numOfVfs+1)*(2^log_uar_bar) <= 512 or else the node might not boot + double TotalMem = (_numOfVfs + 1)*(1 << barSz); // 1 for physical func + + if ((TotalMem > 512)){ + unsigned int maxAlowedVfs =static_cast(512/(1 << barSz)) - 1; + errmsg("illegal SRIOV parameter value. Maximal number of VFs: %d", maxAlowedVfs < _maxVfs ? maxAlowedVfs : _maxVfs); + return false; + } + return true; +} + +/* + * SriovParams5thGen Class implementation + */ + +bool SriovParams5thGen::cfgSupported(mfile* mf) +{ + (void)mf; + return false; +} + +int SriovParams5thGen::getDefaultParams(mfile* mf) +{ + (void)mf; + return MCE_NOT_IMPLEMENTED; +} + +int SriovParams5thGen::getFromDev(mfile* mf) +{ + (void)mf; + return MCE_NOT_IMPLEMENTED; +} + +int SriovParams5thGen::setOnDev(mfile* mf, bool ignoreCheck) +{ + (void)mf; + (void)ignoreCheck; + return MCE_NOT_IMPLEMENTED; +} + +int SriovParams5thGen::updateMaxVfs(mfile* mf) +{ + (void)mf; + return MCE_NOT_IMPLEMENTED; +} + +bool SriovParams5thGen::softLimitCheck(mfile* mf) +{ + (void)mf; + return MCE_NOT_IMPLEMENTED; +} + +/* + * WolParams Class implementation : + */ + +void WolParams::setParam(mlxCfgParam paramType, u_int32_t val) +{ + if ((paramType == Mcp_Wol_Magic_En_P1 && _port == 1 ) || (paramType == Mcp_Wol_Magic_En_P2 && _port == 2) ) { + _wolMagicEn = val; + } +} + +u_int32_t WolParams::getParam(mlxCfgParam paramType) +{ + if ((paramType == Mcp_Wol_Magic_En_P1 && _port == 1 ) || (paramType == Mcp_Wol_Magic_En_P2 && _port == 2) ) { + return _wolMagicEn; + } + return MLXCFG_UNKNOWN; +} + + + +bool WolParams::hardLimitCheck() +{ + if (_wolMagicEn == 0 || _wolMagicEn == 1 ) { + return true; + } + errmsg("illegal WOL parameter value. can be either 0 or 1."); + return false; +} + +/* + * WolParams4thGen Class implementation : + */ + +bool WolParams4thGen::cfgSupported(mfile* mf) +{ + (void)mf; + return ((_devCapVec & WOL_P1_MASK) && _port == 1) || ((_devCapVec & WOL_P2_MASK) && _port == 2 ); +} + +int WolParams4thGen::getDefaultParams(mfile* mf) +{ + struct tools_open_query_def_params_per_port port_params; + int rc = getDefaultParams4thGen(mf, _port , &port_params); + if (rc == MCE_SUCCESS) { + _wolMagicEn = port_params.en_wol_magic; + } else { + rc = MCE_GET_DEFAULT_PARAMS; + } + return rc; +} + +int WolParams4thGen::getFromDev(mfile* mf) +{ + if (_updated) { + return MCE_SUCCESS; + } + MError rc; + // prep tlv + u_int8_t buff[tools_open_wol_size()]; + struct tools_open_wol wolTlv; + memset(buff, 0, tools_open_wol_size()); + memset(&wolTlv, 0, sizeof(struct tools_open_wol)); + // pack it + tools_open_wol_pack(&wolTlv, buff); + // send it + rc = mnvaCom4thGen(mf, buff, tools_open_wol_size(), tlvTypeIdx, REG_ACCESS_METHOD_GET, _port); + // check rc + if (rc) { + if (rc == ME_REG_ACCESS_RES_NOT_AVLBL) { + return MCE_SUCCESS; + } + return errmsg("Failed to get WOL port%d configuration: %s", _port, m_err2str(rc)); + } + // unpack and update + tools_open_wol_unpack(&wolTlv, buff); + _wolMagicEn = wolTlv.en_wol_magic; + _updated = true; + + return MCE_SUCCESS; +} + +int WolParams4thGen::setOnDev(mfile* mf, bool ignoreCheck) +{ + if (_wolMagicEn == MLXCFG_UNKNOWN) { + return errmsg("%s please specify all the parameters for WOL.", err()? err() : ""); + } + if (!ignoreCheck && !checkCfg()) { + return MCE_BAD_PARAMS; + } + // prep tlv + MError ret; + u_int8_t buff[tools_open_wol_size()]; + struct tools_open_wol wolTlv; + + memset(buff, 0, tools_open_wol_size()); + memset(&wolTlv, 0, sizeof(struct tools_open_wol)); + + wolTlv.en_wol_magic= _wolMagicEn; + // pack it + tools_open_wol_pack(&wolTlv, buff); + // send it + ret = mnvaCom4thGen(mf, buff, tools_open_wol_size(), tlvTypeIdx, REG_ACCESS_METHOD_SET, _port); + // check rc + if (ret) { + return errmsg("failed to set WOL params for port%d: %s", _port, m_err2str(ret)); + } + _updated = false; + return MCE_SUCCESS; +} + +/* + * WolParams5thGen Class implementation : + */ + +bool WolParams5thGen::cfgSupported(mfile* mf) +{ + (void)mf; + return false; +} + +int WolParams5thGen::getDefaultParams(mfile* mf) +{ + (void)mf; + return MCE_NOT_IMPLEMENTED; +} + +int WolParams5thGen::getFromDev(mfile* mf) +{ + (void)mf; + return MCE_NOT_IMPLEMENTED; +} + +int WolParams5thGen::setOnDev(mfile* mf, bool ignoreCheck) +{ + (void)mf; + (void)ignoreCheck; + return MCE_NOT_IMPLEMENTED; +} + +/* + * BarSzParams Class implementation : + */ + + +void BarSzParams::setParam(mlxCfgParam paramType, u_int32_t val) +{ + if ((paramType == Mcp_Log_Bar_Size) ) { + _logBarSz = val; + } +} + +u_int32_t BarSzParams::getParam(mlxCfgParam paramType) +{ + if (paramType == Mcp_Log_Bar_Size) { + return _logBarSz; + } + return MLXCFG_UNKNOWN; +} + + +bool BarSzParams::hardLimitCheck() +{ + if (_logBarSz > _maxLogBarSz ) { + errmsg("given bar size is too large, max allowed log2 bar size: 0x%x", _maxLogBarSz); + return false; + } + return true; +} + +/* + * BarSzParams4thGen Class implementation : + */ + +bool BarSzParams4thGen::cfgSupported(mfile* mf) +{ + (void)mf; + return _devCapVec & BAR_SZ_MASK ; +} + +int BarSzParams4thGen::getDefaultParams(mfile* mf) +{ + struct tools_open_query_def_params_global global_params; + int rc = getDefaultParams4thGen(mf, &global_params); + if ((rc == MCE_SUCCESS) & 0) { //TODO: adrianc: remove the & 0 when FW displays thesee parameters correctly in QUERY_DEF_PARAMS command + _logBarSz = global_params.uar_bar_size; + _maxLogBarSz = global_params.max_uar_bar_size; + } else { + // attempt to take from query_dev_cap + rc = getDefaultBarSz(mf); + } + return rc; +} + +int BarSzParams4thGen::getDefaultBarSz(mfile* mf) +{ + u_int64_t data = 0; + MError rc = tcif_query_dev_cap(mf, MAX_BAR_SZ_ADDR, &data); + if (rc) { + return errmsg(MCE_BAD_STATUS,"Failed to query device capabilities. %s", tcif_err2str(rc)); + } + + _maxLogBarSz = EXTRACT64(data, 3, 6); + + rc = tcif_query_dev_cap(mf, DEFAULT_BAR_SZ_ADDR, &data); + if (rc) { + return errmsg(MCE_BAD_STATUS,"Failed to query device capabilities. %s", tcif_err2str(rc)); + } + + _logBarSz = EXTRACT64(data, 16, 6) + 1; //adrianc: this field reports only half of the bar size (i.e without the blue flame) + return MCE_SUCCESS; +} + +int BarSzParams4thGen::getFromDev(mfile* mf) +{ + if (_updated) { + return MCE_SUCCESS; + } + MError rc; + // prep tlv + u_int8_t buff[tools_open_bar_size_size()]; + struct tools_open_bar_size barSzTlv; + memset(buff, 0, tools_open_bar_size_size()); + memset(&barSzTlv, 0, sizeof(struct tools_open_bar_size)); + // pack it + tools_open_bar_size_pack(&barSzTlv, buff); + // send it + rc = mnvaCom4thGen(mf, buff, tools_open_bar_size_size(), tlvTypeIdx, REG_ACCESS_METHOD_GET, 0); + // check rc + if (rc) { + if (rc == ME_REG_ACCESS_RES_NOT_AVLBL) { + return MCE_SUCCESS; + } + return errmsg("Failed to get BAR size configuration: %s", m_err2str(rc)); + } + // unpack and update + tools_open_bar_size_unpack(&barSzTlv, buff); + _logBarSz = barSzTlv.log_uar_bar_size; + _updated = true; + + return MCE_SUCCESS; +} + +int BarSzParams4thGen::setOnDev(mfile* mf, bool ignoreCheck) +{ + if (_logBarSz == MLXCFG_UNKNOWN) { + return errmsg("%s please specify all the parameters for BAR size.", err() ? err() : ""); + } + + if (!ignoreCheck && !checkCfg(mf)) { + return MCE_BAD_PARAMS; + } + + // prep tlv + MError ret; + u_int8_t buff[tools_open_bar_size_size()]; + struct tools_open_bar_size barSzTlv; + + memset(buff, 0, tools_open_bar_size_size()); + memset(&barSzTlv, 0, sizeof(struct tools_open_bar_size)); + + barSzTlv.log_uar_bar_size= _logBarSz; + // pack it + tools_open_bar_size_pack(&barSzTlv, buff); + // send it + ret = mnvaCom4thGen(mf, buff, tools_open_bar_size_size(), tlvTypeIdx, REG_ACCESS_METHOD_SET, 0); + // check rc + if (ret) { + return errmsg("failed to set BAR size params: %s",m_err2str(ret)); + } + _updated = false; + return MCE_SUCCESS; +} + +bool BarSzParams4thGen::softLimitCheck(mfile* mf) +{ + u_int32_t numOfVfs = 0; + int sriovEn; + SriovParams4thGen sriovParams; + + if (!mf) { + return false; + } + + if (sriovParams.getDefaultAndFromDev(mf)) { + errmsg("Failed to get SRIOV parameters from device: %s", sriovParams.err()); + return false; + } + + numOfVfs = sriovParams.getParam(Mcp_Num_Of_Vfs); + sriovEn = sriovParams.getParam(Mcp_Sriov_En); + + if (numOfVfs== MLXCFG_UNKNOWN || numOfVfs == MLXCFG_UNKNOWN) { + errmsg("Illegal SRIOV parameters values"); + return false; + } + + if (sriovEn == 0) { + return true; + } + // this is the default log2 bar size , we require numOfVfs*(2^log_uar_bar) <= 512 or else the node might not boot + double TotalMem = (numOfVfs+1)*(1 << _logBarSz); + //printf("-D- num_of_vfs*2^(bar_sz+1) = %d*2^%ld = %d\n", _numOfVfs, data, (int)(_numOfVfs*(std::pow((double)2, (int)data)))); + //printf("-D- maxVfs(default set by fw) : %d\n", _maxVfs); + + if (TotalMem > 512){ + unsigned int maxAlowedLogBarSz =static_cast(log2((512/(numOfVfs + 1 )))); + errmsg("illegal Bar Size parameter value. Maximal allowed bar size: %d", maxAlowedLogBarSz < _maxLogBarSz ? maxAlowedLogBarSz : _maxLogBarSz); + return false; + } + return true; +} + +/* + * BarSzParams5thGen Class implementation : + */ +bool BarSzParams5thGen::cfgSupported(mfile* mf) +{ + (void)mf; + return false; +} + +int BarSzParams5thGen::getDefaultParams(mfile* mf) +{ + (void)mf; + return MCE_NOT_IMPLEMENTED; +} + +int BarSzParams5thGen::getDefaultBarSz(mfile* mf) +{ + (void)mf; + return MCE_NOT_IMPLEMENTED; +} + +int BarSzParams5thGen::getFromDev(mfile* mf) +{ + (void)mf; + return MCE_NOT_IMPLEMENTED; +} + +int BarSzParams5thGen::setOnDev(mfile* mf, bool ignoreCheck) +{ + (void)mf; + (void)ignoreCheck; + return MCE_NOT_IMPLEMENTED; +} + +bool BarSzParams5thGen::softLimitCheck(mfile* mf) +{ + (void)mf; + return MCE_NOT_IMPLEMENTED; +} + +/* + * VpiParams Class implementation : + */ + +int VpiParams::getFromDevComPre() +{ + // prep tlv + _tlvBuff.resize(TOOLS_OPEN_VPI_SETTINGS_SIZE); + memset(&_tlvBuff[0], 0, TOOLS_OPEN_VPI_SETTINGS_SIZE); + memset(&_vpiTlv, 0, sizeof(struct tools_open_vpi_settings)); + // pack it + tools_open_vpi_settings_pack(&_vpiTlv, &_tlvBuff[0]); + return MCE_SUCCESS; +} + +int VpiParams::getFromDevComPost(MError mnvaComRC) +{ + if (mnvaComRC) { + if (mnvaComRC == ME_REG_ACCESS_RES_NOT_AVLBL) { + return MCE_SUCCESS; + } + return errmsg("Failed to get VPI port%d configuration: %s", _port, m_err2str(mnvaComRC)); + } + // unpack and update + tools_open_vpi_settings_unpack(&_vpiTlv, &_tlvBuff[0]); + _linkType = _vpiTlv.network_link_type; + _defaultLinkType = _vpiTlv.default_link_type; + _updated = true; + return MCE_SUCCESS; + +} + +int VpiParams::setOnDevComPre(bool ignoreCheck) +{ + if (_linkType == MLXCFG_UNKNOWN || _defaultLinkType == MLXCFG_UNKNOWN) { + return errmsg("%s please specify all the parameters for VPI settings.", err() ? err() : ""); + } + if (!ignoreCheck && !checkCfg()) { + return MCE_BAD_PARAMS; + } + _tlvBuff.resize(TOOLS_OPEN_VPI_SETTINGS_SIZE); + memset(&_tlvBuff[0], 0, _tlvBuff.size()); + memset(&_vpiTlv, 0, sizeof(struct tools_open_vpi_settings)); + _vpiTlv.network_link_type = _linkType; + _vpiTlv.default_link_type = _defaultLinkType; + // pack it + tools_open_vpi_settings_pack(&_vpiTlv, &_tlvBuff[0]); + return MCE_SUCCESS; +} + +int VpiParams::setOnDevComPost(MError mnvaComRC) +{ + if (mnvaComRC) { + return errmsg("failed to set VPI port%d params: %s", _port, m_err2str(mnvaComRC)); + } + _updated = false; + return MCE_SUCCESS; +} + +/* + * VpiParams4thGen Class implementation : + */ +void VpiParams4thGen::setParam(mlxCfgParam paramType, u_int32_t val) +{ + if ((paramType == Mcp_Link_Type_P1 && _port == 1 ) || (paramType == Mcp_Link_Type_P2 && _port == 2) ) { + _linkType = val; + } +} + +u_int32_t VpiParams4thGen::getParam(mlxCfgParam paramType) +{ + if ((paramType == Mcp_Link_Type_P1 && _port == 1 ) || (paramType == Mcp_Link_Type_P2 && _port == 2) ) { + return _linkType; + } + return MLXCFG_UNKNOWN; +} + +bool VpiParams4thGen::cfgSupported(mfile* mf) +{ + (void)mf; + return ((_devCapVec & VPI_P1_MASK) && _port == 1) || ((_devCapVec & VPI_P2_MASK) && _port == 2); +} + +int VpiParams4thGen::getDefaultParams(mfile* mf) +{ + struct tools_open_query_def_params_per_port port_params; + _defaultLinkType = 0; // not used for 4th gen devices , we give it a default value + int rc = getDefaultParams4thGen(mf, _port , &port_params); + if (rc) { + return MCE_GET_DEFAULT_PARAMS; + } + if (port_params.network_link_type) { + _linkType = port_params.network_link_type; + } + return MCE_SUCCESS; +} + +int VpiParams4thGen::getFromDev(mfile* mf) +{ + MError mRc; + int rc; + + if (_updated) { + return MCE_SUCCESS; + } + if((rc = getFromDevComPre())) { + return rc; + } + mRc = mnvaCom4thGen(mf, &_tlvBuff[0], TOOLS_OPEN_VPI_SETTINGS_SIZE, tlvTypeIdx, REG_ACCESS_METHOD_GET, _port); + return getFromDevComPost(mRc); +} + +int VpiParams4thGen::setOnDev(mfile* mf, bool ignoreCheck) +{ + MError mRc; + int rc; + + if ((rc = setOnDevComPre(ignoreCheck))) { + return rc; + } + mRc = mnvaCom4thGen(mf, &_tlvBuff[0], TOOLS_OPEN_VPI_SETTINGS_SIZE, tlvTypeIdx, REG_ACCESS_METHOD_SET, _port); + return setOnDevComPost(mRc); +} + +bool VpiParams4thGen::hardLimitCheck() +{ + if (_linkType == 1 || _linkType == 2 || _linkType == 3 ) { + return true; + } + errmsg("illegal VPI link type (should be 1|2|3)."); + return false; +} + +/* + * VpiParams5thGen Class implementation : + */ +void VpiParams5thGen::setParam(mlxCfgParam paramType, u_int32_t val) +{ + if ((paramType == Mcp_Link_Type_P1 && _port == 1 ) || (paramType == Mcp_Link_Type_P2 && _port == 2) ) { + _defaultLinkType = val; + } +} + +u_int32_t VpiParams5thGen::getParam(mlxCfgParam paramType) +{ + if ((paramType == Mcp_Link_Type_P1 && _port == 1 ) || (paramType == Mcp_Link_Type_P2 && _port == 2) ) { + return _defaultLinkType; + } + return MLXCFG_UNKNOWN; +} + +u_int32_t VpiParams5thGen::getTlvTypeBe() +{ + struct tools_open_per_port_type type; + u_int32_t tlvType = 0; + + type.param_class = CLASS_PHYS_PORT; + type.param_idx = tlvTypeIdx; + type.port = _port; + tools_open_per_port_type_pack(&type, (u_int8_t*)&tlvType); + return tlvType; +} + +bool VpiParams5thGen::cfgSupported(mfile* mf) +{ + // get mtcr functions for this device (physical) + // compare with port + // send nvqc and check + MError rc; + bool suppRead, suppWrite; + rc = nvqcCom5thGen(mf, getTlvTypeBe(), suppRead, suppWrite); + if (rc) { + errmsg("Failed to get VPI params capabilites. %s", m_err2str(rc)); + return false; + } + return suppRead && suppWrite; +} + +int VpiParams5thGen::getDefaultParams(mfile* mf) +{ + // if configuration is supported then network link type must be 3 + _linkType = 3; + return getFromDev(mf); +} + +int VpiParams5thGen::getFromDev(mfile* mf) +{ + MError mRc; + int rc; + + if (_updated) { + return MCE_SUCCESS; + } + if((rc = getFromDevComPre())) { + return rc; + } + mRc = mnvaCom5thGen(mf, &_tlvBuff[0], TOOLS_OPEN_VPI_SETTINGS_SIZE, getTlvTypeBe(), REG_ACCESS_METHOD_GET); + return getFromDevComPost(mRc); +} + +int VpiParams5thGen::setOnDev(mfile* mf, bool ignoreCheck) +{ + MError mRc; + int rc; + + if ((rc = setOnDevComPre(ignoreCheck))) { + return rc; + } + mRc = mnvaCom5thGen(mf, &_tlvBuff[0], TOOLS_OPEN_VPI_SETTINGS_SIZE, getTlvTypeBe(), REG_ACCESS_METHOD_SET); + return setOnDevComPost(mRc); +} + +bool VpiParams5thGen::hardLimitCheck() +{ + if (_defaultLinkType == 1 || _defaultLinkType == 2 ) { + return true; + } + errmsg("illegal VPI link type (should be 1|2)."); + return false; +} diff --git a/mlxconfig/mlxcfg_param_lib.h b/mlxconfig/mlxcfg_param_lib.h new file mode 100644 index 0000000..656a218 --- /dev/null +++ b/mlxconfig/mlxcfg_param_lib.h @@ -0,0 +1,357 @@ +/* + * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * 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. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +/* + * mlxcfg_param_lib.h + * + * Created on: Mar 22, 2015 + * Author: adrianc + */ + +#ifndef MLXCFG_PARAM_LIB_H_ +#define MLXCFG_PARAM_LIB_H_ + +#include +#include + +#include +#include + +#define MLXCFG_UNKNOWN 0xffffffff + +#define WOL_TYPE 0x10 +#define SRIOV_TYPE 0x11 +#define VPI_TYPE 0x12 +#define BAR_SIZE_TYPE 0x13 + + +typedef enum { + Mct_Sriov = 0, + Mct_Wol_P1, + Mct_Wol_P2, + Mct_Vpi_P1, + Mct_Vpi_P2, + Mct_Bar_Size, + Mct_Last +} mlxCfgType; + +typedef enum { + Mcp_Sriov_En = 0, + Mcp_Num_Of_Vfs, + Mcp_Wol_Magic_En_P1, + Mcp_Wol_Magic_En_P2, + Mcp_Link_Type_P1, + Mcp_Link_Type_P2, + Mcp_Log_Bar_Size, + Mcp_Last +} mlxCfgParam; + +typedef std::pair cfgInfo; + +/* + * Basic Param Class + */ + +class CfgParams : public ErrMsg +{ +public: + CfgParams(mlxCfgType t=Mct_Last, u_int32_t tlvT=0); + virtual ~CfgParams() {} + + virtual bool cfgSupported(mfile* mf) = 0; + void setDevCapVec(u_int64_t v) {_devCapVec = v;} + + virtual void setParam(mlxCfgParam paramType, u_int32_t val) = 0; + virtual u_int32_t getParam(mlxCfgParam paramType) = 0; + + virtual int getDefaultAndFromDev(mfile* mf); + virtual int getFromDev(mfile* mf) = 0; + virtual int setOnDev(mfile* mf, bool ignoreCheck=false) = 0; + virtual int getDefaultParams(mfile* mf) = 0; + + void setIgnoreSoftLimits(bool val); + void setIgnoreHardLimits(bool val); + + mlxCfgType type; + u_int32_t tlvTypeIdx; +protected: + // param validadion methods, only checkCfg shuold be called + virtual bool checkCfg(mfile* mf=NULL); + virtual bool hardLimitCheck() = 0; + virtual bool softLimitCheck(mfile* mf=NULL); + + // get default parameters for configuration (4th gen) + int getDefaultParams4thGen(mfile* mf, struct tools_open_query_def_params_global* global_params); + int getDefaultParams4thGen(mfile* mf, int port, struct tools_open_query_def_params_per_port* port_params); + + u_int64_t _devCapVec; // relevant for 4th gen devices + bool _updated; // set true on get and false on set + bool _ignoreSoftLimits; // soft limits checks will not be performed for configuration + bool _ignoreHardLimits; // hard limits checks will not be performed +}; + +/* + * SRIOV param classes: + */ + +class SriovParams : public CfgParams +{ +public: + SriovParams() : CfgParams(Mct_Sriov, SRIOV_TYPE) , _sriovEn(MLXCFG_UNKNOWN), _numOfVfs(MLXCFG_UNKNOWN), _maxVfs(1) {} + ~SriovParams() {}; + + virtual bool cfgSupported(mfile* mf) = 0; + + virtual void setParam(mlxCfgParam paramType, u_int32_t val); + virtual u_int32_t getParam(mlxCfgParam paramType); + +protected: + virtual bool hardLimitCheck(); + virtual bool softLimitCheck(mfile* mf=NULL) = 0; + + u_int32_t _sriovEn; + u_int32_t _numOfVfs; + u_int32_t _maxVfs; +}; + +class SriovParams4thGen : public SriovParams +{ +public: + SriovParams4thGen() : SriovParams() {} + ~SriovParams4thGen() {}; + + virtual bool cfgSupported(mfile* mf); + + virtual int getFromDev(mfile* mf); + virtual int setOnDev(mfile* mf, bool ignoreCheck=false); + virtual int getDefaultParams(mfile* mf); +protected: + virtual int updateMaxVfs(mfile* mf); + virtual bool softLimitCheck(mfile* mf=NULL); + +}; + +class SriovParams5thGen : public SriovParams +{ +public: + SriovParams5thGen() : SriovParams() {} + ~SriovParams5thGen() {}; + + virtual bool cfgSupported(mfile* mf); + + virtual int getFromDev(mfile* mf); + virtual int setOnDev(mfile* mf, bool ignoreCheck=false); + virtual int getDefaultParams(mfile* mf); + +protected: + virtual int updateMaxVfs(mfile* mf); + virtual bool softLimitCheck(mfile* mf=NULL); +}; + +/* + * WOL param classes: + */ + +class WolParams : public CfgParams +{ +public: + WolParams(int port) : CfgParams(port == 1 ? Mct_Wol_P1 : Mct_Wol_P2, WOL_TYPE), _port(port), _wolMagicEn(MLXCFG_UNKNOWN) {} + ~WolParams() {} + + virtual bool cfgSupported(mfile* mf) = 0; + + virtual void setParam(mlxCfgParam paramType, u_int32_t val); + virtual u_int32_t getParam(mlxCfgParam paramType); + + virtual int getFromDev(mfile* mf) = 0; + virtual int setOnDev(mfile* mf, bool ignoreCheck=false) = 0; + virtual int getDefaultParams(mfile* mf) = 0; + +protected: + virtual bool hardLimitCheck(); + // Wake on magic packet (atm this is the only mode which is supported) + int _port; + u_int32_t _wolMagicEn; +}; + +class WolParams4thGen : public WolParams +{ +public: + WolParams4thGen(int port) : WolParams(port) {} + ~WolParams4thGen() {} + + virtual bool cfgSupported(mfile* mf); + + virtual int getFromDev(mfile* mf); + virtual int setOnDev(mfile* mf, bool ignoreCheck=false); + virtual int getDefaultParams(mfile* mf); +}; + +class WolParams5thGen : public WolParams +{ +public: + WolParams5thGen(int port) : WolParams(port) {} + ~WolParams5thGen() {} + + virtual bool cfgSupported(mfile* mf); + + virtual int getFromDev(mfile* mf); + virtual int setOnDev(mfile* mf, bool ignoreCheck=false); + virtual int getDefaultParams(mfile* mf); +}; + +/* + * VPI param classes: + */ + +class VpiParams : public CfgParams +{ +public: + VpiParams(int port) : CfgParams(port == 1 ? Mct_Vpi_P1 : Mct_Vpi_P2, VPI_TYPE), _port(port), _linkType(MLXCFG_UNKNOWN), _defaultLinkType(MLXCFG_UNKNOWN){} + ~VpiParams() {} + + virtual bool cfgSupported(mfile* mf) = 0; + + virtual int getFromDev(mfile* mf) = 0; + virtual int setOnDev(mfile* mf, bool ignoreCheck=false) = 0; + virtual int getDefaultParams(mfile* mf) = 0; + +protected: + int getFromDevComPre(); + int getFromDevComPost(MError mnvaComRC); + int setOnDevComPre(bool ignoreCheck); + int setOnDevComPost(MError mnvaComRC); + + int _port; + u_int32_t _linkType; + u_int32_t _defaultLinkType; + // FW TLV (used when actually setting/getting the TLV from FW) + std::vector _tlvBuff; + struct tools_open_vpi_settings _vpiTlv; + + +}; + +class VpiParams4thGen : public VpiParams +{ +public: + VpiParams4thGen(int port) : VpiParams(port){} + ~VpiParams4thGen() {} + + virtual bool cfgSupported(mfile* mf); + virtual void setParam(mlxCfgParam paramType, u_int32_t val); + virtual u_int32_t getParam(mlxCfgParam paramType); + virtual bool hardLimitCheck(); + + virtual int getFromDev(mfile* mf); + virtual int setOnDev(mfile* mf, bool ignoreCheck=false); + virtual int getDefaultParams(mfile* mf); +}; + +class VpiParams5thGen : public VpiParams +{ +public: + VpiParams5thGen(int port) : VpiParams(port){} + ~VpiParams5thGen() {} + + virtual bool cfgSupported(mfile* mf); + virtual void setParam(mlxCfgParam paramType, u_int32_t val); + virtual u_int32_t getParam(mlxCfgParam paramType); + virtual bool hardLimitCheck(); + + virtual int getFromDev(mfile* mf); + virtual int setOnDev(mfile* mf, bool ignoreCheck=false); + virtual int getDefaultParams(mfile* mf); +protected: + u_int32_t getTlvTypeBe(); +}; + +/* + * BAR size param classes: + */ + +class BarSzParams : public CfgParams +{ +public: + BarSzParams() : CfgParams(Mct_Bar_Size, BAR_SIZE_TYPE) ,_maxLogBarSz(1), _logBarSz(MLXCFG_UNKNOWN) {} + ~BarSzParams() {} + + virtual bool cfgSupported(mfile* mf) = 0; + + virtual void setParam(mlxCfgParam paramType, u_int32_t val); + virtual u_int32_t getParam(mlxCfgParam paramType); + + virtual int getFromDev(mfile* mf) = 0; + virtual int setOnDev(mfile* mf, bool ignoreCheck=false) = 0; + virtual int getDefaultParams(mfile* mf) = 0; + +protected: + virtual bool hardLimitCheck(); + virtual bool softLimitCheck(mfile* mf=NULL) = 0; + virtual int getDefaultBarSz(mfile* mf) = 0; + u_int32_t _maxLogBarSz; + u_int32_t _logBarSz; + +}; + +class BarSzParams4thGen : public BarSzParams +{ +public: + BarSzParams4thGen() : BarSzParams() {} + ~BarSzParams4thGen() {} + + virtual bool cfgSupported(mfile* mf); + + virtual int getFromDev(mfile* mf); + virtual int setOnDev(mfile* mf, bool ignoreCheck=false); + virtual int getDefaultParams(mfile* mf); +protected: + virtual bool softLimitCheck(mfile* mf=NULL); + virtual int getDefaultBarSz(mfile* mf); +}; + +class BarSzParams5thGen : public BarSzParams +{ +public: + BarSzParams5thGen() : BarSzParams() {} + ~BarSzParams5thGen() {} + + virtual bool cfgSupported(mfile* mf); + + virtual int getFromDev(mfile* mf); + virtual int setOnDev(mfile* mf, bool ignoreCheck=false); + virtual int getDefaultParams(mfile* mf); +protected: + virtual bool softLimitCheck(mfile* mf=NULL); + virtual int getDefaultBarSz(mfile* mf); +}; + +#endif /* MLXCFG_PARAM_LIB_H_ */ diff --git a/mlxconfig/mlxcfg_parser.cpp b/mlxconfig/mlxcfg_parser.cpp index deda07f..e6a1fce 100644 --- a/mlxconfig/mlxcfg_parser.cpp +++ b/mlxconfig/mlxcfg_parser.cpp @@ -14,12 +14,12 @@ * - 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. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND @@ -28,7 +28,6 @@ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. - * */ #include @@ -104,6 +103,7 @@ void MlxCfg::printHelp() printf("\n"); printf(IDENT"Supported devices:\n"); printf(IDENT2"ConnectX3, ConnectX3-Pro (FW 2.31.5000 and above).\n"); + printf(IDENT2"ConnectX4.\n"); printf("\n"); } diff --git a/mlxconfig/mlxcfg_status.h b/mlxconfig/mlxcfg_status.h new file mode 100644 index 0000000..72b9385 --- /dev/null +++ b/mlxconfig/mlxcfg_status.h @@ -0,0 +1,79 @@ +/* + * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * 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. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +/* + * mlxcfg_status.h + * + * Created on: Mar 23, 2015 + * Author: adrianc + */ + +#ifndef MLXCFG_STATUS_H_ +#define MLXCFG_STATUS_H_ + +/* + * Enum for handling error messages + */ + +typedef enum { + MCE_SUCCESS = 0, + MCE_FAILED, + MCE_TLV_NOT_FOUND, + MCE_TLV_NOT_SUPP, + MCE_NVCFG_NOT_SUPP, + MCE_TOOLS_HCR_NOT_SUPP, + MCE_DRIVER_DOWN, + MCE_UNSUPPORTED_DEVICE, + MCE_UNSUPPORTED_CFG, + MCE_BAD_PARAMS, + MCE_BAD_PARAM_VAL, + MCE_DEV_BUSY, + MCE_UNKNOWN_TLV, + MCE_REG_NOT_SUPP, + MCE_METHOD_NOT_SUPP, + MCE_RES_NOT_AVAIL, + MCE_CONF_CORRUPT, + MCE_TLV_LEN_TOO_SMALL, + MCE_BAD_CONFIG, + MCE_ERASE_EXEEDED, + MCE_BAD_OP, + MCE_BAD_STATUS, + MCE_CR_ERROR, + MCE_NOT_IMPLEMENTED, + MCE_INCOMPLETE_PARAMS, + MCE_OPEN_DEVICE, + MCE_PCI, + MCE_GET_DEFAULT_PARAMS, + MCE_UNKNOWN_ERR +}McStatus; + + +#endif /* MLXCFG_STATUS_H_ */ diff --git a/mlxconfig/mlxcfg_ui.cpp b/mlxconfig/mlxcfg_ui.cpp index 3743ad1..409c681 100644 --- a/mlxconfig/mlxcfg_ui.cpp +++ b/mlxconfig/mlxcfg_ui.cpp @@ -14,12 +14,12 @@ * - 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. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND @@ -28,10 +28,8 @@ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. - * */ - #include #include #include diff --git a/mlxconfig/mlxcfg_ui.h b/mlxconfig/mlxcfg_ui.h index b105425..ae66aea 100644 --- a/mlxconfig/mlxcfg_ui.h +++ b/mlxconfig/mlxcfg_ui.h @@ -14,12 +14,12 @@ * - 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. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND @@ -28,7 +28,6 @@ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. - * */ #ifndef MLXCFG_UI_H_ diff --git a/mlxfwops/lib/flint_base.h b/mlxfwops/lib/flint_base.h index 27fba5a..c2f0896 100755 --- a/mlxfwops/lib/flint_base.h +++ b/mlxfwops/lib/flint_base.h @@ -220,7 +220,8 @@ namespace std {}; using namespace std; #define SWITCH_IB_HW_ID 583 #define SWITCH_EN_HW_ID 585 -#define CX4_HW_ID 521 +#define CX4_HW_ID 521 +#define CX4LX_HW_ID 523 #define CX3_HW_ID 501 #define CX3_PRO_HW_ID 503 #define CX_HW_ID 400 @@ -321,10 +322,11 @@ typedef enum fs3_section { FS3_FW_ADB = 0x33, FS3_MFG_INFO = 0xe0, FS3_DEV_INFO = 0xe1, - FS3_NV_DATA1 = 0xe2, + FS3_NV_DATA1 = 0xe2, FS3_VPD_R0 = 0xe3, FS3_NV_DATA2 = 0xe4, FS3_FW_NV_LOG = 0xe5, + FS3_NV_DATA0 = 0xe6, // replaces FS3_NV_DATA1 FS3_ITOC = 0xfd, FS3_END = 0xff, } fs3_section_t; diff --git a/mlxfwops/lib/flint_io.cpp b/mlxfwops/lib/flint_io.cpp index 1bc43d8..f2b2ba7 100755 --- a/mlxfwops/lib/flint_io.cpp +++ b/mlxfwops/lib/flint_io.cpp @@ -265,14 +265,14 @@ bool Flash::set_no_flash_verify(bool val) { //////////////////////////////////////////////////////////////////////// bool Flash::open(const char *device, bool force_lock, bool read_only, int num_of_banks, flash_params_t *flash_params, - int ignore_cashe_replacement, bool advErr) + int ignore_cashe_replacement, bool advErr, int cx3_fw_access) { // Open device int rc; _advErrors = advErr; _ignore_cache_replacement = ignore_cashe_replacement ? true : false; (void)read_only; // not used , avoid compiler warnings TODO: remove this var from function def - rc = mf_open(&_mfl, device, num_of_banks, flash_params, ignore_cashe_replacement); + rc = mf_open_adv(&_mfl, device, num_of_banks, flash_params, ignore_cashe_replacement, cx3_fw_access); //printf("device: %s , forceLock: %s , read only: %s, num of banks: %d, flash params is null: %s, ocr: %d, rc: %d\n", // device, force_lock? "true":"false", read_only?"true":"false", num_of_banks, flash_params? "no":"yes", ignore_cashe_replacement, rc); return open_com_checks(device, rc, force_lock); diff --git a/mlxfwops/lib/flint_io.h b/mlxfwops/lib/flint_io.h index dfb1a4e..c37f981 100755 --- a/mlxfwops/lib/flint_io.h +++ b/mlxfwops/lib/flint_io.h @@ -238,7 +238,8 @@ public: int num_of_banks = 4, flash_params_t *flash_params = (flash_params_t *)NULL, int ignoe_cache_replacement = 0, - bool advErr = true); + bool advErr = true, + int cx3_fw_access = 0); using FBase::open; bool open (uefi_Dev_t *uefi_dev, diff --git a/mlxfwops/lib/fs2_ops.cpp b/mlxfwops/lib/fs2_ops.cpp index ae6637c..b559c1f 100644 --- a/mlxfwops/lib/fs2_ops.cpp +++ b/mlxfwops/lib/fs2_ops.cpp @@ -453,8 +453,8 @@ bool Fs2Operations::Fs2Verify(VerifyCallBack verifyCallBackFunc, bool is_striped // Verify the images: for (u_int32_t i = 0; i < cntx_image_num; i++) { - bool fs_en; - u_int32_t log2chunk_size; + bool fs_en = false; + u_int32_t log2chunk_size = 0; u_int32_t buff[FS2_BOOT_START / 4]; _ioAccess->get_image_crc().clear(); diff --git a/mlxfwops/lib/fs3_ops.cpp b/mlxfwops/lib/fs3_ops.cpp index f0ecc11..2d30c1c 100644 --- a/mlxfwops/lib/fs3_ops.cpp +++ b/mlxfwops/lib/fs3_ops.cpp @@ -43,8 +43,6 @@ #define FS3_FLASH_SIZE 0x400000 #define FS3_LOG_CHUNK_SIZE 21 -#define CX4_FLASH_SIZE 22 -#define CX4_LOG_CHUNK_SIZE 22 #define FS3_DFLT_GUID_NUM_TO_ALLOCATE 8 #define FS3_DFLT_GUID_STEP 1 @@ -85,7 +83,9 @@ const Fs3Operations::SectionInfo Fs3Operations::_fs3SectionsInfoArr[] = { {FS3_NV_DATA1, "NV_DATA"}, {FS3_VPD_R0, "VPD_R0"}, {FS3_NV_DATA2, "NV_DATA"}, + {FS3_NV_DATA0, "NV_DATA"}, {FS3_FW_NV_LOG, "FW_NV_LOG"}, + {FS3_NV_DATA0, "NV_DATA"}, }; bool Fs3Operations::Fs3UpdateImgCache(u_int8_t *buff, u_int32_t addr, u_int32_t size) @@ -152,9 +152,9 @@ bool Fs3Operations::CheckTocSignature(struct cibfw_itoc_header *itoc_header, u_i } #define CHECK_MFG_NEW_FORMAT(mfg_st)\ - ((mfg_st.major_version == 1) && (mfg_st.minor_version == 0)) + (mfg_st.major_version == 1) #define CHECK_MFG_OLD_FORMAT(mfg_st)\ - ((mfg_st.major_version == 0) && (mfg_st.minor_version == 0)) + (mfg_st.major_version == 0) bool Fs3Operations::GetMfgInfo(u_int8_t *buff) { // structs of the same size we can unpack either way @@ -183,10 +183,24 @@ bool Fs3Operations::GetMfgInfo(u_int8_t *buff) } +#define GET_IMAGE_INFO_VERSION(imageInfoBuff, major, minor) \ + u_int32_t _IIVerDw = __be32_to_cpu(*(u_int32_t*)imageInfoBuff);\ + minor = ((_IIVerDw) >> 16) & 0xff;\ + major = ((_IIVerDw) >> 24) & 0xff; +#define CHECK_IMAGE_INFO_VERSION(major)\ + ((major) == 0) + bool Fs3Operations::GetImageInfo(u_int8_t *buff) { - struct cibfw_image_info image_info; + int IIMajor, IIMinor; + + // TODO: adrianc: use the version fields once they are available in tools layouts + GET_IMAGE_INFO_VERSION(buff, IIMajor, IIMinor); + (void)IIMinor; + if (!CHECK_IMAGE_INFO_VERSION(IIMajor)) { + return errmsg("Unknown IMAGE_INFO format version (%d.%d).", IIMajor, IIMinor); + } cibfw_image_info_unpack(&image_info, buff); // cibfw_image_info_dump(&image_info, stdout); @@ -213,9 +227,9 @@ bool Fs3Operations::GetImageInfo(u_int8_t *buff) } #define CHECK_DEV_INFO_NEW_FORMAT(info_st)\ - ((info_st.major_version == 2) && (info_st.minor_version == 0)) + (info_st.major_version == 2) #define CHECK_DEV_INFO_OLD_FORMAT(info_st)\ - ((info_st.major_version == 1) && (info_st.minor_version == 0)) + (info_st.major_version == 1) bool Fs3Operations::GetDevInfo(u_int8_t *buff) { struct cibfw_device_info cib_dev_info; @@ -423,6 +437,7 @@ bool Fs3Operations::VerifyTOC(u_int32_t dtoc_addr, bool& bad_signature, VerifyCa section_index++; } while (toc_entry.type != FS3_END); _fs3ImgInfo.numOfItocs = section_index - 1; + if (!mfg_exists) { _badDevDataSections = true; return errmsg("No \""MFG_INFO"\" info section."); @@ -500,18 +515,20 @@ bool Fs3Operations::Fs3Verify(VerifyCallBack verifyCallBackFunc, bool show_itoc, u_int32_t image_start = cntx_image_start[0]; offset = 0; // Read BOOT - //f.set_address_convertor(0, 0); + _ioAccess->set_address_convertor(0, 0); + READBUF((*_ioAccess), image_start, buff, FS3_BOOT_START, "Image header"); + Fs3UpdateImgCache((u_int8_t*)buff, 0, FS3_BOOT_START); + TOCPUn(buff, FS3_BOOT_START_IN_DW); + _maxImgLog2Size = ((u_int8_t*)buff)[FS3_LOG2_CHUNK_SIZE_BYTE_OFFSET] ? ((u_int8_t*)buff)[FS3_LOG2_CHUNK_SIZE_BYTE_OFFSET] : FS3_LOG_CHUNK_SIZE; // Put info _fwImgInfo.imgStart = image_start; - _fwImgInfo.cntxLog2ChunkSize = FS3_LOG_CHUNK_SIZE; + // read the chunk size from the image header + _fwImgInfo.cntxLog2ChunkSize = _maxImgLog2Size; _fwImgInfo.ext_info.is_failsafe = true; _fwImgInfo.actuallyFailsafe = true; _fwImgInfo.magicPatternFound = 1; - _ioAccess->set_address_convertor(_fwImgInfo.cntxLog2ChunkSize, _fwImgInfo.imgStart != 0); - READBUF((*_ioAccess), 0, buff, FS3_BOOT_START, "Image header"); - Fs3UpdateImgCache((u_int8_t*)buff, 0, FS3_BOOT_START); - TOCPUn(buff, FS3_BOOT_START_IN_DW); + report_callback(verifyCallBackFunc, "\nFS3 failsafe image\n\n"); // adrianc: we dont check Preboot section (or boot start) because of a variance in the calculation of the CRC @@ -520,7 +537,7 @@ bool Fs3Operations::Fs3Verify(VerifyCallBack verifyCallBackFunc, bool show_itoc, offset += FS3_BOOT_START; FS3_CHECKB2(0, offset, !queryOptions.quickQuery, PRE_CRC_OUTPUT, verifyCallBackFunc); - offset += _fwImgInfo.bootSize;; + offset += _fwImgInfo.bootSize; _fs3ImgInfo.firstItocIsEmpty = false; // printf("-D- image_start = %#x\n", image_start); // Go over the ITOC entries @@ -539,7 +556,6 @@ bool Fs3Operations::Fs3Verify(VerifyCallBack verifyCallBackFunc, bool show_itoc, } offset += sector_size; } - return errmsg("No valid ITOC was found."); } @@ -619,12 +635,61 @@ bool Fs3Operations::UpdateDevDataITOC(u_int8_t *image_data, struct toc_info *ima return true; } -bool Fs3Operations::CheckFs3ImgSize(Fs3Operations& imageOps) +// add an itoc entry to the image (just the entry no the section itself) +bool Fs3Operations::AddDevDataITOC(struct toc_info *flash_toc_entry, u_int8_t *image_data, struct toc_info *image_toc_arr, int& image_toc_size) { - u_int32_t flashSize = (_ioAccess->is_flash()) ? _ioAccess->get_size() : FS3_FLASH_SIZE; - u_int32_t maxFsImgSize = flashSize / 2; - u_int32_t maxImgDataSize = maxFsImgSize - (flashSize - _fs3ImgInfo.smallestAbsAddr); + if (image_toc_size + 1 > MAX_TOCS_NUM) { + return errmsg("Cannot add iTOC entry, too many entries in iTOC array."); + } + if (!flash_toc_entry->toc_entry.device_data) { + return errmsg("Cannot add non device data iTOC entry"); + } + // add new entry to array + image_toc_arr[image_toc_size].entry_addr = image_toc_arr[image_toc_size - 1].entry_addr + CIBFW_ITOC_ENTRY_SIZE; + memcpy(image_toc_arr[image_toc_size].data, flash_toc_entry->data, CIBFW_ITOC_ENTRY_SIZE); + image_toc_arr[image_toc_size].section_data = flash_toc_entry->section_data; + image_toc_arr[image_toc_size].toc_entry = flash_toc_entry->toc_entry; + // write entry data to image_data + memcpy(&image_data[image_toc_arr[image_toc_size].entry_addr], image_toc_arr[image_toc_size].data, CIBFW_ITOC_ENTRY_SIZE); + // write END itoc entry at the end of the array + memset(&image_data[image_toc_arr[image_toc_size].entry_addr + CIBFW_ITOC_ENTRY_SIZE], 0xff, CIBFW_ITOC_ENTRY_SIZE); + image_toc_size++; + return true; +} + +bool Fs3Operations::CheckFs3ImgSize(Fs3Operations& imageOps, bool useImageDevData) +{ + /* there are (ATM) two image slots on the flash: + * SLOT0: starts add flash address 0x0 + * SLOT1: starts at flash address 2^_maxImgLogSize + * Device sections can either be a part of SLOT0 Image or SLOT1 or not, depending on flash size + * if flash size is greater than 2^(_maxImgLogSize+1) than device sections and first/second image dont share same area + * */ + Fs3Operations& ops = useImageDevData ? imageOps : *this; + u_int32_t maxFsImgSize = 1 << ops._maxImgLog2Size; + u_int32_t smallestAbsAddrSlot0 = maxFsImgSize; + u_int32_t smallestAbsAddrSlot1 = 2*maxFsImgSize; + u_int32_t maxImgDataSizeSlot0, maxImgDataSizeSlot1; + + // find smallest abs address in SLOT0 + for (int i = 0; i < ops._fs3ImgInfo.numOfItocs; i++) { + struct cibfw_itoc_entry *toc_entry = &ops._fs3ImgInfo.tocArr[i].toc_entry; + u_int32_t tocEntryFlashAddr = toc_entry->flash_addr << 2; + if (toc_entry->device_data) { + if (tocEntryFlashAddr > maxFsImgSize) { + // address in SLOT1 + smallestAbsAddrSlot1 = smallestAbsAddrSlot1 > tocEntryFlashAddr ? tocEntryFlashAddr : smallestAbsAddrSlot1; + } else { + // address in SLOT0 + smallestAbsAddrSlot0 = smallestAbsAddrSlot0 > tocEntryFlashAddr ? tocEntryFlashAddr : smallestAbsAddrSlot0; + } + } + } + maxImgDataSizeSlot0 = smallestAbsAddrSlot0; + maxImgDataSizeSlot1 = smallestAbsAddrSlot1 - maxFsImgSize; + + u_int32_t maxImgDataSize = maxImgDataSizeSlot0 < maxImgDataSizeSlot1 ? maxImgDataSizeSlot0 : maxImgDataSizeSlot1; if (imageOps._fs3ImgInfo.sizeOfImgData > maxImgDataSize) { return errmsg("Size of image data (0x%x) is greater than max size of image data (0x%x)", imageOps._fs3ImgInfo.sizeOfImgData, maxImgDataSize); @@ -657,13 +722,14 @@ bool Fs3Operations::BurnFs3Image(Fs3Operations &imageOps, ExtBurnParams& burnParams) { u_int8_t is_curr_image_in_odd_chunks; - u_int32_t new_image_start, last_img_data_addr = 0; + u_int32_t new_image_start; + u_int32_t total_img_size = 0; + u_int32_t sector_size = (_ioAccess->is_flash()) ? _ioAccess->get_sector_size() : FS3_DEFAULT_SECTOR_SIZE; Flash *f = (Flash*)(this->_ioAccess); FImage *fim = (FImage*)(imageOps._ioAccess); u_int8_t *data8 = (u_int8_t *) fim->getBuf(); - if (_fwImgInfo.imgStart != 0 || !burnParams.burnFailsafe) { // if the burn is not failsafe we also burn the image at 0x0 is_curr_image_in_odd_chunks = 1; @@ -675,68 +741,81 @@ bool Fs3Operations::BurnFs3Image(Fs3Operations &imageOps, /*printf("-D- new_image_start = %#x, is_curr_image_in_odd_chunks = %#x\n", new_image_start, is_curr_image_in_odd_chunks); printf("-D- num_of_itocs = %d\n", image_info->num_of_itocs); */ - if (!CheckFs3ImgSize(imageOps)) { + + // take chunk size from image in case of a non failsafe burn (in any case they should be the same) + f->set_address_convertor(imageOps._fwImgInfo.cntxLog2ChunkSize, !is_curr_image_in_odd_chunks); + + // check max image size + bool useImageDevData = !burnParams.burnFailsafe && burnParams.useImgDevData; + if (!CheckFs3ImgSize(imageOps, useImageDevData)) { return false; } - // update device data sections in itoc array (take them from device if we are burning failsafe) - f->set_address_convertor(imageOps._fwImgInfo.cntxLog2ChunkSize, !is_curr_image_in_odd_chunks); + // update devDataTocsInImage for (int i = 0; i < imageOps._fs3ImgInfo.numOfItocs; i++) { struct toc_info *itoc_info_p = &imageOps._fs3ImgInfo.tocArr[i]; struct cibfw_itoc_entry *toc_entry = &itoc_info_p->toc_entry; - // printf("-D- itoc_addr = %#x\n", itoc_info_p->entry_addr); + if (toc_entry->device_data) {// updare dev_data itoc with the device's dev_data section addr - // printf("-D- toc_entry: %#x\n", toc_entry->itoc_entry_crc); if (burnParams.burnFailsafe || !burnParams.useImgDevData) { // we update the device data entires if : a. we burn failsafe or b. we burn non-failsafe but we take the device data anyway if(!UpdateDevDataITOC(data8, itoc_info_p, _fs3ImgInfo.tocArr, _fs3ImgInfo.numOfItocs)){ return false; } } - // printf("-D- After toc_entry: %#x\n", toc_entry->itoc_entry_crc); - } else { - u_int32_t last_addr_of_itoc = (toc_entry->flash_addr + toc_entry->size) << 2; - last_img_data_addr = (last_addr_of_itoc > last_img_data_addr) ? last_addr_of_itoc : last_img_data_addr; } - } - // Check that the dev data is not being overridden - // find the lowest dev_data entry addr: - u_int32_t first_dev_data_addr = 0xffffffff; - u_int32_t last_dev_data_address = 0; + //find total image size that will be written for (int i = 0; i < imageOps._fs3ImgInfo.numOfItocs; i++) { struct toc_info *itoc_info_p = &imageOps._fs3ImgInfo.tocArr[i]; struct cibfw_itoc_entry *toc_entry = &itoc_info_p->toc_entry; - if (toc_entry->device_data) { - u_int32_t addr_of_itoc = toc_entry->flash_addr << 2; - u_int32_t last_addr_of_itoc = (toc_entry->flash_addr + toc_entry->size) << 2; - - first_dev_data_addr = addr_of_itoc < first_dev_data_addr ? addr_of_itoc : first_dev_data_addr; - last_dev_data_address = last_addr_of_itoc > last_dev_data_address ? last_addr_of_itoc : last_dev_data_address; + if (!toc_entry->device_data) { + total_img_size += toc_entry->size << 2; + } else if (!burnParams.burnFailsafe && burnParams.useImgDevData) { + total_img_size += toc_entry->size << 2; + } else { + continue; } } - //printf("-D- last image addr: 0x%x, first dev data addr: 0x%x\n", last_img_data_addr, first_dev_data_addr); - // compare with last_img_data_addr (last non dev data address) - if (last_img_data_addr >= first_dev_data_addr) { - return errmsg("Failed to burn FW. Device data sections will be overridden by the operation."); - } + // add boot section, itoc array (wo signature) + total_img_size += imageOps._fs3ImgInfo.itocAddr + sector_size - FS3_FW_SIGNATURE_SIZE; - if ( last_img_data_addr <= 16) { + if ( total_img_size <= sector_size) { return errmsg("Failed to burn FW. Internal error."); } u_int32_t zeroes = 0; - // write the image without the device data sections - if (!writeImage(burnParams.progressFunc, 16 , data8 + 16, last_img_data_addr - 16)) { + // write the image + int alreadyWrittenSz=0; + // write boot section, itoc array (wo signature) + if (!writeImage(burnParams.progressFunc, + FS3_FW_SIGNATURE_SIZE, + data8 + FS3_FW_SIGNATURE_SIZE, + imageOps._fs3ImgInfo.itocAddr + sector_size - FS3_FW_SIGNATURE_SIZE, + false, + total_img_size, + alreadyWrittenSz)) { return false; } - // write device data sections if needed - if (!burnParams.burnFailsafe && burnParams.useImgDevData) { - if (!writeImage((ProgressCallBack)NULL, first_dev_data_addr , data8 + first_dev_data_addr, (last_dev_data_address - first_dev_data_addr), true)) { - return false; + alreadyWrittenSz += imageOps._fs3ImgInfo.itocAddr + sector_size - FS3_FW_SIGNATURE_SIZE; + // write itoc entries data + for (int i = 0; i < imageOps._fs3ImgInfo.numOfItocs; i++) { + struct toc_info *itoc_info_p = &imageOps._fs3ImgInfo.tocArr[i]; + struct cibfw_itoc_entry *toc_entry = &itoc_info_p->toc_entry; + bool writeSection = true; + if (toc_entry->device_data && (burnParams.burnFailsafe || !burnParams.useImgDevData)) { + writeSection = false; + } + + if (writeSection) { + if (!writeImage(burnParams.progressFunc, toc_entry->flash_addr << 2 , &(itoc_info_p->section_data[0]), itoc_info_p->section_data.size(), !toc_entry->relative_addr, total_img_size, alreadyWrittenSz)) { + return false; + } + alreadyWrittenSz += itoc_info_p->section_data.size(); } } + if (!f->is_flash()) { return true; } @@ -849,6 +928,20 @@ bool Fs3Operations::Fs3Burn(Fs3Operations &imageOps, ExtBurnParams& burnParams) } if (burnParams.burnFailsafe) { + // Check image and device chunk sizes are Ok + if (_fwImgInfo.cntxLog2ChunkSize != imageOps._fwImgInfo.cntxLog2ChunkSize) { + //TODO: remove both cond before release + if (_ioAccess->get_size() < 0x1000000) { + return errmsg("Image intended for 16MB Flash. please replace your HCA or perform rework before updating."); + } + // if (imageOps._fwImgInfo.cntxLog2ChunkSize == 0x16 ) { + return errmsg("Device and Image chunk sizes differ\n" + " Internal users: in order to fix, please run: mlxfwup -d %s -f %d.%04d.%04d --fix_cx4_image\n" + " External users: contact Mellanox support team.", _devName, imageOps._fwImgInfo.ext_info.fw_ver[0], + imageOps._fwImgInfo.ext_info.fw_ver[1], imageOps._fwImgInfo.ext_info.fw_ver[2]); + //} + // return errmsg("Device and Image chunk sizes differ, use non failsafe burn flow."); + } // Check if the burnt FW version is OK if (!CheckFwVersion(imageOps, burnParams.ignoreVersionCheck)) { @@ -1013,9 +1106,17 @@ bool Fs3Operations::FwSetMFG(fs3_uid_t baseGuid, PrintCallBack callBackFunc) return errmsg("base GUID/MAC were not specified."); } + if (baseGuid.base_mac_specified && !CheckMac(baseGuid.base_mac)) { + return errmsg("Bad MAC (" MAC_FORMAT ") given: %s. Please specify a valid MAC value", baseGuid.base_mac.h, baseGuid.base_mac.l, err()); + } + if (!Fs3UpdateSection(&baseGuid, FS3_MFG_INFO, false, CMD_SET_MFG_GUIDS, callBackFunc)) { return false; } + // on image verify that image is OK after modification (we skip this on device for performance reasons) + if (!_ioAccess->is_flash() && !Fs3IntQuery(false, false)) { + return false; + } return true; } @@ -1056,6 +1157,10 @@ bool Fs3Operations::FwSetGuids(sg_params_t& sgParam, PrintCallBack callBackFunc, usrGuid.set_mac_from_guid = sgParam.uidsSpecified ? true : false; } if (sgParam.macsSpecified) { + // check base mac + if (!CheckMac(sgParam.userGuids[1])) { + return errmsg("Bad MAC (" MAC_FORMAT ") given: %s. Please specify a valid MAC value", sgParam.userGuids[1].h, sgParam.userGuids[1].l, err()); + } usrGuid.base_mac_specified = true; usrGuid.base_mac = sgParam.userGuids[1]; } @@ -1066,6 +1171,10 @@ bool Fs3Operations::FwSetGuids(sg_params_t& sgParam, PrintCallBack callBackFunc, if (!Fs3UpdateSection(&usrGuid, FS3_DEV_INFO, true, CMD_SET_GUIDS, callBackFunc)) { return false; } + // on image verify that image is OK after modification (we skip this on device for performance reasons) + if (!_ioAccess->is_flash() && !Fs3IntQuery(false, false)) { + return false; + } return true; } @@ -1078,13 +1187,17 @@ bool Fs3Operations::FwSetVPD(char* vpdFileStr, PrintCallBack callBackFunc) if (!Fs3UpdateSection(vpdFileStr, FS3_VPD_R0, false, CMD_BURN_VPD, callBackFunc)) { return false; } + // on image verify that image is OK after modification (we skip this on device for performance reasons) + if (!_ioAccess->is_flash() && !Fs3IntQuery(false, false)) { + return false; + } return true; } bool Fs3Operations::GetModifiedSectionInfo(fs3_section_t sectionType, fs3_section_t nextSectionType, u_int32_t &newSectAddr, fs3_section_t &SectToPut, u_int32_t &oldSectSize) { - struct toc_info *curr_itoc; + struct toc_info *curr_itoc = NULL; if (Fs3GetItocInfo(_fs3ImgInfo.tocArr, _fs3ImgInfo.numOfItocs, sectionType, curr_itoc) || Fs3GetItocInfo(_fs3ImgInfo.tocArr, _fs3ImgInfo.numOfItocs, nextSectionType, curr_itoc)) { newSectAddr = curr_itoc->toc_entry.flash_addr << 2; @@ -1133,7 +1246,7 @@ bool Fs3Operations::UpdateItocAfterInsert(fs3_section_t sectionType, u_int32_t n if (toAdd) { if (isReplacement) { - struct toc_info *curr_itoc; + struct toc_info *curr_itoc = NULL; u_int32_t sectSize; if (!Fs3GetItocInfo(_fs3ImgInfo.tocArr, _fs3ImgInfo.numOfItocs, sectionType, curr_itoc)) { return false; @@ -1675,6 +1788,10 @@ bool Fs3Operations::FwSetVSD(char* vsdStr, ProgressCallBack progressFunc, PrintC if (!Fs3UpdateSection(vsdStr, FS3_DEV_INFO, true, CMD_SET_VSD, printFunc)) { return false; } + // on image verify that image is OK after modification (we skip this on device for performance reasons) + if (!_ioAccess->is_flash() && !Fs3IntQuery(false, false)) { + return false; + } return true; } @@ -1803,6 +1920,7 @@ bool Fs3Operations::reburnItocSection(PrintCallBack callBackFunc) { #define PUSH_DEV_DATA(vec)\ vec.push_back(FS3_MFG_INFO);\ vec.push_back(FS3_DEV_INFO);\ + vec.push_back(FS3_NV_DATA0);\ vec.push_back(FS3_NV_DATA1);\ vec.push_back(FS3_NV_DATA2);\ vec.push_back(FS3_FW_NV_LOG);\ @@ -1813,6 +1931,7 @@ bool Fs3Operations::reburnItocSection(PrintCallBack callBackFunc) { vec.pop_back();\ vec.pop_back();\ vec.pop_back();\ + vec.pop_back();\ vec.pop_back() bool Fs3Operations::TocComp::operator() (toc_info* elem1, toc_info* elem2) @@ -1857,7 +1976,7 @@ bool Fs3Operations::FwShiftDevData(PrintCallBack progressFunc) } // check if we already shifted - struct toc_info* mfgToc; + struct toc_info* mfgToc = NULL; if (!Fs3GetItocInfo(_fs3ImgInfo.tocArr, _fs3ImgInfo.numOfItocs, FS3_MFG_INFO, mfgToc)) { return errmsg("Failed to get MFG_INFO ITOC information."); } @@ -1922,10 +2041,12 @@ const char* Fs3Operations::FwGetResetRecommandationStr() bool Fs3Operations::Fs3IsfuActivateImage(u_int32_t newImageStart) { - int rc; + int rc = 0; mfile *mf = NULL; struct cibfw_register_mfai mfai; + struct cibfw_register_mfrl mfrl; memset(&mfai, 0, sizeof(mfai)); + memset(&mfrl, 0, sizeof(mfrl)); if (!_devName) {// not an mst device return true; @@ -1935,20 +2056,21 @@ bool Fs3Operations::Fs3IsfuActivateImage(u_int32_t newImageStart) if (!mf) { return false; } - /* GET method not supported yet for this register so we cant read->modify->write it - * ill assume the un-needed fields are zero - */ - //rc = reg_access_mfai(mf,REG_ACCESS_METHOD_GET, &mfai); - //if (rc) { - // printf("-D- isfu3 0x%x\n", rc); - // return false; - // } mfai.address = newImageStart; mfai.use_address = 1; rc = reg_access_mfai(mf,REG_ACCESS_METHOD_SET, &mfai); + if (rc) { + goto cleanup; + } + // send warm boot (bit 6) + mfrl.reset_level = 1 << 6; + rc = reg_access_mfrl(mf,REG_ACCESS_METHOD_SET, &mfrl); + // ignore ME_REG_ACCESS_BAD_PARAM error for old FW + rc = (rc == ME_REG_ACCESS_BAD_PARAM) ? ME_OK : rc; +cleanup: mclose(mf); if (rc) { - return false; + return errmsg("Failed to activate image. %s", m_err2str((MError)rc)); } return true; } diff --git a/mlxfwops/lib/fs3_ops.h b/mlxfwops/lib/fs3_ops.h index f762749..f69af43 100644 --- a/mlxfwops/lib/fs3_ops.h +++ b/mlxfwops/lib/fs3_ops.h @@ -45,7 +45,7 @@ class Fs3Operations : public FwOperations { public: - Fs3Operations(FBase *ioAccess) : FwOperations(ioAccess), _isfuSupported(false), _badDevDataSections(false){}; + Fs3Operations(FBase *ioAccess) : FwOperations(ioAccess), _isfuSupported(false), _badDevDataSections(false), _maxImgLog2Size(0){}; virtual ~Fs3Operations() {}; //virtual void print_type() {printf("-D- FS3 type!\n");}; @@ -80,6 +80,7 @@ private: #define PRE_CRC_OUTPUT " " #define MAX_TOCS_NUM 64 #define FS3_DEFAULT_SECTOR_SIZE 0x1000 + #define FS3_LOG2_CHUNK_SIZE_BYTE_OFFSET 0x26 #define ITOC_ASCII 0x49544f43 #define DTOC_ASCII 0x64544f43 #define TOC_RAND1 0x04081516 @@ -87,6 +88,7 @@ private: #define TOC_RAND3 0xbacafe00 #define TOC_HEADER_SIZE 0x20 #define TOC_ENTRY_SIZE 0x20 + #define FS3_FW_SIGNATURE_SIZE 0x10 #define MFG_INFO "MFG_INFO" #define UNKNOWN_SECTION "UNKNOWN" @@ -145,6 +147,7 @@ private: bool Fs3Burn(Fs3Operations &imageOps, ExtBurnParams& burnParams); bool BurnFs3Image(Fs3Operations &imageOps, ExtBurnParams& burnParams); bool UpdateDevDataITOC(u_int8_t *image_data, struct toc_info *image_toc_entry, struct toc_info *flash_toc_arr, int flash_toc_size); + bool AddDevDataITOC(struct toc_info *flash_toc_entry, u_int8_t *image_data, struct toc_info *image_toc_arr, int& image_toc_size); bool Fs3UpdateSection(void *new_info, fs3_section_t sect_type=FS3_DEV_INFO, bool is_sect_failsafe=true, CommandType cmd_type=CMD_UNKNOWN, PrintCallBack callBackFunc=(PrintCallBack)NULL ); bool Fs3GetItocInfo(struct toc_info *tocArr, int num_of_itocs, fs3_section_t sect_type, struct toc_info *&curr_toc); bool Fs3UpdateMfgUidsSection(struct toc_info *curr_toc, std::vector section_data, fs3_uid_t base_uid, @@ -179,7 +182,7 @@ private: bool Fs3RemoveSection(fs3_section_t sectionType, ProgressCallBack progressFunc); bool Fs3AddSection(fs3_section_t sectionType, fs3_section_t neighbourSection, u_int32_t* newSectData, u_int32_t newSectSize, ProgressCallBack progressFunc); - bool CheckFs3ImgSize(Fs3Operations& imageOps); + bool CheckFs3ImgSize(Fs3Operations& imageOps, bool useImageDevData=false); bool GetMaxImageSize(u_int32_t flash_size, bool image_is_fs, u_int32_t &max_image_size); u_int32_t getAbsAddr(toc_info* toc); @@ -207,6 +210,7 @@ private: Fs3ImgInfo _fs3ImgInfo; bool _isfuSupported; bool _badDevDataSections; // set true if during verify one of the device data section is corrupt or mfg section missing + u_int32_t _maxImgLog2Size; }; diff --git a/mlxfwops/lib/fw_ops.cpp b/mlxfwops/lib/fw_ops.cpp index 5d4b118..4b9224b 100644 --- a/mlxfwops/lib/fw_ops.cpp +++ b/mlxfwops/lib/fw_ops.cpp @@ -308,7 +308,8 @@ const u_int32_t FwOperations::_cntx_image_start_pos[FwOperations::CNTX_START_POS 0x40000, 0x80000, 0x100000, - 0x200000 + 0x200000, + 0x400000 }; bool FwOperations::CntxFindMagicPattern (FBase* ioAccess, u_int32_t addr) { @@ -346,6 +347,15 @@ bool FwOperations::CntxFindAllImageStart (FBase* ioAccess, u_int32_t start_locat } } + /* WA: due to bug on SwichIB first GA FW (FW doesnt look at chip select field in mfba) + * when reading from flash address 0x400000 it wraps around to 0x0 causing more than one + * valid image to be found. as a WA we dont check at 0x400000. basic flash operations + * are affected when attempting to access addressess greater than 0x3fffff. + */ + if (((Flash*)ioAccess)->get_dev_id() == SWITCH_IB_HW_ID) { + needed_pos_num -= 1; + } + ioAccess->set_address_convertor(0,0); *found_images = 0; for (int i = 0; i < needed_pos_num; i++) { @@ -465,7 +475,7 @@ bool FwOperations::FwAccessCreate(fw_ops_params_t& fwParams, FBase **ioAccessP) } else if (fwParams.hndlType == FHT_MST_DEV) { *ioAccessP = new Flash; if ( !((Flash*)*ioAccessP)->open(fwParams.mstHndl, fwParams.forceLock, fwParams.readOnly, fwParams.numOfBanks,\ - fwParams.flashParams, fwParams.ignoreCacheRep, !fwParams.shortErrors)) { + fwParams.flashParams, fwParams.ignoreCacheRep, !fwParams.shortErrors, fwParams.cx3FwAccess)) { // TODO: release memory here ? WriteToErrBuff(fwParams.errBuff,(*ioAccessP)->err(), fwParams.errBuffSize); delete *ioAccessP; @@ -492,6 +502,7 @@ u_int8_t FwOperations::CheckFwFormat(FBase& f, bool getFwFormatFromImg) { } else if ( (((Flash*)&f)->get_dev_id() == CONNECT_IB_HW_ID) || (((Flash*)&f)->get_dev_id() == SWITCH_IB_HW_ID) || (((Flash*)&f)->get_dev_id() == CX4_HW_ID) || + (((Flash*)&f)->get_dev_id() == CX4LX_HW_ID) || (((Flash*)&f)->get_dev_id() == SWITCH_EN_HW_ID)) { return FS_FS3_GEN; } @@ -543,6 +554,7 @@ FwOperations* FwOperations::FwOperationsCreate(void* fwHndl, void *info, char* p fwParams.flashParams = (flash_params_t*)NULL; fwParams.ignoreCacheRep = 0; fwParams.noFlashVerify = false; + fwParams.cx3FwAccess = 0; } return FwOperationsCreate(fwParams); } @@ -598,11 +610,12 @@ u_int32_t FwOperations::CalcImageCRC(u_int32_t* buff, u_int32_t size) return new_crc; } -bool FwOperations::writeImage(ProgressCallBack progressFunc, u_int32_t addr, void *data, int cnt, bool is_phys_addr) +bool FwOperations::writeImage(ProgressCallBack progressFunc, u_int32_t addr, void *data, int cnt, bool isPhysAddr, int totalSz, int alreadyWrittenSz) { u_int8_t *p = (u_int8_t *)data; u_int32_t curr_addr = addr; u_int32_t towrite = cnt; + totalSz = totalSz == -1 ? cnt : totalSz; bool rc; // if (!_ioAccess->is_flash()) { // return errmsg("Internal error: writeImage is supported only on flash."); @@ -612,7 +625,7 @@ bool FwOperations::writeImage(ProgressCallBack progressFunc, u_int32_t addr, voi int trans; if (_ioAccess->is_flash()) { trans = (towrite > (int)Flash::TRANS) ? (int)Flash::TRANS : towrite; - if (is_phys_addr) { + if (isPhysAddr) { rc = ((Flash*)_ioAccess)->write_phy(curr_addr, p, trans); } else { rc = ((Flash*)_ioAccess)->write(curr_addr, p, trans); @@ -632,7 +645,7 @@ bool FwOperations::writeImage(ProgressCallBack progressFunc, u_int32_t addr, voi // Report if (progressFunc != NULL) { - u_int32_t new_perc = ((cnt - towrite) * 100) / cnt; + u_int32_t new_perc = ((cnt - towrite + alreadyWrittenSz) * 100) / totalSz; if (progressFunc((int)new_perc)) { return errmsg("Aborting... recieved interrupt signal"); @@ -645,8 +658,8 @@ bool FwOperations::writeImage(ProgressCallBack progressFunc, u_int32_t addr, voi bool FwOperations::ModifyImageFile(const char *fimage, u_int32_t addr, void *data, int cnt) { - int file_size; - u_int8_t * file_data; + int file_size = 0; + u_int8_t * file_data = NULL; if (!ReadImageFile(fimage, file_data, file_size, addr + cnt)) { return false; @@ -689,6 +702,11 @@ bool FwOperations::CheckMac(u_int64_t mac) { return true; } +bool FwOperations::CheckMac(guid_t mac) { + u_int64_t bigMac = ((u_int64_t)mac.h << 32 & 0xffffffff00000000ULL) | ((u_int64_t)mac.l & 0x00000000ffffffffULL ); + return CheckMac(bigMac); +} + void FwOperations::recalcSectionCrc(u_int8_t *buf, u_int32_t data_size) { Crc16 crc; @@ -746,12 +764,13 @@ const FwOperations::HwDevData FwOperations::hwDevData[] = { { "Connect_IB", CONNECT_IB_HW_ID, CT_CONNECT_IB, 2, {CONNECT_IB_SW_ID, 4114, 4115, 4116, 4117, 4118, 4119, 4120, 4121, 4122, 4123, 4124, 0}}, - { "InfiniScale IV", IS4_HW_ID, CT_IS4, 0, {48436, 48437, 48438, 0}}, - { "BridgeX", BRIDGEX_HW_ID, CT_BRIDGEX, 0, {64102, 64112, 64122, 0}}, - { "SwitchX", SWITCHX_HW_ID, CT_SWITCHX, 0, {51000, 0}}, - { "Switch_IB", SWITCH_IB_HW_ID, CT_SWITCH_IB,0, {52000, 0}}, - { "ConnectX-4", CX4_HW_ID, CT_CONNECTX, 0, {4115, 0}}, - { "Switch_EN", SWITCH_EN_HW_ID,CT_SWITCH_EN, 0, {52100, 0}}, + { "InfiniScale IV", IS4_HW_ID, CT_IS4, 0, {48436, 48437, 48438, 0}}, + { "BridgeX", BRIDGEX_HW_ID, CT_BRIDGEX, 0, {64102, 64112, 64122, 0}}, + { "SwitchX", SWITCHX_HW_ID, CT_SWITCHX, 0, {51000, 0}}, + { "Switch_IB", SWITCH_IB_HW_ID, CT_SWITCH_IB, 0, {52000, 0}}, + { "ConnectX-4", CX4_HW_ID, CT_CONNECTX, 0, {4115, 0}}, + { "ConnectX-4LX", CX4LX_HW_ID, CT_CONNECTX, 0, {4117, 0}}, + { "Switch_EN", SWITCH_EN_HW_ID, CT_SWITCH_EN, 0, {52100, 0}}, { (char*)NULL , 0, CT_UNKNOWN, 0, {0}},// zero devid terminator }; @@ -763,6 +782,7 @@ const FwOperations::HwDev2Str FwOperations::hwDev2Str[] = { {"ConnectX-3 A1", CX3_HW_ID, 0x01}, {"ConnectX-3Pro", CX3_PRO_HW_ID, 0x00}, {"ConnectX-4", CX4_HW_ID, 0x00}, + {"ConnectX-4LX", CX4LX_HW_ID, 0x00}, {"SwitchX A0", SWITCHX_HW_ID, 0x00}, {"SwitchX A1", SWITCHX_HW_ID, 0x01}, {"BridgeX", BRIDGEX_HW_ID, 0xA0}, diff --git a/mlxfwops/lib/fw_ops.h b/mlxfwops/lib/fw_ops.h index 73be75d..006e363 100644 --- a/mlxfwops/lib/fw_ops.h +++ b/mlxfwops/lib/fw_ops.h @@ -221,6 +221,7 @@ public: int ignoreCacheRep; bool noFlashVerify; bool shortErrors; // show short/long error msgs (default shuold be false) + int cx3FwAccess; }; struct sgParams { @@ -256,7 +257,7 @@ protected: }; enum { OLD_CNTX_START_POS_SIZE = 6, - CNTX_START_POS_SIZE = 7 + CNTX_START_POS_SIZE = 8 }; enum { MAX_SW_DEVICES_PER_HW=32 @@ -303,7 +304,7 @@ protected: bool checkBoot2(u_int32_t beg, u_int32_t offs, u_int32_t& next, bool fullRead, const char *pref, VerifyCallBack verifyCallBackFunc = (VerifyCallBack)NULL); u_int32_t CalcImageCRC(u_int32_t* buff, u_int32_t size); - bool writeImage(ProgressCallBack progressFunc, u_int32_t addr, void *data, int cnt, bool is_phys_addr = false); + bool writeImage(ProgressCallBack progressFunc, u_int32_t addr, void *data, int cnt, bool isPhysAddr = false, int totalSz = -1, int alreadyWrittenSz = 0); ////////////////////////////////////////////////////////////////// bool GetSectData(std::vector& file_sect, const u_int32_t *buff, const u_int32_t size); //////////////////////////////////////////////////////////////////// @@ -311,6 +312,7 @@ protected: bool CheckMatchingHwDevId(u_int32_t hwDevId, u_int32_t rev_id, u_int32_t* supportedHwId, u_int32_t supportedHwIdNum); bool HWIdRevToName(u_int32_t hw_id, u_int8_t rev_id, char *hw_name); bool CheckMac(u_int64_t mac); + bool CheckMac(guid_t mac); void recalcSectionCrc(u_int8_t *buf, u_int32_t data_size); void FwInitCom(); void FwDebugPrint(char *str); diff --git a/mstdump/crd_lib/crdump.c b/mstdump/crd_lib/crdump.c index 9f012c2..451a944 100755 --- a/mstdump/crd_lib/crdump.c +++ b/mstdump/crd_lib/crdump.c @@ -19,7 +19,7 @@ * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND @@ -30,7 +30,6 @@ * SOFTWARE. */ - #define _GNU_SOURCE #include #include diff --git a/mstdump/crd_lib/crdump.h b/mstdump/crd_lib/crdump.h index 87cdbf7..49acd9c 100644 --- a/mstdump/crd_lib/crdump.h +++ b/mstdump/crd_lib/crdump.h @@ -14,12 +14,12 @@ * - 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. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND @@ -30,7 +30,6 @@ * SOFTWARE. */ - #ifndef _CRDUMP_H_ #define _CRDUMP_H_ diff --git a/mstdump/crd_main/Makefile.am b/mstdump/crd_main/Makefile.am index ad03c1a..0c096d4 100755 --- a/mstdump/crd_main/Makefile.am +++ b/mstdump/crd_main/Makefile.am @@ -37,5 +37,6 @@ AM_CFLAGS = -MD -pipe -g -Wall -W bin_PROGRAMS = mstregdump mstregdump_SOURCES = mstdump.c -mstregdump_LDADD = ../crd_lib/libcrdump.a ../../dev_mgt/libdev_mgt.a ../../mtcr_ul/libmtcr_ul.a -lm -ldl +mstregdump_LDADD = ../crd_lib/libcrdump.a ../../dev_mgt/libdev_mgt.a ../../reg_access/libreg_access.a ../../tools_layouts/libtools_layouts.a \ + ../../mtcr_ul/libmtcr_ul.a -lm -ldl diff --git a/mstdump/crd_main/mstdump.c b/mstdump/crd_main/mstdump.c index 54fc481..1a431d7 100755 --- a/mstdump/crd_main/mstdump.c +++ b/mstdump/crd_main/mstdump.c @@ -14,12 +14,12 @@ * - 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. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND @@ -30,7 +30,6 @@ * SOFTWARE. */ - #include #include #include @@ -38,7 +37,7 @@ #define CAUSE_FLAG "--cause" - +#define MAX_DEV_LEN 512 // string explaining the cmd-line structure char correct_cmdline[] = " Mellanox mstdump utility, dumps device internal configuration data\n\ Usage: mstdump [-full] [i2c-slave] [-v[ersion] [-h[elp]]]\n\n\ @@ -62,6 +61,15 @@ int main(int argc, char* argv[]) { int cause_addr = -1, cause_off = -1; crd_ctxt_t *context; u_int32_t arr_size = 0; + char *endptr; + u_int8_t new_i2c_slave = 0; + char device[MAX_DEV_LEN] = {0}; +#if defined(linux) + if (geteuid() != 0) { + printf("Permission denied, you need to run this tool as root\n"); + return 1; + } +#endif if (argc < 2 || argc > 4) { fprintf(stderr, "%s", correct_cmdline); @@ -96,25 +104,44 @@ int main(int argc, char* argv[]) { full = 1; ++i; } - -#if defined(linux) - if (geteuid() != 0) { - printf("Permission denied, you need to run this tool as root\n"); + if (i >= argc) { + fprintf(stderr, "Device is not specified in command line. Exiting.\n"); return 1; } -#endif - - if (i >= argc || !( mf = mopen((const char *)argv[i]) )) { - fprintf(stderr, "Unable to open device %s. Exiting.\n", - (i < argc) ? argv[i] : "(not specified in command line)"); + strncpy(device, argv[i], MAX_DEV_LEN -1); + if (!( mf = mopen((const char *)device))) { + fprintf(stderr, "Unable to open device %s. Exiting.\n", argv[i]); return 1; } ++i; // move past the device parameter - if (i < argc) { - mset_i2c_slave(mf, (u_int8_t)strtoul(argv[i], 0, 0)); +#ifndef MST_UL + if (mf->tp == MST_MLNXOS) { + mset_cr_access(mf, 1); } +#endif + if (i < argc && !strncmp(argv[i], CAUSE_FLAG, strlen(CAUSE_FLAG))) { + i++; + } + if (i < argc) { + new_i2c_slave = (u_int8_t)strtoul(argv[i], &endptr, 0); + if (*endptr || !*argv[i]) { + fprintf(stderr, "Invalid i2c-slave %s\n", argv[i]); + mclose(mf); + return 1; + } + mset_i2c_slave(mf, new_i2c_slave); + i++; + } + if (i < argc) { + if (i < argc) { + fprintf(stderr, "Unknown argument: %s.\n", argv[i]); + fprintf(stderr, "%s", correct_cmdline); + mclose(mf); + return 1; + } + } rc = CRD_OK; rc = crd_init(&context, mf, full, cause_addr, cause_off); if (rc) { diff --git a/mstdump/mstdump_dbs/ConnectX4.csv b/mstdump/mstdump_dbs/ConnectX4.csv index 6bd2889..69072b0 100644 --- a/mstdump/mstdump_dbs/ConnectX4.csv +++ b/mstdump/mstdump_dbs/ConnectX4.csv @@ -2085,6 +2085,18 @@ 0x0d4740,14, 0x0d4780,62, 0x0d487c,1, +0x0d4884,1, +0x0d488c,1, +0x0d4894,1, +0x0d489c,1, +0x0d48a4,1, +0x0d48ac,1, +0x0d48b4,1, +0x0d48bc,1, +0x0d4900,3, +0x0d4940,3, +0x0d4980,3, +0x0d49c0,3, 0x0d4a00,8, 0x0d4a24,15, 0x0d4a64,30, @@ -2111,6 +2123,10 @@ 0x0d4e94,5, 0x0d4eac,1, 0x0d4eb4,3, +0x0d4f00,15, +0x0d4f40,15, +0x0d4f80,15, +0x0d4fc0,15, 0x0d5000,29, 0x0d5078,4, 0x0d5090,2, @@ -2141,6 +2157,18 @@ 0x0d5740,14, 0x0d5780,62, 0x0d587c,1, +0x0d5884,1, +0x0d588c,1, +0x0d5894,1, +0x0d589c,1, +0x0d58a4,1, +0x0d58ac,1, +0x0d58b4,1, +0x0d58bc,1, +0x0d5900,3, +0x0d5940,3, +0x0d5980,3, +0x0d59c0,3, 0x0d5a00,8, 0x0d5a24,15, 0x0d5a64,30, @@ -2167,6 +2195,10 @@ 0x0d5e94,5, 0x0d5eac,1, 0x0d5eb4,3, +0x0d5f00,15, +0x0d5f40,15, +0x0d5f80,15, +0x0d5fc0,15, 0x0d6000,15, 0x0d6070,3, 0x0d6080,6, @@ -2207,7 +2239,7 @@ 0x0d6b80,19, 0x0d6bd0,10, 0x0d6c00,19, -0x0d6c50,10, +0x0d6c60,6, 0x0d6c84,1, 0x0d6c94,8, 0x0d6cb8,9, @@ -3183,6 +3215,18 @@ 0x118740,14, 0x118780,62, 0x11887c,1, +0x118884,1, +0x11888c,1, +0x118894,1, +0x11889c,1, +0x1188a4,1, +0x1188ac,1, +0x1188b4,1, +0x1188bc,1, +0x118900,3, +0x118940,3, +0x118980,3, +0x1189c0,3, 0x118a00,8, 0x118a24,15, 0x118a64,30, @@ -3209,6 +3253,10 @@ 0x118e94,5, 0x118eac,1, 0x118eb4,3, +0x118f00,15, +0x118f40,15, +0x118f80,15, +0x118fc0,15, 0x119000,29, 0x119078,4, 0x119090,2, @@ -3239,6 +3287,18 @@ 0x119740,14, 0x119780,62, 0x11987c,1, +0x119884,1, +0x11988c,1, +0x119894,1, +0x11989c,1, +0x1198a4,1, +0x1198ac,1, +0x1198b4,1, +0x1198bc,1, +0x119900,3, +0x119940,3, +0x119980,3, +0x1199c0,3, 0x119a00,8, 0x119a24,15, 0x119a64,30, @@ -3265,6 +3325,10 @@ 0x119e94,5, 0x119eac,1, 0x119eb4,3, +0x119f00,15, +0x119f40,15, +0x119f80,15, +0x119fc0,15, 0x11a000,29, 0x11a078,4, 0x11a090,2, @@ -3295,6 +3359,18 @@ 0x11a740,14, 0x11a780,62, 0x11a87c,1, +0x11a884,1, +0x11a88c,1, +0x11a894,1, +0x11a89c,1, +0x11a8a4,1, +0x11a8ac,1, +0x11a8b4,1, +0x11a8bc,1, +0x11a900,3, +0x11a940,3, +0x11a980,3, +0x11a9c0,3, 0x11aa00,8, 0x11aa24,15, 0x11aa64,30, @@ -3321,6 +3397,10 @@ 0x11ae94,5, 0x11aeac,1, 0x11aeb4,3, +0x11af00,15, +0x11af40,15, +0x11af80,15, +0x11afc0,15, 0x11b000,29, 0x11b078,4, 0x11b090,2, @@ -3351,6 +3431,18 @@ 0x11b740,14, 0x11b780,62, 0x11b87c,1, +0x11b884,1, +0x11b88c,1, +0x11b894,1, +0x11b89c,1, +0x11b8a4,1, +0x11b8ac,1, +0x11b8b4,1, +0x11b8bc,1, +0x11b900,3, +0x11b940,3, +0x11b980,3, +0x11b9c0,3, 0x11ba00,8, 0x11ba24,15, 0x11ba64,30, @@ -3377,6 +3469,10 @@ 0x11be94,5, 0x11beac,1, 0x11beb4,3, +0x11bf00,15, +0x11bf40,15, +0x11bf80,15, +0x11bfc0,15, 0x11c000,19, 0x11c050,10, 0x11c080,19, @@ -3410,7 +3506,7 @@ 0x11c780,19, 0x11c7d0,10, 0x11c800,19, -0x11c850,10, +0x11c860,6, 0x11c884,1, 0x11c894,22, 0x11c900,7, diff --git a/mstdump/mstdump_dbs/ConnectX4LX.csv b/mstdump/mstdump_dbs/ConnectX4LX.csv new file mode 100644 index 0000000..03dfdbb --- /dev/null +++ b/mstdump/mstdump_dbs/ConnectX4LX.csv @@ -0,0 +1,3265 @@ +#Addr, Size, Enable addr +0x000000,16388, +0x010084,1, +0x01008c,2, +0x010180,6, +0x01019c,9, +0x010304,1, +0x0103bc,52, +0x010500,35, +0x010604,1, +0x01060c,1, +0x010624,1, +0x01062c,1, +0x010644,1, +0x01064c,3, +0x010800,1, +0x010814,3, +0x010844,1, +0x01084c,4, +0x011000,32, +0x011200,32, +0x011400,32, +0x011600,32, +0x011800,32, +0x011a00,5, +0x011a24,1, +0x011a2c,1, +0x011a34,3, +0x011a44,1, +0x011a4c,2, +0x012000,20, +0x012088,22, +0x012100,18, +0x012200,36, +0x012300,3, +0x012310,1, +0x012320,1, +0x012330,1, +0x012340,1, +0x012350,1, +0x012360,1, +0x012370,1, +0x012400,166, +0x0126a0,1, +0x012700,32, +0x012800,1, +0x012808,1, +0x012810,1, +0x012818,1, +0x012820,1, +0x012828,1, +0x012830,1, +0x012838,1, +0x012850,1, +0x012858,1, +0x012860,1, +0x012868,1, +0x012870,1, +0x012878,1, +0x012880,1, +0x012888,1, +0x012890,5, +0x012900,10, +0x012940,6, +0x012960,6, +0x012980,5, +0x012a00,6, +0x012a40,5, +0x012a80,9, +0x012ac0,19, +0x012b10,2, +0x014000,1, +0x014010,10, +0x014104,1, +0x01410c,4, +0x014200,1, +0x014210,4, +0x014300,4, +0x014400,3, +0x014410,1, +0x014444,1, +0x01444c,4, +0x014480,2, +0x014500,35, +0x014590,1, +0x014600,32, +0x014704,1, +0x01470c,1, +0x014804,2, +0x014814,3, +0x014824,2, +0x014834,3, +0x014844,2, +0x014854,5, +0x014a00,4, +0x014a14,2, +0x015004,1, +0x01500c,4, +0x015204,1, +0x015214,4, +0x015228,1, +0x015244,1, +0x015250,4, +0x015274,1, +0x01527c,1, +0x0152a4,1, +0x015300,4, +0x015314,1, +0x01531c,3, +0x015404,2, +0x015430,20, +0x015484,2, +0x015498,5, +0x0154bc,1, +0x0154c8,1, +0x0154d4,2, +0x01550c,3, +0x015524,3, +0x015608,3, +0x015618,4, +0x015680,16, +0x015704,2, +0x015730,20, +0x015784,3, +0x015794,3, +0x0157c0,6, +0x015800,52, +0x0158d4,1, +0x0158dc,1, +0x0158e4,3, +0x0158f4,1, +0x0158fc,52, +0x015b04,2, +0x015b14,3, +0x015b24,2, +0x015b38,6, +0x015b60,5, +0x015c04,1, +0x015cb8,18, +0x015d98,1, +0x015e00,1, +0x015e08,1, +0x015e10,1, +0x016000,32, +0x016100,7, +0x016120,2, +0x016144,3, +0x016204,1, +0x01620c,1, +0x016224,1, +0x01622c,1, +0x016234,1, +0x01623c,1, +0x016244,1, +0x01624c,1, +0x016254,1, +0x01625c,2, +0x016270,1, +0x016280,1, +0x016290,1, +0x0162a0,1, +0x0162b0,1, +0x0162c0,1, +0x0162d0,1, +0x0162e0,1, +0x0162f0,1, +0x016300,1, +0x016310,1, +0x016320,1, +0x016330,1, +0x016340,32, +0x016400,19, +0x016454,7, +0x016484,1, +0x01648c,1, +0x016800,9, +0x016840,16, +0x017800,1, +0x017828,1, +0x017850,1, +0x017878,1, +0x0178a0,12, +0x0179ac,1, +0x0179d8,4, +0x017a00,6, +0x017a20,6, +0x017a40,3, +0x017c00,6, +0x017c20,6, +0x017c40,6, +0x017c60,6, +0x017c80,6, +0x017ca0,6, +0x017cc0,6, +0x017ce0,6, +0x017d00,3, +0x017d10,5, +0x018400,11, +0x018430,2, +0x018440,4, +0x018604,1, +0x018618,2, +0x018640,4, +0x018660,2, +0x018800,1, +0x018810,4, +0x018844,1, +0x01884c,4, +0x018880,2, +0x01a400,12, +0x01a444,1, +0x01a44c,1, +0x01a800,1, +0x01a814,3, +0x01a844,1, +0x01a84c,4, +0x01c400,7, +0x01c500,8, +0x01c544,1, +0x01c554,3, +0x01c564,3, +0x01c574,3, +0x01c604,1, +0x01c60c,3, +0x01c800,1, +0x01c814,3, +0x01c844,1, +0x01c84c,4, +0x01f000,1, +0x01f400,1, +0x01f408,4, +0x01f41c,3, +0x01f500,2, +0x01f800,1, +0x01f814,3, +0x01f844,1, +0x01f84c,4, +0x01f880,3, +0x020004,1, +0x02000c,4, +0x020080,9, +0x020800,16, +0x020900,192, +0x021004,1, +0x02100c,4, +0x021400,5, +0x021418,5, +0x021480,1, +0x021704,2, +0x02173c,17, +0x021804,1, +0x02180c,4, +0x021840,2, +0x022280,12, +0x022408,6, +0x022444,1, +0x022454,3, +0x022504,1, +0x02250c,4, +0x022624,1, +0x02262c,3, +0x02263c,1, +0x022804,1, +0x02280c,4, +0x022904,4, +0x022924,4, +0x024000,36, +0x0240c0,21, +0x024120,11, +0x024200,5, +0x024220,1, +0x024230,8, +0x024258,1, +0x024260,1, +0x024270,9, +0x0242a0,1, +0x0242b0,4, +0x0242c8,2, +0x024300,5, +0x024318,2, +0x02439c,25, +0x024424,4, +0x024464,13, +0x0244a4,1, +0x0244ac,3, +0x0244c0,2, +0x0244d0,3, +0x0244e0,3, +0x0244f0,3, +0x024500,3, +0x024510,3, +0x024520,3, +0x024530,3, +0x024884,11, +0x0248b4,3, +0x0248c4,1, +0x0248cc,1, +0x0248d4,1, +0x0248dc,1, +0x0248f0,2, +0x024908,6, +0x024928,6, +0x024968,6, +0x024984,3, +0x024994,1, +0x02499c,6, +0x0249b8,7, +0x024a08,6, +0x024a28,6, +0x024a68,6, +0x024a84,1, +0x024a8c,1, +0x024a94,1, +0x024a9c,13, +0x024ae0,6, +0x024b00,7, +0x024b20,6, +0x024b40,8, +0x024c00,2, +0x024c24,3, +0x024c34,3, +0x025004,6, +0x025800,37, +0x025904,1, +0x02590c,1, +0x026000,99, +0x026200,1, +0x026800,7, +0x026824,6, +0x026840,2, +0x026864,1, +0x02686c,1, +0x026874,3, +0x026884,1, +0x0268a4,7, +0x026904,1, +0x02690c,4, +0x026940,1, +0x026980,33, +0x026a0c,7, +0x026a30,1, +0x026a44,4, +0x026a60,1, +0x026a70,1, +0x026b00,9, +0x026b44,2, +0x026b68,6, +0x026b84,2, +0x026ba8,14, +0x026c00,16, +0x026c44,1, +0x026c4c,1, +0x026c84,1, +0x026c8c,4, +0x026cc4,1, +0x026ccc,4, +0x026d00,2, +0x028800,2, +0x028844,1, +0x02884c,4, +0x029004,7, +0x029b30,2, +0x029b50,4, +0x02a004,1, +0x02a00c,4, +0x02a040,6, +0x02a200,1, +0x02a210,11, +0x02a240,8, +0x02a484,1, +0x02a4c0,16, +0x02a780,1, +0x02a7a0,4, +0x02a7c0,1, +0x02a900,1, +0x02aa04,1, +0x02aa0c,4, +0x02ab00,40, +0x02aba4,1, +0x02abac,1, +0x02abb4,1, +0x02abbc,1, +0x02abc4,1, +0x02abcc,1, +0x02abe0,4, +0x02abf4,2, +0x02ac00,2, +0x02ac10,3, +0x02ac44,3, +0x02ad00,1, +0x02ad08,1, +0x02ad10,1, +0x02ad18,1, +0x02ad20,1, +0x02ad28,1, +0x02ad30,1, +0x02ad38,1, +0x02ad40,1, +0x02ad48,1, +0x02ad50,1, +0x02ad58,1, +0x02ad60,1, +0x02ad68,1, +0x02ad70,1, +0x02ad78,1, +0x02ad80,1, +0x02ad88,1, +0x02ad90,1, +0x02ad98,1, +0x02ada0,1, +0x02ada8,1, +0x02adb0,1, +0x02adb8,1, +0x02adc0,1, +0x02adc8,1, +0x02add0,1, +0x02add8,1, +0x02ade0,1, +0x02ade8,1, +0x02adf0,1, +0x02adf8,1, +0x02ae00,6, +0x02ae20,5, +0x02ae40,4, +0x02c000,6, +0x02c100,5, +0x02c204,1, +0x02c214,3, +0x02c224,1, +0x02c22c,4, +0x02c244,2, +0x02c250,5, +0x02c400,2, +0x02c428,2, +0x02c450,2, +0x02c478,2, +0x02c4a0,21, +0x02c5ac,1, +0x02c5d8,4, +0x02c600,6, +0x02c620,6, +0x02c640,6, +0x02c660,6, +0x02c680,3, +0x02c800,3, +0x02c820,6, +0x02c840,6, +0x02c860,6, +0x02c880,6, +0x02c8a0,6, +0x02c8c0,6, +0x02c8e0,6, +0x02c900,6, +0x02c920,6, +0x02c940,6, +0x02c960,6, +0x02c980,6, +0x02c9a0,6, +0x02c9c0,6, +0x02c9e0,6, +0x02ca00,6, +0x02ca20,6, +0x02ca40,6, +0x02ca60,6, +0x02ca80,6, +0x02caa0,6, +0x02cac0,6, +0x02cae0,6, +0x02cb00,6, +0x02cb20,6, +0x02cc48,4, +0x02cd00,9, +0x02cd40,18, +0x030004,2, +0x030034,19, +0x030084,2, +0x0300bc,17, +0x030104,2, +0x030138,27, +0x030310,3, +0x030340,2, +0x03034c,2, +0x030384,1, +0x0303c0,16, +0x030404,1, +0x03040c,4, +0x030804,1, +0x03080c,4, +0x030c04,1, +0x030c0c,4, +0x030c40,4, +0x031000,11, +0x031100,11, +0x031200,17, +0x031280,6, +0x031304,1, +0x03130c,5, +0x031400,6, +0x031420,1, +0x031444,2, +0x031454,3, +0x031464,2, +0x031474,11, +0x031500,7, +0x031520,6, +0x031540,8, +0x031600,13, +0x031640,6, +0x031700,2, +0x034200,24, +0x034280,10, +0x0342ac,2, +0x0342c0,6, +0x0342f0,39, +0x034600,24, +0x034680,10, +0x0346ac,2, +0x0346c0,6, +0x0346f0,39, +0x034c00,6, +0x034c20,4, +0x034c40,9, +0x034c80,9, +0x034e04,2, +0x034e10,4, +0x034e44,1, +0x034e4c,4, +0x034e80,6, +0x034f04,1, +0x034f18,11, +0x034f80,2, +0x035000,2, +0x035010,3, +0x035044,3, +0x035100,66, +0x035210,3, +0x035244,3, +0x035300,64, +0x035404,1, +0x03540c,8, +0x037000,6, +0x03702c,7, +0x037080,10, +0x0370ac,4, +0x037100,4, +0x037200,2, +0x037210,3, +0x037244,3, +0x037300,70, +0x03742c,7, +0x037480,10, +0x0374ac,4, +0x037500,4, +0x037600,2, +0x037610,3, +0x037644,3, +0x037700,69, +0x037818,4, +0x038000,3, +0x038104,3, +0x03813c,2, +0x038150,3, +0x038400,1, +0x038428,1, +0x038450,1, +0x038478,1, +0x0384a0,20, +0x0385ac,1, +0x0385d8,4, +0x038600,6, +0x038620,6, +0x038640,3, +0x038800,3, +0x038820,6, +0x038840,6, +0x038860,6, +0x038880,6, +0x0388a0,6, +0x0388c0,6, +0x038900,28, +0x038978,1, +0x038a40,25, +0x038ac0,16, +0x039000,35, +0x039090,3, +0x039100,35, +0x039190,3, +0x039200,35, +0x039290,3, +0x039300,35, +0x039390,3, +0x039400,35, +0x039490,3, +0x039500,1, +0x039800,3, +0x039884,1, +0x0398c0,16, +0x039904,2, +0x039934,20, +0x039a04,2, +0x039a10,4, +0x039a24,2, +0x039a30,4, +0x039a44,2, +0x039a50,4, +0x039a64,2, +0x039a70,8, +0x039c00,7, +0x039c20,6, +0x039c40,8, +0x039d00,11, +0x039d40,11, +0x039d84,1, +0x039dc0,26, +0x039e30,2, +0x039e44,3, +0x039e54,1, +0x039e5c,2, +0x039e80,2, +0x039e90,3, +0x039ea4,1, +0x039eac,3, +0x039ec0,3, +0x039f00,9, +0x039f40,22, +0x039fa0,6, +0x039fc0,8, +0x03c000,3, +0x03c010,3, +0x03c020,3, +0x03c040,9, +0x03c068,6, +0x03c090,2, +0x03c0a0,3, +0x03c0c0,12, +0x03c0f4,1, +0x03c100,2, +0x03c110,3, +0x03c120,1, +0x03c130,11, +0x03c160,2, +0x03c180,4, +0x03c194,3, +0x03c1a4,2, +0x03c1b0,4, +0x03c2e0,5, +0x03c2f8,2, +0x03c30c,13, +0x03c34c,77, +0x03c48c,18, +0x03c500,32, +0x03c800,16, +0x03c84c,18, +0x03c8e0,2, +0x03c8ec,3, +0x03ca78,34, +0x03cb3c,18, +0x03cb94,3, +0x03cba4,3, +0x03cbf0,1, +0x03cbf8,10, +0x03cc30,1, +0x03cc44,4, +0x03cc60,1, +0x03cc80,1, +0x03cc90,1, +0x03d004,6, +0x03e004,1, +0x03e00c,4, +0x03e404,1, +0x03e40c,4, +0x03e604,1, +0x03e60c,4, +0x03e800,1, +0x03f034,19, +0x03f084,2, +0x03f0c0,16, +0x03f200,1, +0x03f210,1, +0x03f300,6, +0x03f320,6, +0x03f380,9, +0x03f3c0,16, +0x050000,1, +0x050008,2, +0x050044,8, +0x050104,1, +0x050178,34, +0x050204,1, +0x05020c,1, +0x050214,1, +0x050224,1, +0x05022c,1, +0x050234,1, +0x05023c,1, +0x050244,1, +0x05024c,1, +0x050254,1, +0x050264,3, +0x050280,2, +0x0502b0,2, +0x0502c4,1, +0x0502cc,1, +0x0502d4,1, +0x0502dc,1, +0x0502e4,1, +0x0502ec,1, +0x0502f4,1, +0x0502fc,1, +0x050304,1, +0x05030c,1, +0x050314,3, +0x050324,3, +0x050334,6, +0x050380,32, +0x050404,1, +0x050438,18, +0x050500,2, +0x050544,1, +0x05054c,4, +0x050584,2, +0x050598,2, +0x0505a4,1, +0x0505b0,4, +0x0505c4,1, +0x0505cc,1, +0x0505d4,1, +0x0505e0,1, +0x0505f0,17, +0x050700,2, +0x050800,1, +0x050820,9, +0x050850,5, +0x050870,5, +0x0508c4,3, +0x0508d4,3, +0x0508e4,3, +0x0508f4,4, +0x050910,5, +0x050930,4, +0x050944,1, +0x05094c,47, +0x050a40,1, +0x050a50,28, +0x050ac4,1, +0x050acc,2, +0x050ad8,10, +0x050b04,1, +0x050b0c,1, +0x050b14,1, +0x050b20,9, +0x050b50,4, +0x050b64,1, +0x050b70,6, +0x050b8c,4, +0x050ba4,4, +0x050bc0,1, +0x050bd0,1, +0x050be0,1, +0x050bf0,1, +0x050c00,1, +0x050c14,1, +0x050c1c,1, +0x050c24,1, +0x050c2c,1, +0x050c34,1, +0x050c3c,1, +0x050c44,1, +0x050c4c,1, +0x050c54,4, +0x050c70,1, +0x050c80,1, +0x050c90,1, +0x050ca0,1, +0x050cb0,1, +0x050cc0,1, +0x050cd0,1, +0x050ce0,1, +0x050cf0,1, +0x050d00,1, +0x050d10,1, +0x050d20,1, +0x050d30,1, +0x050d40,1, +0x050d50,1, +0x050d60,1, +0x050d70,1, +0x050d80,1, +0x050d90,1, +0x050da0,1, +0x052000,192, +0x052800,2, +0x053000,51, +0x053400,3, +0x053420,6, +0x053440,6, +0x053460,6, +0x053480,6, +0x0534a0,6, +0x0534c0,6, +0x0534e0,6, +0x053500,6, +0x053520,6, +0x053540,6, +0x053560,6, +0x053614,11, +0x053654,11, +0x0536d4,11, +0x053704,1, +0x053740,18, +0x0537a0,10, +0x0537e0,29, +0x053860,10, +0x054204,1, +0x05420c,1, +0x054214,1, +0x054224,1, +0x05422c,1, +0x054234,1, +0x054244,1, +0x05424c,3, +0x054304,1, +0x054340,16, +0x0543a0,1, +0x0543b0,1, +0x0543c0,1, +0x0543d0,4, +0x054400,8, +0x054440,10, +0x054820,3, +0x054928,9, +0x054954,4, +0x054970,1, +0x054980,1, +0x054990,3, +0x0549c4,13, +0x054a04,1, +0x054a0c,4, +0x054a40,1, +0x054a50,5, +0x054a70,1, +0x054a80,1, +0x054a90,2, +0x054c04,1, +0x054c0c,4, +0x054c40,1, +0x054c50,4, +0x054d40,1, +0x054d80,7, +0x054e04,1, +0x054e0c,4, +0x054e40,1, +0x054e50,4, +0x054f40,1, +0x054f80,7, +0x055000,11, +0x055050,7, +0x055070,16, +0x0550b8,8, +0x055200,13, +0x055240,11, +0x055300,16, +0x055400,3, +0x055420,6, +0x055440,6, +0x055460,6, +0x055480,6, +0x0554a0,6, +0x0554c0,6, +0x0554e0,6, +0x055500,6, +0x055520,6, +0x055540,6, +0x055560,6, +0x055580,6, +0x0555a0,6, +0x0555c0,6, +0x0555e0,6, +0x055600,6, +0x055620,6, +0x055640,6, +0x055660,6, +0x056000,2, +0x056044,1, +0x05604c,4, +0x056800,2, +0x056844,1, +0x05684c,4, +0x057004,7, +0x057b20,2, +0x057b30,2, +0x057b50,5, +0x058004,1, +0x05800c,4, +0x058800,7, +0x058820,6, +0x058844,2, +0x058864,9, +0x058890,1, +0x0588a0,1, +0x0588b0,1, +0x0588c0,1, +0x0588d0,1, +0x058904,3, +0x058978,66, +0x058a84,1, +0x058a8c,1, +0x058a94,1, +0x058aa0,2, +0x058ff0,4, +0x059004,1, +0x05900c,4, +0x059080,39, +0x059120,1, +0x059130,1, +0x059140,1, +0x059150,1, +0x059160,1, +0x059800,1, +0x059810,1, +0x059820,1, +0x059830,1, +0x059840,1, +0x059850,1, +0x059860,1, +0x059870,1, +0x059880,1, +0x059890,1, +0x0598a0,1, +0x0598d4,2, +0x0598e0,1, +0x059900,3, +0x059980,9, +0x0599c0,32, +0x059a44,3, +0x059a54,1, +0x059a5c,1, +0x059c00,2, +0x059c28,2, +0x059c50,2, +0x059c78,2, +0x059ca0,18, +0x059dac,1, +0x059dd8,4, +0x059e00,6, +0x059e20,6, +0x059e40,6, +0x059e60,6, +0x059e80,3, +0x05a000,4, +0x05a020,2, +0x05a030,1, +0x05a04c,2, +0x05a070,4, +0x05a088,3, +0x05a0a0,1, +0x05a0b0,1, +0x05a0c0,1, +0x060020,4, +0x060120,4, +0x060144,2, +0x060154,7, +0x060174,1, +0x06017c,3, +0x06018c,1, +0x0601a0,4, +0x0601b8,2, +0x0601c4,2, +0x0601e4,7, +0x060204,1, +0x06020c,4, +0x060240,16, +0x060304,1, +0x06030c,1, +0x060400,2, +0x060420,3, +0x060430,1, +0x060440,1, +0x060484,2, +0x0604b8,18, +0x060504,1, +0x06050c,1, +0x060514,1, +0x060900,1, +0x060914,1, +0x06091c,2, +0x060930,1, +0x060a00,32, +0x060a84,1, +0x060a8c,1, +0x060a94,1, +0x060a9c,1, +0x060bf0,3, +0x060c00,11, +0x060c30,3, +0x061004,1, +0x061010,1, +0x061018,4, +0x061044,2, +0x061054,3, +0x061100,32, +0x061200,1, +0x061404,1, +0x06140c,4, +0x061440,2, +0x061468,2, +0x061478,2, +0x06180c,8, +0x061908,6, +0x061928,6, +0x061968,6, +0x061988,6, +0x0619a8,6, +0x0619e8,14, +0x062008,5, +0x062024,3, +0x062034,1, +0x06203c,1, +0x062044,1, +0x06204c,1, +0x062054,1, +0x06205c,3, +0x06206c,1, +0x062080,2, +0x062094,1, +0x06209c,2, +0x0620b0,1, +0x0620c0,1, +0x0620d0,1, +0x0620e0,1, +0x0620f4,4, +0x0621c0,2, +0x0621e4,3, +0x0621f4,3, +0x062404,1, +0x06240c,4, +0x062800,12, +0x062834,1, +0x06283c,5, +0x062854,1, +0x062900,3, +0x062914,1, +0x06291c,1, +0x062924,1, +0x06292c,1, +0x062934,1, +0x06293c,2, +0x062950,3, +0x062960,2, +0x063000,1, +0x063010,4, +0x063024,1, +0x06302c,1, +0x063034,1, +0x063044,1, +0x06304c,1, +0x063054,1, +0x06305c,2, +0x063070,1, +0x063080,1, +0x063090,1, +0x0630a4,3, +0x063100,2, +0x063144,1, +0x06314c,1, +0x063154,1, +0x063164,1, +0x06316c,1, +0x063174,1, +0x063180,16, +0x063208,1, +0x063210,1, +0x063218,1, +0x063224,3, +0x063240,10, +0x063300,8, +0x064004,1, +0x06400c,4, +0x064200,3, +0x064300,1, +0x064308,6, +0x064324,2, +0x064338,2, +0x064380,2, +0x064394,1, +0x06439c,2, +0x064400,2, +0x064420,3, +0x064430,1, +0x064440,1, +0x064484,2, +0x0644b8,18, +0x064504,1, +0x06450c,1, +0x064514,1, +0x064804,1, +0x064884,2, +0x0648c8,14, +0x065018,2, +0x065080,9, +0x0650c0,16, +0x065104,3, +0x065114,1, +0x065200,3, +0x065220,6, +0x065240,6, +0x065260,6, +0x065280,6, +0x065300,1, +0x065f00,2, +0x066000,2, +0x066028,2, +0x066050,2, +0x066078,2, +0x0660a0,26, +0x0661ac,1, +0x0661d8,4, +0x066200,6, +0x066220,6, +0x066240,6, +0x066260,6, +0x066280,3, +0x066400,6, +0x066500,17, +0x066550,8, +0x066574,3, +0x070004,1, +0x07000c,4, +0x070400,7, +0x070420,11, +0x070500,5, +0x070524,1, +0x07052c,1, +0x070534,1, +0x070540,4, +0x070600,142, +0x070884,2, +0x0708b4,19, +0x070904,1, +0x070940,16, +0x071000,1, +0x071094,1, +0x071104,2, +0x071140,16, +0x071204,1, +0x07120c,4, +0x071404,1, +0x07140c,1, +0x071414,1, +0x07141c,1, +0x071424,1, +0x07142c,1, +0x071434,1, +0x07143c,1, +0x071800,2, +0x071904,1, +0x071940,16, +0x071a04,1, +0x071a40,16, +0x071b04,1, +0x071b40,16, +0x072000,3, +0x072804,1, +0x07280c,4, +0x072880,1, +0x072888,3, +0x073000,1, +0x073020,1, +0x073040,1, +0x073060,1, +0x073080,1, +0x0730a0,1, +0x0730c0,1, +0x0730e0,1, +0x073100,1, +0x073120,1, +0x073140,1, +0x073160,1, +0x073180,1, +0x0731a0,1, +0x0731c0,1, +0x0731e0,1, +0x073200,1, +0x073220,1, +0x073240,1, +0x073260,1, +0x073280,1, +0x0732a0,1, +0x0732c0,1, +0x0732e0,1, +0x073300,1, +0x073320,1, +0x073340,1, +0x073360,1, +0x073380,1, +0x0733a0,1, +0x0733c0,1, +0x0733e0,1, +0x073800,16, +0x074830,4, +0x074884,1, +0x074890,4, +0x074900,3, +0x074920,6, +0x074940,6, +0x074980,9, +0x0749c0,16, +0x075000,3, +0x075010,2, +0x075020,3, +0x075100,2, +0x080000,29, +0x080340,14, +0x08037c,3, +0x08038c,1, +0x0803c0,2, +0x0803e4,3, +0x0803f4,3, +0x080404,6, +0x080804,2, +0x080874,35, +0x081000,129, +0x081210,4, +0x081228,3, +0x081240,2, +0x081264,2, +0x081274,3, +0x081284,2, +0x081298,2, +0x0812a4,1, +0x0812b4,21, +0x081310,8, +0x081344,1, +0x08134c,1, +0x081354,1, +0x081364,2, +0x081370,4, +0x081384,2, +0x081390,4, +0x081404,2, +0x081478,34, +0x081504,2, +0x081518,14, +0x081580,5, +0x081598,2, +0x0815a4,10, +0x082000,29, +0x082340,14, +0x08237c,3, +0x08238c,1, +0x0823c0,2, +0x0823e4,3, +0x0823f4,3, +0x082404,1, +0x08240c,4, +0x082804,2, +0x082874,35, +0x082904,2, +0x082974,35, +0x083000,129, +0x083210,6, +0x083244,2, +0x083254,7, +0x083284,1, +0x08328c,1, +0x083294,1, +0x0832a4,1, +0x0832b4,19, +0x083304,2, +0x083310,4, +0x083324,2, +0x083330,14, +0x084000,29, +0x084340,14, +0x08437c,3, +0x08438c,1, +0x0843c0,2, +0x0843e4,3, +0x0843f4,3, +0x084404,1, +0x08440c,4, +0x084804,2, +0x084874,35, +0x084904,2, +0x084974,35, +0x085000,32, +0x085200,1, +0x085210,7, +0x085240,12, +0x085280,2, +0x0852a4,1, +0x0852b4,3, +0x085304,1, +0x08530c,1, +0x085314,1, +0x085324,2, +0x085334,3, +0x085344,2, +0x085358,2, +0x085364,2, +0x085378,2, +0x085384,2, +0x085398,2, +0x0853c0,23, +0x086000,2, +0x086020,2, +0x086040,1, +0x086400,11, +0x086800,3, +0x086820,6, +0x086840,6, +0x086860,6, +0x086880,6, +0x0868a0,6, +0x0868c0,6, +0x0868e0,6, +0x086900,9, +0x086940,16, +0x087000,26, +0x087100,1, +0x087108,1, +0x087110,1, +0x087118,1, +0x087120,1, +0x087128,1, +0x087130,1, +0x087138,1, +0x087140,1, +0x087148,1, +0x087150,1, +0x087158,1, +0x087160,1, +0x087168,1, +0x087170,1, +0x087178,1, +0x087180,10, +0x0871b0,9, +0x087200,1, +0x087208,1, +0x087210,3, +0x090000,17, +0x090060,2, +0x09006c,1, +0x090104,1, +0x090140,25, +0x0901a8,2, +0x0901c0,9, +0x0901e8,2, +0x090204,1, +0x090220,24, +0x090300,6, +0x090320,9, +0x090348,1, +0x090350,1, +0x090400,6, +0x090420,9, +0x090448,1, +0x090450,1, +0x090500,6, +0x090520,6, +0x090540,2, +0x090564,2, +0x090578,3, +0x091004,3, +0x091800,8, +0x091824,2, +0x091830,10, +0x091860,6, +0x092000,32, +0x093000,1, +0x093020,1, +0x093040,1, +0x093060,1, +0x093080,1, +0x0930a0,1, +0x0930c0,1, +0x0930e0,1, +0x093100,1, +0x0931a0,1, +0x0931c0,1, +0x093200,3, +0x093404,1, +0x093440,16, +0x093504,1, +0x09353c,28, +0x0935b0,2, +0x0935c0,3, +0x094000,9, +0x094040,19, +0x0940c0,1, +0x094800,1, +0x094828,1, +0x094850,1, +0x094878,1, +0x0948a0,8, +0x0949ac,1, +0x0949d8,4, +0x094a00,6, +0x094a20,6, +0x094a40,3, +0x096000,1, +0x096010,4, +0x096028,3, +0x096104,1, +0x09610c,7, +0x096204,1, +0x09620c,4, +0x096488,1, +0x096498,3, +0x0964b0,4, +0x096504,1, +0x09650c,4, +0x096584,4, +0x096600,16, +0x096644,2, +0x096658,10, +0x096684,2, +0x0966bc,51, +0x096800,11, +0x096884,3, +0x0968a0,12, +0x097100,6, +0x097120,1, +0x0a2004,1, +0x0a200c,4, +0x0a2400,2, +0x0a240c,6, +0x0a2440,1, +0x0a2450,4, +0x0a2468,3, +0x0a2480,1, +0x0a24a0,10, +0x0a24d0,9, +0x0a2804,1, +0x0a280c,4, +0x0a2c00,2, +0x0a2c0c,2, +0x0a2c40,1, +0x0a2c50,4, +0x0a2c68,3, +0x0a2c88,2, +0x0a2cf0,1, +0x0a3004,1, +0x0a300c,4, +0x0a3040,2, +0x0a3064,3, +0x0a3074,3, +0x0a3200,9, +0x0a3230,2, +0x0a323c,2, +0x0a3248,4, +0x0a3400,1, +0x0a3408,3, +0x0a3418,4, +0x0a3430,2, +0x0a343c,1, +0x0a3480,1, +0x0a3490,1, +0x0a3504,1, +0x0a3510,76, +0x0a4000,48, +0x0a4100,3, +0x0a4110,6, +0x0a412c,4, +0x0a4140,1, +0x0a4304,1, +0x0a4318,10, +0x0a4804,1, +0x0a480c,4, +0x0a4840,2, +0x0a4864,3, +0x0a4874,3, +0x0a4c04,2, +0x0a4c10,2, +0x0a4c1c,6, +0x0a4c38,2, +0x0a4c50,8, +0x0a4c78,19, +0x0a4d04,2, +0x0a4d40,21, +0x0a4da4,1, +0x0a4dac,1, +0x0a4db4,1, +0x0a4dc0,1, +0x0a5000,14, +0x0a6000,1, +0x0a6028,1, +0x0a6050,1, +0x0a6078,1, +0x0a60a0,18, +0x0a61ac,1, +0x0a61d8,4, +0x0a6200,6, +0x0a6220,6, +0x0a6240,3, +0x0a6400,3, +0x0a6420,6, +0x0a6440,6, +0x0a6460,6, +0x0a6480,6, +0x0a64a0,6, +0x0a64c0,6, +0x0a6500,9, +0x0a6540,18, +0x0a65c0,2, +0x0a65cc,1, +0x0a8000,10, +0x0a802c,15, +0x0a806c,5, +0x0a8700,17, +0x0a8750,4, +0x0a8800,4, +0x0a8880,1, +0x0a88a0,1, +0x0a88c0,1, +0x0a8900,1, +0x0a8960,1, +0x0a8980,4, +0x0a89a4,3, +0x0a89c0,1, +0x0a8a00,4, +0x0a8ad4,10, +0x0a8b00,2, +0x0a8b80,4, +0x0a9804,1, +0x0a980c,4, +0x0a9f00,6, +0x0a9f20,6, +0x0a9f40,6, +0x0a9f60,6, +0x0a9f80,9, +0x0a9fc0,16, +0x0aa020,1, +0x0aa028,2, +0x0b0000,2, +0x0b0010,4, +0x0b1000,15, +0x0b1040,10, +0x0b1080,20, +0x0b1100,2, +0x0b1110,2, +0x0b1120,2, +0x0b1160,2, +0x0b116c,1, +0x0b1180,3, +0x0b1190,3, +0x0b11a0,3, +0x0b11e0,2, +0x0b11ec,1, +0x0b1200,2, +0x0b1210,2, +0x0b1260,2, +0x0b126c,1, +0x0b1280,3, +0x0b1290,3, +0x0b12e0,2, +0x0b12ec,1, +0x0b1300,2, +0x0b1310,2, +0x0b1320,2, +0x0b1360,2, +0x0b136c,1, +0x0b1380,3, +0x0b1390,3, +0x0b13e0,2, +0x0b13ec,1, +0x0b1400,3, +0x0b1410,3, +0x0b1460,2, +0x0b146c,1, +0x0b1480,3, +0x0b1490,7, +0x0b14b0,4, +0x0b14e0,2, +0x0b14ec,1, +0x0b1500,3, +0x0b1510,3, +0x0b1560,2, +0x0b156c,1, +0x0b1580,2, +0x0b1590,2, +0x0b15e0,2, +0x0b15ec,1, +0x0b1600,3, +0x0b1610,3, +0x0b1660,2, +0x0b166c,1, +0x0b1680,3, +0x0b1690,3, +0x0b16e0,2, +0x0b16ec,1, +0x0b1700,8, +0x0b1760,2, +0x0b176c,1, +0x0b1780,3, +0x0b1790,3, +0x0b17e0,2, +0x0b17ec,1, +0x0b1800,9, +0x0b1840,16, +0x0b2000,2, +0x0b2010,37, +0x0b20c0,49, +0x0b2200,2, +0x0b2210,37, +0x0b22c0,49, +0x0b2400,2, +0x0b2410,37, +0x0b24c0,49, +0x0b2600,2, +0x0b2610,37, +0x0b26c0,49, +0x0b2800,2, +0x0b2810,37, +0x0b28c0,49, +0x0b2a00,2, +0x0b2a10,37, +0x0b2ac0,49, +0x0b2c00,2, +0x0b2c10,37, +0x0b2cc0,49, +0x0b2e00,2, +0x0b2e10,37, +0x0b2ec0,49, +0x0b3000,1, +0x0b3010,1, +0x0b4000,157, +0x0b4278,26, +0x0b4300,9, +0x0b4404,1, +0x0b440c,4, +0x0b4800,73, +0x0b4940,20, +0x0b49a0,4, +0x0b49c4,5, +0x0b4a00,1, +0x0b4a20,8, +0x0b4a44,3, +0x0b5000,7, +0x0b5040,12, +0x0b5100,9, +0x0b5140,16, +0x0b6000,3, +0x0b6028,3, +0x0b6050,3, +0x0b6078,3, +0x0b60a0,6, +0x0b61ac,1, +0x0b61d8,4, +0x0b6200,6, +0x0b6220,6, +0x0b6240,6, +0x0b6260,6, +0x0b6280,6, +0x0b62a0,6, +0x0b62c0,3, +0x0b7800,3, +0x0b7820,6, +0x0b7840,6, +0x0b7860,6, +0x0b7880,6, +0x0b78a0,6, +0x0b78c0,6, +0x0b78e0,6, +0x0b7900,6, +0x0d0000,5, +0x0d0038,4, +0x0d0050,4, +0x0d0080,3, +0x0d00a0,6, +0x0d00c0,6, +0x0d0100,3, +0x0d0120,6, +0x0d0140,6, +0x0d0180,14, +0x0d01c0,6, +0x0d1000,2, +0x0d100c,1, +0x0d1020,13, +0x0d1058,1, +0x0d1060,6, +0x0d1080,1, +0x0d1100,2, +0x0d110c,1, +0x0d1120,13, +0x0d1158,1, +0x0d1160,6, +0x0d1180,1, +0x0d1200,2, +0x0d120c,1, +0x0d1220,13, +0x0d1258,1, +0x0d1260,6, +0x0d1280,1, +0x0d1300,2, +0x0d130c,1, +0x0d1320,13, +0x0d1358,1, +0x0d1360,6, +0x0d1380,1, +0x0d1400,3, +0x0d1410,10, +0x0d1440,1, +0x0d1450,6, +0x0d1484,6, +0x0d14a0,6, +0x0d1504,25, +0x0d1580,14, +0x0d15c0,4, +0x0d1600,6, +0x0d1620,6, +0x0d1640,3, +0x0d1660,6, +0x0d1700,2, +0x0d170c,3, +0x0d1720,6, +0x0d1800,11, +0x0d1830,7, +0x0d1850,7, +0x0d1880,5, +0x0d18a0,3, +0x0d18c0,7, +0x0d1a00,1, +0x0d1a08,13, +0x0d1a40,11, +0x0d1c00,24, +0x0d1c64,5, +0x0d1c80,3, +0x0d1c90,2, +0x0d1d00,15, +0x0d1d40,16, +0x0d1d90,4, +0x0d1dc0,12, +0x0d1e00,1, +0x0d1e20,1, +0x0d1e28,12, +0x0d1e5c,1, +0x0d1e80,6, +0x0d1f00,14, +0x0d2000,2, +0x0d200c,1, +0x0d2020,13, +0x0d2058,1, +0x0d2060,6, +0x0d2080,1, +0x0d2100,2, +0x0d210c,1, +0x0d2120,13, +0x0d2158,1, +0x0d2160,6, +0x0d2180,1, +0x0d2200,2, +0x0d220c,1, +0x0d2220,13, +0x0d2258,1, +0x0d2260,6, +0x0d2280,1, +0x0d2300,2, +0x0d230c,1, +0x0d2320,13, +0x0d2358,1, +0x0d2360,6, +0x0d2380,1, +0x0d2400,3, +0x0d2410,10, +0x0d2440,1, +0x0d2450,6, +0x0d2484,6, +0x0d24a0,6, +0x0d2504,25, +0x0d2580,14, +0x0d25c0,4, +0x0d2600,6, +0x0d2620,6, +0x0d2640,3, +0x0d2660,6, +0x0d2700,2, +0x0d270c,3, +0x0d2720,6, +0x0d2800,11, +0x0d2830,7, +0x0d2850,7, +0x0d2880,5, +0x0d28a0,3, +0x0d28c0,7, +0x0d2a00,1, +0x0d2a08,13, +0x0d2a40,11, +0x0d2c00,24, +0x0d2c64,5, +0x0d2c80,3, +0x0d2c90,2, +0x0d2d00,15, +0x0d2d40,16, +0x0d2d90,4, +0x0d2dc0,12, +0x0d2e00,1, +0x0d2e20,1, +0x0d2e28,12, +0x0d2e5c,1, +0x0d2e80,6, +0x0d2f00,14, +0x0d3000,2, +0x0d3400,1, +0x0d3428,1, +0x0d3450,1, +0x0d3478,1, +0x0d34a0,5, +0x0d35ac,1, +0x0d35d8,4, +0x0d3600,6, +0x0d3620,6, +0x0d3640,3, +0x0d3e00,3, +0x0d3e20,6, +0x0d3e40,6, +0x0d3e80,3, +0x0d3e90,1, +0x0d4000,29, +0x0d4078,4, +0x0d4090,2, +0x0d40a0,7, +0x0d40c0,11, +0x0d4100,14, +0x0d4140,14, +0x0d4180,61, +0x0d4278,4, +0x0d4290,2, +0x0d42a0,7, +0x0d42c0,11, +0x0d4300,14, +0x0d4340,14, +0x0d4380,61, +0x0d4478,4, +0x0d4490,2, +0x0d44a0,7, +0x0d44c0,11, +0x0d4500,14, +0x0d4540,14, +0x0d4580,61, +0x0d4678,4, +0x0d4690,2, +0x0d46a0,7, +0x0d46c0,11, +0x0d4700,14, +0x0d4740,14, +0x0d4780,62, +0x0d487c,6, +0x0d4c00,6, +0x0d4c40,14, +0x0d4c80,9, +0x0d4d00,9, +0x0d4d2c,1, +0x0d4d40,3, +0x0d4d60,1, +0x0d4d80,3, +0x0d4e00,2, +0x0d4e0c,1, +0x0d4e14,5, +0x0d4e2c,1, +0x0d4e34,5, +0x0d4e4c,1, +0x0d4e54,5, +0x0d4e6c,1, +0x0d4e74,5, +0x0d4e8c,1, +0x0d4e94,5, +0x0d4eac,1, +0x0d4eb4,3, +0x0d5000,29, +0x0d5078,4, +0x0d5090,2, +0x0d50a0,7, +0x0d50c0,11, +0x0d5100,14, +0x0d5140,14, +0x0d5180,61, +0x0d5278,4, +0x0d5290,2, +0x0d52a0,7, +0x0d52c0,11, +0x0d5300,14, +0x0d5340,14, +0x0d5380,61, +0x0d5478,4, +0x0d5490,2, +0x0d54a0,7, +0x0d54c0,11, +0x0d5500,14, +0x0d5540,14, +0x0d5580,61, +0x0d5678,4, +0x0d5690,2, +0x0d56a0,7, +0x0d56c0,11, +0x0d5700,14, +0x0d5740,14, +0x0d5780,62, +0x0d587c,6, +0x0d5c00,6, +0x0d5c40,14, +0x0d5c80,9, +0x0d5d00,9, +0x0d5d2c,1, +0x0d5d40,3, +0x0d5d60,1, +0x0d5d80,3, +0x0d5e00,2, +0x0d5e0c,1, +0x0d5e14,5, +0x0d5e2c,1, +0x0d5e34,5, +0x0d5e4c,1, +0x0d5e54,5, +0x0d5e6c,1, +0x0d5e74,5, +0x0d5e8c,1, +0x0d5e94,5, +0x0d5eac,1, +0x0d5eb4,3, +0x0d6000,15, +0x0d6070,3, +0x0d6080,6, +0x0d6100,9, +0x0d6204,8, +0x0d6240,13, +0x0d6280,16, +0x0d6400,8, +0x0d6424,15, +0x0d6464,15, +0x0d64a4,15, +0x0d64e4,30, +0x0d6580,10, +0x0d65ac,1, +0x0d65b4,5, +0x0d65cc,1, +0x0d65d4,5, +0x0d65ec,1, +0x0d65f4,13, +0x0d6680,4, +0x0d6694,2, +0x0d66a0,5, +0x0d66c0,5, +0x0d66e0,4, +0x0d6800,19, +0x0d6850,10, +0x0d6880,19, +0x0d68d0,10, +0x0d6900,19, +0x0d6950,10, +0x0d6980,19, +0x0d69d0,10, +0x0d6a00,19, +0x0d6a50,10, +0x0d6a80,19, +0x0d6ad0,10, +0x0d6c00,19, +0x0d6c50,10, +0x0d6c84,1, +0x0d6c94,8, +0x0d6cb8,9, +0x0d6ce0,4, +0x0d7000,9, +0x0d7040,16, +0x0d8000,6, +0x0d8020,3, +0x0d8030,3, +0x0d8040,6, +0x0d8060,17, +0x0d80c0,38, +0x0d8180,1, +0x0d8400,2, +0x0d8428,2, +0x0d8450,2, +0x0d8478,2, +0x0d84a0,16, +0x0d85ac,1, +0x0d85d8,4, +0x0d8600,6, +0x0d8620,6, +0x0d8640,6, +0x0d8660,6, +0x0d8680,3, +0x0d8800,2, +0x0d9000,35, +0x0d9100,26, +0x0d916c,7, +0x0d91a0,1, +0x0d91c0,9, +0x0d91e8,1, +0x0d9200,6, +0x0d9220,6, +0x0d9248,4, +0x0d9280,6, +0x0d929c,1, +0x0d92a4,2, +0x0d92b8,9, +0x0d9304,4, +0x0d9328,3, +0x0d9340,6, +0x0d9400,1, +0x0d9408,1, +0x0d9410,2, +0x0d9424,2, +0x0d9444,1, +0x0d9480,27, +0x0d9500,6, +0x0d9520,12, +0x0d9700,7, +0x0d9744,9, +0x0d976c,2, +0x0d9780,6, +0x0d97a0,2, +0x0d9800,35, +0x0d9900,26, +0x0d996c,7, +0x0d99a0,1, +0x0d99c0,9, +0x0d99e8,1, +0x0d9a00,6, +0x0d9a20,6, +0x0d9a48,4, +0x0d9a80,6, +0x0d9a9c,1, +0x0d9aa4,2, +0x0d9ab8,9, +0x0d9b04,4, +0x0d9b28,3, +0x0d9b40,6, +0x0d9c00,1, +0x0d9c08,1, +0x0d9c10,2, +0x0d9c24,2, +0x0d9c44,1, +0x0d9c80,27, +0x0d9d00,6, +0x0d9d20,12, +0x0d9f00,7, +0x0d9f44,9, +0x0d9f6c,2, +0x0d9f80,6, +0x0d9fa0,2, +0x0db000,1028, +0x0dc018,18, +0x0dc100,4, +0x0dc118,18, +0x0dc200,12, +0x0dc300,6, +0x0dc320,5, +0x0dc340,6, +0x0dc360,5, +0x0dc380,6, +0x0dc400,9, +0x0dc440,26, +0x0dc4c4,1, +0x0dc4cc,1, +0x0dc4d4,1, +0x0dc50c,7, +0x0dc544,2, +0x0dc55c,9, +0x0dc584,7, +0x0dc5a4,2, +0x0dc5b8,2, +0x0dc5c4,2, +0x0dc5d8,2, +0x0dc600,2, +0x0dcfbc,15, +0x0dd000,7, +0x0dd020,6, +0x0dd040,8, +0x0dd104,1, +0x0dd10c,1, +0x0dd200,8, +0x0dd244,2, +0x0dd268,18, +0x0dd404,1, +0x0dd440,40, +0x0dd504,3, +0x0dd514,3, +0x0dd524,3, +0x0dd534,3, +0x0dd544,3, +0x0dd554,3, +0x0dd564,3, +0x0dd574,3, +0x0dd584,3, +0x0dd594,3, +0x0dd5a4,3, +0x0dd5b4,3, +0x0dd604,2, +0x0dd640,16, +0x0dd684,3, +0x0dd704,2, +0x0dd740,18, +0x0ddc00,4, +0x0ddc80,1, +0x0ddd00,6, +0x0ddd20,6, +0x0ddd40,6, +0x0ddd80,1, +0x0dde00,3, +0x0dde20,10, +0x0dde50,6, +0x0dde80,9, +0x0ddec0,16, +0x0de000,123, +0x0de200,2, +0x0de20c,3, +0x0de220,2, +0x0de22c,3, +0x0de240,2, +0x0de24c,3, +0x0de260,2, +0x0de26c,3, +0x0de280,2, +0x0de28c,3, +0x0de2a0,2, +0x0de2ac,3, +0x0de2c0,2, +0x0de2cc,3, +0x0de2e0,2, +0x0de2ec,3, +0x0de300,2, +0x0de30c,3, +0x0de320,2, +0x0de32c,3, +0x0de340,2, +0x0de34c,3, +0x0de360,2, +0x0de36c,3, +0x0de380,2, +0x0de38c,3, +0x0de3a0,2, +0x0de3ac,3, +0x0de3c0,2, +0x0de3cc,3, +0x0de3e0,2, +0x0de3ec,3, +0x0de400,123, +0x0de600,2, +0x0de60c,3, +0x0de620,2, +0x0de62c,3, +0x0de640,2, +0x0de64c,3, +0x0de660,2, +0x0de66c,3, +0x0de680,2, +0x0de68c,3, +0x0de6a0,2, +0x0de6ac,3, +0x0de6c0,2, +0x0de6cc,3, +0x0de6e0,2, +0x0de6ec,3, +0x0de700,2, +0x0de70c,3, +0x0de720,2, +0x0de72c,3, +0x0de740,2, +0x0de74c,3, +0x0de760,2, +0x0de76c,3, +0x0de780,2, +0x0de78c,3, +0x0de7a0,2, +0x0de7ac,3, +0x0de7c0,2, +0x0de7cc,3, +0x0de7e0,2, +0x0de7ec,3, +0x0de800,123, +0x0dea00,2, +0x0dea0c,3, +0x0dea20,2, +0x0dea2c,3, +0x0dea40,2, +0x0dea4c,3, +0x0dea60,2, +0x0dea6c,3, +0x0dea80,2, +0x0dea8c,3, +0x0deaa0,2, +0x0deaac,3, +0x0deac0,2, +0x0deacc,3, +0x0deae0,2, +0x0deaec,3, +0x0deb00,2, +0x0deb0c,3, +0x0deb20,2, +0x0deb2c,3, +0x0deb40,2, +0x0deb4c,3, +0x0deb60,2, +0x0deb6c,3, +0x0deb80,2, +0x0deb8c,3, +0x0deba0,2, +0x0debac,3, +0x0debc0,2, +0x0debcc,3, +0x0debe0,2, +0x0debec,3, +0x0dec00,123, +0x0dee00,2, +0x0dee0c,3, +0x0dee20,2, +0x0dee2c,3, +0x0dee40,2, +0x0dee4c,3, +0x0dee60,2, +0x0dee6c,3, +0x0dee80,2, +0x0dee8c,3, +0x0deea0,2, +0x0deeac,3, +0x0deec0,2, +0x0deecc,3, +0x0deee0,2, +0x0deeec,3, +0x0def00,2, +0x0def0c,3, +0x0def20,2, +0x0def2c,3, +0x0def40,2, +0x0def4c,3, +0x0def60,2, +0x0def6c,3, +0x0def80,2, +0x0def8c,3, +0x0defa0,2, +0x0defac,3, +0x0defc0,2, +0x0defcc,3, +0x0defe0,2, +0x0defec,3, +0x0df000,123, +0x0df200,2, +0x0df20c,3, +0x0df220,2, +0x0df22c,3, +0x0df240,2, +0x0df24c,3, +0x0df260,2, +0x0df26c,3, +0x0df280,2, +0x0df28c,3, +0x0df2a0,2, +0x0df2ac,3, +0x0df2c0,2, +0x0df2cc,3, +0x0df2e0,2, +0x0df2ec,3, +0x0df300,2, +0x0df30c,3, +0x0df320,2, +0x0df32c,3, +0x0df340,2, +0x0df34c,3, +0x0df360,2, +0x0df36c,3, +0x0df380,2, +0x0df38c,3, +0x0df3a0,2, +0x0df3ac,3, +0x0df3c0,2, +0x0df3cc,3, +0x0df3e0,2, +0x0df3ec,3, +0x0df400,2, +0x0e0000,3, +0x0e0010,4, +0x0e0028,3, +0x0e0048,2, +0x0e0058,2, +0x0e0064,32, +0x0e00f0,1, +0x0e00fc,35, +0x0e019c,15, +0x0e01e0,1, +0x0e01e8,5, +0x0e0204,5, +0x0e021c,1, +0x0e0300,16, +0x0e0400,3, +0x0e0410,4, +0x0e0428,3, +0x0e0448,2, +0x0e0458,2, +0x0e0464,32, +0x0e04f0,1, +0x0e04fc,35, +0x0e059c,15, +0x0e05e0,1, +0x0e05e8,5, +0x0e0604,5, +0x0e061c,1, +0x0e0700,16, +0x0e0800,3, +0x0e0810,4, +0x0e0828,3, +0x0e0848,2, +0x0e0858,2, +0x0e0864,32, +0x0e08f0,1, +0x0e08fc,35, +0x0e099c,15, +0x0e09e0,1, +0x0e09e8,5, +0x0e0a04,5, +0x0e0a1c,1, +0x0e0b00,16, +0x0e0c00,3, +0x0e0c10,4, +0x0e0c28,3, +0x0e0c48,2, +0x0e0c58,2, +0x0e0c64,32, +0x0e0cf0,1, +0x0e0cfc,35, +0x0e0d9c,15, +0x0e0de0,1, +0x0e0de8,5, +0x0e0e04,5, +0x0e0e1c,1, +0x0e0f00,16, +0x0e1000,3, +0x0e1010,4, +0x0e1028,3, +0x0e1048,2, +0x0e1058,2, +0x0e1064,32, +0x0e10f0,1, +0x0e10fc,35, +0x0e119c,15, +0x0e11e0,1, +0x0e11e8,5, +0x0e1204,5, +0x0e121c,1, +0x0e1300,16, +0x0e1400,3, +0x0e1410,4, +0x0e1428,3, +0x0e1448,2, +0x0e1458,2, +0x0e1464,32, +0x0e14f0,1, +0x0e14fc,35, +0x0e159c,15, +0x0e15e0,1, +0x0e15e8,5, +0x0e1604,5, +0x0e161c,1, +0x0e1700,16, +0x0e1800,3, +0x0e1810,4, +0x0e1828,3, +0x0e1848,2, +0x0e1858,2, +0x0e1864,32, +0x0e18f0,1, +0x0e18fc,35, +0x0e199c,15, +0x0e19e0,1, +0x0e19e8,5, +0x0e1a04,5, +0x0e1a1c,1, +0x0e1b00,16, +0x0e1c00,3, +0x0e1c10,4, +0x0e1c28,3, +0x0e1c48,2, +0x0e1c58,2, +0x0e1c64,32, +0x0e1cf0,1, +0x0e1cfc,35, +0x0e1d9c,15, +0x0e1de0,1, +0x0e1de8,5, +0x0e1e04,5, +0x0e1e1c,1, +0x0e1f00,16, +0x0e20c0,8, +0x0e20ec,5, +0x0e2108,3, +0x0e2200,5, +0x0e2218,36, +0x0e2300,6, +0x0e2330,4, +0x0e2500,3, +0x0e2510,12, +0x0e26e0,6, +0x0e2700,6, +0x0e2720,6, +0x0e2740,3, +0x0e2780,6, +0x0e27a0,6, +0x0e27c0,3, +0x0e2800,67, +0x0e2a00,6, +0x0e2a20,6, +0x0e2a40,3, +0x0e2a50,3, +0x0e2a60,1, +0x0e2a80,17, +0x0e3020,10, +0x0e3070,1, +0x0e3080,2, +0x0e308c,1, +0x0e3400,1, +0x0e3440,21, +0x0e34e4,13, +0x0e3520,6, +0x0e3540,6, +0x0e3560,6, +0x0e3580,6, +0x0e35a0,6, +0x0e35c0,6, +0x0e35e0,6, +0x0e3600,16, +0x0e3804,3, +0x0e3900,33, +0x0e3a00,6, +0x0e3a20,2, +0x0e3a30,1, +0x0e3a40,8, +0x0e3a64,5, +0x0e3c00,1, +0x0e3c28,1, +0x0e3c50,1, +0x0e3c78,1, +0x0e3ca0,2, +0x0e3dac,1, +0x0e3dd8,4, +0x0e3e00,6, +0x0e3e20,6, +0x0e3e40,3, +0x0e4010,12, +0x0e4044,3, +0x0e4084,2, +0x0e40bc,84, +0x0e4240,18, +0x0e45f0,4, +0x0e4604,1, +0x0e4640,16, +0x0e46f0,4, +0x0e4704,1, +0x0e4740,16, +0x0e5000,8, +0x0e6000,9, +0x0e6040,16, +0x0e8000,9, +0x0e8080,6, +0x0e80a0,3, +0x0f0000,3, +0x0f0014,11, +0x0f004c,3, +0x0f0060,8, +0x0f00f0,3, +0x0f0100,1, +0x0f010c,2, +0x0f0118,1, +0x0f0130,4, +0x0f01a8,1, +0x0f01c0,2, +0x0f01d0,10, +0x0f0200,61, +0x0f0404,9, +0x0f0440,8, +0x0f0480,5, +0x0f04b8,21, +0x0f0520,1, +0x0f0528,1, +0x0f0540,2, +0x0f0580,4, +0x0f05a0,1, +0x0f05c0,8, +0x0f0800,17, +0x0f0850,9, +0x0f0880,9, +0x0f0920,4, +0x0f093c,5, +0x0f095c,5, +0x0f097c,5, +0x0f099c,1, +0x0f0a90,2, +0x0f0c00,128, +0x0f0e04,1, +0x0f0e14,9, +0x0f0e3c,1, +0x0f1000,3, +0x0f1010,12, +0x0f1080,10, +0x0f10c0,1, +0x0f10e0,2, +0x0f10ec,1, +0x0f10f4,3, +0x0f1400,6, +0x0f1420,6, +0x0f1440,6, +0x0f1460,6, +0x0f1480,6, +0x0f14a0,6, +0x0f14c0,6, +0x0f14e0,6, +0x0f1500,6, +0x0f1520,6, +0x0f1540,6, +0x0f1560,6, +0x0f1580,6, +0x0f15a0,3, +0x0f1800,3, +0x0f1840,4, +0x0f1854,3, +0x0f1864,3, +0x0f1874,3, +0x0f2000,2, +0x0f200c,3, +0x0f2020,10, +0x0f2060,6, +0x0f2080,2, +0x0f208c,3, +0x0f20a0,10, +0x0f20e0,6, +0x0f2100,2, +0x0f210c,3, +0x0f2120,10, +0x0f2160,6, +0x0f2180,2, +0x0f218c,3, +0x0f21a0,10, +0x0f21e0,6, +0x0f2200,2, +0x0f220c,3, +0x0f2220,10, +0x0f2260,6, +0x0f2280,2, +0x0f228c,3, +0x0f22a0,10, +0x0f22e0,6, +0x0f2300,2, +0x0f230c,3, +0x0f2320,10, +0x0f2360,6, +0x0f2380,2, +0x0f238c,3, +0x0f23a0,10, +0x0f23e0,6, +0x0f2400,2, +0x0f240c,3, +0x0f2420,10, +0x0f2460,6, +0x0f2480,2, +0x0f248c,3, +0x0f24a0,10, +0x0f24e0,6, +0x0f2500,2, +0x0f250c,3, +0x0f2520,10, +0x0f2560,6, +0x0f2580,2, +0x0f258c,3, +0x0f25a0,10, +0x0f25e0,6, +0x0f2600,2, +0x0f260c,3, +0x0f2620,10, +0x0f2660,6, +0x0f2680,2, +0x0f268c,3, +0x0f26a0,10, +0x0f26e0,6, +0x0f2700,2, +0x0f270c,3, +0x0f2720,10, +0x0f2760,6, +0x0f2780,2, +0x0f278c,3, +0x0f27a0,10, +0x0f27e0,6, +0x0f2800,2, +0x0f280c,3, +0x0f2820,10, +0x0f2860,6, +0x0f2880,2, +0x0f288c,3, +0x0f28a0,10, +0x0f28e0,6, +0x0f2900,2, +0x0f290c,3, +0x0f2920,10, +0x0f2960,6, +0x0f2980,2, +0x0f298c,3, +0x0f29a0,10, +0x0f29e0,6, +0x0f4000,7, +0x0f4020,4, +0x0f4204,1, +0x0f4280,35, +0x0f4310,4, +0x0f4404,1, +0x0f4480,34, +0x0f4510,10, +0x0f453c,3, +0x0f4800,7, +0x0f4820,4, +0x0f4a04,1, +0x0f4a80,35, +0x0f4b10,4, +0x0f4c04,1, +0x0f4c80,34, +0x0f4d10,10, +0x0f4d3c,3, +0x0f5000,7, +0x0f5020,4, +0x0f5204,1, +0x0f5280,35, +0x0f5310,4, +0x0f5404,1, +0x0f5480,34, +0x0f5510,10, +0x0f553c,3, +0x0f5800,7, +0x0f5820,4, +0x0f5a04,1, +0x0f5a80,35, +0x0f5b10,4, +0x0f5c04,1, +0x0f5c80,34, +0x0f5d10,10, +0x0f5d3c,3, +0x100000,1, +0x100008,1, +0x100010,2, +0x100020,1, +0x100028,1, +0x100030,2, +0x100040,1, +0x100048,1, +0x100050,2, +0x100060,1, +0x100068,1, +0x100070,2, +0x100080,21, +0x1000d8,2, +0x100100,21, +0x100158,2, +0x100180,21, +0x1001d8,2, +0x100200,21, +0x100258,2, +0x100284,1, +0x1003b0,5, +0x100400,13, +0x100440,13, +0x100480,13, +0x1004c0,13, +0x100500,68, +0x100618,1, +0x100804,1, +0x10080c,4, +0x100820,9, +0x1008a0,24, +0x100920,24, +0x100a00,48, +0x100b00,59, +0x100d00,1, +0x100d08,2, +0x100d80,4, +0x100da0,6, +0x100e00,4, +0x100e20,1, +0x100e28,7, +0x100e48,7, +0x100e68,7, +0x100e88,6, +0x100ee0,6, +0x100f00,6, +0x100f1c,10, +0x100f70,8, +0x100f94,4, +0x100fc0,6, +0x100fe0,6, +0x101404,1, +0x10141c,26, +0x101504,1, +0x10151c,30, +0x101600,1, +0x101628,6, +0x101648,6, +0x101680,16, +0x1016e0,16, +0x101780,1, +0x101790,16, +0x101a00,14, +0x101a40,3, +0x101a50,2, +0x101a60,2, +0x101a70,2, +0x101a80,2, +0x101a90,1, +0x101a9c,11, +0x101b0c,5, +0x101c00,34, +0x101d00,3, +0x102000,1, +0x102028,1, +0x102050,1, +0x102078,1, +0x1020a0,5, +0x1021ac,1, +0x1021d8,4, +0x102200,6, +0x102220,6, +0x102240,3, +0x102560,1, +0x102584,10, +0x1025b0,1, +0x1025fc,1, +0x102604,1, +0x1026ec,69, +0x103000,32, +0x103084,5, +0x1030f8,3, +0x103108,3, +0x103118,7, +0x103144,1, +0x103160,10, +0x103200,32, +0x103284,5, +0x1032f8,3, +0x103308,3, +0x103318,7, +0x103344,1, +0x103360,10, +0x103400,32, +0x103484,5, +0x1034f8,3, +0x103508,3, +0x103518,7, +0x103544,1, +0x103560,10, +0x103600,32, +0x103684,5, +0x1036f8,3, +0x103708,3, +0x103718,7, +0x103744,1, +0x103760,10, +0x103800,1, +0x10380c,1, +0x103a00,64, +0x104000,3, +0x104020,3, +0x104040,3, +0x104060,3, +0x104084,1, +0x104090,4, +0x1040a4,1, +0x1040b0,4, +0x1040c4,1, +0x1040d0,4, +0x1040e4,1, +0x1040f0,21, +0x104148,18, +0x1041f0,6, +0x104308,9, +0x104330,1, +0x104340,16, +0x1043b4,4, +0x1043c8,4, +0x1043dc,4, +0x1043f0,4, +0x104404,1, +0x104470,36, +0x104504,1, +0x104570,36, +0x104604,1, +0x104670,36, +0x104704,1, +0x104770,50, +0x104840,2, +0x10484c,1, +0x104900,1, +0x104908,1, +0x104984,1, +0x1049a0,24, +0x104a08,6, +0x104a28,6, +0x104a48,6, +0x104a68,6, +0x104a88,6, +0x104aa8,6, +0x104ac8,6, +0x104ae8,15, +0x104b40,16, +0x104c00,6, +0x104c20,6, +0x104c40,6, +0x104c60,6, +0x104c80,6, +0x104ca0,6, +0x104cc0,6, +0x104ce0,6, +0x104d00,3, +0x104d20,6, +0x104d40,6, +0x105000,448, +0x105704,3, +0x105734,1, +0x106000,62, +0x106100,32, +0x106184,1, +0x107010,1, +0x110000,4, +0x110014,2, +0x110020,5, +0x110040,5, +0x110060,6, +0x110080,5, +0x110098,1, +0x1100a0,4, +0x1100b8,8, +0x1100e0,6, +0x110200,4, +0x110214,2, +0x110220,5, +0x110240,5, +0x110260,6, +0x110280,5, +0x110298,1, +0x1102a0,4, +0x1102b8,8, +0x1102e0,6, +0x110400,4, +0x110414,2, +0x110420,5, +0x110440,5, +0x110460,6, +0x110480,5, +0x110498,1, +0x1104a0,4, +0x1104b8,8, +0x1104e0,6, +0x110600,4, +0x110614,2, +0x110620,5, +0x110640,5, +0x110660,6, +0x110680,5, +0x110698,1, +0x1106a0,4, +0x1106b8,8, +0x1106e0,6, +0x110800,21, +0x110880,15, +0x1108c0,3, +0x1108d0,2, +0x110900,1, +0x111000,1, +0x111028,1, +0x111050,1, +0x111078,1, +0x1110a0,5, +0x1111ac,1, +0x1111d8,4, +0x111200,6, +0x111220,6, +0x111240,3, +0x111400,3, +0x111480,9, +0x1114c0,25, +0x111540,25, +0x1115c0,25, +0x111640,17, +0x11168c,1, +0x118000,29, +0x118078,4, +0x118090,2, +0x1180a0,7, +0x1180c0,11, +0x118100,14, +0x118140,14, +0x118180,61, +0x118278,4, +0x118290,2, +0x1182a0,7, +0x1182c0,11, +0x118300,14, +0x118340,14, +0x118380,61, +0x118478,4, +0x118490,2, +0x1184a0,7, +0x1184c0,11, +0x118500,14, +0x118540,14, +0x118580,61, +0x118678,4, +0x118690,2, +0x1186a0,7, +0x1186c0,11, +0x118700,14, +0x118740,14, +0x118780,62, +0x11887c,6, +0x118c00,6, +0x118c40,14, +0x118c80,9, +0x118d00,9, +0x118d2c,1, +0x118d40,3, +0x118d60,1, +0x118d80,3, +0x118e00,2, +0x118e0c,1, +0x118e14,5, +0x118e2c,1, +0x118e34,5, +0x118e4c,1, +0x118e54,5, +0x118e6c,1, +0x118e74,5, +0x118e8c,1, +0x118e94,5, +0x118eac,1, +0x118eb4,3, +0x119000,29, +0x119078,4, +0x119090,2, +0x1190a0,7, +0x1190c0,11, +0x119100,14, +0x119140,14, +0x119180,61, +0x119278,4, +0x119290,2, +0x1192a0,7, +0x1192c0,11, +0x119300,14, +0x119340,14, +0x119380,61, +0x119478,4, +0x119490,2, +0x1194a0,7, +0x1194c0,11, +0x119500,14, +0x119540,14, +0x119580,61, +0x119678,4, +0x119690,2, +0x1196a0,7, +0x1196c0,11, +0x119700,14, +0x119740,14, +0x119780,62, +0x11987c,6, +0x119c00,6, +0x119c40,14, +0x119c80,9, +0x119d00,9, +0x119d2c,1, +0x119d40,3, +0x119d60,1, +0x119d80,3, +0x119e00,2, +0x119e0c,1, +0x119e14,5, +0x119e2c,1, +0x119e34,5, +0x119e4c,1, +0x119e54,5, +0x119e6c,1, +0x119e74,5, +0x119e8c,1, +0x119e94,5, +0x119eac,1, +0x119eb4,3, +0x11a000,29, +0x11a078,4, +0x11a090,2, +0x11a0a0,7, +0x11a0c0,11, +0x11a100,14, +0x11a140,14, +0x11a180,61, +0x11a278,4, +0x11a290,2, +0x11a2a0,7, +0x11a2c0,11, +0x11a300,14, +0x11a340,14, +0x11a380,61, +0x11a478,4, +0x11a490,2, +0x11a4a0,7, +0x11a4c0,11, +0x11a500,14, +0x11a540,14, +0x11a580,61, +0x11a678,4, +0x11a690,2, +0x11a6a0,7, +0x11a6c0,11, +0x11a700,14, +0x11a740,14, +0x11a780,62, +0x11a87c,6, +0x11ac00,6, +0x11ac40,14, +0x11ac80,9, +0x11ad00,9, +0x11ad2c,1, +0x11ad40,3, +0x11ad60,1, +0x11ad80,3, +0x11ae00,2, +0x11ae0c,1, +0x11ae14,5, +0x11ae2c,1, +0x11ae34,5, +0x11ae4c,1, +0x11ae54,5, +0x11ae6c,1, +0x11ae74,5, +0x11ae8c,1, +0x11ae94,5, +0x11aeac,1, +0x11aeb4,3, +0x11b000,29, +0x11b078,4, +0x11b090,2, +0x11b0a0,7, +0x11b0c0,11, +0x11b100,14, +0x11b140,14, +0x11b180,61, +0x11b278,4, +0x11b290,2, +0x11b2a0,7, +0x11b2c0,11, +0x11b300,14, +0x11b340,14, +0x11b380,61, +0x11b478,4, +0x11b490,2, +0x11b4a0,7, +0x11b4c0,11, +0x11b500,14, +0x11b540,14, +0x11b580,61, +0x11b678,4, +0x11b690,2, +0x11b6a0,7, +0x11b6c0,11, +0x11b700,14, +0x11b740,14, +0x11b780,62, +0x11b87c,6, +0x11bc00,6, +0x11bc40,14, +0x11bc80,9, +0x11bd00,9, +0x11bd2c,1, +0x11bd40,3, +0x11bd60,1, +0x11bd80,3, +0x11be00,2, +0x11be0c,1, +0x11be14,5, +0x11be2c,1, +0x11be34,5, +0x11be4c,1, +0x11be54,5, +0x11be6c,1, +0x11be74,5, +0x11be8c,1, +0x11be94,5, +0x11beac,1, +0x11beb4,3, +0x11c000,19, +0x11c050,10, +0x11c080,19, +0x11c0d0,10, +0x11c100,19, +0x11c150,10, +0x11c180,19, +0x11c1d0,10, +0x11c200,19, +0x11c250,10, +0x11c280,19, +0x11c2d0,10, +0x11c300,19, +0x11c350,10, +0x11c380,19, +0x11c3d0,10, +0x11c400,19, +0x11c450,10, +0x11c484,1, +0x11c494,8, +0x11c4b8,9, +0x11c4e0,4, +0x11c500,3, +0x11d000,7, +0x11d020,15, +0x11d060,15, +0x11d0a0,15, +0x11d0e0,15, +0x11d120,15, +0x11d160,15, +0x11d1a0,15, +0x11d1e0,15, +0x11d220,15, +0x11d260,15, +0x11d2a0,15, +0x11d2e0,15, +0x11d320,15, +0x11d360,15, +0x11d3a0,15, +0x11d3e0,17, +0x11d428,3, +0x11d440,5, +0x11d480,9, +0x11d4a8,3, +0x11d4c0,5, +0x11d500,9, +0x11d528,3, +0x11d540,5, +0x11d580,9, +0x11d5a8,3, +0x11d5c0,5, +0x11d600,6, +0x11d620,6, +0x11d640,6, +0x11d660,6, +0x11d680,6, +0x11d6a0,6, +0x11d6c0,6, +0x11d6e0,6, +0x11d700,12, +0x11d734,1, +0x11d73c,4, +0x11d750,4, +0x11d764,1, +0x11d800,102, +0x11da00,3, +0x11da10,1, +0x11da18,2, +0x11da24,16, +0x11da80,3, +0x11da90,1, +0x11da98,2, +0x11daa4,16, +0x11db00,3, +0x11db10,1, +0x11db18,2, +0x11db24,16, +0x11db80,3, +0x11db90,1, +0x11db98,2, +0x11dba4,16, +0x11dc00,17, +0x11e000,72, +0x11e200,72, +0x11e400,72, +0x11e600,72, +0x11e800,6, +0x11e820,6, +0x11e840,6, +0x11e860,6, +0x11e880,6, +0x11e8a0,6, +0x11e8c0,6, +0x11e8e0,6, +0x11e900,6, +0x11e920,1, +0x11ea00,6, +0x11ea20,6, +0x11ea40,6, +0x11ea60,6, +0x11ea80,6, +0x11eaa0,6, +0x11eac0,6, +0x11eae0,6, +0x11eb00,6, +0x11eb20,1, +0x11ec00,6, +0x11ec20,6, +0x11ec40,6, +0x11ec60,6, +0x11ec80,6, +0x11eca0,6, +0x11ecc0,6, +0x11ece0,6, +0x11ed00,6, +0x11ed20,1, +0x11ee00,6, +0x11ee20,6, +0x11ee40,6, +0x11ee60,6, +0x11ee80,6, +0x11eea0,6, +0x11eec0,6, +0x11eee0,6, +0x11ef00,6, +0x11ef20,1, +0x11f000,14, +0x11f040,2, +0x11f080,14, +0x11f0c0,2, +0x11f100,14, +0x11f140,2, +0x11f180,14, +0x11f1c0,2, +0x11f400,17, +0x11f448,5, +0x11f460,3, +0x11f470,3, +0x11f480,13, +0x11f4b8,1, +0x11f500,17, +0x11f548,5, +0x11f560,3, +0x11f570,3, +0x11f580,13, +0x11f5b8,1, +0x11f600,17, +0x11f648,5, +0x11f660,3, +0x11f670,3, +0x11f680,13, +0x11f6b8,1, +0x11f700,17, +0x11f748,5, +0x11f760,3, +0x11f770,3, +0x11f780,13, +0x11f7b8,1, +0x11f800,8, +0x11f824,15, +0x11f864,15, +0x11f8a4,15, +0x11f8e4,30, +0x11f980,10, +0x11f9ac,1, +0x11f9b4,5, +0x11f9cc,1, +0x11f9d4,5, +0x11f9ec,1, +0x11f9f4,13, +0x11fa80,4, +0x11fa94,2, +0x11faa0,5, +0x11fac0,5, +0x11fae0,4, +0x11fc04,8, +0x11fc40,13, +0x11fc80,16, +0x11fd00,6, +0x11fd20,3, +0x11fd30,3, +0x11fd40,20, +0x11fdc0,3, diff --git a/mstdump/mstdump_dbs/SwitchEN.csv b/mstdump/mstdump_dbs/SwitchEN.csv index 1fdc088..16c1a1c 100644 --- a/mstdump/mstdump_dbs/SwitchEN.csv +++ b/mstdump/mstdump_dbs/SwitchEN.csv @@ -8,14 +8,14 @@ 0x000950,12, 0x000984,19, 0x000a00,1, -0x000a18,5, -0x000a30,2, +0x000a18,8, 0x000a3c,9, 0x000a84,1, 0x000a90,4, 0x000aa4,1, 0x000aac,7, -0x000ae8,3, +0x000ae0,2, +0x000aec,2, 0x000b00,8, 0x000b40,6, 0x000b60,3, @@ -29,14 +29,14 @@ 0x000d50,12, 0x000d84,19, 0x000e00,1, -0x000e18,5, -0x000e30,2, +0x000e18,8, 0x000e3c,9, 0x000e84,1, 0x000e90,4, 0x000ea4,1, 0x000eac,7, -0x000ee8,3, +0x000ee0,2, +0x000eec,2, 0x000f00,8, 0x000f40,6, 0x000f60,3, @@ -50,14 +50,14 @@ 0x001150,12, 0x001184,19, 0x001200,1, -0x001218,5, -0x001230,2, +0x001218,8, 0x00123c,9, 0x001284,1, 0x001290,4, 0x0012a4,1, 0x0012ac,7, -0x0012e8,3, +0x0012e0,2, +0x0012ec,2, 0x001300,8, 0x001340,6, 0x001360,3, @@ -71,14 +71,14 @@ 0x001550,12, 0x001584,19, 0x001600,1, -0x001618,5, -0x001630,2, +0x001618,8, 0x00163c,9, 0x001684,1, 0x001690,4, 0x0016a4,1, 0x0016ac,7, -0x0016e8,3, +0x0016e0,2, +0x0016ec,2, 0x001700,8, 0x001740,6, 0x001760,3, @@ -92,14 +92,14 @@ 0x001950,12, 0x001984,19, 0x001a00,1, -0x001a18,5, -0x001a30,2, +0x001a18,8, 0x001a3c,9, 0x001a84,1, 0x001a90,4, 0x001aa4,1, 0x001aac,7, -0x001ae8,3, +0x001ae0,2, +0x001aec,2, 0x001b00,8, 0x001b40,6, 0x001b60,3, @@ -113,14 +113,14 @@ 0x001d50,12, 0x001d84,19, 0x001e00,1, -0x001e18,5, -0x001e30,2, +0x001e18,8, 0x001e3c,9, 0x001e84,1, 0x001e90,4, 0x001ea4,1, 0x001eac,7, -0x001ee8,3, +0x001ee0,2, +0x001eec,2, 0x001f00,8, 0x001f40,6, 0x001f60,3, @@ -134,14 +134,14 @@ 0x002150,12, 0x002184,19, 0x002200,1, -0x002218,5, -0x002230,2, +0x002218,8, 0x00223c,9, 0x002284,1, 0x002290,4, 0x0022a4,1, 0x0022ac,7, -0x0022e8,3, +0x0022e0,2, +0x0022ec,2, 0x002300,8, 0x002340,6, 0x002360,3, @@ -155,14 +155,14 @@ 0x002550,12, 0x002584,19, 0x002600,1, -0x002618,5, -0x002630,2, +0x002618,8, 0x00263c,9, 0x002684,1, 0x002690,4, 0x0026a4,1, 0x0026ac,7, -0x0026e8,3, +0x0026e0,2, +0x0026ec,2, 0x002700,8, 0x002740,6, 0x002760,3, @@ -176,14 +176,14 @@ 0x002950,12, 0x002984,19, 0x002a00,1, -0x002a18,5, -0x002a30,2, +0x002a18,8, 0x002a3c,9, 0x002a84,1, 0x002a90,4, 0x002aa4,1, 0x002aac,7, -0x002ae8,3, +0x002ae0,2, +0x002aec,2, 0x002b00,8, 0x002b40,6, 0x002b60,3, @@ -197,14 +197,14 @@ 0x002d50,12, 0x002d84,19, 0x002e00,1, -0x002e18,5, -0x002e30,2, +0x002e18,8, 0x002e3c,9, 0x002e84,1, 0x002e90,4, 0x002ea4,1, 0x002eac,7, -0x002ee8,3, +0x002ee0,2, +0x002eec,2, 0x002f00,8, 0x002f40,6, 0x002f60,3, @@ -218,14 +218,14 @@ 0x003150,12, 0x003184,19, 0x003200,1, -0x003218,5, -0x003230,2, +0x003218,8, 0x00323c,9, 0x003284,1, 0x003290,4, 0x0032a4,1, 0x0032ac,7, -0x0032e8,3, +0x0032e0,2, +0x0032ec,2, 0x003300,8, 0x003340,6, 0x003360,3, @@ -239,14 +239,14 @@ 0x003550,12, 0x003584,19, 0x003600,1, -0x003618,5, -0x003630,2, +0x003618,8, 0x00363c,9, 0x003684,1, 0x003690,4, 0x0036a4,1, 0x0036ac,7, -0x0036e8,3, +0x0036e0,2, +0x0036ec,2, 0x003700,8, 0x003740,6, 0x003760,3, @@ -260,14 +260,14 @@ 0x003950,12, 0x003984,19, 0x003a00,1, -0x003a18,5, -0x003a30,2, +0x003a18,8, 0x003a3c,9, 0x003a84,1, 0x003a90,4, 0x003aa4,1, 0x003aac,7, -0x003ae8,3, +0x003ae0,2, +0x003aec,2, 0x003b00,8, 0x003b40,6, 0x003b60,3, @@ -281,14 +281,14 @@ 0x003d50,12, 0x003d84,19, 0x003e00,1, -0x003e18,5, -0x003e30,2, +0x003e18,8, 0x003e3c,9, 0x003e84,1, 0x003e90,4, 0x003ea4,1, 0x003eac,7, -0x003ee8,3, +0x003ee0,2, +0x003eec,2, 0x003f00,8, 0x003f40,6, 0x003f60,3, @@ -302,14 +302,14 @@ 0x004150,12, 0x004184,19, 0x004200,1, -0x004218,5, -0x004230,2, +0x004218,8, 0x00423c,9, 0x004284,1, 0x004290,4, 0x0042a4,1, 0x0042ac,7, -0x0042e8,3, +0x0042e0,2, +0x0042ec,2, 0x004300,8, 0x004340,6, 0x004360,3, @@ -323,14 +323,14 @@ 0x004550,12, 0x004584,19, 0x004600,1, -0x004618,5, -0x004630,2, +0x004618,8, 0x00463c,9, 0x004684,1, 0x004690,4, 0x0046a4,1, 0x0046ac,7, -0x0046e8,3, +0x0046e0,2, +0x0046ec,2, 0x004700,8, 0x004740,6, 0x004760,3, @@ -344,14 +344,14 @@ 0x004950,12, 0x004984,19, 0x004a00,1, -0x004a18,5, -0x004a30,2, +0x004a18,8, 0x004a3c,9, 0x004a84,1, 0x004a90,4, 0x004aa4,1, 0x004aac,7, -0x004ae8,3, +0x004ae0,2, +0x004aec,2, 0x004b00,8, 0x004b40,6, 0x004b60,3, @@ -365,14 +365,14 @@ 0x004d50,12, 0x004d84,19, 0x004e00,1, -0x004e18,5, -0x004e30,2, +0x004e18,8, 0x004e3c,9, 0x004e84,1, 0x004e90,4, 0x004ea4,1, 0x004eac,7, -0x004ee8,3, +0x004ee0,2, +0x004eec,2, 0x004f00,8, 0x004f40,6, 0x004f60,3, @@ -386,14 +386,14 @@ 0x005150,12, 0x005184,19, 0x005200,1, -0x005218,5, -0x005230,2, +0x005218,8, 0x00523c,9, 0x005284,1, 0x005290,4, 0x0052a4,1, 0x0052ac,7, -0x0052e8,3, +0x0052e0,2, +0x0052ec,2, 0x005300,8, 0x005340,6, 0x005360,3, @@ -407,14 +407,14 @@ 0x005550,12, 0x005584,19, 0x005600,1, -0x005618,5, -0x005630,2, +0x005618,8, 0x00563c,9, 0x005684,1, 0x005690,4, 0x0056a4,1, 0x0056ac,7, -0x0056e8,3, +0x0056e0,2, +0x0056ec,2, 0x005700,8, 0x005740,6, 0x005760,3, @@ -428,14 +428,14 @@ 0x005950,12, 0x005984,19, 0x005a00,1, -0x005a18,5, -0x005a30,2, +0x005a18,8, 0x005a3c,9, 0x005a84,1, 0x005a90,4, 0x005aa4,1, 0x005aac,7, -0x005ae8,3, +0x005ae0,2, +0x005aec,2, 0x005b00,8, 0x005b40,6, 0x005b60,3, @@ -449,14 +449,14 @@ 0x005d50,12, 0x005d84,19, 0x005e00,1, -0x005e18,5, -0x005e30,2, +0x005e18,8, 0x005e3c,9, 0x005e84,1, 0x005e90,4, 0x005ea4,1, 0x005eac,7, -0x005ee8,3, +0x005ee0,2, +0x005eec,2, 0x005f00,8, 0x005f40,6, 0x005f60,3, @@ -470,14 +470,14 @@ 0x006150,12, 0x006184,19, 0x006200,1, -0x006218,5, -0x006230,2, +0x006218,8, 0x00623c,9, 0x006284,1, 0x006290,4, 0x0062a4,1, 0x0062ac,7, -0x0062e8,3, +0x0062e0,2, +0x0062ec,2, 0x006300,8, 0x006340,6, 0x006360,3, @@ -491,14 +491,14 @@ 0x006550,12, 0x006584,19, 0x006600,1, -0x006618,5, -0x006630,2, +0x006618,8, 0x00663c,9, 0x006684,1, 0x006690,4, 0x0066a4,1, 0x0066ac,7, -0x0066e8,3, +0x0066e0,2, +0x0066ec,2, 0x006700,8, 0x006740,6, 0x006760,3, @@ -512,14 +512,14 @@ 0x006950,12, 0x006984,19, 0x006a00,1, -0x006a18,5, -0x006a30,2, +0x006a18,8, 0x006a3c,9, 0x006a84,1, 0x006a90,4, 0x006aa4,1, 0x006aac,7, -0x006ae8,3, +0x006ae0,2, +0x006aec,2, 0x006b00,8, 0x006b40,6, 0x006b60,3, @@ -533,14 +533,14 @@ 0x006d50,12, 0x006d84,19, 0x006e00,1, -0x006e18,5, -0x006e30,2, +0x006e18,8, 0x006e3c,9, 0x006e84,1, 0x006e90,4, 0x006ea4,1, 0x006eac,7, -0x006ee8,3, +0x006ee0,2, +0x006eec,2, 0x006f00,8, 0x006f40,6, 0x006f60,3, @@ -554,14 +554,14 @@ 0x007150,12, 0x007184,19, 0x007200,1, -0x007218,5, -0x007230,2, +0x007218,8, 0x00723c,9, 0x007284,1, 0x007290,4, 0x0072a4,1, 0x0072ac,7, -0x0072e8,3, +0x0072e0,2, +0x0072ec,2, 0x007300,8, 0x007340,6, 0x007360,3, @@ -575,14 +575,14 @@ 0x007550,12, 0x007584,19, 0x007600,1, -0x007618,5, -0x007630,2, +0x007618,8, 0x00763c,9, 0x007684,1, 0x007690,4, 0x0076a4,1, 0x0076ac,7, -0x0076e8,3, +0x0076e0,2, +0x0076ec,2, 0x007700,8, 0x007740,6, 0x007760,3, @@ -596,14 +596,14 @@ 0x007950,12, 0x007984,19, 0x007a00,1, -0x007a18,5, -0x007a30,2, +0x007a18,8, 0x007a3c,9, 0x007a84,1, 0x007a90,4, 0x007aa4,1, 0x007aac,7, -0x007ae8,3, +0x007ae0,2, +0x007aec,2, 0x007b00,8, 0x007b40,6, 0x007b60,3, @@ -617,14 +617,14 @@ 0x007d50,12, 0x007d84,19, 0x007e00,1, -0x007e18,5, -0x007e30,2, +0x007e18,8, 0x007e3c,9, 0x007e84,1, 0x007e90,4, 0x007ea4,1, 0x007eac,7, -0x007ee8,3, +0x007ee0,2, +0x007eec,2, 0x007f00,8, 0x007f40,6, 0x007f60,3, @@ -638,14 +638,14 @@ 0x008150,12, 0x008184,19, 0x008200,1, -0x008218,5, -0x008230,2, +0x008218,8, 0x00823c,9, 0x008284,1, 0x008290,4, 0x0082a4,1, 0x0082ac,7, -0x0082e8,3, +0x0082e0,2, +0x0082ec,2, 0x008300,8, 0x008340,6, 0x008360,3, @@ -659,14 +659,14 @@ 0x008550,12, 0x008584,19, 0x008600,1, -0x008618,5, -0x008630,2, +0x008618,8, 0x00863c,9, 0x008684,1, 0x008690,4, 0x0086a4,1, 0x0086ac,7, -0x0086e8,3, +0x0086e0,2, +0x0086ec,2, 0x008700,8, 0x008740,6, 0x008760,3, @@ -680,14 +680,14 @@ 0x008950,12, 0x008984,19, 0x008a00,1, -0x008a18,5, -0x008a30,2, +0x008a18,8, 0x008a3c,9, 0x008a84,1, 0x008a90,4, 0x008aa4,1, 0x008aac,7, -0x008ae8,3, +0x008ae0,2, +0x008aec,2, 0x008b00,8, 0x008b40,6, 0x008b60,3, @@ -701,14 +701,14 @@ 0x008d50,12, 0x008d84,19, 0x008e00,1, -0x008e18,5, -0x008e30,2, +0x008e18,8, 0x008e3c,9, 0x008e84,1, 0x008e90,4, 0x008ea4,1, 0x008eac,7, -0x008ee8,3, +0x008ee0,2, +0x008eec,2, 0x008f00,8, 0x008f40,6, 0x008f60,3, @@ -723,14 +723,15 @@ 0x009200,6, 0x009220,6, 0x009240,3, -0x009400,13, -0x009440,6, -0x009460,3, -0x009480,3, -0x009490,3, -0x0094a0,6, -0x0094bc,2, +0x009400,6, +0x009420,6, +0x009440,3, +0x009480,13, +0x0094c0,3, +0x0094d0,3, +0x0094e0,5, 0x009500,2, +0x00950c,3, 0x010800,1, 0x010808,14, 0x010880,1, @@ -740,14 +741,14 @@ 0x010950,12, 0x010984,19, 0x010a00,1, -0x010a18,5, -0x010a30,2, +0x010a18,8, 0x010a3c,9, 0x010a84,1, 0x010a90,4, 0x010aa4,1, 0x010aac,7, -0x010ae8,3, +0x010ae0,2, +0x010aec,2, 0x010b00,8, 0x010b40,6, 0x010b60,3, @@ -761,14 +762,14 @@ 0x010d50,12, 0x010d84,19, 0x010e00,1, -0x010e18,5, -0x010e30,2, +0x010e18,8, 0x010e3c,9, 0x010e84,1, 0x010e90,4, 0x010ea4,1, 0x010eac,7, -0x010ee8,3, +0x010ee0,2, +0x010eec,2, 0x010f00,8, 0x010f40,6, 0x010f60,3, @@ -782,14 +783,14 @@ 0x011150,12, 0x011184,19, 0x011200,1, -0x011218,5, -0x011230,2, +0x011218,8, 0x01123c,9, 0x011284,1, 0x011290,4, 0x0112a4,1, 0x0112ac,7, -0x0112e8,3, +0x0112e0,2, +0x0112ec,2, 0x011300,8, 0x011340,6, 0x011360,3, @@ -803,14 +804,14 @@ 0x011550,12, 0x011584,19, 0x011600,1, -0x011618,5, -0x011630,2, +0x011618,8, 0x01163c,9, 0x011684,1, 0x011690,4, 0x0116a4,1, 0x0116ac,7, -0x0116e8,3, +0x0116e0,2, +0x0116ec,2, 0x011700,8, 0x011740,6, 0x011760,3, @@ -824,14 +825,14 @@ 0x011950,12, 0x011984,19, 0x011a00,1, -0x011a18,5, -0x011a30,2, +0x011a18,8, 0x011a3c,9, 0x011a84,1, 0x011a90,4, 0x011aa4,1, 0x011aac,7, -0x011ae8,3, +0x011ae0,2, +0x011aec,2, 0x011b00,8, 0x011b40,6, 0x011b60,3, @@ -845,14 +846,14 @@ 0x011d50,12, 0x011d84,19, 0x011e00,1, -0x011e18,5, -0x011e30,2, +0x011e18,8, 0x011e3c,9, 0x011e84,1, 0x011e90,4, 0x011ea4,1, 0x011eac,7, -0x011ee8,3, +0x011ee0,2, +0x011eec,2, 0x011f00,8, 0x011f40,6, 0x011f60,3, @@ -866,14 +867,14 @@ 0x012150,12, 0x012184,19, 0x012200,1, -0x012218,5, -0x012230,2, +0x012218,8, 0x01223c,9, 0x012284,1, 0x012290,4, 0x0122a4,1, 0x0122ac,7, -0x0122e8,3, +0x0122e0,2, +0x0122ec,2, 0x012300,8, 0x012340,6, 0x012360,3, @@ -887,14 +888,14 @@ 0x012550,12, 0x012584,19, 0x012600,1, -0x012618,5, -0x012630,2, +0x012618,8, 0x01263c,9, 0x012684,1, 0x012690,4, 0x0126a4,1, 0x0126ac,7, -0x0126e8,3, +0x0126e0,2, +0x0126ec,2, 0x012700,8, 0x012740,6, 0x012760,3, @@ -908,14 +909,14 @@ 0x012950,12, 0x012984,19, 0x012a00,1, -0x012a18,5, -0x012a30,2, +0x012a18,8, 0x012a3c,9, 0x012a84,1, 0x012a90,4, 0x012aa4,1, 0x012aac,7, -0x012ae8,3, +0x012ae0,2, +0x012aec,2, 0x012b00,8, 0x012b40,6, 0x012b60,3, @@ -929,14 +930,14 @@ 0x012d50,12, 0x012d84,19, 0x012e00,1, -0x012e18,5, -0x012e30,2, +0x012e18,8, 0x012e3c,9, 0x012e84,1, 0x012e90,4, 0x012ea4,1, 0x012eac,7, -0x012ee8,3, +0x012ee0,2, +0x012eec,2, 0x012f00,8, 0x012f40,6, 0x012f60,3, @@ -950,14 +951,14 @@ 0x013150,12, 0x013184,19, 0x013200,1, -0x013218,5, -0x013230,2, +0x013218,8, 0x01323c,9, 0x013284,1, 0x013290,4, 0x0132a4,1, 0x0132ac,7, -0x0132e8,3, +0x0132e0,2, +0x0132ec,2, 0x013300,8, 0x013340,6, 0x013360,3, @@ -971,14 +972,14 @@ 0x013550,12, 0x013584,19, 0x013600,1, -0x013618,5, -0x013630,2, +0x013618,8, 0x01363c,9, 0x013684,1, 0x013690,4, 0x0136a4,1, 0x0136ac,7, -0x0136e8,3, +0x0136e0,2, +0x0136ec,2, 0x013700,8, 0x013740,6, 0x013760,3, @@ -992,14 +993,14 @@ 0x013950,12, 0x013984,19, 0x013a00,1, -0x013a18,5, -0x013a30,2, +0x013a18,8, 0x013a3c,9, 0x013a84,1, 0x013a90,4, 0x013aa4,1, 0x013aac,7, -0x013ae8,3, +0x013ae0,2, +0x013aec,2, 0x013b00,8, 0x013b40,6, 0x013b60,3, @@ -1013,14 +1014,14 @@ 0x013d50,12, 0x013d84,19, 0x013e00,1, -0x013e18,5, -0x013e30,2, +0x013e18,8, 0x013e3c,9, 0x013e84,1, 0x013e90,4, 0x013ea4,1, 0x013eac,7, -0x013ee8,3, +0x013ee0,2, +0x013eec,2, 0x013f00,8, 0x013f40,6, 0x013f60,3, @@ -1034,14 +1035,14 @@ 0x014150,12, 0x014184,19, 0x014200,1, -0x014218,5, -0x014230,2, +0x014218,8, 0x01423c,9, 0x014284,1, 0x014290,4, 0x0142a4,1, 0x0142ac,7, -0x0142e8,3, +0x0142e0,2, +0x0142ec,2, 0x014300,8, 0x014340,6, 0x014360,3, @@ -1055,14 +1056,14 @@ 0x014550,12, 0x014584,19, 0x014600,1, -0x014618,5, -0x014630,2, +0x014618,8, 0x01463c,9, 0x014684,1, 0x014690,4, 0x0146a4,1, 0x0146ac,7, -0x0146e8,3, +0x0146e0,2, +0x0146ec,2, 0x014700,8, 0x014740,6, 0x014760,3, @@ -1076,14 +1077,14 @@ 0x014950,12, 0x014984,19, 0x014a00,1, -0x014a18,5, -0x014a30,2, +0x014a18,8, 0x014a3c,9, 0x014a84,1, 0x014a90,4, 0x014aa4,1, 0x014aac,7, -0x014ae8,3, +0x014ae0,2, +0x014aec,2, 0x014b00,8, 0x014b40,6, 0x014b60,3, @@ -1097,14 +1098,14 @@ 0x014d50,12, 0x014d84,19, 0x014e00,1, -0x014e18,5, -0x014e30,2, +0x014e18,8, 0x014e3c,9, 0x014e84,1, 0x014e90,4, 0x014ea4,1, 0x014eac,7, -0x014ee8,3, +0x014ee0,2, +0x014eec,2, 0x014f00,8, 0x014f40,6, 0x014f60,3, @@ -1118,14 +1119,14 @@ 0x015150,12, 0x015184,19, 0x015200,1, -0x015218,5, -0x015230,2, +0x015218,8, 0x01523c,9, 0x015284,1, 0x015290,4, 0x0152a4,1, 0x0152ac,7, -0x0152e8,3, +0x0152e0,2, +0x0152ec,2, 0x015300,8, 0x015340,6, 0x015360,3, @@ -1139,14 +1140,14 @@ 0x015550,12, 0x015584,19, 0x015600,1, -0x015618,5, -0x015630,2, +0x015618,8, 0x01563c,9, 0x015684,1, 0x015690,4, 0x0156a4,1, 0x0156ac,7, -0x0156e8,3, +0x0156e0,2, +0x0156ec,2, 0x015700,8, 0x015740,6, 0x015760,3, @@ -1160,14 +1161,14 @@ 0x015950,12, 0x015984,19, 0x015a00,1, -0x015a18,5, -0x015a30,2, +0x015a18,8, 0x015a3c,9, 0x015a84,1, 0x015a90,4, 0x015aa4,1, 0x015aac,7, -0x015ae8,3, +0x015ae0,2, +0x015aec,2, 0x015b00,8, 0x015b40,6, 0x015b60,3, @@ -1181,14 +1182,14 @@ 0x015d50,12, 0x015d84,19, 0x015e00,1, -0x015e18,5, -0x015e30,2, +0x015e18,8, 0x015e3c,9, 0x015e84,1, 0x015e90,4, 0x015ea4,1, 0x015eac,7, -0x015ee8,3, +0x015ee0,2, +0x015eec,2, 0x015f00,8, 0x015f40,6, 0x015f60,3, @@ -1202,14 +1203,14 @@ 0x016150,12, 0x016184,19, 0x016200,1, -0x016218,5, -0x016230,2, +0x016218,8, 0x01623c,9, 0x016284,1, 0x016290,4, 0x0162a4,1, 0x0162ac,7, -0x0162e8,3, +0x0162e0,2, +0x0162ec,2, 0x016300,8, 0x016340,6, 0x016360,3, @@ -1223,14 +1224,14 @@ 0x016550,12, 0x016584,19, 0x016600,1, -0x016618,5, -0x016630,2, +0x016618,8, 0x01663c,9, 0x016684,1, 0x016690,4, 0x0166a4,1, 0x0166ac,7, -0x0166e8,3, +0x0166e0,2, +0x0166ec,2, 0x016700,8, 0x016740,6, 0x016760,3, @@ -1244,14 +1245,14 @@ 0x016950,12, 0x016984,19, 0x016a00,1, -0x016a18,5, -0x016a30,2, +0x016a18,8, 0x016a3c,9, 0x016a84,1, 0x016a90,4, 0x016aa4,1, 0x016aac,7, -0x016ae8,3, +0x016ae0,2, +0x016aec,2, 0x016b00,8, 0x016b40,6, 0x016b60,3, @@ -1265,14 +1266,14 @@ 0x016d50,12, 0x016d84,19, 0x016e00,1, -0x016e18,5, -0x016e30,2, +0x016e18,8, 0x016e3c,9, 0x016e84,1, 0x016e90,4, 0x016ea4,1, 0x016eac,7, -0x016ee8,3, +0x016ee0,2, +0x016eec,2, 0x016f00,8, 0x016f40,6, 0x016f60,3, @@ -1286,14 +1287,14 @@ 0x017150,12, 0x017184,19, 0x017200,1, -0x017218,5, -0x017230,2, +0x017218,8, 0x01723c,9, 0x017284,1, 0x017290,4, 0x0172a4,1, 0x0172ac,7, -0x0172e8,3, +0x0172e0,2, +0x0172ec,2, 0x017300,8, 0x017340,6, 0x017360,3, @@ -1307,14 +1308,14 @@ 0x017550,12, 0x017584,19, 0x017600,1, -0x017618,5, -0x017630,2, +0x017618,8, 0x01763c,9, 0x017684,1, 0x017690,4, 0x0176a4,1, 0x0176ac,7, -0x0176e8,3, +0x0176e0,2, +0x0176ec,2, 0x017700,8, 0x017740,6, 0x017760,3, @@ -1328,14 +1329,14 @@ 0x017950,12, 0x017984,19, 0x017a00,1, -0x017a18,5, -0x017a30,2, +0x017a18,8, 0x017a3c,9, 0x017a84,1, 0x017a90,4, 0x017aa4,1, 0x017aac,7, -0x017ae8,3, +0x017ae0,2, +0x017aec,2, 0x017b00,8, 0x017b40,6, 0x017b60,3, @@ -1349,14 +1350,14 @@ 0x017d50,12, 0x017d84,19, 0x017e00,1, -0x017e18,5, -0x017e30,2, +0x017e18,8, 0x017e3c,9, 0x017e84,1, 0x017e90,4, 0x017ea4,1, 0x017eac,7, -0x017ee8,3, +0x017ee0,2, +0x017eec,2, 0x017f00,8, 0x017f40,6, 0x017f60,3, @@ -1370,14 +1371,14 @@ 0x018150,12, 0x018184,19, 0x018200,1, -0x018218,5, -0x018230,2, +0x018218,8, 0x01823c,9, 0x018284,1, 0x018290,4, 0x0182a4,1, 0x0182ac,7, -0x0182e8,3, +0x0182e0,2, +0x0182ec,2, 0x018300,8, 0x018340,6, 0x018360,3, @@ -1391,14 +1392,14 @@ 0x018550,12, 0x018584,19, 0x018600,1, -0x018618,5, -0x018630,2, +0x018618,8, 0x01863c,9, 0x018684,1, 0x018690,4, 0x0186a4,1, 0x0186ac,7, -0x0186e8,3, +0x0186e0,2, +0x0186ec,2, 0x018700,8, 0x018740,6, 0x018760,3, @@ -1412,14 +1413,14 @@ 0x018950,12, 0x018984,19, 0x018a00,1, -0x018a18,5, -0x018a30,2, +0x018a18,8, 0x018a3c,9, 0x018a84,1, 0x018a90,4, 0x018aa4,1, 0x018aac,7, -0x018ae8,3, +0x018ae0,2, +0x018aec,2, 0x018b00,8, 0x018b40,6, 0x018b60,3, @@ -1433,14 +1434,14 @@ 0x018d50,12, 0x018d84,19, 0x018e00,1, -0x018e18,5, -0x018e30,2, +0x018e18,8, 0x018e3c,9, 0x018e84,1, 0x018e90,4, 0x018ea4,1, 0x018eac,7, -0x018ee8,3, +0x018ee0,2, +0x018eec,2, 0x018f00,8, 0x018f40,6, 0x018f60,3, @@ -1455,243 +1456,375 @@ 0x019200,6, 0x019220,6, 0x019240,3, -0x019400,13, -0x019440,6, -0x019460,3, -0x019480,3, -0x019490,3, -0x0194a0,6, -0x0194bc,2, +0x019400,6, +0x019420,6, +0x019440,3, +0x019480,13, +0x0194c0,3, +0x0194d0,3, +0x0194e0,5, 0x019500,2, -0x020000,1, -0x020008,10, -0x020034,16, -0x020080,33, -0x020110,5, -0x020128,2, -0x020134,1, -0x02013c,13, -0x020174,9, -0x0201a0,17, -0x0201e8,2, -0x020204,3, -0x020214,4, -0x0203f0,1, -0x020400,1, -0x020408,10, -0x020434,16, -0x020480,33, -0x020510,5, -0x020528,2, -0x020534,1, -0x02053c,13, -0x020574,9, -0x0205a0,17, -0x0205e8,2, -0x020604,3, -0x020614,4, -0x0207f0,1, -0x020800,1, -0x020808,10, -0x020834,16, -0x020880,33, -0x020910,5, -0x020928,2, -0x020934,1, -0x02093c,13, -0x020974,9, -0x0209a0,17, -0x0209e8,2, -0x020a04,3, -0x020a14,4, -0x020bf0,1, -0x020c00,1, -0x020c08,10, -0x020c34,16, -0x020c80,33, -0x020d10,5, -0x020d28,2, -0x020d34,1, -0x020d3c,13, -0x020d74,9, -0x020da0,17, -0x020de8,2, -0x020e04,3, -0x020e14,4, -0x020ff0,1, -0x021000,1, -0x021008,10, -0x021034,16, -0x021080,33, -0x021110,5, -0x021128,2, -0x021134,1, -0x02113c,13, -0x021174,9, -0x0211a0,17, -0x0211e8,2, -0x021204,3, -0x021214,4, -0x0213f0,1, -0x021400,1, -0x021408,10, -0x021434,16, -0x021480,33, -0x021510,5, -0x021528,2, -0x021534,1, -0x02153c,13, -0x021574,9, -0x0215a0,17, -0x0215e8,2, -0x021604,3, -0x021614,4, -0x0217f0,1, -0x021800,1, -0x021808,10, -0x021834,16, -0x021880,33, -0x021910,5, -0x021928,2, -0x021934,1, -0x02193c,13, -0x021974,9, -0x0219a0,17, -0x0219e8,2, -0x021a04,3, -0x021a14,4, -0x021bf0,1, -0x021c00,1, -0x021c08,10, -0x021c34,16, -0x021c80,33, -0x021d10,5, -0x021d28,2, -0x021d34,1, -0x021d3c,13, -0x021d74,9, -0x021da0,17, -0x021de8,2, -0x021e04,3, -0x021e14,4, -0x021ff0,1, -0x022000,1, -0x022008,10, -0x022034,16, -0x022080,33, -0x022110,5, -0x022128,2, -0x022134,1, -0x02213c,13, -0x022174,9, -0x0221a0,17, -0x0221e8,2, -0x022204,3, -0x022214,4, -0x0223f0,1, -0x022400,1, -0x022408,10, -0x022434,16, -0x022480,33, -0x022510,5, -0x022528,2, -0x022534,1, -0x02253c,13, -0x022574,9, -0x0225a0,17, -0x0225e8,2, -0x022604,3, -0x022614,4, -0x0227f0,1, -0x022800,1, -0x022808,10, -0x022834,16, -0x022880,33, -0x022910,5, -0x022928,2, -0x022934,1, -0x02293c,13, -0x022974,9, -0x0229a0,17, -0x0229e8,2, -0x022a04,3, -0x022a14,4, -0x022bf0,1, -0x022c00,1, -0x022c08,10, -0x022c34,16, -0x022c80,33, -0x022d10,5, -0x022d28,2, -0x022d34,1, -0x022d3c,13, -0x022d74,9, -0x022da0,17, -0x022de8,2, -0x022e04,3, -0x022e14,4, -0x022ff0,1, -0x023000,1, -0x023008,10, -0x023034,16, -0x023080,33, -0x023110,5, -0x023128,2, -0x023134,1, -0x02313c,13, -0x023174,9, -0x0231a0,17, -0x0231e8,2, -0x023204,3, -0x023214,4, -0x0233f0,1, -0x023400,1, -0x023408,10, -0x023434,16, -0x023480,33, -0x023510,5, -0x023528,2, -0x023534,1, -0x02353c,13, -0x023574,9, -0x0235a0,17, -0x0235e8,2, -0x023604,3, -0x023614,4, -0x0237f0,1, -0x023800,1, -0x023808,10, -0x023834,16, -0x023880,33, -0x023910,5, -0x023928,2, -0x023934,1, -0x02393c,13, -0x023974,9, -0x0239a0,17, -0x0239e8,2, -0x023a04,3, -0x023a14,4, -0x023bf0,1, -0x023c00,1, -0x023c08,10, -0x023c34,16, -0x023c80,33, -0x023d10,5, -0x023d28,2, -0x023d34,1, -0x023d3c,13, -0x023d74,9, -0x023da0,17, -0x023de8,2, -0x023e04,3, -0x023e14,4, -0x023ff0,1, -0x025000,4, -0x025028,4, -0x025050,4, -0x025078,4, -0x0250a0,5, +0x01950c,3, +0x020000,65, +0x020110,2, +0x020120,6, +0x020140,6, +0x020164,3, +0x020174,4, +0x020188,10, +0x0201b4,16, +0x020200,17, +0x020248,1, +0x020250,17, +0x020298,1, +0x0202a0,17, +0x0202e8,1, +0x0202f0,17, +0x020338,1, +0x020340,3, +0x020350,3, +0x02038c,2, +0x0203a4,1, +0x0203ac,15, +0x0203f4,68, +0x020510,2, +0x020520,6, +0x020540,6, +0x020564,3, +0x020574,4, +0x020588,10, +0x0205b4,16, +0x020600,17, +0x020648,1, +0x020650,17, +0x020698,1, +0x0206a0,17, +0x0206e8,1, +0x0206f0,17, +0x020738,1, +0x020740,3, +0x020750,3, +0x02078c,2, +0x0207a4,1, +0x0207ac,15, +0x0207f4,68, +0x020910,2, +0x020920,6, +0x020940,6, +0x020964,3, +0x020974,4, +0x020988,10, +0x0209b4,16, +0x020a00,17, +0x020a48,1, +0x020a50,17, +0x020a98,1, +0x020aa0,17, +0x020ae8,1, +0x020af0,17, +0x020b38,1, +0x020b40,3, +0x020b50,3, +0x020b8c,2, +0x020ba4,1, +0x020bac,15, +0x020bf4,68, +0x020d10,2, +0x020d20,6, +0x020d40,6, +0x020d64,3, +0x020d74,4, +0x020d88,10, +0x020db4,16, +0x020e00,17, +0x020e48,1, +0x020e50,17, +0x020e98,1, +0x020ea0,17, +0x020ee8,1, +0x020ef0,17, +0x020f38,1, +0x020f40,3, +0x020f50,3, +0x020f8c,2, +0x020fa4,1, +0x020fac,15, +0x020ff4,68, +0x021110,2, +0x021120,6, +0x021140,6, +0x021164,3, +0x021174,4, +0x021188,10, +0x0211b4,16, +0x021200,17, +0x021248,1, +0x021250,17, +0x021298,1, +0x0212a0,17, +0x0212e8,1, +0x0212f0,17, +0x021338,1, +0x021340,3, +0x021350,3, +0x02138c,2, +0x0213a4,1, +0x0213ac,15, +0x0213f4,68, +0x021510,2, +0x021520,6, +0x021540,6, +0x021564,3, +0x021574,4, +0x021588,10, +0x0215b4,16, +0x021600,17, +0x021648,1, +0x021650,17, +0x021698,1, +0x0216a0,17, +0x0216e8,1, +0x0216f0,17, +0x021738,1, +0x021740,3, +0x021750,3, +0x02178c,2, +0x0217a4,1, +0x0217ac,15, +0x0217f4,68, +0x021910,2, +0x021920,6, +0x021940,6, +0x021964,3, +0x021974,4, +0x021988,10, +0x0219b4,16, +0x021a00,17, +0x021a48,1, +0x021a50,17, +0x021a98,1, +0x021aa0,17, +0x021ae8,1, +0x021af0,17, +0x021b38,1, +0x021b40,3, +0x021b50,3, +0x021b8c,2, +0x021ba4,1, +0x021bac,15, +0x021bf4,68, +0x021d10,2, +0x021d20,6, +0x021d40,6, +0x021d64,3, +0x021d74,4, +0x021d88,10, +0x021db4,16, +0x021e00,17, +0x021e48,1, +0x021e50,17, +0x021e98,1, +0x021ea0,17, +0x021ee8,1, +0x021ef0,17, +0x021f38,1, +0x021f40,3, +0x021f50,3, +0x021f8c,2, +0x021fa4,1, +0x021fac,15, +0x021ff4,68, +0x022110,2, +0x022120,6, +0x022140,6, +0x022164,3, +0x022174,4, +0x022188,10, +0x0221b4,16, +0x022200,17, +0x022248,1, +0x022250,17, +0x022298,1, +0x0222a0,17, +0x0222e8,1, +0x0222f0,17, +0x022338,1, +0x022340,3, +0x022350,3, +0x02238c,2, +0x0223a4,1, +0x0223ac,15, +0x0223f4,68, +0x022510,2, +0x022520,6, +0x022540,6, +0x022564,3, +0x022574,4, +0x022588,10, +0x0225b4,16, +0x022600,17, +0x022648,1, +0x022650,17, +0x022698,1, +0x0226a0,17, +0x0226e8,1, +0x0226f0,17, +0x022738,1, +0x022740,3, +0x022750,3, +0x02278c,2, +0x0227a4,1, +0x0227ac,15, +0x0227f4,68, +0x022910,2, +0x022920,6, +0x022940,6, +0x022964,3, +0x022974,4, +0x022988,10, +0x0229b4,16, +0x022a00,17, +0x022a48,1, +0x022a50,17, +0x022a98,1, +0x022aa0,17, +0x022ae8,1, +0x022af0,17, +0x022b38,1, +0x022b40,3, +0x022b50,3, +0x022b8c,2, +0x022ba4,1, +0x022bac,15, +0x022bf4,68, +0x022d10,2, +0x022d20,6, +0x022d40,6, +0x022d64,3, +0x022d74,4, +0x022d88,10, +0x022db4,16, +0x022e00,17, +0x022e48,1, +0x022e50,17, +0x022e98,1, +0x022ea0,17, +0x022ee8,1, +0x022ef0,17, +0x022f38,1, +0x022f40,3, +0x022f50,3, +0x022f8c,2, +0x022fa4,1, +0x022fac,15, +0x022ff4,68, +0x023110,2, +0x023120,6, +0x023140,6, +0x023164,3, +0x023174,4, +0x023188,10, +0x0231b4,16, +0x023200,17, +0x023248,1, +0x023250,17, +0x023298,1, +0x0232a0,17, +0x0232e8,1, +0x0232f0,17, +0x023338,1, +0x023340,3, +0x023350,3, +0x02338c,2, +0x0233a4,1, +0x0233ac,15, +0x0233f4,68, +0x023510,2, +0x023520,6, +0x023540,6, +0x023564,3, +0x023574,4, +0x023588,10, +0x0235b4,16, +0x023600,17, +0x023648,1, +0x023650,17, +0x023698,1, +0x0236a0,17, +0x0236e8,1, +0x0236f0,17, +0x023738,1, +0x023740,3, +0x023750,3, +0x02378c,2, +0x0237a4,1, +0x0237ac,15, +0x0237f4,68, +0x023910,2, +0x023920,6, +0x023940,6, +0x023964,3, +0x023974,4, +0x023988,10, +0x0239b4,16, +0x023a00,17, +0x023a48,1, +0x023a50,17, +0x023a98,1, +0x023aa0,17, +0x023ae8,1, +0x023af0,17, +0x023b38,1, +0x023b40,3, +0x023b50,3, +0x023b8c,2, +0x023ba4,1, +0x023bac,15, +0x023bf4,68, +0x023d10,2, +0x023d20,6, +0x023d40,6, +0x023d64,3, +0x023d74,4, +0x023d88,10, +0x023db4,16, +0x023e00,17, +0x023e48,1, +0x023e50,17, +0x023e98,1, +0x023ea0,17, +0x023ee8,1, +0x023ef0,17, +0x023f38,1, +0x023f40,3, +0x023f50,3, +0x023f8c,2, +0x023fa4,1, +0x023fac,15, +0x023ff4,5, +0x02400c,37, +0x0240a4,64, +0x024200,15, +0x024240,68, +0x024354,2, +0x024370,1, +0x02437c,1, +0x024384,1, +0x02438c,3, +0x0243b0,1, +0x024480,40, +0x024528,4, +0x024560,4, +0x02457c,20, +0x024600,6, +0x024620,6, +0x024730,2, +0x024740,1, +0x025000,5, +0x025028,5, +0x025050,5, +0x025078,5, +0x0250a0,7, 0x0251ac,1, 0x0251d8,4, 0x025200,6, @@ -1702,241 +1835,376 @@ 0x0252a0,6, 0x0252c0,6, 0x0252e0,6, -0x025300,3, -0x025400,6, -0x025420,3, +0x025300,6, +0x025320,6, +0x025340,3, 0x025440,3, 0x025500,13, +0x025580,3, +0x025590,3, +0x0255c0,6, +0x0255e0,3, 0x025900,1, -0x028000,1, -0x028008,10, -0x028034,16, -0x028080,33, -0x028110,5, -0x028128,2, -0x028134,1, -0x02813c,13, -0x028174,9, -0x0281a0,17, -0x0281e8,2, -0x028204,3, -0x028214,4, -0x0283f0,1, -0x028400,1, -0x028408,10, -0x028434,16, -0x028480,33, -0x028510,5, -0x028528,2, -0x028534,1, -0x02853c,13, -0x028574,9, -0x0285a0,17, -0x0285e8,2, -0x028604,3, -0x028614,4, -0x0287f0,1, -0x028800,1, -0x028808,10, -0x028834,16, -0x028880,33, -0x028910,5, -0x028928,2, -0x028934,1, -0x02893c,13, -0x028974,9, -0x0289a0,17, -0x0289e8,2, -0x028a04,3, -0x028a14,4, -0x028bf0,1, -0x028c00,1, -0x028c08,10, -0x028c34,16, -0x028c80,33, -0x028d10,5, -0x028d28,2, -0x028d34,1, -0x028d3c,13, -0x028d74,9, -0x028da0,17, -0x028de8,2, -0x028e04,3, -0x028e14,4, -0x028ff0,1, -0x029000,1, -0x029008,10, -0x029034,16, -0x029080,33, -0x029110,5, -0x029128,2, -0x029134,1, -0x02913c,13, -0x029174,9, -0x0291a0,17, -0x0291e8,2, -0x029204,3, -0x029214,4, -0x0293f0,1, -0x029400,1, -0x029408,10, -0x029434,16, -0x029480,33, -0x029510,5, -0x029528,2, -0x029534,1, -0x02953c,13, -0x029574,9, -0x0295a0,17, -0x0295e8,2, -0x029604,3, -0x029614,4, -0x0297f0,1, -0x029800,1, -0x029808,10, -0x029834,16, -0x029880,33, -0x029910,5, -0x029928,2, -0x029934,1, -0x02993c,13, -0x029974,9, -0x0299a0,17, -0x0299e8,2, -0x029a04,3, -0x029a14,4, -0x029bf0,1, -0x029c00,1, -0x029c08,10, -0x029c34,16, -0x029c80,33, -0x029d10,5, -0x029d28,2, -0x029d34,1, -0x029d3c,13, -0x029d74,9, -0x029da0,17, -0x029de8,2, -0x029e04,3, -0x029e14,4, -0x029ff0,1, -0x02a000,1, -0x02a008,10, -0x02a034,16, -0x02a080,33, -0x02a110,5, -0x02a128,2, -0x02a134,1, -0x02a13c,13, -0x02a174,9, -0x02a1a0,17, -0x02a1e8,2, -0x02a204,3, -0x02a214,4, -0x02a3f0,1, -0x02a400,1, -0x02a408,10, -0x02a434,16, -0x02a480,33, -0x02a510,5, -0x02a528,2, -0x02a534,1, -0x02a53c,13, -0x02a574,9, -0x02a5a0,17, -0x02a5e8,2, -0x02a604,3, -0x02a614,4, -0x02a7f0,1, -0x02a800,1, -0x02a808,10, -0x02a834,16, -0x02a880,33, -0x02a910,5, -0x02a928,2, -0x02a934,1, -0x02a93c,13, -0x02a974,9, -0x02a9a0,17, -0x02a9e8,2, -0x02aa04,3, -0x02aa14,4, -0x02abf0,1, -0x02ac00,1, -0x02ac08,10, -0x02ac34,16, -0x02ac80,33, -0x02ad10,5, -0x02ad28,2, -0x02ad34,1, -0x02ad3c,13, -0x02ad74,9, -0x02ada0,17, -0x02ade8,2, -0x02ae04,3, -0x02ae14,4, -0x02aff0,1, -0x02b000,1, -0x02b008,10, -0x02b034,16, -0x02b080,33, -0x02b110,5, -0x02b128,2, -0x02b134,1, -0x02b13c,13, -0x02b174,9, -0x02b1a0,17, -0x02b1e8,2, -0x02b204,3, -0x02b214,4, -0x02b3f0,1, -0x02b400,1, -0x02b408,10, -0x02b434,16, -0x02b480,33, -0x02b510,5, -0x02b528,2, -0x02b534,1, -0x02b53c,13, -0x02b574,9, -0x02b5a0,17, -0x02b5e8,2, -0x02b604,3, -0x02b614,4, -0x02b7f0,1, -0x02b800,1, -0x02b808,10, -0x02b834,16, -0x02b880,33, -0x02b910,5, -0x02b928,2, -0x02b934,1, -0x02b93c,13, -0x02b974,9, -0x02b9a0,17, -0x02b9e8,2, -0x02ba04,3, -0x02ba14,4, -0x02bbf0,1, -0x02bc00,1, -0x02bc08,10, -0x02bc34,16, -0x02bc80,33, -0x02bd10,5, -0x02bd28,2, -0x02bd34,1, -0x02bd3c,13, -0x02bd74,9, -0x02bda0,17, -0x02bde8,2, -0x02be04,3, -0x02be14,4, -0x02bff0,1, -0x02d000,4, -0x02d028,4, -0x02d050,4, -0x02d078,4, -0x02d0a0,5, +0x028000,65, +0x028110,2, +0x028120,6, +0x028140,6, +0x028164,3, +0x028174,4, +0x028188,10, +0x0281b4,16, +0x028200,17, +0x028248,1, +0x028250,17, +0x028298,1, +0x0282a0,17, +0x0282e8,1, +0x0282f0,17, +0x028338,1, +0x028340,3, +0x028350,3, +0x02838c,2, +0x0283a4,1, +0x0283ac,15, +0x0283f4,68, +0x028510,2, +0x028520,6, +0x028540,6, +0x028564,3, +0x028574,4, +0x028588,10, +0x0285b4,16, +0x028600,17, +0x028648,1, +0x028650,17, +0x028698,1, +0x0286a0,17, +0x0286e8,1, +0x0286f0,17, +0x028738,1, +0x028740,3, +0x028750,3, +0x02878c,2, +0x0287a4,1, +0x0287ac,15, +0x0287f4,68, +0x028910,2, +0x028920,6, +0x028940,6, +0x028964,3, +0x028974,4, +0x028988,10, +0x0289b4,16, +0x028a00,17, +0x028a48,1, +0x028a50,17, +0x028a98,1, +0x028aa0,17, +0x028ae8,1, +0x028af0,17, +0x028b38,1, +0x028b40,3, +0x028b50,3, +0x028b8c,2, +0x028ba4,1, +0x028bac,15, +0x028bf4,68, +0x028d10,2, +0x028d20,6, +0x028d40,6, +0x028d64,3, +0x028d74,4, +0x028d88,10, +0x028db4,16, +0x028e00,17, +0x028e48,1, +0x028e50,17, +0x028e98,1, +0x028ea0,17, +0x028ee8,1, +0x028ef0,17, +0x028f38,1, +0x028f40,3, +0x028f50,3, +0x028f8c,2, +0x028fa4,1, +0x028fac,15, +0x028ff4,68, +0x029110,2, +0x029120,6, +0x029140,6, +0x029164,3, +0x029174,4, +0x029188,10, +0x0291b4,16, +0x029200,17, +0x029248,1, +0x029250,17, +0x029298,1, +0x0292a0,17, +0x0292e8,1, +0x0292f0,17, +0x029338,1, +0x029340,3, +0x029350,3, +0x02938c,2, +0x0293a4,1, +0x0293ac,15, +0x0293f4,68, +0x029510,2, +0x029520,6, +0x029540,6, +0x029564,3, +0x029574,4, +0x029588,10, +0x0295b4,16, +0x029600,17, +0x029648,1, +0x029650,17, +0x029698,1, +0x0296a0,17, +0x0296e8,1, +0x0296f0,17, +0x029738,1, +0x029740,3, +0x029750,3, +0x02978c,2, +0x0297a4,1, +0x0297ac,15, +0x0297f4,68, +0x029910,2, +0x029920,6, +0x029940,6, +0x029964,3, +0x029974,4, +0x029988,10, +0x0299b4,16, +0x029a00,17, +0x029a48,1, +0x029a50,17, +0x029a98,1, +0x029aa0,17, +0x029ae8,1, +0x029af0,17, +0x029b38,1, +0x029b40,3, +0x029b50,3, +0x029b8c,2, +0x029ba4,1, +0x029bac,15, +0x029bf4,68, +0x029d10,2, +0x029d20,6, +0x029d40,6, +0x029d64,3, +0x029d74,4, +0x029d88,10, +0x029db4,16, +0x029e00,17, +0x029e48,1, +0x029e50,17, +0x029e98,1, +0x029ea0,17, +0x029ee8,1, +0x029ef0,17, +0x029f38,1, +0x029f40,3, +0x029f50,3, +0x029f8c,2, +0x029fa4,1, +0x029fac,15, +0x029ff4,68, +0x02a110,2, +0x02a120,6, +0x02a140,6, +0x02a164,3, +0x02a174,4, +0x02a188,10, +0x02a1b4,16, +0x02a200,17, +0x02a248,1, +0x02a250,17, +0x02a298,1, +0x02a2a0,17, +0x02a2e8,1, +0x02a2f0,17, +0x02a338,1, +0x02a340,3, +0x02a350,3, +0x02a38c,2, +0x02a3a4,1, +0x02a3ac,15, +0x02a3f4,68, +0x02a510,2, +0x02a520,6, +0x02a540,6, +0x02a564,3, +0x02a574,4, +0x02a588,10, +0x02a5b4,16, +0x02a600,17, +0x02a648,1, +0x02a650,17, +0x02a698,1, +0x02a6a0,17, +0x02a6e8,1, +0x02a6f0,17, +0x02a738,1, +0x02a740,3, +0x02a750,3, +0x02a78c,2, +0x02a7a4,1, +0x02a7ac,15, +0x02a7f4,68, +0x02a910,2, +0x02a920,6, +0x02a940,6, +0x02a964,3, +0x02a974,4, +0x02a988,10, +0x02a9b4,16, +0x02aa00,17, +0x02aa48,1, +0x02aa50,17, +0x02aa98,1, +0x02aaa0,17, +0x02aae8,1, +0x02aaf0,17, +0x02ab38,1, +0x02ab40,3, +0x02ab50,3, +0x02ab8c,2, +0x02aba4,1, +0x02abac,15, +0x02abf4,68, +0x02ad10,2, +0x02ad20,6, +0x02ad40,6, +0x02ad64,3, +0x02ad74,4, +0x02ad88,10, +0x02adb4,16, +0x02ae00,17, +0x02ae48,1, +0x02ae50,17, +0x02ae98,1, +0x02aea0,17, +0x02aee8,1, +0x02aef0,17, +0x02af38,1, +0x02af40,3, +0x02af50,3, +0x02af8c,2, +0x02afa4,1, +0x02afac,15, +0x02aff4,68, +0x02b110,2, +0x02b120,6, +0x02b140,6, +0x02b164,3, +0x02b174,4, +0x02b188,10, +0x02b1b4,16, +0x02b200,17, +0x02b248,1, +0x02b250,17, +0x02b298,1, +0x02b2a0,17, +0x02b2e8,1, +0x02b2f0,17, +0x02b338,1, +0x02b340,3, +0x02b350,3, +0x02b38c,2, +0x02b3a4,1, +0x02b3ac,15, +0x02b3f4,68, +0x02b510,2, +0x02b520,6, +0x02b540,6, +0x02b564,3, +0x02b574,4, +0x02b588,10, +0x02b5b4,16, +0x02b600,17, +0x02b648,1, +0x02b650,17, +0x02b698,1, +0x02b6a0,17, +0x02b6e8,1, +0x02b6f0,17, +0x02b738,1, +0x02b740,3, +0x02b750,3, +0x02b78c,2, +0x02b7a4,1, +0x02b7ac,15, +0x02b7f4,68, +0x02b910,2, +0x02b920,6, +0x02b940,6, +0x02b964,3, +0x02b974,4, +0x02b988,10, +0x02b9b4,16, +0x02ba00,17, +0x02ba48,1, +0x02ba50,17, +0x02ba98,1, +0x02baa0,17, +0x02bae8,1, +0x02baf0,17, +0x02bb38,1, +0x02bb40,3, +0x02bb50,3, +0x02bb8c,2, +0x02bba4,1, +0x02bbac,15, +0x02bbf4,68, +0x02bd10,2, +0x02bd20,6, +0x02bd40,6, +0x02bd64,3, +0x02bd74,4, +0x02bd88,10, +0x02bdb4,16, +0x02be00,17, +0x02be48,1, +0x02be50,17, +0x02be98,1, +0x02bea0,17, +0x02bee8,1, +0x02bef0,17, +0x02bf38,1, +0x02bf40,3, +0x02bf50,3, +0x02bf8c,2, +0x02bfa4,1, +0x02bfac,15, +0x02bff4,5, +0x02c00c,37, +0x02c0a4,64, +0x02c200,15, +0x02c240,68, +0x02c354,2, +0x02c370,1, +0x02c37c,1, +0x02c384,1, +0x02c38c,3, +0x02c3b0,1, +0x02c480,40, +0x02c528,4, +0x02c560,4, +0x02c57c,20, +0x02c600,6, +0x02c620,6, +0x02c730,2, +0x02c740,1, +0x02d000,5, +0x02d028,5, +0x02d050,5, +0x02d078,5, +0x02d0a0,7, 0x02d1ac,1, 0x02d1d8,4, 0x02d200,6, @@ -1947,223 +2215,226 @@ 0x02d2a0,6, 0x02d2c0,6, 0x02d2e0,6, -0x02d300,3, -0x02d400,6, -0x02d420,3, +0x02d300,6, +0x02d320,6, +0x02d340,3, 0x02d440,3, 0x02d500,13, +0x02d580,3, +0x02d590,3, +0x02d5c0,6, +0x02d5e0,3, 0x02d900,1, -0x030000,37, -0x030100,37, -0x030200,37, -0x030300,37, -0x030400,37, -0x030500,37, -0x030600,37, -0x030700,37, -0x030800,37, -0x030900,37, -0x030a00,37, -0x030b00,37, -0x030c00,37, -0x030d00,37, -0x030e00,37, -0x030f00,37, -0x031000,37, -0x031100,37, -0x031200,37, -0x031300,37, -0x031400,37, -0x031500,37, -0x031600,37, -0x031700,37, -0x031800,37, -0x031900,37, -0x031a00,37, -0x031b00,37, -0x031c00,37, -0x031d00,37, -0x031e00,37, -0x031f00,37, +0x030000,38, +0x030100,38, +0x030200,38, +0x030300,38, +0x030400,38, +0x030500,38, +0x030600,38, +0x030700,38, +0x030800,38, +0x030900,38, +0x030a00,38, +0x030b00,38, +0x030c00,38, +0x030d00,38, +0x030e00,38, +0x030f00,38, +0x031000,38, +0x031100,38, +0x031200,38, +0x031300,38, +0x031400,38, +0x031500,38, +0x031600,38, +0x031700,38, +0x031800,38, +0x031900,38, +0x031a00,38, +0x031b00,38, +0x031c00,38, +0x031d00,38, +0x031e00,38, +0x031f00,38, 0x032000,6, -0x032020,6, -0x032040,3, -0x032054,2, +0x032020,7, +0x032040,4, +0x032054,3, 0x03206c,1, 0x032080,6, -0x0320a0,6, -0x0320c0,3, -0x0320d4,2, +0x0320a0,7, +0x0320c0,4, +0x0320d4,3, 0x0320ec,1, 0x032100,6, -0x032120,6, -0x032140,3, -0x032154,2, +0x032120,7, +0x032140,4, +0x032154,3, 0x03216c,1, 0x032180,6, -0x0321a0,6, -0x0321c0,3, -0x0321d4,2, +0x0321a0,7, +0x0321c0,4, +0x0321d4,3, 0x0321ec,1, 0x032200,6, -0x032220,6, -0x032240,3, -0x032254,2, +0x032220,7, +0x032240,4, +0x032254,3, 0x03226c,1, 0x032280,6, -0x0322a0,6, -0x0322c0,3, -0x0322d4,2, +0x0322a0,7, +0x0322c0,4, +0x0322d4,3, 0x0322ec,1, 0x032300,6, -0x032320,6, -0x032340,3, -0x032354,2, +0x032320,7, +0x032340,4, +0x032354,3, 0x03236c,1, 0x032380,6, -0x0323a0,6, -0x0323c0,3, -0x0323d4,2, +0x0323a0,7, +0x0323c0,4, +0x0323d4,3, 0x0323ec,1, 0x032400,6, -0x032420,6, -0x032440,3, -0x032454,2, +0x032420,7, +0x032440,4, +0x032454,3, 0x03246c,1, 0x032480,6, -0x0324a0,6, -0x0324c0,3, -0x0324d4,2, +0x0324a0,7, +0x0324c0,4, +0x0324d4,3, 0x0324ec,1, 0x032500,6, -0x032520,6, -0x032540,3, -0x032554,2, +0x032520,7, +0x032540,4, +0x032554,3, 0x03256c,1, 0x032580,6, -0x0325a0,6, -0x0325c0,3, -0x0325d4,2, +0x0325a0,7, +0x0325c0,4, +0x0325d4,3, 0x0325ec,1, 0x032600,6, -0x032620,6, -0x032640,3, -0x032654,2, +0x032620,7, +0x032640,4, +0x032654,3, 0x03266c,1, 0x032680,6, -0x0326a0,6, -0x0326c0,3, -0x0326d4,2, +0x0326a0,7, +0x0326c0,4, +0x0326d4,3, 0x0326ec,1, 0x032700,6, -0x032720,6, -0x032740,3, -0x032754,2, +0x032720,7, +0x032740,4, +0x032754,3, 0x03276c,1, 0x032780,6, -0x0327a0,6, -0x0327c0,3, -0x0327d4,2, +0x0327a0,7, +0x0327c0,4, +0x0327d4,3, 0x0327ec,1, 0x032800,6, -0x032820,6, -0x032840,3, -0x032854,2, +0x032820,7, +0x032840,4, +0x032854,3, 0x03286c,1, 0x032880,6, -0x0328a0,6, -0x0328c0,3, -0x0328d4,2, +0x0328a0,7, +0x0328c0,4, +0x0328d4,3, 0x0328ec,1, 0x032900,6, -0x032920,6, -0x032940,3, -0x032954,2, +0x032920,7, +0x032940,4, +0x032954,3, 0x03296c,1, 0x032980,6, -0x0329a0,6, -0x0329c0,3, -0x0329d4,2, +0x0329a0,7, +0x0329c0,4, +0x0329d4,3, 0x0329ec,1, 0x032a00,6, -0x032a20,6, -0x032a40,3, -0x032a54,2, +0x032a20,7, +0x032a40,4, +0x032a54,3, 0x032a6c,1, 0x032a80,6, -0x032aa0,6, -0x032ac0,3, -0x032ad4,2, +0x032aa0,7, +0x032ac0,4, +0x032ad4,3, 0x032aec,1, 0x032b00,6, -0x032b20,6, -0x032b40,3, -0x032b54,2, +0x032b20,7, +0x032b40,4, +0x032b54,3, 0x032b6c,1, 0x032b80,6, -0x032ba0,6, -0x032bc0,3, -0x032bd4,2, +0x032ba0,7, +0x032bc0,4, +0x032bd4,3, 0x032bec,1, 0x032c00,6, -0x032c20,6, -0x032c40,3, -0x032c54,2, +0x032c20,7, +0x032c40,4, +0x032c54,3, 0x032c6c,1, 0x032c80,6, -0x032ca0,6, -0x032cc0,3, -0x032cd4,2, +0x032ca0,7, +0x032cc0,4, +0x032cd4,3, 0x032cec,1, 0x032d00,6, -0x032d20,6, -0x032d40,3, -0x032d54,2, +0x032d20,7, +0x032d40,4, +0x032d54,3, 0x032d6c,1, 0x032d80,6, -0x032da0,6, -0x032dc0,3, -0x032dd4,2, +0x032da0,7, +0x032dc0,4, +0x032dd4,3, 0x032dec,1, 0x032e00,6, -0x032e20,6, -0x032e40,3, -0x032e54,2, +0x032e20,7, +0x032e40,4, +0x032e54,3, 0x032e6c,1, 0x032e80,6, -0x032ea0,6, -0x032ec0,3, -0x032ed4,2, +0x032ea0,7, +0x032ec0,4, +0x032ed4,3, 0x032eec,1, 0x032f00,6, -0x032f20,6, -0x032f40,3, -0x032f54,2, +0x032f20,7, +0x032f40,4, +0x032f54,3, 0x032f6c,1, 0x032f80,6, -0x032fa0,6, -0x032fc0,3, -0x032fd4,2, +0x032fa0,7, +0x032fc0,4, +0x032fd4,3, 0x032fec,1, 0x033000,6, -0x033020,6, -0x033040,3, -0x033054,2, +0x033020,7, +0x033040,4, +0x033054,3, 0x03306c,1, 0x033080,6, -0x0330a0,6, -0x0330c0,3, -0x0330d4,2, +0x0330a0,7, +0x0330c0,4, +0x0330d4,3, 0x0330ec,1, -0x033100,37, +0x033100,38, 0x033200,13, 0x033240,6, 0x033260,3, 0x0332c0,3, 0x0332d0,3, 0x033300,7, -0x0333fc,33, -0x033490,2, +0x0333fc,1, 0x033500,33, 0x033600,2, 0x033800,6, @@ -2201,187 +2472,154 @@ 0x033de0,6, 0x033e00,6, 0x033e20,3, -0x034000,8, -0x034024,13, +0x034000,10, +0x03402c,11, 0x034068,1, -0x034070,12, -0x0340a4,13, +0x034070,14, +0x0340ac,11, 0x0340e8,1, -0x0340f0,12, -0x034124,13, +0x0340f0,14, +0x03412c,11, 0x034168,1, -0x034170,12, -0x0341a4,13, +0x034170,14, +0x0341ac,11, 0x0341e8,1, -0x0341f0,12, -0x034224,13, +0x0341f0,14, +0x03422c,11, 0x034268,1, -0x034270,12, -0x0342a4,13, +0x034270,14, +0x0342ac,11, 0x0342e8,1, -0x0342f0,12, -0x034324,13, +0x0342f0,14, +0x03432c,11, 0x034368,1, -0x034370,12, -0x0343a4,13, +0x034370,14, +0x0343ac,11, 0x0343e8,1, -0x0343f0,12, -0x034424,13, +0x0343f0,14, +0x03442c,11, 0x034468,1, -0x034470,12, -0x0344a4,13, +0x034470,14, +0x0344ac,11, 0x0344e8,1, -0x0344f0,12, -0x034524,13, +0x0344f0,14, +0x03452c,11, 0x034568,1, -0x034570,12, -0x0345a4,13, +0x034570,14, +0x0345ac,11, 0x0345e8,1, -0x0345f0,12, -0x034624,13, +0x0345f0,14, +0x03462c,11, 0x034668,1, -0x034670,12, -0x0346a4,13, +0x034670,14, +0x0346ac,11, 0x0346e8,1, -0x0346f0,12, -0x034724,13, +0x0346f0,14, +0x03472c,11, 0x034768,1, -0x034770,12, -0x0347a4,13, +0x034770,14, +0x0347ac,11, 0x0347e8,1, -0x0347f0,12, -0x034824,13, +0x0347f0,14, +0x03482c,11, 0x034868,1, -0x034870,12, -0x0348a4,13, +0x034870,14, +0x0348ac,11, 0x0348e8,1, -0x0348f0,12, -0x034924,13, +0x0348f0,14, +0x03492c,11, 0x034968,1, -0x034970,12, -0x0349a4,13, +0x034970,14, +0x0349ac,11, 0x0349e8,1, -0x0349f0,12, -0x034a24,13, +0x0349f0,14, +0x034a2c,11, 0x034a68,1, -0x034a70,12, -0x034aa4,13, +0x034a70,14, +0x034aac,11, 0x034ae8,1, -0x034af0,12, -0x034b24,13, +0x034af0,14, +0x034b2c,11, 0x034b68,1, -0x034b70,12, -0x034ba4,13, +0x034b70,14, +0x034bac,11, 0x034be8,1, -0x034bf0,12, -0x034c24,13, +0x034bf0,14, +0x034c2c,11, 0x034c68,1, -0x034c70,12, -0x034ca4,13, +0x034c70,14, +0x034cac,11, 0x034ce8,1, -0x034cf0,12, -0x034d24,13, +0x034cf0,14, +0x034d2c,11, 0x034d68,1, -0x034d70,12, -0x034da4,13, +0x034d70,14, +0x034dac,11, 0x034de8,1, -0x034df0,12, -0x034e24,13, +0x034df0,14, +0x034e2c,11, 0x034e68,1, -0x034e70,12, -0x034ea4,13, +0x034e70,14, +0x034eac,11, 0x034ee8,1, -0x034ef0,12, -0x034f24,13, +0x034ef0,14, +0x034f2c,11, 0x034f68,1, -0x034f70,12, -0x034fa4,13, +0x034f70,14, +0x034fac,11, 0x034fe8,1, -0x034ff0,4, -0x035200,2, -0x035800,6, -0x035828,2, +0x034ff0,10, +0x03507c,7, +0x0350fc,7, +0x03517c,7, +0x0351fc,7, +0x03527c,7, +0x0352fc,7, +0x03537c,7, +0x0353fc,7, +0x03547c,7, +0x0354fc,7, +0x03557c,7, +0x0355fc,7, +0x03567c,7, +0x0356fc,7, +0x03577c,7, +0x0357fc,7, 0x03587c,7, -0x0358a8,2, 0x0358fc,7, -0x035928,2, 0x03597c,7, -0x0359a8,2, 0x0359fc,7, -0x035a28,2, 0x035a7c,7, -0x035aa8,2, 0x035afc,7, -0x035b28,2, 0x035b7c,7, -0x035ba8,2, 0x035bfc,7, -0x035c28,2, 0x035c7c,7, -0x035ca8,2, 0x035cfc,7, -0x035d28,2, 0x035d7c,7, -0x035da8,2, 0x035dfc,7, -0x035e28,2, 0x035e7c,7, -0x035ea8,2, 0x035efc,7, -0x035f28,2, 0x035f7c,7, -0x035fa8,2, 0x035ffc,7, -0x036028,2, 0x03607c,7, -0x0360a8,2, -0x0360fc,7, -0x036128,2, -0x03617c,7, -0x0361a8,2, -0x0361fc,7, -0x036228,2, -0x03627c,7, -0x0362a8,2, -0x0362fc,7, -0x036328,2, -0x03637c,7, -0x0363a8,2, -0x0363fc,7, -0x036428,2, -0x03647c,7, -0x0364a8,2, -0x0364fc,7, -0x036528,2, -0x03657c,7, -0x0365a8,2, -0x0365fc,7, -0x036628,2, -0x03667c,7, -0x0366a8,2, -0x0366fc,7, -0x036728,2, -0x03677c,7, -0x0367a8,2, -0x0367fc,1, -0x036a00,6, -0x036a28,2, -0x036a40,8, -0x036a7c,1, +0x0360fc,1, +0x037400,2, 0x037410,3, -0x03742c,4, +0x03742c,1, 0x037440,1, 0x037448,1, -0x03745c,4, -0x037480,6, -0x0374a0,6, -0x0374c0,6, -0x0374e0,3, +0x03745c,1, +0x037500,6, +0x037520,6, +0x037540,6, +0x037560,3, +0x037580,6, +0x0375a0,6, 0x037800,6, 0x037828,6, 0x037850,6, 0x037878,6, -0x0378a0,6, +0x0378a0,5, 0x0379ac,1, 0x0379d8,4, 0x037a00,6, @@ -2397,15 +2635,111 @@ 0x037b40,6, 0x037b60,6, 0x037b80,3, -0x037c00,13, 0x037c40,1, 0x037c6c,1, 0x037c80,6, 0x037ca0,6, 0x037cc0,3, 0x037d00,1, -0x037e0c,3, -0x037ffc,1, +0x037e10,2, +0x037ffc,3, +0x03800c,3, +0x03801c,3, +0x03802c,3, +0x03803c,3, +0x03804c,3, +0x03805c,3, +0x03806c,3, +0x03807c,3, +0x03808c,3, +0x03809c,3, +0x0380ac,3, +0x0380bc,3, +0x0380cc,3, +0x0380dc,3, +0x0380ec,3, +0x0380fc,3, +0x03810c,3, +0x03811c,3, +0x03812c,3, +0x03813c,3, +0x03814c,3, +0x03815c,3, +0x03816c,3, +0x03817c,3, +0x03818c,3, +0x03819c,3, +0x0381ac,3, +0x0381bc,3, +0x0381cc,3, +0x0381dc,3, +0x0381ec,3, +0x0381fc,1, +0x0383fc,3, +0x03840c,3, +0x03841c,3, +0x03842c,3, +0x03843c,3, +0x03844c,3, +0x03845c,3, +0x03846c,3, +0x03847c,3, +0x03848c,3, +0x03849c,3, +0x0384ac,3, +0x0384bc,3, +0x0384cc,3, +0x0384dc,3, +0x0384ec,3, +0x0384fc,3, +0x03850c,3, +0x03851c,3, +0x03852c,3, +0x03853c,3, +0x03854c,3, +0x03855c,3, +0x03856c,3, +0x03857c,3, +0x03858c,3, +0x03859c,3, +0x0385ac,3, +0x0385bc,3, +0x0385cc,3, +0x0385dc,3, +0x0385ec,3, +0x0385fc,1, +0x0387f0,1, +0x038800,134, +0x038a20,6, +0x038a40,6, +0x038a60,6, +0x038a80,6, +0x038aa0,6, +0x038ac0,6, +0x038ae0,6, +0x038b00,6, +0x038b20,6, +0x038b40,6, +0x038b60,3, +0x038c00,130, +0x038f08,2, +0x038ff8,8, +0x039020,6, +0x039040,6, +0x039060,6, +0x039080,3, +0x039100,98, +0x03928c,73, +0x0397f8,8, +0x039820,2, +0x039900,4, +0x039914,4, +0x039928,4, +0x03993c,3, +0x0399ec,11, +0x039a20,3, +0x039a40,7, +0x039a60,3, 0x057000,2, 0x05700c,3, 0x057028,2, @@ -2423,44 +2757,46 @@ 0x057840,2, 0x058000,1, 0x058008,1, -0x058010,8, -0x058034,3, -0x058200,1, -0x058208,1, -0x058210,8, -0x058234,3, -0x058400,1, -0x058408,1, -0x058410,8, -0x058434,3, -0x058600,1, -0x058608,1, -0x058610,8, -0x058634,3, +0x058010,14, +0x058100,1, +0x058108,1, +0x058110,14, +0x058200,32, +0x0582f8,34, +0x0583f8,2, 0x058800,6, -0x05881c,4, +0x05881c,6, 0x058a00,11, 0x058a40,11, -0x058a80,11, -0x058ac0,11, -0x058b00,1, -0x058c04,1, -0x058c0c,1, -0x058c20,2, -0x058c34,3, -0x058c44,3, -0x058c54,8, -0x058e00,29, +0x058b00,2, +0x058c04,3, +0x058c14,12, +0x058c84,1, +0x058c8c,1, +0x058ca0,2, +0x058cb4,3, +0x058e00,30, 0x058e80,1, -0x058e88,2, -0x058f00,29, +0x058e88,3, +0x058f00,30, 0x058f80,1, -0x058f88,2, -0x059000,43, -0x059100,53, -0x059200,5, -0x059220,1, -0x059700,1, +0x058f88,3, +0x059000,22, +0x059100,25, +0x059200,10, +0x059240,2, +0x059600,6, +0x0596fc,55, +0x059800,31, +0x059a00,6, +0x059a20,6, +0x059a40,6, +0x059a60,6, +0x059a80,6, +0x059aa0,6, +0x059ac0,6, +0x059ae0,6, +0x059b00,3, 0x059c00,20, 0x059c74,1, 0x059c80,20, @@ -2470,34 +2806,114 @@ 0x059d80,20, 0x059df4,1, 0x059e00,16, -0x05c000,6, -0x05c01c,3, -0x05c02c,3, -0x05c03c,49, -0x05c200,13, -0x05c240,9, -0x05c284,8, -0x05c300,64, -0x05c470,15, -0x05c4b0,3, -0x05d004,3, -0x05d018,4, -0x05d040,31, -0x05d0c0,19, +0x05a800,3, +0x05a814,31, +0x05a8a0,10, +0x05a8d0,1, +0x05a900,6, +0x05a920,6, +0x05a940,6, +0x05a960,6, +0x05a980,6, +0x05a9a0,6, +0x05a9c0,3, +0x05aa00,7, +0x05aa20,3, +0x05aa30,1, +0x05ac00,12, +0x05ac34,22, +0x05ad00,6, +0x05ad20,6, +0x05ad40,6, +0x05ad60,6, +0x05ad80,6, +0x05ada0,3, +0x05ae00,7, +0x05ae20,3, +0x05ae30,1, +0x05b000,6, +0x05b020,6, +0x05b040,3, +0x05b0f0,3, +0x05b100,6, +0x05b120,6, +0x05b140,3, +0x05b1f0,3, +0x05b200,5, +0x05b218,2, +0x05b400,6, +0x05b420,6, +0x05b440,3, +0x05b4f0,3, +0x05b500,6, +0x05b520,6, +0x05b540,3, +0x05b5f0,3, +0x05b600,5, +0x05b618,2, +0x05b804,1, +0x05b820,11, +0x05b880,1, +0x05b904,1, +0x05b90c,1, +0x05b914,1, +0x05b91c,1, +0x05b924,1, +0x05b92c,1, +0x05ba00,12, +0x05bc00,15, +0x05bf00,25, +0x05bf84,5, +0x05bfa0,4, +0x05c000,4, +0x05c018,3, +0x05c028,3, +0x05c038,22, +0x05c094,40, +0x05c140,11, +0x05c184,10, +0x05c1c0,22, +0x05c220,6, +0x05c240,5, +0x05c260,5, +0x05c2f8,46, +0x05c3b4,1, +0x05c3bc,1, +0x05c3c4,1, +0x05c3cc,1, +0x05c3d4,1, +0x05c3dc,1, +0x05c3e4,1, +0x05c3ec,1, +0x05c400,9, +0x05c440,9, +0x05c480,9, +0x05c4c0,9, +0x05c500,9, +0x05c540,9, +0x05c580,9, +0x05c5c0,9, +0x05c7a0,3, +0x05c7b0,3, +0x05c7c0,12, +0x05d000,1, +0x05d00c,3, +0x05d020,5, +0x05d038,46, 0x05d118,24, +0x05d200,32, 0x05d2e0,2, 0x05d2f0,2, 0x05d304,1, 0x05d314,3, 0x05d324,1, -0x05d334,3, +0x05d330,4, 0x05d344,1, 0x05d354,3, 0x05d364,1, 0x05d374,3, -0x05d384,1, -0x05d38c,1, 0x05d394,1, +0x05d3a0,2, 0x05d400,6, 0x05d420,6, 0x05d440,6, @@ -2509,25 +2925,32 @@ 0x05d500,6, 0x05d520,6, 0x05d540,6, -0x05d560,3, -0x05d600,2, -0x05d640,15, -0x05d6a0,2, -0x05d7c0,1, -0x05d7cc,10, -0x05d800,36, -0x05d900,36, -0x05da00,43, -0x05db00,35, -0x05dc00,19, -0x05dc80,19, -0x05dd00,12, +0x05d560,6, +0x05d580,6, +0x05d5a0,6, +0x05d5c0,6, +0x05d5e0,6, +0x05d600,3, +0x05d800,2, +0x05d840,15, +0x05d8a0,18, +0x05d8ec,2, +0x05d9c0,1, +0x05d9cc,10, +0x05dc00,25, +0x05dc80,13, +0x05dcc0,15, +0x05dd00,11, 0x05dd40,11, -0x05dd80,3, -0x05dee0,5, -0x05df00,19, -0x05df80,15, -0x05dfc0,6, +0x05dd80,5, +0x05dda0,7, +0x05ddc0,7, +0x05dde0,6, +0x05de00,11, +0x05de40,19, +0x05de90,6, +0x05e400,6, +0x05e420,3, 0x060000,32, 0x060200,64, 0x060400,96, @@ -3108,8 +3531,7 @@ 0x0680c0,3, 0x0680d0,3, 0x068100,2, -0x068110,3, -0x068120,4, +0x068110,8, 0x068140,15, 0x068180,3, 0x068190,1, @@ -3120,8 +3542,7 @@ 0x0682c0,3, 0x0682d0,3, 0x068300,2, -0x068310,3, -0x068320,4, +0x068310,8, 0x068340,15, 0x068380,3, 0x068390,1, @@ -3132,8 +3553,7 @@ 0x0684c0,3, 0x0684d0,3, 0x068500,2, -0x068510,3, -0x068520,4, +0x068510,8, 0x068540,15, 0x068580,3, 0x068590,1, @@ -3164,9 +3584,9 @@ 0x068a00,13, 0x068a40,2, 0x068a4c,4, -0x068a60,8, +0x068a60,12, 0x069000,19, -0x069050,7, +0x069050,8, 0x0690a0,5, 0x0690d0,3, 0x069300,13, @@ -3210,7 +3630,7 @@ 0x070b84,1, 0x070c00,1, 0x070c10,3, -0x070c3c,3, +0x070c40,2, 0x070c50,8, 0x071000,7, 0x072000,7, @@ -3229,32 +3649,33 @@ 0x074060,4, 0x074080,9, 0x075000,1024, -0x07e000,8, 0x07e080,16, -0x07f000,1, -0x07f028,1, -0x07f050,1, -0x07f078,1, -0x07f0a0,16, -0x07f1ac,1, -0x07f1d8,4, -0x07f200,6, -0x07f220,6, -0x07f240,3, 0x07fa00,6, +0x07fa80,3, 0x07fb00,7, 0x07fb20,17, 0x07fb70,1, 0x07fb80,7, 0x07fc00,3, -0x080000,1, -0x08fffc,16388, +0x07fc28,3, +0x07fc50,3, +0x07fc78,3, +0x07fca0,44, +0x07fdac,1, +0x07fdd8,4, +0x07fe00,6, +0x07fe20,6, +0x07fe40,6, +0x07fe60,6, +0x07fe80,6, +0x07fea0,6, +0x07fec0,3, +0x080000,32771, 0x0a0010,2, 0x0a001c,6, 0x0a0038,2, 0x0a0048,2, -0x0a0058,3, -0x0a0068,15, +0x0a0058,19, 0x0a00ac,14, 0x0a00f0,1, 0x0a00fc,35, @@ -3265,8 +3686,7 @@ 0x0a021c,6, 0x0a0238,2, 0x0a0248,2, -0x0a0258,3, -0x0a0268,15, +0x0a0258,19, 0x0a02ac,14, 0x0a02f0,1, 0x0a02fc,35, @@ -3277,8 +3697,7 @@ 0x0a041c,6, 0x0a0438,2, 0x0a0448,2, -0x0a0458,3, -0x0a0468,15, +0x0a0458,19, 0x0a04ac,14, 0x0a04f0,1, 0x0a04fc,35, @@ -3289,8 +3708,7 @@ 0x0a061c,6, 0x0a0638,2, 0x0a0648,2, -0x0a0658,3, -0x0a0668,15, +0x0a0658,19, 0x0a06ac,14, 0x0a06f0,1, 0x0a06fc,35, @@ -3301,8 +3719,7 @@ 0x0a081c,6, 0x0a0838,2, 0x0a0848,2, -0x0a0858,3, -0x0a0868,15, +0x0a0858,19, 0x0a08ac,14, 0x0a08f0,1, 0x0a08fc,35, @@ -3313,8 +3730,7 @@ 0x0a0a1c,6, 0x0a0a38,2, 0x0a0a48,2, -0x0a0a58,3, -0x0a0a68,15, +0x0a0a58,19, 0x0a0aac,14, 0x0a0af0,1, 0x0a0afc,35, @@ -3325,8 +3741,7 @@ 0x0a0c1c,6, 0x0a0c38,2, 0x0a0c48,2, -0x0a0c58,3, -0x0a0c68,15, +0x0a0c58,19, 0x0a0cac,14, 0x0a0cf0,1, 0x0a0cfc,35, @@ -3337,8 +3752,7 @@ 0x0a0e1c,6, 0x0a0e38,2, 0x0a0e48,2, -0x0a0e58,3, -0x0a0e68,15, +0x0a0e58,19, 0x0a0eac,14, 0x0a0ef0,1, 0x0a0efc,35, @@ -3376,11 +3790,12 @@ 0x0a2040,8, 0x0a2064,5, 0x0a20d0,8, -0x0a20f4,22, -0x0a2150,2, +0x0a20f4,16, +0x0a2138,5, +0x0a2150,3, 0x0a2160,8, 0x0a2184,3, -0x0a21a0,8, +0x0a21a0,16, 0x0a2200,4, 0x0a2218,50, 0x0a2300,8, @@ -3407,10 +3822,14 @@ 0x0a3180,6, 0x0a31a0,6, 0x0a31c0,6, +0x0a31e0,6, +0x0a3200,6, +0x0a3220,6, 0x0a3604,2, 0x0a3700,16, 0x0a3a00,1, 0x0a3b00,8, +0x0a8000,8192, 0x0c1000,1, 0x0c1028,1, 0x0c1050,1, @@ -3439,8 +3858,7 @@ 0x0c2424,15, 0x0c2464,15, 0x0c24a4,15, -0x0c24e4,23, -0x0c2544,6, +0x0c24e4,30, 0x0c2580,10, 0x0c25ac,1, 0x0c25b4,5, @@ -3448,7 +3866,8 @@ 0x0c25d4,5, 0x0c25ec,1, 0x0c25f4,13, -0x0c2680,7, +0x0c2680,4, +0x0c2694,2, 0x0c26a0,5, 0x0c26c0,5, 0x0c26e0,4, @@ -3477,43 +3896,33 @@ 0x0c3000,29, 0x0c3078,4, 0x0c3090,2, -0x0c30a0,2, -0x0c30b0,3, +0x0c30a0,7, 0x0c30c0,11, 0x0c3100,14, 0x0c3140,14, 0x0c3180,61, 0x0c3278,4, 0x0c3290,2, -0x0c32a0,2, -0x0c32b0,3, +0x0c32a0,7, 0x0c32c0,11, 0x0c3300,14, 0x0c3340,14, 0x0c3380,61, 0x0c3478,4, 0x0c3490,2, -0x0c34a0,2, -0x0c34b0,3, +0x0c34a0,7, 0x0c34c0,11, 0x0c3500,14, 0x0c3540,14, 0x0c3580,61, 0x0c3678,4, 0x0c3690,2, -0x0c36a0,2, -0x0c36b0,3, +0x0c36a0,7, 0x0c36c0,11, 0x0c3700,14, 0x0c3740,14, 0x0c3780,62, -0x0c387c,1, -0x0c3a00,8, -0x0c3a24,15, -0x0c3a64,23, -0x0c3ac4,6, -0x0c3b00,4, -0x0c3b20,3, +0x0c387c,6, 0x0c3c00,6, 0x0c3c40,14, 0x0c3c80,9, @@ -3638,9 +4047,9 @@ 0x0d0c80,13, 0x0d0cc0,12, 0x0d0d00,14, -0x0d0d40,2, +0x0d0d40,4, 0x0d0d80,14, -0x0d0dc0,2, +0x0d0dc0,4, 0x0d0e00,11, 0x0d0e40,6, 0x0d0e60,6, @@ -3652,32 +4061,34 @@ 0x0d1050,3, 0x0d1080,42, 0x0d1140,10, -0x0d1180,3, -0x0d1190,2, +0x0d1180,1, 0x0d119c,15, -0x0d1200,9, +0x0d1200,12, 0x0d1300,1, 0x0d1308,6, 0x0d1324,10, 0x0d1380,1, 0x0d1388,6, 0x0d13a4,10, -0x0d1400,6, -0x0d1420,6, -0x0d1500,5, -0x0d1520,4, -0x0d1540,5, -0x0d1560,4, -0x0d1800,24, +0x0d1400,7, +0x0d1420,7, +0x0d1500,12, +0x0d1540,12, +0x0d1580,4, +0x0d1800,14, +0x0d183c,9, 0x0d1864,6, -0x0d1880,8, -0x0d1900,24, +0x0d1880,2, +0x0d1890,4, +0x0d1900,14, +0x0d193c,9, 0x0d1964,6, -0x0d1980,8, -0x0d1a00,17, -0x0d1a48,6, -0x0d1a80,17, -0x0d1ac8,6, +0x0d1980,2, +0x0d1990,4, +0x0d1a00,16, +0x0d1a50,4, +0x0d1a80,16, +0x0d1ad0,4, 0x0d1b00,6, 0x0d1b20,6, 0x0d1b40,3, @@ -3706,6 +4117,7 @@ 0x0d1ec0,7, 0x0d1ee0,7, 0x0d1f00,12, +0x0d1f34,2, 0x0d1f40,3, 0x0d1f50,8, 0x0d2000,4, @@ -3758,9 +4170,9 @@ 0x0d2c80,13, 0x0d2cc0,12, 0x0d2d00,14, -0x0d2d40,2, +0x0d2d40,4, 0x0d2d80,14, -0x0d2dc0,2, +0x0d2dc0,4, 0x0d2e00,11, 0x0d2e40,6, 0x0d2e60,6, @@ -3772,32 +4184,34 @@ 0x0d3050,3, 0x0d3080,42, 0x0d3140,10, -0x0d3180,3, -0x0d3190,2, +0x0d3180,1, 0x0d319c,15, -0x0d3200,9, +0x0d3200,12, 0x0d3300,1, 0x0d3308,6, 0x0d3324,10, 0x0d3380,1, 0x0d3388,6, 0x0d33a4,10, -0x0d3400,6, -0x0d3420,6, -0x0d3500,5, -0x0d3520,4, -0x0d3540,5, -0x0d3560,4, -0x0d3800,24, +0x0d3400,7, +0x0d3420,7, +0x0d3500,12, +0x0d3540,12, +0x0d3580,4, +0x0d3800,14, +0x0d383c,9, 0x0d3864,6, -0x0d3880,8, -0x0d3900,24, +0x0d3880,2, +0x0d3890,4, +0x0d3900,14, +0x0d393c,9, 0x0d3964,6, -0x0d3980,8, -0x0d3a00,17, -0x0d3a48,6, -0x0d3a80,17, -0x0d3ac8,6, +0x0d3980,2, +0x0d3990,4, +0x0d3a00,16, +0x0d3a50,4, +0x0d3a80,16, +0x0d3ad0,4, 0x0d3b00,6, 0x0d3b20,6, 0x0d3b40,3, @@ -3826,24 +4240,38 @@ 0x0d3ec0,7, 0x0d3ee0,7, 0x0d3f00,12, +0x0d3f34,2, 0x0d3f40,3, 0x0d3f50,8, -0x0d7400,5, +0x0d7400,1, +0x0d7408,3, 0x0d7438,1, 0x0d7444,1, -0x0d7450,4, +0x0d7450,6, 0x0d7540,6, 0x0d7600,1, 0x0d8000,6, 0x0d8020,3, 0x0d8030,1, -0x0d8038,7, +0x0d8038,4, +0x0d8050,1, 0x0d8100,6, 0x0d8120,10, 0x0d8150,10, 0x0d8180,10, 0x0d81b0,6, -0x0d81d0,10, +0x0d81d0,6, +0x0d81f0,2, +0x0d8400,1, +0x0d8428,1, +0x0d8450,1, +0x0d8478,1, +0x0d84a0,7, +0x0d85ac,1, +0x0d85d8,4, +0x0d8600,6, +0x0d8620,6, +0x0d8640,3, 0x0d8800,6, 0x0d8820,3, 0x0d8830,4, @@ -3859,19 +4287,19 @@ 0x0d89d8,2, 0x0d89e4,1, 0x0d89f4,3, -0x0d9000,4, 0x0d9020,4, 0x0d9040,11, -0x0d9070,3, +0x0d9074,2, 0x0d9080,4, 0x0d90b0,22, 0x0d9110,2, 0x0d9120,22, 0x0d9180,1, 0x0d91a0,6, +0x0d91c0,8, 0x0d9200,42, 0x0d92c0,1, -0x0d92c8,3, +0x0d92c8,13, 0x0d9300,25, 0x0d936c,4, 0x0d9380,2, @@ -3880,25 +4308,26 @@ 0x0d9404,3, 0x0d9420,11, 0x0d9480,6, -0x0d9500,6, +0x0d9500,1, 0x0d9520,6, 0x0d9540,3, 0x0d9550,7, -0x0d9570,4, -0x0d9800,410, -0x0da000,4, +0x0d9570,18, +0x0d95bc,5, +0x0d9800,448, 0x0da020,4, 0x0da040,11, -0x0da070,3, +0x0da074,2, 0x0da080,4, 0x0da0b0,22, 0x0da110,2, 0x0da120,22, 0x0da180,1, 0x0da1a0,6, +0x0da1c0,8, 0x0da200,42, 0x0da2c0,1, -0x0da2c8,3, +0x0da2c8,13, 0x0da300,25, 0x0da36c,4, 0x0da380,2, @@ -3907,12 +4336,69 @@ 0x0da404,3, 0x0da420,11, 0x0da480,6, -0x0da500,6, +0x0da500,1, 0x0da520,6, 0x0da540,3, 0x0da550,7, -0x0da570,4, -0x0da800,410, +0x0da570,18, +0x0da5bc,5, +0x0da800,448, +0x0db020,4, +0x0db040,11, +0x0db074,2, +0x0db080,4, +0x0db0b0,22, +0x0db110,2, +0x0db120,22, +0x0db180,1, +0x0db1a0,6, +0x0db1c0,8, +0x0db200,42, +0x0db2c0,1, +0x0db2c8,13, +0x0db300,25, +0x0db36c,4, +0x0db380,2, +0x0db3a0,1, +0x0db3c0,11, +0x0db404,3, +0x0db420,11, +0x0db480,6, +0x0db500,1, +0x0db520,6, +0x0db540,3, +0x0db550,7, +0x0db570,18, +0x0db5bc,5, +0x0db800,448, +0x0dc020,4, +0x0dc040,11, +0x0dc074,2, +0x0dc080,4, +0x0dc0b0,22, +0x0dc110,2, +0x0dc120,22, +0x0dc180,1, +0x0dc1a0,6, +0x0dc1c0,8, +0x0dc200,42, +0x0dc2c0,1, +0x0dc2c8,13, +0x0dc300,25, +0x0dc36c,4, +0x0dc380,2, +0x0dc3a0,1, +0x0dc3c0,11, +0x0dc404,3, +0x0dc420,11, +0x0dc480,6, +0x0dc500,1, +0x0dc520,6, +0x0dc540,3, +0x0dc550,7, +0x0dc570,18, +0x0dc5bc,5, +0x0dc800,448, 0x0df800,5, 0x0df818,1, 0x0df854,6, @@ -3925,6 +4411,18 @@ 0x0df980,4, 0x0df9a4,1, 0x0df9ac,2, +0x0dfa00,5, +0x0dfa18,1, +0x0dfa54,6, +0x0dfa80,4, +0x0dfaa4,1, +0x0dfaac,2, +0x0dfb00,5, +0x0dfb18,1, +0x0dfb54,6, +0x0dfb80,4, +0x0dfba4,1, +0x0dfbac,2, 0x0e8000,1, 0x0e8008,2, 0x0e8058,3, @@ -4030,23 +4528,22 @@ 0x0ea604,1, 0x0ea6f0,72, 0x0f0000,3, -0x0f0014,10, -0x0f0044,15, -0x0f00f0,2, -0x0f0100,1, -0x0f0108,3, +0x0f0014,27, +0x0f00f0,3, +0x0f0100,5, 0x0f0118,1, 0x0f0130,4, 0x0f0180,3, 0x0f0190,2, -0x0f01a0,3, +0x0f01a8,1, 0x0f01c0,2, 0x0f01d0,10, 0x0f0200,61, 0x0f0404,9, 0x0f0440,12, 0x0f0480,5, -0x0f04b8,19, +0x0f04b8,18, +0x0f0580,4, 0x0f05a0,1, 0x0f05c0,8, 0x0f0800,17, @@ -4067,7 +4564,7 @@ 0x0f0e14,9, 0x0f0e3c,1, 0x0f1000,3, -0x0f1010,4, +0x0f1010,12, 0x0f1080,10, 0x0f10c0,1, 0x0f10e0,2, @@ -4092,85 +4589,107 @@ 0x0f1600,6, 0x0f1620,3, 0x0f1800,3, +0x0f1840,4, +0x0f1854,3, +0x0f1864,3, +0x0f1874,3, 0x0f2000,2, 0x0f200c,3, -0x0f2020,8, +0x0f2020,10, 0x0f2060,6, 0x0f2080,2, 0x0f208c,3, -0x0f20a0,8, +0x0f20a0,10, 0x0f20e0,6, 0x0f2100,2, 0x0f210c,3, -0x0f2120,8, +0x0f2120,2, +0x0f2140,2, 0x0f2160,6, 0x0f2180,2, 0x0f218c,3, -0x0f21a0,8, +0x0f21a0,2, +0x0f21c0,2, 0x0f21e0,6, 0x0f2200,2, 0x0f220c,3, -0x0f2220,8, +0x0f2220,2, +0x0f2240,2, 0x0f2260,6, 0x0f2280,2, 0x0f228c,3, -0x0f22a0,8, +0x0f22a0,2, +0x0f22c0,2, 0x0f22e0,6, 0x0f2300,2, 0x0f230c,3, -0x0f2320,8, +0x0f2320,2, +0x0f2340,2, 0x0f2360,6, 0x0f2380,2, 0x0f238c,3, -0x0f23a0,8, +0x0f23a0,2, +0x0f23c0,2, 0x0f23e0,6, 0x0f2400,2, 0x0f240c,3, -0x0f2420,8, +0x0f2420,2, +0x0f2440,2, 0x0f2460,6, 0x0f2480,2, 0x0f248c,3, -0x0f24a0,8, +0x0f24a0,2, +0x0f24c0,2, 0x0f24e0,6, 0x0f2500,2, 0x0f250c,3, -0x0f2520,8, +0x0f2520,2, +0x0f2540,2, 0x0f2560,6, 0x0f2580,2, 0x0f258c,3, -0x0f25a0,8, +0x0f25a0,2, +0x0f25c0,2, 0x0f25e0,6, 0x0f2600,2, 0x0f260c,3, -0x0f2620,8, +0x0f2620,2, +0x0f2640,2, 0x0f2660,6, 0x0f2680,2, 0x0f268c,3, -0x0f26a0,8, +0x0f26a0,2, +0x0f26c0,2, 0x0f26e0,6, 0x0f2700,2, 0x0f270c,3, -0x0f2720,8, +0x0f2720,2, +0x0f2740,2, 0x0f2760,6, 0x0f2780,2, 0x0f278c,3, -0x0f27a0,8, +0x0f27a0,2, +0x0f27c0,2, 0x0f27e0,6, 0x0f2800,2, 0x0f280c,3, -0x0f2820,8, +0x0f2820,2, +0x0f2840,2, 0x0f2860,6, 0x0f2880,2, 0x0f288c,3, -0x0f28a0,8, +0x0f28a0,2, +0x0f28c0,2, 0x0f28e0,6, 0x0f2900,2, 0x0f290c,3, -0x0f2920,8, +0x0f2920,2, +0x0f2940,2, 0x0f2960,6, 0x0f2980,2, 0x0f298c,3, -0x0f29a0,8, +0x0f29a0,2, +0x0f29c0,2, 0x0f29e0,6, 0x0f4000,7, 0x0f4020,4, @@ -4233,13 +4752,6 @@ 0x0f8180,10, 0x0f81c0,3, 0x0f81d0,2, -0x0f8200,9, -0x0f8300,6, -0x0f8320,6, -0x0f8340,3, -0x0f8380,10, -0x0f83c0,3, -0x0f83d0,2, 0x0f8400,9, 0x0f8500,6, 0x0f8520,6, @@ -4247,13 +4759,6 @@ 0x0f8580,10, 0x0f85c0,3, 0x0f85d0,2, -0x0f8600,9, -0x0f8700,6, -0x0f8720,6, -0x0f8740,3, -0x0f8780,10, -0x0f87c0,3, -0x0f87d0,2, 0x0f8800,9, 0x0f8900,6, 0x0f8920,6, @@ -4261,13 +4766,6 @@ 0x0f8980,10, 0x0f89c0,3, 0x0f89d0,2, -0x0f8a00,9, -0x0f8b00,6, -0x0f8b20,6, -0x0f8b40,3, -0x0f8b80,10, -0x0f8bc0,3, -0x0f8bd0,2, 0x0f8c00,9, 0x0f8d00,6, 0x0f8d20,6, @@ -4275,13 +4773,6 @@ 0x0f8d80,10, 0x0f8dc0,3, 0x0f8dd0,2, -0x0f8e00,9, -0x0f8f00,6, -0x0f8f20,6, -0x0f8f40,3, -0x0f8f80,10, -0x0f8fc0,3, -0x0f8fd0,2, 0x0f9000,9, 0x0f9100,6, 0x0f9120,6, @@ -4289,13 +4780,6 @@ 0x0f9180,10, 0x0f91c0,3, 0x0f91d0,2, -0x0f9200,9, -0x0f9300,6, -0x0f9320,6, -0x0f9340,3, -0x0f9380,10, -0x0f93c0,3, -0x0f93d0,2, 0x0f9400,9, 0x0f9500,6, 0x0f9520,6, @@ -4303,13 +4787,6 @@ 0x0f9580,10, 0x0f95c0,3, 0x0f95d0,2, -0x0f9600,9, -0x0f9700,6, -0x0f9720,6, -0x0f9740,3, -0x0f9780,10, -0x0f97c0,3, -0x0f97d0,2, 0x0f9800,9, 0x0f9900,6, 0x0f9920,6, @@ -4317,13 +4794,6 @@ 0x0f9980,10, 0x0f99c0,3, 0x0f99d0,2, -0x0f9a00,9, -0x0f9b00,6, -0x0f9b20,6, -0x0f9b40,3, -0x0f9b80,10, -0x0f9bc0,3, -0x0f9bd0,2, 0x0f9c00,9, 0x0f9d00,6, 0x0f9d20,6, @@ -4331,144 +4801,186 @@ 0x0f9d80,10, 0x0f9dc0,3, 0x0f9dd0,2, -0x0f9e00,9, -0x0f9f00,6, -0x0f9f20,6, -0x0f9f40,3, -0x0f9f80,10, -0x0f9fc0,3, -0x0f9fd0,2, 0x0fa000,9, -0x0fa080,10, -0x0fa0c0,1, -0x0fa0e0,2, -0x0fa0ec,1, -0x0fa0f4,9, +0x0fa100,6, 0x0fa120,6, 0x0fa140,3, 0x0fa180,10, 0x0fa1c0,3, 0x0fa1d0,2, -0x0fa1e8,2, -0x0fa200,9, -0x0fa280,10, -0x0fa2c0,1, -0x0fa2e0,2, -0x0fa2ec,1, -0x0fa2f4,9, -0x0fa320,6, -0x0fa340,3, -0x0fa380,8, -0x0fa3c0,3, -0x0fa3d0,2, 0x0fa400,9, -0x0fa480,10, -0x0fa4c0,1, -0x0fa4e0,2, -0x0fa4ec,1, -0x0fa4f4,9, +0x0fa500,6, 0x0fa520,6, 0x0fa540,3, -0x0fa580,8, +0x0fa580,10, 0x0fa5c0,3, 0x0fa5d0,2, -0x0fa600,9, -0x0fa680,10, -0x0fa6c0,1, -0x0fa6e0,2, -0x0fa6ec,1, -0x0fa6f4,9, -0x0fa720,6, -0x0fa740,3, -0x0fa780,10, -0x0fa7c0,3, -0x0fa7d0,2, -0x0fa7e8,2, 0x0fa800,9, -0x0fa880,10, -0x0fa8c0,1, -0x0fa8e0,2, -0x0fa8ec,1, -0x0fa8f4,9, +0x0fa900,6, 0x0fa920,6, 0x0fa940,3, -0x0fa980,6, +0x0fa980,10, 0x0fa9c0,3, -0x0fa9d0,4, -0x0faa00,9, -0x0faa80,10, -0x0faac0,1, -0x0faae0,2, -0x0faaec,1, -0x0faaf4,9, -0x0fab20,6, -0x0fab40,3, -0x0fab80,6, -0x0fabc0,3, -0x0fabd0,4, +0x0fa9d0,2, 0x0fac00,9, -0x0fac80,10, -0x0facc0,1, -0x0face0,2, -0x0facec,1, -0x0facf4,9, +0x0fad00,6, 0x0fad20,6, 0x0fad40,3, 0x0fad80,10, 0x0fadc0,3, 0x0fadd0,2, -0x0fade8,2, -0x0fae00,9, -0x0fae80,10, -0x0faec0,1, -0x0faee0,2, -0x0faeec,1, -0x0faef4,9, -0x0faf20,6, -0x0faf40,3, -0x0faf80,12, -0x0fafc0,3, -0x0fafd0,2, +0x0fb000,9, +0x0fb100,6, +0x0fb120,6, +0x0fb140,3, +0x0fb180,10, +0x0fb1c0,3, +0x0fb1d0,2, +0x0fb400,9, +0x0fb500,6, +0x0fb520,6, +0x0fb540,3, +0x0fb580,10, +0x0fb5c0,3, +0x0fb5d0,2, +0x0fb800,9, +0x0fb900,6, +0x0fb920,6, +0x0fb940,3, +0x0fb980,10, +0x0fb9c0,3, +0x0fb9d0,2, +0x0fbc00,9, +0x0fbd00,6, +0x0fbd20,6, +0x0fbd40,3, +0x0fbd80,10, +0x0fbdc0,3, +0x0fbdd0,2, +0x0fc000,9, +0x0fc080,10, +0x0fc0c0,1, +0x0fc0e0,2, +0x0fc0ec,1, +0x0fc0f4,9, +0x0fc120,6, +0x0fc140,3, +0x0fc180,10, +0x0fc1c0,3, +0x0fc1d0,8, +0x0fc400,9, +0x0fc500,6, +0x0fc520,6, +0x0fc540,3, +0x0fc580,8, +0x0fc5c0,3, +0x0fc5d0,2, +0x0fc800,9, +0x0fc900,6, +0x0fc920,6, +0x0fc940,3, +0x0fc980,8, +0x0fc9c0,3, +0x0fc9d0,2, +0x0fcc00,9, +0x0fcc80,10, +0x0fccc0,1, +0x0fcce0,2, +0x0fccec,1, +0x0fccf4,9, +0x0fcd20,6, +0x0fcd40,3, +0x0fcd80,10, +0x0fcdc0,3, +0x0fcdd0,2, +0x0fd000,9, +0x0fd100,6, +0x0fd120,6, +0x0fd140,3, +0x0fd180,6, +0x0fd1c0,3, +0x0fd1d0,2, +0x0fd400,9, +0x0fd500,6, +0x0fd520,6, +0x0fd540,3, +0x0fd580,6, +0x0fd5c0,3, +0x0fd5d0,2, +0x0fd800,9, +0x0fd880,10, +0x0fd8c0,1, +0x0fd8e0,2, +0x0fd8ec,1, +0x0fd8f4,9, +0x0fd920,6, +0x0fd940,3, +0x0fd980,10, +0x0fd9c0,3, +0x0fd9d0,2, +0x0fdc00,9, +0x0fdc80,10, +0x0fdcc0,1, +0x0fdce0,2, +0x0fdcec,1, +0x0fdcf4,9, +0x0fdd20,6, +0x0fdd40,3, +0x0fdd80,12, +0x0fddc0,3, +0x0fddd0,2, 0x100000,1, 0x100008,1, -0x100010,8, -0x100034,3, -0x100200,1, -0x100208,1, -0x100210,8, -0x100234,3, -0x100400,1, +0x100010,14, +0x100100,1, +0x100108,1, +0x100110,14, +0x100200,32, +0x1002f8,34, +0x1003f8,3, 0x100408,1, -0x100410,8, -0x100434,3, -0x100600,1, -0x100608,1, -0x100610,8, -0x100634,3, -0x100800,6, -0x10081c,4, +0x100410,14, +0x100500,1, +0x100508,1, +0x100510,14, +0x100600,32, +0x1006f8,34, +0x1007f8,8, +0x10081c,6, 0x100a00,11, 0x100a40,11, 0x100a80,11, 0x100ac0,11, -0x100b00,1, -0x100c04,1, -0x100c0c,1, -0x100c20,2, -0x100c34,3, -0x100c44,3, -0x100c54,8, -0x100e00,29, +0x100b00,2, +0x100c04,3, +0x100c14,12, +0x100c84,1, +0x100c8c,1, +0x100ca0,2, +0x100cb4,3, +0x100e00,30, 0x100e80,1, -0x100e88,2, -0x100f00,29, +0x100e88,3, +0x100f00,30, 0x100f80,1, -0x100f88,2, -0x101000,43, -0x101100,53, -0x101200,5, -0x101220,1, -0x101700,1, +0x100f88,3, +0x101000,22, +0x101100,25, +0x101200,10, +0x101240,2, +0x101600,6, +0x1016fc,55, +0x101800,31, +0x101900,31, +0x101a00,6, +0x101a20,6, +0x101a40,6, +0x101a60,6, +0x101a80,6, +0x101aa0,6, +0x101ac0,6, +0x101ae0,6, +0x101b00,3, 0x101c00,20, 0x101c74,1, 0x101c80,20, @@ -4478,82 +4990,150 @@ 0x101d80,20, 0x101df4,1, 0x101e00,16, -0x102000,5, -0x102040,5, -0x102080,2, -0x102200,5, -0x102240,5, -0x102280,2, -0x102404,3, -0x102480,18, -0x102500,18, -0x102800,1, +0x102000,3, +0x102010,35, +0x1020a0,2, +0x1020c0,19, +0x102110,35, +0x1021a0,2, +0x1021c0,16, +0x102204,1, +0x102270,36, +0x102304,1, +0x102340,48, +0x102404,37, +0x1024a0,6, +0x1024c0,3, +0x102500,4, +0x102518,1, +0x102520,9, +0x102800,3, +0x102814,31, +0x1028a0,10, +0x1028d0,1, +0x102900,6, +0x102920,6, +0x102940,6, +0x102960,6, +0x102980,6, +0x1029a0,6, +0x1029c0,3, +0x102a00,7, +0x102a20,3, +0x102a30,1, +0x102c00,12, +0x102c34,22, +0x102d00,6, +0x102d20,6, +0x102d40,6, +0x102d60,6, +0x102d80,6, +0x102da0,3, +0x102e00,7, +0x102e20,3, +0x102e30,1, 0x103000,6, 0x103020,6, -0x103100,1, -0x103200,6, -0x103220,6, -0x103300,1, +0x103040,3, +0x1030f0,3, +0x103100,6, +0x103120,6, +0x103140,3, +0x1031f0,3, +0x103200,5, +0x103218,2, 0x103400,6, 0x103420,6, -0x103500,1, -0x103600,6, -0x103620,6, -0x103700,1, -0x103800,2, -0x103860,9, +0x103440,3, +0x1034f0,3, +0x103500,6, +0x103520,6, +0x103540,3, +0x1035f0,3, +0x103600,5, +0x103618,2, +0x103804,1, +0x103820,11, +0x103880,1, 0x103904,1, 0x10390c,1, +0x103914,1, +0x10391c,1, 0x103924,1, 0x10392c,1, -0x103a00,10, -0x103c00,1, -0x103c10,1, -0x103c20,1, -0x103c30,1, -0x103c40,1, -0x103c50,1, -0x103c60,1, -0x103c70,1, -0x103d00,17, -0x104000,6, -0x10401c,3, -0x10402c,3, -0x10403c,49, -0x104200,13, -0x104240,9, -0x104284,8, -0x104300,16, -0x104470,15, -0x1044b0,3, -0x104800,6, -0x10481c,3, -0x10482c,3, -0x10483c,49, -0x104a00,13, -0x104a40,9, -0x104a84,8, -0x104b00,16, -0x104c70,15, -0x104cb0,3, -0x105004,3, -0x105018,4, -0x105040,31, -0x1050c0,19, +0x103a00,12, +0x103c00,15, +0x103f00,25, +0x103f84,5, +0x103fa0,4, +0x104000,4, +0x104018,3, +0x104028,3, +0x104038,22, +0x104094,40, +0x104140,11, +0x104184,10, +0x1041c0,22, +0x104220,6, +0x104240,5, +0x104260,5, +0x1042f8,46, +0x1043b4,1, +0x1043bc,1, +0x1043c4,1, +0x1043cc,1, +0x1043d4,1, +0x1043dc,1, +0x1043e4,1, +0x1043ec,1, +0x104400,9, +0x104440,9, +0x1047a0,3, +0x1047b0,3, +0x1047c0,12, +0x104800,4, +0x104818,3, +0x104828,3, +0x104838,22, +0x104894,40, +0x104940,11, +0x104984,10, +0x1049c0,22, +0x104a20,6, +0x104a40,5, +0x104a60,5, +0x104af8,46, +0x104bb4,1, +0x104bbc,1, +0x104bc4,1, +0x104bcc,1, +0x104bd4,1, +0x104bdc,1, +0x104be4,1, +0x104bec,1, +0x104c00,9, +0x104c40,9, +0x104fa0,3, +0x104fb0,3, +0x104fc0,12, +0x105000,1, +0x10500c,3, +0x105020,5, +0x105038,46, 0x105118,24, +0x105200,32, 0x1052e0,2, 0x1052f0,4, 0x105304,1, 0x105314,3, 0x105324,1, -0x105334,3, +0x105330,4, 0x105344,1, 0x105354,3, 0x105364,1, 0x105374,3, -0x105384,1, -0x10538c,1, 0x105394,1, +0x1053a0,2, 0x105400,6, 0x105420,6, 0x105440,6, @@ -4565,29 +5145,34 @@ 0x105500,6, 0x105520,6, 0x105540,6, -0x105560,3, -0x105600,2, -0x105640,15, -0x105680,7, -0x1056a0,3, -0x105800,36, -0x105900,36, -0x105a00,43, -0x105b00,35, -0x105c00,19, -0x105c80,19, -0x105d00,12, +0x105560,6, +0x105580,6, +0x1055a0,6, +0x1055c0,6, +0x1055e0,6, +0x105600,3, +0x105800,2, +0x105840,15, +0x105880,7, +0x1058a0,21, +0x105c00,25, +0x105c80,13, +0x105cc0,15, +0x105d00,11, 0x105d40,11, -0x105d80,3, -0x105ee0,5, -0x105f00,19, -0x105f80,15, -0x105fc0,6, +0x105d80,5, +0x105da0,7, +0x105dc0,7, +0x105de0,6, +0x105e00,11, +0x105e40,19, +0x105e90,6, 0x106000,2, 0x106028,2, 0x106050,2, 0x106078,2, -0x1060a0,20, +0x1060a0,7, +0x1060c0,15, 0x1061ac,1, 0x1061d8,4, 0x106200,6, @@ -4595,46 +5180,60 @@ 0x106240,6, 0x106260,6, 0x106280,3, +0x106400,6, +0x106420,3, 0x108000,1, 0x108008,1, -0x108010,8, -0x108034,3, -0x108200,1, -0x108208,1, -0x108210,8, -0x108234,3, -0x108400,1, +0x108010,14, +0x108100,1, +0x108108,1, +0x108110,14, +0x108200,32, +0x1082f8,34, +0x1083f8,3, 0x108408,1, -0x108410,8, -0x108434,3, -0x108600,1, -0x108608,1, -0x108610,8, -0x108634,3, -0x108800,6, -0x10881c,4, +0x108410,14, +0x108500,1, +0x108508,1, +0x108510,14, +0x108600,32, +0x1086f8,34, +0x1087f8,8, +0x10881c,6, 0x108a00,11, 0x108a40,11, 0x108a80,11, 0x108ac0,11, -0x108b00,1, -0x108c04,1, -0x108c0c,1, -0x108c20,2, -0x108c34,3, -0x108c44,3, -0x108c54,8, -0x108e00,29, +0x108b00,2, +0x108c04,3, +0x108c14,12, +0x108c84,1, +0x108c8c,1, +0x108ca0,2, +0x108cb4,3, +0x108e00,30, 0x108e80,1, -0x108e88,2, -0x108f00,29, +0x108e88,3, +0x108f00,30, 0x108f80,1, -0x108f88,2, -0x109000,43, -0x109100,53, -0x109200,5, -0x109220,1, -0x109700,1, +0x108f88,3, +0x109000,22, +0x109100,25, +0x109200,10, +0x109240,2, +0x109600,6, +0x1096fc,55, +0x109800,31, +0x109900,31, +0x109a00,6, +0x109a20,6, +0x109a40,6, +0x109a60,6, +0x109a80,6, +0x109aa0,6, +0x109ac0,6, +0x109ae0,6, +0x109b00,3, 0x109c00,20, 0x109c74,1, 0x109c80,20, @@ -4644,82 +5243,150 @@ 0x109d80,20, 0x109df4,1, 0x109e00,16, -0x10a000,5, -0x10a040,5, -0x10a080,2, -0x10a200,5, -0x10a240,5, -0x10a280,2, -0x10a404,3, -0x10a480,18, -0x10a500,18, -0x10a800,1, +0x10a000,3, +0x10a010,35, +0x10a0a0,2, +0x10a0c0,19, +0x10a110,35, +0x10a1a0,2, +0x10a1c0,16, +0x10a204,1, +0x10a270,36, +0x10a304,1, +0x10a340,48, +0x10a404,37, +0x10a4a0,6, +0x10a4c0,3, +0x10a500,4, +0x10a518,1, +0x10a520,9, +0x10a800,3, +0x10a814,31, +0x10a8a0,10, +0x10a8d0,1, +0x10a900,6, +0x10a920,6, +0x10a940,6, +0x10a960,6, +0x10a980,6, +0x10a9a0,6, +0x10a9c0,3, +0x10aa00,7, +0x10aa20,3, +0x10aa30,1, +0x10ac00,12, +0x10ac34,22, +0x10ad00,6, +0x10ad20,6, +0x10ad40,6, +0x10ad60,6, +0x10ad80,6, +0x10ada0,3, +0x10ae00,7, +0x10ae20,3, +0x10ae30,1, 0x10b000,6, 0x10b020,6, -0x10b100,1, -0x10b200,6, -0x10b220,6, -0x10b300,1, +0x10b040,3, +0x10b0f0,3, +0x10b100,6, +0x10b120,6, +0x10b140,3, +0x10b1f0,3, +0x10b200,5, +0x10b218,2, 0x10b400,6, 0x10b420,6, -0x10b500,1, -0x10b600,6, -0x10b620,6, -0x10b700,1, -0x10b800,2, -0x10b860,9, +0x10b440,3, +0x10b4f0,3, +0x10b500,6, +0x10b520,6, +0x10b540,3, +0x10b5f0,3, +0x10b600,5, +0x10b618,2, +0x10b804,1, +0x10b820,11, +0x10b880,1, 0x10b904,1, 0x10b90c,1, +0x10b914,1, +0x10b91c,1, 0x10b924,1, 0x10b92c,1, -0x10ba00,10, -0x10bc00,1, -0x10bc10,1, -0x10bc20,1, -0x10bc30,1, -0x10bc40,1, -0x10bc50,1, -0x10bc60,1, -0x10bc70,1, -0x10bd00,17, -0x10c000,6, -0x10c01c,3, -0x10c02c,3, -0x10c03c,49, -0x10c200,13, -0x10c240,9, -0x10c284,8, -0x10c300,16, -0x10c470,15, -0x10c4b0,3, -0x10c800,6, -0x10c81c,3, -0x10c82c,3, -0x10c83c,49, -0x10ca00,13, -0x10ca40,9, -0x10ca84,8, -0x10cb00,16, -0x10cc70,15, -0x10ccb0,3, -0x10d004,3, -0x10d018,4, -0x10d040,31, -0x10d0c0,19, +0x10ba00,12, +0x10bc00,15, +0x10bf00,25, +0x10bf84,5, +0x10bfa0,4, +0x10c000,4, +0x10c018,3, +0x10c028,3, +0x10c038,22, +0x10c094,40, +0x10c140,11, +0x10c184,10, +0x10c1c0,22, +0x10c220,6, +0x10c240,5, +0x10c260,5, +0x10c2f8,46, +0x10c3b4,1, +0x10c3bc,1, +0x10c3c4,1, +0x10c3cc,1, +0x10c3d4,1, +0x10c3dc,1, +0x10c3e4,1, +0x10c3ec,1, +0x10c400,9, +0x10c440,9, +0x10c7a0,3, +0x10c7b0,3, +0x10c7c0,12, +0x10c800,4, +0x10c818,3, +0x10c828,3, +0x10c838,22, +0x10c894,40, +0x10c940,11, +0x10c984,10, +0x10c9c0,22, +0x10ca20,6, +0x10ca40,5, +0x10ca60,5, +0x10caf8,46, +0x10cbb4,1, +0x10cbbc,1, +0x10cbc4,1, +0x10cbcc,1, +0x10cbd4,1, +0x10cbdc,1, +0x10cbe4,1, +0x10cbec,1, +0x10cc00,9, +0x10cc40,9, +0x10cfa0,3, +0x10cfb0,3, +0x10cfc0,12, +0x10d000,1, +0x10d00c,3, +0x10d020,5, +0x10d038,46, 0x10d118,24, +0x10d200,32, 0x10d2e0,2, 0x10d2f0,4, 0x10d304,1, 0x10d314,3, 0x10d324,1, -0x10d334,3, +0x10d330,4, 0x10d344,1, 0x10d354,3, 0x10d364,1, 0x10d374,3, -0x10d384,1, -0x10d38c,1, 0x10d394,1, +0x10d3a0,2, 0x10d400,6, 0x10d420,6, 0x10d440,6, @@ -4731,29 +5398,34 @@ 0x10d500,6, 0x10d520,6, 0x10d540,6, -0x10d560,3, -0x10d600,2, -0x10d640,15, -0x10d680,7, -0x10d6a0,3, -0x10d800,36, -0x10d900,36, -0x10da00,43, -0x10db00,35, -0x10dc00,19, -0x10dc80,19, -0x10dd00,12, +0x10d560,6, +0x10d580,6, +0x10d5a0,6, +0x10d5c0,6, +0x10d5e0,6, +0x10d600,3, +0x10d800,2, +0x10d840,15, +0x10d880,7, +0x10d8a0,21, +0x10dc00,25, +0x10dc80,13, +0x10dcc0,15, +0x10dd00,11, 0x10dd40,11, -0x10dd80,3, -0x10dee0,5, -0x10df00,19, -0x10df80,15, -0x10dfc0,6, +0x10dd80,5, +0x10dda0,7, +0x10ddc0,7, +0x10dde0,6, +0x10de00,11, +0x10de40,19, +0x10de90,6, 0x10e000,2, 0x10e028,2, 0x10e050,2, 0x10e078,2, -0x10e0a0,20, +0x10e0a0,7, +0x10e0c0,15, 0x10e1ac,1, 0x10e1d8,4, 0x10e200,6, @@ -4761,46 +5433,60 @@ 0x10e240,6, 0x10e260,6, 0x10e280,3, +0x10e400,6, +0x10e420,3, 0x110000,1, 0x110008,1, -0x110010,8, -0x110034,3, -0x110200,1, -0x110208,1, -0x110210,8, -0x110234,3, -0x110400,1, +0x110010,14, +0x110100,1, +0x110108,1, +0x110110,14, +0x110200,32, +0x1102f8,34, +0x1103f8,3, 0x110408,1, -0x110410,8, -0x110434,3, -0x110600,1, -0x110608,1, -0x110610,8, -0x110634,3, -0x110800,6, -0x11081c,4, +0x110410,14, +0x110500,1, +0x110508,1, +0x110510,14, +0x110600,32, +0x1106f8,34, +0x1107f8,8, +0x11081c,6, 0x110a00,11, 0x110a40,11, 0x110a80,11, 0x110ac0,11, -0x110b00,1, -0x110c04,1, -0x110c0c,1, -0x110c20,2, -0x110c34,3, -0x110c44,3, -0x110c54,8, -0x110e00,29, +0x110b00,2, +0x110c04,3, +0x110c14,12, +0x110c84,1, +0x110c8c,1, +0x110ca0,2, +0x110cb4,3, +0x110e00,30, 0x110e80,1, -0x110e88,2, -0x110f00,29, +0x110e88,3, +0x110f00,30, 0x110f80,1, -0x110f88,2, -0x111000,43, -0x111100,53, -0x111200,5, -0x111220,1, -0x111700,1, +0x110f88,3, +0x111000,22, +0x111100,25, +0x111200,10, +0x111240,2, +0x111600,6, +0x1116fc,55, +0x111800,31, +0x111900,31, +0x111a00,6, +0x111a20,6, +0x111a40,6, +0x111a60,6, +0x111a80,6, +0x111aa0,6, +0x111ac0,6, +0x111ae0,6, +0x111b00,3, 0x111c00,20, 0x111c74,1, 0x111c80,20, @@ -4810,82 +5496,150 @@ 0x111d80,20, 0x111df4,1, 0x111e00,16, -0x112000,5, -0x112040,5, -0x112080,2, -0x112200,5, -0x112240,5, -0x112280,2, -0x112404,3, -0x112480,18, -0x112500,18, -0x112800,1, +0x112000,3, +0x112010,35, +0x1120a0,2, +0x1120c0,19, +0x112110,35, +0x1121a0,2, +0x1121c0,16, +0x112204,1, +0x112270,36, +0x112304,1, +0x112340,48, +0x112404,37, +0x1124a0,6, +0x1124c0,3, +0x112500,4, +0x112518,1, +0x112520,9, +0x112800,3, +0x112814,31, +0x1128a0,10, +0x1128d0,1, +0x112900,6, +0x112920,6, +0x112940,6, +0x112960,6, +0x112980,6, +0x1129a0,6, +0x1129c0,3, +0x112a00,7, +0x112a20,3, +0x112a30,1, +0x112c00,12, +0x112c34,22, +0x112d00,6, +0x112d20,6, +0x112d40,6, +0x112d60,6, +0x112d80,6, +0x112da0,3, +0x112e00,7, +0x112e20,3, +0x112e30,1, 0x113000,6, 0x113020,6, -0x113100,1, -0x113200,6, -0x113220,6, -0x113300,1, +0x113040,3, +0x1130f0,3, +0x113100,6, +0x113120,6, +0x113140,3, +0x1131f0,3, +0x113200,5, +0x113218,2, 0x113400,6, 0x113420,6, -0x113500,1, -0x113600,6, -0x113620,6, -0x113700,1, -0x113800,2, -0x113860,9, +0x113440,3, +0x1134f0,3, +0x113500,6, +0x113520,6, +0x113540,3, +0x1135f0,3, +0x113600,5, +0x113618,2, +0x113804,1, +0x113820,11, +0x113880,1, 0x113904,1, 0x11390c,1, +0x113914,1, +0x11391c,1, 0x113924,1, 0x11392c,1, -0x113a00,10, -0x113c00,1, -0x113c10,1, -0x113c20,1, -0x113c30,1, -0x113c40,1, -0x113c50,1, -0x113c60,1, -0x113c70,1, -0x113d00,17, -0x114000,6, -0x11401c,3, -0x11402c,3, -0x11403c,49, -0x114200,13, -0x114240,9, -0x114284,8, -0x114300,16, -0x114470,15, -0x1144b0,3, -0x114800,6, -0x11481c,3, -0x11482c,3, -0x11483c,49, -0x114a00,13, -0x114a40,9, -0x114a84,8, -0x114b00,16, -0x114c70,15, -0x114cb0,3, -0x115004,3, -0x115018,4, -0x115040,31, -0x1150c0,19, +0x113a00,12, +0x113c00,15, +0x113f00,25, +0x113f84,5, +0x113fa0,4, +0x114000,4, +0x114018,3, +0x114028,3, +0x114038,22, +0x114094,40, +0x114140,11, +0x114184,10, +0x1141c0,22, +0x114220,6, +0x114240,5, +0x114260,5, +0x1142f8,46, +0x1143b4,1, +0x1143bc,1, +0x1143c4,1, +0x1143cc,1, +0x1143d4,1, +0x1143dc,1, +0x1143e4,1, +0x1143ec,1, +0x114400,9, +0x114440,9, +0x1147a0,3, +0x1147b0,3, +0x1147c0,12, +0x114800,4, +0x114818,3, +0x114828,3, +0x114838,22, +0x114894,40, +0x114940,11, +0x114984,10, +0x1149c0,22, +0x114a20,6, +0x114a40,5, +0x114a60,5, +0x114af8,46, +0x114bb4,1, +0x114bbc,1, +0x114bc4,1, +0x114bcc,1, +0x114bd4,1, +0x114bdc,1, +0x114be4,1, +0x114bec,1, +0x114c00,9, +0x114c40,9, +0x114fa0,3, +0x114fb0,3, +0x114fc0,12, +0x115000,1, +0x11500c,3, +0x115020,5, +0x115038,46, 0x115118,24, +0x115200,32, 0x1152e0,2, 0x1152f0,4, 0x115304,1, 0x115314,3, 0x115324,1, -0x115334,3, +0x115330,4, 0x115344,1, 0x115354,3, 0x115364,1, 0x115374,3, -0x115384,1, -0x11538c,1, 0x115394,1, +0x1153a0,2, 0x115400,6, 0x115420,6, 0x115440,6, @@ -4897,29 +5651,34 @@ 0x115500,6, 0x115520,6, 0x115540,6, -0x115560,3, -0x115600,2, -0x115640,15, -0x115680,7, -0x1156a0,3, -0x115800,36, -0x115900,36, -0x115a00,43, -0x115b00,35, -0x115c00,19, -0x115c80,19, -0x115d00,12, +0x115560,6, +0x115580,6, +0x1155a0,6, +0x1155c0,6, +0x1155e0,6, +0x115600,3, +0x115800,2, +0x115840,15, +0x115880,7, +0x1158a0,21, +0x115c00,25, +0x115c80,13, +0x115cc0,15, +0x115d00,11, 0x115d40,11, -0x115d80,3, -0x115ee0,5, -0x115f00,19, -0x115f80,15, -0x115fc0,6, +0x115d80,5, +0x115da0,7, +0x115dc0,7, +0x115de0,6, +0x115e00,11, +0x115e40,19, +0x115e90,6, 0x116000,2, 0x116028,2, 0x116050,2, 0x116078,2, -0x1160a0,20, +0x1160a0,7, +0x1160c0,15, 0x1161ac,1, 0x1161d8,4, 0x116200,6, @@ -4927,46 +5686,60 @@ 0x116240,6, 0x116260,6, 0x116280,3, +0x116400,6, +0x116420,3, 0x118000,1, 0x118008,1, -0x118010,8, -0x118034,3, -0x118200,1, -0x118208,1, -0x118210,8, -0x118234,3, -0x118400,1, +0x118010,14, +0x118100,1, +0x118108,1, +0x118110,14, +0x118200,32, +0x1182f8,34, +0x1183f8,3, 0x118408,1, -0x118410,8, -0x118434,3, -0x118600,1, -0x118608,1, -0x118610,8, -0x118634,3, -0x118800,6, -0x11881c,4, +0x118410,14, +0x118500,1, +0x118508,1, +0x118510,14, +0x118600,32, +0x1186f8,34, +0x1187f8,8, +0x11881c,6, 0x118a00,11, 0x118a40,11, 0x118a80,11, 0x118ac0,11, -0x118b00,1, -0x118c04,1, -0x118c0c,1, -0x118c20,2, -0x118c34,3, -0x118c44,3, -0x118c54,8, -0x118e00,29, +0x118b00,2, +0x118c04,3, +0x118c14,12, +0x118c84,1, +0x118c8c,1, +0x118ca0,2, +0x118cb4,3, +0x118e00,30, 0x118e80,1, -0x118e88,2, -0x118f00,29, +0x118e88,3, +0x118f00,30, 0x118f80,1, -0x118f88,2, -0x119000,43, -0x119100,53, -0x119200,5, -0x119220,1, -0x119700,1, +0x118f88,3, +0x119000,22, +0x119100,25, +0x119200,10, +0x119240,2, +0x119600,6, +0x1196fc,55, +0x119800,31, +0x119900,31, +0x119a00,6, +0x119a20,6, +0x119a40,6, +0x119a60,6, +0x119a80,6, +0x119aa0,6, +0x119ac0,6, +0x119ae0,6, +0x119b00,3, 0x119c00,20, 0x119c74,1, 0x119c80,20, @@ -4976,82 +5749,150 @@ 0x119d80,20, 0x119df4,1, 0x119e00,16, -0x11a000,5, -0x11a040,5, -0x11a080,2, -0x11a200,5, -0x11a240,5, -0x11a280,2, -0x11a404,3, -0x11a480,18, -0x11a500,18, -0x11a800,1, +0x11a000,3, +0x11a010,35, +0x11a0a0,2, +0x11a0c0,19, +0x11a110,35, +0x11a1a0,2, +0x11a1c0,16, +0x11a204,1, +0x11a270,36, +0x11a304,1, +0x11a340,48, +0x11a404,37, +0x11a4a0,6, +0x11a4c0,3, +0x11a500,4, +0x11a518,1, +0x11a520,9, +0x11a800,3, +0x11a814,31, +0x11a8a0,10, +0x11a8d0,1, +0x11a900,6, +0x11a920,6, +0x11a940,6, +0x11a960,6, +0x11a980,6, +0x11a9a0,6, +0x11a9c0,3, +0x11aa00,7, +0x11aa20,3, +0x11aa30,1, +0x11ac00,12, +0x11ac34,22, +0x11ad00,6, +0x11ad20,6, +0x11ad40,6, +0x11ad60,6, +0x11ad80,6, +0x11ada0,3, +0x11ae00,7, +0x11ae20,3, +0x11ae30,1, 0x11b000,6, 0x11b020,6, -0x11b100,1, -0x11b200,6, -0x11b220,6, -0x11b300,1, +0x11b040,3, +0x11b0f0,3, +0x11b100,6, +0x11b120,6, +0x11b140,3, +0x11b1f0,3, +0x11b200,5, +0x11b218,2, 0x11b400,6, 0x11b420,6, -0x11b500,1, -0x11b600,6, -0x11b620,6, -0x11b700,1, -0x11b800,2, -0x11b860,9, +0x11b440,3, +0x11b4f0,3, +0x11b500,6, +0x11b520,6, +0x11b540,3, +0x11b5f0,3, +0x11b600,5, +0x11b618,2, +0x11b804,1, +0x11b820,11, +0x11b880,1, 0x11b904,1, 0x11b90c,1, +0x11b914,1, +0x11b91c,1, 0x11b924,1, 0x11b92c,1, -0x11ba00,10, -0x11bc00,1, -0x11bc10,1, -0x11bc20,1, -0x11bc30,1, -0x11bc40,1, -0x11bc50,1, -0x11bc60,1, -0x11bc70,1, -0x11bd00,17, -0x11c000,6, -0x11c01c,3, -0x11c02c,3, -0x11c03c,49, -0x11c200,13, -0x11c240,9, -0x11c284,8, -0x11c300,16, -0x11c470,15, -0x11c4b0,3, -0x11c800,6, -0x11c81c,3, -0x11c82c,3, -0x11c83c,49, -0x11ca00,13, -0x11ca40,9, -0x11ca84,8, -0x11cb00,16, -0x11cc70,15, -0x11ccb0,3, -0x11d004,3, -0x11d018,4, -0x11d040,31, -0x11d0c0,19, +0x11ba00,12, +0x11bc00,15, +0x11bf00,25, +0x11bf84,5, +0x11bfa0,4, +0x11c000,4, +0x11c018,3, +0x11c028,3, +0x11c038,22, +0x11c094,40, +0x11c140,11, +0x11c184,10, +0x11c1c0,22, +0x11c220,6, +0x11c240,5, +0x11c260,5, +0x11c2f8,46, +0x11c3b4,1, +0x11c3bc,1, +0x11c3c4,1, +0x11c3cc,1, +0x11c3d4,1, +0x11c3dc,1, +0x11c3e4,1, +0x11c3ec,1, +0x11c400,9, +0x11c440,9, +0x11c7a0,3, +0x11c7b0,3, +0x11c7c0,12, +0x11c800,4, +0x11c818,3, +0x11c828,3, +0x11c838,22, +0x11c894,40, +0x11c940,11, +0x11c984,10, +0x11c9c0,22, +0x11ca20,6, +0x11ca40,5, +0x11ca60,5, +0x11caf8,46, +0x11cbb4,1, +0x11cbbc,1, +0x11cbc4,1, +0x11cbcc,1, +0x11cbd4,1, +0x11cbdc,1, +0x11cbe4,1, +0x11cbec,1, +0x11cc00,9, +0x11cc40,9, +0x11cfa0,3, +0x11cfb0,3, +0x11cfc0,12, +0x11d000,1, +0x11d00c,3, +0x11d020,5, +0x11d038,46, 0x11d118,24, +0x11d200,32, 0x11d2e0,2, 0x11d2f0,4, 0x11d304,1, 0x11d314,3, 0x11d324,1, -0x11d334,3, +0x11d330,4, 0x11d344,1, 0x11d354,3, 0x11d364,1, 0x11d374,3, -0x11d384,1, -0x11d38c,1, 0x11d394,1, +0x11d3a0,2, 0x11d400,6, 0x11d420,6, 0x11d440,6, @@ -5063,29 +5904,34 @@ 0x11d500,6, 0x11d520,6, 0x11d540,6, -0x11d560,3, -0x11d600,2, -0x11d640,15, -0x11d680,7, -0x11d6a0,3, -0x11d800,36, -0x11d900,36, -0x11da00,43, -0x11db00,35, -0x11dc00,19, -0x11dc80,19, -0x11dd00,12, +0x11d560,6, +0x11d580,6, +0x11d5a0,6, +0x11d5c0,6, +0x11d5e0,6, +0x11d600,3, +0x11d800,2, +0x11d840,15, +0x11d880,7, +0x11d8a0,21, +0x11dc00,25, +0x11dc80,13, +0x11dcc0,15, +0x11dd00,11, 0x11dd40,11, -0x11dd80,3, -0x11dee0,5, -0x11df00,19, -0x11df80,15, -0x11dfc0,6, +0x11dd80,5, +0x11dda0,7, +0x11ddc0,7, +0x11dde0,6, +0x11de00,11, +0x11de40,19, +0x11de90,6, 0x11e000,2, 0x11e028,2, 0x11e050,2, 0x11e078,2, -0x11e0a0,20, +0x11e0a0,7, +0x11e0c0,15, 0x11e1ac,1, 0x11e1d8,4, 0x11e200,6, @@ -5093,46 +5939,60 @@ 0x11e240,6, 0x11e260,6, 0x11e280,3, +0x11e400,6, +0x11e420,3, 0x120000,1, 0x120008,1, -0x120010,8, -0x120034,3, -0x120200,1, -0x120208,1, -0x120210,8, -0x120234,3, -0x120400,1, +0x120010,14, +0x120100,1, +0x120108,1, +0x120110,14, +0x120200,32, +0x1202f8,34, +0x1203f8,3, 0x120408,1, -0x120410,8, -0x120434,3, -0x120600,1, -0x120608,1, -0x120610,8, -0x120634,3, -0x120800,6, -0x12081c,4, +0x120410,14, +0x120500,1, +0x120508,1, +0x120510,14, +0x120600,32, +0x1206f8,34, +0x1207f8,8, +0x12081c,6, 0x120a00,11, 0x120a40,11, 0x120a80,11, 0x120ac0,11, -0x120b00,1, -0x120c04,1, -0x120c0c,1, -0x120c20,2, -0x120c34,3, -0x120c44,3, -0x120c54,8, -0x120e00,29, +0x120b00,2, +0x120c04,3, +0x120c14,12, +0x120c84,1, +0x120c8c,1, +0x120ca0,2, +0x120cb4,3, +0x120e00,30, 0x120e80,1, -0x120e88,2, -0x120f00,29, +0x120e88,3, +0x120f00,30, 0x120f80,1, -0x120f88,2, -0x121000,43, -0x121100,53, -0x121200,5, -0x121220,1, -0x121700,1, +0x120f88,3, +0x121000,22, +0x121100,25, +0x121200,10, +0x121240,2, +0x121600,6, +0x1216fc,55, +0x121800,31, +0x121900,31, +0x121a00,6, +0x121a20,6, +0x121a40,6, +0x121a60,6, +0x121a80,6, +0x121aa0,6, +0x121ac0,6, +0x121ae0,6, +0x121b00,3, 0x121c00,20, 0x121c74,1, 0x121c80,20, @@ -5142,82 +6002,150 @@ 0x121d80,20, 0x121df4,1, 0x121e00,16, -0x122000,5, -0x122040,5, -0x122080,2, -0x122200,5, -0x122240,5, -0x122280,2, -0x122404,3, -0x122480,18, -0x122500,18, -0x122800,1, +0x122000,3, +0x122010,35, +0x1220a0,2, +0x1220c0,19, +0x122110,35, +0x1221a0,2, +0x1221c0,16, +0x122204,1, +0x122270,36, +0x122304,1, +0x122340,48, +0x122404,37, +0x1224a0,6, +0x1224c0,3, +0x122500,4, +0x122518,1, +0x122520,9, +0x122800,3, +0x122814,31, +0x1228a0,10, +0x1228d0,1, +0x122900,6, +0x122920,6, +0x122940,6, +0x122960,6, +0x122980,6, +0x1229a0,6, +0x1229c0,3, +0x122a00,7, +0x122a20,3, +0x122a30,1, +0x122c00,12, +0x122c34,22, +0x122d00,6, +0x122d20,6, +0x122d40,6, +0x122d60,6, +0x122d80,6, +0x122da0,3, +0x122e00,7, +0x122e20,3, +0x122e30,1, 0x123000,6, 0x123020,6, -0x123100,1, -0x123200,6, -0x123220,6, -0x123300,1, +0x123040,3, +0x1230f0,3, +0x123100,6, +0x123120,6, +0x123140,3, +0x1231f0,3, +0x123200,5, +0x123218,2, 0x123400,6, 0x123420,6, -0x123500,1, -0x123600,6, -0x123620,6, -0x123700,1, -0x123800,2, -0x123860,9, +0x123440,3, +0x1234f0,3, +0x123500,6, +0x123520,6, +0x123540,3, +0x1235f0,3, +0x123600,5, +0x123618,2, +0x123804,1, +0x123820,11, +0x123880,1, 0x123904,1, 0x12390c,1, +0x123914,1, +0x12391c,1, 0x123924,1, 0x12392c,1, -0x123a00,10, -0x123c00,1, -0x123c10,1, -0x123c20,1, -0x123c30,1, -0x123c40,1, -0x123c50,1, -0x123c60,1, -0x123c70,1, -0x123d00,17, -0x124000,6, -0x12401c,3, -0x12402c,3, -0x12403c,49, -0x124200,13, -0x124240,9, -0x124284,8, -0x124300,16, -0x124470,15, -0x1244b0,3, -0x124800,6, -0x12481c,3, -0x12482c,3, -0x12483c,49, -0x124a00,13, -0x124a40,9, -0x124a84,8, -0x124b00,16, -0x124c70,15, -0x124cb0,3, -0x125004,3, -0x125018,4, -0x125040,31, -0x1250c0,19, +0x123a00,12, +0x123c00,15, +0x123f00,25, +0x123f84,5, +0x123fa0,4, +0x124000,4, +0x124018,3, +0x124028,3, +0x124038,22, +0x124094,40, +0x124140,11, +0x124184,10, +0x1241c0,22, +0x124220,6, +0x124240,5, +0x124260,5, +0x1242f8,46, +0x1243b4,1, +0x1243bc,1, +0x1243c4,1, +0x1243cc,1, +0x1243d4,1, +0x1243dc,1, +0x1243e4,1, +0x1243ec,1, +0x124400,9, +0x124440,9, +0x1247a0,3, +0x1247b0,3, +0x1247c0,12, +0x124800,4, +0x124818,3, +0x124828,3, +0x124838,22, +0x124894,40, +0x124940,11, +0x124984,10, +0x1249c0,22, +0x124a20,6, +0x124a40,5, +0x124a60,5, +0x124af8,46, +0x124bb4,1, +0x124bbc,1, +0x124bc4,1, +0x124bcc,1, +0x124bd4,1, +0x124bdc,1, +0x124be4,1, +0x124bec,1, +0x124c00,9, +0x124c40,9, +0x124fa0,3, +0x124fb0,3, +0x124fc0,12, +0x125000,1, +0x12500c,3, +0x125020,5, +0x125038,46, 0x125118,24, +0x125200,32, 0x1252e0,2, 0x1252f0,4, 0x125304,1, 0x125314,3, 0x125324,1, -0x125334,3, +0x125330,4, 0x125344,1, 0x125354,3, 0x125364,1, 0x125374,3, -0x125384,1, -0x12538c,1, 0x125394,1, +0x1253a0,2, 0x125400,6, 0x125420,6, 0x125440,6, @@ -5229,29 +6157,34 @@ 0x125500,6, 0x125520,6, 0x125540,6, -0x125560,3, -0x125600,2, -0x125640,15, -0x125680,7, -0x1256a0,3, -0x125800,36, -0x125900,36, -0x125a00,43, -0x125b00,35, -0x125c00,19, -0x125c80,19, -0x125d00,12, +0x125560,6, +0x125580,6, +0x1255a0,6, +0x1255c0,6, +0x1255e0,6, +0x125600,3, +0x125800,2, +0x125840,15, +0x125880,7, +0x1258a0,21, +0x125c00,25, +0x125c80,13, +0x125cc0,15, +0x125d00,11, 0x125d40,11, -0x125d80,3, -0x125ee0,5, -0x125f00,19, -0x125f80,15, -0x125fc0,6, +0x125d80,5, +0x125da0,7, +0x125dc0,7, +0x125de0,6, +0x125e00,11, +0x125e40,19, +0x125e90,6, 0x126000,2, 0x126028,2, 0x126050,2, 0x126078,2, -0x1260a0,20, +0x1260a0,7, +0x1260c0,15, 0x1261ac,1, 0x1261d8,4, 0x126200,6, @@ -5259,46 +6192,60 @@ 0x126240,6, 0x126260,6, 0x126280,3, +0x126400,6, +0x126420,3, 0x128000,1, 0x128008,1, -0x128010,8, -0x128034,3, -0x128200,1, -0x128208,1, -0x128210,8, -0x128234,3, -0x128400,1, +0x128010,14, +0x128100,1, +0x128108,1, +0x128110,14, +0x128200,32, +0x1282f8,34, +0x1283f8,3, 0x128408,1, -0x128410,8, -0x128434,3, -0x128600,1, -0x128608,1, -0x128610,8, -0x128634,3, -0x128800,6, -0x12881c,4, +0x128410,14, +0x128500,1, +0x128508,1, +0x128510,14, +0x128600,32, +0x1286f8,34, +0x1287f8,8, +0x12881c,6, 0x128a00,11, 0x128a40,11, 0x128a80,11, 0x128ac0,11, -0x128b00,1, -0x128c04,1, -0x128c0c,1, -0x128c20,2, -0x128c34,3, -0x128c44,3, -0x128c54,8, -0x128e00,29, +0x128b00,2, +0x128c04,3, +0x128c14,12, +0x128c84,1, +0x128c8c,1, +0x128ca0,2, +0x128cb4,3, +0x128e00,30, 0x128e80,1, -0x128e88,2, -0x128f00,29, +0x128e88,3, +0x128f00,30, 0x128f80,1, -0x128f88,2, -0x129000,43, -0x129100,53, -0x129200,5, -0x129220,1, -0x129700,1, +0x128f88,3, +0x129000,22, +0x129100,25, +0x129200,10, +0x129240,2, +0x129600,6, +0x1296fc,55, +0x129800,31, +0x129900,31, +0x129a00,6, +0x129a20,6, +0x129a40,6, +0x129a60,6, +0x129a80,6, +0x129aa0,6, +0x129ac0,6, +0x129ae0,6, +0x129b00,3, 0x129c00,20, 0x129c74,1, 0x129c80,20, @@ -5308,82 +6255,150 @@ 0x129d80,20, 0x129df4,1, 0x129e00,16, -0x12a000,5, -0x12a040,5, -0x12a080,2, -0x12a200,5, -0x12a240,5, -0x12a280,2, -0x12a404,3, -0x12a480,18, -0x12a500,18, -0x12a800,1, +0x12a000,3, +0x12a010,35, +0x12a0a0,2, +0x12a0c0,19, +0x12a110,35, +0x12a1a0,2, +0x12a1c0,16, +0x12a204,1, +0x12a270,36, +0x12a304,1, +0x12a340,48, +0x12a404,37, +0x12a4a0,6, +0x12a4c0,3, +0x12a500,4, +0x12a518,1, +0x12a520,9, +0x12a800,3, +0x12a814,31, +0x12a8a0,10, +0x12a8d0,1, +0x12a900,6, +0x12a920,6, +0x12a940,6, +0x12a960,6, +0x12a980,6, +0x12a9a0,6, +0x12a9c0,3, +0x12aa00,7, +0x12aa20,3, +0x12aa30,1, +0x12ac00,12, +0x12ac34,22, +0x12ad00,6, +0x12ad20,6, +0x12ad40,6, +0x12ad60,6, +0x12ad80,6, +0x12ada0,3, +0x12ae00,7, +0x12ae20,3, +0x12ae30,1, 0x12b000,6, 0x12b020,6, -0x12b100,1, -0x12b200,6, -0x12b220,6, -0x12b300,1, +0x12b040,3, +0x12b0f0,3, +0x12b100,6, +0x12b120,6, +0x12b140,3, +0x12b1f0,3, +0x12b200,5, +0x12b218,2, 0x12b400,6, 0x12b420,6, -0x12b500,1, -0x12b600,6, -0x12b620,6, -0x12b700,1, -0x12b800,2, -0x12b860,9, +0x12b440,3, +0x12b4f0,3, +0x12b500,6, +0x12b520,6, +0x12b540,3, +0x12b5f0,3, +0x12b600,5, +0x12b618,2, +0x12b804,1, +0x12b820,11, +0x12b880,1, 0x12b904,1, 0x12b90c,1, +0x12b914,1, +0x12b91c,1, 0x12b924,1, 0x12b92c,1, -0x12ba00,10, -0x12bc00,1, -0x12bc10,1, -0x12bc20,1, -0x12bc30,1, -0x12bc40,1, -0x12bc50,1, -0x12bc60,1, -0x12bc70,1, -0x12bd00,17, -0x12c000,6, -0x12c01c,3, -0x12c02c,3, -0x12c03c,49, -0x12c200,13, -0x12c240,9, -0x12c284,8, -0x12c300,16, -0x12c470,15, -0x12c4b0,3, -0x12c800,6, -0x12c81c,3, -0x12c82c,3, -0x12c83c,49, -0x12ca00,13, -0x12ca40,9, -0x12ca84,8, -0x12cb00,16, -0x12cc70,15, -0x12ccb0,3, -0x12d004,3, -0x12d018,4, -0x12d040,31, -0x12d0c0,19, +0x12ba00,12, +0x12bc00,15, +0x12bf00,25, +0x12bf84,5, +0x12bfa0,4, +0x12c000,4, +0x12c018,3, +0x12c028,3, +0x12c038,22, +0x12c094,40, +0x12c140,11, +0x12c184,10, +0x12c1c0,22, +0x12c220,6, +0x12c240,5, +0x12c260,5, +0x12c2f8,46, +0x12c3b4,1, +0x12c3bc,1, +0x12c3c4,1, +0x12c3cc,1, +0x12c3d4,1, +0x12c3dc,1, +0x12c3e4,1, +0x12c3ec,1, +0x12c400,9, +0x12c440,9, +0x12c7a0,3, +0x12c7b0,3, +0x12c7c0,12, +0x12c800,4, +0x12c818,3, +0x12c828,3, +0x12c838,22, +0x12c894,40, +0x12c940,11, +0x12c984,10, +0x12c9c0,22, +0x12ca20,6, +0x12ca40,5, +0x12ca60,5, +0x12caf8,46, +0x12cbb4,1, +0x12cbbc,1, +0x12cbc4,1, +0x12cbcc,1, +0x12cbd4,1, +0x12cbdc,1, +0x12cbe4,1, +0x12cbec,1, +0x12cc00,9, +0x12cc40,9, +0x12cfa0,3, +0x12cfb0,3, +0x12cfc0,12, +0x12d000,1, +0x12d00c,3, +0x12d020,5, +0x12d038,46, 0x12d118,24, +0x12d200,32, 0x12d2e0,2, 0x12d2f0,4, 0x12d304,1, 0x12d314,3, 0x12d324,1, -0x12d334,3, +0x12d330,4, 0x12d344,1, 0x12d354,3, 0x12d364,1, 0x12d374,3, -0x12d384,1, -0x12d38c,1, 0x12d394,1, +0x12d3a0,2, 0x12d400,6, 0x12d420,6, 0x12d440,6, @@ -5395,29 +6410,34 @@ 0x12d500,6, 0x12d520,6, 0x12d540,6, -0x12d560,3, -0x12d600,2, -0x12d640,15, -0x12d680,7, -0x12d6a0,3, -0x12d800,36, -0x12d900,36, -0x12da00,43, -0x12db00,35, -0x12dc00,19, -0x12dc80,19, -0x12dd00,12, +0x12d560,6, +0x12d580,6, +0x12d5a0,6, +0x12d5c0,6, +0x12d5e0,6, +0x12d600,3, +0x12d800,2, +0x12d840,15, +0x12d880,7, +0x12d8a0,21, +0x12dc00,25, +0x12dc80,13, +0x12dcc0,15, +0x12dd00,11, 0x12dd40,11, -0x12dd80,3, -0x12dee0,5, -0x12df00,19, -0x12df80,15, -0x12dfc0,6, +0x12dd80,5, +0x12dda0,7, +0x12ddc0,7, +0x12dde0,6, +0x12de00,11, +0x12de40,19, +0x12de90,6, 0x12e000,2, 0x12e028,2, 0x12e050,2, 0x12e078,2, -0x12e0a0,20, +0x12e0a0,7, +0x12e0c0,15, 0x12e1ac,1, 0x12e1d8,4, 0x12e200,6, @@ -5425,46 +6445,60 @@ 0x12e240,6, 0x12e260,6, 0x12e280,3, +0x12e400,6, +0x12e420,3, 0x130000,1, 0x130008,1, -0x130010,8, -0x130034,3, -0x130200,1, -0x130208,1, -0x130210,8, -0x130234,3, -0x130400,1, +0x130010,14, +0x130100,1, +0x130108,1, +0x130110,14, +0x130200,32, +0x1302f8,34, +0x1303f8,3, 0x130408,1, -0x130410,8, -0x130434,3, -0x130600,1, -0x130608,1, -0x130610,8, -0x130634,3, -0x130800,6, -0x13081c,4, +0x130410,14, +0x130500,1, +0x130508,1, +0x130510,14, +0x130600,32, +0x1306f8,34, +0x1307f8,8, +0x13081c,6, 0x130a00,11, 0x130a40,11, 0x130a80,11, 0x130ac0,11, -0x130b00,1, -0x130c04,1, -0x130c0c,1, -0x130c20,2, -0x130c34,3, -0x130c44,3, -0x130c54,8, -0x130e00,29, +0x130b00,2, +0x130c04,3, +0x130c14,12, +0x130c84,1, +0x130c8c,1, +0x130ca0,2, +0x130cb4,3, +0x130e00,30, 0x130e80,1, -0x130e88,2, -0x130f00,29, +0x130e88,3, +0x130f00,30, 0x130f80,1, -0x130f88,2, -0x131000,43, -0x131100,53, -0x131200,5, -0x131220,1, -0x131700,1, +0x130f88,3, +0x131000,22, +0x131100,25, +0x131200,10, +0x131240,2, +0x131600,6, +0x1316fc,55, +0x131800,31, +0x131900,31, +0x131a00,6, +0x131a20,6, +0x131a40,6, +0x131a60,6, +0x131a80,6, +0x131aa0,6, +0x131ac0,6, +0x131ae0,6, +0x131b00,3, 0x131c00,20, 0x131c74,1, 0x131c80,20, @@ -5474,82 +6508,150 @@ 0x131d80,20, 0x131df4,1, 0x131e00,16, -0x132000,5, -0x132040,5, -0x132080,2, -0x132200,5, -0x132240,5, -0x132280,2, -0x132404,3, -0x132480,18, -0x132500,18, -0x132800,1, +0x132000,3, +0x132010,35, +0x1320a0,2, +0x1320c0,19, +0x132110,35, +0x1321a0,2, +0x1321c0,16, +0x132204,1, +0x132270,36, +0x132304,1, +0x132340,48, +0x132404,37, +0x1324a0,6, +0x1324c0,3, +0x132500,4, +0x132518,1, +0x132520,9, +0x132800,3, +0x132814,31, +0x1328a0,10, +0x1328d0,1, +0x132900,6, +0x132920,6, +0x132940,6, +0x132960,6, +0x132980,6, +0x1329a0,6, +0x1329c0,3, +0x132a00,7, +0x132a20,3, +0x132a30,1, +0x132c00,12, +0x132c34,22, +0x132d00,6, +0x132d20,6, +0x132d40,6, +0x132d60,6, +0x132d80,6, +0x132da0,3, +0x132e00,7, +0x132e20,3, +0x132e30,1, 0x133000,6, 0x133020,6, -0x133100,1, -0x133200,6, -0x133220,6, -0x133300,1, +0x133040,3, +0x1330f0,3, +0x133100,6, +0x133120,6, +0x133140,3, +0x1331f0,3, +0x133200,5, +0x133218,2, 0x133400,6, 0x133420,6, -0x133500,1, -0x133600,6, -0x133620,6, -0x133700,1, -0x133800,2, -0x133860,9, +0x133440,3, +0x1334f0,3, +0x133500,6, +0x133520,6, +0x133540,3, +0x1335f0,3, +0x133600,5, +0x133618,2, +0x133804,1, +0x133820,11, +0x133880,1, 0x133904,1, 0x13390c,1, +0x133914,1, +0x13391c,1, 0x133924,1, 0x13392c,1, -0x133a00,10, -0x133c00,1, -0x133c10,1, -0x133c20,1, -0x133c30,1, -0x133c40,1, -0x133c50,1, -0x133c60,1, -0x133c70,1, -0x133d00,17, -0x134000,6, -0x13401c,3, -0x13402c,3, -0x13403c,49, -0x134200,13, -0x134240,9, -0x134284,8, -0x134300,16, -0x134470,15, -0x1344b0,3, -0x134800,6, -0x13481c,3, -0x13482c,3, -0x13483c,49, -0x134a00,13, -0x134a40,9, -0x134a84,8, -0x134b00,16, -0x134c70,15, -0x134cb0,3, -0x135004,3, -0x135018,4, -0x135040,31, -0x1350c0,19, +0x133a00,12, +0x133c00,15, +0x133f00,25, +0x133f84,5, +0x133fa0,4, +0x134000,4, +0x134018,3, +0x134028,3, +0x134038,22, +0x134094,40, +0x134140,11, +0x134184,10, +0x1341c0,22, +0x134220,6, +0x134240,5, +0x134260,5, +0x1342f8,46, +0x1343b4,1, +0x1343bc,1, +0x1343c4,1, +0x1343cc,1, +0x1343d4,1, +0x1343dc,1, +0x1343e4,1, +0x1343ec,1, +0x134400,9, +0x134440,9, +0x1347a0,3, +0x1347b0,3, +0x1347c0,12, +0x134800,4, +0x134818,3, +0x134828,3, +0x134838,22, +0x134894,40, +0x134940,11, +0x134984,10, +0x1349c0,22, +0x134a20,6, +0x134a40,5, +0x134a60,5, +0x134af8,46, +0x134bb4,1, +0x134bbc,1, +0x134bc4,1, +0x134bcc,1, +0x134bd4,1, +0x134bdc,1, +0x134be4,1, +0x134bec,1, +0x134c00,9, +0x134c40,9, +0x134fa0,3, +0x134fb0,3, +0x134fc0,12, +0x135000,1, +0x13500c,3, +0x135020,5, +0x135038,46, 0x135118,24, +0x135200,32, 0x1352e0,2, 0x1352f0,4, 0x135304,1, 0x135314,3, 0x135324,1, -0x135334,3, +0x135330,4, 0x135344,1, 0x135354,3, 0x135364,1, 0x135374,3, -0x135384,1, -0x13538c,1, 0x135394,1, +0x1353a0,2, 0x135400,6, 0x135420,6, 0x135440,6, @@ -5561,29 +6663,34 @@ 0x135500,6, 0x135520,6, 0x135540,6, -0x135560,3, -0x135600,2, -0x135640,15, -0x135680,7, -0x1356a0,3, -0x135800,36, -0x135900,36, -0x135a00,43, -0x135b00,35, -0x135c00,19, -0x135c80,19, -0x135d00,12, +0x135560,6, +0x135580,6, +0x1355a0,6, +0x1355c0,6, +0x1355e0,6, +0x135600,3, +0x135800,2, +0x135840,15, +0x135880,7, +0x1358a0,21, +0x135c00,25, +0x135c80,13, +0x135cc0,15, +0x135d00,11, 0x135d40,11, -0x135d80,3, -0x135ee0,5, -0x135f00,19, -0x135f80,15, -0x135fc0,6, +0x135d80,5, +0x135da0,7, +0x135dc0,7, +0x135de0,6, +0x135e00,11, +0x135e40,19, +0x135e90,6, 0x136000,2, 0x136028,2, 0x136050,2, 0x136078,2, -0x1360a0,20, +0x1360a0,7, +0x1360c0,15, 0x1361ac,1, 0x1361d8,4, 0x136200,6, @@ -5591,46 +6698,60 @@ 0x136240,6, 0x136260,6, 0x136280,3, +0x136400,6, +0x136420,3, 0x138000,1, 0x138008,1, -0x138010,8, -0x138034,3, -0x138200,1, -0x138208,1, -0x138210,8, -0x138234,3, -0x138400,1, +0x138010,14, +0x138100,1, +0x138108,1, +0x138110,14, +0x138200,32, +0x1382f8,34, +0x1383f8,3, 0x138408,1, -0x138410,8, -0x138434,3, -0x138600,1, -0x138608,1, -0x138610,8, -0x138634,3, -0x138800,6, -0x13881c,4, +0x138410,14, +0x138500,1, +0x138508,1, +0x138510,14, +0x138600,32, +0x1386f8,34, +0x1387f8,8, +0x13881c,6, 0x138a00,11, 0x138a40,11, 0x138a80,11, 0x138ac0,11, -0x138b00,1, -0x138c04,1, -0x138c0c,1, -0x138c20,2, -0x138c34,3, -0x138c44,3, -0x138c54,8, -0x138e00,29, +0x138b00,2, +0x138c04,3, +0x138c14,12, +0x138c84,1, +0x138c8c,1, +0x138ca0,2, +0x138cb4,3, +0x138e00,30, 0x138e80,1, -0x138e88,2, -0x138f00,29, +0x138e88,3, +0x138f00,30, 0x138f80,1, -0x138f88,2, -0x139000,43, -0x139100,53, -0x139200,5, -0x139220,1, -0x139700,1, +0x138f88,3, +0x139000,22, +0x139100,25, +0x139200,10, +0x139240,2, +0x139600,6, +0x1396fc,55, +0x139800,31, +0x139900,31, +0x139a00,6, +0x139a20,6, +0x139a40,6, +0x139a60,6, +0x139a80,6, +0x139aa0,6, +0x139ac0,6, +0x139ae0,6, +0x139b00,3, 0x139c00,20, 0x139c74,1, 0x139c80,20, @@ -5640,82 +6761,150 @@ 0x139d80,20, 0x139df4,1, 0x139e00,16, -0x13a000,5, -0x13a040,5, -0x13a080,2, -0x13a200,5, -0x13a240,5, -0x13a280,2, -0x13a404,3, -0x13a480,18, -0x13a500,18, -0x13a800,1, +0x13a000,3, +0x13a010,35, +0x13a0a0,2, +0x13a0c0,19, +0x13a110,35, +0x13a1a0,2, +0x13a1c0,16, +0x13a204,1, +0x13a270,36, +0x13a304,1, +0x13a340,48, +0x13a404,37, +0x13a4a0,6, +0x13a4c0,3, +0x13a500,4, +0x13a518,1, +0x13a520,9, +0x13a800,3, +0x13a814,31, +0x13a8a0,10, +0x13a8d0,1, +0x13a900,6, +0x13a920,6, +0x13a940,6, +0x13a960,6, +0x13a980,6, +0x13a9a0,6, +0x13a9c0,3, +0x13aa00,7, +0x13aa20,3, +0x13aa30,1, +0x13ac00,12, +0x13ac34,22, +0x13ad00,6, +0x13ad20,6, +0x13ad40,6, +0x13ad60,6, +0x13ad80,6, +0x13ada0,3, +0x13ae00,7, +0x13ae20,3, +0x13ae30,1, 0x13b000,6, 0x13b020,6, -0x13b100,1, -0x13b200,6, -0x13b220,6, -0x13b300,1, +0x13b040,3, +0x13b0f0,3, +0x13b100,6, +0x13b120,6, +0x13b140,3, +0x13b1f0,3, +0x13b200,5, +0x13b218,2, 0x13b400,6, 0x13b420,6, -0x13b500,1, -0x13b600,6, -0x13b620,6, -0x13b700,1, -0x13b800,2, -0x13b860,9, +0x13b440,3, +0x13b4f0,3, +0x13b500,6, +0x13b520,6, +0x13b540,3, +0x13b5f0,3, +0x13b600,5, +0x13b618,2, +0x13b804,1, +0x13b820,11, +0x13b880,1, 0x13b904,1, 0x13b90c,1, +0x13b914,1, +0x13b91c,1, 0x13b924,1, 0x13b92c,1, -0x13ba00,10, -0x13bc00,1, -0x13bc10,1, -0x13bc20,1, -0x13bc30,1, -0x13bc40,1, -0x13bc50,1, -0x13bc60,1, -0x13bc70,1, -0x13bd00,17, -0x13c000,6, -0x13c01c,3, -0x13c02c,3, -0x13c03c,49, -0x13c200,13, -0x13c240,9, -0x13c284,8, -0x13c300,16, -0x13c470,15, -0x13c4b0,3, -0x13c800,6, -0x13c81c,3, -0x13c82c,3, -0x13c83c,49, -0x13ca00,13, -0x13ca40,9, -0x13ca84,8, -0x13cb00,16, -0x13cc70,15, -0x13ccb0,3, -0x13d004,3, -0x13d018,4, -0x13d040,31, -0x13d0c0,19, +0x13ba00,12, +0x13bc00,15, +0x13bf00,25, +0x13bf84,5, +0x13bfa0,4, +0x13c000,4, +0x13c018,3, +0x13c028,3, +0x13c038,22, +0x13c094,40, +0x13c140,11, +0x13c184,10, +0x13c1c0,22, +0x13c220,6, +0x13c240,5, +0x13c260,5, +0x13c2f8,46, +0x13c3b4,1, +0x13c3bc,1, +0x13c3c4,1, +0x13c3cc,1, +0x13c3d4,1, +0x13c3dc,1, +0x13c3e4,1, +0x13c3ec,1, +0x13c400,9, +0x13c440,9, +0x13c7a0,3, +0x13c7b0,3, +0x13c7c0,12, +0x13c800,4, +0x13c818,3, +0x13c828,3, +0x13c838,22, +0x13c894,40, +0x13c940,11, +0x13c984,10, +0x13c9c0,22, +0x13ca20,6, +0x13ca40,5, +0x13ca60,5, +0x13caf8,46, +0x13cbb4,1, +0x13cbbc,1, +0x13cbc4,1, +0x13cbcc,1, +0x13cbd4,1, +0x13cbdc,1, +0x13cbe4,1, +0x13cbec,1, +0x13cc00,9, +0x13cc40,9, +0x13cfa0,3, +0x13cfb0,3, +0x13cfc0,12, +0x13d000,1, +0x13d00c,3, +0x13d020,5, +0x13d038,46, 0x13d118,24, +0x13d200,32, 0x13d2e0,2, 0x13d2f0,4, 0x13d304,1, 0x13d314,3, 0x13d324,1, -0x13d334,3, +0x13d330,4, 0x13d344,1, 0x13d354,3, 0x13d364,1, 0x13d374,3, -0x13d384,1, -0x13d38c,1, 0x13d394,1, +0x13d3a0,2, 0x13d400,6, 0x13d420,6, 0x13d440,6, @@ -5727,29 +6916,34 @@ 0x13d500,6, 0x13d520,6, 0x13d540,6, -0x13d560,3, -0x13d600,2, -0x13d640,15, -0x13d680,7, -0x13d6a0,3, -0x13d800,36, -0x13d900,36, -0x13da00,43, -0x13db00,35, -0x13dc00,19, -0x13dc80,19, -0x13dd00,12, +0x13d560,6, +0x13d580,6, +0x13d5a0,6, +0x13d5c0,6, +0x13d5e0,6, +0x13d600,3, +0x13d800,2, +0x13d840,15, +0x13d880,7, +0x13d8a0,21, +0x13dc00,25, +0x13dc80,13, +0x13dcc0,15, +0x13dd00,11, 0x13dd40,11, -0x13dd80,3, -0x13dee0,5, -0x13df00,19, -0x13df80,15, -0x13dfc0,6, +0x13dd80,5, +0x13dda0,7, +0x13ddc0,7, +0x13dde0,6, +0x13de00,11, +0x13de40,19, +0x13de90,6, 0x13e000,2, 0x13e028,2, 0x13e050,2, 0x13e078,2, -0x13e0a0,20, +0x13e0a0,7, +0x13e0c0,15, 0x13e1ac,1, 0x13e1d8,4, 0x13e200,6, @@ -5757,46 +6951,60 @@ 0x13e240,6, 0x13e260,6, 0x13e280,3, +0x13e400,6, +0x13e420,3, 0x140000,1, 0x140008,1, -0x140010,8, -0x140034,3, -0x140200,1, -0x140208,1, -0x140210,8, -0x140234,3, -0x140400,1, +0x140010,14, +0x140100,1, +0x140108,1, +0x140110,14, +0x140200,32, +0x1402f8,34, +0x1403f8,3, 0x140408,1, -0x140410,8, -0x140434,3, -0x140600,1, -0x140608,1, -0x140610,8, -0x140634,3, -0x140800,6, -0x14081c,4, +0x140410,14, +0x140500,1, +0x140508,1, +0x140510,14, +0x140600,32, +0x1406f8,34, +0x1407f8,8, +0x14081c,6, 0x140a00,11, 0x140a40,11, 0x140a80,11, 0x140ac0,11, -0x140b00,1, -0x140c04,1, -0x140c0c,1, -0x140c20,2, -0x140c34,3, -0x140c44,3, -0x140c54,8, -0x140e00,29, +0x140b00,2, +0x140c04,3, +0x140c14,12, +0x140c84,1, +0x140c8c,1, +0x140ca0,2, +0x140cb4,3, +0x140e00,30, 0x140e80,1, -0x140e88,2, -0x140f00,29, +0x140e88,3, +0x140f00,30, 0x140f80,1, -0x140f88,2, -0x141000,43, -0x141100,53, -0x141200,5, -0x141220,1, -0x141700,1, +0x140f88,3, +0x141000,22, +0x141100,25, +0x141200,10, +0x141240,2, +0x141600,6, +0x1416fc,55, +0x141800,31, +0x141900,31, +0x141a00,6, +0x141a20,6, +0x141a40,6, +0x141a60,6, +0x141a80,6, +0x141aa0,6, +0x141ac0,6, +0x141ae0,6, +0x141b00,3, 0x141c00,20, 0x141c74,1, 0x141c80,20, @@ -5806,82 +7014,150 @@ 0x141d80,20, 0x141df4,1, 0x141e00,16, -0x142000,5, -0x142040,5, -0x142080,2, -0x142200,5, -0x142240,5, -0x142280,2, -0x142404,3, -0x142480,18, -0x142500,18, -0x142800,1, +0x142000,3, +0x142010,35, +0x1420a0,2, +0x1420c0,19, +0x142110,35, +0x1421a0,2, +0x1421c0,16, +0x142204,1, +0x142270,36, +0x142304,1, +0x142340,48, +0x142404,37, +0x1424a0,6, +0x1424c0,3, +0x142500,4, +0x142518,1, +0x142520,9, +0x142800,3, +0x142814,31, +0x1428a0,10, +0x1428d0,1, +0x142900,6, +0x142920,6, +0x142940,6, +0x142960,6, +0x142980,6, +0x1429a0,6, +0x1429c0,3, +0x142a00,7, +0x142a20,3, +0x142a30,1, +0x142c00,12, +0x142c34,22, +0x142d00,6, +0x142d20,6, +0x142d40,6, +0x142d60,6, +0x142d80,6, +0x142da0,3, +0x142e00,7, +0x142e20,3, +0x142e30,1, 0x143000,6, 0x143020,6, -0x143100,1, -0x143200,6, -0x143220,6, -0x143300,1, +0x143040,3, +0x1430f0,3, +0x143100,6, +0x143120,6, +0x143140,3, +0x1431f0,3, +0x143200,5, +0x143218,2, 0x143400,6, 0x143420,6, -0x143500,1, -0x143600,6, -0x143620,6, -0x143700,1, -0x143800,2, -0x143860,9, +0x143440,3, +0x1434f0,3, +0x143500,6, +0x143520,6, +0x143540,3, +0x1435f0,3, +0x143600,5, +0x143618,2, +0x143804,1, +0x143820,11, +0x143880,1, 0x143904,1, 0x14390c,1, +0x143914,1, +0x14391c,1, 0x143924,1, 0x14392c,1, -0x143a00,10, -0x143c00,1, -0x143c10,1, -0x143c20,1, -0x143c30,1, -0x143c40,1, -0x143c50,1, -0x143c60,1, -0x143c70,1, -0x143d00,17, -0x144000,6, -0x14401c,3, -0x14402c,3, -0x14403c,49, -0x144200,13, -0x144240,9, -0x144284,8, -0x144300,16, -0x144470,15, -0x1444b0,3, -0x144800,6, -0x14481c,3, -0x14482c,3, -0x14483c,49, -0x144a00,13, -0x144a40,9, -0x144a84,8, -0x144b00,16, -0x144c70,15, -0x144cb0,3, -0x145004,3, -0x145018,4, -0x145040,31, -0x1450c0,19, +0x143a00,12, +0x143c00,15, +0x143f00,25, +0x143f84,5, +0x143fa0,4, +0x144000,4, +0x144018,3, +0x144028,3, +0x144038,22, +0x144094,40, +0x144140,11, +0x144184,10, +0x1441c0,22, +0x144220,6, +0x144240,5, +0x144260,5, +0x1442f8,46, +0x1443b4,1, +0x1443bc,1, +0x1443c4,1, +0x1443cc,1, +0x1443d4,1, +0x1443dc,1, +0x1443e4,1, +0x1443ec,1, +0x144400,9, +0x144440,9, +0x1447a0,3, +0x1447b0,3, +0x1447c0,12, +0x144800,4, +0x144818,3, +0x144828,3, +0x144838,22, +0x144894,40, +0x144940,11, +0x144984,10, +0x1449c0,22, +0x144a20,6, +0x144a40,5, +0x144a60,5, +0x144af8,46, +0x144bb4,1, +0x144bbc,1, +0x144bc4,1, +0x144bcc,1, +0x144bd4,1, +0x144bdc,1, +0x144be4,1, +0x144bec,1, +0x144c00,9, +0x144c40,9, +0x144fa0,3, +0x144fb0,3, +0x144fc0,12, +0x145000,1, +0x14500c,3, +0x145020,5, +0x145038,46, 0x145118,24, +0x145200,32, 0x1452e0,2, 0x1452f0,4, 0x145304,1, 0x145314,3, 0x145324,1, -0x145334,3, +0x145330,4, 0x145344,1, 0x145354,3, 0x145364,1, 0x145374,3, -0x145384,1, -0x14538c,1, 0x145394,1, +0x1453a0,2, 0x145400,6, 0x145420,6, 0x145440,6, @@ -5893,29 +7169,34 @@ 0x145500,6, 0x145520,6, 0x145540,6, -0x145560,3, -0x145600,2, -0x145640,15, -0x145680,7, -0x1456a0,3, -0x145800,36, -0x145900,36, -0x145a00,43, -0x145b00,35, -0x145c00,19, -0x145c80,19, -0x145d00,12, +0x145560,6, +0x145580,6, +0x1455a0,6, +0x1455c0,6, +0x1455e0,6, +0x145600,3, +0x145800,2, +0x145840,15, +0x145880,7, +0x1458a0,21, +0x145c00,25, +0x145c80,13, +0x145cc0,15, +0x145d00,11, 0x145d40,11, -0x145d80,3, -0x145ee0,5, -0x145f00,19, -0x145f80,15, -0x145fc0,6, +0x145d80,5, +0x145da0,7, +0x145dc0,7, +0x145de0,6, +0x145e00,11, +0x145e40,19, +0x145e90,6, 0x146000,2, 0x146028,2, 0x146050,2, 0x146078,2, -0x1460a0,20, +0x1460a0,7, +0x1460c0,15, 0x1461ac,1, 0x1461d8,4, 0x146200,6, @@ -5923,46 +7204,60 @@ 0x146240,6, 0x146260,6, 0x146280,3, +0x146400,6, +0x146420,3, 0x148000,1, 0x148008,1, -0x148010,8, -0x148034,3, -0x148200,1, -0x148208,1, -0x148210,8, -0x148234,3, -0x148400,1, +0x148010,14, +0x148100,1, +0x148108,1, +0x148110,14, +0x148200,32, +0x1482f8,34, +0x1483f8,3, 0x148408,1, -0x148410,8, -0x148434,3, -0x148600,1, -0x148608,1, -0x148610,8, -0x148634,3, -0x148800,6, -0x14881c,4, +0x148410,14, +0x148500,1, +0x148508,1, +0x148510,14, +0x148600,32, +0x1486f8,34, +0x1487f8,8, +0x14881c,6, 0x148a00,11, 0x148a40,11, 0x148a80,11, 0x148ac0,11, -0x148b00,1, -0x148c04,1, -0x148c0c,1, -0x148c20,2, -0x148c34,3, -0x148c44,3, -0x148c54,8, -0x148e00,29, +0x148b00,2, +0x148c04,3, +0x148c14,12, +0x148c84,1, +0x148c8c,1, +0x148ca0,2, +0x148cb4,3, +0x148e00,30, 0x148e80,1, -0x148e88,2, -0x148f00,29, +0x148e88,3, +0x148f00,30, 0x148f80,1, -0x148f88,2, -0x149000,43, -0x149100,53, -0x149200,5, -0x149220,1, -0x149700,1, +0x148f88,3, +0x149000,22, +0x149100,25, +0x149200,10, +0x149240,2, +0x149600,6, +0x1496fc,55, +0x149800,31, +0x149900,31, +0x149a00,6, +0x149a20,6, +0x149a40,6, +0x149a60,6, +0x149a80,6, +0x149aa0,6, +0x149ac0,6, +0x149ae0,6, +0x149b00,3, 0x149c00,20, 0x149c74,1, 0x149c80,20, @@ -5972,82 +7267,150 @@ 0x149d80,20, 0x149df4,1, 0x149e00,16, -0x14a000,5, -0x14a040,5, -0x14a080,2, -0x14a200,5, -0x14a240,5, -0x14a280,2, -0x14a404,3, -0x14a480,18, -0x14a500,18, -0x14a800,1, +0x14a000,3, +0x14a010,35, +0x14a0a0,2, +0x14a0c0,19, +0x14a110,35, +0x14a1a0,2, +0x14a1c0,16, +0x14a204,1, +0x14a270,36, +0x14a304,1, +0x14a340,48, +0x14a404,37, +0x14a4a0,6, +0x14a4c0,3, +0x14a500,4, +0x14a518,1, +0x14a520,9, +0x14a800,3, +0x14a814,31, +0x14a8a0,10, +0x14a8d0,1, +0x14a900,6, +0x14a920,6, +0x14a940,6, +0x14a960,6, +0x14a980,6, +0x14a9a0,6, +0x14a9c0,3, +0x14aa00,7, +0x14aa20,3, +0x14aa30,1, +0x14ac00,12, +0x14ac34,22, +0x14ad00,6, +0x14ad20,6, +0x14ad40,6, +0x14ad60,6, +0x14ad80,6, +0x14ada0,3, +0x14ae00,7, +0x14ae20,3, +0x14ae30,1, 0x14b000,6, 0x14b020,6, -0x14b100,1, -0x14b200,6, -0x14b220,6, -0x14b300,1, +0x14b040,3, +0x14b0f0,3, +0x14b100,6, +0x14b120,6, +0x14b140,3, +0x14b1f0,3, +0x14b200,5, +0x14b218,2, 0x14b400,6, 0x14b420,6, -0x14b500,1, -0x14b600,6, -0x14b620,6, -0x14b700,1, -0x14b800,2, -0x14b860,9, +0x14b440,3, +0x14b4f0,3, +0x14b500,6, +0x14b520,6, +0x14b540,3, +0x14b5f0,3, +0x14b600,5, +0x14b618,2, +0x14b804,1, +0x14b820,11, +0x14b880,1, 0x14b904,1, 0x14b90c,1, +0x14b914,1, +0x14b91c,1, 0x14b924,1, 0x14b92c,1, -0x14ba00,10, -0x14bc00,1, -0x14bc10,1, -0x14bc20,1, -0x14bc30,1, -0x14bc40,1, -0x14bc50,1, -0x14bc60,1, -0x14bc70,1, -0x14bd00,17, -0x14c000,6, -0x14c01c,3, -0x14c02c,3, -0x14c03c,49, -0x14c200,13, -0x14c240,9, -0x14c284,8, -0x14c300,16, -0x14c470,15, -0x14c4b0,3, -0x14c800,6, -0x14c81c,3, -0x14c82c,3, -0x14c83c,49, -0x14ca00,13, -0x14ca40,9, -0x14ca84,8, -0x14cb00,16, -0x14cc70,15, -0x14ccb0,3, -0x14d004,3, -0x14d018,4, -0x14d040,31, -0x14d0c0,19, +0x14ba00,12, +0x14bc00,15, +0x14bf00,25, +0x14bf84,5, +0x14bfa0,4, +0x14c000,4, +0x14c018,3, +0x14c028,3, +0x14c038,22, +0x14c094,40, +0x14c140,11, +0x14c184,10, +0x14c1c0,22, +0x14c220,6, +0x14c240,5, +0x14c260,5, +0x14c2f8,46, +0x14c3b4,1, +0x14c3bc,1, +0x14c3c4,1, +0x14c3cc,1, +0x14c3d4,1, +0x14c3dc,1, +0x14c3e4,1, +0x14c3ec,1, +0x14c400,9, +0x14c440,9, +0x14c7a0,3, +0x14c7b0,3, +0x14c7c0,12, +0x14c800,4, +0x14c818,3, +0x14c828,3, +0x14c838,22, +0x14c894,40, +0x14c940,11, +0x14c984,10, +0x14c9c0,22, +0x14ca20,6, +0x14ca40,5, +0x14ca60,5, +0x14caf8,46, +0x14cbb4,1, +0x14cbbc,1, +0x14cbc4,1, +0x14cbcc,1, +0x14cbd4,1, +0x14cbdc,1, +0x14cbe4,1, +0x14cbec,1, +0x14cc00,9, +0x14cc40,9, +0x14cfa0,3, +0x14cfb0,3, +0x14cfc0,12, +0x14d000,1, +0x14d00c,3, +0x14d020,5, +0x14d038,46, 0x14d118,24, +0x14d200,32, 0x14d2e0,2, 0x14d2f0,4, 0x14d304,1, 0x14d314,3, 0x14d324,1, -0x14d334,3, +0x14d330,4, 0x14d344,1, 0x14d354,3, 0x14d364,1, 0x14d374,3, -0x14d384,1, -0x14d38c,1, 0x14d394,1, +0x14d3a0,2, 0x14d400,6, 0x14d420,6, 0x14d440,6, @@ -6059,29 +7422,34 @@ 0x14d500,6, 0x14d520,6, 0x14d540,6, -0x14d560,3, -0x14d600,2, -0x14d640,15, -0x14d680,7, -0x14d6a0,3, -0x14d800,36, -0x14d900,36, -0x14da00,43, -0x14db00,35, -0x14dc00,19, -0x14dc80,19, -0x14dd00,12, +0x14d560,6, +0x14d580,6, +0x14d5a0,6, +0x14d5c0,6, +0x14d5e0,6, +0x14d600,3, +0x14d800,2, +0x14d840,15, +0x14d880,7, +0x14d8a0,21, +0x14dc00,25, +0x14dc80,13, +0x14dcc0,15, +0x14dd00,11, 0x14dd40,11, -0x14dd80,3, -0x14dee0,5, -0x14df00,19, -0x14df80,15, -0x14dfc0,6, +0x14dd80,5, +0x14dda0,7, +0x14ddc0,7, +0x14dde0,6, +0x14de00,11, +0x14de40,19, +0x14de90,6, 0x14e000,2, 0x14e028,2, 0x14e050,2, 0x14e078,2, -0x14e0a0,20, +0x14e0a0,7, +0x14e0c0,15, 0x14e1ac,1, 0x14e1d8,4, 0x14e200,6, @@ -6089,46 +7457,60 @@ 0x14e240,6, 0x14e260,6, 0x14e280,3, +0x14e400,6, +0x14e420,3, 0x150000,1, 0x150008,1, -0x150010,8, -0x150034,3, -0x150200,1, -0x150208,1, -0x150210,8, -0x150234,3, -0x150400,1, +0x150010,14, +0x150100,1, +0x150108,1, +0x150110,14, +0x150200,32, +0x1502f8,34, +0x1503f8,3, 0x150408,1, -0x150410,8, -0x150434,3, -0x150600,1, -0x150608,1, -0x150610,8, -0x150634,3, -0x150800,6, -0x15081c,4, +0x150410,14, +0x150500,1, +0x150508,1, +0x150510,14, +0x150600,32, +0x1506f8,34, +0x1507f8,8, +0x15081c,6, 0x150a00,11, 0x150a40,11, 0x150a80,11, 0x150ac0,11, -0x150b00,1, -0x150c04,1, -0x150c0c,1, -0x150c20,2, -0x150c34,3, -0x150c44,3, -0x150c54,8, -0x150e00,29, +0x150b00,2, +0x150c04,3, +0x150c14,12, +0x150c84,1, +0x150c8c,1, +0x150ca0,2, +0x150cb4,3, +0x150e00,30, 0x150e80,1, -0x150e88,2, -0x150f00,29, +0x150e88,3, +0x150f00,30, 0x150f80,1, -0x150f88,2, -0x151000,43, -0x151100,53, -0x151200,5, -0x151220,1, -0x151700,1, +0x150f88,3, +0x151000,22, +0x151100,25, +0x151200,10, +0x151240,2, +0x151600,6, +0x1516fc,55, +0x151800,31, +0x151900,31, +0x151a00,6, +0x151a20,6, +0x151a40,6, +0x151a60,6, +0x151a80,6, +0x151aa0,6, +0x151ac0,6, +0x151ae0,6, +0x151b00,3, 0x151c00,20, 0x151c74,1, 0x151c80,20, @@ -6138,82 +7520,150 @@ 0x151d80,20, 0x151df4,1, 0x151e00,16, -0x152000,5, -0x152040,5, -0x152080,2, -0x152200,5, -0x152240,5, -0x152280,2, -0x152404,3, -0x152480,18, -0x152500,18, -0x152800,1, +0x152000,3, +0x152010,35, +0x1520a0,2, +0x1520c0,19, +0x152110,35, +0x1521a0,2, +0x1521c0,16, +0x152204,1, +0x152270,36, +0x152304,1, +0x152340,48, +0x152404,37, +0x1524a0,6, +0x1524c0,3, +0x152500,4, +0x152518,1, +0x152520,9, +0x152800,3, +0x152814,31, +0x1528a0,10, +0x1528d0,1, +0x152900,6, +0x152920,6, +0x152940,6, +0x152960,6, +0x152980,6, +0x1529a0,6, +0x1529c0,3, +0x152a00,7, +0x152a20,3, +0x152a30,1, +0x152c00,12, +0x152c34,22, +0x152d00,6, +0x152d20,6, +0x152d40,6, +0x152d60,6, +0x152d80,6, +0x152da0,3, +0x152e00,7, +0x152e20,3, +0x152e30,1, 0x153000,6, 0x153020,6, -0x153100,1, -0x153200,6, -0x153220,6, -0x153300,1, +0x153040,3, +0x1530f0,3, +0x153100,6, +0x153120,6, +0x153140,3, +0x1531f0,3, +0x153200,5, +0x153218,2, 0x153400,6, 0x153420,6, -0x153500,1, -0x153600,6, -0x153620,6, -0x153700,1, -0x153800,2, -0x153860,9, +0x153440,3, +0x1534f0,3, +0x153500,6, +0x153520,6, +0x153540,3, +0x1535f0,3, +0x153600,5, +0x153618,2, +0x153804,1, +0x153820,11, +0x153880,1, 0x153904,1, 0x15390c,1, +0x153914,1, +0x15391c,1, 0x153924,1, 0x15392c,1, -0x153a00,10, -0x153c00,1, -0x153c10,1, -0x153c20,1, -0x153c30,1, -0x153c40,1, -0x153c50,1, -0x153c60,1, -0x153c70,1, -0x153d00,17, -0x154000,6, -0x15401c,3, -0x15402c,3, -0x15403c,49, -0x154200,13, -0x154240,9, -0x154284,8, -0x154300,16, -0x154470,15, -0x1544b0,3, -0x154800,6, -0x15481c,3, -0x15482c,3, -0x15483c,49, -0x154a00,13, -0x154a40,9, -0x154a84,8, -0x154b00,16, -0x154c70,15, -0x154cb0,3, -0x155004,3, -0x155018,4, -0x155040,31, -0x1550c0,19, +0x153a00,12, +0x153c00,15, +0x153f00,25, +0x153f84,5, +0x153fa0,4, +0x154000,4, +0x154018,3, +0x154028,3, +0x154038,22, +0x154094,40, +0x154140,11, +0x154184,10, +0x1541c0,22, +0x154220,6, +0x154240,5, +0x154260,5, +0x1542f8,46, +0x1543b4,1, +0x1543bc,1, +0x1543c4,1, +0x1543cc,1, +0x1543d4,1, +0x1543dc,1, +0x1543e4,1, +0x1543ec,1, +0x154400,9, +0x154440,9, +0x1547a0,3, +0x1547b0,3, +0x1547c0,12, +0x154800,4, +0x154818,3, +0x154828,3, +0x154838,22, +0x154894,40, +0x154940,11, +0x154984,10, +0x1549c0,22, +0x154a20,6, +0x154a40,5, +0x154a60,5, +0x154af8,46, +0x154bb4,1, +0x154bbc,1, +0x154bc4,1, +0x154bcc,1, +0x154bd4,1, +0x154bdc,1, +0x154be4,1, +0x154bec,1, +0x154c00,9, +0x154c40,9, +0x154fa0,3, +0x154fb0,3, +0x154fc0,12, +0x155000,1, +0x15500c,3, +0x155020,5, +0x155038,46, 0x155118,24, +0x155200,32, 0x1552e0,2, 0x1552f0,4, 0x155304,1, 0x155314,3, 0x155324,1, -0x155334,3, +0x155330,4, 0x155344,1, 0x155354,3, 0x155364,1, 0x155374,3, -0x155384,1, -0x15538c,1, 0x155394,1, +0x1553a0,2, 0x155400,6, 0x155420,6, 0x155440,6, @@ -6225,29 +7675,34 @@ 0x155500,6, 0x155520,6, 0x155540,6, -0x155560,3, -0x155600,2, -0x155640,15, -0x155680,7, -0x1556a0,3, -0x155800,36, -0x155900,36, -0x155a00,43, -0x155b00,35, -0x155c00,19, -0x155c80,19, -0x155d00,12, +0x155560,6, +0x155580,6, +0x1555a0,6, +0x1555c0,6, +0x1555e0,6, +0x155600,3, +0x155800,2, +0x155840,15, +0x155880,7, +0x1558a0,21, +0x155c00,25, +0x155c80,13, +0x155cc0,15, +0x155d00,11, 0x155d40,11, -0x155d80,3, -0x155ee0,5, -0x155f00,19, -0x155f80,15, -0x155fc0,6, +0x155d80,5, +0x155da0,7, +0x155dc0,7, +0x155de0,6, +0x155e00,11, +0x155e40,19, +0x155e90,6, 0x156000,2, 0x156028,2, 0x156050,2, 0x156078,2, -0x1560a0,20, +0x1560a0,7, +0x1560c0,15, 0x1561ac,1, 0x1561d8,4, 0x156200,6, @@ -6255,46 +7710,60 @@ 0x156240,6, 0x156260,6, 0x156280,3, +0x156400,6, +0x156420,3, 0x158000,1, 0x158008,1, -0x158010,8, -0x158034,3, -0x158200,1, -0x158208,1, -0x158210,8, -0x158234,3, -0x158400,1, +0x158010,14, +0x158100,1, +0x158108,1, +0x158110,14, +0x158200,32, +0x1582f8,34, +0x1583f8,3, 0x158408,1, -0x158410,8, -0x158434,3, -0x158600,1, -0x158608,1, -0x158610,8, -0x158634,3, -0x158800,6, -0x15881c,4, +0x158410,14, +0x158500,1, +0x158508,1, +0x158510,14, +0x158600,32, +0x1586f8,34, +0x1587f8,8, +0x15881c,6, 0x158a00,11, 0x158a40,11, 0x158a80,11, 0x158ac0,11, -0x158b00,1, -0x158c04,1, -0x158c0c,1, -0x158c20,2, -0x158c34,3, -0x158c44,3, -0x158c54,8, -0x158e00,29, +0x158b00,2, +0x158c04,3, +0x158c14,12, +0x158c84,1, +0x158c8c,1, +0x158ca0,2, +0x158cb4,3, +0x158e00,30, 0x158e80,1, -0x158e88,2, -0x158f00,29, +0x158e88,3, +0x158f00,30, 0x158f80,1, -0x158f88,2, -0x159000,43, -0x159100,53, -0x159200,5, -0x159220,1, -0x159700,1, +0x158f88,3, +0x159000,22, +0x159100,25, +0x159200,10, +0x159240,2, +0x159600,6, +0x1596fc,55, +0x159800,31, +0x159900,31, +0x159a00,6, +0x159a20,6, +0x159a40,6, +0x159a60,6, +0x159a80,6, +0x159aa0,6, +0x159ac0,6, +0x159ae0,6, +0x159b00,3, 0x159c00,20, 0x159c74,1, 0x159c80,20, @@ -6304,82 +7773,150 @@ 0x159d80,20, 0x159df4,1, 0x159e00,16, -0x15a000,5, -0x15a040,5, -0x15a080,2, -0x15a200,5, -0x15a240,5, -0x15a280,2, -0x15a404,3, -0x15a480,18, -0x15a500,18, -0x15a800,1, +0x15a000,3, +0x15a010,35, +0x15a0a0,2, +0x15a0c0,19, +0x15a110,35, +0x15a1a0,2, +0x15a1c0,16, +0x15a204,1, +0x15a270,36, +0x15a304,1, +0x15a340,48, +0x15a404,37, +0x15a4a0,6, +0x15a4c0,3, +0x15a500,4, +0x15a518,1, +0x15a520,9, +0x15a800,3, +0x15a814,31, +0x15a8a0,10, +0x15a8d0,1, +0x15a900,6, +0x15a920,6, +0x15a940,6, +0x15a960,6, +0x15a980,6, +0x15a9a0,6, +0x15a9c0,3, +0x15aa00,7, +0x15aa20,3, +0x15aa30,1, +0x15ac00,12, +0x15ac34,22, +0x15ad00,6, +0x15ad20,6, +0x15ad40,6, +0x15ad60,6, +0x15ad80,6, +0x15ada0,3, +0x15ae00,7, +0x15ae20,3, +0x15ae30,1, 0x15b000,6, 0x15b020,6, -0x15b100,1, -0x15b200,6, -0x15b220,6, -0x15b300,1, +0x15b040,3, +0x15b0f0,3, +0x15b100,6, +0x15b120,6, +0x15b140,3, +0x15b1f0,3, +0x15b200,5, +0x15b218,2, 0x15b400,6, 0x15b420,6, -0x15b500,1, -0x15b600,6, -0x15b620,6, -0x15b700,1, -0x15b800,2, -0x15b860,9, +0x15b440,3, +0x15b4f0,3, +0x15b500,6, +0x15b520,6, +0x15b540,3, +0x15b5f0,3, +0x15b600,5, +0x15b618,2, +0x15b804,1, +0x15b820,11, +0x15b880,1, 0x15b904,1, 0x15b90c,1, +0x15b914,1, +0x15b91c,1, 0x15b924,1, 0x15b92c,1, -0x15ba00,10, -0x15bc00,1, -0x15bc10,1, -0x15bc20,1, -0x15bc30,1, -0x15bc40,1, -0x15bc50,1, -0x15bc60,1, -0x15bc70,1, -0x15bd00,17, -0x15c000,6, -0x15c01c,3, -0x15c02c,3, -0x15c03c,49, -0x15c200,13, -0x15c240,9, -0x15c284,8, -0x15c300,16, -0x15c470,15, -0x15c4b0,3, -0x15c800,6, -0x15c81c,3, -0x15c82c,3, -0x15c83c,49, -0x15ca00,13, -0x15ca40,9, -0x15ca84,8, -0x15cb00,16, -0x15cc70,15, -0x15ccb0,3, -0x15d004,3, -0x15d018,4, -0x15d040,31, -0x15d0c0,19, +0x15ba00,12, +0x15bc00,15, +0x15bf00,25, +0x15bf84,5, +0x15bfa0,4, +0x15c000,4, +0x15c018,3, +0x15c028,3, +0x15c038,22, +0x15c094,40, +0x15c140,11, +0x15c184,10, +0x15c1c0,22, +0x15c220,6, +0x15c240,5, +0x15c260,5, +0x15c2f8,46, +0x15c3b4,1, +0x15c3bc,1, +0x15c3c4,1, +0x15c3cc,1, +0x15c3d4,1, +0x15c3dc,1, +0x15c3e4,1, +0x15c3ec,1, +0x15c400,9, +0x15c440,9, +0x15c7a0,3, +0x15c7b0,3, +0x15c7c0,12, +0x15c800,4, +0x15c818,3, +0x15c828,3, +0x15c838,22, +0x15c894,40, +0x15c940,11, +0x15c984,10, +0x15c9c0,22, +0x15ca20,6, +0x15ca40,5, +0x15ca60,5, +0x15caf8,46, +0x15cbb4,1, +0x15cbbc,1, +0x15cbc4,1, +0x15cbcc,1, +0x15cbd4,1, +0x15cbdc,1, +0x15cbe4,1, +0x15cbec,1, +0x15cc00,9, +0x15cc40,9, +0x15cfa0,3, +0x15cfb0,3, +0x15cfc0,12, +0x15d000,1, +0x15d00c,3, +0x15d020,5, +0x15d038,46, 0x15d118,24, +0x15d200,32, 0x15d2e0,2, 0x15d2f0,4, 0x15d304,1, 0x15d314,3, 0x15d324,1, -0x15d334,3, +0x15d330,4, 0x15d344,1, 0x15d354,3, 0x15d364,1, 0x15d374,3, -0x15d384,1, -0x15d38c,1, 0x15d394,1, +0x15d3a0,2, 0x15d400,6, 0x15d420,6, 0x15d440,6, @@ -6391,29 +7928,34 @@ 0x15d500,6, 0x15d520,6, 0x15d540,6, -0x15d560,3, -0x15d600,2, -0x15d640,15, -0x15d680,7, -0x15d6a0,3, -0x15d800,36, -0x15d900,36, -0x15da00,43, -0x15db00,35, -0x15dc00,19, -0x15dc80,19, -0x15dd00,12, +0x15d560,6, +0x15d580,6, +0x15d5a0,6, +0x15d5c0,6, +0x15d5e0,6, +0x15d600,3, +0x15d800,2, +0x15d840,15, +0x15d880,7, +0x15d8a0,21, +0x15dc00,25, +0x15dc80,13, +0x15dcc0,15, +0x15dd00,11, 0x15dd40,11, -0x15dd80,3, -0x15dee0,5, -0x15df00,19, -0x15df80,15, -0x15dfc0,6, +0x15dd80,5, +0x15dda0,7, +0x15ddc0,7, +0x15dde0,6, +0x15de00,11, +0x15de40,19, +0x15de90,6, 0x15e000,2, 0x15e028,2, 0x15e050,2, 0x15e078,2, -0x15e0a0,20, +0x15e0a0,7, +0x15e0c0,15, 0x15e1ac,1, 0x15e1d8,4, 0x15e200,6, @@ -6421,46 +7963,60 @@ 0x15e240,6, 0x15e260,6, 0x15e280,3, +0x15e400,6, +0x15e420,3, 0x160000,1, 0x160008,1, -0x160010,8, -0x160034,3, -0x160200,1, -0x160208,1, -0x160210,8, -0x160234,3, -0x160400,1, +0x160010,14, +0x160100,1, +0x160108,1, +0x160110,14, +0x160200,32, +0x1602f8,34, +0x1603f8,3, 0x160408,1, -0x160410,8, -0x160434,3, -0x160600,1, -0x160608,1, -0x160610,8, -0x160634,3, -0x160800,6, -0x16081c,4, +0x160410,14, +0x160500,1, +0x160508,1, +0x160510,14, +0x160600,32, +0x1606f8,34, +0x1607f8,8, +0x16081c,6, 0x160a00,11, 0x160a40,11, 0x160a80,11, 0x160ac0,11, -0x160b00,1, -0x160c04,1, -0x160c0c,1, -0x160c20,2, -0x160c34,3, -0x160c44,3, -0x160c54,8, -0x160e00,29, +0x160b00,2, +0x160c04,3, +0x160c14,12, +0x160c84,1, +0x160c8c,1, +0x160ca0,2, +0x160cb4,3, +0x160e00,30, 0x160e80,1, -0x160e88,2, -0x160f00,29, +0x160e88,3, +0x160f00,30, 0x160f80,1, -0x160f88,2, -0x161000,43, -0x161100,53, -0x161200,5, -0x161220,1, -0x161700,1, +0x160f88,3, +0x161000,22, +0x161100,25, +0x161200,10, +0x161240,2, +0x161600,6, +0x1616fc,55, +0x161800,31, +0x161900,31, +0x161a00,6, +0x161a20,6, +0x161a40,6, +0x161a60,6, +0x161a80,6, +0x161aa0,6, +0x161ac0,6, +0x161ae0,6, +0x161b00,3, 0x161c00,20, 0x161c74,1, 0x161c80,20, @@ -6470,82 +8026,150 @@ 0x161d80,20, 0x161df4,1, 0x161e00,16, -0x162000,5, -0x162040,5, -0x162080,2, -0x162200,5, -0x162240,5, -0x162280,2, -0x162404,3, -0x162480,18, -0x162500,18, -0x162800,1, +0x162000,3, +0x162010,35, +0x1620a0,2, +0x1620c0,19, +0x162110,35, +0x1621a0,2, +0x1621c0,16, +0x162204,1, +0x162270,36, +0x162304,1, +0x162340,48, +0x162404,37, +0x1624a0,6, +0x1624c0,3, +0x162500,4, +0x162518,1, +0x162520,9, +0x162800,3, +0x162814,31, +0x1628a0,10, +0x1628d0,1, +0x162900,6, +0x162920,6, +0x162940,6, +0x162960,6, +0x162980,6, +0x1629a0,6, +0x1629c0,3, +0x162a00,7, +0x162a20,3, +0x162a30,1, +0x162c00,12, +0x162c34,22, +0x162d00,6, +0x162d20,6, +0x162d40,6, +0x162d60,6, +0x162d80,6, +0x162da0,3, +0x162e00,7, +0x162e20,3, +0x162e30,1, 0x163000,6, 0x163020,6, -0x163100,1, -0x163200,6, -0x163220,6, -0x163300,1, +0x163040,3, +0x1630f0,3, +0x163100,6, +0x163120,6, +0x163140,3, +0x1631f0,3, +0x163200,5, +0x163218,2, 0x163400,6, 0x163420,6, -0x163500,1, -0x163600,6, -0x163620,6, -0x163700,1, -0x163800,2, -0x163860,9, +0x163440,3, +0x1634f0,3, +0x163500,6, +0x163520,6, +0x163540,3, +0x1635f0,3, +0x163600,5, +0x163618,2, +0x163804,1, +0x163820,11, +0x163880,1, 0x163904,1, 0x16390c,1, +0x163914,1, +0x16391c,1, 0x163924,1, 0x16392c,1, -0x163a00,10, -0x163c00,1, -0x163c10,1, -0x163c20,1, -0x163c30,1, -0x163c40,1, -0x163c50,1, -0x163c60,1, -0x163c70,1, -0x163d00,17, -0x164000,6, -0x16401c,3, -0x16402c,3, -0x16403c,49, -0x164200,13, -0x164240,9, -0x164284,8, -0x164300,16, -0x164470,15, -0x1644b0,3, -0x164800,6, -0x16481c,3, -0x16482c,3, -0x16483c,49, -0x164a00,13, -0x164a40,9, -0x164a84,8, -0x164b00,16, -0x164c70,15, -0x164cb0,3, -0x165004,3, -0x165018,4, -0x165040,31, -0x1650c0,19, +0x163a00,12, +0x163c00,15, +0x163f00,25, +0x163f84,5, +0x163fa0,4, +0x164000,4, +0x164018,3, +0x164028,3, +0x164038,22, +0x164094,40, +0x164140,11, +0x164184,10, +0x1641c0,22, +0x164220,6, +0x164240,5, +0x164260,5, +0x1642f8,46, +0x1643b4,1, +0x1643bc,1, +0x1643c4,1, +0x1643cc,1, +0x1643d4,1, +0x1643dc,1, +0x1643e4,1, +0x1643ec,1, +0x164400,9, +0x164440,9, +0x1647a0,3, +0x1647b0,3, +0x1647c0,12, +0x164800,4, +0x164818,3, +0x164828,3, +0x164838,22, +0x164894,40, +0x164940,11, +0x164984,10, +0x1649c0,22, +0x164a20,6, +0x164a40,5, +0x164a60,5, +0x164af8,46, +0x164bb4,1, +0x164bbc,1, +0x164bc4,1, +0x164bcc,1, +0x164bd4,1, +0x164bdc,1, +0x164be4,1, +0x164bec,1, +0x164c00,9, +0x164c40,9, +0x164fa0,3, +0x164fb0,3, +0x164fc0,12, +0x165000,1, +0x16500c,3, +0x165020,5, +0x165038,46, 0x165118,24, +0x165200,32, 0x1652e0,2, 0x1652f0,4, 0x165304,1, 0x165314,3, 0x165324,1, -0x165334,3, +0x165330,4, 0x165344,1, 0x165354,3, 0x165364,1, 0x165374,3, -0x165384,1, -0x16538c,1, 0x165394,1, +0x1653a0,2, 0x165400,6, 0x165420,6, 0x165440,6, @@ -6557,29 +8181,34 @@ 0x165500,6, 0x165520,6, 0x165540,6, -0x165560,3, -0x165600,2, -0x165640,15, -0x165680,7, -0x1656a0,3, -0x165800,36, -0x165900,36, -0x165a00,43, -0x165b00,35, -0x165c00,19, -0x165c80,19, -0x165d00,12, +0x165560,6, +0x165580,6, +0x1655a0,6, +0x1655c0,6, +0x1655e0,6, +0x165600,3, +0x165800,2, +0x165840,15, +0x165880,7, +0x1658a0,21, +0x165c00,25, +0x165c80,13, +0x165cc0,15, +0x165d00,11, 0x165d40,11, -0x165d80,3, -0x165ee0,5, -0x165f00,19, -0x165f80,15, -0x165fc0,6, +0x165d80,5, +0x165da0,7, +0x165dc0,7, +0x165de0,6, +0x165e00,11, +0x165e40,19, +0x165e90,6, 0x166000,2, 0x166028,2, 0x166050,2, 0x166078,2, -0x1660a0,20, +0x1660a0,7, +0x1660c0,15, 0x1661ac,1, 0x1661d8,4, 0x166200,6, @@ -6587,46 +8216,60 @@ 0x166240,6, 0x166260,6, 0x166280,3, +0x166400,6, +0x166420,3, 0x168000,1, 0x168008,1, -0x168010,8, -0x168034,3, -0x168200,1, -0x168208,1, -0x168210,8, -0x168234,3, -0x168400,1, +0x168010,14, +0x168100,1, +0x168108,1, +0x168110,14, +0x168200,32, +0x1682f8,34, +0x1683f8,3, 0x168408,1, -0x168410,8, -0x168434,3, -0x168600,1, -0x168608,1, -0x168610,8, -0x168634,3, -0x168800,6, -0x16881c,4, +0x168410,14, +0x168500,1, +0x168508,1, +0x168510,14, +0x168600,32, +0x1686f8,34, +0x1687f8,8, +0x16881c,6, 0x168a00,11, 0x168a40,11, 0x168a80,11, 0x168ac0,11, -0x168b00,1, -0x168c04,1, -0x168c0c,1, -0x168c20,2, -0x168c34,3, -0x168c44,3, -0x168c54,8, -0x168e00,29, +0x168b00,2, +0x168c04,3, +0x168c14,12, +0x168c84,1, +0x168c8c,1, +0x168ca0,2, +0x168cb4,3, +0x168e00,30, 0x168e80,1, -0x168e88,2, -0x168f00,29, +0x168e88,3, +0x168f00,30, 0x168f80,1, -0x168f88,2, -0x169000,43, -0x169100,53, -0x169200,5, -0x169220,1, -0x169700,1, +0x168f88,3, +0x169000,22, +0x169100,25, +0x169200,10, +0x169240,2, +0x169600,6, +0x1696fc,55, +0x169800,31, +0x169900,31, +0x169a00,6, +0x169a20,6, +0x169a40,6, +0x169a60,6, +0x169a80,6, +0x169aa0,6, +0x169ac0,6, +0x169ae0,6, +0x169b00,3, 0x169c00,20, 0x169c74,1, 0x169c80,20, @@ -6636,82 +8279,150 @@ 0x169d80,20, 0x169df4,1, 0x169e00,16, -0x16a000,5, -0x16a040,5, -0x16a080,2, -0x16a200,5, -0x16a240,5, -0x16a280,2, -0x16a404,3, -0x16a480,18, -0x16a500,18, -0x16a800,1, +0x16a000,3, +0x16a010,35, +0x16a0a0,2, +0x16a0c0,19, +0x16a110,35, +0x16a1a0,2, +0x16a1c0,16, +0x16a204,1, +0x16a270,36, +0x16a304,1, +0x16a340,48, +0x16a404,37, +0x16a4a0,6, +0x16a4c0,3, +0x16a500,4, +0x16a518,1, +0x16a520,9, +0x16a800,3, +0x16a814,31, +0x16a8a0,10, +0x16a8d0,1, +0x16a900,6, +0x16a920,6, +0x16a940,6, +0x16a960,6, +0x16a980,6, +0x16a9a0,6, +0x16a9c0,3, +0x16aa00,7, +0x16aa20,3, +0x16aa30,1, +0x16ac00,12, +0x16ac34,22, +0x16ad00,6, +0x16ad20,6, +0x16ad40,6, +0x16ad60,6, +0x16ad80,6, +0x16ada0,3, +0x16ae00,7, +0x16ae20,3, +0x16ae30,1, 0x16b000,6, 0x16b020,6, -0x16b100,1, -0x16b200,6, -0x16b220,6, -0x16b300,1, +0x16b040,3, +0x16b0f0,3, +0x16b100,6, +0x16b120,6, +0x16b140,3, +0x16b1f0,3, +0x16b200,5, +0x16b218,2, 0x16b400,6, 0x16b420,6, -0x16b500,1, -0x16b600,6, -0x16b620,6, -0x16b700,1, -0x16b800,2, -0x16b860,9, +0x16b440,3, +0x16b4f0,3, +0x16b500,6, +0x16b520,6, +0x16b540,3, +0x16b5f0,3, +0x16b600,5, +0x16b618,2, +0x16b804,1, +0x16b820,11, +0x16b880,1, 0x16b904,1, 0x16b90c,1, +0x16b914,1, +0x16b91c,1, 0x16b924,1, 0x16b92c,1, -0x16ba00,10, -0x16bc00,1, -0x16bc10,1, -0x16bc20,1, -0x16bc30,1, -0x16bc40,1, -0x16bc50,1, -0x16bc60,1, -0x16bc70,1, -0x16bd00,17, -0x16c000,6, -0x16c01c,3, -0x16c02c,3, -0x16c03c,49, -0x16c200,13, -0x16c240,9, -0x16c284,8, -0x16c300,16, -0x16c470,15, -0x16c4b0,3, -0x16c800,6, -0x16c81c,3, -0x16c82c,3, -0x16c83c,49, -0x16ca00,13, -0x16ca40,9, -0x16ca84,8, -0x16cb00,16, -0x16cc70,15, -0x16ccb0,3, -0x16d004,3, -0x16d018,4, -0x16d040,31, -0x16d0c0,19, +0x16ba00,12, +0x16bc00,15, +0x16bf00,25, +0x16bf84,5, +0x16bfa0,4, +0x16c000,4, +0x16c018,3, +0x16c028,3, +0x16c038,22, +0x16c094,40, +0x16c140,11, +0x16c184,10, +0x16c1c0,22, +0x16c220,6, +0x16c240,5, +0x16c260,5, +0x16c2f8,46, +0x16c3b4,1, +0x16c3bc,1, +0x16c3c4,1, +0x16c3cc,1, +0x16c3d4,1, +0x16c3dc,1, +0x16c3e4,1, +0x16c3ec,1, +0x16c400,9, +0x16c440,9, +0x16c7a0,3, +0x16c7b0,3, +0x16c7c0,12, +0x16c800,4, +0x16c818,3, +0x16c828,3, +0x16c838,22, +0x16c894,40, +0x16c940,11, +0x16c984,10, +0x16c9c0,22, +0x16ca20,6, +0x16ca40,5, +0x16ca60,5, +0x16caf8,46, +0x16cbb4,1, +0x16cbbc,1, +0x16cbc4,1, +0x16cbcc,1, +0x16cbd4,1, +0x16cbdc,1, +0x16cbe4,1, +0x16cbec,1, +0x16cc00,9, +0x16cc40,9, +0x16cfa0,3, +0x16cfb0,3, +0x16cfc0,12, +0x16d000,1, +0x16d00c,3, +0x16d020,5, +0x16d038,46, 0x16d118,24, +0x16d200,32, 0x16d2e0,2, 0x16d2f0,4, 0x16d304,1, 0x16d314,3, 0x16d324,1, -0x16d334,3, +0x16d330,4, 0x16d344,1, 0x16d354,3, 0x16d364,1, 0x16d374,3, -0x16d384,1, -0x16d38c,1, 0x16d394,1, +0x16d3a0,2, 0x16d400,6, 0x16d420,6, 0x16d440,6, @@ -6723,29 +8434,34 @@ 0x16d500,6, 0x16d520,6, 0x16d540,6, -0x16d560,3, -0x16d600,2, -0x16d640,15, -0x16d680,7, -0x16d6a0,3, -0x16d800,36, -0x16d900,36, -0x16da00,43, -0x16db00,35, -0x16dc00,19, -0x16dc80,19, -0x16dd00,12, +0x16d560,6, +0x16d580,6, +0x16d5a0,6, +0x16d5c0,6, +0x16d5e0,6, +0x16d600,3, +0x16d800,2, +0x16d840,15, +0x16d880,7, +0x16d8a0,21, +0x16dc00,25, +0x16dc80,13, +0x16dcc0,15, +0x16dd00,11, 0x16dd40,11, -0x16dd80,3, -0x16dee0,5, -0x16df00,19, -0x16df80,15, -0x16dfc0,6, +0x16dd80,5, +0x16dda0,7, +0x16ddc0,7, +0x16dde0,6, +0x16de00,11, +0x16de40,19, +0x16de90,6, 0x16e000,2, 0x16e028,2, 0x16e050,2, 0x16e078,2, -0x16e0a0,20, +0x16e0a0,7, +0x16e0c0,15, 0x16e1ac,1, 0x16e1d8,4, 0x16e200,6, @@ -6753,46 +8469,60 @@ 0x16e240,6, 0x16e260,6, 0x16e280,3, +0x16e400,6, +0x16e420,3, 0x170000,1, 0x170008,1, -0x170010,8, -0x170034,3, -0x170200,1, -0x170208,1, -0x170210,8, -0x170234,3, -0x170400,1, +0x170010,14, +0x170100,1, +0x170108,1, +0x170110,14, +0x170200,32, +0x1702f8,34, +0x1703f8,3, 0x170408,1, -0x170410,8, -0x170434,3, -0x170600,1, -0x170608,1, -0x170610,8, -0x170634,3, -0x170800,6, -0x17081c,4, +0x170410,14, +0x170500,1, +0x170508,1, +0x170510,14, +0x170600,32, +0x1706f8,34, +0x1707f8,8, +0x17081c,6, 0x170a00,11, 0x170a40,11, 0x170a80,11, 0x170ac0,11, -0x170b00,1, -0x170c04,1, -0x170c0c,1, -0x170c20,2, -0x170c34,3, -0x170c44,3, -0x170c54,8, -0x170e00,29, +0x170b00,2, +0x170c04,3, +0x170c14,12, +0x170c84,1, +0x170c8c,1, +0x170ca0,2, +0x170cb4,3, +0x170e00,30, 0x170e80,1, -0x170e88,2, -0x170f00,29, +0x170e88,3, +0x170f00,30, 0x170f80,1, -0x170f88,2, -0x171000,43, -0x171100,53, -0x171200,5, -0x171220,1, -0x171700,1, +0x170f88,3, +0x171000,22, +0x171100,25, +0x171200,10, +0x171240,2, +0x171600,6, +0x1716fc,55, +0x171800,31, +0x171900,31, +0x171a00,6, +0x171a20,6, +0x171a40,6, +0x171a60,6, +0x171a80,6, +0x171aa0,6, +0x171ac0,6, +0x171ae0,6, +0x171b00,3, 0x171c00,20, 0x171c74,1, 0x171c80,20, @@ -6802,82 +8532,150 @@ 0x171d80,20, 0x171df4,1, 0x171e00,16, -0x172000,5, -0x172040,5, -0x172080,2, -0x172200,5, -0x172240,5, -0x172280,2, -0x172404,3, -0x172480,18, -0x172500,18, -0x172800,1, +0x172000,3, +0x172010,35, +0x1720a0,2, +0x1720c0,19, +0x172110,35, +0x1721a0,2, +0x1721c0,16, +0x172204,1, +0x172270,36, +0x172304,1, +0x172340,48, +0x172404,37, +0x1724a0,6, +0x1724c0,3, +0x172500,4, +0x172518,1, +0x172520,9, +0x172800,3, +0x172814,31, +0x1728a0,10, +0x1728d0,1, +0x172900,6, +0x172920,6, +0x172940,6, +0x172960,6, +0x172980,6, +0x1729a0,6, +0x1729c0,3, +0x172a00,7, +0x172a20,3, +0x172a30,1, +0x172c00,12, +0x172c34,22, +0x172d00,6, +0x172d20,6, +0x172d40,6, +0x172d60,6, +0x172d80,6, +0x172da0,3, +0x172e00,7, +0x172e20,3, +0x172e30,1, 0x173000,6, 0x173020,6, -0x173100,1, -0x173200,6, -0x173220,6, -0x173300,1, +0x173040,3, +0x1730f0,3, +0x173100,6, +0x173120,6, +0x173140,3, +0x1731f0,3, +0x173200,5, +0x173218,2, 0x173400,6, 0x173420,6, -0x173500,1, -0x173600,6, -0x173620,6, -0x173700,1, -0x173800,2, -0x173860,9, +0x173440,3, +0x1734f0,3, +0x173500,6, +0x173520,6, +0x173540,3, +0x1735f0,3, +0x173600,5, +0x173618,2, +0x173804,1, +0x173820,11, +0x173880,1, 0x173904,1, 0x17390c,1, +0x173914,1, +0x17391c,1, 0x173924,1, 0x17392c,1, -0x173a00,10, -0x173c00,1, -0x173c10,1, -0x173c20,1, -0x173c30,1, -0x173c40,1, -0x173c50,1, -0x173c60,1, -0x173c70,1, -0x173d00,17, -0x174000,6, -0x17401c,3, -0x17402c,3, -0x17403c,49, -0x174200,13, -0x174240,9, -0x174284,8, -0x174300,16, -0x174470,15, -0x1744b0,3, -0x174800,6, -0x17481c,3, -0x17482c,3, -0x17483c,49, -0x174a00,13, -0x174a40,9, -0x174a84,8, -0x174b00,16, -0x174c70,15, -0x174cb0,3, -0x175004,3, -0x175018,4, -0x175040,31, -0x1750c0,19, +0x173a00,12, +0x173c00,15, +0x173f00,25, +0x173f84,5, +0x173fa0,4, +0x174000,4, +0x174018,3, +0x174028,3, +0x174038,22, +0x174094,40, +0x174140,11, +0x174184,10, +0x1741c0,22, +0x174220,6, +0x174240,5, +0x174260,5, +0x1742f8,46, +0x1743b4,1, +0x1743bc,1, +0x1743c4,1, +0x1743cc,1, +0x1743d4,1, +0x1743dc,1, +0x1743e4,1, +0x1743ec,1, +0x174400,9, +0x174440,9, +0x1747a0,3, +0x1747b0,3, +0x1747c0,12, +0x174800,4, +0x174818,3, +0x174828,3, +0x174838,22, +0x174894,40, +0x174940,11, +0x174984,10, +0x1749c0,22, +0x174a20,6, +0x174a40,5, +0x174a60,5, +0x174af8,46, +0x174bb4,1, +0x174bbc,1, +0x174bc4,1, +0x174bcc,1, +0x174bd4,1, +0x174bdc,1, +0x174be4,1, +0x174bec,1, +0x174c00,9, +0x174c40,9, +0x174fa0,3, +0x174fb0,3, +0x174fc0,12, +0x175000,1, +0x17500c,3, +0x175020,5, +0x175038,46, 0x175118,24, +0x175200,32, 0x1752e0,2, 0x1752f0,4, 0x175304,1, 0x175314,3, 0x175324,1, -0x175334,3, +0x175330,4, 0x175344,1, 0x175354,3, 0x175364,1, 0x175374,3, -0x175384,1, -0x17538c,1, 0x175394,1, +0x1753a0,2, 0x175400,6, 0x175420,6, 0x175440,6, @@ -6889,29 +8687,34 @@ 0x175500,6, 0x175520,6, 0x175540,6, -0x175560,3, -0x175600,2, -0x175640,15, -0x175680,7, -0x1756a0,3, -0x175800,36, -0x175900,36, -0x175a00,43, -0x175b00,35, -0x175c00,19, -0x175c80,19, -0x175d00,12, +0x175560,6, +0x175580,6, +0x1755a0,6, +0x1755c0,6, +0x1755e0,6, +0x175600,3, +0x175800,2, +0x175840,15, +0x175880,7, +0x1758a0,21, +0x175c00,25, +0x175c80,13, +0x175cc0,15, +0x175d00,11, 0x175d40,11, -0x175d80,3, -0x175ee0,5, -0x175f00,19, -0x175f80,15, -0x175fc0,6, +0x175d80,5, +0x175da0,7, +0x175dc0,7, +0x175de0,6, +0x175e00,11, +0x175e40,19, +0x175e90,6, 0x176000,2, 0x176028,2, 0x176050,2, 0x176078,2, -0x1760a0,20, +0x1760a0,7, +0x1760c0,15, 0x1761ac,1, 0x1761d8,4, 0x176200,6, @@ -6919,46 +8722,60 @@ 0x176240,6, 0x176260,6, 0x176280,3, +0x176400,6, +0x176420,3, 0x178000,1, 0x178008,1, -0x178010,8, -0x178034,3, -0x178200,1, -0x178208,1, -0x178210,8, -0x178234,3, -0x178400,1, +0x178010,14, +0x178100,1, +0x178108,1, +0x178110,14, +0x178200,32, +0x1782f8,34, +0x1783f8,3, 0x178408,1, -0x178410,8, -0x178434,3, -0x178600,1, -0x178608,1, -0x178610,8, -0x178634,3, -0x178800,6, -0x17881c,4, +0x178410,14, +0x178500,1, +0x178508,1, +0x178510,14, +0x178600,32, +0x1786f8,34, +0x1787f8,8, +0x17881c,6, 0x178a00,11, 0x178a40,11, 0x178a80,11, 0x178ac0,11, -0x178b00,1, -0x178c04,1, -0x178c0c,1, -0x178c20,2, -0x178c34,3, -0x178c44,3, -0x178c54,8, -0x178e00,29, +0x178b00,2, +0x178c04,3, +0x178c14,12, +0x178c84,1, +0x178c8c,1, +0x178ca0,2, +0x178cb4,3, +0x178e00,30, 0x178e80,1, -0x178e88,2, -0x178f00,29, +0x178e88,3, +0x178f00,30, 0x178f80,1, -0x178f88,2, -0x179000,43, -0x179100,53, -0x179200,5, -0x179220,1, -0x179700,1, +0x178f88,3, +0x179000,22, +0x179100,25, +0x179200,10, +0x179240,2, +0x179600,6, +0x1796fc,55, +0x179800,31, +0x179900,31, +0x179a00,6, +0x179a20,6, +0x179a40,6, +0x179a60,6, +0x179a80,6, +0x179aa0,6, +0x179ac0,6, +0x179ae0,6, +0x179b00,3, 0x179c00,20, 0x179c74,1, 0x179c80,20, @@ -6968,82 +8785,150 @@ 0x179d80,20, 0x179df4,1, 0x179e00,16, -0x17a000,5, -0x17a040,5, -0x17a080,2, -0x17a200,5, -0x17a240,5, -0x17a280,2, -0x17a404,3, -0x17a480,18, -0x17a500,18, -0x17a800,1, +0x17a000,3, +0x17a010,35, +0x17a0a0,2, +0x17a0c0,19, +0x17a110,35, +0x17a1a0,2, +0x17a1c0,16, +0x17a204,1, +0x17a270,36, +0x17a304,1, +0x17a340,48, +0x17a404,37, +0x17a4a0,6, +0x17a4c0,3, +0x17a500,4, +0x17a518,1, +0x17a520,9, +0x17a800,3, +0x17a814,31, +0x17a8a0,10, +0x17a8d0,1, +0x17a900,6, +0x17a920,6, +0x17a940,6, +0x17a960,6, +0x17a980,6, +0x17a9a0,6, +0x17a9c0,3, +0x17aa00,7, +0x17aa20,3, +0x17aa30,1, +0x17ac00,12, +0x17ac34,22, +0x17ad00,6, +0x17ad20,6, +0x17ad40,6, +0x17ad60,6, +0x17ad80,6, +0x17ada0,3, +0x17ae00,7, +0x17ae20,3, +0x17ae30,1, 0x17b000,6, 0x17b020,6, -0x17b100,1, -0x17b200,6, -0x17b220,6, -0x17b300,1, +0x17b040,3, +0x17b0f0,3, +0x17b100,6, +0x17b120,6, +0x17b140,3, +0x17b1f0,3, +0x17b200,5, +0x17b218,2, 0x17b400,6, 0x17b420,6, -0x17b500,1, -0x17b600,6, -0x17b620,6, -0x17b700,1, -0x17b800,2, -0x17b860,9, +0x17b440,3, +0x17b4f0,3, +0x17b500,6, +0x17b520,6, +0x17b540,3, +0x17b5f0,3, +0x17b600,5, +0x17b618,2, +0x17b804,1, +0x17b820,11, +0x17b880,1, 0x17b904,1, 0x17b90c,1, +0x17b914,1, +0x17b91c,1, 0x17b924,1, 0x17b92c,1, -0x17ba00,10, -0x17bc00,1, -0x17bc10,1, -0x17bc20,1, -0x17bc30,1, -0x17bc40,1, -0x17bc50,1, -0x17bc60,1, -0x17bc70,1, -0x17bd00,17, -0x17c000,6, -0x17c01c,3, -0x17c02c,3, -0x17c03c,49, -0x17c200,13, -0x17c240,9, -0x17c284,8, -0x17c300,16, -0x17c470,15, -0x17c4b0,3, -0x17c800,6, -0x17c81c,3, -0x17c82c,3, -0x17c83c,49, -0x17ca00,13, -0x17ca40,9, -0x17ca84,8, -0x17cb00,16, -0x17cc70,15, -0x17ccb0,3, -0x17d004,3, -0x17d018,4, -0x17d040,31, -0x17d0c0,19, +0x17ba00,12, +0x17bc00,15, +0x17bf00,25, +0x17bf84,5, +0x17bfa0,4, +0x17c000,4, +0x17c018,3, +0x17c028,3, +0x17c038,22, +0x17c094,40, +0x17c140,11, +0x17c184,10, +0x17c1c0,22, +0x17c220,6, +0x17c240,5, +0x17c260,5, +0x17c2f8,46, +0x17c3b4,1, +0x17c3bc,1, +0x17c3c4,1, +0x17c3cc,1, +0x17c3d4,1, +0x17c3dc,1, +0x17c3e4,1, +0x17c3ec,1, +0x17c400,9, +0x17c440,9, +0x17c7a0,3, +0x17c7b0,3, +0x17c7c0,12, +0x17c800,4, +0x17c818,3, +0x17c828,3, +0x17c838,22, +0x17c894,40, +0x17c940,11, +0x17c984,10, +0x17c9c0,22, +0x17ca20,6, +0x17ca40,5, +0x17ca60,5, +0x17caf8,46, +0x17cbb4,1, +0x17cbbc,1, +0x17cbc4,1, +0x17cbcc,1, +0x17cbd4,1, +0x17cbdc,1, +0x17cbe4,1, +0x17cbec,1, +0x17cc00,9, +0x17cc40,9, +0x17cfa0,3, +0x17cfb0,3, +0x17cfc0,12, +0x17d000,1, +0x17d00c,3, +0x17d020,5, +0x17d038,46, 0x17d118,24, +0x17d200,32, 0x17d2e0,2, 0x17d2f0,4, 0x17d304,1, 0x17d314,3, 0x17d324,1, -0x17d334,3, +0x17d330,4, 0x17d344,1, 0x17d354,3, 0x17d364,1, 0x17d374,3, -0x17d384,1, -0x17d38c,1, 0x17d394,1, +0x17d3a0,2, 0x17d400,6, 0x17d420,6, 0x17d440,6, @@ -7055,29 +8940,34 @@ 0x17d500,6, 0x17d520,6, 0x17d540,6, -0x17d560,3, -0x17d600,2, -0x17d640,15, -0x17d680,7, -0x17d6a0,3, -0x17d800,36, -0x17d900,36, -0x17da00,43, -0x17db00,35, -0x17dc00,19, -0x17dc80,19, -0x17dd00,12, +0x17d560,6, +0x17d580,6, +0x17d5a0,6, +0x17d5c0,6, +0x17d5e0,6, +0x17d600,3, +0x17d800,2, +0x17d840,15, +0x17d880,7, +0x17d8a0,21, +0x17dc00,25, +0x17dc80,13, +0x17dcc0,15, +0x17dd00,11, 0x17dd40,11, -0x17dd80,3, -0x17dee0,5, -0x17df00,19, -0x17df80,15, -0x17dfc0,6, +0x17dd80,5, +0x17dda0,7, +0x17ddc0,7, +0x17dde0,6, +0x17de00,11, +0x17de40,19, +0x17de90,6, 0x17e000,2, 0x17e028,2, 0x17e050,2, 0x17e078,2, -0x17e0a0,20, +0x17e0a0,7, +0x17e0c0,15, 0x17e1ac,1, 0x17e1d8,4, 0x17e200,6, @@ -7085,6 +8975,8 @@ 0x17e240,6, 0x17e260,6, 0x17e280,3, +0x17e400,6, +0x17e420,3, 0x1c0000,4, 0x1c0028,4, 0x1c0050,4, @@ -7108,147 +9000,246 @@ 0x1c0480,6, 0x1c04a0,6, 0x1c04c0,6, -0x1c04e0,6, -0x1c0500,6, -0x1c0520,3, -0x1c0600,6, -0x1c0620,2, -0x1c0630,1, -0x1c0a00,64, -0x1c0d00,66, -0x1c0e10,4, -0x1c0e28,3, -0x1c0e38,1, -0x1c0e40,1, -0x1c0e50,1, -0x1c0f00,14, -0x1c0f80,19, -0x1c0fd0,4, -0x1c1000,37, -0x1c1240,2, -0x1c1280,5, -0x1c129c,2, -0x1c1614,2, -0x1c1620,2, -0x1c2080,11, -0x1c20b0,2, -0x1c20c0,3, -0x1c20d0,4, -0x1c2180,1, -0x1c21a0,1, -0x1c2200,3, -0x1c2210,3, -0x1c2220,3, -0x1c2230,3, -0x1c2240,3, -0x1c2250,3, -0x1c2260,3, -0x1c2270,3, -0x1c2280,68, -0x1c2584,3, -0x1c2594,3, -0x1c25a4,3, -0x1c25b4,3, -0x1c25c4,3, -0x1c25d4,3, -0x1c25e4,3, -0x1c25f4,9, -0x1c261c,15, -0x1c265c,15, -0x1c269c,15, -0x1c26dc,15, -0x1c271c,15, -0x1c275c,15, -0x1c279c,15, -0x1c27dc,9, -0x1c2e00,11, -0x1c2e30,1, -0x1c2e40,5, -0x1c2e60,5, +0x1c04e0,3, +0x1c0500,10, +0x1c0540,10, +0x1c0580,10, +0x1c05c0,10, +0x1c0600,10, +0x1c0640,10, +0x1c0680,10, +0x1c06c0,10, +0x1c0700,66, +0x1c080c,4, +0x1c0820,3, +0x1c0830,1, +0x1c0838,3, +0x1c0860,2, +0x1c0870,1, +0x1c0880,11, +0x1c08b0,3, +0x1c08c0,3, +0x1c08d0,5, +0x1c08f0,1, +0x1c0900,3, +0x1c0910,3, +0x1c0920,3, +0x1c0930,3, +0x1c0940,3, +0x1c0950,3, +0x1c0960,3, +0x1c0970,3, +0x1c0980,60, +0x1c0ab8,13, +0x1c0b00,9, +0x1c0b40,11, +0x1c0b80,11, +0x1c0bc0,11, +0x1c0c00,6, +0x1c0c1c,15, +0x1c0c5c,15, +0x1c0c9c,15, +0x1c0cdc,15, +0x1c0d1c,15, +0x1c0d5c,15, +0x1c0d9c,15, +0x1c0ddc,30, +0x1c0e60,5, +0x1c0e80,1, +0x1c0e90,15, +0x1c0ed4,3, +0x1c0f04,3, +0x1c0f14,3, +0x1c0f24,3, +0x1c0f34,3, +0x1c0f44,3, +0x1c0f54,3, +0x1c0f64,3, +0x1c0f74,3, +0x1c1004,4, +0x1c1018,2, +0x1c1028,3, +0x1c1040,10, +0x1c1080,10, +0x1c10c0,10, +0x1c1100,10, +0x1c1140,10, +0x1c1184,5, +0x1c119c,2, +0x1c1204,4, +0x1c1218,2, +0x1c1228,3, +0x1c1240,10, +0x1c1280,10, +0x1c12c0,10, +0x1c1300,10, +0x1c1340,10, +0x1c1384,5, +0x1c139c,2, +0x1c1404,4, +0x1c1418,2, +0x1c1428,3, +0x1c1440,10, +0x1c1480,10, +0x1c14c0,10, +0x1c1500,10, +0x1c1540,10, +0x1c1584,5, +0x1c159c,2, +0x1c1604,4, +0x1c1618,2, +0x1c1628,3, +0x1c1640,10, +0x1c1680,10, +0x1c16c0,10, +0x1c1700,10, +0x1c1740,10, +0x1c1784,5, +0x1c179c,2, +0x1c1804,4, +0x1c1818,2, +0x1c1828,3, +0x1c1840,10, +0x1c1880,10, +0x1c18c0,10, +0x1c1900,10, +0x1c1940,10, +0x1c1984,5, +0x1c199c,2, +0x1c1a04,4, +0x1c1a18,2, +0x1c1a28,3, +0x1c1a40,10, +0x1c1a80,10, +0x1c1ac0,10, +0x1c1b00,10, +0x1c1b40,10, +0x1c1b84,5, +0x1c1b9c,2, +0x1c1c04,4, +0x1c1c18,2, +0x1c1c28,3, +0x1c1c40,10, +0x1c1c80,10, +0x1c1cc0,10, +0x1c1d00,10, +0x1c1d40,10, +0x1c1d84,5, +0x1c1d9c,2, +0x1c1e04,4, +0x1c1e18,2, +0x1c1e28,3, +0x1c1e40,10, +0x1c1e80,10, +0x1c1ec0,10, +0x1c1f00,10, +0x1c1f40,10, +0x1c1f84,5, +0x1c1f9c,2, +0x1c2000,75, +0x1c2130,3, +0x1c2140,3, +0x1c2150,5, +0x1c2170,1, +0x1c2180,14, +0x1c21c0,12, +0x1c2200,37, +0x1c22a0,5, +0x1c22bc,3, +0x1c22cc,6, +0x1c22e8,5, +0x1c2300,5, +0x1c2400,75, +0x1c2530,3, +0x1c2540,3, +0x1c2550,5, +0x1c2570,1, +0x1c2580,14, +0x1c25c0,12, +0x1c2600,37, +0x1c26a0,5, +0x1c26bc,3, +0x1c26cc,6, +0x1c26e8,5, +0x1c2700,5, +0x1c2800,75, +0x1c2930,3, +0x1c2940,3, +0x1c2950,5, +0x1c2970,1, +0x1c2980,14, +0x1c29c0,12, +0x1c2a00,37, +0x1c2aa0,5, +0x1c2abc,3, +0x1c2acc,6, +0x1c2ae8,5, +0x1c2b00,5, +0x1c2c00,75, +0x1c2d30,3, +0x1c2d40,3, +0x1c2d50,5, +0x1c2d70,1, +0x1c2d80,14, +0x1c2dc0,12, +0x1c2e00,37, +0x1c2ea0,5, +0x1c2ebc,3, +0x1c2ecc,6, +0x1c2ee8,5, 0x1c2f00,5, -0x1c2f20,1, -0x1c2f30,15, -0x1c2f90,2, -0x1c3004,4, -0x1c3018,2, -0x1c3028,3, -0x1c3040,10, -0x1c3080,10, -0x1c30c0,10, -0x1c3100,10, -0x1c3140,10, -0x1c3184,5, -0x1c319c,2, -0x1c3204,4, -0x1c3218,2, -0x1c3228,3, -0x1c3240,10, -0x1c3280,10, -0x1c32c0,10, -0x1c3300,10, -0x1c3340,10, -0x1c3384,5, -0x1c339c,2, -0x1c3404,4, -0x1c3418,2, -0x1c3428,3, -0x1c3440,10, -0x1c3480,10, -0x1c34c0,10, -0x1c3500,10, -0x1c3540,10, -0x1c3584,5, -0x1c359c,2, -0x1c3604,4, -0x1c3618,2, -0x1c3628,3, -0x1c3640,10, -0x1c3680,10, -0x1c36c0,10, -0x1c3700,10, -0x1c3740,10, -0x1c3784,5, -0x1c379c,2, -0x1c3804,4, -0x1c3818,2, -0x1c3828,3, -0x1c3840,10, -0x1c3880,10, -0x1c38c0,10, -0x1c3900,10, -0x1c3940,10, -0x1c3984,5, -0x1c399c,2, -0x1c3a04,4, -0x1c3a18,2, -0x1c3a28,3, -0x1c3a40,10, -0x1c3a80,10, -0x1c3ac0,10, -0x1c3b00,10, -0x1c3b40,10, -0x1c3b84,5, -0x1c3b9c,2, -0x1c3c04,4, -0x1c3c18,2, -0x1c3c28,3, -0x1c3c40,10, -0x1c3c80,10, -0x1c3cc0,10, -0x1c3d00,10, -0x1c3d40,10, -0x1c3d84,5, -0x1c3d9c,2, -0x1c3e04,4, -0x1c3e18,2, -0x1c3e28,3, -0x1c3e40,10, -0x1c3e80,10, -0x1c3ec0,10, -0x1c3f00,10, -0x1c3f40,10, -0x1c3f84,5, -0x1c3f9c,2, +0x1c3000,75, +0x1c3130,3, +0x1c3140,3, +0x1c3150,5, +0x1c3170,1, +0x1c3180,14, +0x1c31c0,12, +0x1c3200,37, +0x1c32a0,5, +0x1c32bc,3, +0x1c32cc,6, +0x1c32e8,5, +0x1c3300,5, +0x1c3400,75, +0x1c3530,3, +0x1c3540,3, +0x1c3550,5, +0x1c3570,1, +0x1c3580,14, +0x1c35c0,12, +0x1c3600,37, +0x1c36a0,5, +0x1c36bc,3, +0x1c36cc,6, +0x1c36e8,5, +0x1c3700,5, +0x1c3800,75, +0x1c3930,3, +0x1c3940,3, +0x1c3950,5, +0x1c3970,1, +0x1c3980,14, +0x1c39c0,12, +0x1c3a00,37, +0x1c3aa0,5, +0x1c3abc,3, +0x1c3acc,6, +0x1c3ae8,5, +0x1c3b00,5, +0x1c3c00,75, +0x1c3d30,3, +0x1c3d40,3, +0x1c3d50,5, +0x1c3d70,1, +0x1c3d80,14, +0x1c3dc0,12, +0x1c3e00,37, +0x1c3ea0,5, +0x1c3ebc,3, +0x1c3ecc,6, +0x1c3ee8,5, +0x1c3f00,5, 0x1c4000,4, 0x1c4028,4, 0x1c4050,4, @@ -7272,355 +9263,710 @@ 0x1c4480,6, 0x1c44a0,6, 0x1c44c0,6, -0x1c44e0,6, -0x1c4500,6, -0x1c4520,3, -0x1c4600,6, -0x1c4620,2, -0x1c4630,1, -0x1c4a00,64, -0x1c4d00,66, -0x1c4e10,4, -0x1c4e28,3, -0x1c4e38,1, -0x1c4e40,1, -0x1c4e50,1, -0x1c4f00,14, -0x1c4f80,19, -0x1c4fd0,4, -0x1c5000,37, -0x1c5240,2, -0x1c5280,5, -0x1c529c,2, -0x1c5614,2, -0x1c5620,2, -0x1c6080,11, -0x1c60b0,2, -0x1c60c0,3, -0x1c60d0,4, -0x1c6180,1, -0x1c61a0,1, -0x1c6200,3, -0x1c6210,3, -0x1c6220,3, -0x1c6230,3, -0x1c6240,3, -0x1c6250,3, -0x1c6260,3, -0x1c6270,3, -0x1c6280,68, -0x1c6584,3, -0x1c6594,3, -0x1c65a4,3, -0x1c65b4,3, -0x1c65c4,3, -0x1c65d4,3, -0x1c65e4,3, -0x1c65f4,9, -0x1c661c,15, -0x1c665c,15, -0x1c669c,15, -0x1c66dc,15, -0x1c671c,15, -0x1c675c,15, -0x1c679c,15, -0x1c67dc,9, -0x1c6e00,11, -0x1c6e30,1, -0x1c6e40,5, -0x1c6e60,5, +0x1c44e0,3, +0x1c4500,10, +0x1c4540,10, +0x1c4580,10, +0x1c45c0,10, +0x1c4600,10, +0x1c4640,10, +0x1c4680,10, +0x1c46c0,10, +0x1c4700,66, +0x1c480c,4, +0x1c4820,3, +0x1c4830,1, +0x1c4838,3, +0x1c4860,2, +0x1c4870,1, +0x1c4880,11, +0x1c48b0,3, +0x1c48c0,3, +0x1c48d0,5, +0x1c48f0,1, +0x1c4900,3, +0x1c4910,3, +0x1c4920,3, +0x1c4930,3, +0x1c4940,3, +0x1c4950,3, +0x1c4960,3, +0x1c4970,3, +0x1c4980,60, +0x1c4ab8,13, +0x1c4b00,9, +0x1c4b40,11, +0x1c4b80,11, +0x1c4bc0,11, +0x1c4c00,6, +0x1c4c1c,15, +0x1c4c5c,15, +0x1c4c9c,15, +0x1c4cdc,15, +0x1c4d1c,15, +0x1c4d5c,15, +0x1c4d9c,15, +0x1c4ddc,30, +0x1c4e60,5, +0x1c4e80,1, +0x1c4e90,15, +0x1c4ed4,3, +0x1c4f04,3, +0x1c4f14,3, +0x1c4f24,3, +0x1c4f34,3, +0x1c4f44,3, +0x1c4f54,3, +0x1c4f64,3, +0x1c4f74,3, +0x1c5004,4, +0x1c5018,2, +0x1c5028,3, +0x1c5040,10, +0x1c5080,10, +0x1c50c0,10, +0x1c5100,10, +0x1c5140,10, +0x1c5184,5, +0x1c519c,2, +0x1c5204,4, +0x1c5218,2, +0x1c5228,3, +0x1c5240,10, +0x1c5280,10, +0x1c52c0,10, +0x1c5300,10, +0x1c5340,10, +0x1c5384,5, +0x1c539c,2, +0x1c5404,4, +0x1c5418,2, +0x1c5428,3, +0x1c5440,10, +0x1c5480,10, +0x1c54c0,10, +0x1c5500,10, +0x1c5540,10, +0x1c5584,5, +0x1c559c,2, +0x1c5604,4, +0x1c5618,2, +0x1c5628,3, +0x1c5640,10, +0x1c5680,10, +0x1c56c0,10, +0x1c5700,10, +0x1c5740,10, +0x1c5784,5, +0x1c579c,2, +0x1c5804,4, +0x1c5818,2, +0x1c5828,3, +0x1c5840,10, +0x1c5880,10, +0x1c58c0,10, +0x1c5900,10, +0x1c5940,10, +0x1c5984,5, +0x1c599c,2, +0x1c5a04,4, +0x1c5a18,2, +0x1c5a28,3, +0x1c5a40,10, +0x1c5a80,10, +0x1c5ac0,10, +0x1c5b00,10, +0x1c5b40,10, +0x1c5b84,5, +0x1c5b9c,2, +0x1c5c04,4, +0x1c5c18,2, +0x1c5c28,3, +0x1c5c40,10, +0x1c5c80,10, +0x1c5cc0,10, +0x1c5d00,10, +0x1c5d40,10, +0x1c5d84,5, +0x1c5d9c,2, +0x1c5e04,4, +0x1c5e18,2, +0x1c5e28,3, +0x1c5e40,10, +0x1c5e80,10, +0x1c5ec0,10, +0x1c5f00,10, +0x1c5f40,10, +0x1c5f84,5, +0x1c5f9c,2, +0x1c6000,75, +0x1c6130,3, +0x1c6140,3, +0x1c6150,5, +0x1c6170,1, +0x1c6180,14, +0x1c61c0,12, +0x1c6200,37, +0x1c62a0,5, +0x1c62bc,3, +0x1c62cc,6, +0x1c62e8,5, +0x1c6300,5, +0x1c6400,75, +0x1c6530,3, +0x1c6540,3, +0x1c6550,5, +0x1c6570,1, +0x1c6580,14, +0x1c65c0,12, +0x1c6600,37, +0x1c66a0,5, +0x1c66bc,3, +0x1c66cc,6, +0x1c66e8,5, +0x1c6700,5, +0x1c6800,75, +0x1c6930,3, +0x1c6940,3, +0x1c6950,5, +0x1c6970,1, +0x1c6980,14, +0x1c69c0,12, +0x1c6a00,37, +0x1c6aa0,5, +0x1c6abc,3, +0x1c6acc,6, +0x1c6ae8,5, +0x1c6b00,5, +0x1c6c00,75, +0x1c6d30,3, +0x1c6d40,3, +0x1c6d50,5, +0x1c6d70,1, +0x1c6d80,14, +0x1c6dc0,12, +0x1c6e00,37, +0x1c6ea0,5, +0x1c6ebc,3, +0x1c6ecc,6, +0x1c6ee8,5, 0x1c6f00,5, -0x1c6f20,1, -0x1c6f30,15, -0x1c6f90,2, -0x1c7004,4, -0x1c7018,2, -0x1c7028,3, -0x1c7040,10, -0x1c7080,10, -0x1c70c0,10, -0x1c7100,10, -0x1c7140,10, -0x1c7184,5, -0x1c719c,2, -0x1c7204,4, -0x1c7218,2, -0x1c7228,3, -0x1c7240,10, -0x1c7280,10, -0x1c72c0,10, -0x1c7300,10, -0x1c7340,10, -0x1c7384,5, -0x1c739c,2, -0x1c7404,4, -0x1c7418,2, -0x1c7428,3, -0x1c7440,10, -0x1c7480,10, -0x1c74c0,10, -0x1c7500,10, -0x1c7540,10, -0x1c7584,5, -0x1c759c,2, -0x1c7604,4, -0x1c7618,2, -0x1c7628,3, -0x1c7640,10, -0x1c7680,10, -0x1c76c0,10, -0x1c7700,10, -0x1c7740,10, -0x1c7784,5, -0x1c779c,2, -0x1c7804,4, -0x1c7818,2, -0x1c7828,3, -0x1c7840,10, -0x1c7880,10, -0x1c78c0,10, -0x1c7900,10, -0x1c7940,10, -0x1c7984,5, -0x1c799c,2, -0x1c7a04,4, -0x1c7a18,2, -0x1c7a28,3, -0x1c7a40,10, -0x1c7a80,10, -0x1c7ac0,10, -0x1c7b00,10, -0x1c7b40,10, -0x1c7b84,5, -0x1c7b9c,2, -0x1c7c04,4, -0x1c7c18,2, -0x1c7c28,3, -0x1c7c40,10, -0x1c7c80,10, -0x1c7cc0,10, -0x1c7d00,10, -0x1c7d40,10, -0x1c7d84,5, -0x1c7d9c,2, -0x1c7e04,4, -0x1c7e18,2, -0x1c7e28,3, -0x1c7e40,10, -0x1c7e80,10, -0x1c7ec0,10, -0x1c7f00,10, -0x1c7f40,10, -0x1c7f84,5, -0x1c7f9c,2, -0x1c8000,34, -0x1c8100,184, -0x1c8460,14, -0x1c85c0,1, -0x1c85e0,1, -0x1c86c0,11, -0x1c86f0,2, -0x1c8700,3, -0x1c8710,4, -0x1c8740,9, -0x1c8768,5, -0x1c8810,36, -0x1c88a4,2, -0x1c8920,5, -0x1c9100,7, -0x1c9120,7, -0x1c9140,7, -0x1c9160,7, -0x1c9180,7, -0x1c9304,1, -0x1c9324,10, -0x1c9384,1, -0x1c93a4,10, -0x1c9404,1, -0x1c9424,10, -0x1c9484,1, -0x1c94a4,10, -0x1c9504,1, -0x1c9524,10, -0x1c9800,2, -0x1c9828,2, -0x1c9850,2, -0x1c9878,2, -0x1c98a0,5, -0x1c99ac,1, -0x1c99d8,4, -0x1c9a00,6, -0x1c9a20,6, -0x1c9a40,6, -0x1c9a60,6, -0x1c9a80,3, -0x1c9c04,1, -0x1c9c0c,4, -0x1c9c20,10, -0x1c9c60,10, -0x1c9ca0,10, -0x1c9ce0,10, -0x1c9d40,10, -0x1c9d80,8, -0x1c9dc0,10, -0x1c9e00,5, -0x1c9e20,10, -0x1ca000,34, -0x1ca100,184, -0x1ca460,14, -0x1ca5c0,1, -0x1ca5e0,1, -0x1ca6c0,11, -0x1ca6f0,2, -0x1ca700,3, -0x1ca710,4, -0x1ca740,9, -0x1ca768,5, -0x1ca810,36, -0x1ca8a4,2, -0x1ca920,5, -0x1cb100,7, -0x1cb120,7, -0x1cb140,7, -0x1cb160,7, -0x1cb180,7, -0x1cb304,1, -0x1cb324,10, -0x1cb384,1, -0x1cb3a4,10, -0x1cb404,1, -0x1cb424,10, -0x1cb484,1, -0x1cb4a4,10, -0x1cb504,1, -0x1cb524,10, -0x1cb800,2, -0x1cb828,2, -0x1cb850,2, -0x1cb878,2, -0x1cb8a0,5, -0x1cb9ac,1, -0x1cb9d8,4, -0x1cba00,6, -0x1cba20,6, -0x1cba40,6, -0x1cba60,6, -0x1cba80,3, -0x1cbc04,1, -0x1cbc0c,4, -0x1cbc20,10, -0x1cbc60,10, -0x1cbca0,10, -0x1cbce0,10, -0x1cbd40,10, -0x1cbd80,8, -0x1cbdc0,10, -0x1cbe00,5, -0x1cbe20,10, -0x1cc000,34, -0x1cc100,184, -0x1cc460,14, -0x1cc5c0,1, -0x1cc5e0,1, -0x1cc6c0,11, -0x1cc6f0,2, -0x1cc700,3, -0x1cc710,4, -0x1cc740,9, -0x1cc768,5, -0x1cc810,36, -0x1cc8a4,2, -0x1cc920,5, -0x1cd100,7, -0x1cd120,7, -0x1cd140,7, -0x1cd160,7, -0x1cd180,7, -0x1cd304,1, -0x1cd324,10, -0x1cd384,1, -0x1cd3a4,10, -0x1cd404,1, -0x1cd424,10, -0x1cd484,1, -0x1cd4a4,10, -0x1cd504,1, -0x1cd524,10, -0x1cd800,2, -0x1cd828,2, -0x1cd850,2, -0x1cd878,2, -0x1cd8a0,5, -0x1cd9ac,1, -0x1cd9d8,4, -0x1cda00,6, -0x1cda20,6, -0x1cda40,6, -0x1cda60,6, -0x1cda80,3, -0x1cdc04,1, -0x1cdc0c,4, -0x1cdc20,10, -0x1cdc60,10, -0x1cdca0,10, -0x1cdce0,10, -0x1cdd40,10, -0x1cdd80,8, -0x1cddc0,10, -0x1cde00,5, -0x1cde20,10, -0x1ce000,34, -0x1ce100,184, -0x1ce460,14, -0x1ce5c0,1, -0x1ce5e0,1, -0x1ce6c0,11, -0x1ce6f0,2, -0x1ce700,3, -0x1ce710,4, -0x1ce740,9, -0x1ce768,5, -0x1ce810,36, -0x1ce8a4,2, -0x1ce920,5, -0x1cf100,7, -0x1cf120,7, -0x1cf140,7, -0x1cf160,7, -0x1cf180,7, -0x1cf304,1, -0x1cf324,10, -0x1cf384,1, -0x1cf3a4,10, -0x1cf404,1, -0x1cf424,10, -0x1cf484,1, -0x1cf4a4,10, -0x1cf504,1, -0x1cf524,10, -0x1cf800,2, -0x1cf828,2, -0x1cf850,2, -0x1cf878,2, -0x1cf8a0,5, -0x1cf9ac,1, -0x1cf9d8,4, -0x1cfa00,6, -0x1cfa20,6, -0x1cfa40,6, -0x1cfa60,6, -0x1cfa80,3, -0x1cfc04,1, -0x1cfc0c,4, -0x1cfc20,10, -0x1cfc60,10, -0x1cfca0,10, -0x1cfce0,10, -0x1cfd40,10, -0x1cfd80,8, -0x1cfdc0,10, -0x1cfe00,5, -0x1cfe20,10, +0x1c7000,75, +0x1c7130,3, +0x1c7140,3, +0x1c7150,5, +0x1c7170,1, +0x1c7180,14, +0x1c71c0,12, +0x1c7200,37, +0x1c72a0,5, +0x1c72bc,3, +0x1c72cc,6, +0x1c72e8,5, +0x1c7300,5, +0x1c7400,75, +0x1c7530,3, +0x1c7540,3, +0x1c7550,5, +0x1c7570,1, +0x1c7580,14, +0x1c75c0,12, +0x1c7600,37, +0x1c76a0,5, +0x1c76bc,3, +0x1c76cc,6, +0x1c76e8,5, +0x1c7700,5, +0x1c7800,75, +0x1c7930,3, +0x1c7940,3, +0x1c7950,5, +0x1c7970,1, +0x1c7980,14, +0x1c79c0,12, +0x1c7a00,37, +0x1c7aa0,5, +0x1c7abc,3, +0x1c7acc,6, +0x1c7ae8,5, +0x1c7b00,5, +0x1c7c00,75, +0x1c7d30,3, +0x1c7d40,3, +0x1c7d50,5, +0x1c7d70,1, +0x1c7d80,14, +0x1c7dc0,12, +0x1c7e00,37, +0x1c7ea0,5, +0x1c7ebc,3, +0x1c7ecc,6, +0x1c7ee8,5, +0x1c7f00,5, +0x1c8000,17, +0x1c8054,73, +0x1c81c0,1, +0x1c81d0,1, +0x1c81e0,11, +0x1c8210,3, +0x1c8220,3, +0x1c8230,4, +0x1c83c0,9, +0x1c83e8,5, +0x1c8400,36, +0x1c8494,2, +0x1c8510,13, +0x1c8548,3, +0x1c8558,1, +0x1c8600,40, +0x1c8804,1, +0x1c8820,11, +0x1c8884,1, +0x1c88a0,11, +0x1c8904,1, +0x1c8920,11, +0x1c8984,1, +0x1c89a0,11, +0x1c8a04,1, +0x1c8a20,11, +0x1c8c00,1, +0x1c8c28,1, +0x1c8c50,1, +0x1c8c78,1, +0x1c8ca0,4, +0x1c8dac,1, +0x1c8dd8,4, +0x1c8e00,6, +0x1c8e20,6, +0x1c8e40,3, +0x1c9120,10, +0x1c9160,10, +0x1c91a0,10, +0x1c91e0,40, +0x1c92e0,10, +0x1c9320,10, +0x1c9560,10, +0x1c95a0,10, +0x1c95e0,5, +0x1c9600,10, +0x1c9660,21, +0x1c9800,18, +0x1c9880,18, +0x1c9a00,15, +0x1c9a40,15, +0x1c9a80,10, +0x1c9ac0,10, +0x1c9b00,3, +0x1c9b80,18, +0x1c9c00,13, +0x1c9c40,10, +0x1c9c80,15, +0x1c9d00,10, +0x1c9e04,1, +0x1c9e18,10, +0x1c9e44,1, +0x1c9e58,10, +0x1c9e84,1, +0x1c9e98,10, +0x1c9ec4,1, +0x1c9ed8,13, +0x1ca004,1, +0x1ca014,14, +0x1ca184,1, +0x1ca18c,1, +0x1ca1a4,1, +0x1ca1ac,1, +0x1ca1c0,1, +0x1ca804,1, +0x1ca80c,4, +0x1ca824,1, +0x1ca82c,4, +0x1ca844,1, +0x1ca84c,4, +0x1ca864,1, +0x1ca86c,4, +0x1ca884,1, +0x1ca88c,4, +0x1ca900,13, +0x1ca940,13, +0x1ca980,13, +0x1ca9c0,13, +0x1caa00,13, +0x1caa40,13, +0x1cab00,6, +0x1cab20,6, +0x1cab40,3, +0x1cab80,3, +0x1cac00,6, +0x1cac20,6, +0x1cac40,6, +0x1cac60,3, +0x1cac80,6, +0x1caca0,6, +0x1cacc0,6, +0x1cace0,3, +0x1cad00,6, +0x1cad20,6, +0x1cad40,6, +0x1cad60,3, +0x1cad80,6, +0x1cada0,6, +0x1cadc0,6, +0x1cade0,3, +0x1cae00,6, +0x1cae20,6, +0x1cae40,6, +0x1cae60,3, +0x1caf00,6, +0x1caf20,5, +0x1cc000,17, +0x1cc054,73, +0x1cc1c0,1, +0x1cc1d0,1, +0x1cc1e0,11, +0x1cc210,3, +0x1cc220,3, +0x1cc230,4, +0x1cc3c0,9, +0x1cc3e8,5, +0x1cc400,36, +0x1cc494,2, +0x1cc510,13, +0x1cc548,3, +0x1cc558,1, +0x1cc600,40, +0x1cc804,1, +0x1cc820,11, +0x1cc884,1, +0x1cc8a0,11, +0x1cc904,1, +0x1cc920,11, +0x1cc984,1, +0x1cc9a0,11, +0x1cca04,1, +0x1cca20,11, +0x1ccc00,1, +0x1ccc28,1, +0x1ccc50,1, +0x1ccc78,1, +0x1ccca0,4, +0x1ccdac,1, +0x1ccdd8,4, +0x1cce00,6, +0x1cce20,6, +0x1cce40,3, +0x1cd120,10, +0x1cd160,10, +0x1cd1a0,10, +0x1cd1e0,40, +0x1cd2e0,10, +0x1cd320,10, +0x1cd560,10, +0x1cd5a0,10, +0x1cd5e0,5, +0x1cd600,10, +0x1cd660,21, +0x1cd800,18, +0x1cd880,18, +0x1cda00,15, +0x1cda40,15, +0x1cda80,10, +0x1cdac0,10, +0x1cdb00,3, +0x1cdb80,18, +0x1cdc00,13, +0x1cdc40,10, +0x1cdc80,15, +0x1cdd00,10, +0x1cde04,1, +0x1cde18,10, +0x1cde44,1, +0x1cde58,10, +0x1cde84,1, +0x1cde98,10, +0x1cdec4,1, +0x1cded8,13, +0x1ce004,1, +0x1ce014,14, +0x1ce184,1, +0x1ce18c,1, +0x1ce1a4,1, +0x1ce1ac,1, +0x1ce1c0,1, +0x1ce804,1, +0x1ce80c,4, +0x1ce824,1, +0x1ce82c,4, +0x1ce844,1, +0x1ce84c,4, +0x1ce864,1, +0x1ce86c,4, +0x1ce884,1, +0x1ce88c,4, +0x1ce900,13, +0x1ce940,13, +0x1ce980,13, +0x1ce9c0,13, +0x1cea00,13, +0x1cea40,13, +0x1ceb00,6, +0x1ceb20,6, +0x1ceb40,3, +0x1ceb80,3, +0x1cec00,6, +0x1cec20,6, +0x1cec40,6, +0x1cec60,3, +0x1cec80,6, +0x1ceca0,6, +0x1cecc0,6, +0x1cece0,3, +0x1ced00,6, +0x1ced20,6, +0x1ced40,6, +0x1ced60,3, +0x1ced80,6, +0x1ceda0,6, +0x1cedc0,6, +0x1cede0,3, +0x1cee00,6, +0x1cee20,6, +0x1cee40,6, +0x1cee60,3, +0x1cef00,6, +0x1cef20,5, +0x1d0000,17, +0x1d0054,73, +0x1d01c0,1, +0x1d01d0,1, +0x1d01e0,11, +0x1d0210,3, +0x1d0220,3, +0x1d0230,4, +0x1d03c0,9, +0x1d03e8,5, +0x1d0400,36, +0x1d0494,2, +0x1d0510,13, +0x1d0548,3, +0x1d0558,1, +0x1d0600,40, +0x1d0804,1, +0x1d0820,11, +0x1d0884,1, +0x1d08a0,11, +0x1d0904,1, +0x1d0920,11, +0x1d0984,1, +0x1d09a0,11, +0x1d0a04,1, +0x1d0a20,11, +0x1d0c00,1, +0x1d0c28,1, +0x1d0c50,1, +0x1d0c78,1, +0x1d0ca0,4, +0x1d0dac,1, +0x1d0dd8,4, +0x1d0e00,6, +0x1d0e20,6, +0x1d0e40,3, +0x1d1120,10, +0x1d1160,10, +0x1d11a0,10, +0x1d11e0,40, +0x1d12e0,10, +0x1d1320,10, +0x1d1560,10, +0x1d15a0,10, +0x1d15e0,5, +0x1d1600,10, +0x1d1660,21, +0x1d1800,18, +0x1d1880,18, +0x1d1a00,15, +0x1d1a40,15, +0x1d1a80,10, +0x1d1ac0,10, +0x1d1b00,3, +0x1d1b80,18, +0x1d1c00,13, +0x1d1c40,10, +0x1d1c80,15, +0x1d1d00,10, +0x1d1e04,1, +0x1d1e18,10, +0x1d1e44,1, +0x1d1e58,10, +0x1d1e84,1, +0x1d1e98,10, +0x1d1ec4,1, +0x1d1ed8,13, +0x1d2004,1, +0x1d2014,14, +0x1d2184,1, +0x1d218c,1, +0x1d21a4,1, +0x1d21ac,1, +0x1d21c0,1, +0x1d2804,1, +0x1d280c,4, +0x1d2824,1, +0x1d282c,4, +0x1d2844,1, +0x1d284c,4, +0x1d2864,1, +0x1d286c,4, +0x1d2884,1, +0x1d288c,4, +0x1d2900,13, +0x1d2940,13, +0x1d2980,13, +0x1d29c0,13, +0x1d2a00,13, +0x1d2a40,13, +0x1d2b00,6, +0x1d2b20,6, +0x1d2b40,3, +0x1d2b80,3, +0x1d2c00,6, +0x1d2c20,6, +0x1d2c40,6, +0x1d2c60,3, +0x1d2c80,6, +0x1d2ca0,6, +0x1d2cc0,6, +0x1d2ce0,3, +0x1d2d00,6, +0x1d2d20,6, +0x1d2d40,6, +0x1d2d60,3, +0x1d2d80,6, +0x1d2da0,6, +0x1d2dc0,6, +0x1d2de0,3, +0x1d2e00,6, +0x1d2e20,6, +0x1d2e40,6, +0x1d2e60,3, +0x1d2f00,6, +0x1d2f20,5, +0x1d4000,17, +0x1d4054,73, +0x1d41c0,1, +0x1d41d0,1, +0x1d41e0,11, +0x1d4210,3, +0x1d4220,3, +0x1d4230,4, +0x1d43c0,9, +0x1d43e8,5, +0x1d4400,36, +0x1d4494,2, +0x1d4510,13, +0x1d4548,3, +0x1d4558,1, +0x1d4600,40, +0x1d4804,1, +0x1d4820,11, +0x1d4884,1, +0x1d48a0,11, +0x1d4904,1, +0x1d4920,11, +0x1d4984,1, +0x1d49a0,11, +0x1d4a04,1, +0x1d4a20,11, +0x1d4c00,1, +0x1d4c28,1, +0x1d4c50,1, +0x1d4c78,1, +0x1d4ca0,4, +0x1d4dac,1, +0x1d4dd8,4, +0x1d4e00,6, +0x1d4e20,6, +0x1d4e40,3, +0x1d5120,10, +0x1d5160,10, +0x1d51a0,10, +0x1d51e0,40, +0x1d52e0,10, +0x1d5320,10, +0x1d5560,10, +0x1d55a0,10, +0x1d55e0,5, +0x1d5600,10, +0x1d5660,21, +0x1d5800,18, +0x1d5880,18, +0x1d5a00,15, +0x1d5a40,15, +0x1d5a80,10, +0x1d5ac0,10, +0x1d5b00,3, +0x1d5b80,18, +0x1d5c00,13, +0x1d5c40,10, +0x1d5c80,15, +0x1d5d00,10, +0x1d5e04,1, +0x1d5e18,10, +0x1d5e44,1, +0x1d5e58,10, +0x1d5e84,1, +0x1d5e98,10, +0x1d5ec4,1, +0x1d5ed8,13, +0x1d6004,1, +0x1d6014,14, +0x1d6184,1, +0x1d618c,1, +0x1d61a4,1, +0x1d61ac,1, +0x1d61c0,1, +0x1d6804,1, +0x1d680c,4, +0x1d6824,1, +0x1d682c,4, +0x1d6844,1, +0x1d684c,4, +0x1d6864,1, +0x1d686c,4, +0x1d6884,1, +0x1d688c,4, +0x1d6900,13, +0x1d6940,13, +0x1d6980,13, +0x1d69c0,13, +0x1d6a00,13, +0x1d6a40,13, +0x1d6b00,6, +0x1d6b20,6, +0x1d6b40,3, +0x1d6b80,3, +0x1d6c00,6, +0x1d6c20,6, +0x1d6c40,6, +0x1d6c60,3, +0x1d6c80,6, +0x1d6ca0,6, +0x1d6cc0,6, +0x1d6ce0,3, +0x1d6d00,6, +0x1d6d20,6, +0x1d6d40,6, +0x1d6d60,3, +0x1d6d80,6, +0x1d6da0,6, +0x1d6dc0,6, +0x1d6de0,3, +0x1d6e00,6, +0x1d6e20,6, +0x1d6e40,6, +0x1d6e60,3, +0x1d6f00,6, +0x1d6f20,5, 0x1d8000,1, 0x1d8028,1, 0x1d8050,1, @@ -7695,85 +10041,286 @@ 0x1d8b4c,5, 0x1d8b64,1, 0x1d8b6c,8, -0x1d8c00,2, -0x1d8c10,2, -0x1d8c20,2, -0x1d8c30,2, -0x1d8c40,2, -0x1d8c50,2, -0x1d8c60,2, -0x1d8c70,2, -0x1d8c80,1, -0x1d8c88,6, -0x1d8d00,16, +0x1d8c00,56, +0x1d8d00,13, +0x1d8d40,13, +0x1d8d80,13, +0x1d8dc0,13, +0x1d8e00,13, +0x1d8e40,13, +0x1d8e80,13, +0x1d8ec0,13, +0x1d8f00,98, +0x1d9100,16, +0x1d9200,32, +0x1d9300,9, +0x1d9340,1, +0x1d9400,13, +0x1d9440,9, +0x1d9480,9, +0x1d94c4,2, +0x1d9500,13, +0x1d9540,13, +0x1d9580,13, +0x1d95c0,13, +0x1d9600,13, +0x1d9640,13, +0x1d9680,13, +0x1d96c0,13, +0x1d9700,13, +0x1d9900,6, +0x1d9920,6, +0x1d9940,6, +0x1d9960,6, +0x1d9980,6, +0x1d99a0,6, +0x1d99c0,6, +0x1d99e0,6, +0x1d9a00,6, +0x1d9a20,6, +0x1d9a40,6, +0x1d9a60,3, +0x1d9a80,3, +0x1d9b00,16, +0x1d9e00,20, 0x1dc004,1, -0x1dc020,1, -0x1dc044,15, -0x1de000,1, -0x1de028,1, -0x1de050,1, -0x1de078,1, -0x1de0a0,1, +0x1dc020,2, +0x1dc030,10, +0x1dc200,10, +0x1dc304,1, +0x1dc34c,45, +0x1dc404,1, +0x1dc40c,1, +0x1dc414,1, +0x1dc41c,1, +0x1dc424,1, +0x1dc42c,1, +0x1dc434,1, +0x1dc43c,1, +0x1dc444,1, +0x1dc44c,1, +0x1dc454,1, +0x1dc45c,1, +0x1dc464,1, +0x1dc46c,1, +0x1dc474,1, +0x1dc47c,1, +0x1dc484,1, +0x1dc48c,1, +0x1dc494,1, +0x1dc49c,1, +0x1dc4a4,1, +0x1dc4ac,1, +0x1dc4b4,1, +0x1dc4bc,1, +0x1dc4c4,1, +0x1dc4cc,1, +0x1dc4d4,1, +0x1dc4dc,1, +0x1dc4e4,1, +0x1dc4ec,1, +0x1dc4f4,1, +0x1dc4fc,1, +0x1dc504,1, +0x1dc50c,1, +0x1dc514,1, +0x1dc51c,1, +0x1dc524,1, +0x1dc52c,1, +0x1dc534,1, +0x1dc53c,1, +0x1dc544,1, +0x1dc54c,1, +0x1dc554,1, +0x1dc55c,1, +0x1dc564,1, +0x1dc56c,1, +0x1dc574,1, +0x1dc57c,1, +0x1dc584,1, +0x1dc58c,1, +0x1dc594,1, +0x1dc59c,1, +0x1dc5a4,1, +0x1dc5ac,1, +0x1dc5b4,1, +0x1dc5bc,1, +0x1dc5c4,1, +0x1dc5cc,1, +0x1dc5d4,1, +0x1dc5dc,1, +0x1dc5e4,1, +0x1dc5ec,1, +0x1dc5f4,1, +0x1dc5fc,1, +0x1dc604,1, +0x1dc60c,1, +0x1dc614,1, +0x1dc61c,1, +0x1dc624,1, +0x1dc62c,1, +0x1dc634,1, +0x1dc63c,1, +0x1dc700,16, +0x1dc748,16, +0x1dc790,16, +0x1dc7d8,16, +0x1dc820,16, +0x1dc868,16, +0x1dc8b0,16, +0x1dc8f8,16, +0x1dc940,16, +0x1dc988,16, +0x1dc9d0,16, +0x1dca18,16, +0x1dca60,16, +0x1dcaa8,16, +0x1dcaf0,16, +0x1dcb38,16, +0x1dcb80,16, +0x1dcc00,6, +0x1dcc20,6, +0x1dcc40,6, +0x1dcc60,6, +0x1dcc80,6, +0x1dcca0,6, +0x1dccc0,3, +0x1dce00,7, +0x1dce40,5, +0x1de000,2, +0x1de028,2, +0x1de050,2, +0x1de078,2, +0x1de0a4,1, 0x1de1ac,1, 0x1de1d8,4, 0x1de200,6, 0x1de220,6, -0x1de240,3, -0x1de400,1, -0x1de800,1, -0x1de828,1, -0x1de850,1, -0x1de878,1, -0x1de8a0,1, -0x1de9ac,1, -0x1de9d8,4, -0x1dea00,6, -0x1dea20,6, -0x1dea40,3, -0x1dec00,1, -0x1df000,1, -0x1df028,1, -0x1df050,1, -0x1df078,1, -0x1df0a0,1, +0x1de240,6, +0x1de260,6, +0x1de280,3, +0x1de400,152, +0x1de680,6, +0x1de6a0,6, +0x1de6c0,6, +0x1de6e0,3, +0x1de700,1, +0x1de708,1, +0x1de710,1, +0x1de718,1, +0x1de720,1, +0x1de728,1, +0x1de730,1, +0x1de738,1, +0x1de740,1, +0x1de748,1, +0x1de750,1, +0x1de758,1, +0x1de760,1, +0x1de768,1, +0x1de770,1, +0x1de778,1, +0x1de780,1, +0x1de788,1, +0x1de790,3, +0x1de7a0,14, +0x1de7e0,1, +0x1df000,2, +0x1df028,2, +0x1df050,2, +0x1df078,2, +0x1df0a4,1, 0x1df1ac,1, 0x1df1d8,4, 0x1df200,6, 0x1df220,6, -0x1df240,3, -0x1df400,1, +0x1df240,6, +0x1df260,6, +0x1df280,3, +0x1df400,152, +0x1df680,6, +0x1df6a0,6, +0x1df6c0,6, +0x1df6e0,3, +0x1df700,1, +0x1df708,1, +0x1df710,1, +0x1df718,1, +0x1df720,1, +0x1df728,1, +0x1df730,1, +0x1df738,1, +0x1df740,1, +0x1df748,1, +0x1df750,1, +0x1df758,1, +0x1df760,1, +0x1df768,1, +0x1df770,1, +0x1df778,1, +0x1df780,1, +0x1df788,1, +0x1df790,3, +0x1df7a0,14, +0x1df7e0,1, 0x1e8000,6, 0x1e8020,6, 0x1e8040,6, 0x1e8060,6, 0x1e8080,6, 0x1e80a0,6, -0x1e80c0,3, -0x1e8100,1, -0x1e8110,1, -0x1ea000,4, -0x1ea024,5, -0x1ea040,16, -0x1ea100,80, -0x1ea244,16, -0x1ea288,16, -0x1ea2d0,1, -0x1ea304,5, -0x1ea400,128, -0x1ebc00,2, -0x1ec000,2, -0x1ec028,2, -0x1ec050,2, -0x1ec078,2, -0x1ec0a0,15, -0x1ec1ac,1, -0x1ec1d8,4, -0x1ec200,6, -0x1ec220,6, -0x1ec240,6, -0x1ec260,6, -0x1ec280,3, -0x1ec600,2, +0x1e80c0,6, +0x1e80e0,6, +0x1e8100,6, +0x1e8120,3, +0x1e8200,1, +0x1e8210,1, +0x1e8220,2, +0x1ec000,5, +0x1ec024,5, +0x1ec040,16, +0x1ec084,1, +0x1ec090,4, +0x1ec100,80, +0x1ec244,16, +0x1ec288,16, +0x1ec2d0,1, +0x1ec304,1, +0x1ec378,270, +0x1ec800,6, +0x1ec820,6, +0x1ec840,6, +0x1ec860,3, +0x1ec880,16, +0x1ec8d0,12, +0x1edc00,2, +0x1ee000,9, +0x1ee104,1, +0x1ee120,56, +0x1ee204,1, +0x1ee270,36, +0x1ee304,1, +0x1ee360,40, +0x1ee404,1, +0x1ee470,36, +0x1ee504,1, +0x1ee568,66, +0x1ee680,18, +0x1ee700,20, +0x1ee780,18, +0x1ee800,19, +0x1ef000,2, +0x1ef028,2, +0x1ef050,2, +0x1ef078,2, +0x1ef0a0,19, +0x1ef1ac,1, +0x1ef1d8,4, +0x1ef200,6, +0x1ef220,6, +0x1ef240,6, +0x1ef260,6, +0x1ef280,3, 0x200000,4, 0x200014,1, 0x200020,3, @@ -7824,9 +10371,9 @@ 0x200c80,13, 0x200cc0,12, 0x200d00,14, -0x200d40,2, +0x200d40,4, 0x200d80,14, -0x200dc0,2, +0x200dc0,4, 0x200e00,11, 0x200e40,6, 0x200e60,6, @@ -7838,32 +10385,34 @@ 0x201050,3, 0x201080,42, 0x201140,10, -0x201180,3, -0x201190,2, +0x201180,1, 0x20119c,15, -0x201200,9, +0x201200,12, 0x201300,1, 0x201308,6, 0x201324,10, 0x201380,1, 0x201388,6, 0x2013a4,10, -0x201400,6, -0x201420,6, -0x201500,5, -0x201520,4, -0x201540,5, -0x201560,4, -0x201800,24, +0x201400,7, +0x201420,7, +0x201500,12, +0x201540,12, +0x201580,4, +0x201800,14, +0x20183c,9, 0x201864,6, -0x201880,8, -0x201900,24, +0x201880,2, +0x201890,4, +0x201900,14, +0x20193c,9, 0x201964,6, -0x201980,8, -0x201a00,17, -0x201a48,6, -0x201a80,17, -0x201ac8,6, +0x201980,2, +0x201990,4, +0x201a00,16, +0x201a50,4, +0x201a80,16, +0x201ad0,4, 0x201b00,6, 0x201b20,6, 0x201b40,3, @@ -7892,6 +10441,7 @@ 0x201ec0,7, 0x201ee0,7, 0x201f00,12, +0x201f34,2, 0x201f40,3, 0x201f50,8, 0x202000,4, @@ -7944,9 +10494,9 @@ 0x202c80,13, 0x202cc0,12, 0x202d00,14, -0x202d40,2, +0x202d40,4, 0x202d80,14, -0x202dc0,2, +0x202dc0,4, 0x202e00,11, 0x202e40,6, 0x202e60,6, @@ -7958,32 +10508,34 @@ 0x203050,3, 0x203080,42, 0x203140,10, -0x203180,3, -0x203190,2, +0x203180,1, 0x20319c,15, -0x203200,9, +0x203200,12, 0x203300,1, 0x203308,6, 0x203324,10, 0x203380,1, 0x203388,6, 0x2033a4,10, -0x203400,6, -0x203420,6, -0x203500,5, -0x203520,4, -0x203540,5, -0x203560,4, -0x203800,24, +0x203400,7, +0x203420,7, +0x203500,12, +0x203540,12, +0x203580,4, +0x203800,14, +0x20383c,9, 0x203864,6, -0x203880,8, -0x203900,24, +0x203880,2, +0x203890,4, +0x203900,14, +0x20393c,9, 0x203964,6, -0x203980,8, -0x203a00,17, -0x203a48,6, -0x203a80,17, -0x203ac8,6, +0x203980,2, +0x203990,4, +0x203a00,16, +0x203a50,4, +0x203a80,16, +0x203ad0,4, 0x203b00,6, 0x203b20,6, 0x203b40,3, @@ -8012,48 +10564,39 @@ 0x203ec0,7, 0x203ee0,7, 0x203f00,12, +0x203f34,2, 0x203f40,3, 0x203f50,8, 0x204000,29, 0x204078,4, 0x204090,2, -0x2040a0,2, -0x2040b0,3, +0x2040a0,7, 0x2040c0,11, 0x204100,14, 0x204140,14, 0x204180,61, 0x204278,4, 0x204290,2, -0x2042a0,2, -0x2042b0,3, +0x2042a0,7, 0x2042c0,11, 0x204300,14, 0x204340,14, 0x204380,61, 0x204478,4, 0x204490,2, -0x2044a0,2, -0x2044b0,3, +0x2044a0,7, 0x2044c0,11, 0x204500,14, 0x204540,14, 0x204580,61, 0x204678,4, 0x204690,2, -0x2046a0,2, -0x2046b0,3, +0x2046a0,7, 0x2046c0,11, 0x204700,14, 0x204740,14, 0x204780,62, -0x20487c,1, -0x204a00,8, -0x204a24,15, -0x204a64,23, -0x204ac4,6, -0x204b00,4, -0x204b20,3, +0x20487c,6, 0x204c00,6, 0x204c40,14, 0x204c80,9, @@ -8078,43 +10621,33 @@ 0x205000,29, 0x205078,4, 0x205090,2, -0x2050a0,2, -0x2050b0,3, +0x2050a0,7, 0x2050c0,11, 0x205100,14, 0x205140,14, 0x205180,61, 0x205278,4, 0x205290,2, -0x2052a0,2, -0x2052b0,3, +0x2052a0,7, 0x2052c0,11, 0x205300,14, 0x205340,14, 0x205380,61, 0x205478,4, 0x205490,2, -0x2054a0,2, -0x2054b0,3, +0x2054a0,7, 0x2054c0,11, 0x205500,14, 0x205540,14, 0x205580,61, 0x205678,4, 0x205690,2, -0x2056a0,2, -0x2056b0,3, +0x2056a0,7, 0x2056c0,11, 0x205700,14, 0x205740,14, 0x205780,62, -0x20587c,1, -0x205a00,8, -0x205a24,15, -0x205a64,23, -0x205ac4,6, -0x205b00,4, -0x205b20,3, +0x20587c,6, 0x205c00,6, 0x205c40,14, 0x205c80,9, @@ -8150,8 +10683,7 @@ 0x206424,15, 0x206464,15, 0x2064a4,15, -0x2064e4,23, -0x206544,6, +0x2064e4,30, 0x206580,10, 0x2065ac,1, 0x2065b4,5, @@ -8159,7 +10691,8 @@ 0x2065d4,5, 0x2065ec,1, 0x2065f4,13, -0x206680,7, +0x206680,4, +0x206694,2, 0x2066a0,5, 0x2066c0,5, 0x2066e0,4, @@ -8195,10 +10728,11 @@ 0x207200,6, 0x207220,6, 0x207240,3, -0x207400,5, +0x207400,1, +0x207408,3, 0x207438,1, 0x207444,1, -0x207450,4, +0x207450,6, 0x207500,7, 0x207520,6, 0x207540,6, @@ -8206,19 +10740,21 @@ 0x207570,1, 0x208000,6, 0x208020,3, -0x208030,3, +0x208030,1, +0x208038,4, 0x208050,1, 0x208100,6, 0x208120,10, 0x208150,10, 0x208180,10, 0x2081b0,6, -0x2081d0,10, +0x2081d0,6, +0x2081f0,2, 0x208400,1, 0x208428,1, 0x208450,1, 0x208478,1, -0x2084a0,6, +0x2084a0,7, 0x2085ac,1, 0x2085d8,4, 0x208600,6, @@ -8239,19 +10775,19 @@ 0x2089d8,2, 0x2089e4,1, 0x2089f4,3, -0x209000,4, 0x209020,4, 0x209040,11, -0x209070,3, +0x209074,2, 0x209080,4, 0x2090b0,22, 0x209110,2, 0x209120,22, 0x209180,1, 0x2091a0,6, +0x2091c0,8, 0x209200,42, 0x2092c0,1, -0x2092c8,3, +0x2092c8,13, 0x209300,25, 0x20936c,4, 0x209380,2, @@ -8260,25 +10796,26 @@ 0x209404,3, 0x209420,11, 0x209480,6, -0x209500,6, +0x209500,1, 0x209520,6, 0x209540,3, 0x209550,7, -0x209570,4, -0x209800,410, -0x20a000,4, +0x209570,18, +0x2095bc,5, +0x209800,448, 0x20a020,4, 0x20a040,11, -0x20a070,3, +0x20a074,2, 0x20a080,4, 0x20a0b0,22, 0x20a110,2, 0x20a120,22, 0x20a180,1, 0x20a1a0,6, +0x20a1c0,8, 0x20a200,42, 0x20a2c0,1, -0x20a2c8,3, +0x20a2c8,13, 0x20a300,25, 0x20a36c,4, 0x20a380,2, @@ -8287,25 +10824,26 @@ 0x20a404,3, 0x20a420,11, 0x20a480,6, -0x20a500,6, +0x20a500,1, 0x20a520,6, 0x20a540,3, 0x20a550,7, -0x20a570,4, -0x20a800,410, -0x20b000,4, +0x20a570,18, +0x20a5bc,5, +0x20a800,448, 0x20b020,4, 0x20b040,11, -0x20b070,3, +0x20b074,2, 0x20b080,4, 0x20b0b0,22, 0x20b110,2, 0x20b120,22, 0x20b180,1, 0x20b1a0,6, +0x20b1c0,8, 0x20b200,42, 0x20b2c0,1, -0x20b2c8,3, +0x20b2c8,13, 0x20b300,25, 0x20b36c,4, 0x20b380,2, @@ -8314,25 +10852,26 @@ 0x20b404,3, 0x20b420,11, 0x20b480,6, -0x20b500,6, +0x20b500,1, 0x20b520,6, 0x20b540,3, 0x20b550,7, -0x20b570,4, -0x20b800,410, -0x20c000,4, +0x20b570,18, +0x20b5bc,5, +0x20b800,448, 0x20c020,4, 0x20c040,11, -0x20c070,3, +0x20c074,2, 0x20c080,4, 0x20c0b0,22, 0x20c110,2, 0x20c120,22, 0x20c180,1, 0x20c1a0,6, +0x20c1c0,8, 0x20c200,42, 0x20c2c0,1, -0x20c2c8,3, +0x20c2c8,13, 0x20c300,25, 0x20c36c,4, 0x20c380,2, @@ -8341,12 +10880,13 @@ 0x20c404,3, 0x20c420,11, 0x20c480,6, -0x20c500,6, +0x20c500,1, 0x20c520,6, 0x20c540,3, 0x20c550,7, -0x20c570,4, -0x20c800,410, +0x20c570,18, +0x20c5bc,5, +0x20c800,448, 0x20f800,5, 0x20f818,1, 0x20f854,6, @@ -8372,42 +10912,102 @@ 0x20fba4,1, 0x20fbac,2, 0x214000,3, -0x214018,4, +0x214018,8, 0x214100,56, 0x2141f0,1, 0x214400,3, -0x214418,4, +0x214418,8, 0x214500,56, 0x2145f0,1, -0x214800,5, -0x214820,3, +0x214800,3, +0x214810,3, +0x214820,6, +0x214880,9, +0x2148c0,9, +0x214900,8, +0x214938,2, +0x214944,1, +0x214954,3, +0x214980,8, +0x2149b8,2, +0x2149c4,1, +0x2149d4,3, 0x215000,3, -0x215018,4, +0x215018,8, 0x215100,56, 0x2151f0,1, 0x215400,3, -0x215418,4, +0x215418,8, 0x215500,56, 0x2155f0,1, -0x215800,5, -0x215820,3, +0x215800,3, +0x215810,3, +0x215820,6, +0x215880,9, +0x2158c0,9, +0x215900,8, +0x215938,2, +0x215944,1, +0x215954,3, +0x215980,8, +0x2159b8,2, +0x2159c4,1, +0x2159d4,3, 0x216004,7, 0x216024,1, -0x216034,3, +0x216030,4, 0x216300,5, -0x21631c,1, +0x21631c,2, 0x216600,10, 0x216630,1, -0x216680,10, -0x2166b0,1, +0x216640,10, +0x216670,1, 0x216700,10, 0x216730,1, -0x216780,10, -0x2167b0,1, -0x216800,47, -0x216910,14, -0x216e00,1, +0x216740,10, +0x216770,1, +0x216800,19, +0x216890,15, +0x216910,15, +0x216990,10, +0x216ab8,4, +0x216b00,3, +0x216e00,6, 0x217000,65, +0x217800,6, +0x217820,6, +0x217840,6, +0x217860,6, +0x217880,3, +0x217900,6, +0x217920,6, +0x217940,6, +0x217960,6, +0x217980,3, +0x217a00,6, +0x217a20,3, +0x217a40,7, +0x217a80,7, +0x217ac0,9, +0x217b00,9, +0x217b40,10, +0x217b80,10, +0x217bc0,10, +0x217c00,10, +0x217c40,10, +0x217c80,10, +0x217cc0,3, +0x217e40,7, +0x217e60,7, +0x217e80,7, +0x217ea0,7, +0x217ec0,7, +0x217ee0,7, +0x217f00,7, +0x217f20,7, +0x217f40,7, +0x217f60,4, +0x217f78,13, 0x218000,2, 0x21800c,3, 0x218028,2, @@ -8436,7 +11036,7 @@ 0x219828,3, 0x219850,3, 0x219878,3, -0x2198a0,7, +0x2198a0,8, 0x2199ac,1, 0x2199d8,4, 0x219a00,6, @@ -8500,9 +11100,9 @@ 0x220c80,13, 0x220cc0,12, 0x220d00,14, -0x220d40,2, +0x220d40,4, 0x220d80,14, -0x220dc0,2, +0x220dc0,4, 0x220e00,11, 0x220e40,6, 0x220e60,6, @@ -8514,32 +11114,34 @@ 0x221050,3, 0x221080,42, 0x221140,10, -0x221180,3, -0x221190,2, +0x221180,1, 0x22119c,15, -0x221200,9, +0x221200,12, 0x221300,1, 0x221308,6, 0x221324,10, 0x221380,1, 0x221388,6, 0x2213a4,10, -0x221400,6, -0x221420,6, -0x221500,5, -0x221520,4, -0x221540,5, -0x221560,4, -0x221800,24, +0x221400,7, +0x221420,7, +0x221500,12, +0x221540,12, +0x221580,4, +0x221800,14, +0x22183c,9, 0x221864,6, -0x221880,8, -0x221900,24, +0x221880,2, +0x221890,4, +0x221900,14, +0x22193c,9, 0x221964,6, -0x221980,8, -0x221a00,17, -0x221a48,6, -0x221a80,17, -0x221ac8,6, +0x221980,2, +0x221990,4, +0x221a00,16, +0x221a50,4, +0x221a80,16, +0x221ad0,4, 0x221b00,6, 0x221b20,6, 0x221b40,3, @@ -8568,6 +11170,7 @@ 0x221ec0,7, 0x221ee0,7, 0x221f00,12, +0x221f34,2, 0x221f40,3, 0x221f50,8, 0x222000,4, @@ -8620,9 +11223,9 @@ 0x222c80,13, 0x222cc0,12, 0x222d00,14, -0x222d40,2, +0x222d40,4, 0x222d80,14, -0x222dc0,2, +0x222dc0,4, 0x222e00,11, 0x222e40,6, 0x222e60,6, @@ -8634,32 +11237,34 @@ 0x223050,3, 0x223080,42, 0x223140,10, -0x223180,3, -0x223190,2, +0x223180,1, 0x22319c,15, -0x223200,9, +0x223200,12, 0x223300,1, 0x223308,6, 0x223324,10, 0x223380,1, 0x223388,6, 0x2233a4,10, -0x223400,6, -0x223420,6, -0x223500,5, -0x223520,4, -0x223540,5, -0x223560,4, -0x223800,24, +0x223400,7, +0x223420,7, +0x223500,12, +0x223540,12, +0x223580,4, +0x223800,14, +0x22383c,9, 0x223864,6, -0x223880,8, -0x223900,24, +0x223880,2, +0x223890,4, +0x223900,14, +0x22393c,9, 0x223964,6, -0x223980,8, -0x223a00,17, -0x223a48,6, -0x223a80,17, -0x223ac8,6, +0x223980,2, +0x223990,4, +0x223a00,16, +0x223a50,4, +0x223a80,16, +0x223ad0,4, 0x223b00,6, 0x223b20,6, 0x223b40,3, @@ -8688,48 +11293,39 @@ 0x223ec0,7, 0x223ee0,7, 0x223f00,12, +0x223f34,2, 0x223f40,3, 0x223f50,8, 0x224000,29, 0x224078,4, 0x224090,2, -0x2240a0,2, -0x2240b0,3, +0x2240a0,7, 0x2240c0,11, 0x224100,14, 0x224140,14, 0x224180,61, 0x224278,4, 0x224290,2, -0x2242a0,2, -0x2242b0,3, +0x2242a0,7, 0x2242c0,11, 0x224300,14, 0x224340,14, 0x224380,61, 0x224478,4, 0x224490,2, -0x2244a0,2, -0x2244b0,3, +0x2244a0,7, 0x2244c0,11, 0x224500,14, 0x224540,14, 0x224580,61, 0x224678,4, 0x224690,2, -0x2246a0,2, -0x2246b0,3, +0x2246a0,7, 0x2246c0,11, 0x224700,14, 0x224740,14, 0x224780,62, -0x22487c,1, -0x224a00,8, -0x224a24,15, -0x224a64,23, -0x224ac4,6, -0x224b00,4, -0x224b20,3, +0x22487c,6, 0x224c00,6, 0x224c40,14, 0x224c80,9, @@ -8754,43 +11350,33 @@ 0x225000,29, 0x225078,4, 0x225090,2, -0x2250a0,2, -0x2250b0,3, +0x2250a0,7, 0x2250c0,11, 0x225100,14, 0x225140,14, 0x225180,61, 0x225278,4, 0x225290,2, -0x2252a0,2, -0x2252b0,3, +0x2252a0,7, 0x2252c0,11, 0x225300,14, 0x225340,14, 0x225380,61, 0x225478,4, 0x225490,2, -0x2254a0,2, -0x2254b0,3, +0x2254a0,7, 0x2254c0,11, 0x225500,14, 0x225540,14, 0x225580,61, 0x225678,4, 0x225690,2, -0x2256a0,2, -0x2256b0,3, +0x2256a0,7, 0x2256c0,11, 0x225700,14, 0x225740,14, 0x225780,62, -0x22587c,1, -0x225a00,8, -0x225a24,15, -0x225a64,23, -0x225ac4,6, -0x225b00,4, -0x225b20,3, +0x22587c,6, 0x225c00,6, 0x225c40,14, 0x225c80,9, @@ -8826,8 +11412,7 @@ 0x226424,15, 0x226464,15, 0x2264a4,15, -0x2264e4,23, -0x226544,6, +0x2264e4,30, 0x226580,10, 0x2265ac,1, 0x2265b4,5, @@ -8835,7 +11420,8 @@ 0x2265d4,5, 0x2265ec,1, 0x2265f4,13, -0x226680,7, +0x226680,4, +0x226694,2, 0x2266a0,5, 0x2266c0,5, 0x2266e0,4, @@ -8871,10 +11457,11 @@ 0x227200,6, 0x227220,6, 0x227240,3, -0x227400,5, +0x227400,1, +0x227408,3, 0x227438,1, 0x227444,1, -0x227450,4, +0x227450,6, 0x227500,7, 0x227520,6, 0x227540,6, @@ -8882,19 +11469,21 @@ 0x227570,1, 0x228000,6, 0x228020,3, -0x228030,3, +0x228030,1, +0x228038,4, 0x228050,1, 0x228100,6, 0x228120,10, 0x228150,10, 0x228180,10, 0x2281b0,6, -0x2281d0,10, +0x2281d0,6, +0x2281f0,2, 0x228400,1, 0x228428,1, 0x228450,1, 0x228478,1, -0x2284a0,6, +0x2284a0,7, 0x2285ac,1, 0x2285d8,4, 0x228600,6, @@ -8915,19 +11504,19 @@ 0x2289d8,2, 0x2289e4,1, 0x2289f4,3, -0x229000,4, 0x229020,4, 0x229040,11, -0x229070,3, +0x229074,2, 0x229080,4, 0x2290b0,22, 0x229110,2, 0x229120,22, 0x229180,1, 0x2291a0,6, +0x2291c0,8, 0x229200,42, 0x2292c0,1, -0x2292c8,3, +0x2292c8,13, 0x229300,25, 0x22936c,4, 0x229380,2, @@ -8936,25 +11525,26 @@ 0x229404,3, 0x229420,11, 0x229480,6, -0x229500,6, +0x229500,1, 0x229520,6, 0x229540,3, 0x229550,7, -0x229570,4, -0x229800,410, -0x22a000,4, +0x229570,18, +0x2295bc,5, +0x229800,448, 0x22a020,4, 0x22a040,11, -0x22a070,3, +0x22a074,2, 0x22a080,4, 0x22a0b0,22, 0x22a110,2, 0x22a120,22, 0x22a180,1, 0x22a1a0,6, +0x22a1c0,8, 0x22a200,42, 0x22a2c0,1, -0x22a2c8,3, +0x22a2c8,13, 0x22a300,25, 0x22a36c,4, 0x22a380,2, @@ -8963,25 +11553,26 @@ 0x22a404,3, 0x22a420,11, 0x22a480,6, -0x22a500,6, +0x22a500,1, 0x22a520,6, 0x22a540,3, 0x22a550,7, -0x22a570,4, -0x22a800,410, -0x22b000,4, +0x22a570,18, +0x22a5bc,5, +0x22a800,448, 0x22b020,4, 0x22b040,11, -0x22b070,3, +0x22b074,2, 0x22b080,4, 0x22b0b0,22, 0x22b110,2, 0x22b120,22, 0x22b180,1, 0x22b1a0,6, +0x22b1c0,8, 0x22b200,42, 0x22b2c0,1, -0x22b2c8,3, +0x22b2c8,13, 0x22b300,25, 0x22b36c,4, 0x22b380,2, @@ -8990,25 +11581,26 @@ 0x22b404,3, 0x22b420,11, 0x22b480,6, -0x22b500,6, +0x22b500,1, 0x22b520,6, 0x22b540,3, 0x22b550,7, -0x22b570,4, -0x22b800,410, -0x22c000,4, +0x22b570,18, +0x22b5bc,5, +0x22b800,448, 0x22c020,4, 0x22c040,11, -0x22c070,3, +0x22c074,2, 0x22c080,4, 0x22c0b0,22, 0x22c110,2, 0x22c120,22, 0x22c180,1, 0x22c1a0,6, +0x22c1c0,8, 0x22c200,42, 0x22c2c0,1, -0x22c2c8,3, +0x22c2c8,13, 0x22c300,25, 0x22c36c,4, 0x22c380,2, @@ -9017,12 +11609,13 @@ 0x22c404,3, 0x22c420,11, 0x22c480,6, -0x22c500,6, +0x22c500,1, 0x22c520,6, 0x22c540,3, 0x22c550,7, -0x22c570,4, -0x22c800,410, +0x22c570,18, +0x22c5bc,5, +0x22c800,448, 0x22f800,5, 0x22f818,1, 0x22f854,6, @@ -9048,42 +11641,102 @@ 0x22fba4,1, 0x22fbac,2, 0x234000,3, -0x234018,4, +0x234018,8, 0x234100,56, 0x2341f0,1, 0x234400,3, -0x234418,4, +0x234418,8, 0x234500,56, 0x2345f0,1, -0x234800,5, -0x234820,3, +0x234800,3, +0x234810,3, +0x234820,6, +0x234880,9, +0x2348c0,9, +0x234900,8, +0x234938,2, +0x234944,1, +0x234954,3, +0x234980,8, +0x2349b8,2, +0x2349c4,1, +0x2349d4,3, 0x235000,3, -0x235018,4, +0x235018,8, 0x235100,56, 0x2351f0,1, 0x235400,3, -0x235418,4, +0x235418,8, 0x235500,56, 0x2355f0,1, -0x235800,5, -0x235820,3, +0x235800,3, +0x235810,3, +0x235820,6, +0x235880,9, +0x2358c0,9, +0x235900,8, +0x235938,2, +0x235944,1, +0x235954,3, +0x235980,8, +0x2359b8,2, +0x2359c4,1, +0x2359d4,3, 0x236004,7, 0x236024,1, -0x236034,3, +0x236030,4, 0x236300,5, -0x23631c,1, +0x23631c,2, 0x236600,10, 0x236630,1, -0x236680,10, -0x2366b0,1, +0x236640,10, +0x236670,1, 0x236700,10, 0x236730,1, -0x236780,10, -0x2367b0,1, -0x236800,47, -0x236910,14, -0x236e00,1, +0x236740,10, +0x236770,1, +0x236800,19, +0x236890,15, +0x236910,15, +0x236990,10, +0x236ab8,4, +0x236b00,3, +0x236e00,6, 0x237000,65, +0x237800,6, +0x237820,6, +0x237840,6, +0x237860,6, +0x237880,3, +0x237900,6, +0x237920,6, +0x237940,6, +0x237960,6, +0x237980,3, +0x237a00,6, +0x237a20,3, +0x237a40,7, +0x237a80,7, +0x237ac0,9, +0x237b00,9, +0x237b40,10, +0x237b80,10, +0x237bc0,10, +0x237c00,10, +0x237c40,10, +0x237c80,10, +0x237cc0,3, +0x237e40,7, +0x237e60,7, +0x237e80,7, +0x237ea0,7, +0x237ec0,7, +0x237ee0,7, +0x237f00,7, +0x237f20,7, +0x237f40,7, +0x237f60,4, +0x237f78,13, 0x238000,2, 0x23800c,3, 0x238028,2, @@ -9112,7 +11765,7 @@ 0x239828,3, 0x239850,3, 0x239878,3, -0x2398a0,7, +0x2398a0,8, 0x2399ac,1, 0x2399d8,4, 0x239a00,6, @@ -9176,9 +11829,9 @@ 0x240c80,13, 0x240cc0,12, 0x240d00,14, -0x240d40,2, +0x240d40,4, 0x240d80,14, -0x240dc0,2, +0x240dc0,4, 0x240e00,11, 0x240e40,6, 0x240e60,6, @@ -9190,32 +11843,34 @@ 0x241050,3, 0x241080,42, 0x241140,10, -0x241180,3, -0x241190,2, +0x241180,1, 0x24119c,15, -0x241200,9, +0x241200,12, 0x241300,1, 0x241308,6, 0x241324,10, 0x241380,1, 0x241388,6, 0x2413a4,10, -0x241400,6, -0x241420,6, -0x241500,5, -0x241520,4, -0x241540,5, -0x241560,4, -0x241800,24, +0x241400,7, +0x241420,7, +0x241500,12, +0x241540,12, +0x241580,4, +0x241800,14, +0x24183c,9, 0x241864,6, -0x241880,8, -0x241900,24, +0x241880,2, +0x241890,4, +0x241900,14, +0x24193c,9, 0x241964,6, -0x241980,8, -0x241a00,17, -0x241a48,6, -0x241a80,17, -0x241ac8,6, +0x241980,2, +0x241990,4, +0x241a00,16, +0x241a50,4, +0x241a80,16, +0x241ad0,4, 0x241b00,6, 0x241b20,6, 0x241b40,3, @@ -9244,6 +11899,7 @@ 0x241ec0,7, 0x241ee0,7, 0x241f00,12, +0x241f34,2, 0x241f40,3, 0x241f50,8, 0x242000,4, @@ -9296,9 +11952,9 @@ 0x242c80,13, 0x242cc0,12, 0x242d00,14, -0x242d40,2, +0x242d40,4, 0x242d80,14, -0x242dc0,2, +0x242dc0,4, 0x242e00,11, 0x242e40,6, 0x242e60,6, @@ -9310,32 +11966,34 @@ 0x243050,3, 0x243080,42, 0x243140,10, -0x243180,3, -0x243190,2, +0x243180,1, 0x24319c,15, -0x243200,9, +0x243200,12, 0x243300,1, 0x243308,6, 0x243324,10, 0x243380,1, 0x243388,6, 0x2433a4,10, -0x243400,6, -0x243420,6, -0x243500,5, -0x243520,4, -0x243540,5, -0x243560,4, -0x243800,24, +0x243400,7, +0x243420,7, +0x243500,12, +0x243540,12, +0x243580,4, +0x243800,14, +0x24383c,9, 0x243864,6, -0x243880,8, -0x243900,24, +0x243880,2, +0x243890,4, +0x243900,14, +0x24393c,9, 0x243964,6, -0x243980,8, -0x243a00,17, -0x243a48,6, -0x243a80,17, -0x243ac8,6, +0x243980,2, +0x243990,4, +0x243a00,16, +0x243a50,4, +0x243a80,16, +0x243ad0,4, 0x243b00,6, 0x243b20,6, 0x243b40,3, @@ -9364,48 +12022,39 @@ 0x243ec0,7, 0x243ee0,7, 0x243f00,12, +0x243f34,2, 0x243f40,3, 0x243f50,8, 0x244000,29, 0x244078,4, 0x244090,2, -0x2440a0,2, -0x2440b0,3, +0x2440a0,7, 0x2440c0,11, 0x244100,14, 0x244140,14, 0x244180,61, 0x244278,4, 0x244290,2, -0x2442a0,2, -0x2442b0,3, +0x2442a0,7, 0x2442c0,11, 0x244300,14, 0x244340,14, 0x244380,61, 0x244478,4, 0x244490,2, -0x2444a0,2, -0x2444b0,3, +0x2444a0,7, 0x2444c0,11, 0x244500,14, 0x244540,14, 0x244580,61, 0x244678,4, 0x244690,2, -0x2446a0,2, -0x2446b0,3, +0x2446a0,7, 0x2446c0,11, 0x244700,14, 0x244740,14, 0x244780,62, -0x24487c,1, -0x244a00,8, -0x244a24,15, -0x244a64,23, -0x244ac4,6, -0x244b00,4, -0x244b20,3, +0x24487c,6, 0x244c00,6, 0x244c40,14, 0x244c80,9, @@ -9430,43 +12079,33 @@ 0x245000,29, 0x245078,4, 0x245090,2, -0x2450a0,2, -0x2450b0,3, +0x2450a0,7, 0x2450c0,11, 0x245100,14, 0x245140,14, 0x245180,61, 0x245278,4, 0x245290,2, -0x2452a0,2, -0x2452b0,3, +0x2452a0,7, 0x2452c0,11, 0x245300,14, 0x245340,14, 0x245380,61, 0x245478,4, 0x245490,2, -0x2454a0,2, -0x2454b0,3, +0x2454a0,7, 0x2454c0,11, 0x245500,14, 0x245540,14, 0x245580,61, 0x245678,4, 0x245690,2, -0x2456a0,2, -0x2456b0,3, +0x2456a0,7, 0x2456c0,11, 0x245700,14, 0x245740,14, 0x245780,62, -0x24587c,1, -0x245a00,8, -0x245a24,15, -0x245a64,23, -0x245ac4,6, -0x245b00,4, -0x245b20,3, +0x24587c,6, 0x245c00,6, 0x245c40,14, 0x245c80,9, @@ -9502,8 +12141,7 @@ 0x246424,15, 0x246464,15, 0x2464a4,15, -0x2464e4,23, -0x246544,6, +0x2464e4,30, 0x246580,10, 0x2465ac,1, 0x2465b4,5, @@ -9511,7 +12149,8 @@ 0x2465d4,5, 0x2465ec,1, 0x2465f4,13, -0x246680,7, +0x246680,4, +0x246694,2, 0x2466a0,5, 0x2466c0,5, 0x2466e0,4, @@ -9547,10 +12186,11 @@ 0x247200,6, 0x247220,6, 0x247240,3, -0x247400,5, +0x247400,1, +0x247408,3, 0x247438,1, 0x247444,1, -0x247450,4, +0x247450,6, 0x247500,7, 0x247520,6, 0x247540,6, @@ -9558,19 +12198,21 @@ 0x247570,1, 0x248000,6, 0x248020,3, -0x248030,3, +0x248030,1, +0x248038,4, 0x248050,1, 0x248100,6, 0x248120,10, 0x248150,10, 0x248180,10, 0x2481b0,6, -0x2481d0,10, +0x2481d0,6, +0x2481f0,2, 0x248400,1, 0x248428,1, 0x248450,1, 0x248478,1, -0x2484a0,6, +0x2484a0,7, 0x2485ac,1, 0x2485d8,4, 0x248600,6, @@ -9591,19 +12233,19 @@ 0x2489d8,2, 0x2489e4,1, 0x2489f4,3, -0x249000,4, 0x249020,4, 0x249040,11, -0x249070,3, +0x249074,2, 0x249080,4, 0x2490b0,22, 0x249110,2, 0x249120,22, 0x249180,1, 0x2491a0,6, +0x2491c0,8, 0x249200,42, 0x2492c0,1, -0x2492c8,3, +0x2492c8,13, 0x249300,25, 0x24936c,4, 0x249380,2, @@ -9612,25 +12254,26 @@ 0x249404,3, 0x249420,11, 0x249480,6, -0x249500,6, +0x249500,1, 0x249520,6, 0x249540,3, 0x249550,7, -0x249570,4, -0x249800,410, -0x24a000,4, +0x249570,18, +0x2495bc,5, +0x249800,448, 0x24a020,4, 0x24a040,11, -0x24a070,3, +0x24a074,2, 0x24a080,4, 0x24a0b0,22, 0x24a110,2, 0x24a120,22, 0x24a180,1, 0x24a1a0,6, +0x24a1c0,8, 0x24a200,42, 0x24a2c0,1, -0x24a2c8,3, +0x24a2c8,13, 0x24a300,25, 0x24a36c,4, 0x24a380,2, @@ -9639,25 +12282,26 @@ 0x24a404,3, 0x24a420,11, 0x24a480,6, -0x24a500,6, +0x24a500,1, 0x24a520,6, 0x24a540,3, 0x24a550,7, -0x24a570,4, -0x24a800,410, -0x24b000,4, +0x24a570,18, +0x24a5bc,5, +0x24a800,448, 0x24b020,4, 0x24b040,11, -0x24b070,3, +0x24b074,2, 0x24b080,4, 0x24b0b0,22, 0x24b110,2, 0x24b120,22, 0x24b180,1, 0x24b1a0,6, +0x24b1c0,8, 0x24b200,42, 0x24b2c0,1, -0x24b2c8,3, +0x24b2c8,13, 0x24b300,25, 0x24b36c,4, 0x24b380,2, @@ -9666,25 +12310,26 @@ 0x24b404,3, 0x24b420,11, 0x24b480,6, -0x24b500,6, +0x24b500,1, 0x24b520,6, 0x24b540,3, 0x24b550,7, -0x24b570,4, -0x24b800,410, -0x24c000,4, +0x24b570,18, +0x24b5bc,5, +0x24b800,448, 0x24c020,4, 0x24c040,11, -0x24c070,3, +0x24c074,2, 0x24c080,4, 0x24c0b0,22, 0x24c110,2, 0x24c120,22, 0x24c180,1, 0x24c1a0,6, +0x24c1c0,8, 0x24c200,42, 0x24c2c0,1, -0x24c2c8,3, +0x24c2c8,13, 0x24c300,25, 0x24c36c,4, 0x24c380,2, @@ -9693,12 +12338,13 @@ 0x24c404,3, 0x24c420,11, 0x24c480,6, -0x24c500,6, +0x24c500,1, 0x24c520,6, 0x24c540,3, 0x24c550,7, -0x24c570,4, -0x24c800,410, +0x24c570,18, +0x24c5bc,5, +0x24c800,448, 0x24f800,5, 0x24f818,1, 0x24f854,6, @@ -9724,42 +12370,102 @@ 0x24fba4,1, 0x24fbac,2, 0x254000,3, -0x254018,4, +0x254018,8, 0x254100,56, 0x2541f0,1, 0x254400,3, -0x254418,4, +0x254418,8, 0x254500,56, 0x2545f0,1, -0x254800,5, -0x254820,3, +0x254800,3, +0x254810,3, +0x254820,6, +0x254880,9, +0x2548c0,9, +0x254900,8, +0x254938,2, +0x254944,1, +0x254954,3, +0x254980,8, +0x2549b8,2, +0x2549c4,1, +0x2549d4,3, 0x255000,3, -0x255018,4, +0x255018,8, 0x255100,56, 0x2551f0,1, 0x255400,3, -0x255418,4, +0x255418,8, 0x255500,56, 0x2555f0,1, -0x255800,5, -0x255820,3, +0x255800,3, +0x255810,3, +0x255820,6, +0x255880,9, +0x2558c0,9, +0x255900,8, +0x255938,2, +0x255944,1, +0x255954,3, +0x255980,8, +0x2559b8,2, +0x2559c4,1, +0x2559d4,3, 0x256004,7, 0x256024,1, -0x256034,3, +0x256030,4, 0x256300,5, -0x25631c,1, +0x25631c,2, 0x256600,10, 0x256630,1, -0x256680,10, -0x2566b0,1, +0x256640,10, +0x256670,1, 0x256700,10, 0x256730,1, -0x256780,10, -0x2567b0,1, -0x256800,47, -0x256910,14, -0x256e00,1, +0x256740,10, +0x256770,1, +0x256800,19, +0x256890,15, +0x256910,15, +0x256990,10, +0x256ab8,4, +0x256b00,3, +0x256e00,6, 0x257000,65, +0x257800,6, +0x257820,6, +0x257840,6, +0x257860,6, +0x257880,3, +0x257900,6, +0x257920,6, +0x257940,6, +0x257960,6, +0x257980,3, +0x257a00,6, +0x257a20,3, +0x257a40,7, +0x257a80,7, +0x257ac0,9, +0x257b00,9, +0x257b40,10, +0x257b80,10, +0x257bc0,10, +0x257c00,10, +0x257c40,10, +0x257c80,10, +0x257cc0,3, +0x257e40,7, +0x257e60,7, +0x257e80,7, +0x257ea0,7, +0x257ec0,7, +0x257ee0,7, +0x257f00,7, +0x257f20,7, +0x257f40,7, +0x257f60,4, +0x257f78,13, 0x258000,2, 0x25800c,3, 0x258028,2, @@ -9788,7 +12494,7 @@ 0x259828,3, 0x259850,3, 0x259878,3, -0x2598a0,7, +0x2598a0,8, 0x2599ac,1, 0x2599d8,4, 0x259a00,6, @@ -9852,9 +12558,9 @@ 0x260c80,13, 0x260cc0,12, 0x260d00,14, -0x260d40,2, +0x260d40,4, 0x260d80,14, -0x260dc0,2, +0x260dc0,4, 0x260e00,11, 0x260e40,6, 0x260e60,6, @@ -9866,32 +12572,34 @@ 0x261050,3, 0x261080,42, 0x261140,10, -0x261180,3, -0x261190,2, +0x261180,1, 0x26119c,15, -0x261200,9, +0x261200,12, 0x261300,1, 0x261308,6, 0x261324,10, 0x261380,1, 0x261388,6, 0x2613a4,10, -0x261400,6, -0x261420,6, -0x261500,5, -0x261520,4, -0x261540,5, -0x261560,4, -0x261800,24, +0x261400,7, +0x261420,7, +0x261500,12, +0x261540,12, +0x261580,4, +0x261800,14, +0x26183c,9, 0x261864,6, -0x261880,8, -0x261900,24, +0x261880,2, +0x261890,4, +0x261900,14, +0x26193c,9, 0x261964,6, -0x261980,8, -0x261a00,17, -0x261a48,6, -0x261a80,17, -0x261ac8,6, +0x261980,2, +0x261990,4, +0x261a00,16, +0x261a50,4, +0x261a80,16, +0x261ad0,4, 0x261b00,6, 0x261b20,6, 0x261b40,3, @@ -9920,6 +12628,7 @@ 0x261ec0,7, 0x261ee0,7, 0x261f00,12, +0x261f34,2, 0x261f40,3, 0x261f50,8, 0x262000,4, @@ -9972,9 +12681,9 @@ 0x262c80,13, 0x262cc0,12, 0x262d00,14, -0x262d40,2, +0x262d40,4, 0x262d80,14, -0x262dc0,2, +0x262dc0,4, 0x262e00,11, 0x262e40,6, 0x262e60,6, @@ -9986,32 +12695,34 @@ 0x263050,3, 0x263080,42, 0x263140,10, -0x263180,3, -0x263190,2, +0x263180,1, 0x26319c,15, -0x263200,9, +0x263200,12, 0x263300,1, 0x263308,6, 0x263324,10, 0x263380,1, 0x263388,6, 0x2633a4,10, -0x263400,6, -0x263420,6, -0x263500,5, -0x263520,4, -0x263540,5, -0x263560,4, -0x263800,24, +0x263400,7, +0x263420,7, +0x263500,12, +0x263540,12, +0x263580,4, +0x263800,14, +0x26383c,9, 0x263864,6, -0x263880,8, -0x263900,24, +0x263880,2, +0x263890,4, +0x263900,14, +0x26393c,9, 0x263964,6, -0x263980,8, -0x263a00,17, -0x263a48,6, -0x263a80,17, -0x263ac8,6, +0x263980,2, +0x263990,4, +0x263a00,16, +0x263a50,4, +0x263a80,16, +0x263ad0,4, 0x263b00,6, 0x263b20,6, 0x263b40,3, @@ -10040,48 +12751,39 @@ 0x263ec0,7, 0x263ee0,7, 0x263f00,12, +0x263f34,2, 0x263f40,3, 0x263f50,8, 0x264000,29, 0x264078,4, 0x264090,2, -0x2640a0,2, -0x2640b0,3, +0x2640a0,7, 0x2640c0,11, 0x264100,14, 0x264140,14, 0x264180,61, 0x264278,4, 0x264290,2, -0x2642a0,2, -0x2642b0,3, +0x2642a0,7, 0x2642c0,11, 0x264300,14, 0x264340,14, 0x264380,61, 0x264478,4, 0x264490,2, -0x2644a0,2, -0x2644b0,3, +0x2644a0,7, 0x2644c0,11, 0x264500,14, 0x264540,14, 0x264580,61, 0x264678,4, 0x264690,2, -0x2646a0,2, -0x2646b0,3, +0x2646a0,7, 0x2646c0,11, 0x264700,14, 0x264740,14, 0x264780,62, -0x26487c,1, -0x264a00,8, -0x264a24,15, -0x264a64,23, -0x264ac4,6, -0x264b00,4, -0x264b20,3, +0x26487c,6, 0x264c00,6, 0x264c40,14, 0x264c80,9, @@ -10106,43 +12808,33 @@ 0x265000,29, 0x265078,4, 0x265090,2, -0x2650a0,2, -0x2650b0,3, +0x2650a0,7, 0x2650c0,11, 0x265100,14, 0x265140,14, 0x265180,61, 0x265278,4, 0x265290,2, -0x2652a0,2, -0x2652b0,3, +0x2652a0,7, 0x2652c0,11, 0x265300,14, 0x265340,14, 0x265380,61, 0x265478,4, 0x265490,2, -0x2654a0,2, -0x2654b0,3, +0x2654a0,7, 0x2654c0,11, 0x265500,14, 0x265540,14, 0x265580,61, 0x265678,4, 0x265690,2, -0x2656a0,2, -0x2656b0,3, +0x2656a0,7, 0x2656c0,11, 0x265700,14, 0x265740,14, 0x265780,62, -0x26587c,1, -0x265a00,8, -0x265a24,15, -0x265a64,23, -0x265ac4,6, -0x265b00,4, -0x265b20,3, +0x26587c,6, 0x265c00,6, 0x265c40,14, 0x265c80,9, @@ -10178,8 +12870,7 @@ 0x266424,15, 0x266464,15, 0x2664a4,15, -0x2664e4,23, -0x266544,6, +0x2664e4,30, 0x266580,10, 0x2665ac,1, 0x2665b4,5, @@ -10187,7 +12878,8 @@ 0x2665d4,5, 0x2665ec,1, 0x2665f4,13, -0x266680,7, +0x266680,4, +0x266694,2, 0x2666a0,5, 0x2666c0,5, 0x2666e0,4, @@ -10223,10 +12915,11 @@ 0x267200,6, 0x267220,6, 0x267240,3, -0x267400,5, +0x267400,1, +0x267408,3, 0x267438,1, 0x267444,1, -0x267450,4, +0x267450,6, 0x267500,7, 0x267520,6, 0x267540,6, @@ -10234,19 +12927,21 @@ 0x267570,1, 0x268000,6, 0x268020,3, -0x268030,3, +0x268030,1, +0x268038,4, 0x268050,1, 0x268100,6, 0x268120,10, 0x268150,10, 0x268180,10, 0x2681b0,6, -0x2681d0,10, +0x2681d0,6, +0x2681f0,2, 0x268400,1, 0x268428,1, 0x268450,1, 0x268478,1, -0x2684a0,6, +0x2684a0,7, 0x2685ac,1, 0x2685d8,4, 0x268600,6, @@ -10267,19 +12962,19 @@ 0x2689d8,2, 0x2689e4,1, 0x2689f4,3, -0x269000,4, 0x269020,4, 0x269040,11, -0x269070,3, +0x269074,2, 0x269080,4, 0x2690b0,22, 0x269110,2, 0x269120,22, 0x269180,1, 0x2691a0,6, +0x2691c0,8, 0x269200,42, 0x2692c0,1, -0x2692c8,3, +0x2692c8,13, 0x269300,25, 0x26936c,4, 0x269380,2, @@ -10288,25 +12983,26 @@ 0x269404,3, 0x269420,11, 0x269480,6, -0x269500,6, +0x269500,1, 0x269520,6, 0x269540,3, 0x269550,7, -0x269570,4, -0x269800,410, -0x26a000,4, +0x269570,18, +0x2695bc,5, +0x269800,448, 0x26a020,4, 0x26a040,11, -0x26a070,3, +0x26a074,2, 0x26a080,4, 0x26a0b0,22, 0x26a110,2, 0x26a120,22, 0x26a180,1, 0x26a1a0,6, +0x26a1c0,8, 0x26a200,42, 0x26a2c0,1, -0x26a2c8,3, +0x26a2c8,13, 0x26a300,25, 0x26a36c,4, 0x26a380,2, @@ -10315,25 +13011,26 @@ 0x26a404,3, 0x26a420,11, 0x26a480,6, -0x26a500,6, +0x26a500,1, 0x26a520,6, 0x26a540,3, 0x26a550,7, -0x26a570,4, -0x26a800,410, -0x26b000,4, +0x26a570,18, +0x26a5bc,5, +0x26a800,448, 0x26b020,4, 0x26b040,11, -0x26b070,3, +0x26b074,2, 0x26b080,4, 0x26b0b0,22, 0x26b110,2, 0x26b120,22, 0x26b180,1, 0x26b1a0,6, +0x26b1c0,8, 0x26b200,42, 0x26b2c0,1, -0x26b2c8,3, +0x26b2c8,13, 0x26b300,25, 0x26b36c,4, 0x26b380,2, @@ -10342,25 +13039,26 @@ 0x26b404,3, 0x26b420,11, 0x26b480,6, -0x26b500,6, +0x26b500,1, 0x26b520,6, 0x26b540,3, 0x26b550,7, -0x26b570,4, -0x26b800,410, -0x26c000,4, +0x26b570,18, +0x26b5bc,5, +0x26b800,448, 0x26c020,4, 0x26c040,11, -0x26c070,3, +0x26c074,2, 0x26c080,4, 0x26c0b0,22, 0x26c110,2, 0x26c120,22, 0x26c180,1, 0x26c1a0,6, +0x26c1c0,8, 0x26c200,42, 0x26c2c0,1, -0x26c2c8,3, +0x26c2c8,13, 0x26c300,25, 0x26c36c,4, 0x26c380,2, @@ -10369,12 +13067,13 @@ 0x26c404,3, 0x26c420,11, 0x26c480,6, -0x26c500,6, +0x26c500,1, 0x26c520,6, 0x26c540,3, 0x26c550,7, -0x26c570,4, -0x26c800,410, +0x26c570,18, +0x26c5bc,5, +0x26c800,448, 0x26f800,5, 0x26f818,1, 0x26f854,6, @@ -10400,42 +13099,102 @@ 0x26fba4,1, 0x26fbac,2, 0x274000,3, -0x274018,4, +0x274018,8, 0x274100,56, 0x2741f0,1, 0x274400,3, -0x274418,4, +0x274418,8, 0x274500,56, 0x2745f0,1, -0x274800,5, -0x274820,3, +0x274800,3, +0x274810,3, +0x274820,6, +0x274880,9, +0x2748c0,9, +0x274900,8, +0x274938,2, +0x274944,1, +0x274954,3, +0x274980,8, +0x2749b8,2, +0x2749c4,1, +0x2749d4,3, 0x275000,3, -0x275018,4, +0x275018,8, 0x275100,56, 0x2751f0,1, 0x275400,3, -0x275418,4, +0x275418,8, 0x275500,56, 0x2755f0,1, -0x275800,5, -0x275820,3, +0x275800,3, +0x275810,3, +0x275820,6, +0x275880,9, +0x2758c0,9, +0x275900,8, +0x275938,2, +0x275944,1, +0x275954,3, +0x275980,8, +0x2759b8,2, +0x2759c4,1, +0x2759d4,3, 0x276004,7, 0x276024,1, -0x276034,3, +0x276030,4, 0x276300,5, -0x27631c,1, +0x27631c,2, 0x276600,10, 0x276630,1, -0x276680,10, -0x2766b0,1, +0x276640,10, +0x276670,1, 0x276700,10, 0x276730,1, -0x276780,10, -0x2767b0,1, -0x276800,47, -0x276910,14, -0x276e00,1, +0x276740,10, +0x276770,1, +0x276800,19, +0x276890,15, +0x276910,15, +0x276990,10, +0x276ab8,4, +0x276b00,3, +0x276e00,6, 0x277000,65, +0x277800,6, +0x277820,6, +0x277840,6, +0x277860,6, +0x277880,3, +0x277900,6, +0x277920,6, +0x277940,6, +0x277960,6, +0x277980,3, +0x277a00,6, +0x277a20,3, +0x277a40,7, +0x277a80,7, +0x277ac0,9, +0x277b00,9, +0x277b40,10, +0x277b80,10, +0x277bc0,10, +0x277c00,10, +0x277c40,10, +0x277c80,10, +0x277cc0,3, +0x277e40,7, +0x277e60,7, +0x277e80,7, +0x277ea0,7, +0x277ec0,7, +0x277ee0,7, +0x277f00,7, +0x277f20,7, +0x277f40,7, +0x277f60,4, +0x277f78,13, 0x278000,2, 0x27800c,3, 0x278028,2, @@ -10464,7 +13223,7 @@ 0x279828,3, 0x279850,3, 0x279878,3, -0x2798a0,7, +0x2798a0,8, 0x2799ac,1, 0x2799d8,4, 0x279a00,6, @@ -10528,9 +13287,9 @@ 0x280c80,13, 0x280cc0,12, 0x280d00,14, -0x280d40,2, +0x280d40,4, 0x280d80,14, -0x280dc0,2, +0x280dc0,4, 0x280e00,11, 0x280e40,6, 0x280e60,6, @@ -10542,32 +13301,34 @@ 0x281050,3, 0x281080,42, 0x281140,10, -0x281180,3, -0x281190,2, +0x281180,1, 0x28119c,15, -0x281200,9, +0x281200,12, 0x281300,1, 0x281308,6, 0x281324,10, 0x281380,1, 0x281388,6, 0x2813a4,10, -0x281400,6, -0x281420,6, -0x281500,5, -0x281520,4, -0x281540,5, -0x281560,4, -0x281800,24, +0x281400,7, +0x281420,7, +0x281500,12, +0x281540,12, +0x281580,4, +0x281800,14, +0x28183c,9, 0x281864,6, -0x281880,8, -0x281900,24, +0x281880,2, +0x281890,4, +0x281900,14, +0x28193c,9, 0x281964,6, -0x281980,8, -0x281a00,17, -0x281a48,6, -0x281a80,17, -0x281ac8,6, +0x281980,2, +0x281990,4, +0x281a00,16, +0x281a50,4, +0x281a80,16, +0x281ad0,4, 0x281b00,6, 0x281b20,6, 0x281b40,3, @@ -10596,6 +13357,7 @@ 0x281ec0,7, 0x281ee0,7, 0x281f00,12, +0x281f34,2, 0x281f40,3, 0x281f50,8, 0x282000,4, @@ -10648,9 +13410,9 @@ 0x282c80,13, 0x282cc0,12, 0x282d00,14, -0x282d40,2, +0x282d40,4, 0x282d80,14, -0x282dc0,2, +0x282dc0,4, 0x282e00,11, 0x282e40,6, 0x282e60,6, @@ -10662,32 +13424,34 @@ 0x283050,3, 0x283080,42, 0x283140,10, -0x283180,3, -0x283190,2, +0x283180,1, 0x28319c,15, -0x283200,9, +0x283200,12, 0x283300,1, 0x283308,6, 0x283324,10, 0x283380,1, 0x283388,6, 0x2833a4,10, -0x283400,6, -0x283420,6, -0x283500,5, -0x283520,4, -0x283540,5, -0x283560,4, -0x283800,24, +0x283400,7, +0x283420,7, +0x283500,12, +0x283540,12, +0x283580,4, +0x283800,14, +0x28383c,9, 0x283864,6, -0x283880,8, -0x283900,24, +0x283880,2, +0x283890,4, +0x283900,14, +0x28393c,9, 0x283964,6, -0x283980,8, -0x283a00,17, -0x283a48,6, -0x283a80,17, -0x283ac8,6, +0x283980,2, +0x283990,4, +0x283a00,16, +0x283a50,4, +0x283a80,16, +0x283ad0,4, 0x283b00,6, 0x283b20,6, 0x283b40,3, @@ -10716,48 +13480,39 @@ 0x283ec0,7, 0x283ee0,7, 0x283f00,12, +0x283f34,2, 0x283f40,3, 0x283f50,8, 0x284000,29, 0x284078,4, 0x284090,2, -0x2840a0,2, -0x2840b0,3, +0x2840a0,7, 0x2840c0,11, 0x284100,14, 0x284140,14, 0x284180,61, 0x284278,4, 0x284290,2, -0x2842a0,2, -0x2842b0,3, +0x2842a0,7, 0x2842c0,11, 0x284300,14, 0x284340,14, 0x284380,61, 0x284478,4, 0x284490,2, -0x2844a0,2, -0x2844b0,3, +0x2844a0,7, 0x2844c0,11, 0x284500,14, 0x284540,14, 0x284580,61, 0x284678,4, 0x284690,2, -0x2846a0,2, -0x2846b0,3, +0x2846a0,7, 0x2846c0,11, 0x284700,14, 0x284740,14, 0x284780,62, -0x28487c,1, -0x284a00,8, -0x284a24,15, -0x284a64,23, -0x284ac4,6, -0x284b00,4, -0x284b20,3, +0x28487c,6, 0x284c00,6, 0x284c40,14, 0x284c80,9, @@ -10782,43 +13537,33 @@ 0x285000,29, 0x285078,4, 0x285090,2, -0x2850a0,2, -0x2850b0,3, +0x2850a0,7, 0x2850c0,11, 0x285100,14, 0x285140,14, 0x285180,61, 0x285278,4, 0x285290,2, -0x2852a0,2, -0x2852b0,3, +0x2852a0,7, 0x2852c0,11, 0x285300,14, 0x285340,14, 0x285380,61, 0x285478,4, 0x285490,2, -0x2854a0,2, -0x2854b0,3, +0x2854a0,7, 0x2854c0,11, 0x285500,14, 0x285540,14, 0x285580,61, 0x285678,4, 0x285690,2, -0x2856a0,2, -0x2856b0,3, +0x2856a0,7, 0x2856c0,11, 0x285700,14, 0x285740,14, 0x285780,62, -0x28587c,1, -0x285a00,8, -0x285a24,15, -0x285a64,23, -0x285ac4,6, -0x285b00,4, -0x285b20,3, +0x28587c,6, 0x285c00,6, 0x285c40,14, 0x285c80,9, @@ -10854,8 +13599,7 @@ 0x286424,15, 0x286464,15, 0x2864a4,15, -0x2864e4,23, -0x286544,6, +0x2864e4,30, 0x286580,10, 0x2865ac,1, 0x2865b4,5, @@ -10863,7 +13607,8 @@ 0x2865d4,5, 0x2865ec,1, 0x2865f4,13, -0x286680,7, +0x286680,4, +0x286694,2, 0x2866a0,5, 0x2866c0,5, 0x2866e0,4, @@ -10899,10 +13644,11 @@ 0x287200,6, 0x287220,6, 0x287240,3, -0x287400,5, +0x287400,1, +0x287408,3, 0x287438,1, 0x287444,1, -0x287450,4, +0x287450,6, 0x287500,7, 0x287520,6, 0x287540,6, @@ -10910,19 +13656,21 @@ 0x287570,1, 0x288000,6, 0x288020,3, -0x288030,3, +0x288030,1, +0x288038,4, 0x288050,1, 0x288100,6, 0x288120,10, 0x288150,10, 0x288180,10, 0x2881b0,6, -0x2881d0,10, +0x2881d0,6, +0x2881f0,2, 0x288400,1, 0x288428,1, 0x288450,1, 0x288478,1, -0x2884a0,6, +0x2884a0,7, 0x2885ac,1, 0x2885d8,4, 0x288600,6, @@ -10943,19 +13691,19 @@ 0x2889d8,2, 0x2889e4,1, 0x2889f4,3, -0x289000,4, 0x289020,4, 0x289040,11, -0x289070,3, +0x289074,2, 0x289080,4, 0x2890b0,22, 0x289110,2, 0x289120,22, 0x289180,1, 0x2891a0,6, +0x2891c0,8, 0x289200,42, 0x2892c0,1, -0x2892c8,3, +0x2892c8,13, 0x289300,25, 0x28936c,4, 0x289380,2, @@ -10964,25 +13712,26 @@ 0x289404,3, 0x289420,11, 0x289480,6, -0x289500,6, +0x289500,1, 0x289520,6, 0x289540,3, 0x289550,7, -0x289570,4, -0x289800,410, -0x28a000,4, +0x289570,18, +0x2895bc,5, +0x289800,448, 0x28a020,4, 0x28a040,11, -0x28a070,3, +0x28a074,2, 0x28a080,4, 0x28a0b0,22, 0x28a110,2, 0x28a120,22, 0x28a180,1, 0x28a1a0,6, +0x28a1c0,8, 0x28a200,42, 0x28a2c0,1, -0x28a2c8,3, +0x28a2c8,13, 0x28a300,25, 0x28a36c,4, 0x28a380,2, @@ -10991,25 +13740,26 @@ 0x28a404,3, 0x28a420,11, 0x28a480,6, -0x28a500,6, +0x28a500,1, 0x28a520,6, 0x28a540,3, 0x28a550,7, -0x28a570,4, -0x28a800,410, -0x28b000,4, +0x28a570,18, +0x28a5bc,5, +0x28a800,448, 0x28b020,4, 0x28b040,11, -0x28b070,3, +0x28b074,2, 0x28b080,4, 0x28b0b0,22, 0x28b110,2, 0x28b120,22, 0x28b180,1, 0x28b1a0,6, +0x28b1c0,8, 0x28b200,42, 0x28b2c0,1, -0x28b2c8,3, +0x28b2c8,13, 0x28b300,25, 0x28b36c,4, 0x28b380,2, @@ -11018,25 +13768,26 @@ 0x28b404,3, 0x28b420,11, 0x28b480,6, -0x28b500,6, +0x28b500,1, 0x28b520,6, 0x28b540,3, 0x28b550,7, -0x28b570,4, -0x28b800,410, -0x28c000,4, +0x28b570,18, +0x28b5bc,5, +0x28b800,448, 0x28c020,4, 0x28c040,11, -0x28c070,3, +0x28c074,2, 0x28c080,4, 0x28c0b0,22, 0x28c110,2, 0x28c120,22, 0x28c180,1, 0x28c1a0,6, +0x28c1c0,8, 0x28c200,42, 0x28c2c0,1, -0x28c2c8,3, +0x28c2c8,13, 0x28c300,25, 0x28c36c,4, 0x28c380,2, @@ -11045,12 +13796,13 @@ 0x28c404,3, 0x28c420,11, 0x28c480,6, -0x28c500,6, +0x28c500,1, 0x28c520,6, 0x28c540,3, 0x28c550,7, -0x28c570,4, -0x28c800,410, +0x28c570,18, +0x28c5bc,5, +0x28c800,448, 0x28f800,5, 0x28f818,1, 0x28f854,6, @@ -11076,42 +13828,102 @@ 0x28fba4,1, 0x28fbac,2, 0x294000,3, -0x294018,4, +0x294018,8, 0x294100,56, 0x2941f0,1, 0x294400,3, -0x294418,4, +0x294418,8, 0x294500,56, 0x2945f0,1, -0x294800,5, -0x294820,3, +0x294800,3, +0x294810,3, +0x294820,6, +0x294880,9, +0x2948c0,9, +0x294900,8, +0x294938,2, +0x294944,1, +0x294954,3, +0x294980,8, +0x2949b8,2, +0x2949c4,1, +0x2949d4,3, 0x295000,3, -0x295018,4, +0x295018,8, 0x295100,56, 0x2951f0,1, 0x295400,3, -0x295418,4, +0x295418,8, 0x295500,56, 0x2955f0,1, -0x295800,5, -0x295820,3, +0x295800,3, +0x295810,3, +0x295820,6, +0x295880,9, +0x2958c0,9, +0x295900,8, +0x295938,2, +0x295944,1, +0x295954,3, +0x295980,8, +0x2959b8,2, +0x2959c4,1, +0x2959d4,3, 0x296004,7, 0x296024,1, -0x296034,3, +0x296030,4, 0x296300,5, -0x29631c,1, +0x29631c,2, 0x296600,10, 0x296630,1, -0x296680,10, -0x2966b0,1, +0x296640,10, +0x296670,1, 0x296700,10, 0x296730,1, -0x296780,10, -0x2967b0,1, -0x296800,47, -0x296910,14, -0x296e00,1, +0x296740,10, +0x296770,1, +0x296800,19, +0x296890,15, +0x296910,15, +0x296990,10, +0x296ab8,4, +0x296b00,3, +0x296e00,6, 0x297000,65, +0x297800,6, +0x297820,6, +0x297840,6, +0x297860,6, +0x297880,3, +0x297900,6, +0x297920,6, +0x297940,6, +0x297960,6, +0x297980,3, +0x297a00,6, +0x297a20,3, +0x297a40,7, +0x297a80,7, +0x297ac0,9, +0x297b00,9, +0x297b40,10, +0x297b80,10, +0x297bc0,10, +0x297c00,10, +0x297c40,10, +0x297c80,10, +0x297cc0,3, +0x297e40,7, +0x297e60,7, +0x297e80,7, +0x297ea0,7, +0x297ec0,7, +0x297ee0,7, +0x297f00,7, +0x297f20,7, +0x297f40,7, +0x297f60,4, +0x297f78,13, 0x298000,2, 0x29800c,3, 0x298028,2, @@ -11140,7 +13952,7 @@ 0x299828,3, 0x299850,3, 0x299878,3, -0x2998a0,7, +0x2998a0,8, 0x2999ac,1, 0x2999d8,4, 0x299a00,6, @@ -11204,9 +14016,9 @@ 0x2a0c80,13, 0x2a0cc0,12, 0x2a0d00,14, -0x2a0d40,2, +0x2a0d40,4, 0x2a0d80,14, -0x2a0dc0,2, +0x2a0dc0,4, 0x2a0e00,11, 0x2a0e40,6, 0x2a0e60,6, @@ -11218,32 +14030,34 @@ 0x2a1050,3, 0x2a1080,42, 0x2a1140,10, -0x2a1180,3, -0x2a1190,2, +0x2a1180,1, 0x2a119c,15, -0x2a1200,9, +0x2a1200,12, 0x2a1300,1, 0x2a1308,6, 0x2a1324,10, 0x2a1380,1, 0x2a1388,6, 0x2a13a4,10, -0x2a1400,6, -0x2a1420,6, -0x2a1500,5, -0x2a1520,4, -0x2a1540,5, -0x2a1560,4, -0x2a1800,24, +0x2a1400,7, +0x2a1420,7, +0x2a1500,12, +0x2a1540,12, +0x2a1580,4, +0x2a1800,14, +0x2a183c,9, 0x2a1864,6, -0x2a1880,8, -0x2a1900,24, +0x2a1880,2, +0x2a1890,4, +0x2a1900,14, +0x2a193c,9, 0x2a1964,6, -0x2a1980,8, -0x2a1a00,17, -0x2a1a48,6, -0x2a1a80,17, -0x2a1ac8,6, +0x2a1980,2, +0x2a1990,4, +0x2a1a00,16, +0x2a1a50,4, +0x2a1a80,16, +0x2a1ad0,4, 0x2a1b00,6, 0x2a1b20,6, 0x2a1b40,3, @@ -11272,6 +14086,7 @@ 0x2a1ec0,7, 0x2a1ee0,7, 0x2a1f00,12, +0x2a1f34,2, 0x2a1f40,3, 0x2a1f50,8, 0x2a2000,4, @@ -11324,9 +14139,9 @@ 0x2a2c80,13, 0x2a2cc0,12, 0x2a2d00,14, -0x2a2d40,2, +0x2a2d40,4, 0x2a2d80,14, -0x2a2dc0,2, +0x2a2dc0,4, 0x2a2e00,11, 0x2a2e40,6, 0x2a2e60,6, @@ -11338,32 +14153,34 @@ 0x2a3050,3, 0x2a3080,42, 0x2a3140,10, -0x2a3180,3, -0x2a3190,2, +0x2a3180,1, 0x2a319c,15, -0x2a3200,9, +0x2a3200,12, 0x2a3300,1, 0x2a3308,6, 0x2a3324,10, 0x2a3380,1, 0x2a3388,6, 0x2a33a4,10, -0x2a3400,6, -0x2a3420,6, -0x2a3500,5, -0x2a3520,4, -0x2a3540,5, -0x2a3560,4, -0x2a3800,24, +0x2a3400,7, +0x2a3420,7, +0x2a3500,12, +0x2a3540,12, +0x2a3580,4, +0x2a3800,14, +0x2a383c,9, 0x2a3864,6, -0x2a3880,8, -0x2a3900,24, +0x2a3880,2, +0x2a3890,4, +0x2a3900,14, +0x2a393c,9, 0x2a3964,6, -0x2a3980,8, -0x2a3a00,17, -0x2a3a48,6, -0x2a3a80,17, -0x2a3ac8,6, +0x2a3980,2, +0x2a3990,4, +0x2a3a00,16, +0x2a3a50,4, +0x2a3a80,16, +0x2a3ad0,4, 0x2a3b00,6, 0x2a3b20,6, 0x2a3b40,3, @@ -11392,48 +14209,39 @@ 0x2a3ec0,7, 0x2a3ee0,7, 0x2a3f00,12, +0x2a3f34,2, 0x2a3f40,3, 0x2a3f50,8, 0x2a4000,29, 0x2a4078,4, 0x2a4090,2, -0x2a40a0,2, -0x2a40b0,3, +0x2a40a0,7, 0x2a40c0,11, 0x2a4100,14, 0x2a4140,14, 0x2a4180,61, 0x2a4278,4, 0x2a4290,2, -0x2a42a0,2, -0x2a42b0,3, +0x2a42a0,7, 0x2a42c0,11, 0x2a4300,14, 0x2a4340,14, 0x2a4380,61, 0x2a4478,4, 0x2a4490,2, -0x2a44a0,2, -0x2a44b0,3, +0x2a44a0,7, 0x2a44c0,11, 0x2a4500,14, 0x2a4540,14, 0x2a4580,61, 0x2a4678,4, 0x2a4690,2, -0x2a46a0,2, -0x2a46b0,3, +0x2a46a0,7, 0x2a46c0,11, 0x2a4700,14, 0x2a4740,14, 0x2a4780,62, -0x2a487c,1, -0x2a4a00,8, -0x2a4a24,15, -0x2a4a64,23, -0x2a4ac4,6, -0x2a4b00,4, -0x2a4b20,3, +0x2a487c,6, 0x2a4c00,6, 0x2a4c40,14, 0x2a4c80,9, @@ -11458,43 +14266,33 @@ 0x2a5000,29, 0x2a5078,4, 0x2a5090,2, -0x2a50a0,2, -0x2a50b0,3, +0x2a50a0,7, 0x2a50c0,11, 0x2a5100,14, 0x2a5140,14, 0x2a5180,61, 0x2a5278,4, 0x2a5290,2, -0x2a52a0,2, -0x2a52b0,3, +0x2a52a0,7, 0x2a52c0,11, 0x2a5300,14, 0x2a5340,14, 0x2a5380,61, 0x2a5478,4, 0x2a5490,2, -0x2a54a0,2, -0x2a54b0,3, +0x2a54a0,7, 0x2a54c0,11, 0x2a5500,14, 0x2a5540,14, 0x2a5580,61, 0x2a5678,4, 0x2a5690,2, -0x2a56a0,2, -0x2a56b0,3, +0x2a56a0,7, 0x2a56c0,11, 0x2a5700,14, 0x2a5740,14, 0x2a5780,62, -0x2a587c,1, -0x2a5a00,8, -0x2a5a24,15, -0x2a5a64,23, -0x2a5ac4,6, -0x2a5b00,4, -0x2a5b20,3, +0x2a587c,6, 0x2a5c00,6, 0x2a5c40,14, 0x2a5c80,9, @@ -11530,8 +14328,7 @@ 0x2a6424,15, 0x2a6464,15, 0x2a64a4,15, -0x2a64e4,23, -0x2a6544,6, +0x2a64e4,30, 0x2a6580,10, 0x2a65ac,1, 0x2a65b4,5, @@ -11539,7 +14336,8 @@ 0x2a65d4,5, 0x2a65ec,1, 0x2a65f4,13, -0x2a6680,7, +0x2a6680,4, +0x2a6694,2, 0x2a66a0,5, 0x2a66c0,5, 0x2a66e0,4, @@ -11575,10 +14373,11 @@ 0x2a7200,6, 0x2a7220,6, 0x2a7240,3, -0x2a7400,5, +0x2a7400,1, +0x2a7408,3, 0x2a7438,1, 0x2a7444,1, -0x2a7450,4, +0x2a7450,6, 0x2a7500,7, 0x2a7520,6, 0x2a7540,6, @@ -11586,19 +14385,21 @@ 0x2a7570,1, 0x2a8000,6, 0x2a8020,3, -0x2a8030,3, +0x2a8030,1, +0x2a8038,4, 0x2a8050,1, 0x2a8100,6, 0x2a8120,10, 0x2a8150,10, 0x2a8180,10, 0x2a81b0,6, -0x2a81d0,10, +0x2a81d0,6, +0x2a81f0,2, 0x2a8400,1, 0x2a8428,1, 0x2a8450,1, 0x2a8478,1, -0x2a84a0,6, +0x2a84a0,7, 0x2a85ac,1, 0x2a85d8,4, 0x2a8600,6, @@ -11619,19 +14420,19 @@ 0x2a89d8,2, 0x2a89e4,1, 0x2a89f4,3, -0x2a9000,4, 0x2a9020,4, 0x2a9040,11, -0x2a9070,3, +0x2a9074,2, 0x2a9080,4, 0x2a90b0,22, 0x2a9110,2, 0x2a9120,22, 0x2a9180,1, 0x2a91a0,6, +0x2a91c0,8, 0x2a9200,42, 0x2a92c0,1, -0x2a92c8,3, +0x2a92c8,13, 0x2a9300,25, 0x2a936c,4, 0x2a9380,2, @@ -11640,25 +14441,26 @@ 0x2a9404,3, 0x2a9420,11, 0x2a9480,6, -0x2a9500,6, +0x2a9500,1, 0x2a9520,6, 0x2a9540,3, 0x2a9550,7, -0x2a9570,4, -0x2a9800,410, -0x2aa000,4, +0x2a9570,18, +0x2a95bc,5, +0x2a9800,448, 0x2aa020,4, 0x2aa040,11, -0x2aa070,3, +0x2aa074,2, 0x2aa080,4, 0x2aa0b0,22, 0x2aa110,2, 0x2aa120,22, 0x2aa180,1, 0x2aa1a0,6, +0x2aa1c0,8, 0x2aa200,42, 0x2aa2c0,1, -0x2aa2c8,3, +0x2aa2c8,13, 0x2aa300,25, 0x2aa36c,4, 0x2aa380,2, @@ -11667,25 +14469,26 @@ 0x2aa404,3, 0x2aa420,11, 0x2aa480,6, -0x2aa500,6, +0x2aa500,1, 0x2aa520,6, 0x2aa540,3, 0x2aa550,7, -0x2aa570,4, -0x2aa800,410, -0x2ab000,4, +0x2aa570,18, +0x2aa5bc,5, +0x2aa800,448, 0x2ab020,4, 0x2ab040,11, -0x2ab070,3, +0x2ab074,2, 0x2ab080,4, 0x2ab0b0,22, 0x2ab110,2, 0x2ab120,22, 0x2ab180,1, 0x2ab1a0,6, +0x2ab1c0,8, 0x2ab200,42, 0x2ab2c0,1, -0x2ab2c8,3, +0x2ab2c8,13, 0x2ab300,25, 0x2ab36c,4, 0x2ab380,2, @@ -11694,25 +14497,26 @@ 0x2ab404,3, 0x2ab420,11, 0x2ab480,6, -0x2ab500,6, +0x2ab500,1, 0x2ab520,6, 0x2ab540,3, 0x2ab550,7, -0x2ab570,4, -0x2ab800,410, -0x2ac000,4, +0x2ab570,18, +0x2ab5bc,5, +0x2ab800,448, 0x2ac020,4, 0x2ac040,11, -0x2ac070,3, +0x2ac074,2, 0x2ac080,4, 0x2ac0b0,22, 0x2ac110,2, 0x2ac120,22, 0x2ac180,1, 0x2ac1a0,6, +0x2ac1c0,8, 0x2ac200,42, 0x2ac2c0,1, -0x2ac2c8,3, +0x2ac2c8,13, 0x2ac300,25, 0x2ac36c,4, 0x2ac380,2, @@ -11721,12 +14525,13 @@ 0x2ac404,3, 0x2ac420,11, 0x2ac480,6, -0x2ac500,6, +0x2ac500,1, 0x2ac520,6, 0x2ac540,3, 0x2ac550,7, -0x2ac570,4, -0x2ac800,410, +0x2ac570,18, +0x2ac5bc,5, +0x2ac800,448, 0x2af800,5, 0x2af818,1, 0x2af854,6, @@ -11752,42 +14557,102 @@ 0x2afba4,1, 0x2afbac,2, 0x2b4000,3, -0x2b4018,4, +0x2b4018,8, 0x2b4100,56, 0x2b41f0,1, 0x2b4400,3, -0x2b4418,4, +0x2b4418,8, 0x2b4500,56, 0x2b45f0,1, -0x2b4800,5, -0x2b4820,3, +0x2b4800,3, +0x2b4810,3, +0x2b4820,6, +0x2b4880,9, +0x2b48c0,9, +0x2b4900,8, +0x2b4938,2, +0x2b4944,1, +0x2b4954,3, +0x2b4980,8, +0x2b49b8,2, +0x2b49c4,1, +0x2b49d4,3, 0x2b5000,3, -0x2b5018,4, +0x2b5018,8, 0x2b5100,56, 0x2b51f0,1, 0x2b5400,3, -0x2b5418,4, +0x2b5418,8, 0x2b5500,56, 0x2b55f0,1, -0x2b5800,5, -0x2b5820,3, +0x2b5800,3, +0x2b5810,3, +0x2b5820,6, +0x2b5880,9, +0x2b58c0,9, +0x2b5900,8, +0x2b5938,2, +0x2b5944,1, +0x2b5954,3, +0x2b5980,8, +0x2b59b8,2, +0x2b59c4,1, +0x2b59d4,3, 0x2b6004,7, 0x2b6024,1, -0x2b6034,3, +0x2b6030,4, 0x2b6300,5, -0x2b631c,1, +0x2b631c,2, 0x2b6600,10, 0x2b6630,1, -0x2b6680,10, -0x2b66b0,1, +0x2b6640,10, +0x2b6670,1, 0x2b6700,10, 0x2b6730,1, -0x2b6780,10, -0x2b67b0,1, -0x2b6800,47, -0x2b6910,14, -0x2b6e00,1, +0x2b6740,10, +0x2b6770,1, +0x2b6800,19, +0x2b6890,15, +0x2b6910,15, +0x2b6990,10, +0x2b6ab8,4, +0x2b6b00,3, +0x2b6e00,6, 0x2b7000,65, +0x2b7800,6, +0x2b7820,6, +0x2b7840,6, +0x2b7860,6, +0x2b7880,3, +0x2b7900,6, +0x2b7920,6, +0x2b7940,6, +0x2b7960,6, +0x2b7980,3, +0x2b7a00,6, +0x2b7a20,3, +0x2b7a40,7, +0x2b7a80,7, +0x2b7ac0,9, +0x2b7b00,9, +0x2b7b40,10, +0x2b7b80,10, +0x2b7bc0,10, +0x2b7c00,10, +0x2b7c40,10, +0x2b7c80,10, +0x2b7cc0,3, +0x2b7e40,7, +0x2b7e60,7, +0x2b7e80,7, +0x2b7ea0,7, +0x2b7ec0,7, +0x2b7ee0,7, +0x2b7f00,7, +0x2b7f20,7, +0x2b7f40,7, +0x2b7f60,4, +0x2b7f78,13, 0x2b8000,2, 0x2b800c,3, 0x2b8028,2, @@ -11816,7 +14681,7 @@ 0x2b9828,3, 0x2b9850,3, 0x2b9878,3, -0x2b98a0,7, +0x2b98a0,8, 0x2b99ac,1, 0x2b99d8,4, 0x2b9a00,6, @@ -11880,9 +14745,9 @@ 0x2c0c80,13, 0x2c0cc0,12, 0x2c0d00,14, -0x2c0d40,2, +0x2c0d40,4, 0x2c0d80,14, -0x2c0dc0,2, +0x2c0dc0,4, 0x2c0e00,11, 0x2c0e40,6, 0x2c0e60,6, @@ -11894,32 +14759,34 @@ 0x2c1050,3, 0x2c1080,42, 0x2c1140,10, -0x2c1180,3, -0x2c1190,2, +0x2c1180,1, 0x2c119c,15, -0x2c1200,9, +0x2c1200,12, 0x2c1300,1, 0x2c1308,6, 0x2c1324,10, 0x2c1380,1, 0x2c1388,6, 0x2c13a4,10, -0x2c1400,6, -0x2c1420,6, -0x2c1500,5, -0x2c1520,4, -0x2c1540,5, -0x2c1560,4, -0x2c1800,24, +0x2c1400,7, +0x2c1420,7, +0x2c1500,12, +0x2c1540,12, +0x2c1580,4, +0x2c1800,14, +0x2c183c,9, 0x2c1864,6, -0x2c1880,8, -0x2c1900,24, +0x2c1880,2, +0x2c1890,4, +0x2c1900,14, +0x2c193c,9, 0x2c1964,6, -0x2c1980,8, -0x2c1a00,17, -0x2c1a48,6, -0x2c1a80,17, -0x2c1ac8,6, +0x2c1980,2, +0x2c1990,4, +0x2c1a00,16, +0x2c1a50,4, +0x2c1a80,16, +0x2c1ad0,4, 0x2c1b00,6, 0x2c1b20,6, 0x2c1b40,3, @@ -11948,6 +14815,7 @@ 0x2c1ec0,7, 0x2c1ee0,7, 0x2c1f00,12, +0x2c1f34,2, 0x2c1f40,3, 0x2c1f50,8, 0x2c2000,4, @@ -12000,9 +14868,9 @@ 0x2c2c80,13, 0x2c2cc0,12, 0x2c2d00,14, -0x2c2d40,2, +0x2c2d40,4, 0x2c2d80,14, -0x2c2dc0,2, +0x2c2dc0,4, 0x2c2e00,11, 0x2c2e40,6, 0x2c2e60,6, @@ -12014,32 +14882,34 @@ 0x2c3050,3, 0x2c3080,42, 0x2c3140,10, -0x2c3180,3, -0x2c3190,2, +0x2c3180,1, 0x2c319c,15, -0x2c3200,9, +0x2c3200,12, 0x2c3300,1, 0x2c3308,6, 0x2c3324,10, 0x2c3380,1, 0x2c3388,6, 0x2c33a4,10, -0x2c3400,6, -0x2c3420,6, -0x2c3500,5, -0x2c3520,4, -0x2c3540,5, -0x2c3560,4, -0x2c3800,24, +0x2c3400,7, +0x2c3420,7, +0x2c3500,12, +0x2c3540,12, +0x2c3580,4, +0x2c3800,14, +0x2c383c,9, 0x2c3864,6, -0x2c3880,8, -0x2c3900,24, +0x2c3880,2, +0x2c3890,4, +0x2c3900,14, +0x2c393c,9, 0x2c3964,6, -0x2c3980,8, -0x2c3a00,17, -0x2c3a48,6, -0x2c3a80,17, -0x2c3ac8,6, +0x2c3980,2, +0x2c3990,4, +0x2c3a00,16, +0x2c3a50,4, +0x2c3a80,16, +0x2c3ad0,4, 0x2c3b00,6, 0x2c3b20,6, 0x2c3b40,3, @@ -12068,48 +14938,39 @@ 0x2c3ec0,7, 0x2c3ee0,7, 0x2c3f00,12, +0x2c3f34,2, 0x2c3f40,3, 0x2c3f50,8, 0x2c4000,29, 0x2c4078,4, 0x2c4090,2, -0x2c40a0,2, -0x2c40b0,3, +0x2c40a0,7, 0x2c40c0,11, 0x2c4100,14, 0x2c4140,14, 0x2c4180,61, 0x2c4278,4, 0x2c4290,2, -0x2c42a0,2, -0x2c42b0,3, +0x2c42a0,7, 0x2c42c0,11, 0x2c4300,14, 0x2c4340,14, 0x2c4380,61, 0x2c4478,4, 0x2c4490,2, -0x2c44a0,2, -0x2c44b0,3, +0x2c44a0,7, 0x2c44c0,11, 0x2c4500,14, 0x2c4540,14, 0x2c4580,61, 0x2c4678,4, 0x2c4690,2, -0x2c46a0,2, -0x2c46b0,3, +0x2c46a0,7, 0x2c46c0,11, 0x2c4700,14, 0x2c4740,14, 0x2c4780,62, -0x2c487c,1, -0x2c4a00,8, -0x2c4a24,15, -0x2c4a64,23, -0x2c4ac4,6, -0x2c4b00,4, -0x2c4b20,3, +0x2c487c,6, 0x2c4c00,6, 0x2c4c40,14, 0x2c4c80,9, @@ -12134,43 +14995,33 @@ 0x2c5000,29, 0x2c5078,4, 0x2c5090,2, -0x2c50a0,2, -0x2c50b0,3, +0x2c50a0,7, 0x2c50c0,11, 0x2c5100,14, 0x2c5140,14, 0x2c5180,61, 0x2c5278,4, 0x2c5290,2, -0x2c52a0,2, -0x2c52b0,3, +0x2c52a0,7, 0x2c52c0,11, 0x2c5300,14, 0x2c5340,14, 0x2c5380,61, 0x2c5478,4, 0x2c5490,2, -0x2c54a0,2, -0x2c54b0,3, +0x2c54a0,7, 0x2c54c0,11, 0x2c5500,14, 0x2c5540,14, 0x2c5580,61, 0x2c5678,4, 0x2c5690,2, -0x2c56a0,2, -0x2c56b0,3, +0x2c56a0,7, 0x2c56c0,11, 0x2c5700,14, 0x2c5740,14, 0x2c5780,62, -0x2c587c,1, -0x2c5a00,8, -0x2c5a24,15, -0x2c5a64,23, -0x2c5ac4,6, -0x2c5b00,4, -0x2c5b20,3, +0x2c587c,6, 0x2c5c00,6, 0x2c5c40,14, 0x2c5c80,9, @@ -12206,8 +15057,7 @@ 0x2c6424,15, 0x2c6464,15, 0x2c64a4,15, -0x2c64e4,23, -0x2c6544,6, +0x2c64e4,30, 0x2c6580,10, 0x2c65ac,1, 0x2c65b4,5, @@ -12215,7 +15065,8 @@ 0x2c65d4,5, 0x2c65ec,1, 0x2c65f4,13, -0x2c6680,7, +0x2c6680,4, +0x2c6694,2, 0x2c66a0,5, 0x2c66c0,5, 0x2c66e0,4, @@ -12251,10 +15102,11 @@ 0x2c7200,6, 0x2c7220,6, 0x2c7240,3, -0x2c7400,5, +0x2c7400,1, +0x2c7408,3, 0x2c7438,1, 0x2c7444,1, -0x2c7450,4, +0x2c7450,6, 0x2c7500,7, 0x2c7520,6, 0x2c7540,6, @@ -12262,19 +15114,21 @@ 0x2c7570,1, 0x2c8000,6, 0x2c8020,3, -0x2c8030,3, +0x2c8030,1, +0x2c8038,4, 0x2c8050,1, 0x2c8100,6, 0x2c8120,10, 0x2c8150,10, 0x2c8180,10, 0x2c81b0,6, -0x2c81d0,10, +0x2c81d0,6, +0x2c81f0,2, 0x2c8400,1, 0x2c8428,1, 0x2c8450,1, 0x2c8478,1, -0x2c84a0,6, +0x2c84a0,7, 0x2c85ac,1, 0x2c85d8,4, 0x2c8600,6, @@ -12295,19 +15149,19 @@ 0x2c89d8,2, 0x2c89e4,1, 0x2c89f4,3, -0x2c9000,4, 0x2c9020,4, 0x2c9040,11, -0x2c9070,3, +0x2c9074,2, 0x2c9080,4, 0x2c90b0,22, 0x2c9110,2, 0x2c9120,22, 0x2c9180,1, 0x2c91a0,6, +0x2c91c0,8, 0x2c9200,42, 0x2c92c0,1, -0x2c92c8,3, +0x2c92c8,13, 0x2c9300,25, 0x2c936c,4, 0x2c9380,2, @@ -12316,25 +15170,26 @@ 0x2c9404,3, 0x2c9420,11, 0x2c9480,6, -0x2c9500,6, +0x2c9500,1, 0x2c9520,6, 0x2c9540,3, 0x2c9550,7, -0x2c9570,4, -0x2c9800,410, -0x2ca000,4, +0x2c9570,18, +0x2c95bc,5, +0x2c9800,448, 0x2ca020,4, 0x2ca040,11, -0x2ca070,3, +0x2ca074,2, 0x2ca080,4, 0x2ca0b0,22, 0x2ca110,2, 0x2ca120,22, 0x2ca180,1, 0x2ca1a0,6, +0x2ca1c0,8, 0x2ca200,42, 0x2ca2c0,1, -0x2ca2c8,3, +0x2ca2c8,13, 0x2ca300,25, 0x2ca36c,4, 0x2ca380,2, @@ -12343,25 +15198,26 @@ 0x2ca404,3, 0x2ca420,11, 0x2ca480,6, -0x2ca500,6, +0x2ca500,1, 0x2ca520,6, 0x2ca540,3, 0x2ca550,7, -0x2ca570,4, -0x2ca800,410, -0x2cb000,4, +0x2ca570,18, +0x2ca5bc,5, +0x2ca800,448, 0x2cb020,4, 0x2cb040,11, -0x2cb070,3, +0x2cb074,2, 0x2cb080,4, 0x2cb0b0,22, 0x2cb110,2, 0x2cb120,22, 0x2cb180,1, 0x2cb1a0,6, +0x2cb1c0,8, 0x2cb200,42, 0x2cb2c0,1, -0x2cb2c8,3, +0x2cb2c8,13, 0x2cb300,25, 0x2cb36c,4, 0x2cb380,2, @@ -12370,25 +15226,26 @@ 0x2cb404,3, 0x2cb420,11, 0x2cb480,6, -0x2cb500,6, +0x2cb500,1, 0x2cb520,6, 0x2cb540,3, 0x2cb550,7, -0x2cb570,4, -0x2cb800,410, -0x2cc000,4, +0x2cb570,18, +0x2cb5bc,5, +0x2cb800,448, 0x2cc020,4, 0x2cc040,11, -0x2cc070,3, +0x2cc074,2, 0x2cc080,4, 0x2cc0b0,22, 0x2cc110,2, 0x2cc120,22, 0x2cc180,1, 0x2cc1a0,6, +0x2cc1c0,8, 0x2cc200,42, 0x2cc2c0,1, -0x2cc2c8,3, +0x2cc2c8,13, 0x2cc300,25, 0x2cc36c,4, 0x2cc380,2, @@ -12397,12 +15254,13 @@ 0x2cc404,3, 0x2cc420,11, 0x2cc480,6, -0x2cc500,6, +0x2cc500,1, 0x2cc520,6, 0x2cc540,3, 0x2cc550,7, -0x2cc570,4, -0x2cc800,410, +0x2cc570,18, +0x2cc5bc,5, +0x2cc800,448, 0x2cf800,5, 0x2cf818,1, 0x2cf854,6, @@ -12428,42 +15286,102 @@ 0x2cfba4,1, 0x2cfbac,2, 0x2d4000,3, -0x2d4018,4, +0x2d4018,8, 0x2d4100,56, 0x2d41f0,1, 0x2d4400,3, -0x2d4418,4, +0x2d4418,8, 0x2d4500,56, 0x2d45f0,1, -0x2d4800,5, -0x2d4820,3, +0x2d4800,3, +0x2d4810,3, +0x2d4820,6, +0x2d4880,9, +0x2d48c0,9, +0x2d4900,8, +0x2d4938,2, +0x2d4944,1, +0x2d4954,3, +0x2d4980,8, +0x2d49b8,2, +0x2d49c4,1, +0x2d49d4,3, 0x2d5000,3, -0x2d5018,4, +0x2d5018,8, 0x2d5100,56, 0x2d51f0,1, 0x2d5400,3, -0x2d5418,4, +0x2d5418,8, 0x2d5500,56, 0x2d55f0,1, -0x2d5800,5, -0x2d5820,3, +0x2d5800,3, +0x2d5810,3, +0x2d5820,6, +0x2d5880,9, +0x2d58c0,9, +0x2d5900,8, +0x2d5938,2, +0x2d5944,1, +0x2d5954,3, +0x2d5980,8, +0x2d59b8,2, +0x2d59c4,1, +0x2d59d4,3, 0x2d6004,7, 0x2d6024,1, -0x2d6034,3, +0x2d6030,4, 0x2d6300,5, -0x2d631c,1, +0x2d631c,2, 0x2d6600,10, 0x2d6630,1, -0x2d6680,10, -0x2d66b0,1, +0x2d6640,10, +0x2d6670,1, 0x2d6700,10, 0x2d6730,1, -0x2d6780,10, -0x2d67b0,1, -0x2d6800,47, -0x2d6910,14, -0x2d6e00,1, +0x2d6740,10, +0x2d6770,1, +0x2d6800,19, +0x2d6890,15, +0x2d6910,15, +0x2d6990,10, +0x2d6ab8,4, +0x2d6b00,3, +0x2d6e00,6, 0x2d7000,65, +0x2d7800,6, +0x2d7820,6, +0x2d7840,6, +0x2d7860,6, +0x2d7880,3, +0x2d7900,6, +0x2d7920,6, +0x2d7940,6, +0x2d7960,6, +0x2d7980,3, +0x2d7a00,6, +0x2d7a20,3, +0x2d7a40,7, +0x2d7a80,7, +0x2d7ac0,9, +0x2d7b00,9, +0x2d7b40,10, +0x2d7b80,10, +0x2d7bc0,10, +0x2d7c00,10, +0x2d7c40,10, +0x2d7c80,10, +0x2d7cc0,3, +0x2d7e40,7, +0x2d7e60,7, +0x2d7e80,7, +0x2d7ea0,7, +0x2d7ec0,7, +0x2d7ee0,7, +0x2d7f00,7, +0x2d7f20,7, +0x2d7f40,7, +0x2d7f60,4, +0x2d7f78,13, 0x2d8000,2, 0x2d800c,3, 0x2d8028,2, @@ -12492,7 +15410,7 @@ 0x2d9828,3, 0x2d9850,3, 0x2d9878,3, -0x2d98a0,7, +0x2d98a0,8, 0x2d99ac,1, 0x2d99d8,4, 0x2d9a00,6, @@ -12556,9 +15474,9 @@ 0x2e0c80,13, 0x2e0cc0,12, 0x2e0d00,14, -0x2e0d40,2, +0x2e0d40,4, 0x2e0d80,14, -0x2e0dc0,2, +0x2e0dc0,4, 0x2e0e00,11, 0x2e0e40,6, 0x2e0e60,6, @@ -12570,32 +15488,34 @@ 0x2e1050,3, 0x2e1080,42, 0x2e1140,10, -0x2e1180,3, -0x2e1190,2, +0x2e1180,1, 0x2e119c,15, -0x2e1200,9, +0x2e1200,12, 0x2e1300,1, 0x2e1308,6, 0x2e1324,10, 0x2e1380,1, 0x2e1388,6, 0x2e13a4,10, -0x2e1400,6, -0x2e1420,6, -0x2e1500,5, -0x2e1520,4, -0x2e1540,5, -0x2e1560,4, -0x2e1800,24, +0x2e1400,7, +0x2e1420,7, +0x2e1500,12, +0x2e1540,12, +0x2e1580,4, +0x2e1800,14, +0x2e183c,9, 0x2e1864,6, -0x2e1880,8, -0x2e1900,24, +0x2e1880,2, +0x2e1890,4, +0x2e1900,14, +0x2e193c,9, 0x2e1964,6, -0x2e1980,8, -0x2e1a00,17, -0x2e1a48,6, -0x2e1a80,17, -0x2e1ac8,6, +0x2e1980,2, +0x2e1990,4, +0x2e1a00,16, +0x2e1a50,4, +0x2e1a80,16, +0x2e1ad0,4, 0x2e1b00,6, 0x2e1b20,6, 0x2e1b40,3, @@ -12624,6 +15544,7 @@ 0x2e1ec0,7, 0x2e1ee0,7, 0x2e1f00,12, +0x2e1f34,2, 0x2e1f40,3, 0x2e1f50,8, 0x2e2000,4, @@ -12676,9 +15597,9 @@ 0x2e2c80,13, 0x2e2cc0,12, 0x2e2d00,14, -0x2e2d40,2, +0x2e2d40,4, 0x2e2d80,14, -0x2e2dc0,2, +0x2e2dc0,4, 0x2e2e00,11, 0x2e2e40,6, 0x2e2e60,6, @@ -12690,32 +15611,34 @@ 0x2e3050,3, 0x2e3080,42, 0x2e3140,10, -0x2e3180,3, -0x2e3190,2, +0x2e3180,1, 0x2e319c,15, -0x2e3200,9, +0x2e3200,12, 0x2e3300,1, 0x2e3308,6, 0x2e3324,10, 0x2e3380,1, 0x2e3388,6, 0x2e33a4,10, -0x2e3400,6, -0x2e3420,6, -0x2e3500,5, -0x2e3520,4, -0x2e3540,5, -0x2e3560,4, -0x2e3800,24, +0x2e3400,7, +0x2e3420,7, +0x2e3500,12, +0x2e3540,12, +0x2e3580,4, +0x2e3800,14, +0x2e383c,9, 0x2e3864,6, -0x2e3880,8, -0x2e3900,24, +0x2e3880,2, +0x2e3890,4, +0x2e3900,14, +0x2e393c,9, 0x2e3964,6, -0x2e3980,8, -0x2e3a00,17, -0x2e3a48,6, -0x2e3a80,17, -0x2e3ac8,6, +0x2e3980,2, +0x2e3990,4, +0x2e3a00,16, +0x2e3a50,4, +0x2e3a80,16, +0x2e3ad0,4, 0x2e3b00,6, 0x2e3b20,6, 0x2e3b40,3, @@ -12744,48 +15667,39 @@ 0x2e3ec0,7, 0x2e3ee0,7, 0x2e3f00,12, +0x2e3f34,2, 0x2e3f40,3, 0x2e3f50,8, 0x2e4000,29, 0x2e4078,4, 0x2e4090,2, -0x2e40a0,2, -0x2e40b0,3, +0x2e40a0,7, 0x2e40c0,11, 0x2e4100,14, 0x2e4140,14, 0x2e4180,61, 0x2e4278,4, 0x2e4290,2, -0x2e42a0,2, -0x2e42b0,3, +0x2e42a0,7, 0x2e42c0,11, 0x2e4300,14, 0x2e4340,14, 0x2e4380,61, 0x2e4478,4, 0x2e4490,2, -0x2e44a0,2, -0x2e44b0,3, +0x2e44a0,7, 0x2e44c0,11, 0x2e4500,14, 0x2e4540,14, 0x2e4580,61, 0x2e4678,4, 0x2e4690,2, -0x2e46a0,2, -0x2e46b0,3, +0x2e46a0,7, 0x2e46c0,11, 0x2e4700,14, 0x2e4740,14, 0x2e4780,62, -0x2e487c,1, -0x2e4a00,8, -0x2e4a24,15, -0x2e4a64,23, -0x2e4ac4,6, -0x2e4b00,4, -0x2e4b20,3, +0x2e487c,6, 0x2e4c00,6, 0x2e4c40,14, 0x2e4c80,9, @@ -12810,43 +15724,33 @@ 0x2e5000,29, 0x2e5078,4, 0x2e5090,2, -0x2e50a0,2, -0x2e50b0,3, +0x2e50a0,7, 0x2e50c0,11, 0x2e5100,14, 0x2e5140,14, 0x2e5180,61, 0x2e5278,4, 0x2e5290,2, -0x2e52a0,2, -0x2e52b0,3, +0x2e52a0,7, 0x2e52c0,11, 0x2e5300,14, 0x2e5340,14, 0x2e5380,61, 0x2e5478,4, 0x2e5490,2, -0x2e54a0,2, -0x2e54b0,3, +0x2e54a0,7, 0x2e54c0,11, 0x2e5500,14, 0x2e5540,14, 0x2e5580,61, 0x2e5678,4, 0x2e5690,2, -0x2e56a0,2, -0x2e56b0,3, +0x2e56a0,7, 0x2e56c0,11, 0x2e5700,14, 0x2e5740,14, 0x2e5780,62, -0x2e587c,1, -0x2e5a00,8, -0x2e5a24,15, -0x2e5a64,23, -0x2e5ac4,6, -0x2e5b00,4, -0x2e5b20,3, +0x2e587c,6, 0x2e5c00,6, 0x2e5c40,14, 0x2e5c80,9, @@ -12882,8 +15786,7 @@ 0x2e6424,15, 0x2e6464,15, 0x2e64a4,15, -0x2e64e4,23, -0x2e6544,6, +0x2e64e4,30, 0x2e6580,10, 0x2e65ac,1, 0x2e65b4,5, @@ -12891,7 +15794,8 @@ 0x2e65d4,5, 0x2e65ec,1, 0x2e65f4,13, -0x2e6680,7, +0x2e6680,4, +0x2e6694,2, 0x2e66a0,5, 0x2e66c0,5, 0x2e66e0,4, @@ -12927,10 +15831,11 @@ 0x2e7200,6, 0x2e7220,6, 0x2e7240,3, -0x2e7400,5, +0x2e7400,1, +0x2e7408,3, 0x2e7438,1, 0x2e7444,1, -0x2e7450,4, +0x2e7450,6, 0x2e7500,7, 0x2e7520,6, 0x2e7540,6, @@ -12938,19 +15843,21 @@ 0x2e7570,1, 0x2e8000,6, 0x2e8020,3, -0x2e8030,3, +0x2e8030,1, +0x2e8038,4, 0x2e8050,1, 0x2e8100,6, 0x2e8120,10, 0x2e8150,10, 0x2e8180,10, 0x2e81b0,6, -0x2e81d0,10, +0x2e81d0,6, +0x2e81f0,2, 0x2e8400,1, 0x2e8428,1, 0x2e8450,1, 0x2e8478,1, -0x2e84a0,6, +0x2e84a0,7, 0x2e85ac,1, 0x2e85d8,4, 0x2e8600,6, @@ -12971,19 +15878,19 @@ 0x2e89d8,2, 0x2e89e4,1, 0x2e89f4,3, -0x2e9000,4, 0x2e9020,4, 0x2e9040,11, -0x2e9070,3, +0x2e9074,2, 0x2e9080,4, 0x2e90b0,22, 0x2e9110,2, 0x2e9120,22, 0x2e9180,1, 0x2e91a0,6, +0x2e91c0,8, 0x2e9200,42, 0x2e92c0,1, -0x2e92c8,3, +0x2e92c8,13, 0x2e9300,25, 0x2e936c,4, 0x2e9380,2, @@ -12992,25 +15899,26 @@ 0x2e9404,3, 0x2e9420,11, 0x2e9480,6, -0x2e9500,6, +0x2e9500,1, 0x2e9520,6, 0x2e9540,3, 0x2e9550,7, -0x2e9570,4, -0x2e9800,410, -0x2ea000,4, +0x2e9570,18, +0x2e95bc,5, +0x2e9800,448, 0x2ea020,4, 0x2ea040,11, -0x2ea070,3, +0x2ea074,2, 0x2ea080,4, 0x2ea0b0,22, 0x2ea110,2, 0x2ea120,22, 0x2ea180,1, 0x2ea1a0,6, +0x2ea1c0,8, 0x2ea200,42, 0x2ea2c0,1, -0x2ea2c8,3, +0x2ea2c8,13, 0x2ea300,25, 0x2ea36c,4, 0x2ea380,2, @@ -13019,25 +15927,26 @@ 0x2ea404,3, 0x2ea420,11, 0x2ea480,6, -0x2ea500,6, +0x2ea500,1, 0x2ea520,6, 0x2ea540,3, 0x2ea550,7, -0x2ea570,4, -0x2ea800,410, -0x2eb000,4, +0x2ea570,18, +0x2ea5bc,5, +0x2ea800,448, 0x2eb020,4, 0x2eb040,11, -0x2eb070,3, +0x2eb074,2, 0x2eb080,4, 0x2eb0b0,22, 0x2eb110,2, 0x2eb120,22, 0x2eb180,1, 0x2eb1a0,6, +0x2eb1c0,8, 0x2eb200,42, 0x2eb2c0,1, -0x2eb2c8,3, +0x2eb2c8,13, 0x2eb300,25, 0x2eb36c,4, 0x2eb380,2, @@ -13046,25 +15955,26 @@ 0x2eb404,3, 0x2eb420,11, 0x2eb480,6, -0x2eb500,6, +0x2eb500,1, 0x2eb520,6, 0x2eb540,3, 0x2eb550,7, -0x2eb570,4, -0x2eb800,410, -0x2ec000,4, +0x2eb570,18, +0x2eb5bc,5, +0x2eb800,448, 0x2ec020,4, 0x2ec040,11, -0x2ec070,3, +0x2ec074,2, 0x2ec080,4, 0x2ec0b0,22, 0x2ec110,2, 0x2ec120,22, 0x2ec180,1, 0x2ec1a0,6, +0x2ec1c0,8, 0x2ec200,42, 0x2ec2c0,1, -0x2ec2c8,3, +0x2ec2c8,13, 0x2ec300,25, 0x2ec36c,4, 0x2ec380,2, @@ -13073,12 +15983,13 @@ 0x2ec404,3, 0x2ec420,11, 0x2ec480,6, -0x2ec500,6, +0x2ec500,1, 0x2ec520,6, 0x2ec540,3, 0x2ec550,7, -0x2ec570,4, -0x2ec800,410, +0x2ec570,18, +0x2ec5bc,5, +0x2ec800,448, 0x2ef800,5, 0x2ef818,1, 0x2ef854,6, @@ -13104,42 +16015,102 @@ 0x2efba4,1, 0x2efbac,2, 0x2f4000,3, -0x2f4018,4, +0x2f4018,8, 0x2f4100,56, 0x2f41f0,1, 0x2f4400,3, -0x2f4418,4, +0x2f4418,8, 0x2f4500,56, 0x2f45f0,1, -0x2f4800,5, -0x2f4820,3, +0x2f4800,3, +0x2f4810,3, +0x2f4820,6, +0x2f4880,9, +0x2f48c0,9, +0x2f4900,8, +0x2f4938,2, +0x2f4944,1, +0x2f4954,3, +0x2f4980,8, +0x2f49b8,2, +0x2f49c4,1, +0x2f49d4,3, 0x2f5000,3, -0x2f5018,4, +0x2f5018,8, 0x2f5100,56, 0x2f51f0,1, 0x2f5400,3, -0x2f5418,4, +0x2f5418,8, 0x2f5500,56, 0x2f55f0,1, -0x2f5800,5, -0x2f5820,3, +0x2f5800,3, +0x2f5810,3, +0x2f5820,6, +0x2f5880,9, +0x2f58c0,9, +0x2f5900,8, +0x2f5938,2, +0x2f5944,1, +0x2f5954,3, +0x2f5980,8, +0x2f59b8,2, +0x2f59c4,1, +0x2f59d4,3, 0x2f6004,7, 0x2f6024,1, -0x2f6034,3, +0x2f6030,4, 0x2f6300,5, -0x2f631c,1, +0x2f631c,2, 0x2f6600,10, 0x2f6630,1, -0x2f6680,10, -0x2f66b0,1, +0x2f6640,10, +0x2f6670,1, 0x2f6700,10, 0x2f6730,1, -0x2f6780,10, -0x2f67b0,1, -0x2f6800,47, -0x2f6910,14, -0x2f6e00,1, +0x2f6740,10, +0x2f6770,1, +0x2f6800,19, +0x2f6890,15, +0x2f6910,15, +0x2f6990,10, +0x2f6ab8,4, +0x2f6b00,3, +0x2f6e00,6, 0x2f7000,65, +0x2f7800,6, +0x2f7820,6, +0x2f7840,6, +0x2f7860,6, +0x2f7880,3, +0x2f7900,6, +0x2f7920,6, +0x2f7940,6, +0x2f7960,6, +0x2f7980,3, +0x2f7a00,6, +0x2f7a20,3, +0x2f7a40,7, +0x2f7a80,7, +0x2f7ac0,9, +0x2f7b00,9, +0x2f7b40,10, +0x2f7b80,10, +0x2f7bc0,10, +0x2f7c00,10, +0x2f7c40,10, +0x2f7c80,10, +0x2f7cc0,3, +0x2f7e40,7, +0x2f7e60,7, +0x2f7e80,7, +0x2f7ea0,7, +0x2f7ec0,7, +0x2f7ee0,7, +0x2f7f00,7, +0x2f7f20,7, +0x2f7f40,7, +0x2f7f60,4, +0x2f7f78,13, 0x2f8000,2, 0x2f800c,3, 0x2f8028,2, @@ -13168,7 +16139,7 @@ 0x2f9828,3, 0x2f9850,3, 0x2f9878,3, -0x2f98a0,7, +0x2f98a0,8, 0x2f99ac,1, 0x2f99d8,4, 0x2f9a00,6, @@ -13232,9 +16203,9 @@ 0x300c80,13, 0x300cc0,12, 0x300d00,14, -0x300d40,2, +0x300d40,4, 0x300d80,14, -0x300dc0,2, +0x300dc0,4, 0x300e00,11, 0x300e40,6, 0x300e60,6, @@ -13246,32 +16217,34 @@ 0x301050,3, 0x301080,42, 0x301140,10, -0x301180,3, -0x301190,2, +0x301180,1, 0x30119c,15, -0x301200,9, +0x301200,12, 0x301300,1, 0x301308,6, 0x301324,10, 0x301380,1, 0x301388,6, 0x3013a4,10, -0x301400,6, -0x301420,6, -0x301500,5, -0x301520,4, -0x301540,5, -0x301560,4, -0x301800,24, +0x301400,7, +0x301420,7, +0x301500,12, +0x301540,12, +0x301580,4, +0x301800,14, +0x30183c,9, 0x301864,6, -0x301880,8, -0x301900,24, +0x301880,2, +0x301890,4, +0x301900,14, +0x30193c,9, 0x301964,6, -0x301980,8, -0x301a00,17, -0x301a48,6, -0x301a80,17, -0x301ac8,6, +0x301980,2, +0x301990,4, +0x301a00,16, +0x301a50,4, +0x301a80,16, +0x301ad0,4, 0x301b00,6, 0x301b20,6, 0x301b40,3, @@ -13300,6 +16273,7 @@ 0x301ec0,7, 0x301ee0,7, 0x301f00,12, +0x301f34,2, 0x301f40,3, 0x301f50,8, 0x302000,4, @@ -13352,9 +16326,9 @@ 0x302c80,13, 0x302cc0,12, 0x302d00,14, -0x302d40,2, +0x302d40,4, 0x302d80,14, -0x302dc0,2, +0x302dc0,4, 0x302e00,11, 0x302e40,6, 0x302e60,6, @@ -13366,32 +16340,34 @@ 0x303050,3, 0x303080,42, 0x303140,10, -0x303180,3, -0x303190,2, +0x303180,1, 0x30319c,15, -0x303200,9, +0x303200,12, 0x303300,1, 0x303308,6, 0x303324,10, 0x303380,1, 0x303388,6, 0x3033a4,10, -0x303400,6, -0x303420,6, -0x303500,5, -0x303520,4, -0x303540,5, -0x303560,4, -0x303800,24, +0x303400,7, +0x303420,7, +0x303500,12, +0x303540,12, +0x303580,4, +0x303800,14, +0x30383c,9, 0x303864,6, -0x303880,8, -0x303900,24, +0x303880,2, +0x303890,4, +0x303900,14, +0x30393c,9, 0x303964,6, -0x303980,8, -0x303a00,17, -0x303a48,6, -0x303a80,17, -0x303ac8,6, +0x303980,2, +0x303990,4, +0x303a00,16, +0x303a50,4, +0x303a80,16, +0x303ad0,4, 0x303b00,6, 0x303b20,6, 0x303b40,3, @@ -13420,48 +16396,39 @@ 0x303ec0,7, 0x303ee0,7, 0x303f00,12, +0x303f34,2, 0x303f40,3, 0x303f50,8, 0x304000,29, 0x304078,4, 0x304090,2, -0x3040a0,2, -0x3040b0,3, +0x3040a0,7, 0x3040c0,11, 0x304100,14, 0x304140,14, 0x304180,61, 0x304278,4, 0x304290,2, -0x3042a0,2, -0x3042b0,3, +0x3042a0,7, 0x3042c0,11, 0x304300,14, 0x304340,14, 0x304380,61, 0x304478,4, 0x304490,2, -0x3044a0,2, -0x3044b0,3, +0x3044a0,7, 0x3044c0,11, 0x304500,14, 0x304540,14, 0x304580,61, 0x304678,4, 0x304690,2, -0x3046a0,2, -0x3046b0,3, +0x3046a0,7, 0x3046c0,11, 0x304700,14, 0x304740,14, 0x304780,62, -0x30487c,1, -0x304a00,8, -0x304a24,15, -0x304a64,23, -0x304ac4,6, -0x304b00,4, -0x304b20,3, +0x30487c,6, 0x304c00,6, 0x304c40,14, 0x304c80,9, @@ -13486,43 +16453,33 @@ 0x305000,29, 0x305078,4, 0x305090,2, -0x3050a0,2, -0x3050b0,3, +0x3050a0,7, 0x3050c0,11, 0x305100,14, 0x305140,14, 0x305180,61, 0x305278,4, 0x305290,2, -0x3052a0,2, -0x3052b0,3, +0x3052a0,7, 0x3052c0,11, 0x305300,14, 0x305340,14, 0x305380,61, 0x305478,4, 0x305490,2, -0x3054a0,2, -0x3054b0,3, +0x3054a0,7, 0x3054c0,11, 0x305500,14, 0x305540,14, 0x305580,61, 0x305678,4, 0x305690,2, -0x3056a0,2, -0x3056b0,3, +0x3056a0,7, 0x3056c0,11, 0x305700,14, 0x305740,14, 0x305780,62, -0x30587c,1, -0x305a00,8, -0x305a24,15, -0x305a64,23, -0x305ac4,6, -0x305b00,4, -0x305b20,3, +0x30587c,6, 0x305c00,6, 0x305c40,14, 0x305c80,9, @@ -13558,8 +16515,7 @@ 0x306424,15, 0x306464,15, 0x3064a4,15, -0x3064e4,23, -0x306544,6, +0x3064e4,30, 0x306580,10, 0x3065ac,1, 0x3065b4,5, @@ -13567,7 +16523,8 @@ 0x3065d4,5, 0x3065ec,1, 0x3065f4,13, -0x306680,7, +0x306680,4, +0x306694,2, 0x3066a0,5, 0x3066c0,5, 0x3066e0,4, @@ -13603,10 +16560,11 @@ 0x307200,6, 0x307220,6, 0x307240,3, -0x307400,5, +0x307400,1, +0x307408,3, 0x307438,1, 0x307444,1, -0x307450,4, +0x307450,6, 0x307500,7, 0x307520,6, 0x307540,6, @@ -13614,19 +16572,21 @@ 0x307570,1, 0x308000,6, 0x308020,3, -0x308030,3, +0x308030,1, +0x308038,4, 0x308050,1, 0x308100,6, 0x308120,10, 0x308150,10, 0x308180,10, 0x3081b0,6, -0x3081d0,10, +0x3081d0,6, +0x3081f0,2, 0x308400,1, 0x308428,1, 0x308450,1, 0x308478,1, -0x3084a0,6, +0x3084a0,7, 0x3085ac,1, 0x3085d8,4, 0x308600,6, @@ -13647,19 +16607,19 @@ 0x3089d8,2, 0x3089e4,1, 0x3089f4,3, -0x309000,4, 0x309020,4, 0x309040,11, -0x309070,3, +0x309074,2, 0x309080,4, 0x3090b0,22, 0x309110,2, 0x309120,22, 0x309180,1, 0x3091a0,6, +0x3091c0,8, 0x309200,42, 0x3092c0,1, -0x3092c8,3, +0x3092c8,13, 0x309300,25, 0x30936c,4, 0x309380,2, @@ -13668,25 +16628,26 @@ 0x309404,3, 0x309420,11, 0x309480,6, -0x309500,6, +0x309500,1, 0x309520,6, 0x309540,3, 0x309550,7, -0x309570,4, -0x309800,410, -0x30a000,4, +0x309570,18, +0x3095bc,5, +0x309800,448, 0x30a020,4, 0x30a040,11, -0x30a070,3, +0x30a074,2, 0x30a080,4, 0x30a0b0,22, 0x30a110,2, 0x30a120,22, 0x30a180,1, 0x30a1a0,6, +0x30a1c0,8, 0x30a200,42, 0x30a2c0,1, -0x30a2c8,3, +0x30a2c8,13, 0x30a300,25, 0x30a36c,4, 0x30a380,2, @@ -13695,25 +16656,26 @@ 0x30a404,3, 0x30a420,11, 0x30a480,6, -0x30a500,6, +0x30a500,1, 0x30a520,6, 0x30a540,3, 0x30a550,7, -0x30a570,4, -0x30a800,410, -0x30b000,4, +0x30a570,18, +0x30a5bc,5, +0x30a800,448, 0x30b020,4, 0x30b040,11, -0x30b070,3, +0x30b074,2, 0x30b080,4, 0x30b0b0,22, 0x30b110,2, 0x30b120,22, 0x30b180,1, 0x30b1a0,6, +0x30b1c0,8, 0x30b200,42, 0x30b2c0,1, -0x30b2c8,3, +0x30b2c8,13, 0x30b300,25, 0x30b36c,4, 0x30b380,2, @@ -13722,25 +16684,26 @@ 0x30b404,3, 0x30b420,11, 0x30b480,6, -0x30b500,6, +0x30b500,1, 0x30b520,6, 0x30b540,3, 0x30b550,7, -0x30b570,4, -0x30b800,410, -0x30c000,4, +0x30b570,18, +0x30b5bc,5, +0x30b800,448, 0x30c020,4, 0x30c040,11, -0x30c070,3, +0x30c074,2, 0x30c080,4, 0x30c0b0,22, 0x30c110,2, 0x30c120,22, 0x30c180,1, 0x30c1a0,6, +0x30c1c0,8, 0x30c200,42, 0x30c2c0,1, -0x30c2c8,3, +0x30c2c8,13, 0x30c300,25, 0x30c36c,4, 0x30c380,2, @@ -13749,12 +16712,13 @@ 0x30c404,3, 0x30c420,11, 0x30c480,6, -0x30c500,6, +0x30c500,1, 0x30c520,6, 0x30c540,3, 0x30c550,7, -0x30c570,4, -0x30c800,410, +0x30c570,18, +0x30c5bc,5, +0x30c800,448, 0x30f800,5, 0x30f818,1, 0x30f854,6, @@ -13780,42 +16744,102 @@ 0x30fba4,1, 0x30fbac,2, 0x314000,3, -0x314018,4, +0x314018,8, 0x314100,56, 0x3141f0,1, 0x314400,3, -0x314418,4, +0x314418,8, 0x314500,56, 0x3145f0,1, -0x314800,5, -0x314820,3, +0x314800,3, +0x314810,3, +0x314820,6, +0x314880,9, +0x3148c0,9, +0x314900,8, +0x314938,2, +0x314944,1, +0x314954,3, +0x314980,8, +0x3149b8,2, +0x3149c4,1, +0x3149d4,3, 0x315000,3, -0x315018,4, +0x315018,8, 0x315100,56, 0x3151f0,1, 0x315400,3, -0x315418,4, +0x315418,8, 0x315500,56, 0x3155f0,1, -0x315800,5, -0x315820,3, +0x315800,3, +0x315810,3, +0x315820,6, +0x315880,9, +0x3158c0,9, +0x315900,8, +0x315938,2, +0x315944,1, +0x315954,3, +0x315980,8, +0x3159b8,2, +0x3159c4,1, +0x3159d4,3, 0x316004,7, 0x316024,1, -0x316034,3, +0x316030,4, 0x316300,5, -0x31631c,1, +0x31631c,2, 0x316600,10, 0x316630,1, -0x316680,10, -0x3166b0,1, +0x316640,10, +0x316670,1, 0x316700,10, 0x316730,1, -0x316780,10, -0x3167b0,1, -0x316800,47, -0x316910,14, -0x316e00,1, +0x316740,10, +0x316770,1, +0x316800,19, +0x316890,15, +0x316910,15, +0x316990,10, +0x316ab8,4, +0x316b00,3, +0x316e00,6, 0x317000,65, +0x317800,6, +0x317820,6, +0x317840,6, +0x317860,6, +0x317880,3, +0x317900,6, +0x317920,6, +0x317940,6, +0x317960,6, +0x317980,3, +0x317a00,6, +0x317a20,3, +0x317a40,7, +0x317a80,7, +0x317ac0,9, +0x317b00,9, +0x317b40,10, +0x317b80,10, +0x317bc0,10, +0x317c00,10, +0x317c40,10, +0x317c80,10, +0x317cc0,3, +0x317e40,7, +0x317e60,7, +0x317e80,7, +0x317ea0,7, +0x317ec0,7, +0x317ee0,7, +0x317f00,7, +0x317f20,7, +0x317f40,7, +0x317f60,4, +0x317f78,13, 0x318000,2, 0x31800c,3, 0x318028,2, @@ -13844,7 +16868,7 @@ 0x319828,3, 0x319850,3, 0x319878,3, -0x3198a0,7, +0x3198a0,8, 0x3199ac,1, 0x3199d8,4, 0x319a00,6, @@ -13908,9 +16932,9 @@ 0x320c80,13, 0x320cc0,12, 0x320d00,14, -0x320d40,2, +0x320d40,4, 0x320d80,14, -0x320dc0,2, +0x320dc0,4, 0x320e00,11, 0x320e40,6, 0x320e60,6, @@ -13922,32 +16946,34 @@ 0x321050,3, 0x321080,42, 0x321140,10, -0x321180,3, -0x321190,2, +0x321180,1, 0x32119c,15, -0x321200,9, +0x321200,12, 0x321300,1, 0x321308,6, 0x321324,10, 0x321380,1, 0x321388,6, 0x3213a4,10, -0x321400,6, -0x321420,6, -0x321500,5, -0x321520,4, -0x321540,5, -0x321560,4, -0x321800,24, +0x321400,7, +0x321420,7, +0x321500,12, +0x321540,12, +0x321580,4, +0x321800,14, +0x32183c,9, 0x321864,6, -0x321880,8, -0x321900,24, +0x321880,2, +0x321890,4, +0x321900,14, +0x32193c,9, 0x321964,6, -0x321980,8, -0x321a00,17, -0x321a48,6, -0x321a80,17, -0x321ac8,6, +0x321980,2, +0x321990,4, +0x321a00,16, +0x321a50,4, +0x321a80,16, +0x321ad0,4, 0x321b00,6, 0x321b20,6, 0x321b40,3, @@ -13976,6 +17002,7 @@ 0x321ec0,7, 0x321ee0,7, 0x321f00,12, +0x321f34,2, 0x321f40,3, 0x321f50,8, 0x322000,4, @@ -14028,9 +17055,9 @@ 0x322c80,13, 0x322cc0,12, 0x322d00,14, -0x322d40,2, +0x322d40,4, 0x322d80,14, -0x322dc0,2, +0x322dc0,4, 0x322e00,11, 0x322e40,6, 0x322e60,6, @@ -14042,32 +17069,34 @@ 0x323050,3, 0x323080,42, 0x323140,10, -0x323180,3, -0x323190,2, +0x323180,1, 0x32319c,15, -0x323200,9, +0x323200,12, 0x323300,1, 0x323308,6, 0x323324,10, 0x323380,1, 0x323388,6, 0x3233a4,10, -0x323400,6, -0x323420,6, -0x323500,5, -0x323520,4, -0x323540,5, -0x323560,4, -0x323800,24, +0x323400,7, +0x323420,7, +0x323500,12, +0x323540,12, +0x323580,4, +0x323800,14, +0x32383c,9, 0x323864,6, -0x323880,8, -0x323900,24, +0x323880,2, +0x323890,4, +0x323900,14, +0x32393c,9, 0x323964,6, -0x323980,8, -0x323a00,17, -0x323a48,6, -0x323a80,17, -0x323ac8,6, +0x323980,2, +0x323990,4, +0x323a00,16, +0x323a50,4, +0x323a80,16, +0x323ad0,4, 0x323b00,6, 0x323b20,6, 0x323b40,3, @@ -14096,48 +17125,39 @@ 0x323ec0,7, 0x323ee0,7, 0x323f00,12, +0x323f34,2, 0x323f40,3, 0x323f50,8, 0x324000,29, 0x324078,4, 0x324090,2, -0x3240a0,2, -0x3240b0,3, +0x3240a0,7, 0x3240c0,11, 0x324100,14, 0x324140,14, 0x324180,61, 0x324278,4, 0x324290,2, -0x3242a0,2, -0x3242b0,3, +0x3242a0,7, 0x3242c0,11, 0x324300,14, 0x324340,14, 0x324380,61, 0x324478,4, 0x324490,2, -0x3244a0,2, -0x3244b0,3, +0x3244a0,7, 0x3244c0,11, 0x324500,14, 0x324540,14, 0x324580,61, 0x324678,4, 0x324690,2, -0x3246a0,2, -0x3246b0,3, +0x3246a0,7, 0x3246c0,11, 0x324700,14, 0x324740,14, 0x324780,62, -0x32487c,1, -0x324a00,8, -0x324a24,15, -0x324a64,23, -0x324ac4,6, -0x324b00,4, -0x324b20,3, +0x32487c,6, 0x324c00,6, 0x324c40,14, 0x324c80,9, @@ -14162,43 +17182,33 @@ 0x325000,29, 0x325078,4, 0x325090,2, -0x3250a0,2, -0x3250b0,3, +0x3250a0,7, 0x3250c0,11, 0x325100,14, 0x325140,14, 0x325180,61, 0x325278,4, 0x325290,2, -0x3252a0,2, -0x3252b0,3, +0x3252a0,7, 0x3252c0,11, 0x325300,14, 0x325340,14, 0x325380,61, 0x325478,4, 0x325490,2, -0x3254a0,2, -0x3254b0,3, +0x3254a0,7, 0x3254c0,11, 0x325500,14, 0x325540,14, 0x325580,61, 0x325678,4, 0x325690,2, -0x3256a0,2, -0x3256b0,3, +0x3256a0,7, 0x3256c0,11, 0x325700,14, 0x325740,14, 0x325780,62, -0x32587c,1, -0x325a00,8, -0x325a24,15, -0x325a64,23, -0x325ac4,6, -0x325b00,4, -0x325b20,3, +0x32587c,6, 0x325c00,6, 0x325c40,14, 0x325c80,9, @@ -14234,8 +17244,7 @@ 0x326424,15, 0x326464,15, 0x3264a4,15, -0x3264e4,23, -0x326544,6, +0x3264e4,30, 0x326580,10, 0x3265ac,1, 0x3265b4,5, @@ -14243,7 +17252,8 @@ 0x3265d4,5, 0x3265ec,1, 0x3265f4,13, -0x326680,7, +0x326680,4, +0x326694,2, 0x3266a0,5, 0x3266c0,5, 0x3266e0,4, @@ -14279,10 +17289,11 @@ 0x327200,6, 0x327220,6, 0x327240,3, -0x327400,5, +0x327400,1, +0x327408,3, 0x327438,1, 0x327444,1, -0x327450,4, +0x327450,6, 0x327500,7, 0x327520,6, 0x327540,6, @@ -14290,19 +17301,21 @@ 0x327570,1, 0x328000,6, 0x328020,3, -0x328030,3, +0x328030,1, +0x328038,4, 0x328050,1, 0x328100,6, 0x328120,10, 0x328150,10, 0x328180,10, 0x3281b0,6, -0x3281d0,10, +0x3281d0,6, +0x3281f0,2, 0x328400,1, 0x328428,1, 0x328450,1, 0x328478,1, -0x3284a0,6, +0x3284a0,7, 0x3285ac,1, 0x3285d8,4, 0x328600,6, @@ -14323,19 +17336,19 @@ 0x3289d8,2, 0x3289e4,1, 0x3289f4,3, -0x329000,4, 0x329020,4, 0x329040,11, -0x329070,3, +0x329074,2, 0x329080,4, 0x3290b0,22, 0x329110,2, 0x329120,22, 0x329180,1, 0x3291a0,6, +0x3291c0,8, 0x329200,42, 0x3292c0,1, -0x3292c8,3, +0x3292c8,13, 0x329300,25, 0x32936c,4, 0x329380,2, @@ -14344,25 +17357,26 @@ 0x329404,3, 0x329420,11, 0x329480,6, -0x329500,6, +0x329500,1, 0x329520,6, 0x329540,3, 0x329550,7, -0x329570,4, -0x329800,410, -0x32a000,4, +0x329570,18, +0x3295bc,5, +0x329800,448, 0x32a020,4, 0x32a040,11, -0x32a070,3, +0x32a074,2, 0x32a080,4, 0x32a0b0,22, 0x32a110,2, 0x32a120,22, 0x32a180,1, 0x32a1a0,6, +0x32a1c0,8, 0x32a200,42, 0x32a2c0,1, -0x32a2c8,3, +0x32a2c8,13, 0x32a300,25, 0x32a36c,4, 0x32a380,2, @@ -14371,25 +17385,26 @@ 0x32a404,3, 0x32a420,11, 0x32a480,6, -0x32a500,6, +0x32a500,1, 0x32a520,6, 0x32a540,3, 0x32a550,7, -0x32a570,4, -0x32a800,410, -0x32b000,4, +0x32a570,18, +0x32a5bc,5, +0x32a800,448, 0x32b020,4, 0x32b040,11, -0x32b070,3, +0x32b074,2, 0x32b080,4, 0x32b0b0,22, 0x32b110,2, 0x32b120,22, 0x32b180,1, 0x32b1a0,6, +0x32b1c0,8, 0x32b200,42, 0x32b2c0,1, -0x32b2c8,3, +0x32b2c8,13, 0x32b300,25, 0x32b36c,4, 0x32b380,2, @@ -14398,25 +17413,26 @@ 0x32b404,3, 0x32b420,11, 0x32b480,6, -0x32b500,6, +0x32b500,1, 0x32b520,6, 0x32b540,3, 0x32b550,7, -0x32b570,4, -0x32b800,410, -0x32c000,4, +0x32b570,18, +0x32b5bc,5, +0x32b800,448, 0x32c020,4, 0x32c040,11, -0x32c070,3, +0x32c074,2, 0x32c080,4, 0x32c0b0,22, 0x32c110,2, 0x32c120,22, 0x32c180,1, 0x32c1a0,6, +0x32c1c0,8, 0x32c200,42, 0x32c2c0,1, -0x32c2c8,3, +0x32c2c8,13, 0x32c300,25, 0x32c36c,4, 0x32c380,2, @@ -14425,12 +17441,13 @@ 0x32c404,3, 0x32c420,11, 0x32c480,6, -0x32c500,6, +0x32c500,1, 0x32c520,6, 0x32c540,3, 0x32c550,7, -0x32c570,4, -0x32c800,410, +0x32c570,18, +0x32c5bc,5, +0x32c800,448, 0x32f800,5, 0x32f818,1, 0x32f854,6, @@ -14456,42 +17473,102 @@ 0x32fba4,1, 0x32fbac,2, 0x334000,3, -0x334018,4, +0x334018,8, 0x334100,56, 0x3341f0,1, 0x334400,3, -0x334418,4, +0x334418,8, 0x334500,56, 0x3345f0,1, -0x334800,5, -0x334820,3, +0x334800,3, +0x334810,3, +0x334820,6, +0x334880,9, +0x3348c0,9, +0x334900,8, +0x334938,2, +0x334944,1, +0x334954,3, +0x334980,8, +0x3349b8,2, +0x3349c4,1, +0x3349d4,3, 0x335000,3, -0x335018,4, +0x335018,8, 0x335100,56, 0x3351f0,1, 0x335400,3, -0x335418,4, +0x335418,8, 0x335500,56, 0x3355f0,1, -0x335800,5, -0x335820,3, +0x335800,3, +0x335810,3, +0x335820,6, +0x335880,9, +0x3358c0,9, +0x335900,8, +0x335938,2, +0x335944,1, +0x335954,3, +0x335980,8, +0x3359b8,2, +0x3359c4,1, +0x3359d4,3, 0x336004,7, 0x336024,1, -0x336034,3, +0x336030,4, 0x336300,5, -0x33631c,1, +0x33631c,2, 0x336600,10, 0x336630,1, -0x336680,10, -0x3366b0,1, +0x336640,10, +0x336670,1, 0x336700,10, 0x336730,1, -0x336780,10, -0x3367b0,1, -0x336800,47, -0x336910,14, -0x336e00,1, +0x336740,10, +0x336770,1, +0x336800,19, +0x336890,15, +0x336910,15, +0x336990,10, +0x336ab8,4, +0x336b00,3, +0x336e00,6, 0x337000,65, +0x337800,6, +0x337820,6, +0x337840,6, +0x337860,6, +0x337880,3, +0x337900,6, +0x337920,6, +0x337940,6, +0x337960,6, +0x337980,3, +0x337a00,6, +0x337a20,3, +0x337a40,7, +0x337a80,7, +0x337ac0,9, +0x337b00,9, +0x337b40,10, +0x337b80,10, +0x337bc0,10, +0x337c00,10, +0x337c40,10, +0x337c80,10, +0x337cc0,3, +0x337e40,7, +0x337e60,7, +0x337e80,7, +0x337ea0,7, +0x337ec0,7, +0x337ee0,7, +0x337f00,7, +0x337f20,7, +0x337f40,7, +0x337f60,4, +0x337f78,13, 0x338000,2, 0x33800c,3, 0x338028,2, @@ -14520,7 +17597,7 @@ 0x339828,3, 0x339850,3, 0x339878,3, -0x3398a0,7, +0x3398a0,8, 0x3399ac,1, 0x3399d8,4, 0x339a00,6, @@ -14584,9 +17661,9 @@ 0x340c80,13, 0x340cc0,12, 0x340d00,14, -0x340d40,2, +0x340d40,4, 0x340d80,14, -0x340dc0,2, +0x340dc0,4, 0x340e00,11, 0x340e40,6, 0x340e60,6, @@ -14598,32 +17675,34 @@ 0x341050,3, 0x341080,42, 0x341140,10, -0x341180,3, -0x341190,2, +0x341180,1, 0x34119c,15, -0x341200,9, +0x341200,12, 0x341300,1, 0x341308,6, 0x341324,10, 0x341380,1, 0x341388,6, 0x3413a4,10, -0x341400,6, -0x341420,6, -0x341500,5, -0x341520,4, -0x341540,5, -0x341560,4, -0x341800,24, +0x341400,7, +0x341420,7, +0x341500,12, +0x341540,12, +0x341580,4, +0x341800,14, +0x34183c,9, 0x341864,6, -0x341880,8, -0x341900,24, +0x341880,2, +0x341890,4, +0x341900,14, +0x34193c,9, 0x341964,6, -0x341980,8, -0x341a00,17, -0x341a48,6, -0x341a80,17, -0x341ac8,6, +0x341980,2, +0x341990,4, +0x341a00,16, +0x341a50,4, +0x341a80,16, +0x341ad0,4, 0x341b00,6, 0x341b20,6, 0x341b40,3, @@ -14652,6 +17731,7 @@ 0x341ec0,7, 0x341ee0,7, 0x341f00,12, +0x341f34,2, 0x341f40,3, 0x341f50,8, 0x342000,4, @@ -14704,9 +17784,9 @@ 0x342c80,13, 0x342cc0,12, 0x342d00,14, -0x342d40,2, +0x342d40,4, 0x342d80,14, -0x342dc0,2, +0x342dc0,4, 0x342e00,11, 0x342e40,6, 0x342e60,6, @@ -14718,32 +17798,34 @@ 0x343050,3, 0x343080,42, 0x343140,10, -0x343180,3, -0x343190,2, +0x343180,1, 0x34319c,15, -0x343200,9, +0x343200,12, 0x343300,1, 0x343308,6, 0x343324,10, 0x343380,1, 0x343388,6, 0x3433a4,10, -0x343400,6, -0x343420,6, -0x343500,5, -0x343520,4, -0x343540,5, -0x343560,4, -0x343800,24, +0x343400,7, +0x343420,7, +0x343500,12, +0x343540,12, +0x343580,4, +0x343800,14, +0x34383c,9, 0x343864,6, -0x343880,8, -0x343900,24, +0x343880,2, +0x343890,4, +0x343900,14, +0x34393c,9, 0x343964,6, -0x343980,8, -0x343a00,17, -0x343a48,6, -0x343a80,17, -0x343ac8,6, +0x343980,2, +0x343990,4, +0x343a00,16, +0x343a50,4, +0x343a80,16, +0x343ad0,4, 0x343b00,6, 0x343b20,6, 0x343b40,3, @@ -14772,48 +17854,39 @@ 0x343ec0,7, 0x343ee0,7, 0x343f00,12, +0x343f34,2, 0x343f40,3, 0x343f50,8, 0x344000,29, 0x344078,4, 0x344090,2, -0x3440a0,2, -0x3440b0,3, +0x3440a0,7, 0x3440c0,11, 0x344100,14, 0x344140,14, 0x344180,61, 0x344278,4, 0x344290,2, -0x3442a0,2, -0x3442b0,3, +0x3442a0,7, 0x3442c0,11, 0x344300,14, 0x344340,14, 0x344380,61, 0x344478,4, 0x344490,2, -0x3444a0,2, -0x3444b0,3, +0x3444a0,7, 0x3444c0,11, 0x344500,14, 0x344540,14, 0x344580,61, 0x344678,4, 0x344690,2, -0x3446a0,2, -0x3446b0,3, +0x3446a0,7, 0x3446c0,11, 0x344700,14, 0x344740,14, 0x344780,62, -0x34487c,1, -0x344a00,8, -0x344a24,15, -0x344a64,23, -0x344ac4,6, -0x344b00,4, -0x344b20,3, +0x34487c,6, 0x344c00,6, 0x344c40,14, 0x344c80,9, @@ -14838,43 +17911,33 @@ 0x345000,29, 0x345078,4, 0x345090,2, -0x3450a0,2, -0x3450b0,3, +0x3450a0,7, 0x3450c0,11, 0x345100,14, 0x345140,14, 0x345180,61, 0x345278,4, 0x345290,2, -0x3452a0,2, -0x3452b0,3, +0x3452a0,7, 0x3452c0,11, 0x345300,14, 0x345340,14, 0x345380,61, 0x345478,4, 0x345490,2, -0x3454a0,2, -0x3454b0,3, +0x3454a0,7, 0x3454c0,11, 0x345500,14, 0x345540,14, 0x345580,61, 0x345678,4, 0x345690,2, -0x3456a0,2, -0x3456b0,3, +0x3456a0,7, 0x3456c0,11, 0x345700,14, 0x345740,14, 0x345780,62, -0x34587c,1, -0x345a00,8, -0x345a24,15, -0x345a64,23, -0x345ac4,6, -0x345b00,4, -0x345b20,3, +0x34587c,6, 0x345c00,6, 0x345c40,14, 0x345c80,9, @@ -14910,8 +17973,7 @@ 0x346424,15, 0x346464,15, 0x3464a4,15, -0x3464e4,23, -0x346544,6, +0x3464e4,30, 0x346580,10, 0x3465ac,1, 0x3465b4,5, @@ -14919,7 +17981,8 @@ 0x3465d4,5, 0x3465ec,1, 0x3465f4,13, -0x346680,7, +0x346680,4, +0x346694,2, 0x3466a0,5, 0x3466c0,5, 0x3466e0,4, @@ -14955,10 +18018,11 @@ 0x347200,6, 0x347220,6, 0x347240,3, -0x347400,5, +0x347400,1, +0x347408,3, 0x347438,1, 0x347444,1, -0x347450,4, +0x347450,6, 0x347500,7, 0x347520,6, 0x347540,6, @@ -14966,19 +18030,21 @@ 0x347570,1, 0x348000,6, 0x348020,3, -0x348030,3, +0x348030,1, +0x348038,4, 0x348050,1, 0x348100,6, 0x348120,10, 0x348150,10, 0x348180,10, 0x3481b0,6, -0x3481d0,10, +0x3481d0,6, +0x3481f0,2, 0x348400,1, 0x348428,1, 0x348450,1, 0x348478,1, -0x3484a0,6, +0x3484a0,7, 0x3485ac,1, 0x3485d8,4, 0x348600,6, @@ -14999,19 +18065,19 @@ 0x3489d8,2, 0x3489e4,1, 0x3489f4,3, -0x349000,4, 0x349020,4, 0x349040,11, -0x349070,3, +0x349074,2, 0x349080,4, 0x3490b0,22, 0x349110,2, 0x349120,22, 0x349180,1, 0x3491a0,6, +0x3491c0,8, 0x349200,42, 0x3492c0,1, -0x3492c8,3, +0x3492c8,13, 0x349300,25, 0x34936c,4, 0x349380,2, @@ -15020,25 +18086,26 @@ 0x349404,3, 0x349420,11, 0x349480,6, -0x349500,6, +0x349500,1, 0x349520,6, 0x349540,3, 0x349550,7, -0x349570,4, -0x349800,410, -0x34a000,4, +0x349570,18, +0x3495bc,5, +0x349800,448, 0x34a020,4, 0x34a040,11, -0x34a070,3, +0x34a074,2, 0x34a080,4, 0x34a0b0,22, 0x34a110,2, 0x34a120,22, 0x34a180,1, 0x34a1a0,6, +0x34a1c0,8, 0x34a200,42, 0x34a2c0,1, -0x34a2c8,3, +0x34a2c8,13, 0x34a300,25, 0x34a36c,4, 0x34a380,2, @@ -15047,25 +18114,26 @@ 0x34a404,3, 0x34a420,11, 0x34a480,6, -0x34a500,6, +0x34a500,1, 0x34a520,6, 0x34a540,3, 0x34a550,7, -0x34a570,4, -0x34a800,410, -0x34b000,4, +0x34a570,18, +0x34a5bc,5, +0x34a800,448, 0x34b020,4, 0x34b040,11, -0x34b070,3, +0x34b074,2, 0x34b080,4, 0x34b0b0,22, 0x34b110,2, 0x34b120,22, 0x34b180,1, 0x34b1a0,6, +0x34b1c0,8, 0x34b200,42, 0x34b2c0,1, -0x34b2c8,3, +0x34b2c8,13, 0x34b300,25, 0x34b36c,4, 0x34b380,2, @@ -15074,25 +18142,26 @@ 0x34b404,3, 0x34b420,11, 0x34b480,6, -0x34b500,6, +0x34b500,1, 0x34b520,6, 0x34b540,3, 0x34b550,7, -0x34b570,4, -0x34b800,410, -0x34c000,4, +0x34b570,18, +0x34b5bc,5, +0x34b800,448, 0x34c020,4, 0x34c040,11, -0x34c070,3, +0x34c074,2, 0x34c080,4, 0x34c0b0,22, 0x34c110,2, 0x34c120,22, 0x34c180,1, 0x34c1a0,6, +0x34c1c0,8, 0x34c200,42, 0x34c2c0,1, -0x34c2c8,3, +0x34c2c8,13, 0x34c300,25, 0x34c36c,4, 0x34c380,2, @@ -15101,12 +18170,13 @@ 0x34c404,3, 0x34c420,11, 0x34c480,6, -0x34c500,6, +0x34c500,1, 0x34c520,6, 0x34c540,3, 0x34c550,7, -0x34c570,4, -0x34c800,410, +0x34c570,18, +0x34c5bc,5, +0x34c800,448, 0x34f800,5, 0x34f818,1, 0x34f854,6, @@ -15132,42 +18202,102 @@ 0x34fba4,1, 0x34fbac,2, 0x354000,3, -0x354018,4, +0x354018,8, 0x354100,56, 0x3541f0,1, 0x354400,3, -0x354418,4, +0x354418,8, 0x354500,56, 0x3545f0,1, -0x354800,5, -0x354820,3, +0x354800,3, +0x354810,3, +0x354820,6, +0x354880,9, +0x3548c0,9, +0x354900,8, +0x354938,2, +0x354944,1, +0x354954,3, +0x354980,8, +0x3549b8,2, +0x3549c4,1, +0x3549d4,3, 0x355000,3, -0x355018,4, +0x355018,8, 0x355100,56, 0x3551f0,1, 0x355400,3, -0x355418,4, +0x355418,8, 0x355500,56, 0x3555f0,1, -0x355800,5, -0x355820,3, +0x355800,3, +0x355810,3, +0x355820,6, +0x355880,9, +0x3558c0,9, +0x355900,8, +0x355938,2, +0x355944,1, +0x355954,3, +0x355980,8, +0x3559b8,2, +0x3559c4,1, +0x3559d4,3, 0x356004,7, 0x356024,1, -0x356034,3, +0x356030,4, 0x356300,5, -0x35631c,1, +0x35631c,2, 0x356600,10, 0x356630,1, -0x356680,10, -0x3566b0,1, +0x356640,10, +0x356670,1, 0x356700,10, 0x356730,1, -0x356780,10, -0x3567b0,1, -0x356800,47, -0x356910,14, -0x356e00,1, +0x356740,10, +0x356770,1, +0x356800,19, +0x356890,15, +0x356910,15, +0x356990,10, +0x356ab8,4, +0x356b00,3, +0x356e00,6, 0x357000,65, +0x357800,6, +0x357820,6, +0x357840,6, +0x357860,6, +0x357880,3, +0x357900,6, +0x357920,6, +0x357940,6, +0x357960,6, +0x357980,3, +0x357a00,6, +0x357a20,3, +0x357a40,7, +0x357a80,7, +0x357ac0,9, +0x357b00,9, +0x357b40,10, +0x357b80,10, +0x357bc0,10, +0x357c00,10, +0x357c40,10, +0x357c80,10, +0x357cc0,3, +0x357e40,7, +0x357e60,7, +0x357e80,7, +0x357ea0,7, +0x357ec0,7, +0x357ee0,7, +0x357f00,7, +0x357f20,7, +0x357f40,7, +0x357f60,4, +0x357f78,13, 0x358000,2, 0x35800c,3, 0x358028,2, @@ -15196,7 +18326,7 @@ 0x359828,3, 0x359850,3, 0x359878,3, -0x3598a0,7, +0x3598a0,8, 0x3599ac,1, 0x3599d8,4, 0x359a00,6, @@ -15260,9 +18390,9 @@ 0x360c80,13, 0x360cc0,12, 0x360d00,14, -0x360d40,2, +0x360d40,4, 0x360d80,14, -0x360dc0,2, +0x360dc0,4, 0x360e00,11, 0x360e40,6, 0x360e60,6, @@ -15274,32 +18404,34 @@ 0x361050,3, 0x361080,42, 0x361140,10, -0x361180,3, -0x361190,2, +0x361180,1, 0x36119c,15, -0x361200,9, +0x361200,12, 0x361300,1, 0x361308,6, 0x361324,10, 0x361380,1, 0x361388,6, 0x3613a4,10, -0x361400,6, -0x361420,6, -0x361500,5, -0x361520,4, -0x361540,5, -0x361560,4, -0x361800,24, +0x361400,7, +0x361420,7, +0x361500,12, +0x361540,12, +0x361580,4, +0x361800,14, +0x36183c,9, 0x361864,6, -0x361880,8, -0x361900,24, +0x361880,2, +0x361890,4, +0x361900,14, +0x36193c,9, 0x361964,6, -0x361980,8, -0x361a00,17, -0x361a48,6, -0x361a80,17, -0x361ac8,6, +0x361980,2, +0x361990,4, +0x361a00,16, +0x361a50,4, +0x361a80,16, +0x361ad0,4, 0x361b00,6, 0x361b20,6, 0x361b40,3, @@ -15328,6 +18460,7 @@ 0x361ec0,7, 0x361ee0,7, 0x361f00,12, +0x361f34,2, 0x361f40,3, 0x361f50,8, 0x362000,4, @@ -15380,9 +18513,9 @@ 0x362c80,13, 0x362cc0,12, 0x362d00,14, -0x362d40,2, +0x362d40,4, 0x362d80,14, -0x362dc0,2, +0x362dc0,4, 0x362e00,11, 0x362e40,6, 0x362e60,6, @@ -15394,32 +18527,34 @@ 0x363050,3, 0x363080,42, 0x363140,10, -0x363180,3, -0x363190,2, +0x363180,1, 0x36319c,15, -0x363200,9, +0x363200,12, 0x363300,1, 0x363308,6, 0x363324,10, 0x363380,1, 0x363388,6, 0x3633a4,10, -0x363400,6, -0x363420,6, -0x363500,5, -0x363520,4, -0x363540,5, -0x363560,4, -0x363800,24, +0x363400,7, +0x363420,7, +0x363500,12, +0x363540,12, +0x363580,4, +0x363800,14, +0x36383c,9, 0x363864,6, -0x363880,8, -0x363900,24, +0x363880,2, +0x363890,4, +0x363900,14, +0x36393c,9, 0x363964,6, -0x363980,8, -0x363a00,17, -0x363a48,6, -0x363a80,17, -0x363ac8,6, +0x363980,2, +0x363990,4, +0x363a00,16, +0x363a50,4, +0x363a80,16, +0x363ad0,4, 0x363b00,6, 0x363b20,6, 0x363b40,3, @@ -15448,48 +18583,39 @@ 0x363ec0,7, 0x363ee0,7, 0x363f00,12, +0x363f34,2, 0x363f40,3, 0x363f50,8, 0x364000,29, 0x364078,4, 0x364090,2, -0x3640a0,2, -0x3640b0,3, +0x3640a0,7, 0x3640c0,11, 0x364100,14, 0x364140,14, 0x364180,61, 0x364278,4, 0x364290,2, -0x3642a0,2, -0x3642b0,3, +0x3642a0,7, 0x3642c0,11, 0x364300,14, 0x364340,14, 0x364380,61, 0x364478,4, 0x364490,2, -0x3644a0,2, -0x3644b0,3, +0x3644a0,7, 0x3644c0,11, 0x364500,14, 0x364540,14, 0x364580,61, 0x364678,4, 0x364690,2, -0x3646a0,2, -0x3646b0,3, +0x3646a0,7, 0x3646c0,11, 0x364700,14, 0x364740,14, 0x364780,62, -0x36487c,1, -0x364a00,8, -0x364a24,15, -0x364a64,23, -0x364ac4,6, -0x364b00,4, -0x364b20,3, +0x36487c,6, 0x364c00,6, 0x364c40,14, 0x364c80,9, @@ -15514,43 +18640,33 @@ 0x365000,29, 0x365078,4, 0x365090,2, -0x3650a0,2, -0x3650b0,3, +0x3650a0,7, 0x3650c0,11, 0x365100,14, 0x365140,14, 0x365180,61, 0x365278,4, 0x365290,2, -0x3652a0,2, -0x3652b0,3, +0x3652a0,7, 0x3652c0,11, 0x365300,14, 0x365340,14, 0x365380,61, 0x365478,4, 0x365490,2, -0x3654a0,2, -0x3654b0,3, +0x3654a0,7, 0x3654c0,11, 0x365500,14, 0x365540,14, 0x365580,61, 0x365678,4, 0x365690,2, -0x3656a0,2, -0x3656b0,3, +0x3656a0,7, 0x3656c0,11, 0x365700,14, 0x365740,14, 0x365780,62, -0x36587c,1, -0x365a00,8, -0x365a24,15, -0x365a64,23, -0x365ac4,6, -0x365b00,4, -0x365b20,3, +0x36587c,6, 0x365c00,6, 0x365c40,14, 0x365c80,9, @@ -15586,8 +18702,7 @@ 0x366424,15, 0x366464,15, 0x3664a4,15, -0x3664e4,23, -0x366544,6, +0x3664e4,30, 0x366580,10, 0x3665ac,1, 0x3665b4,5, @@ -15595,7 +18710,8 @@ 0x3665d4,5, 0x3665ec,1, 0x3665f4,13, -0x366680,7, +0x366680,4, +0x366694,2, 0x3666a0,5, 0x3666c0,5, 0x3666e0,4, @@ -15631,10 +18747,11 @@ 0x367200,6, 0x367220,6, 0x367240,3, -0x367400,5, +0x367400,1, +0x367408,3, 0x367438,1, 0x367444,1, -0x367450,4, +0x367450,6, 0x367500,7, 0x367520,6, 0x367540,6, @@ -15642,19 +18759,21 @@ 0x367570,1, 0x368000,6, 0x368020,3, -0x368030,3, +0x368030,1, +0x368038,4, 0x368050,1, 0x368100,6, 0x368120,10, 0x368150,10, 0x368180,10, 0x3681b0,6, -0x3681d0,10, +0x3681d0,6, +0x3681f0,2, 0x368400,1, 0x368428,1, 0x368450,1, 0x368478,1, -0x3684a0,6, +0x3684a0,7, 0x3685ac,1, 0x3685d8,4, 0x368600,6, @@ -15675,19 +18794,19 @@ 0x3689d8,2, 0x3689e4,1, 0x3689f4,3, -0x369000,4, 0x369020,4, 0x369040,11, -0x369070,3, +0x369074,2, 0x369080,4, 0x3690b0,22, 0x369110,2, 0x369120,22, 0x369180,1, 0x3691a0,6, +0x3691c0,8, 0x369200,42, 0x3692c0,1, -0x3692c8,3, +0x3692c8,13, 0x369300,25, 0x36936c,4, 0x369380,2, @@ -15696,25 +18815,26 @@ 0x369404,3, 0x369420,11, 0x369480,6, -0x369500,6, +0x369500,1, 0x369520,6, 0x369540,3, 0x369550,7, -0x369570,4, -0x369800,410, -0x36a000,4, +0x369570,18, +0x3695bc,5, +0x369800,448, 0x36a020,4, 0x36a040,11, -0x36a070,3, +0x36a074,2, 0x36a080,4, 0x36a0b0,22, 0x36a110,2, 0x36a120,22, 0x36a180,1, 0x36a1a0,6, +0x36a1c0,8, 0x36a200,42, 0x36a2c0,1, -0x36a2c8,3, +0x36a2c8,13, 0x36a300,25, 0x36a36c,4, 0x36a380,2, @@ -15723,25 +18843,26 @@ 0x36a404,3, 0x36a420,11, 0x36a480,6, -0x36a500,6, +0x36a500,1, 0x36a520,6, 0x36a540,3, 0x36a550,7, -0x36a570,4, -0x36a800,410, -0x36b000,4, +0x36a570,18, +0x36a5bc,5, +0x36a800,448, 0x36b020,4, 0x36b040,11, -0x36b070,3, +0x36b074,2, 0x36b080,4, 0x36b0b0,22, 0x36b110,2, 0x36b120,22, 0x36b180,1, 0x36b1a0,6, +0x36b1c0,8, 0x36b200,42, 0x36b2c0,1, -0x36b2c8,3, +0x36b2c8,13, 0x36b300,25, 0x36b36c,4, 0x36b380,2, @@ -15750,25 +18871,26 @@ 0x36b404,3, 0x36b420,11, 0x36b480,6, -0x36b500,6, +0x36b500,1, 0x36b520,6, 0x36b540,3, 0x36b550,7, -0x36b570,4, -0x36b800,410, -0x36c000,4, +0x36b570,18, +0x36b5bc,5, +0x36b800,448, 0x36c020,4, 0x36c040,11, -0x36c070,3, +0x36c074,2, 0x36c080,4, 0x36c0b0,22, 0x36c110,2, 0x36c120,22, 0x36c180,1, 0x36c1a0,6, +0x36c1c0,8, 0x36c200,42, 0x36c2c0,1, -0x36c2c8,3, +0x36c2c8,13, 0x36c300,25, 0x36c36c,4, 0x36c380,2, @@ -15777,12 +18899,13 @@ 0x36c404,3, 0x36c420,11, 0x36c480,6, -0x36c500,6, +0x36c500,1, 0x36c520,6, 0x36c540,3, 0x36c550,7, -0x36c570,4, -0x36c800,410, +0x36c570,18, +0x36c5bc,5, +0x36c800,448, 0x36f800,5, 0x36f818,1, 0x36f854,6, @@ -15808,42 +18931,102 @@ 0x36fba4,1, 0x36fbac,2, 0x374000,3, -0x374018,4, +0x374018,8, 0x374100,56, 0x3741f0,1, 0x374400,3, -0x374418,4, +0x374418,8, 0x374500,56, 0x3745f0,1, -0x374800,5, -0x374820,3, +0x374800,3, +0x374810,3, +0x374820,6, +0x374880,9, +0x3748c0,9, +0x374900,8, +0x374938,2, +0x374944,1, +0x374954,3, +0x374980,8, +0x3749b8,2, +0x3749c4,1, +0x3749d4,3, 0x375000,3, -0x375018,4, +0x375018,8, 0x375100,56, 0x3751f0,1, 0x375400,3, -0x375418,4, +0x375418,8, 0x375500,56, 0x3755f0,1, -0x375800,5, -0x375820,3, +0x375800,3, +0x375810,3, +0x375820,6, +0x375880,9, +0x3758c0,9, +0x375900,8, +0x375938,2, +0x375944,1, +0x375954,3, +0x375980,8, +0x3759b8,2, +0x3759c4,1, +0x3759d4,3, 0x376004,7, 0x376024,1, -0x376034,3, +0x376030,4, 0x376300,5, -0x37631c,1, +0x37631c,2, 0x376600,10, 0x376630,1, -0x376680,10, -0x3766b0,1, +0x376640,10, +0x376670,1, 0x376700,10, 0x376730,1, -0x376780,10, -0x3767b0,1, -0x376800,47, -0x376910,14, -0x376e00,1, +0x376740,10, +0x376770,1, +0x376800,19, +0x376890,15, +0x376910,15, +0x376990,10, +0x376ab8,4, +0x376b00,3, +0x376e00,6, 0x377000,65, +0x377800,6, +0x377820,6, +0x377840,6, +0x377860,6, +0x377880,3, +0x377900,6, +0x377920,6, +0x377940,6, +0x377960,6, +0x377980,3, +0x377a00,6, +0x377a20,3, +0x377a40,7, +0x377a80,7, +0x377ac0,9, +0x377b00,9, +0x377b40,10, +0x377b80,10, +0x377bc0,10, +0x377c00,10, +0x377c40,10, +0x377c80,10, +0x377cc0,3, +0x377e40,7, +0x377e60,7, +0x377e80,7, +0x377ea0,7, +0x377ec0,7, +0x377ee0,7, +0x377f00,7, +0x377f20,7, +0x377f40,7, +0x377f60,4, +0x377f78,13, 0x378000,2, 0x37800c,3, 0x378028,2, @@ -15872,7 +19055,7 @@ 0x379828,3, 0x379850,3, 0x379878,3, -0x3798a0,7, +0x3798a0,8, 0x3799ac,1, 0x3799d8,4, 0x379a00,6, @@ -15936,9 +19119,9 @@ 0x380c80,13, 0x380cc0,12, 0x380d00,14, -0x380d40,2, +0x380d40,4, 0x380d80,14, -0x380dc0,2, +0x380dc0,4, 0x380e00,11, 0x380e40,6, 0x380e60,6, @@ -15950,32 +19133,34 @@ 0x381050,3, 0x381080,42, 0x381140,10, -0x381180,3, -0x381190,2, +0x381180,1, 0x38119c,15, -0x381200,9, +0x381200,12, 0x381300,1, 0x381308,6, 0x381324,10, 0x381380,1, 0x381388,6, 0x3813a4,10, -0x381400,6, -0x381420,6, -0x381500,5, -0x381520,4, -0x381540,5, -0x381560,4, -0x381800,24, +0x381400,7, +0x381420,7, +0x381500,12, +0x381540,12, +0x381580,4, +0x381800,14, +0x38183c,9, 0x381864,6, -0x381880,8, -0x381900,24, +0x381880,2, +0x381890,4, +0x381900,14, +0x38193c,9, 0x381964,6, -0x381980,8, -0x381a00,17, -0x381a48,6, -0x381a80,17, -0x381ac8,6, +0x381980,2, +0x381990,4, +0x381a00,16, +0x381a50,4, +0x381a80,16, +0x381ad0,4, 0x381b00,6, 0x381b20,6, 0x381b40,3, @@ -16004,6 +19189,7 @@ 0x381ec0,7, 0x381ee0,7, 0x381f00,12, +0x381f34,2, 0x381f40,3, 0x381f50,8, 0x382000,4, @@ -16056,9 +19242,9 @@ 0x382c80,13, 0x382cc0,12, 0x382d00,14, -0x382d40,2, +0x382d40,4, 0x382d80,14, -0x382dc0,2, +0x382dc0,4, 0x382e00,11, 0x382e40,6, 0x382e60,6, @@ -16070,32 +19256,34 @@ 0x383050,3, 0x383080,42, 0x383140,10, -0x383180,3, -0x383190,2, +0x383180,1, 0x38319c,15, -0x383200,9, +0x383200,12, 0x383300,1, 0x383308,6, 0x383324,10, 0x383380,1, 0x383388,6, 0x3833a4,10, -0x383400,6, -0x383420,6, -0x383500,5, -0x383520,4, -0x383540,5, -0x383560,4, -0x383800,24, +0x383400,7, +0x383420,7, +0x383500,12, +0x383540,12, +0x383580,4, +0x383800,14, +0x38383c,9, 0x383864,6, -0x383880,8, -0x383900,24, +0x383880,2, +0x383890,4, +0x383900,14, +0x38393c,9, 0x383964,6, -0x383980,8, -0x383a00,17, -0x383a48,6, -0x383a80,17, -0x383ac8,6, +0x383980,2, +0x383990,4, +0x383a00,16, +0x383a50,4, +0x383a80,16, +0x383ad0,4, 0x383b00,6, 0x383b20,6, 0x383b40,3, @@ -16124,48 +19312,39 @@ 0x383ec0,7, 0x383ee0,7, 0x383f00,12, +0x383f34,2, 0x383f40,3, 0x383f50,8, 0x384000,29, 0x384078,4, 0x384090,2, -0x3840a0,2, -0x3840b0,3, +0x3840a0,7, 0x3840c0,11, 0x384100,14, 0x384140,14, 0x384180,61, 0x384278,4, 0x384290,2, -0x3842a0,2, -0x3842b0,3, +0x3842a0,7, 0x3842c0,11, 0x384300,14, 0x384340,14, 0x384380,61, 0x384478,4, 0x384490,2, -0x3844a0,2, -0x3844b0,3, +0x3844a0,7, 0x3844c0,11, 0x384500,14, 0x384540,14, 0x384580,61, 0x384678,4, 0x384690,2, -0x3846a0,2, -0x3846b0,3, +0x3846a0,7, 0x3846c0,11, 0x384700,14, 0x384740,14, 0x384780,62, -0x38487c,1, -0x384a00,8, -0x384a24,15, -0x384a64,23, -0x384ac4,6, -0x384b00,4, -0x384b20,3, +0x38487c,6, 0x384c00,6, 0x384c40,14, 0x384c80,9, @@ -16190,43 +19369,33 @@ 0x385000,29, 0x385078,4, 0x385090,2, -0x3850a0,2, -0x3850b0,3, +0x3850a0,7, 0x3850c0,11, 0x385100,14, 0x385140,14, 0x385180,61, 0x385278,4, 0x385290,2, -0x3852a0,2, -0x3852b0,3, +0x3852a0,7, 0x3852c0,11, 0x385300,14, 0x385340,14, 0x385380,61, 0x385478,4, 0x385490,2, -0x3854a0,2, -0x3854b0,3, +0x3854a0,7, 0x3854c0,11, 0x385500,14, 0x385540,14, 0x385580,61, 0x385678,4, 0x385690,2, -0x3856a0,2, -0x3856b0,3, +0x3856a0,7, 0x3856c0,11, 0x385700,14, 0x385740,14, 0x385780,62, -0x38587c,1, -0x385a00,8, -0x385a24,15, -0x385a64,23, -0x385ac4,6, -0x385b00,4, -0x385b20,3, +0x38587c,6, 0x385c00,6, 0x385c40,14, 0x385c80,9, @@ -16262,8 +19431,7 @@ 0x386424,15, 0x386464,15, 0x3864a4,15, -0x3864e4,23, -0x386544,6, +0x3864e4,30, 0x386580,10, 0x3865ac,1, 0x3865b4,5, @@ -16271,7 +19439,8 @@ 0x3865d4,5, 0x3865ec,1, 0x3865f4,13, -0x386680,7, +0x386680,4, +0x386694,2, 0x3866a0,5, 0x3866c0,5, 0x3866e0,4, @@ -16307,10 +19476,11 @@ 0x387200,6, 0x387220,6, 0x387240,3, -0x387400,5, +0x387400,1, +0x387408,3, 0x387438,1, 0x387444,1, -0x387450,4, +0x387450,6, 0x387500,7, 0x387520,6, 0x387540,6, @@ -16318,19 +19488,21 @@ 0x387570,1, 0x388000,6, 0x388020,3, -0x388030,3, +0x388030,1, +0x388038,4, 0x388050,1, 0x388100,6, 0x388120,10, 0x388150,10, 0x388180,10, 0x3881b0,6, -0x3881d0,10, +0x3881d0,6, +0x3881f0,2, 0x388400,1, 0x388428,1, 0x388450,1, 0x388478,1, -0x3884a0,6, +0x3884a0,7, 0x3885ac,1, 0x3885d8,4, 0x388600,6, @@ -16351,19 +19523,19 @@ 0x3889d8,2, 0x3889e4,1, 0x3889f4,3, -0x389000,4, 0x389020,4, 0x389040,11, -0x389070,3, +0x389074,2, 0x389080,4, 0x3890b0,22, 0x389110,2, 0x389120,22, 0x389180,1, 0x3891a0,6, +0x3891c0,8, 0x389200,42, 0x3892c0,1, -0x3892c8,3, +0x3892c8,13, 0x389300,25, 0x38936c,4, 0x389380,2, @@ -16372,25 +19544,26 @@ 0x389404,3, 0x389420,11, 0x389480,6, -0x389500,6, +0x389500,1, 0x389520,6, 0x389540,3, 0x389550,7, -0x389570,4, -0x389800,410, -0x38a000,4, +0x389570,18, +0x3895bc,5, +0x389800,448, 0x38a020,4, 0x38a040,11, -0x38a070,3, +0x38a074,2, 0x38a080,4, 0x38a0b0,22, 0x38a110,2, 0x38a120,22, 0x38a180,1, 0x38a1a0,6, +0x38a1c0,8, 0x38a200,42, 0x38a2c0,1, -0x38a2c8,3, +0x38a2c8,13, 0x38a300,25, 0x38a36c,4, 0x38a380,2, @@ -16399,25 +19572,26 @@ 0x38a404,3, 0x38a420,11, 0x38a480,6, -0x38a500,6, +0x38a500,1, 0x38a520,6, 0x38a540,3, 0x38a550,7, -0x38a570,4, -0x38a800,410, -0x38b000,4, +0x38a570,18, +0x38a5bc,5, +0x38a800,448, 0x38b020,4, 0x38b040,11, -0x38b070,3, +0x38b074,2, 0x38b080,4, 0x38b0b0,22, 0x38b110,2, 0x38b120,22, 0x38b180,1, 0x38b1a0,6, +0x38b1c0,8, 0x38b200,42, 0x38b2c0,1, -0x38b2c8,3, +0x38b2c8,13, 0x38b300,25, 0x38b36c,4, 0x38b380,2, @@ -16426,25 +19600,26 @@ 0x38b404,3, 0x38b420,11, 0x38b480,6, -0x38b500,6, +0x38b500,1, 0x38b520,6, 0x38b540,3, 0x38b550,7, -0x38b570,4, -0x38b800,410, -0x38c000,4, +0x38b570,18, +0x38b5bc,5, +0x38b800,448, 0x38c020,4, 0x38c040,11, -0x38c070,3, +0x38c074,2, 0x38c080,4, 0x38c0b0,22, 0x38c110,2, 0x38c120,22, 0x38c180,1, 0x38c1a0,6, +0x38c1c0,8, 0x38c200,42, 0x38c2c0,1, -0x38c2c8,3, +0x38c2c8,13, 0x38c300,25, 0x38c36c,4, 0x38c380,2, @@ -16453,12 +19628,13 @@ 0x38c404,3, 0x38c420,11, 0x38c480,6, -0x38c500,6, +0x38c500,1, 0x38c520,6, 0x38c540,3, 0x38c550,7, -0x38c570,4, -0x38c800,410, +0x38c570,18, +0x38c5bc,5, +0x38c800,448, 0x38f800,5, 0x38f818,1, 0x38f854,6, @@ -16484,42 +19660,102 @@ 0x38fba4,1, 0x38fbac,2, 0x394000,3, -0x394018,4, +0x394018,8, 0x394100,56, 0x3941f0,1, 0x394400,3, -0x394418,4, +0x394418,8, 0x394500,56, 0x3945f0,1, -0x394800,5, -0x394820,3, +0x394800,3, +0x394810,3, +0x394820,6, +0x394880,9, +0x3948c0,9, +0x394900,8, +0x394938,2, +0x394944,1, +0x394954,3, +0x394980,8, +0x3949b8,2, +0x3949c4,1, +0x3949d4,3, 0x395000,3, -0x395018,4, +0x395018,8, 0x395100,56, 0x3951f0,1, 0x395400,3, -0x395418,4, +0x395418,8, 0x395500,56, 0x3955f0,1, -0x395800,5, -0x395820,3, +0x395800,3, +0x395810,3, +0x395820,6, +0x395880,9, +0x3958c0,9, +0x395900,8, +0x395938,2, +0x395944,1, +0x395954,3, +0x395980,8, +0x3959b8,2, +0x3959c4,1, +0x3959d4,3, 0x396004,7, 0x396024,1, -0x396034,3, +0x396030,4, 0x396300,5, -0x39631c,1, +0x39631c,2, 0x396600,10, 0x396630,1, -0x396680,10, -0x3966b0,1, +0x396640,10, +0x396670,1, 0x396700,10, 0x396730,1, -0x396780,10, -0x3967b0,1, -0x396800,47, -0x396910,14, -0x396e00,1, +0x396740,10, +0x396770,1, +0x396800,19, +0x396890,15, +0x396910,15, +0x396990,10, +0x396ab8,4, +0x396b00,3, +0x396e00,6, 0x397000,65, +0x397800,6, +0x397820,6, +0x397840,6, +0x397860,6, +0x397880,3, +0x397900,6, +0x397920,6, +0x397940,6, +0x397960,6, +0x397980,3, +0x397a00,6, +0x397a20,3, +0x397a40,7, +0x397a80,7, +0x397ac0,9, +0x397b00,9, +0x397b40,10, +0x397b80,10, +0x397bc0,10, +0x397c00,10, +0x397c40,10, +0x397c80,10, +0x397cc0,3, +0x397e40,7, +0x397e60,7, +0x397e80,7, +0x397ea0,7, +0x397ec0,7, +0x397ee0,7, +0x397f00,7, +0x397f20,7, +0x397f40,7, +0x397f60,4, +0x397f78,13, 0x398000,2, 0x39800c,3, 0x398028,2, @@ -16548,7 +19784,7 @@ 0x399828,3, 0x399850,3, 0x399878,3, -0x3998a0,7, +0x3998a0,8, 0x3999ac,1, 0x3999d8,4, 0x399a00,6, @@ -16612,9 +19848,9 @@ 0x3a0c80,13, 0x3a0cc0,12, 0x3a0d00,14, -0x3a0d40,2, +0x3a0d40,4, 0x3a0d80,14, -0x3a0dc0,2, +0x3a0dc0,4, 0x3a0e00,11, 0x3a0e40,6, 0x3a0e60,6, @@ -16626,32 +19862,34 @@ 0x3a1050,3, 0x3a1080,42, 0x3a1140,10, -0x3a1180,3, -0x3a1190,2, +0x3a1180,1, 0x3a119c,15, -0x3a1200,9, +0x3a1200,12, 0x3a1300,1, 0x3a1308,6, 0x3a1324,10, 0x3a1380,1, 0x3a1388,6, 0x3a13a4,10, -0x3a1400,6, -0x3a1420,6, -0x3a1500,5, -0x3a1520,4, -0x3a1540,5, -0x3a1560,4, -0x3a1800,24, +0x3a1400,7, +0x3a1420,7, +0x3a1500,12, +0x3a1540,12, +0x3a1580,4, +0x3a1800,14, +0x3a183c,9, 0x3a1864,6, -0x3a1880,8, -0x3a1900,24, +0x3a1880,2, +0x3a1890,4, +0x3a1900,14, +0x3a193c,9, 0x3a1964,6, -0x3a1980,8, -0x3a1a00,17, -0x3a1a48,6, -0x3a1a80,17, -0x3a1ac8,6, +0x3a1980,2, +0x3a1990,4, +0x3a1a00,16, +0x3a1a50,4, +0x3a1a80,16, +0x3a1ad0,4, 0x3a1b00,6, 0x3a1b20,6, 0x3a1b40,3, @@ -16680,6 +19918,7 @@ 0x3a1ec0,7, 0x3a1ee0,7, 0x3a1f00,12, +0x3a1f34,2, 0x3a1f40,3, 0x3a1f50,8, 0x3a2000,4, @@ -16732,9 +19971,9 @@ 0x3a2c80,13, 0x3a2cc0,12, 0x3a2d00,14, -0x3a2d40,2, +0x3a2d40,4, 0x3a2d80,14, -0x3a2dc0,2, +0x3a2dc0,4, 0x3a2e00,11, 0x3a2e40,6, 0x3a2e60,6, @@ -16746,32 +19985,34 @@ 0x3a3050,3, 0x3a3080,42, 0x3a3140,10, -0x3a3180,3, -0x3a3190,2, +0x3a3180,1, 0x3a319c,15, -0x3a3200,9, +0x3a3200,12, 0x3a3300,1, 0x3a3308,6, 0x3a3324,10, 0x3a3380,1, 0x3a3388,6, 0x3a33a4,10, -0x3a3400,6, -0x3a3420,6, -0x3a3500,5, -0x3a3520,4, -0x3a3540,5, -0x3a3560,4, -0x3a3800,24, +0x3a3400,7, +0x3a3420,7, +0x3a3500,12, +0x3a3540,12, +0x3a3580,4, +0x3a3800,14, +0x3a383c,9, 0x3a3864,6, -0x3a3880,8, -0x3a3900,24, +0x3a3880,2, +0x3a3890,4, +0x3a3900,14, +0x3a393c,9, 0x3a3964,6, -0x3a3980,8, -0x3a3a00,17, -0x3a3a48,6, -0x3a3a80,17, -0x3a3ac8,6, +0x3a3980,2, +0x3a3990,4, +0x3a3a00,16, +0x3a3a50,4, +0x3a3a80,16, +0x3a3ad0,4, 0x3a3b00,6, 0x3a3b20,6, 0x3a3b40,3, @@ -16800,48 +20041,39 @@ 0x3a3ec0,7, 0x3a3ee0,7, 0x3a3f00,12, +0x3a3f34,2, 0x3a3f40,3, 0x3a3f50,8, 0x3a4000,29, 0x3a4078,4, 0x3a4090,2, -0x3a40a0,2, -0x3a40b0,3, +0x3a40a0,7, 0x3a40c0,11, 0x3a4100,14, 0x3a4140,14, 0x3a4180,61, 0x3a4278,4, 0x3a4290,2, -0x3a42a0,2, -0x3a42b0,3, +0x3a42a0,7, 0x3a42c0,11, 0x3a4300,14, 0x3a4340,14, 0x3a4380,61, 0x3a4478,4, 0x3a4490,2, -0x3a44a0,2, -0x3a44b0,3, +0x3a44a0,7, 0x3a44c0,11, 0x3a4500,14, 0x3a4540,14, 0x3a4580,61, 0x3a4678,4, 0x3a4690,2, -0x3a46a0,2, -0x3a46b0,3, +0x3a46a0,7, 0x3a46c0,11, 0x3a4700,14, 0x3a4740,14, 0x3a4780,62, -0x3a487c,1, -0x3a4a00,8, -0x3a4a24,15, -0x3a4a64,23, -0x3a4ac4,6, -0x3a4b00,4, -0x3a4b20,3, +0x3a487c,6, 0x3a4c00,6, 0x3a4c40,14, 0x3a4c80,9, @@ -16866,43 +20098,33 @@ 0x3a5000,29, 0x3a5078,4, 0x3a5090,2, -0x3a50a0,2, -0x3a50b0,3, +0x3a50a0,7, 0x3a50c0,11, 0x3a5100,14, 0x3a5140,14, 0x3a5180,61, 0x3a5278,4, 0x3a5290,2, -0x3a52a0,2, -0x3a52b0,3, +0x3a52a0,7, 0x3a52c0,11, 0x3a5300,14, 0x3a5340,14, 0x3a5380,61, 0x3a5478,4, 0x3a5490,2, -0x3a54a0,2, -0x3a54b0,3, +0x3a54a0,7, 0x3a54c0,11, 0x3a5500,14, 0x3a5540,14, 0x3a5580,61, 0x3a5678,4, 0x3a5690,2, -0x3a56a0,2, -0x3a56b0,3, +0x3a56a0,7, 0x3a56c0,11, 0x3a5700,14, 0x3a5740,14, 0x3a5780,62, -0x3a587c,1, -0x3a5a00,8, -0x3a5a24,15, -0x3a5a64,23, -0x3a5ac4,6, -0x3a5b00,4, -0x3a5b20,3, +0x3a587c,6, 0x3a5c00,6, 0x3a5c40,14, 0x3a5c80,9, @@ -16938,8 +20160,7 @@ 0x3a6424,15, 0x3a6464,15, 0x3a64a4,15, -0x3a64e4,23, -0x3a6544,6, +0x3a64e4,30, 0x3a6580,10, 0x3a65ac,1, 0x3a65b4,5, @@ -16947,7 +20168,8 @@ 0x3a65d4,5, 0x3a65ec,1, 0x3a65f4,13, -0x3a6680,7, +0x3a6680,4, +0x3a6694,2, 0x3a66a0,5, 0x3a66c0,5, 0x3a66e0,4, @@ -16983,10 +20205,11 @@ 0x3a7200,6, 0x3a7220,6, 0x3a7240,3, -0x3a7400,5, +0x3a7400,1, +0x3a7408,3, 0x3a7438,1, 0x3a7444,1, -0x3a7450,4, +0x3a7450,6, 0x3a7500,7, 0x3a7520,6, 0x3a7540,6, @@ -16994,19 +20217,21 @@ 0x3a7570,1, 0x3a8000,6, 0x3a8020,3, -0x3a8030,3, +0x3a8030,1, +0x3a8038,4, 0x3a8050,1, 0x3a8100,6, 0x3a8120,10, 0x3a8150,10, 0x3a8180,10, 0x3a81b0,6, -0x3a81d0,10, +0x3a81d0,6, +0x3a81f0,2, 0x3a8400,1, 0x3a8428,1, 0x3a8450,1, 0x3a8478,1, -0x3a84a0,6, +0x3a84a0,7, 0x3a85ac,1, 0x3a85d8,4, 0x3a8600,6, @@ -17027,19 +20252,19 @@ 0x3a89d8,2, 0x3a89e4,1, 0x3a89f4,3, -0x3a9000,4, 0x3a9020,4, 0x3a9040,11, -0x3a9070,3, +0x3a9074,2, 0x3a9080,4, 0x3a90b0,22, 0x3a9110,2, 0x3a9120,22, 0x3a9180,1, 0x3a91a0,6, +0x3a91c0,8, 0x3a9200,42, 0x3a92c0,1, -0x3a92c8,3, +0x3a92c8,13, 0x3a9300,25, 0x3a936c,4, 0x3a9380,2, @@ -17048,25 +20273,26 @@ 0x3a9404,3, 0x3a9420,11, 0x3a9480,6, -0x3a9500,6, +0x3a9500,1, 0x3a9520,6, 0x3a9540,3, 0x3a9550,7, -0x3a9570,4, -0x3a9800,410, -0x3aa000,4, +0x3a9570,18, +0x3a95bc,5, +0x3a9800,448, 0x3aa020,4, 0x3aa040,11, -0x3aa070,3, +0x3aa074,2, 0x3aa080,4, 0x3aa0b0,22, 0x3aa110,2, 0x3aa120,22, 0x3aa180,1, 0x3aa1a0,6, +0x3aa1c0,8, 0x3aa200,42, 0x3aa2c0,1, -0x3aa2c8,3, +0x3aa2c8,13, 0x3aa300,25, 0x3aa36c,4, 0x3aa380,2, @@ -17075,25 +20301,26 @@ 0x3aa404,3, 0x3aa420,11, 0x3aa480,6, -0x3aa500,6, +0x3aa500,1, 0x3aa520,6, 0x3aa540,3, 0x3aa550,7, -0x3aa570,4, -0x3aa800,410, -0x3ab000,4, +0x3aa570,18, +0x3aa5bc,5, +0x3aa800,448, 0x3ab020,4, 0x3ab040,11, -0x3ab070,3, +0x3ab074,2, 0x3ab080,4, 0x3ab0b0,22, 0x3ab110,2, 0x3ab120,22, 0x3ab180,1, 0x3ab1a0,6, +0x3ab1c0,8, 0x3ab200,42, 0x3ab2c0,1, -0x3ab2c8,3, +0x3ab2c8,13, 0x3ab300,25, 0x3ab36c,4, 0x3ab380,2, @@ -17102,25 +20329,26 @@ 0x3ab404,3, 0x3ab420,11, 0x3ab480,6, -0x3ab500,6, +0x3ab500,1, 0x3ab520,6, 0x3ab540,3, 0x3ab550,7, -0x3ab570,4, -0x3ab800,410, -0x3ac000,4, +0x3ab570,18, +0x3ab5bc,5, +0x3ab800,448, 0x3ac020,4, 0x3ac040,11, -0x3ac070,3, +0x3ac074,2, 0x3ac080,4, 0x3ac0b0,22, 0x3ac110,2, 0x3ac120,22, 0x3ac180,1, 0x3ac1a0,6, +0x3ac1c0,8, 0x3ac200,42, 0x3ac2c0,1, -0x3ac2c8,3, +0x3ac2c8,13, 0x3ac300,25, 0x3ac36c,4, 0x3ac380,2, @@ -17129,12 +20357,13 @@ 0x3ac404,3, 0x3ac420,11, 0x3ac480,6, -0x3ac500,6, +0x3ac500,1, 0x3ac520,6, 0x3ac540,3, 0x3ac550,7, -0x3ac570,4, -0x3ac800,410, +0x3ac570,18, +0x3ac5bc,5, +0x3ac800,448, 0x3af800,5, 0x3af818,1, 0x3af854,6, @@ -17160,42 +20389,102 @@ 0x3afba4,1, 0x3afbac,2, 0x3b4000,3, -0x3b4018,4, +0x3b4018,8, 0x3b4100,56, 0x3b41f0,1, 0x3b4400,3, -0x3b4418,4, +0x3b4418,8, 0x3b4500,56, 0x3b45f0,1, -0x3b4800,5, -0x3b4820,3, +0x3b4800,3, +0x3b4810,3, +0x3b4820,6, +0x3b4880,9, +0x3b48c0,9, +0x3b4900,8, +0x3b4938,2, +0x3b4944,1, +0x3b4954,3, +0x3b4980,8, +0x3b49b8,2, +0x3b49c4,1, +0x3b49d4,3, 0x3b5000,3, -0x3b5018,4, +0x3b5018,8, 0x3b5100,56, 0x3b51f0,1, 0x3b5400,3, -0x3b5418,4, +0x3b5418,8, 0x3b5500,56, 0x3b55f0,1, -0x3b5800,5, -0x3b5820,3, +0x3b5800,3, +0x3b5810,3, +0x3b5820,6, +0x3b5880,9, +0x3b58c0,9, +0x3b5900,8, +0x3b5938,2, +0x3b5944,1, +0x3b5954,3, +0x3b5980,8, +0x3b59b8,2, +0x3b59c4,1, +0x3b59d4,3, 0x3b6004,7, 0x3b6024,1, -0x3b6034,3, +0x3b6030,4, 0x3b6300,5, -0x3b631c,1, +0x3b631c,2, 0x3b6600,10, 0x3b6630,1, -0x3b6680,10, -0x3b66b0,1, +0x3b6640,10, +0x3b6670,1, 0x3b6700,10, 0x3b6730,1, -0x3b6780,10, -0x3b67b0,1, -0x3b6800,47, -0x3b6910,14, -0x3b6e00,1, +0x3b6740,10, +0x3b6770,1, +0x3b6800,19, +0x3b6890,15, +0x3b6910,15, +0x3b6990,10, +0x3b6ab8,4, +0x3b6b00,3, +0x3b6e00,6, 0x3b7000,65, +0x3b7800,6, +0x3b7820,6, +0x3b7840,6, +0x3b7860,6, +0x3b7880,3, +0x3b7900,6, +0x3b7920,6, +0x3b7940,6, +0x3b7960,6, +0x3b7980,3, +0x3b7a00,6, +0x3b7a20,3, +0x3b7a40,7, +0x3b7a80,7, +0x3b7ac0,9, +0x3b7b00,9, +0x3b7b40,10, +0x3b7b80,10, +0x3b7bc0,10, +0x3b7c00,10, +0x3b7c40,10, +0x3b7c80,10, +0x3b7cc0,3, +0x3b7e40,7, +0x3b7e60,7, +0x3b7e80,7, +0x3b7ea0,7, +0x3b7ec0,7, +0x3b7ee0,7, +0x3b7f00,7, +0x3b7f20,7, +0x3b7f40,7, +0x3b7f60,4, +0x3b7f78,13, 0x3b8000,2, 0x3b800c,3, 0x3b8028,2, @@ -17224,7 +20513,7 @@ 0x3b9828,3, 0x3b9850,3, 0x3b9878,3, -0x3b98a0,7, +0x3b98a0,8, 0x3b99ac,1, 0x3b99d8,4, 0x3b9a00,6, @@ -17288,9 +20577,9 @@ 0x3c0c80,13, 0x3c0cc0,12, 0x3c0d00,14, -0x3c0d40,2, +0x3c0d40,4, 0x3c0d80,14, -0x3c0dc0,2, +0x3c0dc0,4, 0x3c0e00,11, 0x3c0e40,6, 0x3c0e60,6, @@ -17302,32 +20591,34 @@ 0x3c1050,3, 0x3c1080,42, 0x3c1140,10, -0x3c1180,3, -0x3c1190,2, +0x3c1180,1, 0x3c119c,15, -0x3c1200,9, +0x3c1200,12, 0x3c1300,1, 0x3c1308,6, 0x3c1324,10, 0x3c1380,1, 0x3c1388,6, 0x3c13a4,10, -0x3c1400,6, -0x3c1420,6, -0x3c1500,5, -0x3c1520,4, -0x3c1540,5, -0x3c1560,4, -0x3c1800,24, +0x3c1400,7, +0x3c1420,7, +0x3c1500,12, +0x3c1540,12, +0x3c1580,4, +0x3c1800,14, +0x3c183c,9, 0x3c1864,6, -0x3c1880,8, -0x3c1900,24, +0x3c1880,2, +0x3c1890,4, +0x3c1900,14, +0x3c193c,9, 0x3c1964,6, -0x3c1980,8, -0x3c1a00,17, -0x3c1a48,6, -0x3c1a80,17, -0x3c1ac8,6, +0x3c1980,2, +0x3c1990,4, +0x3c1a00,16, +0x3c1a50,4, +0x3c1a80,16, +0x3c1ad0,4, 0x3c1b00,6, 0x3c1b20,6, 0x3c1b40,3, @@ -17356,6 +20647,7 @@ 0x3c1ec0,7, 0x3c1ee0,7, 0x3c1f00,12, +0x3c1f34,2, 0x3c1f40,3, 0x3c1f50,8, 0x3c2000,4, @@ -17408,9 +20700,9 @@ 0x3c2c80,13, 0x3c2cc0,12, 0x3c2d00,14, -0x3c2d40,2, +0x3c2d40,4, 0x3c2d80,14, -0x3c2dc0,2, +0x3c2dc0,4, 0x3c2e00,11, 0x3c2e40,6, 0x3c2e60,6, @@ -17422,32 +20714,34 @@ 0x3c3050,3, 0x3c3080,42, 0x3c3140,10, -0x3c3180,3, -0x3c3190,2, +0x3c3180,1, 0x3c319c,15, -0x3c3200,9, +0x3c3200,12, 0x3c3300,1, 0x3c3308,6, 0x3c3324,10, 0x3c3380,1, 0x3c3388,6, 0x3c33a4,10, -0x3c3400,6, -0x3c3420,6, -0x3c3500,5, -0x3c3520,4, -0x3c3540,5, -0x3c3560,4, -0x3c3800,24, +0x3c3400,7, +0x3c3420,7, +0x3c3500,12, +0x3c3540,12, +0x3c3580,4, +0x3c3800,14, +0x3c383c,9, 0x3c3864,6, -0x3c3880,8, -0x3c3900,24, +0x3c3880,2, +0x3c3890,4, +0x3c3900,14, +0x3c393c,9, 0x3c3964,6, -0x3c3980,8, -0x3c3a00,17, -0x3c3a48,6, -0x3c3a80,17, -0x3c3ac8,6, +0x3c3980,2, +0x3c3990,4, +0x3c3a00,16, +0x3c3a50,4, +0x3c3a80,16, +0x3c3ad0,4, 0x3c3b00,6, 0x3c3b20,6, 0x3c3b40,3, @@ -17476,48 +20770,39 @@ 0x3c3ec0,7, 0x3c3ee0,7, 0x3c3f00,12, +0x3c3f34,2, 0x3c3f40,3, 0x3c3f50,8, 0x3c4000,29, 0x3c4078,4, 0x3c4090,2, -0x3c40a0,2, -0x3c40b0,3, +0x3c40a0,7, 0x3c40c0,11, 0x3c4100,14, 0x3c4140,14, 0x3c4180,61, 0x3c4278,4, 0x3c4290,2, -0x3c42a0,2, -0x3c42b0,3, +0x3c42a0,7, 0x3c42c0,11, 0x3c4300,14, 0x3c4340,14, 0x3c4380,61, 0x3c4478,4, 0x3c4490,2, -0x3c44a0,2, -0x3c44b0,3, +0x3c44a0,7, 0x3c44c0,11, 0x3c4500,14, 0x3c4540,14, 0x3c4580,61, 0x3c4678,4, 0x3c4690,2, -0x3c46a0,2, -0x3c46b0,3, +0x3c46a0,7, 0x3c46c0,11, 0x3c4700,14, 0x3c4740,14, 0x3c4780,62, -0x3c487c,1, -0x3c4a00,8, -0x3c4a24,15, -0x3c4a64,23, -0x3c4ac4,6, -0x3c4b00,4, -0x3c4b20,3, +0x3c487c,6, 0x3c4c00,6, 0x3c4c40,14, 0x3c4c80,9, @@ -17542,43 +20827,33 @@ 0x3c5000,29, 0x3c5078,4, 0x3c5090,2, -0x3c50a0,2, -0x3c50b0,3, +0x3c50a0,7, 0x3c50c0,11, 0x3c5100,14, 0x3c5140,14, 0x3c5180,61, 0x3c5278,4, 0x3c5290,2, -0x3c52a0,2, -0x3c52b0,3, +0x3c52a0,7, 0x3c52c0,11, 0x3c5300,14, 0x3c5340,14, 0x3c5380,61, 0x3c5478,4, 0x3c5490,2, -0x3c54a0,2, -0x3c54b0,3, +0x3c54a0,7, 0x3c54c0,11, 0x3c5500,14, 0x3c5540,14, 0x3c5580,61, 0x3c5678,4, 0x3c5690,2, -0x3c56a0,2, -0x3c56b0,3, +0x3c56a0,7, 0x3c56c0,11, 0x3c5700,14, 0x3c5740,14, 0x3c5780,62, -0x3c587c,1, -0x3c5a00,8, -0x3c5a24,15, -0x3c5a64,23, -0x3c5ac4,6, -0x3c5b00,4, -0x3c5b20,3, +0x3c587c,6, 0x3c5c00,6, 0x3c5c40,14, 0x3c5c80,9, @@ -17614,8 +20889,7 @@ 0x3c6424,15, 0x3c6464,15, 0x3c64a4,15, -0x3c64e4,23, -0x3c6544,6, +0x3c64e4,30, 0x3c6580,10, 0x3c65ac,1, 0x3c65b4,5, @@ -17623,7 +20897,8 @@ 0x3c65d4,5, 0x3c65ec,1, 0x3c65f4,13, -0x3c6680,7, +0x3c6680,4, +0x3c6694,2, 0x3c66a0,5, 0x3c66c0,5, 0x3c66e0,4, @@ -17659,10 +20934,11 @@ 0x3c7200,6, 0x3c7220,6, 0x3c7240,3, -0x3c7400,5, +0x3c7400,1, +0x3c7408,3, 0x3c7438,1, 0x3c7444,1, -0x3c7450,4, +0x3c7450,6, 0x3c7500,7, 0x3c7520,6, 0x3c7540,6, @@ -17670,19 +20946,21 @@ 0x3c7570,1, 0x3c8000,6, 0x3c8020,3, -0x3c8030,3, +0x3c8030,1, +0x3c8038,4, 0x3c8050,1, 0x3c8100,6, 0x3c8120,10, 0x3c8150,10, 0x3c8180,10, 0x3c81b0,6, -0x3c81d0,10, +0x3c81d0,6, +0x3c81f0,2, 0x3c8400,1, 0x3c8428,1, 0x3c8450,1, 0x3c8478,1, -0x3c84a0,6, +0x3c84a0,7, 0x3c85ac,1, 0x3c85d8,4, 0x3c8600,6, @@ -17703,19 +20981,19 @@ 0x3c89d8,2, 0x3c89e4,1, 0x3c89f4,3, -0x3c9000,4, 0x3c9020,4, 0x3c9040,11, -0x3c9070,3, +0x3c9074,2, 0x3c9080,4, 0x3c90b0,22, 0x3c9110,2, 0x3c9120,22, 0x3c9180,1, 0x3c91a0,6, +0x3c91c0,8, 0x3c9200,42, 0x3c92c0,1, -0x3c92c8,3, +0x3c92c8,13, 0x3c9300,25, 0x3c936c,4, 0x3c9380,2, @@ -17724,25 +21002,26 @@ 0x3c9404,3, 0x3c9420,11, 0x3c9480,6, -0x3c9500,6, +0x3c9500,1, 0x3c9520,6, 0x3c9540,3, 0x3c9550,7, -0x3c9570,4, -0x3c9800,410, -0x3ca000,4, +0x3c9570,18, +0x3c95bc,5, +0x3c9800,448, 0x3ca020,4, 0x3ca040,11, -0x3ca070,3, +0x3ca074,2, 0x3ca080,4, 0x3ca0b0,22, 0x3ca110,2, 0x3ca120,22, 0x3ca180,1, 0x3ca1a0,6, +0x3ca1c0,8, 0x3ca200,42, 0x3ca2c0,1, -0x3ca2c8,3, +0x3ca2c8,13, 0x3ca300,25, 0x3ca36c,4, 0x3ca380,2, @@ -17751,25 +21030,26 @@ 0x3ca404,3, 0x3ca420,11, 0x3ca480,6, -0x3ca500,6, +0x3ca500,1, 0x3ca520,6, 0x3ca540,3, 0x3ca550,7, -0x3ca570,4, -0x3ca800,410, -0x3cb000,4, +0x3ca570,18, +0x3ca5bc,5, +0x3ca800,448, 0x3cb020,4, 0x3cb040,11, -0x3cb070,3, +0x3cb074,2, 0x3cb080,4, 0x3cb0b0,22, 0x3cb110,2, 0x3cb120,22, 0x3cb180,1, 0x3cb1a0,6, +0x3cb1c0,8, 0x3cb200,42, 0x3cb2c0,1, -0x3cb2c8,3, +0x3cb2c8,13, 0x3cb300,25, 0x3cb36c,4, 0x3cb380,2, @@ -17778,25 +21058,26 @@ 0x3cb404,3, 0x3cb420,11, 0x3cb480,6, -0x3cb500,6, +0x3cb500,1, 0x3cb520,6, 0x3cb540,3, 0x3cb550,7, -0x3cb570,4, -0x3cb800,410, -0x3cc000,4, +0x3cb570,18, +0x3cb5bc,5, +0x3cb800,448, 0x3cc020,4, 0x3cc040,11, -0x3cc070,3, +0x3cc074,2, 0x3cc080,4, 0x3cc0b0,22, 0x3cc110,2, 0x3cc120,22, 0x3cc180,1, 0x3cc1a0,6, +0x3cc1c0,8, 0x3cc200,42, 0x3cc2c0,1, -0x3cc2c8,3, +0x3cc2c8,13, 0x3cc300,25, 0x3cc36c,4, 0x3cc380,2, @@ -17805,12 +21086,13 @@ 0x3cc404,3, 0x3cc420,11, 0x3cc480,6, -0x3cc500,6, +0x3cc500,1, 0x3cc520,6, 0x3cc540,3, 0x3cc550,7, -0x3cc570,4, -0x3cc800,410, +0x3cc570,18, +0x3cc5bc,5, +0x3cc800,448, 0x3cf800,5, 0x3cf818,1, 0x3cf854,6, @@ -17836,42 +21118,102 @@ 0x3cfba4,1, 0x3cfbac,2, 0x3d4000,3, -0x3d4018,4, +0x3d4018,8, 0x3d4100,56, 0x3d41f0,1, 0x3d4400,3, -0x3d4418,4, +0x3d4418,8, 0x3d4500,56, 0x3d45f0,1, -0x3d4800,5, -0x3d4820,3, +0x3d4800,3, +0x3d4810,3, +0x3d4820,6, +0x3d4880,9, +0x3d48c0,9, +0x3d4900,8, +0x3d4938,2, +0x3d4944,1, +0x3d4954,3, +0x3d4980,8, +0x3d49b8,2, +0x3d49c4,1, +0x3d49d4,3, 0x3d5000,3, -0x3d5018,4, +0x3d5018,8, 0x3d5100,56, 0x3d51f0,1, 0x3d5400,3, -0x3d5418,4, +0x3d5418,8, 0x3d5500,56, 0x3d55f0,1, -0x3d5800,5, -0x3d5820,3, +0x3d5800,3, +0x3d5810,3, +0x3d5820,6, +0x3d5880,9, +0x3d58c0,9, +0x3d5900,8, +0x3d5938,2, +0x3d5944,1, +0x3d5954,3, +0x3d5980,8, +0x3d59b8,2, +0x3d59c4,1, +0x3d59d4,3, 0x3d6004,7, 0x3d6024,1, -0x3d6034,3, +0x3d6030,4, 0x3d6300,5, -0x3d631c,1, +0x3d631c,2, 0x3d6600,10, 0x3d6630,1, -0x3d6680,10, -0x3d66b0,1, +0x3d6640,10, +0x3d6670,1, 0x3d6700,10, 0x3d6730,1, -0x3d6780,10, -0x3d67b0,1, -0x3d6800,47, -0x3d6910,14, -0x3d6e00,1, +0x3d6740,10, +0x3d6770,1, +0x3d6800,19, +0x3d6890,15, +0x3d6910,15, +0x3d6990,10, +0x3d6ab8,4, +0x3d6b00,3, +0x3d6e00,6, 0x3d7000,65, +0x3d7800,6, +0x3d7820,6, +0x3d7840,6, +0x3d7860,6, +0x3d7880,3, +0x3d7900,6, +0x3d7920,6, +0x3d7940,6, +0x3d7960,6, +0x3d7980,3, +0x3d7a00,6, +0x3d7a20,3, +0x3d7a40,7, +0x3d7a80,7, +0x3d7ac0,9, +0x3d7b00,9, +0x3d7b40,10, +0x3d7b80,10, +0x3d7bc0,10, +0x3d7c00,10, +0x3d7c40,10, +0x3d7c80,10, +0x3d7cc0,3, +0x3d7e40,7, +0x3d7e60,7, +0x3d7e80,7, +0x3d7ea0,7, +0x3d7ec0,7, +0x3d7ee0,7, +0x3d7f00,7, +0x3d7f20,7, +0x3d7f40,7, +0x3d7f60,4, +0x3d7f78,13, 0x3d8000,2, 0x3d800c,3, 0x3d8028,2, @@ -17900,7 +21242,7 @@ 0x3d9828,3, 0x3d9850,3, 0x3d9878,3, -0x3d98a0,7, +0x3d98a0,8, 0x3d99ac,1, 0x3d99d8,4, 0x3d9a00,6, @@ -17964,9 +21306,9 @@ 0x3e0c80,13, 0x3e0cc0,12, 0x3e0d00,14, -0x3e0d40,2, +0x3e0d40,4, 0x3e0d80,14, -0x3e0dc0,2, +0x3e0dc0,4, 0x3e0e00,11, 0x3e0e40,6, 0x3e0e60,6, @@ -17978,32 +21320,34 @@ 0x3e1050,3, 0x3e1080,42, 0x3e1140,10, -0x3e1180,3, -0x3e1190,2, +0x3e1180,1, 0x3e119c,15, -0x3e1200,9, +0x3e1200,12, 0x3e1300,1, 0x3e1308,6, 0x3e1324,10, 0x3e1380,1, 0x3e1388,6, 0x3e13a4,10, -0x3e1400,6, -0x3e1420,6, -0x3e1500,5, -0x3e1520,4, -0x3e1540,5, -0x3e1560,4, -0x3e1800,24, +0x3e1400,7, +0x3e1420,7, +0x3e1500,12, +0x3e1540,12, +0x3e1580,4, +0x3e1800,14, +0x3e183c,9, 0x3e1864,6, -0x3e1880,8, -0x3e1900,24, +0x3e1880,2, +0x3e1890,4, +0x3e1900,14, +0x3e193c,9, 0x3e1964,6, -0x3e1980,8, -0x3e1a00,17, -0x3e1a48,6, -0x3e1a80,17, -0x3e1ac8,6, +0x3e1980,2, +0x3e1990,4, +0x3e1a00,16, +0x3e1a50,4, +0x3e1a80,16, +0x3e1ad0,4, 0x3e1b00,6, 0x3e1b20,6, 0x3e1b40,3, @@ -18032,6 +21376,7 @@ 0x3e1ec0,7, 0x3e1ee0,7, 0x3e1f00,12, +0x3e1f34,2, 0x3e1f40,3, 0x3e1f50,8, 0x3e2000,4, @@ -18084,9 +21429,9 @@ 0x3e2c80,13, 0x3e2cc0,12, 0x3e2d00,14, -0x3e2d40,2, +0x3e2d40,4, 0x3e2d80,14, -0x3e2dc0,2, +0x3e2dc0,4, 0x3e2e00,11, 0x3e2e40,6, 0x3e2e60,6, @@ -18098,32 +21443,34 @@ 0x3e3050,3, 0x3e3080,42, 0x3e3140,10, -0x3e3180,3, -0x3e3190,2, +0x3e3180,1, 0x3e319c,15, -0x3e3200,9, +0x3e3200,12, 0x3e3300,1, 0x3e3308,6, 0x3e3324,10, 0x3e3380,1, 0x3e3388,6, 0x3e33a4,10, -0x3e3400,6, -0x3e3420,6, -0x3e3500,5, -0x3e3520,4, -0x3e3540,5, -0x3e3560,4, -0x3e3800,24, +0x3e3400,7, +0x3e3420,7, +0x3e3500,12, +0x3e3540,12, +0x3e3580,4, +0x3e3800,14, +0x3e383c,9, 0x3e3864,6, -0x3e3880,8, -0x3e3900,24, +0x3e3880,2, +0x3e3890,4, +0x3e3900,14, +0x3e393c,9, 0x3e3964,6, -0x3e3980,8, -0x3e3a00,17, -0x3e3a48,6, -0x3e3a80,17, -0x3e3ac8,6, +0x3e3980,2, +0x3e3990,4, +0x3e3a00,16, +0x3e3a50,4, +0x3e3a80,16, +0x3e3ad0,4, 0x3e3b00,6, 0x3e3b20,6, 0x3e3b40,3, @@ -18152,48 +21499,39 @@ 0x3e3ec0,7, 0x3e3ee0,7, 0x3e3f00,12, +0x3e3f34,2, 0x3e3f40,3, 0x3e3f50,8, 0x3e4000,29, 0x3e4078,4, 0x3e4090,2, -0x3e40a0,2, -0x3e40b0,3, +0x3e40a0,7, 0x3e40c0,11, 0x3e4100,14, 0x3e4140,14, 0x3e4180,61, 0x3e4278,4, 0x3e4290,2, -0x3e42a0,2, -0x3e42b0,3, +0x3e42a0,7, 0x3e42c0,11, 0x3e4300,14, 0x3e4340,14, 0x3e4380,61, 0x3e4478,4, 0x3e4490,2, -0x3e44a0,2, -0x3e44b0,3, +0x3e44a0,7, 0x3e44c0,11, 0x3e4500,14, 0x3e4540,14, 0x3e4580,61, 0x3e4678,4, 0x3e4690,2, -0x3e46a0,2, -0x3e46b0,3, +0x3e46a0,7, 0x3e46c0,11, 0x3e4700,14, 0x3e4740,14, 0x3e4780,62, -0x3e487c,1, -0x3e4a00,8, -0x3e4a24,15, -0x3e4a64,23, -0x3e4ac4,6, -0x3e4b00,4, -0x3e4b20,3, +0x3e487c,6, 0x3e4c00,6, 0x3e4c40,14, 0x3e4c80,9, @@ -18218,43 +21556,33 @@ 0x3e5000,29, 0x3e5078,4, 0x3e5090,2, -0x3e50a0,2, -0x3e50b0,3, +0x3e50a0,7, 0x3e50c0,11, 0x3e5100,14, 0x3e5140,14, 0x3e5180,61, 0x3e5278,4, 0x3e5290,2, -0x3e52a0,2, -0x3e52b0,3, +0x3e52a0,7, 0x3e52c0,11, 0x3e5300,14, 0x3e5340,14, 0x3e5380,61, 0x3e5478,4, 0x3e5490,2, -0x3e54a0,2, -0x3e54b0,3, +0x3e54a0,7, 0x3e54c0,11, 0x3e5500,14, 0x3e5540,14, 0x3e5580,61, 0x3e5678,4, 0x3e5690,2, -0x3e56a0,2, -0x3e56b0,3, +0x3e56a0,7, 0x3e56c0,11, 0x3e5700,14, 0x3e5740,14, 0x3e5780,62, -0x3e587c,1, -0x3e5a00,8, -0x3e5a24,15, -0x3e5a64,23, -0x3e5ac4,6, -0x3e5b00,4, -0x3e5b20,3, +0x3e587c,6, 0x3e5c00,6, 0x3e5c40,14, 0x3e5c80,9, @@ -18290,8 +21618,7 @@ 0x3e6424,15, 0x3e6464,15, 0x3e64a4,15, -0x3e64e4,23, -0x3e6544,6, +0x3e64e4,30, 0x3e6580,10, 0x3e65ac,1, 0x3e65b4,5, @@ -18299,7 +21626,8 @@ 0x3e65d4,5, 0x3e65ec,1, 0x3e65f4,13, -0x3e6680,7, +0x3e6680,4, +0x3e6694,2, 0x3e66a0,5, 0x3e66c0,5, 0x3e66e0,4, @@ -18335,10 +21663,11 @@ 0x3e7200,6, 0x3e7220,6, 0x3e7240,3, -0x3e7400,5, +0x3e7400,1, +0x3e7408,3, 0x3e7438,1, 0x3e7444,1, -0x3e7450,4, +0x3e7450,6, 0x3e7500,7, 0x3e7520,6, 0x3e7540,6, @@ -18346,19 +21675,21 @@ 0x3e7570,1, 0x3e8000,6, 0x3e8020,3, -0x3e8030,3, +0x3e8030,1, +0x3e8038,4, 0x3e8050,1, 0x3e8100,6, 0x3e8120,10, 0x3e8150,10, 0x3e8180,10, 0x3e81b0,6, -0x3e81d0,10, +0x3e81d0,6, +0x3e81f0,2, 0x3e8400,1, 0x3e8428,1, 0x3e8450,1, 0x3e8478,1, -0x3e84a0,6, +0x3e84a0,7, 0x3e85ac,1, 0x3e85d8,4, 0x3e8600,6, @@ -18379,19 +21710,19 @@ 0x3e89d8,2, 0x3e89e4,1, 0x3e89f4,3, -0x3e9000,4, 0x3e9020,4, 0x3e9040,11, -0x3e9070,3, +0x3e9074,2, 0x3e9080,4, 0x3e90b0,22, 0x3e9110,2, 0x3e9120,22, 0x3e9180,1, 0x3e91a0,6, +0x3e91c0,8, 0x3e9200,42, 0x3e92c0,1, -0x3e92c8,3, +0x3e92c8,13, 0x3e9300,25, 0x3e936c,4, 0x3e9380,2, @@ -18400,25 +21731,26 @@ 0x3e9404,3, 0x3e9420,11, 0x3e9480,6, -0x3e9500,6, +0x3e9500,1, 0x3e9520,6, 0x3e9540,3, 0x3e9550,7, -0x3e9570,4, -0x3e9800,410, -0x3ea000,4, +0x3e9570,18, +0x3e95bc,5, +0x3e9800,448, 0x3ea020,4, 0x3ea040,11, -0x3ea070,3, +0x3ea074,2, 0x3ea080,4, 0x3ea0b0,22, 0x3ea110,2, 0x3ea120,22, 0x3ea180,1, 0x3ea1a0,6, +0x3ea1c0,8, 0x3ea200,42, 0x3ea2c0,1, -0x3ea2c8,3, +0x3ea2c8,13, 0x3ea300,25, 0x3ea36c,4, 0x3ea380,2, @@ -18427,25 +21759,26 @@ 0x3ea404,3, 0x3ea420,11, 0x3ea480,6, -0x3ea500,6, +0x3ea500,1, 0x3ea520,6, 0x3ea540,3, 0x3ea550,7, -0x3ea570,4, -0x3ea800,410, -0x3eb000,4, +0x3ea570,18, +0x3ea5bc,5, +0x3ea800,448, 0x3eb020,4, 0x3eb040,11, -0x3eb070,3, +0x3eb074,2, 0x3eb080,4, 0x3eb0b0,22, 0x3eb110,2, 0x3eb120,22, 0x3eb180,1, 0x3eb1a0,6, +0x3eb1c0,8, 0x3eb200,42, 0x3eb2c0,1, -0x3eb2c8,3, +0x3eb2c8,13, 0x3eb300,25, 0x3eb36c,4, 0x3eb380,2, @@ -18454,25 +21787,26 @@ 0x3eb404,3, 0x3eb420,11, 0x3eb480,6, -0x3eb500,6, +0x3eb500,1, 0x3eb520,6, 0x3eb540,3, 0x3eb550,7, -0x3eb570,4, -0x3eb800,410, -0x3ec000,4, +0x3eb570,18, +0x3eb5bc,5, +0x3eb800,448, 0x3ec020,4, 0x3ec040,11, -0x3ec070,3, +0x3ec074,2, 0x3ec080,4, 0x3ec0b0,22, 0x3ec110,2, 0x3ec120,22, 0x3ec180,1, 0x3ec1a0,6, +0x3ec1c0,8, 0x3ec200,42, 0x3ec2c0,1, -0x3ec2c8,3, +0x3ec2c8,13, 0x3ec300,25, 0x3ec36c,4, 0x3ec380,2, @@ -18481,12 +21815,13 @@ 0x3ec404,3, 0x3ec420,11, 0x3ec480,6, -0x3ec500,6, +0x3ec500,1, 0x3ec520,6, 0x3ec540,3, 0x3ec550,7, -0x3ec570,4, -0x3ec800,410, +0x3ec570,18, +0x3ec5bc,5, +0x3ec800,448, 0x3ef800,5, 0x3ef818,1, 0x3ef854,6, @@ -18512,42 +21847,102 @@ 0x3efba4,1, 0x3efbac,2, 0x3f4000,3, -0x3f4018,4, +0x3f4018,8, 0x3f4100,56, 0x3f41f0,1, 0x3f4400,3, -0x3f4418,4, +0x3f4418,8, 0x3f4500,56, 0x3f45f0,1, -0x3f4800,5, -0x3f4820,3, +0x3f4800,3, +0x3f4810,3, +0x3f4820,6, +0x3f4880,9, +0x3f48c0,9, +0x3f4900,8, +0x3f4938,2, +0x3f4944,1, +0x3f4954,3, +0x3f4980,8, +0x3f49b8,2, +0x3f49c4,1, +0x3f49d4,3, 0x3f5000,3, -0x3f5018,4, +0x3f5018,8, 0x3f5100,56, 0x3f51f0,1, 0x3f5400,3, -0x3f5418,4, +0x3f5418,8, 0x3f5500,56, 0x3f55f0,1, -0x3f5800,5, -0x3f5820,3, +0x3f5800,3, +0x3f5810,3, +0x3f5820,6, +0x3f5880,9, +0x3f58c0,9, +0x3f5900,8, +0x3f5938,2, +0x3f5944,1, +0x3f5954,3, +0x3f5980,8, +0x3f59b8,2, +0x3f59c4,1, +0x3f59d4,3, 0x3f6004,7, 0x3f6024,1, -0x3f6034,3, +0x3f6030,4, 0x3f6300,5, -0x3f631c,1, +0x3f631c,2, 0x3f6600,10, 0x3f6630,1, -0x3f6680,10, -0x3f66b0,1, +0x3f6640,10, +0x3f6670,1, 0x3f6700,10, 0x3f6730,1, -0x3f6780,10, -0x3f67b0,1, -0x3f6800,47, -0x3f6910,14, -0x3f6e00,1, +0x3f6740,10, +0x3f6770,1, +0x3f6800,19, +0x3f6890,15, +0x3f6910,15, +0x3f6990,10, +0x3f6ab8,4, +0x3f6b00,3, +0x3f6e00,6, 0x3f7000,65, +0x3f7800,6, +0x3f7820,6, +0x3f7840,6, +0x3f7860,6, +0x3f7880,3, +0x3f7900,6, +0x3f7920,6, +0x3f7940,6, +0x3f7960,6, +0x3f7980,3, +0x3f7a00,6, +0x3f7a20,3, +0x3f7a40,7, +0x3f7a80,7, +0x3f7ac0,9, +0x3f7b00,9, +0x3f7b40,10, +0x3f7b80,10, +0x3f7bc0,10, +0x3f7c00,10, +0x3f7c40,10, +0x3f7c80,10, +0x3f7cc0,3, +0x3f7e40,7, +0x3f7e60,7, +0x3f7e80,7, +0x3f7ea0,7, +0x3f7ec0,7, +0x3f7ee0,7, +0x3f7f00,7, +0x3f7f20,7, +0x3f7f40,7, +0x3f7f60,4, +0x3f7f78,13, 0x3f8000,2, 0x3f800c,3, 0x3f8028,2, @@ -18576,7 +21971,7 @@ 0x3f9828,3, 0x3f9850,3, 0x3f9878,3, -0x3f98a0,7, +0x3f98a0,8, 0x3f99ac,1, 0x3f99d8,4, 0x3f9a00,6, diff --git a/mstdump/mstdump_dbs/SwitchIB.csv b/mstdump/mstdump_dbs/SwitchIB.csv index 296e8c4..f1bb0d3 100644 --- a/mstdump/mstdump_dbs/SwitchIB.csv +++ b/mstdump/mstdump_dbs/SwitchIB.csv @@ -2010,8 +2010,7 @@ 0x060f80,6, 0x060fa0,7, 0x060fd8,2, -0x060fe4,1, -0x060ff0,10, +0x061000,6, 0x061020,16, 0x061084,1, 0x0610c0,16, @@ -2820,8 +2819,7 @@ 0x0c2070,3, 0x0c2080,6, 0x0c2100,9, -0x0c2204,1, -0x0c220c,6, +0x0c2220,1, 0x0c2240,13, 0x0c2280,16, 0x0c2400,8, @@ -4802,8 +4800,7 @@ 0x206070,3, 0x206080,6, 0x206100,9, -0x206204,1, -0x20620c,6, +0x206220,1, 0x206240,13, 0x206280,16, 0x206800,19, @@ -5280,8 +5277,7 @@ 0x216070,3, 0x216080,6, 0x216100,9, -0x216204,1, -0x21620c,6, +0x216220,1, 0x216240,13, 0x216280,16, 0x216800,19, @@ -5758,8 +5754,7 @@ 0x226070,3, 0x226080,6, 0x226100,9, -0x226204,1, -0x22620c,6, +0x226220,1, 0x226240,13, 0x226280,16, 0x226800,19, @@ -6236,8 +6231,7 @@ 0x236070,3, 0x236080,6, 0x236100,9, -0x236204,1, -0x23620c,6, +0x236220,1, 0x236240,13, 0x236280,16, 0x236800,19, @@ -6714,8 +6708,7 @@ 0x246070,3, 0x246080,6, 0x246100,9, -0x246204,1, -0x24620c,6, +0x246220,1, 0x246240,13, 0x246280,16, 0x246400,8, @@ -7209,8 +7202,7 @@ 0x256070,3, 0x256080,6, 0x256100,9, -0x256204,1, -0x25620c,6, +0x256220,1, 0x256240,13, 0x256280,16, 0x256800,19, @@ -7687,8 +7679,7 @@ 0x266070,3, 0x266080,6, 0x266100,9, -0x266204,1, -0x26620c,6, +0x266220,1, 0x266240,13, 0x266280,16, 0x266800,19, @@ -8165,8 +8156,7 @@ 0x276070,3, 0x276080,6, 0x276100,9, -0x276204,1, -0x27620c,6, +0x276220,1, 0x276240,13, 0x276280,16, 0x276800,19, @@ -8643,8 +8633,7 @@ 0x286070,3, 0x286080,6, 0x286100,9, -0x286204,1, -0x28620c,6, +0x286220,1, 0x286240,13, 0x286280,16, 0x286800,19, @@ -9121,8 +9110,7 @@ 0x296070,3, 0x296080,6, 0x296100,9, -0x296204,1, -0x29620c,6, +0x296220,1, 0x296240,13, 0x296280,16, 0x296800,19, @@ -9599,8 +9587,7 @@ 0x2a6070,3, 0x2a6080,6, 0x2a6100,9, -0x2a6204,1, -0x2a620c,6, +0x2a6220,1, 0x2a6240,13, 0x2a6280,16, 0x2a6800,19, @@ -10077,8 +10064,7 @@ 0x2b6070,3, 0x2b6080,6, 0x2b6100,9, -0x2b6204,1, -0x2b620c,6, +0x2b6220,1, 0x2b6240,13, 0x2b6280,16, 0x2b6800,19, @@ -10555,8 +10541,7 @@ 0x2c6070,3, 0x2c6080,6, 0x2c6100,9, -0x2c6204,1, -0x2c620c,6, +0x2c6220,1, 0x2c6240,13, 0x2c6280,16, 0x2c6800,19, @@ -11033,8 +11018,7 @@ 0x2d6070,3, 0x2d6080,6, 0x2d6100,9, -0x2d6204,1, -0x2d620c,6, +0x2d6220,1, 0x2d6240,13, 0x2d6280,16, 0x2d6400,8, @@ -11528,8 +11512,7 @@ 0x2e6070,3, 0x2e6080,6, 0x2e6100,9, -0x2e6204,1, -0x2e620c,6, +0x2e6220,1, 0x2e6240,13, 0x2e6280,16, 0x2e6800,19, @@ -12006,8 +11989,7 @@ 0x2f6070,3, 0x2f6080,6, 0x2f6100,9, -0x2f6204,1, -0x2f620c,6, +0x2f6220,1, 0x2f6240,13, 0x2f6280,16, 0x2f6800,19, @@ -12484,8 +12466,7 @@ 0x306070,3, 0x306080,6, 0x306100,9, -0x306204,1, -0x30620c,6, +0x306220,1, 0x306240,13, 0x306280,16, 0x306800,19, @@ -12962,8 +12943,7 @@ 0x316070,3, 0x316080,6, 0x316100,9, -0x316204,1, -0x31620c,6, +0x316220,1, 0x316240,13, 0x316280,16, 0x316800,19, diff --git a/mtcr_ul/mtcr_ib.h b/mtcr_ul/mtcr_ib.h index 0ead95d..2a36327 100644 --- a/mtcr_ul/mtcr_ib.h +++ b/mtcr_ul/mtcr_ib.h @@ -28,7 +28,6 @@ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. - * */ /* diff --git a/mtcr_ul/mtcr_ib_ofed.c b/mtcr_ul/mtcr_ib_ofed.c index f917772..31f0a1e 100644 --- a/mtcr_ul/mtcr_ib_ofed.c +++ b/mtcr_ul/mtcr_ib_ofed.c @@ -28,7 +28,6 @@ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. - * */ /******************************************************** @@ -174,10 +173,8 @@ #define I2C_DEVICE_ID 0x56 #define I2C_MEMORY_ADDR 0 -#define MELLANOX_OUI0 0x2c9 -#define MELLANOX_OUI1 0xf45214 -#define SWITCHX_DEV_ID 0xc738 -#define CONNECTIB_DEV_ID 0x1011 +#define UNSUPP_DEVS_NUM 15 +#define DEVID_ADDRESS 0xf0014 // Convert BYTES - DWORDS with MEMCPY BE #define BYTES_TO_DWORD_BE(dw_dest, byte_src) do { u_int32_t tmp;\ @@ -527,28 +524,47 @@ int get_env_vars(ibvs_mad *ivm) -int is_smp_crspace_supported(ibvs_mad* h) +int is_vs_crspace_supported(ibvs_mad* h) { u_int8_t* p; u_int8_t mad_data[IB_SMP_DATA_SIZE] = {0}; u_int32_t dev_id; - u_int32_t vend_id; - + u_int32_t data = 0; + int i = 0; + u_int32_t unsupported_devs[UNSUPP_DEVS_NUM] = { + 0x6746, /* MT26438 [ConnectX-2 VPI w/ Virtualization+]"*/ + 0x6764, /* MT26468 [Mountain top]" */ + 0xbd34, /* IS4 IB SDR" */ + 0xbd35, /* IS4 IB DDR" */ + 0xbd36, /* IS4 IB QDR" */ + 0xfa66, /* BridgeX VPI up, E/FC down" */ + 0xfa7a, /* BridgeX EN up, E/FC down" */ + 0x1001, /* ConnectX-2 VF" */ + 0x1003, /* MT27500 [ConnectX-3]" */ + 0x1005, /* MT27510 Family" */ + 0x1007, /* MT27520 ConnectX-3 Pro Family" */ + + }; + uint64_t ret = ibvsmad_craccess_rw_vs(h, DEVID_ADDRESS, IB_MAD_METHOD_GET, 1, &data); + if (!ret) { + return 1; + } + DEBUG(("Vendor Specific is not supported, checking SMP .. ")); p = h->smp_query_via(mad_data, &h->portid, IB_ATTR_NODE_INFO, 0, 0, h->srcport); if (NULL == p) { - return 0; + return 1; } dev_id = h->mad_get_field(mad_data, 0, IB_NODE_DEVID_F); - vend_id = h->mad_get_field(mad_data, 0, IB_NODE_VENDORID_F); - if ((MELLANOX_OUI0 == vend_id || MELLANOX_OUI1 == vend_id) && - (CONNECTIB_DEV_ID == dev_id || SWITCHX_DEV_ID == dev_id)) { - return 1; - } else { - return 0; + for (i = 0; i < UNSUPP_DEVS_NUM; i++) { + if (dev_id == unsupported_devs[i]) { + return 1; + } } + + return 0; } @@ -572,6 +588,7 @@ int mib_open(const char *name, mfile *mf, int mad_init) char *nbuf = NULL; char *path_str, *p; int rc = -1; + int lid_provided = 0; char *sl_str; char* first_comma; @@ -600,11 +617,13 @@ int mib_open(const char *name, mfile *mf, int mad_init) dest_type = IB_DEST_LID; path_str = nbuf + 6; } else if ((p = strstr(nbuf, "lid-")) != 0) { + lid_provided = 1; dest_type = IB_DEST_LID; - path_str = p + 4; + path_str = p + 4; } else if ((p = strstr(nbuf, "lid_noinit-")) != 0) { - dest_type = IB_DEST_LID; + lid_provided = 1; + dest_type = IB_DEST_LID; path_str = p + 11; mad_init = 0; @@ -689,8 +708,14 @@ int mib_open(const char *name, mfile *mf, int mad_init) // For ConnectIB: // If the target device is connectib or SX and we use LID rout, use the SMP LID route and not the GPM - if (is_smp_crspace_supported(ivm)) { - ivm->use_smp = 1; + if (lid_provided) { + if (is_vs_crspace_supported(ivm)) { + DEBUG(("For this LID using VS MAD")); + ivm->use_smp = 0; + } else { + DEBUG(("For this LID using SMP MAD")); + ivm->use_smp = 1; + } } #define MTCR_IBSL_ENV "MTCR_IB_SL" diff --git a/mtcr_ul/mtcr_icmd_cif.h b/mtcr_ul/mtcr_icmd_cif.h index 8fbe11a..28a6abb 100644 --- a/mtcr_ul/mtcr_icmd_cif.h +++ b/mtcr_ul/mtcr_icmd_cif.h @@ -28,7 +28,6 @@ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. - * */ #ifndef _MTCR_ICMD_CIF /* guard */ diff --git a/mtcr_ul/mtcr_int_defs.h b/mtcr_ul/mtcr_int_defs.h index cad9045..ea03cfa 100644 --- a/mtcr_ul/mtcr_int_defs.h +++ b/mtcr_ul/mtcr_int_defs.h @@ -28,7 +28,6 @@ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. - * */ #ifndef MTCR_INT_DEFS @@ -55,11 +54,13 @@ typedef struct icmd_params_t { int static_cfg_not_done_offs; }icmd_params; -typedef enum { - AS_ICMD = 1, - AS_CR_SPACE = 2, - AS_SEMAPHORE = 0xa -} address_space_t; +typedef struct tools_hcr_params_t { + int supp_cr_mbox; // 1: mbox supported , -1: mbox not supported +}tools_hcr_params; + +typedef struct access_reg_params_t { + int max_reg_size; +}access_reg_params; struct mfile_t { char* dev_name; @@ -86,9 +87,14 @@ struct mfile_t { //for ICMD access icmd_params icmd; + // for vendor specific pci capability int vsec_supp; u_int32_t vsec_addr; int address_space; + // for tools HCR access + tools_hcr_params hcr_params; + // for sending access registers + access_reg_params acc_reg_params; }; #endif diff --git a/mtcr_ul/mtcr_tools_cif.c b/mtcr_ul/mtcr_tools_cif.c index 70d6cbb..eca6da8 100644 --- a/mtcr_ul/mtcr_tools_cif.c +++ b/mtcr_ul/mtcr_tools_cif.c @@ -28,7 +28,6 @@ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. - * */ #include @@ -40,6 +39,7 @@ #include "mtcr_tools_cif.h" #define TOOLS_HCR_ADDR 0x80780 +#define CR_MBOX_ADDR 0xe0000 #define CMD_IF_SIZE 28 #define CMD_IF_WAIT_GO 2000 @@ -50,20 +50,24 @@ #define MBOX_READ_OP 0x71 #define REG_ACCESS_OP 0x3b -#ifdef ESS -#define MREAD4(offs, val) do {*val=READ_WORD(offs);} while (0) -#define MWRITE4(offs, val) do {WRITE_WORD(offs, val);} while (0) -#else -#define MREAD4(offs, val) do { if (mread4 (mf, offs, val) != 4) { \ - /*fprintf(stderr, "-E- Cr read (0x%08x) failed: %s(%d)\n", (u_int32_t)(offs), strerror(errno), (u_int32_t)errno);*/ \ - return 2; } /*printf("-D- %s:%d mread4: offs = %#x, val = %#x\n", __FUNCTION__, __LINE__, offs, val);*/\ - } while (0) - -#define MWRITE4(offs, val) do { if (mwrite4(mf, offs, val) != 4) { \ - /*fprintf(stderr, "-E- Cr write (0x%08x, 0x%08x) failed: %s(%d)\n", (u_int32_t)(offs), (u_int32_t)(val), strerror(errno), (u_int32_t)errno);*/ \ - return 2; } /*printf("-D- %s:%d mwrite4: offs = %#x, val = %#x\n", __FUNCTION__, __LINE__, offs, val);*/ \ - } while (0) -#endif +#define MREAD4_ADV(offs, val_ptr, action_on_fail) do {\ + if (mread4 (mf, offs, val_ptr) != 4) { \ + /*fprintf(stderr, "-E- Cr read (0x%08x) failed: %s(%d)\n", (u_int32_t)(offs), strerror(errno), (u_int32_t)errno);*/ \ + action_on_fail;\ + }\ + /*printf("-D- %s:%d mread4: offs = %#x, val = %#x\n", __FUNCTION__, __LINE__, offs, val);*/\ + } while (0) + +#define MWRITE4_ADV(offs, val, action_on_fail) do {\ + if (mwrite4(mf, offs, val) != 4) { \ + /*fprintf(stderr, "-E- Cr write (0x%08x, 0x%08x) failed: %s(%d)\n", (u_int32_t)(offs), (u_int32_t)(val), strerror(errno), (u_int32_t)errno);*/ \ + action_on_fail;\ + }\ + /*printf("-D- %s:%d mwrite4: offs = %#x, val = %#x\n", __FUNCTION__, __LINE__, offs, val);*/ \ + } while (0) +#define MREAD4(offs, val_ptr) MREAD4_ADV(offs, val_ptr, return ME_CR_ERROR) +#define MWRITE4(offs, val) MWRITE4_ADV(offs, val, return ME_CR_ERROR) + #define TOCPUn(s, n) do { \ u_int32_t ii; \ @@ -74,7 +78,7 @@ #if __BYTE_ORDER == __BIG_ENDIAN -u_int64_t swap_dwords_be(u_int8_t* buff) { +static u_int64_t swap_dwords_be(u_int8_t* buff) { u_int32_t first = *(u_int32_t*)(&buff[0]);\ u_int32_t second = *(u_int32_t*)(&buff[4]);\ u_int64_t dest = 0; @@ -83,14 +87,16 @@ u_int64_t swap_dwords_be(u_int8_t* buff) { return dest; } #else -u_int64_t swap_dwords_be(u_int8_t* buff) { +static u_int64_t swap_dwords_be(u_int8_t* buff) { return *((u_int64_t*)buff); } #endif typedef struct tools_cmdif_t { - u_int64_t in_param; - u_int64_t out_param; + u_int32_t in_param_h; + u_int32_t in_param_l; + u_int32_t out_param_h; + u_int32_t out_param_l; u_int32_t input_modifier; u_int16_t token; u_int16_t opcode; @@ -133,8 +139,8 @@ extern void mpci_change(mfile* mf); static void tools_cmdif_pack(tools_cmdif* cmd, u_int32_t* buf) { memset((char*)buf, 0, CMD_IF_SIZE); - buf[0] = EXTRACT64(cmd->in_param, 32, 32); - buf[1] = EXTRACT64(cmd->in_param, 0, 32); + buf[0] = cmd->in_param_h; + buf[1] = cmd->in_param_l; buf[2] = cmd->input_modifier; // out h // out l @@ -147,15 +153,14 @@ static void tools_cmdif_pack(tools_cmdif* cmd, u_int32_t* buf) { static void tools_cmdif_unpack(tools_cmdif* cmd, u_int32_t* buf) { memset(cmd, 0, sizeof(tools_cmdif)); - cmd->in_param = MERGE64(cmd->in_param, buf[0], 32, 32); - cmd->in_param = MERGE64(cmd->in_param, buf[1], 0, 32); + cmd->in_param_h = buf[0]; + cmd->in_param_l = buf[1]; cmd->input_modifier = buf[2]; - cmd->out_param = MERGE64(cmd->out_param, buf[3], 32, 32); - cmd->out_param = MERGE64(cmd->out_param, buf[4], 0, 32); + cmd->out_param_h = buf[3]; + cmd->out_param_l = buf[4]; cmd->opcode = EXTRACT(buf[6], 0, 12); cmd->opcode_modifier= EXTRACT(buf[6], 12, 4); - cmd->status = EXTRACT(buf[6], 24, 8); } @@ -170,6 +175,9 @@ static int tools_cmdif_flash_lock(mfile* mf, int lock_state) { return ME_SEM_LOCKED; } MREAD4(TOOLS_HCR_SEM, &word); + if (word) { + msleep(rand() % 5); + } } while (word); } else { MWRITE4(TOOLS_HCR_SEM, 0); @@ -222,7 +230,6 @@ static int tools_cmdif_send_cmd_int(mfile* mf, tools_cmdif* cmd) } // Prepare the date of the command we're gonna execute tools_cmdif_pack(cmd, raw_cmd); - if (mwrite4_block(mf, TOOLS_HCR_ADDR, raw_cmd, CMD_IF_SIZE) != CMD_IF_SIZE) { return ME_CR_ERROR; } @@ -249,9 +256,9 @@ static int tools_cmdif_send_cmd_int(mfile* mf, tools_cmdif* cmd) return ME_OK; } -int tools_cmdif_send_inline_cmd(mfile* mf, - u_int64_t in_param, - u_int64_t* out_param, +int tools_cmdif_send_inline_cmd_int(mfile* mf, + u_int32_t in_param[2], + u_int32_t out_param[2], u_int32_t input_modifier, u_int16_t opcode, u_int8_t opcode_modifier) @@ -261,7 +268,8 @@ int tools_cmdif_send_inline_cmd(mfile* mf, } tools_cmdif cmdif; memset(&cmdif, 0, sizeof(tools_cmdif)); - cmdif.in_param = in_param; + cmdif.in_param_l = in_param[0]; + cmdif.in_param_h = in_param[1]; cmdif.input_modifier = input_modifier; cmdif.opcode = opcode; cmdif.opcode_modifier = opcode_modifier; @@ -277,7 +285,8 @@ int tools_cmdif_send_inline_cmd(mfile* mf, tools_cmdif_flash_lock(mf, 0); mpci_change(mf); if (out_param) { - *out_param = cmdif.out_param; + out_param[0] = cmdif.out_param_l; + out_param[1] = cmdif.out_param_h; } if (rc || cmdif.status) { return (rc != ME_CMDIF_BAD_STATUS) ? rc : translate_status(cmdif.status); @@ -285,7 +294,24 @@ int tools_cmdif_send_inline_cmd(mfile* mf, return rc; } -static int tools_cmdif_mbox_read(mfile* mf, u_int32_t offset, u_int64_t* output) +int tools_cmdif_send_inline_cmd(mfile* mf, + u_int64_t in_param, + u_int64_t* out_param, + u_int32_t input_modifier, + u_int16_t opcode, + u_int8_t opcode_modifier) +{ + int rc; + in_param = swap_dwords_be((u_int8_t*)&in_param); + rc = tools_cmdif_send_inline_cmd_int(mf, (u_int32_t*)((u_int8_t*)&in_param), (u_int32_t*)out_param, input_modifier, opcode, opcode_modifier); + if (out_param) { + *out_param = swap_dwords_be((u_int8_t*)out_param); + } + return rc; +} + +// read from mailbox method. output[2] is in BigEndian +static int tools_cmdif_mbox_read(mfile* mf, u_int32_t offset, u_int32_t output[2]) { if (!mf || (offset & 0x1) != 0 || !output) {// offset should be quad word alligned (i.e only even dwords) return ME_BAD_PARAMS; @@ -297,8 +323,9 @@ static int tools_cmdif_mbox_read(mfile* mf, u_int32_t offset, u_int64_t* output) cmdif.opcode = MBOX_READ_OP; int rc = tools_cmdif_send_cmd_int(mf, &cmdif); - *output = cmdif.out_param; - //printf("-D- outparam: 0x%lx\n", cmdif.out_param); + // swap endianess because tools_cmdif_send_cmd_int returns output in CPU endianess + output[0] = __be32_to_cpu(cmdif.out_param_l); + output[1] = __be32_to_cpu(cmdif.out_param_h); if (rc || cmdif.status) { return (rc != ME_CMDIF_BAD_STATUS) ? rc : translate_status(cmdif.status); } @@ -306,17 +333,19 @@ static int tools_cmdif_mbox_read(mfile* mf, u_int32_t offset, u_int64_t* output) return ME_OK; } -static int tools_cmdif_mbox_write(mfile* mf, u_int32_t offset, u_int64_t input) +// write to mailbox method. input[2] is in BigEndian +static int tools_cmdif_mbox_write(mfile* mf, u_int32_t offset, u_int32_t input[2]) { if (!mf || (offset & 0x1) != 0) {// offset should be quad word alligned (i.e only even dwords) return ME_BAD_PARAMS; } tools_cmdif cmdif; memset(&cmdif, 0, sizeof(tools_cmdif)); - cmdif.in_param = input; + // swap endianess because tools_cmdif_send_cmd_int assumes input in CPU endianess + cmdif.in_param_l = __be32_to_cpu(input[0]); + cmdif.in_param_h = __be32_to_cpu(input[1]); cmdif.input_modifier = offset; // offset is in dwords cmdif.opcode = MBOX_WRITE_OP; - int rc = tools_cmdif_send_cmd_int(mf, &cmdif); if (rc || cmdif.status) { @@ -325,6 +354,28 @@ static int tools_cmdif_mbox_write(mfile* mf, u_int32_t offset, u_int64_t input) return ME_OK; } +static int tools_cmdif_cr_mbox_write(mfile* mf, u_int32_t offset, u_int8_t* data, int size) +{ + if (!mf || !data || (offset + size > TOOLS_HCR_MAX_MBOX)) { + return ME_BAD_PARAMS; + } + if (mwrite_buffer(mf,CR_MBOX_ADDR + offset, data, size) != size) { + return ME_CR_ERROR; + } + return ME_OK; +} + +static int tools_cmdif_cr_mbox_read(mfile* mf, u_int32_t offset, u_int8_t* data, int size) +{ + if (!mf || !data || (offset + size > TOOLS_HCR_MAX_MBOX)) { + return ME_BAD_PARAMS; + } + if (mread_buffer(mf, CR_MBOX_ADDR + offset, data, size) != size) { + return ME_CR_ERROR; + } + return ME_OK; +} + int tools_cmdif_is_supported(mfile *mf) { int rc = ME_OK; @@ -338,7 +389,8 @@ int tools_cmdif_is_supported(mfile *mf) goto cleanup; } // run mailbox write cmd (read command fails after driver restart or internal reset) - rc = tools_cmdif_mbox_write(mf, 0x0, 0); + u_int32_t writebuf[2] = {0}; + rc = tools_cmdif_mbox_write(mf, 0, writebuf); if (rc) { tools_cmdif_flash_lock(mf, 0); goto cleanup; @@ -349,37 +401,27 @@ cleanup: return rc; } -/* -static void read_entire_mbox(mfile* mf) +#define MAGIC 0xbadb00f +int tools_cmdif_is_cr_mbox_supported(mfile *mf) { - int i; int rc; - u_int64_t val= 0; - - printf("-D- reading entire mailbox\n"); - - for(i=0; i<256 ; i+=8) { - rc = tools_cmdif_mbox_read(mf, i/4, &val); - if (rc) { - printf("-D- rc:%d\n", rc); - } - printf("-D- 0x%x\n", (u_int32_t)val); - printf("-D- 0x%x\n", (u_int32_t)(val>>32)); + u_int32_t val = 0; + mpci_change(mf); + if ((rc = tools_cmdif_flash_lock(mf, 1))) { + goto cleanup_no_sem; } -} -*/ -/* -static void print_buffer(u_int8_t buffer[TOOLS_HCR_MAX_MBOX], const char* pre) -{ - int i; - u_int32_t *ptr = (u_int32_t*)buffer; - printf("-I- %s\n", pre); - for (i=0; i< 16; i++) { - printf("0x%x\n", ptr[i]); + // attempt to write/read from cr-mbox + MWRITE4_ADV(CR_MBOX_ADDR, MAGIC, rc = ME_CR_ERROR; goto cleanup); + MREAD4_ADV(CR_MBOX_ADDR, &val, rc = ME_CR_ERROR; goto cleanup); + cleanup: + tools_cmdif_flash_lock(mf, 0); +cleanup_no_sem: + mpci_change(mf); + if (rc) { + return rc; } - return; + return val == MAGIC ? ME_OK : ME_CMDIF_NOT_SUPP; } -*/ #define COMPLEMENT_TO_QUAD_ALLIGNED(byte_sz) \ ((byte_sz) + ((8 - ((byte_sz) & 7) == 8) ? 0 : (8 - ((byte_sz) & 7)))) @@ -392,7 +434,8 @@ int tools_cmdif_send_mbox_command_int(mfile* mf, void* data, int write_data_size, int read_data_size, - int skip_write) + int skip_write, + int use_cr_mbox) { int read_data_size_quad_alligned = COMPLEMENT_TO_QUAD_ALLIGNED(read_data_size); int write_data_size_quad_alligned = COMPLEMENT_TO_QUAD_ALLIGNED(write_data_size); @@ -420,19 +463,22 @@ int tools_cmdif_send_mbox_command_int(mfile* mf, // it is required in the TOOLS_HCR HLD to write the ENTIRE MBOX memcpy(&(mailbox[data_offs_in_mbox]), data, write_data_size); - // switch endianess as fw expects output in big endian - TOCPUn(mailbox, TOOLS_HCR_MAX_MBOX/4); - int i; - //print_buffer(mailbox, "before sending sending"); - for (i=0 ; i< TOOLS_HCR_MAX_MBOX; i+=8) { // it is required to write in quad word chunks (64bits each time) - // on big endian cpu need to swap between the dwords in the quad word - u_int64_t val = swap_dwords_be((&mailbox[i])); - rc = tools_cmdif_mbox_write(mf, i/4, val); + + if (use_cr_mbox == 1) { + //write mbox to virtual cr-space + rc = tools_cmdif_cr_mbox_write(mf, 0x0, mailbox, TOOLS_HCR_MAX_MBOX); if (rc) { goto cleanup; } + } else { + int i; + for (i=0 ; i< TOOLS_HCR_MAX_MBOX; i+=8) { // it is required to write in quad word chunks + rc = tools_cmdif_mbox_write(mf, i/4, (u_int32_t*)&mailbox[i]); + if (rc) { + goto cleanup; + } + } } - //read_entire_mbox(mf); } // send cmd tools_cmdif cmdif; @@ -441,37 +487,34 @@ int tools_cmdif_send_mbox_command_int(mfile* mf, cmdif.opcode_modifier = opcode_modifier; cmdif.input_modifier = input_modifier; rc = tools_cmdif_send_cmd_int(mf, &cmdif); - //printf("-D- tools_cmdif_send_cmd_int: rc = 0x%x, cmdif.status: 0x%x\n", rc, cmdif.status); - //read_entire_mbox(mf); + if (rc || cmdif.status) { if (rc == ME_CMDIF_BAD_STATUS) { rc = translate_status(cmdif.status); // means that driver is down or we dont support the extended version of tools hcr. } goto cleanup; } - // read from mbox - // read read_data_size bytes from mbox and update our data - for (i = data_offs_in_mbox ; i< (data_offs_in_mbox + read_data_size_quad_alligned); i+=8) { // it is required to write in quad word chunks (64bits each time) - rc = tools_cmdif_mbox_read(mf, i/4, (u_int64_t*)&(mailbox[i])); - // on big endian cpu need to swap back between the dwords in the quad word - u_int64_t val = swap_dwords_be((&mailbox[i])); - memcpy(&(mailbox[i]), (u_int8_t*)&val, 8*sizeof(u_int8_t)); - if (rc) { - goto cleanup; - } - } - - //print_buffer(mailbox, "after sending"); - // switch endianness back - TOCPUn(mailbox, TOOLS_HCR_MAX_MBOX/4); + if (use_cr_mbox == 1) { + // read mailbox from virtual CR-space + rc = tools_cmdif_cr_mbox_read(mf, data_offs_in_mbox, &mailbox[data_offs_in_mbox], read_data_size_quad_alligned); + if (rc) { + goto cleanup; + } + } else { + for (i = data_offs_in_mbox ; i< (data_offs_in_mbox + read_data_size_quad_alligned); i+=8) { // it is required to write in quad word chunks (64bits each time) + rc = tools_cmdif_mbox_read(mf, i/4, (u_int32_t*)&(mailbox[i])); + if (rc) { + goto cleanup; + } + } + } // copy data back to user memcpy(data, &(mailbox[data_offs_in_mbox]), read_data_size); rc = ME_OK; cleanup: tools_cmdif_flash_lock(mf, 0); - //printf("-D- rc in cmdif: 0x%x\n", rc); mpci_change(mf); return rc; } @@ -479,8 +522,26 @@ cleanup: int tools_cmdif_reg_access(mfile *mf, void* data, int write_data_size, int read_data_size) { - return tools_cmdif_send_mbox_command_int(mf, 0, REG_ACCESS_OP, 0, \ - 0, data, write_data_size, read_data_size, 0); + int rc; + if (mf->hcr_params.supp_cr_mbox == 0) { + rc = tools_cmdif_is_cr_mbox_supported(mf); + if (rc == ME_OK) { + mf->hcr_params.supp_cr_mbox = 1; + } else if (rc == ME_CMDIF_NOT_SUPP) { + mf->hcr_params.supp_cr_mbox = -1; + } else { + // CR error or Semaphore locked + return rc; + } + } + if (mf->hcr_params.supp_cr_mbox == 1) { + rc = tools_cmdif_send_mbox_command_int(mf, 1, REG_ACCESS_OP, 0, \ + 0, data, write_data_size, read_data_size, 0, 1); + } else { + rc = tools_cmdif_send_mbox_command_int(mf, 0, REG_ACCESS_OP, 0, \ + 0, data, write_data_size, read_data_size, 0, 0); + } + return rc; } @@ -496,47 +557,6 @@ int tools_cmdif_send_mbox_command(mfile* mf, return tools_cmdif_send_mbox_command_int(mf, input_modifier, opcode, opcode_modifier, \ data_offs_in_mbox, data, data_size,\ - data_size, skip_write); -} - - -/* -int test_mbox(mfile* mf) -{ - u_int32_t data_w[8] = {1,2,3,4,5,6,7,8}; - u_int32_t data_r[8] = {0}; - //take semaphore - if (tools_cmdif_flash_lock(mf, 1)) { - return ME_SEM_LOCKED; - } - // write data to mbox - printf("-D- writing data to Mbox.\n"); - int i; - for(i = 0 ; i < 8/2 ; i++) { - u_int64_t input = *(u_int64_t*)(&data_w[i*2]); - printf("-D- attempting to write 0x%lx\n", input); - int rc = tools_cmdif_mbox_write(mf, i*2,input); - if (rc){ - tools_cmdif_flash_lock(mf, 0); - return ME_CR_ERROR; - } - } - // read data from mbox - printf("-D- reading data from Mbox.\n"); - for (i = 0; i < 8/2 ; i++) { - if (tools_cmdif_mbox_read(mf, i*2,(u_int64_t*)&data_r[i*2])) { - tools_cmdif_flash_lock(mf, 0); - return ME_CR_ERROR; - } - } - // print what have been read - for (i=0 ; i<8 ; i++) { - printf("-D- 0x%x\n", data_r[i]); - } - - tools_cmdif_flash_lock(mf, 0); - return ME_OK; - + data_size, skip_write, 0); } -*/ diff --git a/mtcr_ul/mtcr_tools_cif.h b/mtcr_ul/mtcr_tools_cif.h index eb27866..e33c223 100644 --- a/mtcr_ul/mtcr_tools_cif.h +++ b/mtcr_ul/mtcr_tools_cif.h @@ -28,10 +28,8 @@ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. - * */ - #ifndef _MTCR_TOOLS_CIF /* guard */ #define _MTCR_TOOLS_CIF @@ -73,6 +71,7 @@ int tools_cmdif_reg_access(mfile *mf, void* data,int write_data_size, int read_d * */ int tools_cmdif_is_supported(mfile *mf); +int tools_cmdif_is_cr_mbox_supported(mfile *mf); #ifdef __cplusplus } diff --git a/mtcr_ul/mtcr_ul.c b/mtcr_ul/mtcr_ul.c index 249b8f1..30066cf 100644 --- a/mtcr_ul/mtcr_ul.c +++ b/mtcr_ul/mtcr_ul.c @@ -1978,6 +1978,8 @@ int maccess_reg(mfile *mf, return ME_REG_ACCESS_BAD_CONFIG; case 0x21: return ME_REG_ACCESS_ERASE_EXEEDED; + case 0x70: + return ME_REG_ACCESS_INTERNAL_ERROR; default: return ME_REG_ACCESS_UNKNOWN_ERR; } @@ -2101,9 +2103,10 @@ static int mreg_send_raw(mfile *mf, u_int16_t reg_id, maccess_reg_method_t metho } -#define CIB_HW_ID 511 -#define CX4_HW_ID 521 -#define SW_IB_HW_ID 583 +#define CIB_HW_ID 511 +#define CX4_HW_ID 521 +#define CX4LX_HW_ID 523 +#define SW_IB_HW_ID 583 #define CX3_PRO_HW_ID 0x1F7 #define CX3_HW_ID_REV 0x1f5 @@ -2117,6 +2120,7 @@ static int supports_icmd(mfile* mf) { switch (dev_id & 0xffff) { // that the hw device id case CIB_HW_ID : case CX4_HW_ID : + case CX4LX_HW_ID : case SW_IB_HW_ID : return 1; default: @@ -2143,22 +2147,44 @@ static int supports_tools_cmdif_reg(mfile* mf) { return 0; } - int mget_max_reg_size(mfile *mf) { - if (mf->access_type == MTCR_ACCESS_INBAND) { - return INBAND_MAX_REG_SIZE; - } - if (supports_icmd(mf)){ // we support icmd and we dont use IB interface -> we use icmd for reg access + if (mf->acc_reg_params.max_reg_size) { + return mf->acc_reg_params.max_reg_size; + } else if (mf->access_type == MTCR_ACCESS_INBAND) { + mf->acc_reg_params.max_reg_size = INBAND_MAX_REG_SIZE; + } else if (supports_icmd(mf)){ // we support icmd and we dont use IB interface -> we use icmd for reg access if (mf->vsec_supp) { - return ICMD_MAX_REG_SIZE; + mf->acc_reg_params.max_reg_size = ICMD_MAX_REG_SIZE; } else { // we send via inband - return INBAND_MAX_REG_SIZE; + mf->acc_reg_params.max_reg_size = INBAND_MAX_REG_SIZE; } + }else if (supports_tools_cmdif_reg(mf)) { + mf->acc_reg_params.max_reg_size = TOOLS_HCR_MAX_REG_SIZE; } - if (supports_tools_cmdif_reg(mf)) { - return TOOLS_HCR_MAX_REG_SIZE; + return mf->acc_reg_params.max_reg_size; +} + +int mget_vsec_supp(mfile* mf) +{ + return mf->vsec_supp; +} + +MTCR_API int mget_addr_space(mfile* mf) +{ + return mf->address_space; +} +MTCR_API int mset_addr_space(mfile* mf, int space) +{ + switch (space) { + case AS_CR_SPACE: + case AS_ICMD: + case AS_SEMAPHORE: + break; + default: + return -1; } + mf->address_space = space; return 0; } @@ -2228,13 +2254,15 @@ const char* m_err2str(MError status) case ME_REG_ACCESS_SIZE_EXCCEEDS_LIMIT: return "Register is too large"; case ME_REG_ACCESS_CONF_CORRUPT: - return "Config Section Corrupted"; + return "Config Section Corrupted"; case ME_REG_ACCESS_LEN_TOO_SMALL: - return "given register length too small for Tlv"; + return "given register length too small for Tlv"; case ME_REG_ACCESS_BAD_CONFIG: - return "configuration refused"; + return "configuration refused"; case ME_REG_ACCESS_ERASE_EXEEDED: - return "erase count exceeds limit"; + return "erase count exceeds limit"; + case ME_REG_ACCESS_INTERNAL_ERROR: + return "FW internal error"; // ICMD access errors case ME_ICMD_STATUS_CR_FAIL: diff --git a/mtcr_ul/packets_common.c b/mtcr_ul/packets_common.c index 2482361..ff84a0c 100644 --- a/mtcr_ul/packets_common.c +++ b/mtcr_ul/packets_common.c @@ -14,12 +14,12 @@ * - 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. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND diff --git a/mtcr_ul/packets_common.h b/mtcr_ul/packets_common.h index daf28fe..11516f4 100644 --- a/mtcr_ul/packets_common.h +++ b/mtcr_ul/packets_common.h @@ -14,12 +14,12 @@ * - 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. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND diff --git a/reg_access/reg_access.c b/reg_access/reg_access.c index 13982bf..28f4fb3 100644 --- a/reg_access/reg_access.c +++ b/reg_access/reg_access.c @@ -41,6 +41,7 @@ #define REG_ID_MNVA 0x9024 #define REG_ID_MNVI 0x9025 #define REG_ID_MNVIA 0x9029 +#define REG_ID_NVQC 0x9030 // TODO: get correct register ID for mfrl mfai #define REG_ID_MFRL 0x9028 @@ -98,18 +99,18 @@ ************************************/ reg_access_status_t reg_access_mfba(mfile* mf, reg_access_method_t method, struct register_access_mfba* mfba) { - u_int32_t reg_size = mfba->size + REG_ACCESS_MFBA_HEADER_LEN; - // the r/w_size_reg is for improved performance for when we send the register - // via icmd , since its relatively slow si no need to write the data array from mfba struct to the device when reading from the device - // and no need for reading the data array from the device when writing to the device (we just care about the status) - u_int32_t r_size_reg = reg_size; - u_int32_t w_size_reg= reg_size; - if (method == REG_ACCESS_METHOD_GET) { - w_size_reg -= mfba->size; - } else { - r_size_reg -= mfba->size; - } - //printf("-D- MFBA: data size: %d, reg_size: %d, r_size_reg: %d, w_size_reg: %d\n",mfba->size,reg_size,r_size_reg,w_size_reg); + u_int32_t reg_size = mfba->size + REG_ACCESS_MFBA_HEADER_LEN; + // the r/w_size_reg is for improved performance for when we send the register + // via icmd , since its relatively slow si no need to write the data array from mfba struct to the device when reading from the device + // and no need for reading the data array from the device when writing to the device (we just care about the status) + u_int32_t r_size_reg = reg_size; + u_int32_t w_size_reg= reg_size; + if (method == REG_ACCESS_METHOD_GET) { + w_size_reg -= mfba->size; + } else { + r_size_reg -= mfba->size; + } + //printf("-D- MFBA: data size: %d, reg_size: %d, r_size_reg: %d, w_size_reg: %d\n",mfba->size,reg_size,r_size_reg,w_size_reg); REG_ACCCESS_VAR(mf, method, REG_ID_MFBA, mfba, mfba, reg_size, r_size_reg, w_size_reg, register_access); } @@ -134,16 +135,16 @@ reg_access_status_t reg_access_mfpa(mfile* mf, reg_access_method_t method, struc ************************************/ reg_access_status_t reg_access_mnva (mfile* mf, reg_access_method_t method, struct tools_open_mnva* mnva) { - // reg_size is in bytes - u_int32_t reg_size = (mnva->mnv_hdr.length << 2) + tools_open_mnv_hdr_size(); - u_int32_t r_size_reg = reg_size; - u_int32_t w_size_reg= reg_size; - if (method == REG_ACCESS_METHOD_GET) { - w_size_reg -= mnva->mnv_hdr.length << 2; - } else { - r_size_reg -= mnva->mnv_hdr.length << 2; - } - REG_ACCCESS_VAR(mf, method, REG_ID_MNVA, mnva, mnva, reg_size , r_size_reg, w_size_reg, tools_open); + // reg_size is in bytes + u_int32_t reg_size = (mnva->nv_hdr.length << 2) + tools_open_nv_hdr_size(); + u_int32_t r_size_reg = reg_size; + u_int32_t w_size_reg= reg_size; + if (method == REG_ACCESS_METHOD_GET) { + w_size_reg -= mnva->nv_hdr.length << 2; + } else { + r_size_reg -= mnva->nv_hdr.length << 2; + } + REG_ACCCESS_VAR(mf, method, REG_ID_MNVA, mnva, mnva, reg_size , r_size_reg, w_size_reg, tools_open); } /************************************ @@ -151,23 +152,24 @@ reg_access_status_t reg_access_mnva (mfile* mf, reg_access_method_t method, stru ************************************/ reg_access_status_t reg_access_mnvi (mfile* mf, reg_access_method_t method, struct tools_open_mnvi* mnvi) { - if (method != REG_ACCESS_METHOD_SET ) { // this register supports only set method - return ME_REG_ACCESS_BAD_METHOD; - } - REG_ACCCESS(mf, method, REG_ID_MNVI, mnvi, mnvi, tools_open); + if (method != REG_ACCESS_METHOD_SET ) { // this register supports only set method + return ME_REG_ACCESS_BAD_METHOD; + } + REG_ACCCESS(mf, method, REG_ID_MNVI, mnvi, mnvi, tools_open); } /************************************ - * Function: reg_access_mnvi + * Function: reg_access_mnvia ************************************/ reg_access_status_t reg_access_mnvia (mfile* mf, reg_access_method_t method, struct tools_open_mnvia* mnvia) { - if (method != REG_ACCESS_METHOD_SET ) { // this register supports only set method - return ME_REG_ACCESS_BAD_METHOD; - } - REG_ACCCESS(mf, method, REG_ID_MNVIA, mnvia, mnvia, tools_open); + if (method != REG_ACCESS_METHOD_SET ) { // this register supports only set method + return ME_REG_ACCESS_BAD_METHOD; + } + REG_ACCCESS(mf, method, REG_ID_MNVIA, mnvia, mnvia, tools_open); } + /************************************ * * Function: reg_access_mgir *************************************/ @@ -197,6 +199,55 @@ reg_access_status_t reg_access_mfai (mfile* mf, reg_access_method_t method, stru REG_ACCCESS(mf, method, REG_ID_MFAI, mfai, mfai, cibfw_register); } +/************************************ + * Function: reg_access_nvda + ************************************/ +reg_access_status_t reg_access_nvda (mfile* mf, reg_access_method_t method, struct tools_open_nvda* nvda) +{ + // reg_size is in bytes + u_int32_t reg_size = nvda->nv_hdr.length + tools_open_nv_hdr_fifth_gen_size(); + u_int32_t r_size_reg = reg_size; + u_int32_t w_size_reg= reg_size; + if (method == REG_ACCESS_METHOD_GET) { + w_size_reg -= nvda->nv_hdr.length; + } else { + r_size_reg -= nvda->nv_hdr.length; + } + REG_ACCCESS_VAR(mf, method, REG_ID_MNVA, nvda, nvda, reg_size , r_size_reg, w_size_reg, tools_open); +} + +/************************************ + * Function: reg_access_nvdi + ************************************/ +reg_access_status_t reg_access_nvdi (mfile* mf, reg_access_method_t method, struct tools_open_nvdi* nvdi) +{ + if (method != REG_ACCESS_METHOD_SET ) { // this register supports only set method + return ME_REG_ACCESS_BAD_METHOD; + } + REG_ACCCESS(mf, method, REG_ID_MNVI, nvdi, nvdi, tools_open); +} + +/************************************ + * Function: reg_access_nvdia + ************************************/ +reg_access_status_t reg_access_nvdia (mfile* mf, reg_access_method_t method, struct tools_open_nvdia* nvdia) +{ + if (method != REG_ACCESS_METHOD_SET ) { // this register supports only set method + return ME_REG_ACCESS_BAD_METHOD; + } + REG_ACCCESS(mf, method, REG_ID_MNVIA, nvdia, nvdia, tools_open); +} + +/************************************ + * Function: reg_access_nvqc + ************************************/ +reg_access_status_t reg_access_nvqc (mfile* mf, reg_access_method_t method, struct tools_open_nvqc* nvqc) +{ + if (method != REG_ACCESS_METHOD_GET ) { // this register supports only get method + return ME_REG_ACCESS_BAD_METHOD; + } + REG_ACCCESS(mf, method, REG_ID_NVQC, nvqc, nvqc, tools_open); +} /************************************ * Function: reg_access_err2str ************************************/ diff --git a/reg_access/reg_access.h b/reg_access/reg_access.h index 51b6296..edc3054 100644 --- a/reg_access/reg_access.h +++ b/reg_access/reg_access.h @@ -67,6 +67,10 @@ reg_access_status_t reg_access_mnvia (mfile* mf, reg_access_method_t method, str reg_access_status_t reg_access_mgir (mfile* mf, reg_access_method_t method, struct register_access_sib_mgir* mgir); reg_access_status_t reg_access_mfrl (mfile* mf, reg_access_method_t method, struct cibfw_register_mfrl* mfrl); reg_access_status_t reg_access_mfai (mfile* mf, reg_access_method_t method, struct cibfw_register_mfai* mfai); +reg_access_status_t reg_access_nvda (mfile* mf, reg_access_method_t method, struct tools_open_nvda* nvda); +reg_access_status_t reg_access_nvdi (mfile* mf, reg_access_method_t method, struct tools_open_nvdi* nvdi); +reg_access_status_t reg_access_nvdia (mfile* mf, reg_access_method_t method, struct tools_open_nvdia* nvdia); +reg_access_status_t reg_access_nvqc (mfile* mf, reg_access_method_t method, struct tools_open_nvqc* nvqc); #ifdef __cplusplus } diff --git a/small_utils/mcra.c b/small_utils/mcra.c index eb11ea0..2fc9a30 100644 --- a/small_utils/mcra.c +++ b/small_utils/mcra.c @@ -29,6 +29,7 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ + /* * * mcra.c - Mellanox Configuratio Register Access tool @@ -53,7 +54,7 @@ #define MERGE(rsrc1,rsrc2,start,len) (((len)==32)?(rsrc2):MERGE_C(rsrc1,rsrc2,start,len)) #define ADB_DUMP_VAR "ADB_DUMP" - +#define MAX_DEV_LEN 512 void usage(const char *n, int with_exit) { @@ -86,6 +87,7 @@ int main(int argc, char *argv[]) { char* endp; char* dev = NULL; + char device[MAX_DEV_LEN] = {0}; char* adb_dump = NULL; char* path = NULL; int rc=0; @@ -247,14 +249,18 @@ int main(int argc, char *argv[]) if (!adb_dump) { adb_dump = getenv(ADB_DUMP_VAR); } - + strncpy(device, dev, MAX_DEV_LEN -1); // Do the job - mf = mopen(dev); + mf = mopen((const char *)device); if (!mf) { perror("mopen"); return 1; } - +#ifndef MST_UL + if (mf->tp == MST_MLNXOS) { + mset_cr_access(mf, 1); + } +#endif if (i2c_slave) mset_i2c_slave(mf, (u_int8_t)i2c_slave); diff --git a/tools_layouts/adb_to_c_utils.c b/tools_layouts/adb_to_c_utils.c index 232cc1c..56f4ccd 100644 --- a/tools_layouts/adb_to_c_utils.c +++ b/tools_layouts/adb_to_c_utils.c @@ -28,13 +28,12 @@ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. - * */ /*** - *** This file was generated at "2014-11-12 13:19:54" + *** This file was generated at "2015-04-20 13:45:50" *** by: - *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/tools_open/tools_open.adb --file-prefix tools_open --prefix tools_open_ + *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/connectx4/connectx4.adb --file-prefix connectx4 --prefix connectx4_ ***/ #include @@ -84,6 +83,17 @@ void adb2c_push_integer_to_buff(u_int8_t *buff, u_int32_t bit_offset, u_int32_t memcpy(buff + bit_offset/8, (u_int8_t*)&field_value + (8-byte_size), (size_t)byte_size); } +/************************************ + * Function: adb2c_push_integer_to_buff_le + ************************************/ +// little endian version of the function +void adb2c_push_integer_to_buff_le(u_int8_t *buff, u_int32_t bit_offset, u_int32_t byte_size, u_int64_t field_value) +{ + field_value = ADB2C_CPU_TO_LE64(field_value); + memcpy(buff + bit_offset/8, (u_int8_t*)&field_value, (size_t)byte_size); +} + + /************************************ * Function: adb2c_push_bits_to_buff ************************************/ @@ -107,6 +117,30 @@ void adb2c_push_bits_to_buff(u_int8_t *buff, u_int32_t bit_offset, u_int32_t fie } } +/************************************ + * Function: adb2c_push_bits_to_buff_le + ************************************/ +//the next function will push the field into the buffer by inserting it's LSB bits first +//and therefore by doing it we save the CPU_TO_LE operation +void adb2c_push_bits_to_buff_le(u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size, u_int32_t field_value) +{ + u_int32_t i = 0; + u_int32_t byte_n = (bit_offset / 8) + (field_size / 8) - 1; + u_int32_t byte_n_offset = bit_offset % 8; + u_int32_t to_push; + byte_n += (field_size % 8) ? 1 : 0; + + //going over all bits in field + while (i < field_size) + { + to_push = ADB2C_MIN(8 - byte_n_offset, field_size - i); + i += to_push; + ADB2C_INSERTF_8(ADB2C_BYTE_N(buff, byte_n), 8U - to_push - byte_n_offset, field_value, field_size - i, to_push); + byte_n_offset = 0; //(byte_n_offset + to_push) % 8U; + byte_n--; + } +} + /************************************ * Function: adb2c_push_to_buf ************************************/ @@ -119,6 +153,18 @@ void adb2c_push_to_buf(u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_siz adb2c_push_integer_to_buff(buff, bit_offset, field_size/8, field_value); } +/************************************ + * Function: adb2c_push_to_buf_le + ************************************/ +void adb2c_push_to_buf_le(u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size, u_int64_t field_value) +{ + bit_offset = adb2c_calc_array_field_address(bit_offset, field_size, 0, field_size + 32, 0); + if (field_size <= 32) + adb2c_push_bits_to_buff_le(buff, bit_offset, field_size, (u_int32_t)field_value); + else + adb2c_push_integer_to_buff_le(buff, bit_offset, field_size/8, field_value); +} + /************************************ * Function: adb2c_pop_integer_from_buff ************************************/ @@ -129,6 +175,16 @@ u_int64_t adb2c_pop_integer_from_buff(const u_int8_t *buff, u_int32_t bit_offset return ADB2C_BE64_TO_CPU(val); } +/************************************ + * Function: adb2c_pop_integer_from_buff_le + ************************************/ +u_int64_t adb2c_pop_integer_from_buff_le(const u_int8_t *buff, u_int32_t bit_offset, u_int32_t byte_size) +{ + u_int64_t val = 0; + memcpy((u_int8_t*)&val, buff + bit_offset/8, (size_t)byte_size); + return ADB2C_LE64_TO_CPU(val); +} + /************************************ * Function: adb2c_pop_bits_from_buff ************************************/ @@ -154,6 +210,32 @@ u_int32_t adb2c_pop_bits_from_buff(const u_int8_t *buff, u_int32_t bit_offset, u return field_32; } +/************************************ + * Function: adb2c_pop_bits_from_buff_le + ************************************/ +//the next function will pop the field into the buffer by removing it's LSB bits first +//and therefore by doing it we save the BE_TO_CPU operation +u_int32_t adb2c_pop_bits_from_buff_le(const u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size) +{ + u_int32_t i = 0; + u_int32_t byte_n = bit_offset / 8 + (field_size / 8) - 1; + u_int32_t byte_n_offset = bit_offset % 8; + u_int32_t field_32 = 0; + u_int32_t to_pop; + byte_n += (field_size % 8) ? 1 : 0; + + //going over all bits in field + while (i < field_size) + { + to_pop = ADB2C_MIN(8 - byte_n_offset, field_size - i); + i += to_pop; + ADB2C_INSERTF_8(field_32, field_size - i, ADB2C_BYTE_N(buff, byte_n), 8 - to_pop - byte_n_offset, to_pop); + byte_n_offset = 0; //(byte_n_offset + to_pop) % 8; + byte_n--; + } + return field_32; +} + /************************************ * Function: adb2c_pop_from_buf ************************************/ @@ -166,6 +248,18 @@ u_int64_t adb2c_pop_from_buf(const u_int8_t *buff, u_int32_t bit_offset, u_int32 return adb2c_pop_integer_from_buff(buff, bit_offset, field_size/8); } +/************************************ + * Function: adb2c_pop_from_buf_le + ************************************/ +u_int64_t adb2c_pop_from_buf_le(const u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size) +{ + bit_offset = adb2c_calc_array_field_address(bit_offset, field_size, 0, field_size + 32, 0); + if (field_size <= 32) + return adb2c_pop_bits_from_buff_le(buff, bit_offset, field_size); + else + return adb2c_pop_integer_from_buff_le(buff, bit_offset, field_size/8); +} + /************************************ * Function: adb2c_db_get_field_enum_name ************************************/ diff --git a/tools_layouts/adb_to_c_utils.h b/tools_layouts/adb_to_c_utils.h index 2896624..ac51109 100644 --- a/tools_layouts/adb_to_c_utils.h +++ b/tools_layouts/adb_to_c_utils.h @@ -28,13 +28,12 @@ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. - * */ /*** - *** This file was generated at "2014-11-12 13:19:54" + *** This file was generated at "2015-04-20 13:45:50" *** by: - *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/tools_open/tools_open.adb --file-prefix tools_open --prefix tools_open_ + *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/connectx4/connectx4.adb --file-prefix connectx4 --prefix connectx4_ ***/ #ifndef ADABE_TO_C_UTILS @@ -113,9 +112,14 @@ extern "C" { #define ADB2C_CPU_TO_BE64(x) (((u_int64_t)htonl((u_int32_t)((x) & 0xffffffff)) << 32) | ((u_int64_t)htonl((u_int32_t)((x >> 32) & 0xffffffff)))) #define ADB2C_BE64_TO_CPU(x) (((u_int64_t)ntohl((u_int32_t)((x) & 0xffffffff)) << 32) | ((u_int64_t)ntohl((u_int32_t)((x >> 32) & 0xffffffff)))) + #define ADB2C_LE64_TO_CPU(x) (x) + #define ADB2C_CPU_TO_LE64(x) (x) #else #define ADB2C_CPU_TO_BE64(x) (x) #define ADB2C_BE64_TO_CPU(x) (x) + #define ADB2C_LE64_TO_CPU(x) (((u_int64_t)ntohl((u_int32_t)((x) & 0xffffffff)) << 32) | ((u_int64_t)ntohl((u_int32_t)((x >> 32) & 0xffffffff)))) + #define ADB2C_CPU_TO_LE64(x) (((u_int64_t)ntohl((u_int32_t)((x) & 0xffffffff)) << 32) | ((u_int64_t)ntohl((u_int32_t)((x >> 32) & 0xffffffff)))) + #endif @@ -259,16 +263,26 @@ struct adb2c_node_db u_int32_t adb2c_calc_array_field_address(u_int32_t start_bit_offset, u_int32_t arr_elemnt_size, int arr_idx, u_int32_t parent_node_size, int is_big_endian_arr); +/* Big Endian Functions */ void adb2c_push_integer_to_buff(u_int8_t *buff, u_int32_t bit_offset, u_int32_t byte_size, u_int64_t field_value); void adb2c_push_bits_to_buff(u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size, u_int32_t field_value); void adb2c_push_to_buf(u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size, u_int64_t field_value); u_int64_t adb2c_pop_integer_from_buff(const u_int8_t *buff, u_int32_t bit_offset, u_int32_t byte_size); u_int32_t adb2c_pop_bits_from_buff(const u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size); u_int64_t adb2c_pop_from_buf(const u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size); + +/* Little Endian Functions */ +void adb2c_push_integer_to_buff_le(u_int8_t *buff, u_int32_t bit_offset, u_int32_t byte_size, u_int64_t field_value); +void adb2c_push_bits_to_buff_le(u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size, u_int32_t field_value); +void adb2c_push_to_buf_le(u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size, u_int64_t field_value); +u_int64_t adb2c_pop_integer_from_buff_le(const u_int8_t *buff, u_int32_t bit_offset, u_int32_t byte_size); +u_int32_t adb2c_pop_bits_from_buff_le(const u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size); +u_int64_t adb2c_pop_from_buf_le(const u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size); + + void adb2c_add_indentation(FILE* file, int indent_level); void adb2c_print_raw(FILE* file, void* buff, int buff_len); -void adb2c_push_to_buf(u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size, u_int64_t field_value); const char* adb2c_db_get_field_enum_name(struct adb2c_field_format* field, int val); int adb2c_db_get_field_enum_val(struct adb2c_field_format* field, const char* name); const char* adb2c_db_get_field_attr(struct adb2c_field_format* field, const char* attr_name); diff --git a/tools_layouts/cibfw_layouts.c b/tools_layouts/cibfw_layouts.c index d529bbb..8243994 100644 --- a/tools_layouts/cibfw_layouts.c +++ b/tools_layouts/cibfw_layouts.c @@ -1,20 +1,37 @@ - -/* - Mellanox Confidential and Proprietary - +/* + * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: * - * Copyright (C) 2010-2011, Mellanox Technologies Ltd. ALL RIGHTS RESERVED. + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. * - * Except as specifically permitted herein, no portion of the information, - * including but not limited to object code and source code, may be reproduced, - * modified, distributed, republished or otherwise exploited in any form or by - * any means for any purpose without the prior written permission of Mellanox - * Technologies Ltd. Use of software subject to the terms and conditions - * detailed in the file "LICENSE.txt". + * - 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. * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. */ - /*** - *** This file was generated at "2015-01-22 18:18:54" + *** This file was generated at "2015-02-05 17:00:49" *** by: *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/cibfw/cibfw.adb --file-prefix cibfw --prefix cibfw_ ***/ @@ -39,6 +56,8 @@ void cibfw_uint64_pack(const struct cibfw_uint64 *ptr_struct, u_int8_t* ptr_buff void cibfw_uint64_unpack(struct cibfw_uint64 *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -54,7 +73,7 @@ void cibfw_uint64_unpack(struct cibfw_uint64 *ptr_struct, const u_int8_t* ptr_bu void cibfw_uint64_print(const struct cibfw_uint64 *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== uint64 ========\n"); + fprintf(file, "======== cibfw_uint64 ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -68,7 +87,7 @@ void cibfw_uint64_print(const struct cibfw_uint64 *ptr_struct, FILE* file, int i } -int cibfw_uint64_size(){ +int cibfw_uint64_size(void){ return 8; } @@ -98,6 +117,8 @@ void cibfw_module_version_pack(const struct cibfw_module_version *ptr_struct, u_ void cibfw_module_version_unpack(struct cibfw_module_version *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -116,7 +137,7 @@ void cibfw_module_version_unpack(struct cibfw_module_version *ptr_struct, const void cibfw_module_version_print(const struct cibfw_module_version *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== module_version ========\n"); + fprintf(file, "======== cibfw_module_version ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -133,7 +154,7 @@ void cibfw_module_version_print(const struct cibfw_module_version *ptr_struct, F } -int cibfw_module_version_size(){ +int cibfw_module_version_size(void){ return 4; } @@ -163,6 +184,8 @@ void cibfw_uid_entry_pack(const struct cibfw_uid_entry *ptr_struct, u_int8_t* pt void cibfw_uid_entry_unpack(struct cibfw_uid_entry *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -181,7 +204,7 @@ void cibfw_uid_entry_unpack(struct cibfw_uid_entry *ptr_struct, const u_int8_t* void cibfw_uid_entry_print(const struct cibfw_uid_entry *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== uid_entry ========\n"); + fprintf(file, "======== cibfw_uid_entry ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -198,7 +221,7 @@ void cibfw_uid_entry_print(const struct cibfw_uid_entry *ptr_struct, FILE* file, } -int cibfw_uid_entry_size(){ +int cibfw_uid_entry_size(void){ return 16; } @@ -237,6 +260,8 @@ void cibfw_module_versions_pack(const struct cibfw_module_versions *ptr_struct, void cibfw_module_versions_unpack(struct cibfw_module_versions *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -264,7 +289,7 @@ void cibfw_module_versions_unpack(struct cibfw_module_versions *ptr_struct, cons void cibfw_module_versions_print(const struct cibfw_module_versions *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== module_versions ========\n"); + fprintf(file, "======== cibfw_module_versions ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -296,7 +321,7 @@ void cibfw_module_versions_print(const struct cibfw_module_versions *ptr_struct, } -int cibfw_module_versions_size(){ +int cibfw_module_versions_size(void){ return 64; } @@ -326,6 +351,8 @@ void cibfw_TRIPPLE_VERSION_pack(const struct cibfw_TRIPPLE_VERSION *ptr_struct, void cibfw_TRIPPLE_VERSION_unpack(struct cibfw_TRIPPLE_VERSION *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -344,7 +371,7 @@ void cibfw_TRIPPLE_VERSION_unpack(struct cibfw_TRIPPLE_VERSION *ptr_struct, cons void cibfw_TRIPPLE_VERSION_print(const struct cibfw_TRIPPLE_VERSION *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== TRIPPLE_VERSION ========\n"); + fprintf(file, "======== cibfw_TRIPPLE_VERSION ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -361,7 +388,7 @@ void cibfw_TRIPPLE_VERSION_print(const struct cibfw_TRIPPLE_VERSION *ptr_struct, } -int cibfw_TRIPPLE_VERSION_size(){ +int cibfw_TRIPPLE_VERSION_size(void){ return 8; } @@ -409,6 +436,8 @@ void cibfw_FW_VERSION_pack(const struct cibfw_FW_VERSION *ptr_struct, u_int8_t* void cibfw_FW_VERSION_unpack(struct cibfw_FW_VERSION *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -445,7 +474,7 @@ void cibfw_FW_VERSION_unpack(struct cibfw_FW_VERSION *ptr_struct, const u_int8_t void cibfw_FW_VERSION_print(const struct cibfw_FW_VERSION *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== FW_VERSION ========\n"); + fprintf(file, "======== cibfw_FW_VERSION ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -480,7 +509,7 @@ void cibfw_FW_VERSION_print(const struct cibfw_FW_VERSION *ptr_struct, FILE* fil } -int cibfw_FW_VERSION_size(){ +int cibfw_FW_VERSION_size(void){ return 16; } @@ -511,6 +540,8 @@ void cibfw_guids_pack(const struct cibfw_guids *ptr_struct, u_int8_t* ptr_buff){ void cibfw_guids_unpack(struct cibfw_guids *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -530,7 +561,7 @@ void cibfw_guids_unpack(struct cibfw_guids *ptr_struct, const u_int8_t* ptr_buff void cibfw_guids_print(const struct cibfw_guids *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== guids ========\n"); + fprintf(file, "======== cibfw_guids ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -538,19 +569,19 @@ void cibfw_guids_print(const struct cibfw_guids *ptr_struct, FILE* file, int ind for (i=0; i < 2; i++) { adb2c_add_indentation(file, indent_level); - fprintf(file, "guids[%3d]:\n", i); + fprintf(file, "guids_%03d:\n", i); cibfw_uid_entry_print(&(ptr_struct->guids[i]), file, indent_level + 1); } for (i=0; i < 2; i++) { adb2c_add_indentation(file, indent_level); - fprintf(file, "macs[%3d]:\n", i); + fprintf(file, "macs_%03d:\n", i); cibfw_uid_entry_print(&(ptr_struct->macs[i]), file, indent_level + 1); } } -int cibfw_guids_size(){ +int cibfw_guids_size(void){ return 64; } @@ -577,6 +608,8 @@ void cibfw_operation_key_pack(const struct cibfw_operation_key *ptr_struct, u_in void cibfw_operation_key_unpack(struct cibfw_operation_key *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -592,7 +625,7 @@ void cibfw_operation_key_unpack(struct cibfw_operation_key *ptr_struct, const u_ void cibfw_operation_key_print(const struct cibfw_operation_key *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== operation_key ========\n"); + fprintf(file, "======== cibfw_operation_key ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -606,7 +639,7 @@ void cibfw_operation_key_print(const struct cibfw_operation_key *ptr_struct, FIL } -int cibfw_operation_key_size(){ +int cibfw_operation_key_size(void){ return 16; } @@ -662,6 +695,8 @@ void cibfw_image_info_pack(const struct cibfw_image_info *ptr_struct, u_int8_t* void cibfw_image_info_unpack(struct cibfw_image_info *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -709,7 +744,7 @@ void cibfw_image_info_unpack(struct cibfw_image_info *ptr_struct, const u_int8_t void cibfw_image_info_print(const struct cibfw_image_info *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== image_info ========\n"); + fprintf(file, "======== cibfw_image_info ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -730,7 +765,7 @@ void cibfw_image_info_print(const struct cibfw_image_info *ptr_struct, FILE* fil fprintf(file, "vsd : \"%s\"\n", ptr_struct->vsd); for (i=0; i < 4; i++) { adb2c_add_indentation(file, indent_level); - fprintf(file, "supported_hw_id[%3d] : "U32H_FMT"\n", i, ptr_struct->supported_hw_id[i]); + fprintf(file, "supported_hw_id_%03d : "U32H_FMT"\n", i, ptr_struct->supported_hw_id[i]); } adb2c_add_indentation(file, indent_level); @@ -743,7 +778,7 @@ void cibfw_image_info_print(const struct cibfw_image_info *ptr_struct, FILE* fil } -int cibfw_image_info_size(){ +int cibfw_image_info_size(void){ return 1024; } @@ -781,6 +816,8 @@ void cibfw_mfg_info_pack(const struct cibfw_mfg_info *ptr_struct, u_int8_t* ptr_ void cibfw_mfg_info_unpack(struct cibfw_mfg_info *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -808,7 +845,7 @@ void cibfw_mfg_info_unpack(struct cibfw_mfg_info *ptr_struct, const u_int8_t* pt void cibfw_mfg_info_print(const struct cibfw_mfg_info *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== mfg_info ========\n"); + fprintf(file, "======== cibfw_mfg_info ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -830,7 +867,7 @@ void cibfw_mfg_info_print(const struct cibfw_mfg_info *ptr_struct, FILE* file, i } -int cibfw_mfg_info_size(){ +int cibfw_mfg_info_size(void){ return 320; } @@ -885,6 +922,8 @@ void cibfw_device_info_pack(const struct cibfw_device_info *ptr_struct, u_int8_t void cibfw_device_info_unpack(struct cibfw_device_info *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -929,7 +968,7 @@ void cibfw_device_info_unpack(struct cibfw_device_info *ptr_struct, const u_int8 void cibfw_device_info_print(const struct cibfw_device_info *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== device_info ========\n"); + fprintf(file, "======== cibfw_device_info ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -963,13 +1002,13 @@ void cibfw_device_info_print(const struct cibfw_device_info *ptr_struct, FILE* f fprintf(file, "vsd : \"%s\"\n", ptr_struct->vsd); for (i=0; i < 4; i++) { adb2c_add_indentation(file, indent_level); - fprintf(file, "keys[%3d]:\n", i); + fprintf(file, "keys_%03d:\n", i); cibfw_operation_key_print(&(ptr_struct->keys[i]), file, indent_level + 1); } } -int cibfw_device_info_size(){ +int cibfw_device_info_size(void){ return 512; } @@ -993,6 +1032,8 @@ void cibfw_register_mfrl_pack(const struct cibfw_register_mfrl *ptr_struct, u_in void cibfw_register_mfrl_unpack(struct cibfw_register_mfrl *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -1005,7 +1046,7 @@ void cibfw_register_mfrl_unpack(struct cibfw_register_mfrl *ptr_struct, const u_ void cibfw_register_mfrl_print(const struct cibfw_register_mfrl *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== register_mfrl ========\n"); + fprintf(file, "======== cibfw_register_mfrl ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -1016,7 +1057,7 @@ void cibfw_register_mfrl_print(const struct cibfw_register_mfrl *ptr_struct, FIL } -int cibfw_register_mfrl_size(){ +int cibfw_register_mfrl_size(void){ return 16; } @@ -1055,6 +1096,8 @@ void cibfw_itoc_header_pack(const struct cibfw_itoc_header *ptr_struct, u_int8_t void cibfw_itoc_header_unpack(struct cibfw_itoc_header *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -1082,7 +1125,7 @@ void cibfw_itoc_header_unpack(struct cibfw_itoc_header *ptr_struct, const u_int8 void cibfw_itoc_header_print(const struct cibfw_itoc_header *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== itoc_header ========\n"); + fprintf(file, "======== cibfw_itoc_header ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -1108,7 +1151,7 @@ void cibfw_itoc_header_print(const struct cibfw_itoc_header *ptr_struct, FILE* f } -int cibfw_itoc_header_size(){ +int cibfw_itoc_header_size(void){ return 32; } @@ -1165,6 +1208,8 @@ void cibfw_itoc_entry_pack(const struct cibfw_itoc_entry *ptr_struct, u_int8_t* void cibfw_itoc_entry_unpack(struct cibfw_itoc_entry *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -1210,7 +1255,7 @@ void cibfw_itoc_entry_unpack(struct cibfw_itoc_entry *ptr_struct, const u_int8_t void cibfw_itoc_entry_print(const struct cibfw_itoc_entry *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== itoc_entry ========\n"); + fprintf(file, "======== cibfw_itoc_entry ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -1254,7 +1299,7 @@ void cibfw_itoc_entry_print(const struct cibfw_itoc_entry *ptr_struct, FILE* fil } -int cibfw_itoc_entry_size(){ +int cibfw_itoc_entry_size(void){ return 32; } @@ -1290,6 +1335,8 @@ void cibfw_register_mfai_pack(const struct cibfw_register_mfai *ptr_struct, u_in void cibfw_register_mfai_unpack(struct cibfw_register_mfai *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -1314,7 +1361,7 @@ void cibfw_register_mfai_unpack(struct cibfw_register_mfai *ptr_struct, const u_ void cibfw_register_mfai_print(const struct cibfw_register_mfai *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== register_mfai ========\n"); + fprintf(file, "======== cibfw_register_mfai ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -1337,7 +1384,7 @@ void cibfw_register_mfai_print(const struct cibfw_register_mfai *ptr_struct, FIL } -int cibfw_register_mfai_size(){ +int cibfw_register_mfai_size(void){ return 16; } @@ -1347,17 +1394,17 @@ void cibfw_register_mfai_dump(const struct cibfw_register_mfai *ptr_struct, FILE void cibfw_cibfw_Nodes_pack(const union cibfw_cibfw_Nodes *ptr_struct, u_int8_t* ptr_buff) { - memcpy(ptr_buff, ptr_struct, 1024); + cibfw_image_info_pack(&(ptr_struct->image_info), ptr_buff); } void cibfw_cibfw_Nodes_unpack(union cibfw_cibfw_Nodes *ptr_struct, const u_int8_t* ptr_buff) { - memcpy(ptr_struct, ptr_buff, 1024); + cibfw_image_info_unpack(&(ptr_struct->image_info), ptr_buff); } void cibfw_cibfw_Nodes_print(const union cibfw_cibfw_Nodes *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== cibfw_Nodes ========\n"); + fprintf(file, "======== cibfw_cibfw_Nodes ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -1397,7 +1444,7 @@ void cibfw_cibfw_Nodes_print(const union cibfw_cibfw_Nodes *ptr_struct, FILE* fi } -int cibfw_cibfw_Nodes_size(){ +int cibfw_cibfw_Nodes_size(void){ return 1024; } diff --git a/tools_layouts/cibfw_layouts.h b/tools_layouts/cibfw_layouts.h index d1683dc..2fc0f48 100644 --- a/tools_layouts/cibfw_layouts.h +++ b/tools_layouts/cibfw_layouts.h @@ -1,20 +1,37 @@ - -/* - Mellanox Confidential and Proprietary - +/* + * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: * - * Copyright (C) 2010-2011, Mellanox Technologies Ltd. ALL RIGHTS RESERVED. + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. * - * Except as specifically permitted herein, no portion of the information, - * including but not limited to object code and source code, may be reproduced, - * modified, distributed, republished or otherwise exploited in any form or by - * any means for any purpose without the prior written permission of Mellanox - * Technologies Ltd. Use of software subject to the terms and conditions - * detailed in the file "LICENSE.txt". + * - 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. * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. */ - /*** - *** This file was generated at "2015-01-22 18:18:54" + *** This file was generated at "2015-02-05 17:00:49" *** by: *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/cibfw/cibfw.adb --file-prefix cibfw --prefix cibfw_ ***/ @@ -478,114 +495,130 @@ union cibfw_cibfw_Nodes { void cibfw_uint64_pack(const struct cibfw_uint64 *ptr_struct, u_int8_t* ptr_buff); void cibfw_uint64_unpack(struct cibfw_uint64 *ptr_struct, const u_int8_t* ptr_buff); void cibfw_uint64_print(const struct cibfw_uint64 *ptr_struct, FILE* file, int indent_level); -int cibfw_uint64_size(); +int cibfw_uint64_size(void); #define CIBFW_UINT64_SIZE (0x8) void cibfw_uint64_dump(const struct cibfw_uint64 *ptr_struct, FILE* file); +; /* module_version */ void cibfw_module_version_pack(const struct cibfw_module_version *ptr_struct, u_int8_t* ptr_buff); void cibfw_module_version_unpack(struct cibfw_module_version *ptr_struct, const u_int8_t* ptr_buff); void cibfw_module_version_print(const struct cibfw_module_version *ptr_struct, FILE* file, int indent_level); -int cibfw_module_version_size(); +int cibfw_module_version_size(void); #define CIBFW_MODULE_VERSION_SIZE (0x4) void cibfw_module_version_dump(const struct cibfw_module_version *ptr_struct, FILE* file); +; /* uid_entry */ void cibfw_uid_entry_pack(const struct cibfw_uid_entry *ptr_struct, u_int8_t* ptr_buff); void cibfw_uid_entry_unpack(struct cibfw_uid_entry *ptr_struct, const u_int8_t* ptr_buff); void cibfw_uid_entry_print(const struct cibfw_uid_entry *ptr_struct, FILE* file, int indent_level); -int cibfw_uid_entry_size(); +int cibfw_uid_entry_size(void); #define CIBFW_UID_ENTRY_SIZE (0x10) void cibfw_uid_entry_dump(const struct cibfw_uid_entry *ptr_struct, FILE* file); +; /* module_versions */ void cibfw_module_versions_pack(const struct cibfw_module_versions *ptr_struct, u_int8_t* ptr_buff); void cibfw_module_versions_unpack(struct cibfw_module_versions *ptr_struct, const u_int8_t* ptr_buff); void cibfw_module_versions_print(const struct cibfw_module_versions *ptr_struct, FILE* file, int indent_level); -int cibfw_module_versions_size(); +int cibfw_module_versions_size(void); #define CIBFW_MODULE_VERSIONS_SIZE (0x40) void cibfw_module_versions_dump(const struct cibfw_module_versions *ptr_struct, FILE* file); +; /* TRIPPLE_VERSION */ void cibfw_TRIPPLE_VERSION_pack(const struct cibfw_TRIPPLE_VERSION *ptr_struct, u_int8_t* ptr_buff); void cibfw_TRIPPLE_VERSION_unpack(struct cibfw_TRIPPLE_VERSION *ptr_struct, const u_int8_t* ptr_buff); void cibfw_TRIPPLE_VERSION_print(const struct cibfw_TRIPPLE_VERSION *ptr_struct, FILE* file, int indent_level); -int cibfw_TRIPPLE_VERSION_size(); +int cibfw_TRIPPLE_VERSION_size(void); #define CIBFW_TRIPPLE_VERSION_SIZE (0x8) void cibfw_TRIPPLE_VERSION_dump(const struct cibfw_TRIPPLE_VERSION *ptr_struct, FILE* file); +; /* FW_VERSION */ void cibfw_FW_VERSION_pack(const struct cibfw_FW_VERSION *ptr_struct, u_int8_t* ptr_buff); void cibfw_FW_VERSION_unpack(struct cibfw_FW_VERSION *ptr_struct, const u_int8_t* ptr_buff); void cibfw_FW_VERSION_print(const struct cibfw_FW_VERSION *ptr_struct, FILE* file, int indent_level); -int cibfw_FW_VERSION_size(); +int cibfw_FW_VERSION_size(void); #define CIBFW_FW_VERSION_SIZE (0x10) void cibfw_FW_VERSION_dump(const struct cibfw_FW_VERSION *ptr_struct, FILE* file); +; /* guids */ void cibfw_guids_pack(const struct cibfw_guids *ptr_struct, u_int8_t* ptr_buff); void cibfw_guids_unpack(struct cibfw_guids *ptr_struct, const u_int8_t* ptr_buff); void cibfw_guids_print(const struct cibfw_guids *ptr_struct, FILE* file, int indent_level); -int cibfw_guids_size(); +int cibfw_guids_size(void); #define CIBFW_GUIDS_SIZE (0x40) void cibfw_guids_dump(const struct cibfw_guids *ptr_struct, FILE* file); +; /* operation_key */ void cibfw_operation_key_pack(const struct cibfw_operation_key *ptr_struct, u_int8_t* ptr_buff); void cibfw_operation_key_unpack(struct cibfw_operation_key *ptr_struct, const u_int8_t* ptr_buff); void cibfw_operation_key_print(const struct cibfw_operation_key *ptr_struct, FILE* file, int indent_level); -int cibfw_operation_key_size(); +int cibfw_operation_key_size(void); #define CIBFW_OPERATION_KEY_SIZE (0x10) void cibfw_operation_key_dump(const struct cibfw_operation_key *ptr_struct, FILE* file); +; /* image_info */ void cibfw_image_info_pack(const struct cibfw_image_info *ptr_struct, u_int8_t* ptr_buff); void cibfw_image_info_unpack(struct cibfw_image_info *ptr_struct, const u_int8_t* ptr_buff); void cibfw_image_info_print(const struct cibfw_image_info *ptr_struct, FILE* file, int indent_level); -int cibfw_image_info_size(); +int cibfw_image_info_size(void); #define CIBFW_IMAGE_INFO_SIZE (0x400) void cibfw_image_info_dump(const struct cibfw_image_info *ptr_struct, FILE* file); +; /* mfg_info */ void cibfw_mfg_info_pack(const struct cibfw_mfg_info *ptr_struct, u_int8_t* ptr_buff); void cibfw_mfg_info_unpack(struct cibfw_mfg_info *ptr_struct, const u_int8_t* ptr_buff); void cibfw_mfg_info_print(const struct cibfw_mfg_info *ptr_struct, FILE* file, int indent_level); -int cibfw_mfg_info_size(); +int cibfw_mfg_info_size(void); #define CIBFW_MFG_INFO_SIZE (0x140) void cibfw_mfg_info_dump(const struct cibfw_mfg_info *ptr_struct, FILE* file); +; /* device_info */ void cibfw_device_info_pack(const struct cibfw_device_info *ptr_struct, u_int8_t* ptr_buff); void cibfw_device_info_unpack(struct cibfw_device_info *ptr_struct, const u_int8_t* ptr_buff); void cibfw_device_info_print(const struct cibfw_device_info *ptr_struct, FILE* file, int indent_level); -int cibfw_device_info_size(); +int cibfw_device_info_size(void); #define CIBFW_DEVICE_INFO_SIZE (0x200) void cibfw_device_info_dump(const struct cibfw_device_info *ptr_struct, FILE* file); +; /* register_mfrl */ void cibfw_register_mfrl_pack(const struct cibfw_register_mfrl *ptr_struct, u_int8_t* ptr_buff); void cibfw_register_mfrl_unpack(struct cibfw_register_mfrl *ptr_struct, const u_int8_t* ptr_buff); void cibfw_register_mfrl_print(const struct cibfw_register_mfrl *ptr_struct, FILE* file, int indent_level); -int cibfw_register_mfrl_size(); +int cibfw_register_mfrl_size(void); #define CIBFW_REGISTER_MFRL_SIZE (0x10) void cibfw_register_mfrl_dump(const struct cibfw_register_mfrl *ptr_struct, FILE* file); +; /* itoc_header */ void cibfw_itoc_header_pack(const struct cibfw_itoc_header *ptr_struct, u_int8_t* ptr_buff); void cibfw_itoc_header_unpack(struct cibfw_itoc_header *ptr_struct, const u_int8_t* ptr_buff); void cibfw_itoc_header_print(const struct cibfw_itoc_header *ptr_struct, FILE* file, int indent_level); -int cibfw_itoc_header_size(); +int cibfw_itoc_header_size(void); #define CIBFW_ITOC_HEADER_SIZE (0x20) void cibfw_itoc_header_dump(const struct cibfw_itoc_header *ptr_struct, FILE* file); +; /* itoc_entry */ void cibfw_itoc_entry_pack(const struct cibfw_itoc_entry *ptr_struct, u_int8_t* ptr_buff); void cibfw_itoc_entry_unpack(struct cibfw_itoc_entry *ptr_struct, const u_int8_t* ptr_buff); void cibfw_itoc_entry_print(const struct cibfw_itoc_entry *ptr_struct, FILE* file, int indent_level); -int cibfw_itoc_entry_size(); +int cibfw_itoc_entry_size(void); #define CIBFW_ITOC_ENTRY_SIZE (0x20) void cibfw_itoc_entry_dump(const struct cibfw_itoc_entry *ptr_struct, FILE* file); +; /* register_mfai */ void cibfw_register_mfai_pack(const struct cibfw_register_mfai *ptr_struct, u_int8_t* ptr_buff); void cibfw_register_mfai_unpack(struct cibfw_register_mfai *ptr_struct, const u_int8_t* ptr_buff); void cibfw_register_mfai_print(const struct cibfw_register_mfai *ptr_struct, FILE* file, int indent_level); -int cibfw_register_mfai_size(); +int cibfw_register_mfai_size(void); #define CIBFW_REGISTER_MFAI_SIZE (0x10) void cibfw_register_mfai_dump(const struct cibfw_register_mfai *ptr_struct, FILE* file); +; /* cibfw_Nodes */ void cibfw_cibfw_Nodes_pack(const union cibfw_cibfw_Nodes *ptr_struct, u_int8_t* ptr_buff); void cibfw_cibfw_Nodes_unpack(union cibfw_cibfw_Nodes *ptr_struct, const u_int8_t* ptr_buff); void cibfw_cibfw_Nodes_print(const union cibfw_cibfw_Nodes *ptr_struct, FILE* file, int indent_level); -int cibfw_cibfw_Nodes_size(); +int cibfw_cibfw_Nodes_size(void); #define CIBFW_CIBFW_NODES_SIZE (0x400) void cibfw_cibfw_Nodes_dump(const union cibfw_cibfw_Nodes *ptr_struct, FILE* file); +; #ifdef __cplusplus diff --git a/tools_layouts/cx4fw_layouts.c b/tools_layouts/cx4fw_layouts.c index e801fab..2eeb44d 100644 --- a/tools_layouts/cx4fw_layouts.c +++ b/tools_layouts/cx4fw_layouts.c @@ -1,20 +1,37 @@ - -/* - Mellanox Confidential and Proprietary - +/* + * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: * - * Copyright (C) 2010-2011, Mellanox Technologies Ltd. ALL RIGHTS RESERVED. + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. * - * Except as specifically permitted herein, no portion of the information, - * including but not limited to object code and source code, may be reproduced, - * modified, distributed, republished or otherwise exploited in any form or by - * any means for any purpose without the prior written permission of Mellanox - * Technologies Ltd. Use of software subject to the terms and conditions - * detailed in the file "LICENSE.txt". + * - 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. * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. */ - /*** - *** This file was generated at "2015-02-05 17:00:26" + *** This file was generated at "2015-04-20 13:45:40" *** by: *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/connectx4/connectx4.adb --file-prefix cx4fw --prefix cx4fw_ ***/ diff --git a/tools_layouts/cx4fw_layouts.h b/tools_layouts/cx4fw_layouts.h index 4758938..c458f7a 100644 --- a/tools_layouts/cx4fw_layouts.h +++ b/tools_layouts/cx4fw_layouts.h @@ -1,20 +1,37 @@ - -/* - Mellanox Confidential and Proprietary - +/* + * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: * - * Copyright (C) 2010-2011, Mellanox Technologies Ltd. ALL RIGHTS RESERVED. + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. * - * Except as specifically permitted herein, no portion of the information, - * including but not limited to object code and source code, may be reproduced, - * modified, distributed, republished or otherwise exploited in any form or by - * any means for any purpose without the prior written permission of Mellanox - * Technologies Ltd. Use of software subject to the terms and conditions - * detailed in the file "LICENSE.txt". + * - 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. * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. */ - /*** - *** This file was generated at "2015-02-05 17:00:26" + *** This file was generated at "2015-04-20 13:45:40" *** by: *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/connectx4/connectx4.adb --file-prefix cx4fw --prefix cx4fw_ ***/ @@ -175,7 +192,6 @@ void cx4fw_uint64_print(const struct cx4fw_uint64 *ptr_struct, FILE* file, int i int cx4fw_uint64_size(void); #define CX4FW_UINT64_SIZE (0x8) void cx4fw_uint64_dump(const struct cx4fw_uint64 *ptr_struct, FILE* file); -; /* uid_entry */ void cx4fw_uid_entry_pack(const struct cx4fw_uid_entry *ptr_struct, u_int8_t* ptr_buff); void cx4fw_uid_entry_unpack(struct cx4fw_uid_entry *ptr_struct, const u_int8_t* ptr_buff); @@ -183,7 +199,6 @@ void cx4fw_uid_entry_print(const struct cx4fw_uid_entry *ptr_struct, FILE* file, int cx4fw_uid_entry_size(void); #define CX4FW_UID_ENTRY_SIZE (0x10) void cx4fw_uid_entry_dump(const struct cx4fw_uid_entry *ptr_struct, FILE* file); -; /* guids */ void cx4fw_guids_pack(const struct cx4fw_guids *ptr_struct, u_int8_t* ptr_buff); void cx4fw_guids_unpack(struct cx4fw_guids *ptr_struct, const u_int8_t* ptr_buff); @@ -191,7 +206,6 @@ void cx4fw_guids_print(const struct cx4fw_guids *ptr_struct, FILE* file, int ind int cx4fw_guids_size(void); #define CX4FW_GUIDS_SIZE (0x40) void cx4fw_guids_dump(const struct cx4fw_guids *ptr_struct, FILE* file); -; /* operation_key */ void cx4fw_operation_key_pack(const struct cx4fw_operation_key *ptr_struct, u_int8_t* ptr_buff); void cx4fw_operation_key_unpack(struct cx4fw_operation_key *ptr_struct, const u_int8_t* ptr_buff); @@ -199,7 +213,6 @@ void cx4fw_operation_key_print(const struct cx4fw_operation_key *ptr_struct, FIL int cx4fw_operation_key_size(void); #define CX4FW_OPERATION_KEY_SIZE (0x10) void cx4fw_operation_key_dump(const struct cx4fw_operation_key *ptr_struct, FILE* file); -; /* mfg_info */ void cx4fw_mfg_info_pack(const struct cx4fw_mfg_info *ptr_struct, u_int8_t* ptr_buff); void cx4fw_mfg_info_unpack(struct cx4fw_mfg_info *ptr_struct, const u_int8_t* ptr_buff); @@ -207,7 +220,6 @@ void cx4fw_mfg_info_print(const struct cx4fw_mfg_info *ptr_struct, FILE* file, i int cx4fw_mfg_info_size(void); #define CX4FW_MFG_INFO_SIZE (0x140) void cx4fw_mfg_info_dump(const struct cx4fw_mfg_info *ptr_struct, FILE* file); -; /* device_info */ void cx4fw_device_info_pack(const struct cx4fw_device_info *ptr_struct, u_int8_t* ptr_buff); void cx4fw_device_info_unpack(struct cx4fw_device_info *ptr_struct, const u_int8_t* ptr_buff); @@ -215,7 +227,6 @@ void cx4fw_device_info_print(const struct cx4fw_device_info *ptr_struct, FILE* f int cx4fw_device_info_size(void); #define CX4FW_DEVICE_INFO_SIZE (0x200) void cx4fw_device_info_dump(const struct cx4fw_device_info *ptr_struct, FILE* file); -; /* cx4fw_Nodes */ void cx4fw_cx4fw_Nodes_pack(const union cx4fw_cx4fw_Nodes *ptr_struct, u_int8_t* ptr_buff); void cx4fw_cx4fw_Nodes_unpack(union cx4fw_cx4fw_Nodes *ptr_struct, const u_int8_t* ptr_buff); @@ -223,7 +234,6 @@ void cx4fw_cx4fw_Nodes_print(const union cx4fw_cx4fw_Nodes *ptr_struct, FILE* fi int cx4fw_cx4fw_Nodes_size(void); #define CX4FW_CX4FW_NODES_SIZE (0x200) void cx4fw_cx4fw_Nodes_dump(const union cx4fw_cx4fw_Nodes *ptr_struct, FILE* file); -; #ifdef __cplusplus diff --git a/tools_layouts/register_access_open_layouts.c b/tools_layouts/register_access_open_layouts.c index 48d72f7..7387ba7 100644 --- a/tools_layouts/register_access_open_layouts.c +++ b/tools_layouts/register_access_open_layouts.c @@ -28,11 +28,10 @@ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. - * */ /*** - *** This file was generated at "2014-11-12 13:19:51" + *** This file was generated at "2015-02-05 17:01:35" *** by: *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/register_access_open/register_access_open.adb --file-prefix register_access_open --prefix register_access_ ***/ @@ -68,6 +67,8 @@ void register_access_mfba_pack(const struct register_access_mfba *ptr_struct, u_ void register_access_mfba_unpack(struct register_access_mfba *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -94,7 +95,7 @@ void register_access_mfba_unpack(struct register_access_mfba *ptr_struct, const void register_access_mfba_print(const struct register_access_mfba *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== mfba ========\n"); + fprintf(file, "======== register_access_mfba ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -114,12 +115,12 @@ void register_access_mfba_print(const struct register_access_mfba *ptr_struct, F for (i=0; i < 64; i++) { adb2c_add_indentation(file, indent_level); - fprintf(file, "data[%3d] : "U32H_FMT"\n", i, ptr_struct->data[i]); + fprintf(file, "data_%03d : "U32H_FMT"\n", i, ptr_struct->data[i]); } } -int register_access_mfba_size(){ +int register_access_mfba_size(void){ return 268; } @@ -164,6 +165,8 @@ void register_access_mfpa_pack(const struct register_access_mfpa *ptr_struct, u_ void register_access_mfpa_unpack(struct register_access_mfpa *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -197,7 +200,7 @@ void register_access_mfpa_unpack(struct register_access_mfpa *ptr_struct, const void register_access_mfpa_print(const struct register_access_mfpa *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== mfpa ========\n"); + fprintf(file, "======== register_access_mfpa ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -229,7 +232,7 @@ void register_access_mfpa_print(const struct register_access_mfpa *ptr_struct, F } -int register_access_mfpa_size(){ +int register_access_mfpa_size(void){ return 36; } @@ -259,6 +262,8 @@ void register_access_mfbe_pack(const struct register_access_mfbe *ptr_struct, u_ void register_access_mfbe_unpack(struct register_access_mfbe *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -277,7 +282,7 @@ void register_access_mfbe_unpack(struct register_access_mfbe *ptr_struct, const void register_access_mfbe_print(const struct register_access_mfbe *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== mfbe ========\n"); + fprintf(file, "======== register_access_mfbe ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -294,7 +299,7 @@ void register_access_mfbe_print(const struct register_access_mfbe *ptr_struct, F } -int register_access_mfbe_size(){ +int register_access_mfbe_size(void){ return 12; } @@ -304,17 +309,17 @@ void register_access_mfbe_dump(const struct register_access_mfbe *ptr_struct, FI void register_access_register_access_open_Nodes_pack(const union register_access_register_access_open_Nodes *ptr_struct, u_int8_t* ptr_buff) { - memcpy(ptr_buff, ptr_struct, 268); + register_access_mfba_pack(&(ptr_struct->mfba), ptr_buff); } void register_access_register_access_open_Nodes_unpack(union register_access_register_access_open_Nodes *ptr_struct, const u_int8_t* ptr_buff) { - memcpy(ptr_struct, ptr_buff, 268); + register_access_mfba_unpack(&(ptr_struct->mfba), ptr_buff); } void register_access_register_access_open_Nodes_print(const union register_access_register_access_open_Nodes *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== register_access_open_Nodes ========\n"); + fprintf(file, "======== register_access_register_access_open_Nodes ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -334,7 +339,7 @@ void register_access_register_access_open_Nodes_print(const union register_acces } -int register_access_register_access_open_Nodes_size(){ +int register_access_register_access_open_Nodes_size(void){ return 268; } diff --git a/tools_layouts/register_access_open_layouts.h b/tools_layouts/register_access_open_layouts.h index 47c5a59..badb185 100644 --- a/tools_layouts/register_access_open_layouts.h +++ b/tools_layouts/register_access_open_layouts.h @@ -28,11 +28,10 @@ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. - * */ /*** - *** This file was generated at "2014-11-12 13:19:51" + *** This file was generated at "2015-02-05 17:01:35" *** by: *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/register_access_open/register_access_open.adb --file-prefix register_access_open --prefix register_access_ ***/ @@ -140,30 +139,34 @@ union register_access_register_access_open_Nodes { void register_access_mfba_pack(const struct register_access_mfba *ptr_struct, u_int8_t* ptr_buff); void register_access_mfba_unpack(struct register_access_mfba *ptr_struct, const u_int8_t* ptr_buff); void register_access_mfba_print(const struct register_access_mfba *ptr_struct, FILE* file, int indent_level); -int register_access_mfba_size(); +int register_access_mfba_size(void); #define REGISTER_ACCESS_MFBA_SIZE (0x10c) void register_access_mfba_dump(const struct register_access_mfba *ptr_struct, FILE* file); +; /* mfpa */ void register_access_mfpa_pack(const struct register_access_mfpa *ptr_struct, u_int8_t* ptr_buff); void register_access_mfpa_unpack(struct register_access_mfpa *ptr_struct, const u_int8_t* ptr_buff); void register_access_mfpa_print(const struct register_access_mfpa *ptr_struct, FILE* file, int indent_level); -int register_access_mfpa_size(); +int register_access_mfpa_size(void); #define REGISTER_ACCESS_MFPA_SIZE (0x24) void register_access_mfpa_dump(const struct register_access_mfpa *ptr_struct, FILE* file); +; /* mfbe */ void register_access_mfbe_pack(const struct register_access_mfbe *ptr_struct, u_int8_t* ptr_buff); void register_access_mfbe_unpack(struct register_access_mfbe *ptr_struct, const u_int8_t* ptr_buff); void register_access_mfbe_print(const struct register_access_mfbe *ptr_struct, FILE* file, int indent_level); -int register_access_mfbe_size(); +int register_access_mfbe_size(void); #define REGISTER_ACCESS_MFBE_SIZE (0xc) void register_access_mfbe_dump(const struct register_access_mfbe *ptr_struct, FILE* file); +; /* register_access_open_Nodes */ void register_access_register_access_open_Nodes_pack(const union register_access_register_access_open_Nodes *ptr_struct, u_int8_t* ptr_buff); void register_access_register_access_open_Nodes_unpack(union register_access_register_access_open_Nodes *ptr_struct, const u_int8_t* ptr_buff); void register_access_register_access_open_Nodes_print(const union register_access_register_access_open_Nodes *ptr_struct, FILE* file, int indent_level); -int register_access_register_access_open_Nodes_size(); +int register_access_register_access_open_Nodes_size(void); #define REGISTER_ACCESS_REGISTER_ACCESS_OPEN_NODES_SIZE (0x10c) void register_access_register_access_open_Nodes_dump(const union register_access_register_access_open_Nodes *ptr_struct, FILE* file); +; #ifdef __cplusplus diff --git a/tools_layouts/register_access_sib_layouts.c b/tools_layouts/register_access_sib_layouts.c index 05dcc92..26a10a2 100644 --- a/tools_layouts/register_access_sib_layouts.c +++ b/tools_layouts/register_access_sib_layouts.c @@ -1,20 +1,37 @@ - -/* - Mellanox Confidential and Proprietary - +/* + * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: * - * Copyright (C) 2010-2011, Mellanox Technologies Ltd. ALL RIGHTS RESERVED. + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. * - * Except as specifically permitted herein, no portion of the information, - * including but not limited to object code and source code, may be reproduced, - * modified, distributed, republished or otherwise exploited in any form or by - * any means for any purpose without the prior written permission of Mellanox - * Technologies Ltd. Use of software subject to the terms and conditions - * detailed in the file "LICENSE.txt". + * - 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. * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. */ - /*** - *** This file was generated at "2015-01-22 18:18:34" + *** This file was generated at "2015-02-05 17:00:28" *** by: *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/register_access/register_access_sib.adb --file-prefix register_access_sib --prefix register_access_sib_ ***/ @@ -38,6 +55,8 @@ void register_access_sib_IB_PSID__pack(const struct register_access_sib_IB_PSID_ void register_access_sib_IB_PSID__unpack(struct register_access_sib_IB_PSID_ *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -52,7 +71,7 @@ void register_access_sib_IB_PSID__unpack(struct register_access_sib_IB_PSID_ *pt void register_access_sib_IB_PSID__print(const struct register_access_sib_IB_PSID_ *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== IB_PSID_ ========\n"); + fprintf(file, "======== register_access_sib_IB_PSID_ ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -60,12 +79,12 @@ void register_access_sib_IB_PSID__print(const struct register_access_sib_IB_PSID for (i=0; i < 4; i++) { adb2c_add_indentation(file, indent_level); - fprintf(file, "PS_ID[%3d] : "U32H_FMT"\n", i, ptr_struct->PS_ID[i]); + fprintf(file, "PS_ID_%03d : "U32H_FMT"\n", i, ptr_struct->PS_ID[i]); } } -int register_access_sib_IB_PSID__size(){ +int register_access_sib_IB_PSID__size(void){ return 16; } @@ -95,6 +114,8 @@ void register_access_sib_IB_SWInfo__pack(const struct register_access_sib_IB_SWI void register_access_sib_IB_SWInfo__unpack(struct register_access_sib_IB_SWInfo_ *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -113,7 +134,7 @@ void register_access_sib_IB_SWInfo__unpack(struct register_access_sib_IB_SWInfo_ void register_access_sib_IB_SWInfo__print(const struct register_access_sib_IB_SWInfo_ *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== IB_SWInfo_ ========\n"); + fprintf(file, "======== register_access_sib_IB_SWInfo_ ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -130,7 +151,7 @@ void register_access_sib_IB_SWInfo__print(const struct register_access_sib_IB_SW } -int register_access_sib_IB_SWInfo__size(){ +int register_access_sib_IB_SWInfo__size(void){ return 32; } @@ -190,6 +211,8 @@ void register_access_sib_IB_FWInfo__pack(const struct register_access_sib_IB_FWI void register_access_sib_IB_FWInfo__unpack(struct register_access_sib_IB_FWInfo_ *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -238,7 +261,7 @@ void register_access_sib_IB_FWInfo__unpack(struct register_access_sib_IB_FWInfo_ void register_access_sib_IB_FWInfo__print(const struct register_access_sib_IB_FWInfo_ *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== IB_FWInfo_ ========\n"); + fprintf(file, "======== register_access_sib_IB_FWInfo_ ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -286,7 +309,7 @@ void register_access_sib_IB_FWInfo__print(const struct register_access_sib_IB_FW } -int register_access_sib_IB_FWInfo__size(){ +int register_access_sib_IB_FWInfo__size(void){ return 64; } @@ -322,6 +345,8 @@ void register_access_sib_IB_HWInfo__pack(const struct register_access_sib_IB_HWI void register_access_sib_IB_HWInfo__unpack(struct register_access_sib_IB_HWInfo_ *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -346,7 +371,7 @@ void register_access_sib_IB_HWInfo__unpack(struct register_access_sib_IB_HWInfo_ void register_access_sib_IB_HWInfo__print(const struct register_access_sib_IB_HWInfo_ *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== IB_HWInfo_ ========\n"); + fprintf(file, "======== register_access_sib_IB_HWInfo_ ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -369,7 +394,7 @@ void register_access_sib_IB_HWInfo__print(const struct register_access_sib_IB_HW } -int register_access_sib_IB_HWInfo__size(){ +int register_access_sib_IB_HWInfo__size(void){ return 32; } @@ -399,6 +424,8 @@ void register_access_sib_mgir_pack(const struct register_access_sib_mgir *ptr_st void register_access_sib_mgir_unpack(struct register_access_sib_mgir *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -417,7 +444,7 @@ void register_access_sib_mgir_unpack(struct register_access_sib_mgir *ptr_struct void register_access_sib_mgir_print(const struct register_access_sib_mgir *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== mgir ========\n"); + fprintf(file, "======== register_access_sib_mgir ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -437,7 +464,7 @@ void register_access_sib_mgir_print(const struct register_access_sib_mgir *ptr_s } -int register_access_sib_mgir_size(){ +int register_access_sib_mgir_size(void){ return 128; } @@ -491,6 +518,8 @@ void register_access_sib_mtmp_pack(const struct register_access_sib_mtmp *ptr_st void register_access_sib_mtmp_unpack(struct register_access_sib_mtmp *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -533,7 +562,7 @@ void register_access_sib_mtmp_unpack(struct register_access_sib_mtmp *ptr_struct void register_access_sib_mtmp_print(const struct register_access_sib_mtmp *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== mtmp ========\n"); + fprintf(file, "======== register_access_sib_mtmp ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -574,7 +603,7 @@ void register_access_sib_mtmp_print(const struct register_access_sib_mtmp *ptr_s } -int register_access_sib_mtmp_size(){ +int register_access_sib_mtmp_size(void){ return 28; } @@ -584,17 +613,17 @@ void register_access_sib_mtmp_dump(const struct register_access_sib_mtmp *ptr_st void register_access_sib_register_access_sib_Nodes_pack(const union register_access_sib_register_access_sib_Nodes *ptr_struct, u_int8_t* ptr_buff) { - memcpy(ptr_buff, ptr_struct, 128); + register_access_sib_mgir_pack(&(ptr_struct->mgir), ptr_buff); } void register_access_sib_register_access_sib_Nodes_unpack(union register_access_sib_register_access_sib_Nodes *ptr_struct, const u_int8_t* ptr_buff) { - memcpy(ptr_struct, ptr_buff, 128); + register_access_sib_mgir_unpack(&(ptr_struct->mgir), ptr_buff); } void register_access_sib_register_access_sib_Nodes_print(const union register_access_sib_register_access_sib_Nodes *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== register_access_sib_Nodes ========\n"); + fprintf(file, "======== register_access_sib_register_access_sib_Nodes ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -610,7 +639,7 @@ void register_access_sib_register_access_sib_Nodes_print(const union register_ac } -int register_access_sib_register_access_sib_Nodes_size(){ +int register_access_sib_register_access_sib_Nodes_size(void){ return 128; } diff --git a/tools_layouts/register_access_sib_layouts.h b/tools_layouts/register_access_sib_layouts.h index 5a9c1f8..e4325dc 100644 --- a/tools_layouts/register_access_sib_layouts.h +++ b/tools_layouts/register_access_sib_layouts.h @@ -1,20 +1,37 @@ - -/* - Mellanox Confidential and Proprietary - +/* + * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: * - * Copyright (C) 2010-2011, Mellanox Technologies Ltd. ALL RIGHTS RESERVED. + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. * - * Except as specifically permitted herein, no portion of the information, - * including but not limited to object code and source code, may be reproduced, - * modified, distributed, republished or otherwise exploited in any form or by - * any means for any purpose without the prior written permission of Mellanox - * Technologies Ltd. Use of software subject to the terms and conditions - * detailed in the file "LICENSE.txt". + * - 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. * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. */ - /*** - *** This file was generated at "2015-01-22 18:18:34" + *** This file was generated at "2015-02-05 17:00:28" *** by: *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/register_access/register_access_sib.adb --file-prefix register_access_sib --prefix register_access_sib_ ***/ @@ -211,51 +228,58 @@ union register_access_sib_register_access_sib_Nodes { void register_access_sib_IB_PSID__pack(const struct register_access_sib_IB_PSID_ *ptr_struct, u_int8_t* ptr_buff); void register_access_sib_IB_PSID__unpack(struct register_access_sib_IB_PSID_ *ptr_struct, const u_int8_t* ptr_buff); void register_access_sib_IB_PSID__print(const struct register_access_sib_IB_PSID_ *ptr_struct, FILE* file, int indent_level); -int register_access_sib_IB_PSID__size(); +int register_access_sib_IB_PSID__size(void); #define REGISTER_ACCESS_SIB_IB_PSID__SIZE (0x10) void register_access_sib_IB_PSID__dump(const struct register_access_sib_IB_PSID_ *ptr_struct, FILE* file); +; /* IB_SWInfo_ */ void register_access_sib_IB_SWInfo__pack(const struct register_access_sib_IB_SWInfo_ *ptr_struct, u_int8_t* ptr_buff); void register_access_sib_IB_SWInfo__unpack(struct register_access_sib_IB_SWInfo_ *ptr_struct, const u_int8_t* ptr_buff); void register_access_sib_IB_SWInfo__print(const struct register_access_sib_IB_SWInfo_ *ptr_struct, FILE* file, int indent_level); -int register_access_sib_IB_SWInfo__size(); +int register_access_sib_IB_SWInfo__size(void); #define REGISTER_ACCESS_SIB_IB_SWINFO__SIZE (0x20) void register_access_sib_IB_SWInfo__dump(const struct register_access_sib_IB_SWInfo_ *ptr_struct, FILE* file); +; /* IB_FWInfo_ */ void register_access_sib_IB_FWInfo__pack(const struct register_access_sib_IB_FWInfo_ *ptr_struct, u_int8_t* ptr_buff); void register_access_sib_IB_FWInfo__unpack(struct register_access_sib_IB_FWInfo_ *ptr_struct, const u_int8_t* ptr_buff); void register_access_sib_IB_FWInfo__print(const struct register_access_sib_IB_FWInfo_ *ptr_struct, FILE* file, int indent_level); -int register_access_sib_IB_FWInfo__size(); +int register_access_sib_IB_FWInfo__size(void); #define REGISTER_ACCESS_SIB_IB_FWINFO__SIZE (0x40) void register_access_sib_IB_FWInfo__dump(const struct register_access_sib_IB_FWInfo_ *ptr_struct, FILE* file); +; /* IB_HWInfo_ */ void register_access_sib_IB_HWInfo__pack(const struct register_access_sib_IB_HWInfo_ *ptr_struct, u_int8_t* ptr_buff); void register_access_sib_IB_HWInfo__unpack(struct register_access_sib_IB_HWInfo_ *ptr_struct, const u_int8_t* ptr_buff); void register_access_sib_IB_HWInfo__print(const struct register_access_sib_IB_HWInfo_ *ptr_struct, FILE* file, int indent_level); -int register_access_sib_IB_HWInfo__size(); +int register_access_sib_IB_HWInfo__size(void); #define REGISTER_ACCESS_SIB_IB_HWINFO__SIZE (0x20) void register_access_sib_IB_HWInfo__dump(const struct register_access_sib_IB_HWInfo_ *ptr_struct, FILE* file); +; /* mgir */ void register_access_sib_mgir_pack(const struct register_access_sib_mgir *ptr_struct, u_int8_t* ptr_buff); void register_access_sib_mgir_unpack(struct register_access_sib_mgir *ptr_struct, const u_int8_t* ptr_buff); void register_access_sib_mgir_print(const struct register_access_sib_mgir *ptr_struct, FILE* file, int indent_level); -int register_access_sib_mgir_size(); +int register_access_sib_mgir_size(void); #define REGISTER_ACCESS_SIB_MGIR_SIZE (0x80) void register_access_sib_mgir_dump(const struct register_access_sib_mgir *ptr_struct, FILE* file); +; /* mtmp */ void register_access_sib_mtmp_pack(const struct register_access_sib_mtmp *ptr_struct, u_int8_t* ptr_buff); void register_access_sib_mtmp_unpack(struct register_access_sib_mtmp *ptr_struct, const u_int8_t* ptr_buff); void register_access_sib_mtmp_print(const struct register_access_sib_mtmp *ptr_struct, FILE* file, int indent_level); -int register_access_sib_mtmp_size(); +int register_access_sib_mtmp_size(void); #define REGISTER_ACCESS_SIB_MTMP_SIZE (0x1c) void register_access_sib_mtmp_dump(const struct register_access_sib_mtmp *ptr_struct, FILE* file); +; /* register_access_sib_Nodes */ void register_access_sib_register_access_sib_Nodes_pack(const union register_access_sib_register_access_sib_Nodes *ptr_struct, u_int8_t* ptr_buff); void register_access_sib_register_access_sib_Nodes_unpack(union register_access_sib_register_access_sib_Nodes *ptr_struct, const u_int8_t* ptr_buff); void register_access_sib_register_access_sib_Nodes_print(const union register_access_sib_register_access_sib_Nodes *ptr_struct, FILE* file, int indent_level); -int register_access_sib_register_access_sib_Nodes_size(); +int register_access_sib_register_access_sib_Nodes_size(void); #define REGISTER_ACCESS_SIB_REGISTER_ACCESS_SIB_NODES_SIZE (0x80) void register_access_sib_register_access_sib_Nodes_dump(const union register_access_sib_register_access_sib_Nodes *ptr_struct, FILE* file); +; #ifdef __cplusplus diff --git a/tools_layouts/tools_open_layouts.c b/tools_layouts/tools_open_layouts.c index 25b4b46..59073e9 100644 --- a/tools_layouts/tools_open_layouts.c +++ b/tools_layouts/tools_open_layouts.c @@ -1,25 +1,496 @@ - -/* - Mellanox Confidential and Proprietary - +/* + * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: * - * Copyright (C) 2010-2011, Mellanox Technologies Ltd. ALL RIGHTS RESERVED. + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: * - * Except as specifically permitted herein, no portion of the information, - * including but not limited to object code and source code, may be reproduced, - * modified, distributed, republished or otherwise exploited in any form or by - * any means for any purpose without the prior written permission of Mellanox - * Technologies Ltd. Use of software subject to the terms and conditions - * detailed in the file "LICENSE.txt". + * - 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. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. */ - /*** - *** This file was generated at "2015-01-22 18:19:26" + *** This file was generated at "2015-03-30 10:56:56" *** by: *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/tools_open/tools_open.adb --file-prefix tools_open --prefix tools_open_ ***/ #include "tools_open_layouts.h" +void tools_open_tlv_type_dw_pack(const struct tools_open_tlv_type_dw *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=0; + adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->tlv_type_dw); + +} + +void tools_open_tlv_type_dw_unpack(struct tools_open_tlv_type_dw *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + u_int8_t val=0; + (void)val; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=0; + ptr_struct->tlv_type_dw = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4); + +} + +void tools_open_tlv_type_dw_print(const struct tools_open_tlv_type_dw *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== tools_open_tlv_type_dw ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "tlv_type_dw : "U32H_FMT"\n", ptr_struct->tlv_type_dw); + +} + +int tools_open_tlv_type_dw_size(void){ + return 4; +} + +void tools_open_tlv_type_dw_dump(const struct tools_open_tlv_type_dw *ptr_struct, FILE* file) { + tools_open_tlv_type_dw_print(ptr_struct, file, 0); +} + +void tools_open_per_port_type_pack(const struct tools_open_per_port_type *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=16; + adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->param_idx); + + offset=8; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->port); + + offset=0; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->param_class); + +} + +void tools_open_per_port_type_unpack(struct tools_open_per_port_type *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + u_int8_t val=0; + (void)val; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=16; + ptr_struct->param_idx = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16); + + offset=8; + ptr_struct->port = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + + offset=0; + ptr_struct->param_class = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + +} + +void tools_open_per_port_type_print(const struct tools_open_per_port_type *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== tools_open_per_port_type ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "param_idx : "UH_FMT"\n", ptr_struct->param_idx); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "port : "UH_FMT"\n", ptr_struct->port); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "param_class : "UH_FMT"\n", ptr_struct->param_class); + +} + +int tools_open_per_port_type_size(void){ + return 4; +} + +void tools_open_per_port_type_dump(const struct tools_open_per_port_type *ptr_struct, FILE* file) { + tools_open_per_port_type_print(ptr_struct, file, 0); +} + +void tools_open_bmc_type_pack(const struct tools_open_bmc_type *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=19; + adb2c_push_bits_to_buff(ptr_buff, offset, 13, (u_int32_t)ptr_struct->param_idx); + + offset=14; + adb2c_push_bits_to_buff(ptr_buff, offset, 5, (u_int32_t)ptr_struct->channel); + + offset=8; + adb2c_push_bits_to_buff(ptr_buff, offset, 6, (u_int32_t)ptr_struct->host); + + offset=0; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->param_class); + +} + +void tools_open_bmc_type_unpack(struct tools_open_bmc_type *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + u_int8_t val=0; + (void)val; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=19; + ptr_struct->param_idx = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 13); + + offset=14; + ptr_struct->channel = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 5); + + offset=8; + ptr_struct->host = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 6); + + offset=0; + ptr_struct->param_class = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + +} + +void tools_open_bmc_type_print(const struct tools_open_bmc_type *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== tools_open_bmc_type ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "param_idx : "UH_FMT"\n", ptr_struct->param_idx); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "channel : "UH_FMT"\n", ptr_struct->channel); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "host : "UH_FMT"\n", ptr_struct->host); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "param_class : "UH_FMT"\n", ptr_struct->param_class); + +} + +int tools_open_bmc_type_size(void){ + return 4; +} + +void tools_open_bmc_type_dump(const struct tools_open_bmc_type *ptr_struct, FILE* file) { + tools_open_bmc_type_print(ptr_struct, file, 0); +} + +void tools_open_per_host_type_pack(const struct tools_open_per_host_type *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=22; + adb2c_push_bits_to_buff(ptr_buff, offset, 10, (u_int32_t)ptr_struct->param_idx); + + offset=14; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->function); + + offset=8; + adb2c_push_bits_to_buff(ptr_buff, offset, 6, (u_int32_t)ptr_struct->host); + + offset=0; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->param_class); + +} + +void tools_open_per_host_type_unpack(struct tools_open_per_host_type *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + u_int8_t val=0; + (void)val; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=22; + ptr_struct->param_idx = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 10); + + offset=14; + ptr_struct->function = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + + offset=8; + ptr_struct->host = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 6); + + offset=0; + ptr_struct->param_class = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + +} + +void tools_open_per_host_type_print(const struct tools_open_per_host_type *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== tools_open_per_host_type ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "param_idx : "UH_FMT"\n", ptr_struct->param_idx); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "function : "UH_FMT"\n", ptr_struct->function); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "host : "UH_FMT"\n", ptr_struct->host); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "param_class : "UH_FMT"\n", ptr_struct->param_class); + +} + +int tools_open_per_host_type_size(void){ + return 4; +} + +void tools_open_per_host_type_dump(const struct tools_open_per_host_type *ptr_struct, FILE* file) { + tools_open_per_host_type_print(ptr_struct, file, 0); +} + +void tools_open_eswitch_type_pack(const struct tools_open_eswitch_type *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=16; + adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->param_idx); + + offset=14; + adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->port); + + offset=8; + adb2c_push_bits_to_buff(ptr_buff, offset, 6, (u_int32_t)ptr_struct->host); + + offset=0; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->param_class); + +} + +void tools_open_eswitch_type_unpack(struct tools_open_eswitch_type *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + u_int8_t val=0; + (void)val; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=16; + ptr_struct->param_idx = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16); + + offset=14; + ptr_struct->port = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2); + + offset=8; + ptr_struct->host = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 6); + + offset=0; + ptr_struct->param_class = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + +} + +void tools_open_eswitch_type_print(const struct tools_open_eswitch_type *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== tools_open_eswitch_type ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "param_idx : "UH_FMT"\n", ptr_struct->param_idx); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "port : "UH_FMT"\n", ptr_struct->port); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "host : "UH_FMT"\n", ptr_struct->host); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "param_class : "UH_FMT"\n", ptr_struct->param_class); + +} + +int tools_open_eswitch_type_size(void){ + return 4; +} + +void tools_open_eswitch_type_dump(const struct tools_open_eswitch_type *ptr_struct, FILE* file) { + tools_open_eswitch_type_print(ptr_struct, file, 0); +} + +void tools_open_global_type_pack(const struct tools_open_global_type *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=8; + adb2c_push_bits_to_buff(ptr_buff, offset, 24, (u_int32_t)ptr_struct->param_idx); + + offset=0; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->param_class); + +} + +void tools_open_global_type_unpack(struct tools_open_global_type *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + u_int8_t val=0; + (void)val; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=8; + ptr_struct->param_idx = (u_int32_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 24); + + offset=0; + ptr_struct->param_class = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + +} + +void tools_open_global_type_print(const struct tools_open_global_type *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== tools_open_global_type ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "param_idx : "UH_FMT"\n", ptr_struct->param_idx); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "param_class : "UH_FMT"\n", ptr_struct->param_class); + +} + +int tools_open_global_type_size(void){ + return 4; +} + +void tools_open_global_type_dump(const struct tools_open_global_type *ptr_struct, FILE* file) { + tools_open_global_type_print(ptr_struct, file, 0); +} + +void tools_open_tlv_type_pack(const union tools_open_tlv_type *ptr_struct, u_int8_t* ptr_buff) +{ + tools_open_tlv_type_dw_pack(&(ptr_struct->tlv_type_dw), ptr_buff); +} + +void tools_open_tlv_type_unpack(union tools_open_tlv_type *ptr_struct, const u_int8_t* ptr_buff) +{ + tools_open_tlv_type_dw_unpack(&(ptr_struct->tlv_type_dw), ptr_buff); +} + +void tools_open_tlv_type_print(const union tools_open_tlv_type *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== tools_open_tlv_type ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "global:\n"); + tools_open_global_type_print(&(ptr_struct->global), file, indent_level + 1); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "eswitch:\n"); + tools_open_eswitch_type_print(&(ptr_struct->eswitch), file, indent_level + 1); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "per_host:\n"); + tools_open_per_host_type_print(&(ptr_struct->per_host), file, indent_level + 1); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "bmc:\n"); + tools_open_bmc_type_print(&(ptr_struct->bmc), file, indent_level + 1); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "per_port:\n"); + tools_open_per_port_type_print(&(ptr_struct->per_port), file, indent_level + 1); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "tlv_type_dw:\n"); + tools_open_tlv_type_dw_print(&(ptr_struct->tlv_type_dw), file, indent_level + 1); + +} + +int tools_open_tlv_type_size(void){ + return 4; +} + +void tools_open_tlv_type_dump(const union tools_open_tlv_type *ptr_struct, FILE* file) { + tools_open_tlv_type_print(ptr_struct, file, 0); +} + void tools_open_pmdio_addr_data_pack(const struct tools_open_pmdio_addr_data *ptr_struct, u_int8_t* ptr_buff){ u_int32_t offset; int i=0; @@ -39,44 +510,150 @@ void tools_open_pmdio_addr_data_pack(const struct tools_open_pmdio_addr_data *pt void tools_open_pmdio_addr_data_unpack(struct tools_open_pmdio_addr_data *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; (void)ptr_buff; - offset=16; - ptr_struct->data = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16); + offset=16; + ptr_struct->data = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16); + + offset=0; + ptr_struct->addr = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16); + +} + +void tools_open_pmdio_addr_data_print(const struct tools_open_pmdio_addr_data *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== tools_open_pmdio_addr_data ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "data : "UH_FMT"\n", ptr_struct->data); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "addr : "UH_FMT"\n", ptr_struct->addr); + +} + +int tools_open_pmdio_addr_data_size(void){ + return 4; +} + +void tools_open_pmdio_addr_data_dump(const struct tools_open_pmdio_addr_data *ptr_struct, FILE* file) { + tools_open_pmdio_addr_data_print(ptr_struct, file, 0); +} + +void tools_open_nv_hdr_fifth_gen_pack(const struct tools_open_nv_hdr_fifth_gen *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=24; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->length); + + offset=20; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->shadow); + + offset=16; + adb2c_push_bits_to_buff(ptr_buff, offset, 4, (u_int32_t)ptr_struct->version); + + offset=7; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->rd_en); + + offset=6; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->over_en); + + offset=3; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->default_); + + offset=32; + tools_open_tlv_type_pack(&(ptr_struct->type), ptr_buff + offset/8); + +} + +void tools_open_nv_hdr_fifth_gen_unpack(struct tools_open_nv_hdr_fifth_gen *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + u_int8_t val=0; + (void)val; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=24; + ptr_struct->length = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + + offset=20; + ptr_struct->shadow = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=16; + ptr_struct->version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 4); + + offset=7; + ptr_struct->rd_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); - offset=0; - ptr_struct->addr = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16); + offset=6; + ptr_struct->over_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=3; + ptr_struct->default_ = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=32; + tools_open_tlv_type_unpack(&(ptr_struct->type), ptr_buff + offset/8); } -void tools_open_pmdio_addr_data_print(const struct tools_open_pmdio_addr_data *ptr_struct, FILE* file, int indent_level){ +void tools_open_nv_hdr_fifth_gen_print(const struct tools_open_nv_hdr_fifth_gen *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== pmdio_addr_data ========\n"); + fprintf(file, "======== tools_open_nv_hdr_fifth_gen ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; (void)indent_level; adb2c_add_indentation(file, indent_level); - fprintf(file, "data : "UH_FMT"\n", ptr_struct->data); + fprintf(file, "length : "UH_FMT"\n", ptr_struct->length); adb2c_add_indentation(file, indent_level); - fprintf(file, "addr : "UH_FMT"\n", ptr_struct->addr); + fprintf(file, "shadow : "UH_FMT"\n", ptr_struct->shadow); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "version : "UH_FMT"\n", ptr_struct->version); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "rd_en : "UH_FMT"\n", ptr_struct->rd_en); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "over_en : "UH_FMT"\n", ptr_struct->over_en); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "default_ : "UH_FMT"\n", ptr_struct->default_); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "type:\n"); + tools_open_tlv_type_print(&(ptr_struct->type), file, indent_level + 1); } -int tools_open_pmdio_addr_data_size(){ - return 4; +int tools_open_nv_hdr_fifth_gen_size(void){ + return 12; } -void tools_open_pmdio_addr_data_dump(const struct tools_open_pmdio_addr_data *ptr_struct, FILE* file) { - tools_open_pmdio_addr_data_print(ptr_struct, file, 0); +void tools_open_nv_hdr_fifth_gen_dump(const struct tools_open_nv_hdr_fifth_gen *ptr_struct, FILE* file) { + tools_open_nv_hdr_fifth_gen_print(ptr_struct, file, 0); } -void tools_open_mnv_hdr_pack(const struct tools_open_mnv_hdr *ptr_struct, u_int8_t* ptr_buff){ +void tools_open_nv_hdr_pack(const struct tools_open_nv_hdr *ptr_struct, u_int8_t* ptr_buff){ u_int32_t offset; int i=0; (void)offset; @@ -104,9 +681,11 @@ void tools_open_mnv_hdr_pack(const struct tools_open_mnv_hdr *ptr_struct, u_int8 } -void tools_open_mnv_hdr_unpack(struct tools_open_mnv_hdr *ptr_struct, const u_int8_t* ptr_buff){ +void tools_open_nv_hdr_unpack(struct tools_open_nv_hdr *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -132,9 +711,9 @@ void tools_open_mnv_hdr_unpack(struct tools_open_mnv_hdr *ptr_struct, const u_in } -void tools_open_mnv_hdr_print(const struct tools_open_mnv_hdr *ptr_struct, FILE* file, int indent_level){ +void tools_open_nv_hdr_print(const struct tools_open_nv_hdr *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== mnv_hdr ========\n"); + fprintf(file, "======== tools_open_nv_hdr ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -160,12 +739,12 @@ void tools_open_mnv_hdr_print(const struct tools_open_mnv_hdr *ptr_struct, FILE* } -int tools_open_mnv_hdr_size(){ +int tools_open_nv_hdr_size(void){ return 8; } -void tools_open_mnv_hdr_dump(const struct tools_open_mnv_hdr *ptr_struct, FILE* file) { - tools_open_mnv_hdr_print(ptr_struct, file, 0); +void tools_open_nv_hdr_dump(const struct tools_open_nv_hdr *ptr_struct, FILE* file) { + tools_open_nv_hdr_print(ptr_struct, file, 0); } void tools_open_pmdio_pack(const struct tools_open_pmdio *ptr_struct, u_int8_t* ptr_buff){ @@ -207,6 +786,8 @@ void tools_open_pmdio_pack(const struct tools_open_pmdio *ptr_struct, u_int8_t* void tools_open_pmdio_unpack(struct tools_open_pmdio *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -233,59 +814,309 @@ void tools_open_pmdio_unpack(struct tools_open_pmdio *ptr_struct, const u_int8_t offset=40; ptr_struct->num_ops_done = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); - for (i=0; i < 64; i++) { - offset=adb2c_calc_array_field_address(64, 32, i, 2112, 1); - tools_open_pmdio_addr_data_unpack(&(ptr_struct->mdio_trans[i]), ptr_buff + offset/8); - } + for (i=0; i < 64; i++) { + offset=adb2c_calc_array_field_address(64, 32, i, 2112, 1); + tools_open_pmdio_addr_data_unpack(&(ptr_struct->mdio_trans[i]), ptr_buff + offset/8); + } + +} + +void tools_open_pmdio_print(const struct tools_open_pmdio *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== tools_open_pmdio ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "operation : "UH_FMT"\n", ptr_struct->operation); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "clause : "UH_FMT"\n", ptr_struct->clause); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "local_port : "UH_FMT"\n", ptr_struct->local_port); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "lock : "UH_FMT"\n", ptr_struct->lock); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "reg_adr_mmd : "UH_FMT"\n", ptr_struct->reg_adr_mmd); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "last_op_idx : "UH_FMT"\n", ptr_struct->last_op_idx); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "num_ops_done : "UH_FMT"\n", ptr_struct->num_ops_done); + + for (i=0; i < 64; i++) { + adb2c_add_indentation(file, indent_level); + fprintf(file, "mdio_trans_%03d:\n", i); + tools_open_pmdio_addr_data_print(&(ptr_struct->mdio_trans[i]), file, indent_level + 1); + } + +} + +int tools_open_pmdio_size(void){ + return 264; +} + +void tools_open_pmdio_dump(const struct tools_open_pmdio *ptr_struct, FILE* file) { + tools_open_pmdio_print(ptr_struct, file, 0); +} + +void tools_open_pmdic_pack(const struct tools_open_pmdic *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=8; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->local_port); + + offset=56; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->operation_cap); + + offset=38; + adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->clause); + + offset=32; + adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->mdio_preset); + + offset=88; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->misc_cap); + +} + +void tools_open_pmdic_unpack(struct tools_open_pmdic *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + u_int8_t val=0; + (void)val; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=8; + ptr_struct->local_port = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + + offset=56; + ptr_struct->operation_cap = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + + offset=38; + ptr_struct->clause = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2); + + offset=32; + ptr_struct->mdio_preset = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2); + + offset=88; + ptr_struct->misc_cap = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + +} + +void tools_open_pmdic_print(const struct tools_open_pmdic *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== tools_open_pmdic ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "local_port : "UH_FMT"\n", ptr_struct->local_port); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "operation_cap : "UH_FMT"\n", ptr_struct->operation_cap); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "clause : "UH_FMT"\n", ptr_struct->clause); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "mdio_preset : "UH_FMT"\n", ptr_struct->mdio_preset); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "misc_cap : "UH_FMT"\n", ptr_struct->misc_cap); + +} + +int tools_open_pmdic_size(void){ + return 12; +} + +void tools_open_pmdic_dump(const struct tools_open_pmdic *ptr_struct, FILE* file) { + tools_open_pmdic_print(ptr_struct, file, 0); +} + +void tools_open_nvdi_pack(const struct tools_open_nvdi *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=0; + tools_open_nv_hdr_fifth_gen_pack(&(ptr_struct->nv_hdr), ptr_buff + offset/8); + +} + +void tools_open_nvdi_unpack(struct tools_open_nvdi *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + u_int8_t val=0; + (void)val; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=0; + tools_open_nv_hdr_fifth_gen_unpack(&(ptr_struct->nv_hdr), ptr_buff + offset/8); + +} + +void tools_open_nvdi_print(const struct tools_open_nvdi *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== tools_open_nvdi ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "nv_hdr:\n"); + tools_open_nv_hdr_fifth_gen_print(&(ptr_struct->nv_hdr), file, indent_level + 1); + +} + +int tools_open_nvdi_size(void){ + return 12; +} + +void tools_open_nvdi_dump(const struct tools_open_nvdi *ptr_struct, FILE* file) { + tools_open_nvdi_print(ptr_struct, file, 0); +} + +void tools_open_nvda_pack(const struct tools_open_nvda *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=0; + tools_open_nv_hdr_fifth_gen_pack(&(ptr_struct->nv_hdr), ptr_buff + offset/8); + + for (i=0; i < 128; i++) { + offset=adb2c_calc_array_field_address(120, 8, i, 2048, 1); + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->data[i]); + } + +} + +void tools_open_nvda_unpack(struct tools_open_nvda *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + u_int8_t val=0; + (void)val; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=0; + tools_open_nv_hdr_fifth_gen_unpack(&(ptr_struct->nv_hdr), ptr_buff + offset/8); + + for (i=0; i < 128; i++) { + offset=adb2c_calc_array_field_address(120, 8, i, 2048, 1); + ptr_struct->data[i] = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + } + +} + +void tools_open_nvda_print(const struct tools_open_nvda *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== tools_open_nvda ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "nv_hdr:\n"); + tools_open_nv_hdr_fifth_gen_print(&(ptr_struct->nv_hdr), file, indent_level + 1); + + for (i=0; i < 128; i++) { + adb2c_add_indentation(file, indent_level); + fprintf(file, "data_%03d : "UH_FMT"\n", i, ptr_struct->data[i]); + } + +} + +int tools_open_nvda_size(void){ + return 256; +} + +void tools_open_nvda_dump(const struct tools_open_nvda *ptr_struct, FILE* file) { + tools_open_nvda_print(ptr_struct, file, 0); +} + +void tools_open_nvdia_pack(const struct tools_open_nvdia *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=0; + tools_open_nv_hdr_fifth_gen_pack(&(ptr_struct->nv_hdr), ptr_buff + offset/8); + +} + +void tools_open_nvdia_unpack(struct tools_open_nvdia *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + u_int8_t val=0; + (void)val; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=0; + tools_open_nv_hdr_fifth_gen_unpack(&(ptr_struct->nv_hdr), ptr_buff + offset/8); } -void tools_open_pmdio_print(const struct tools_open_pmdio *ptr_struct, FILE* file, int indent_level){ +void tools_open_nvdia_print(const struct tools_open_nvdia *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== pmdio ========\n"); + fprintf(file, "======== tools_open_nvdia ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; (void)indent_level; adb2c_add_indentation(file, indent_level); - fprintf(file, "operation : "UH_FMT"\n", ptr_struct->operation); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "clause : "UH_FMT"\n", ptr_struct->clause); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "local_port : "UH_FMT"\n", ptr_struct->local_port); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "lock : "UH_FMT"\n", ptr_struct->lock); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "reg_adr_mmd : "UH_FMT"\n", ptr_struct->reg_adr_mmd); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "last_op_idx : "UH_FMT"\n", ptr_struct->last_op_idx); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "num_ops_done : "UH_FMT"\n", ptr_struct->num_ops_done); - - for (i=0; i < 64; i++) { - adb2c_add_indentation(file, indent_level); - fprintf(file, "mdio_trans[%3d]:\n", i); - tools_open_pmdio_addr_data_print(&(ptr_struct->mdio_trans[i]), file, indent_level + 1); - } + fprintf(file, "nv_hdr:\n"); + tools_open_nv_hdr_fifth_gen_print(&(ptr_struct->nv_hdr), file, indent_level + 1); } -int tools_open_pmdio_size(){ - return 264; +int tools_open_nvdia_size(void){ + return 12; } -void tools_open_pmdio_dump(const struct tools_open_pmdio *ptr_struct, FILE* file) { - tools_open_pmdio_print(ptr_struct, file, 0); +void tools_open_nvdia_dump(const struct tools_open_nvdia *ptr_struct, FILE* file) { + tools_open_nvdia_print(ptr_struct, file, 0); } -void tools_open_pmdic_pack(const struct tools_open_pmdic *ptr_struct, u_int8_t* ptr_buff){ +void tools_open_nvqc_pack(const struct tools_open_nvqc *ptr_struct, u_int8_t* ptr_buff){ u_int32_t offset; int i=0; (void)offset; @@ -293,79 +1124,73 @@ void tools_open_pmdic_pack(const struct tools_open_pmdic *ptr_struct, u_int8_t* (void)ptr_struct; (void)ptr_buff; - offset=8; - adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->local_port); - - offset=56; - adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->operation_cap); + offset=0; + tools_open_tlv_type_pack(&(ptr_struct->type), ptr_buff + offset/8); - offset=38; - adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->clause); + offset=63; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->support_rd); - offset=32; - adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->mdio_preset); + offset=62; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->support_wr); - offset=88; - adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->misc_cap); + offset=56; + adb2c_push_bits_to_buff(ptr_buff, offset, 4, (u_int32_t)ptr_struct->version); } -void tools_open_pmdic_unpack(struct tools_open_pmdic *ptr_struct, const u_int8_t* ptr_buff){ +void tools_open_nvqc_unpack(struct tools_open_nvqc *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; (void)ptr_buff; - offset=8; - ptr_struct->local_port = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); - - offset=56; - ptr_struct->operation_cap = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + offset=0; + tools_open_tlv_type_unpack(&(ptr_struct->type), ptr_buff + offset/8); - offset=38; - ptr_struct->clause = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2); + offset=63; + ptr_struct->support_rd = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); - offset=32; - ptr_struct->mdio_preset = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2); + offset=62; + ptr_struct->support_wr = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); - offset=88; - ptr_struct->misc_cap = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + offset=56; + ptr_struct->version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 4); } -void tools_open_pmdic_print(const struct tools_open_pmdic *ptr_struct, FILE* file, int indent_level){ +void tools_open_nvqc_print(const struct tools_open_nvqc *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== pmdic ========\n"); + fprintf(file, "======== tools_open_nvqc ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; (void)indent_level; adb2c_add_indentation(file, indent_level); - fprintf(file, "local_port : "UH_FMT"\n", ptr_struct->local_port); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "operation_cap : "UH_FMT"\n", ptr_struct->operation_cap); + fprintf(file, "type:\n"); + tools_open_tlv_type_print(&(ptr_struct->type), file, indent_level + 1); adb2c_add_indentation(file, indent_level); - fprintf(file, "clause : "UH_FMT"\n", ptr_struct->clause); + fprintf(file, "support_rd : "UH_FMT"\n", ptr_struct->support_rd); adb2c_add_indentation(file, indent_level); - fprintf(file, "mdio_preset : "UH_FMT"\n", ptr_struct->mdio_preset); + fprintf(file, "support_wr : "UH_FMT"\n", ptr_struct->support_wr); adb2c_add_indentation(file, indent_level); - fprintf(file, "misc_cap : "UH_FMT"\n", ptr_struct->misc_cap); + fprintf(file, "version : "UH_FMT"\n", ptr_struct->version); } -int tools_open_pmdic_size(){ - return 12; +int tools_open_nvqc_size(void){ + return 8; } -void tools_open_pmdic_dump(const struct tools_open_pmdic *ptr_struct, FILE* file) { - tools_open_pmdic_print(ptr_struct, file, 0); +void tools_open_nvqc_dump(const struct tools_open_nvqc *ptr_struct, FILE* file) { + tools_open_nvqc_print(ptr_struct, file, 0); } void tools_open_mnvia_pack(const struct tools_open_mnvia *ptr_struct, u_int8_t* ptr_buff){ @@ -377,38 +1202,40 @@ void tools_open_mnvia_pack(const struct tools_open_mnvia *ptr_struct, u_int8_t* (void)ptr_buff; offset=0; - tools_open_mnv_hdr_pack(&(ptr_struct->mnv_hdr), ptr_buff + offset/8); + tools_open_nv_hdr_pack(&(ptr_struct->nv_hdr), ptr_buff + offset/8); } void tools_open_mnvia_unpack(struct tools_open_mnvia *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; (void)ptr_buff; offset=0; - tools_open_mnv_hdr_unpack(&(ptr_struct->mnv_hdr), ptr_buff + offset/8); + tools_open_nv_hdr_unpack(&(ptr_struct->nv_hdr), ptr_buff + offset/8); } void tools_open_mnvia_print(const struct tools_open_mnvia *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== mnvia ========\n"); + fprintf(file, "======== tools_open_mnvia ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; (void)indent_level; adb2c_add_indentation(file, indent_level); - fprintf(file, "mnv_hdr:\n"); - tools_open_mnv_hdr_print(&(ptr_struct->mnv_hdr), file, indent_level + 1); + fprintf(file, "nv_hdr:\n"); + tools_open_nv_hdr_print(&(ptr_struct->nv_hdr), file, indent_level + 1); } -int tools_open_mnvia_size(){ +int tools_open_mnvia_size(void){ return 8; } @@ -425,38 +1252,40 @@ void tools_open_mnvi_pack(const struct tools_open_mnvi *ptr_struct, u_int8_t* pt (void)ptr_buff; offset=0; - tools_open_mnv_hdr_pack(&(ptr_struct->mnv_hdr), ptr_buff + offset/8); + tools_open_nv_hdr_pack(&(ptr_struct->nv_hdr), ptr_buff + offset/8); } void tools_open_mnvi_unpack(struct tools_open_mnvi *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; (void)ptr_buff; offset=0; - tools_open_mnv_hdr_unpack(&(ptr_struct->mnv_hdr), ptr_buff + offset/8); + tools_open_nv_hdr_unpack(&(ptr_struct->nv_hdr), ptr_buff + offset/8); } void tools_open_mnvi_print(const struct tools_open_mnvi *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== mnvi ========\n"); + fprintf(file, "======== tools_open_mnvi ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; (void)indent_level; adb2c_add_indentation(file, indent_level); - fprintf(file, "mnv_hdr:\n"); - tools_open_mnv_hdr_print(&(ptr_struct->mnv_hdr), file, indent_level + 1); + fprintf(file, "nv_hdr:\n"); + tools_open_nv_hdr_print(&(ptr_struct->nv_hdr), file, indent_level + 1); } -int tools_open_mnvi_size(){ +int tools_open_mnvi_size(void){ return 8; } @@ -473,7 +1302,7 @@ void tools_open_mnva_pack(const struct tools_open_mnva *ptr_struct, u_int8_t* pt (void)ptr_buff; offset=0; - tools_open_mnv_hdr_pack(&(ptr_struct->mnv_hdr), ptr_buff + offset/8); + tools_open_nv_hdr_pack(&(ptr_struct->nv_hdr), ptr_buff + offset/8); for (i=0; i < 128; i++) { offset=adb2c_calc_array_field_address(88, 8, i, 2048, 1); @@ -485,13 +1314,15 @@ void tools_open_mnva_pack(const struct tools_open_mnva *ptr_struct, u_int8_t* pt void tools_open_mnva_unpack(struct tools_open_mnva *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; (void)ptr_buff; offset=0; - tools_open_mnv_hdr_unpack(&(ptr_struct->mnv_hdr), ptr_buff + offset/8); + tools_open_nv_hdr_unpack(&(ptr_struct->nv_hdr), ptr_buff + offset/8); for (i=0; i < 128; i++) { offset=adb2c_calc_array_field_address(88, 8, i, 2048, 1); @@ -502,24 +1333,24 @@ void tools_open_mnva_unpack(struct tools_open_mnva *ptr_struct, const u_int8_t* void tools_open_mnva_print(const struct tools_open_mnva *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== mnva ========\n"); + fprintf(file, "======== tools_open_mnva ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; (void)indent_level; adb2c_add_indentation(file, indent_level); - fprintf(file, "mnv_hdr:\n"); - tools_open_mnv_hdr_print(&(ptr_struct->mnv_hdr), file, indent_level + 1); + fprintf(file, "nv_hdr:\n"); + tools_open_nv_hdr_print(&(ptr_struct->nv_hdr), file, indent_level + 1); for (i=0; i < 128; i++) { adb2c_add_indentation(file, indent_level); - fprintf(file, "data[%3d] : "UH_FMT"\n", i, ptr_struct->data[i]); + fprintf(file, "data_%03d : "UH_FMT"\n", i, ptr_struct->data[i]); } } -int tools_open_mnva_size(){ +int tools_open_mnva_size(void){ return 256; } @@ -568,6 +1399,15 @@ void tools_open_query_def_params_per_port_pack(const struct tools_open_query_def offset=80; adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->boot_pkey); + offset=66; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->nv_config_dhcp_iscsi_parameters); + + offset=65; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->nv_config_iscsi_parameters); + + offset=64; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->nv_config_boot_parameters); + offset=104; adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->iscsi_boot_to_target); @@ -600,6 +1440,8 @@ void tools_open_query_def_params_per_port_pack(const struct tools_open_query_def void tools_open_query_def_params_per_port_unpack(struct tools_open_query_def_params_per_port *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -638,6 +1480,15 @@ void tools_open_query_def_params_per_port_unpack(struct tools_open_query_def_par offset=80; ptr_struct->boot_pkey = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16); + offset=66; + ptr_struct->nv_config_dhcp_iscsi_parameters = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=65; + ptr_struct->nv_config_iscsi_parameters = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=64; + ptr_struct->nv_config_boot_parameters = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + offset=104; ptr_struct->iscsi_boot_to_target = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2); @@ -669,7 +1520,7 @@ void tools_open_query_def_params_per_port_unpack(struct tools_open_query_def_par void tools_open_query_def_params_per_port_print(const struct tools_open_query_def_params_per_port *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== query_def_params_per_port ========\n"); + fprintf(file, "======== tools_open_query_def_params_per_port ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -708,6 +1559,15 @@ void tools_open_query_def_params_per_port_print(const struct tools_open_query_de adb2c_add_indentation(file, indent_level); fprintf(file, "boot_pkey : "UH_FMT"\n", ptr_struct->boot_pkey); + adb2c_add_indentation(file, indent_level); + fprintf(file, "nv_config_dhcp_iscsi_parameters : "UH_FMT"\n", ptr_struct->nv_config_dhcp_iscsi_parameters); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "nv_config_iscsi_parameters : "UH_FMT"\n", ptr_struct->nv_config_iscsi_parameters); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "nv_config_boot_parameters : "UH_FMT"\n", ptr_struct->nv_config_boot_parameters); + adb2c_add_indentation(file, indent_level); fprintf(file, "iscsi_boot_to_target : "UH_FMT"\n", ptr_struct->iscsi_boot_to_target); @@ -737,7 +1597,7 @@ void tools_open_query_def_params_per_port_print(const struct tools_open_query_de } -int tools_open_query_def_params_per_port_size(){ +int tools_open_query_def_params_per_port_size(void){ return 28; } @@ -773,6 +1633,8 @@ void tools_open_query_def_params_global_pack(const struct tools_open_query_def_p void tools_open_query_def_params_global_unpack(struct tools_open_query_def_params_global *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -797,7 +1659,7 @@ void tools_open_query_def_params_global_unpack(struct tools_open_query_def_param void tools_open_query_def_params_global_print(const struct tools_open_query_def_params_global *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== query_def_params_global ========\n"); + fprintf(file, "======== tools_open_query_def_params_global ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -820,7 +1682,7 @@ void tools_open_query_def_params_global_print(const struct tools_open_query_def_ } -int tools_open_query_def_params_global_size(){ +int tools_open_query_def_params_global_size(void){ return 20; } @@ -830,17 +1692,17 @@ void tools_open_query_def_params_global_dump(const struct tools_open_query_def_p void tools_open_phy_reg_pack(const union tools_open_phy_reg *ptr_struct, u_int8_t* ptr_buff) { - memcpy(ptr_buff, ptr_struct, 264); + tools_open_pmdio_pack(&(ptr_struct->pmdio), ptr_buff); } void tools_open_phy_reg_unpack(union tools_open_phy_reg *ptr_struct, const u_int8_t* ptr_buff) { - memcpy(ptr_struct, ptr_buff, 264); + tools_open_pmdio_unpack(&(ptr_struct->pmdio), ptr_buff); } void tools_open_phy_reg_print(const union tools_open_phy_reg *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== phy_reg ========\n"); + fprintf(file, "======== tools_open_phy_reg ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -856,7 +1718,7 @@ void tools_open_phy_reg_print(const union tools_open_phy_reg *ptr_struct, FILE* } -int tools_open_phy_reg_size(){ +int tools_open_phy_reg_size(void){ return 264; } @@ -866,17 +1728,17 @@ void tools_open_phy_reg_dump(const union tools_open_phy_reg *ptr_struct, FILE* f void tools_open_mnv_cfg_pack(const union tools_open_mnv_cfg *ptr_struct, u_int8_t* ptr_buff) { - memcpy(ptr_buff, ptr_struct, 256); + tools_open_nvdi_pack(&(ptr_struct->nvdi), ptr_buff); } void tools_open_mnv_cfg_unpack(union tools_open_mnv_cfg *ptr_struct, const u_int8_t* ptr_buff) { - memcpy(ptr_struct, ptr_buff, 256); + tools_open_nvdi_unpack(&(ptr_struct->nvdi), ptr_buff); } void tools_open_mnv_cfg_print(const union tools_open_mnv_cfg *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== mnv_cfg ========\n"); + fprintf(file, "======== tools_open_mnv_cfg ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -894,9 +1756,25 @@ void tools_open_mnv_cfg_print(const union tools_open_mnv_cfg *ptr_struct, FILE* fprintf(file, "mnvia:\n"); tools_open_mnvia_print(&(ptr_struct->mnvia), file, indent_level + 1); + adb2c_add_indentation(file, indent_level); + fprintf(file, "nvqc:\n"); + tools_open_nvqc_print(&(ptr_struct->nvqc), file, indent_level + 1); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "nvdia:\n"); + tools_open_nvdia_print(&(ptr_struct->nvdia), file, indent_level + 1); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "nvda:\n"); + tools_open_nvda_print(&(ptr_struct->nvda), file, indent_level + 1); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "nvdi:\n"); + tools_open_nvdi_print(&(ptr_struct->nvdi), file, indent_level + 1); + } -int tools_open_mnv_cfg_size(){ +int tools_open_mnv_cfg_size(void){ return 256; } @@ -904,7 +1782,7 @@ void tools_open_mnv_cfg_dump(const union tools_open_mnv_cfg *ptr_struct, FILE* f tools_open_mnv_cfg_print(ptr_struct, file, 0); } -void tools_open_vpi_settings_pack(const struct tools_open_vpi_settings *ptr_struct, u_int8_t* ptr_buff){ +void tools_open_iscsi_settings_pack(const struct tools_open_iscsi_settings *ptr_struct, u_int8_t* ptr_buff){ u_int32_t offset; int i=0; (void)offset; @@ -912,46 +1790,147 @@ void tools_open_vpi_settings_pack(const struct tools_open_vpi_settings *ptr_stru (void)ptr_struct; (void)ptr_buff; - offset=30; - adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->network_link_type); + offset=10; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->target_as_first_hdd_en); + + offset=8; + adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->boot_to_target); + + offset=7; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->ipv6_auto_config_en); + + offset=5; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->vlan_en); + + offset=4; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->tcp_timestamps_en); + + offset=3; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->chap_mutual_auth_en); + + offset=2; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->chap_auth_en); + + offset=1; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->dhcp_iscsi_en); + + offset=0; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->ipv4_dhcp_en); + + offset=52; + adb2c_push_bits_to_buff(ptr_buff, offset, 12, (u_int32_t)ptr_struct->vlan); + + offset=88; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->lun_busy_retry_count); + + offset=80; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->link_up_delay_time); } -void tools_open_vpi_settings_unpack(struct tools_open_vpi_settings *ptr_struct, const u_int8_t* ptr_buff){ +void tools_open_iscsi_settings_unpack(struct tools_open_iscsi_settings *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; (void)ptr_buff; - offset=30; - ptr_struct->network_link_type = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2); + offset=10; + ptr_struct->target_as_first_hdd_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=8; + ptr_struct->boot_to_target = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2); + + offset=7; + ptr_struct->ipv6_auto_config_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=5; + ptr_struct->vlan_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=4; + ptr_struct->tcp_timestamps_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=3; + ptr_struct->chap_mutual_auth_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=2; + ptr_struct->chap_auth_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=1; + ptr_struct->dhcp_iscsi_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=0; + ptr_struct->ipv4_dhcp_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=52; + ptr_struct->vlan = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 12); + + offset=88; + ptr_struct->lun_busy_retry_count = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + + offset=80; + ptr_struct->link_up_delay_time = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); } -void tools_open_vpi_settings_print(const struct tools_open_vpi_settings *ptr_struct, FILE* file, int indent_level){ +void tools_open_iscsi_settings_print(const struct tools_open_iscsi_settings *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== vpi_settings ========\n"); + fprintf(file, "======== tools_open_iscsi_settings ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; (void)indent_level; adb2c_add_indentation(file, indent_level); - fprintf(file, "network_link_type : "UH_FMT"\n", ptr_struct->network_link_type); + fprintf(file, "target_as_first_hdd_en : "UH_FMT"\n", ptr_struct->target_as_first_hdd_en); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "boot_to_target : "UH_FMT"\n", ptr_struct->boot_to_target); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "ipv6_auto_config_en : "UH_FMT"\n", ptr_struct->ipv6_auto_config_en); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "vlan_en : "UH_FMT"\n", ptr_struct->vlan_en); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "tcp_timestamps_en : "UH_FMT"\n", ptr_struct->tcp_timestamps_en); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "chap_mutual_auth_en : "UH_FMT"\n", ptr_struct->chap_mutual_auth_en); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "chap_auth_en : "UH_FMT"\n", ptr_struct->chap_auth_en); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "dhcp_iscsi_en : "UH_FMT"\n", ptr_struct->dhcp_iscsi_en); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "ipv4_dhcp_en : "UH_FMT"\n", ptr_struct->ipv4_dhcp_en); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "vlan : "UH_FMT"\n", ptr_struct->vlan); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "lun_busy_retry_count : "UH_FMT"\n", ptr_struct->lun_busy_retry_count); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "link_up_delay_time : "UH_FMT"\n", ptr_struct->link_up_delay_time); } -int tools_open_vpi_settings_size(){ - return 4; +int tools_open_iscsi_settings_size(void){ + return 12; } -void tools_open_vpi_settings_dump(const struct tools_open_vpi_settings *ptr_struct, FILE* file) { - tools_open_vpi_settings_print(ptr_struct, file, 0); +void tools_open_iscsi_settings_dump(const struct tools_open_iscsi_settings *ptr_struct, FILE* file) { + tools_open_iscsi_settings_print(ptr_struct, file, 0); } -void tools_open_bar_size_pack(const struct tools_open_bar_size *ptr_struct, u_int8_t* ptr_buff){ +void tools_open_infiniband_boot_settings_pack(const struct tools_open_infiniband_boot_settings *ptr_struct, u_int8_t* ptr_buff){ u_int32_t offset; int i=0; (void)offset; @@ -959,46 +1938,48 @@ void tools_open_bar_size_pack(const struct tools_open_bar_size *ptr_struct, u_in (void)ptr_struct; (void)ptr_buff; - offset=0; - adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->log_uar_bar_size); + offset=16; + adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->boot_pkey); } -void tools_open_bar_size_unpack(struct tools_open_bar_size *ptr_struct, const u_int8_t* ptr_buff){ +void tools_open_infiniband_boot_settings_unpack(struct tools_open_infiniband_boot_settings *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; (void)ptr_buff; - offset=0; - ptr_struct->log_uar_bar_size = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4); + offset=16; + ptr_struct->boot_pkey = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16); } -void tools_open_bar_size_print(const struct tools_open_bar_size *ptr_struct, FILE* file, int indent_level){ +void tools_open_infiniband_boot_settings_print(const struct tools_open_infiniband_boot_settings *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== bar_size ========\n"); + fprintf(file, "======== tools_open_infiniband_boot_settings ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; (void)indent_level; adb2c_add_indentation(file, indent_level); - fprintf(file, "log_uar_bar_size : "U32H_FMT"\n", ptr_struct->log_uar_bar_size); + fprintf(file, "boot_pkey : "UH_FMT"\n", ptr_struct->boot_pkey); } -int tools_open_bar_size_size(){ +int tools_open_infiniband_boot_settings_size(void){ return 4; } -void tools_open_bar_size_dump(const struct tools_open_bar_size *ptr_struct, FILE* file) { - tools_open_bar_size_print(ptr_struct, file, 0); +void tools_open_infiniband_boot_settings_dump(const struct tools_open_infiniband_boot_settings *ptr_struct, FILE* file) { + tools_open_infiniband_boot_settings_print(ptr_struct, file, 0); } -void tools_open_sriov_pack(const struct tools_open_sriov *ptr_struct, u_int8_t* ptr_buff){ +void tools_open_boot_settings_pack(const struct tools_open_boot_settings *ptr_struct, u_int8_t* ptr_buff){ u_int32_t offset; int i=0; (void)offset; @@ -1006,52 +1987,81 @@ void tools_open_sriov_pack(const struct tools_open_sriov *ptr_struct, u_int8_t* (void)ptr_struct; (void)ptr_buff; - offset=16; - adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->total_vfs); + offset=20; + adb2c_push_bits_to_buff(ptr_buff, offset, 12, (u_int32_t)ptr_struct->boot_vlan); + + offset=8; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->legacy_boot_protocol); + + offset=5; + adb2c_push_bits_to_buff(ptr_buff, offset, 3, (u_int32_t)ptr_struct->boot_retry_conut); + + offset=1; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->boot_vlan_en); offset=0; - adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->sriov_en); + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->boot_option_rom_en); } -void tools_open_sriov_unpack(struct tools_open_sriov *ptr_struct, const u_int8_t* ptr_buff){ +void tools_open_boot_settings_unpack(struct tools_open_boot_settings *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; (void)ptr_buff; - offset=16; - ptr_struct->total_vfs = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16); + offset=20; + ptr_struct->boot_vlan = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 12); + + offset=8; + ptr_struct->legacy_boot_protocol = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + + offset=5; + ptr_struct->boot_retry_conut = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 3); + + offset=1; + ptr_struct->boot_vlan_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); offset=0; - ptr_struct->sriov_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + ptr_struct->boot_option_rom_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); } -void tools_open_sriov_print(const struct tools_open_sriov *ptr_struct, FILE* file, int indent_level){ +void tools_open_boot_settings_print(const struct tools_open_boot_settings *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== sriov ========\n"); + fprintf(file, "======== tools_open_boot_settings ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; (void)indent_level; adb2c_add_indentation(file, indent_level); - fprintf(file, "total_vfs : "UH_FMT"\n", ptr_struct->total_vfs); + fprintf(file, "boot_vlan : "UH_FMT"\n", ptr_struct->boot_vlan); adb2c_add_indentation(file, indent_level); - fprintf(file, "sriov_en : "UH_FMT"\n", ptr_struct->sriov_en); + fprintf(file, "legacy_boot_protocol : "UH_FMT"\n", ptr_struct->legacy_boot_protocol); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "boot_retry_conut : "UH_FMT"\n", ptr_struct->boot_retry_conut); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "boot_vlan_en : "UH_FMT"\n", ptr_struct->boot_vlan_en); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "boot_option_rom_en : "UH_FMT"\n", ptr_struct->boot_option_rom_en); } -int tools_open_sriov_size(){ +int tools_open_boot_settings_size(void){ return 4; } -void tools_open_sriov_dump(const struct tools_open_sriov *ptr_struct, FILE* file) { - tools_open_sriov_print(ptr_struct, file, 0); +void tools_open_boot_settings_dump(const struct tools_open_boot_settings *ptr_struct, FILE* file) { + tools_open_boot_settings_print(ptr_struct, file, 0); } void tools_open_preboot_flow_ctrl_pack(const struct tools_open_preboot_flow_ctrl *ptr_struct, u_int8_t* ptr_buff){ @@ -1082,6 +2092,8 @@ void tools_open_preboot_flow_ctrl_pack(const struct tools_open_preboot_flow_ctrl void tools_open_preboot_flow_ctrl_unpack(struct tools_open_preboot_flow_ctrl *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -1106,7 +2118,7 @@ void tools_open_preboot_flow_ctrl_unpack(struct tools_open_preboot_flow_ctrl *pt void tools_open_preboot_flow_ctrl_print(const struct tools_open_preboot_flow_ctrl *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== preboot_flow_ctrl ========\n"); + fprintf(file, "======== tools_open_preboot_flow_ctrl ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -1129,7 +2141,7 @@ void tools_open_preboot_flow_ctrl_print(const struct tools_open_preboot_flow_ctr } -int tools_open_preboot_flow_ctrl_size(){ +int tools_open_preboot_flow_ctrl_size(void){ return 4; } @@ -1137,7 +2149,7 @@ void tools_open_preboot_flow_ctrl_dump(const struct tools_open_preboot_flow_ctrl tools_open_preboot_flow_ctrl_print(ptr_struct, file, 0); } -void tools_open_boot_settings_pack(const struct tools_open_boot_settings *ptr_struct, u_int8_t* ptr_buff){ +void tools_open_sriov_pack(const struct tools_open_sriov *ptr_struct, u_int8_t* ptr_buff){ u_int32_t offset; int i=0; (void)offset; @@ -1145,82 +2157,57 @@ void tools_open_boot_settings_pack(const struct tools_open_boot_settings *ptr_st (void)ptr_struct; (void)ptr_buff; - offset=20; - adb2c_push_bits_to_buff(ptr_buff, offset, 12, (u_int32_t)ptr_struct->boot_vlan); - - offset=8; - adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->legacy_boot_protocol); - - offset=5; - adb2c_push_bits_to_buff(ptr_buff, offset, 3, (u_int32_t)ptr_struct->boot_retry_conut); - - offset=1; - adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->boot_vlan_en); + offset=16; + adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->total_vfs); offset=0; - adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->boot_option_rom_en); + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->sriov_en); } -void tools_open_boot_settings_unpack(struct tools_open_boot_settings *ptr_struct, const u_int8_t* ptr_buff){ +void tools_open_sriov_unpack(struct tools_open_sriov *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; (void)ptr_buff; - offset=20; - ptr_struct->boot_vlan = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 12); - - offset=8; - ptr_struct->legacy_boot_protocol = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); - - offset=5; - ptr_struct->boot_retry_conut = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 3); - - offset=1; - ptr_struct->boot_vlan_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + offset=16; + ptr_struct->total_vfs = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16); offset=0; - ptr_struct->boot_option_rom_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + ptr_struct->sriov_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); } -void tools_open_boot_settings_print(const struct tools_open_boot_settings *ptr_struct, FILE* file, int indent_level){ +void tools_open_sriov_print(const struct tools_open_sriov *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== boot_settings ========\n"); + fprintf(file, "======== tools_open_sriov ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; (void)indent_level; adb2c_add_indentation(file, indent_level); - fprintf(file, "boot_vlan : "UH_FMT"\n", ptr_struct->boot_vlan); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "legacy_boot_protocol : "UH_FMT"\n", ptr_struct->legacy_boot_protocol); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "boot_retry_conut : "UH_FMT"\n", ptr_struct->boot_retry_conut); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "boot_vlan_en : "UH_FMT"\n", ptr_struct->boot_vlan_en); + fprintf(file, "total_vfs : "UH_FMT"\n", ptr_struct->total_vfs); adb2c_add_indentation(file, indent_level); - fprintf(file, "boot_option_rom_en : "UH_FMT"\n", ptr_struct->boot_option_rom_en); + fprintf(file, "sriov_en : "UH_FMT"\n", ptr_struct->sriov_en); } -int tools_open_boot_settings_size(){ +int tools_open_sriov_size(void){ return 4; } -void tools_open_boot_settings_dump(const struct tools_open_boot_settings *ptr_struct, FILE* file) { - tools_open_boot_settings_print(ptr_struct, file, 0); +void tools_open_sriov_dump(const struct tools_open_sriov *ptr_struct, FILE* file) { + tools_open_sriov_print(ptr_struct, file, 0); } -void tools_open_infiniband_boot_settings_pack(const struct tools_open_infiniband_boot_settings *ptr_struct, u_int8_t* ptr_buff){ +void tools_open_bar_size_pack(const struct tools_open_bar_size *ptr_struct, u_int8_t* ptr_buff){ u_int32_t offset; int i=0; (void)offset; @@ -1228,46 +2215,48 @@ void tools_open_infiniband_boot_settings_pack(const struct tools_open_infiniband (void)ptr_struct; (void)ptr_buff; - offset=16; - adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->boot_pkey); + offset=0; + adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->log_uar_bar_size); } -void tools_open_infiniband_boot_settings_unpack(struct tools_open_infiniband_boot_settings *ptr_struct, const u_int8_t* ptr_buff){ +void tools_open_bar_size_unpack(struct tools_open_bar_size *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; (void)ptr_buff; - offset=16; - ptr_struct->boot_pkey = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16); + offset=0; + ptr_struct->log_uar_bar_size = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4); } -void tools_open_infiniband_boot_settings_print(const struct tools_open_infiniband_boot_settings *ptr_struct, FILE* file, int indent_level){ +void tools_open_bar_size_print(const struct tools_open_bar_size *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== infiniband_boot_settings ========\n"); + fprintf(file, "======== tools_open_bar_size ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; (void)indent_level; adb2c_add_indentation(file, indent_level); - fprintf(file, "boot_pkey : "UH_FMT"\n", ptr_struct->boot_pkey); + fprintf(file, "log_uar_bar_size : "U32H_FMT"\n", ptr_struct->log_uar_bar_size); } -int tools_open_infiniband_boot_settings_size(){ +int tools_open_bar_size_size(void){ return 4; } -void tools_open_infiniband_boot_settings_dump(const struct tools_open_infiniband_boot_settings *ptr_struct, FILE* file) { - tools_open_infiniband_boot_settings_print(ptr_struct, file, 0); +void tools_open_bar_size_dump(const struct tools_open_bar_size *ptr_struct, FILE* file) { + tools_open_bar_size_print(ptr_struct, file, 0); } -void tools_open_iscsi_settings_pack(const struct tools_open_iscsi_settings *ptr_struct, u_int8_t* ptr_buff){ +void tools_open_vpi_settings_pack(const struct tools_open_vpi_settings *ptr_struct, u_int8_t* ptr_buff){ u_int32_t offset; int i=0; (void)offset; @@ -1275,142 +2264,54 @@ void tools_open_iscsi_settings_pack(const struct tools_open_iscsi_settings *ptr_ (void)ptr_struct; (void)ptr_buff; - offset=10; - adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->target_as_first_hdd_en); - - offset=8; - adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->boot_to_target); - - offset=7; - adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->ipv6_auto_config_en); - - offset=5; - adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->vlan_en); - - offset=4; - adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->tcp_timestamps_en); - - offset=3; - adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->chap_mutual_auth_en); - - offset=2; - adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->chap_auth_en); - - offset=1; - adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->dhcp_iscsi_en); - - offset=0; - adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->ipv4_dhcp_en); - - offset=52; - adb2c_push_bits_to_buff(ptr_buff, offset, 12, (u_int32_t)ptr_struct->vlan); - - offset=88; - adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->lun_busy_retry_count); + offset=30; + adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->network_link_type); - offset=80; - adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->link_up_delay_time); + offset=28; + adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->default_link_type); } -void tools_open_iscsi_settings_unpack(struct tools_open_iscsi_settings *ptr_struct, const u_int8_t* ptr_buff){ +void tools_open_vpi_settings_unpack(struct tools_open_vpi_settings *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; (void)ptr_buff; - offset=10; - ptr_struct->target_as_first_hdd_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); - - offset=8; - ptr_struct->boot_to_target = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2); - - offset=7; - ptr_struct->ipv6_auto_config_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); - - offset=5; - ptr_struct->vlan_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); - - offset=4; - ptr_struct->tcp_timestamps_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); - - offset=3; - ptr_struct->chap_mutual_auth_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); - - offset=2; - ptr_struct->chap_auth_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); - - offset=1; - ptr_struct->dhcp_iscsi_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); - - offset=0; - ptr_struct->ipv4_dhcp_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); - - offset=52; - ptr_struct->vlan = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 12); - - offset=88; - ptr_struct->lun_busy_retry_count = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + offset=30; + ptr_struct->network_link_type = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2); - offset=80; - ptr_struct->link_up_delay_time = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + offset=28; + ptr_struct->default_link_type = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2); } -void tools_open_iscsi_settings_print(const struct tools_open_iscsi_settings *ptr_struct, FILE* file, int indent_level){ +void tools_open_vpi_settings_print(const struct tools_open_vpi_settings *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== iscsi_settings ========\n"); + fprintf(file, "======== tools_open_vpi_settings ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; (void)indent_level; adb2c_add_indentation(file, indent_level); - fprintf(file, "target_as_first_hdd_en : "UH_FMT"\n", ptr_struct->target_as_first_hdd_en); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "boot_to_target : "UH_FMT"\n", ptr_struct->boot_to_target); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "ipv6_auto_config_en : "UH_FMT"\n", ptr_struct->ipv6_auto_config_en); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "vlan_en : "UH_FMT"\n", ptr_struct->vlan_en); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "tcp_timestamps_en : "UH_FMT"\n", ptr_struct->tcp_timestamps_en); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "chap_mutual_auth_en : "UH_FMT"\n", ptr_struct->chap_mutual_auth_en); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "chap_auth_en : "UH_FMT"\n", ptr_struct->chap_auth_en); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "dhcp_iscsi_en : "UH_FMT"\n", ptr_struct->dhcp_iscsi_en); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "ipv4_dhcp_en : "UH_FMT"\n", ptr_struct->ipv4_dhcp_en); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "vlan : "UH_FMT"\n", ptr_struct->vlan); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "lun_busy_retry_count : "UH_FMT"\n", ptr_struct->lun_busy_retry_count); + fprintf(file, "network_link_type : "UH_FMT"\n", ptr_struct->network_link_type); adb2c_add_indentation(file, indent_level); - fprintf(file, "link_up_delay_time : "UH_FMT"\n", ptr_struct->link_up_delay_time); + fprintf(file, "default_link_type : "UH_FMT"\n", ptr_struct->default_link_type); } -int tools_open_iscsi_settings_size(){ - return 12; +int tools_open_vpi_settings_size(void){ + return 4; } -void tools_open_iscsi_settings_dump(const struct tools_open_iscsi_settings *ptr_struct, FILE* file) { - tools_open_iscsi_settings_print(ptr_struct, file, 0); +void tools_open_vpi_settings_dump(const struct tools_open_vpi_settings *ptr_struct, FILE* file) { + tools_open_vpi_settings_print(ptr_struct, file, 0); } void tools_open_wol_pack(const struct tools_open_wol *ptr_struct, u_int8_t* ptr_buff){ @@ -1447,6 +2348,8 @@ void tools_open_wol_pack(const struct tools_open_wol *ptr_struct, u_int8_t* ptr_ void tools_open_wol_unpack(struct tools_open_wol *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -1477,7 +2380,7 @@ void tools_open_wol_unpack(struct tools_open_wol *ptr_struct, const u_int8_t* pt void tools_open_wol_print(const struct tools_open_wol *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== wol ========\n"); + fprintf(file, "======== tools_open_wol ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -1506,7 +2409,7 @@ void tools_open_wol_print(const struct tools_open_wol *ptr_struct, FILE* file, i } -int tools_open_wol_size(){ +int tools_open_wol_size(void){ return 8; } @@ -1516,17 +2419,17 @@ void tools_open_wol_dump(const struct tools_open_wol *ptr_struct, FILE* file) { void tools_open_hcr_cmds_pack(const union tools_open_hcr_cmds *ptr_struct, u_int8_t* ptr_buff) { - memcpy(ptr_buff, ptr_struct, 264); + tools_open_query_def_params_per_port_pack(&(ptr_struct->query_def_params_per_port), ptr_buff); } void tools_open_hcr_cmds_unpack(union tools_open_hcr_cmds *ptr_struct, const u_int8_t* ptr_buff) { - memcpy(ptr_struct, ptr_buff, 264); + tools_open_query_def_params_per_port_unpack(&(ptr_struct->query_def_params_per_port), ptr_buff); } void tools_open_hcr_cmds_print(const union tools_open_hcr_cmds *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== hcr_cmds ========\n"); + fprintf(file, "======== tools_open_hcr_cmds ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -1542,7 +2445,7 @@ void tools_open_hcr_cmds_print(const union tools_open_hcr_cmds *ptr_struct, FILE } -int tools_open_hcr_cmds_size(){ +int tools_open_hcr_cmds_size(void){ return 264; } @@ -1552,17 +2455,17 @@ void tools_open_hcr_cmds_dump(const union tools_open_hcr_cmds *ptr_struct, FILE* void tools_open_access_registers_pack(const union tools_open_access_registers *ptr_struct, u_int8_t* ptr_buff) { - memcpy(ptr_buff, ptr_struct, 512); + tools_open_phy_reg_pack(&(ptr_struct->PhyReg), ptr_buff); } void tools_open_access_registers_unpack(union tools_open_access_registers *ptr_struct, const u_int8_t* ptr_buff) { - memcpy(ptr_struct, ptr_buff, 512); + tools_open_phy_reg_unpack(&(ptr_struct->PhyReg), ptr_buff); } void tools_open_access_registers_print(const union tools_open_access_registers *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== access_registers ========\n"); + fprintf(file, "======== tools_open_access_registers ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -1578,7 +2481,7 @@ void tools_open_access_registers_print(const union tools_open_access_registers * } -int tools_open_access_registers_size(){ +int tools_open_access_registers_size(void){ return 512; } @@ -1588,17 +2491,17 @@ void tools_open_access_registers_dump(const union tools_open_access_registers *p void tools_open_nv_cfg_pack(const union tools_open_nv_cfg *ptr_struct, u_int8_t* ptr_buff) { - memcpy(ptr_buff, ptr_struct, 256); + tools_open_iscsi_settings_pack(&(ptr_struct->iscsi_settings), ptr_buff); } void tools_open_nv_cfg_unpack(union tools_open_nv_cfg *ptr_struct, const u_int8_t* ptr_buff) { - memcpy(ptr_struct, ptr_buff, 256); + tools_open_iscsi_settings_unpack(&(ptr_struct->iscsi_settings), ptr_buff); } void tools_open_nv_cfg_print(const union tools_open_nv_cfg *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== nv_cfg ========\n"); + fprintf(file, "======== tools_open_nv_cfg ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -1609,36 +2512,36 @@ void tools_open_nv_cfg_print(const union tools_open_nv_cfg *ptr_struct, FILE* fi tools_open_wol_print(&(ptr_struct->wol), file, indent_level + 1); adb2c_add_indentation(file, indent_level); - fprintf(file, "iscsi_settings:\n"); - tools_open_iscsi_settings_print(&(ptr_struct->iscsi_settings), file, indent_level + 1); + fprintf(file, "vpi_settings:\n"); + tools_open_vpi_settings_print(&(ptr_struct->vpi_settings), file, indent_level + 1); adb2c_add_indentation(file, indent_level); - fprintf(file, "infiniband_boot_settings:\n"); - tools_open_infiniband_boot_settings_print(&(ptr_struct->infiniband_boot_settings), file, indent_level + 1); + fprintf(file, "bar_size:\n"); + tools_open_bar_size_print(&(ptr_struct->bar_size), file, indent_level + 1); adb2c_add_indentation(file, indent_level); - fprintf(file, "boot_settings:\n"); - tools_open_boot_settings_print(&(ptr_struct->boot_settings), file, indent_level + 1); + fprintf(file, "sriov:\n"); + tools_open_sriov_print(&(ptr_struct->sriov), file, indent_level + 1); adb2c_add_indentation(file, indent_level); fprintf(file, "preboot_flow_ctrl:\n"); tools_open_preboot_flow_ctrl_print(&(ptr_struct->preboot_flow_ctrl), file, indent_level + 1); adb2c_add_indentation(file, indent_level); - fprintf(file, "sriov:\n"); - tools_open_sriov_print(&(ptr_struct->sriov), file, indent_level + 1); + fprintf(file, "boot_settings:\n"); + tools_open_boot_settings_print(&(ptr_struct->boot_settings), file, indent_level + 1); adb2c_add_indentation(file, indent_level); - fprintf(file, "bar_size:\n"); - tools_open_bar_size_print(&(ptr_struct->bar_size), file, indent_level + 1); + fprintf(file, "infiniband_boot_settings:\n"); + tools_open_infiniband_boot_settings_print(&(ptr_struct->infiniband_boot_settings), file, indent_level + 1); adb2c_add_indentation(file, indent_level); - fprintf(file, "vpi_settings:\n"); - tools_open_vpi_settings_print(&(ptr_struct->vpi_settings), file, indent_level + 1); + fprintf(file, "iscsi_settings:\n"); + tools_open_iscsi_settings_print(&(ptr_struct->iscsi_settings), file, indent_level + 1); } -int tools_open_nv_cfg_size(){ +int tools_open_nv_cfg_size(void){ return 256; } @@ -1648,17 +2551,17 @@ void tools_open_nv_cfg_dump(const union tools_open_nv_cfg *ptr_struct, FILE* fil void tools_open_tools_open_pack(const union tools_open_tools_open *ptr_struct, u_int8_t* ptr_buff) { - memcpy(ptr_buff, ptr_struct, 1048576); + tools_open_hcr_cmds_pack(&(ptr_struct->HcrCmds), ptr_buff); } void tools_open_tools_open_unpack(union tools_open_tools_open *ptr_struct, const u_int8_t* ptr_buff) { - memcpy(ptr_struct, ptr_buff, 1048576); + tools_open_hcr_cmds_unpack(&(ptr_struct->HcrCmds), ptr_buff); } void tools_open_tools_open_print(const union tools_open_tools_open *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== tools_open ========\n"); + fprintf(file, "======== tools_open_tools_open ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -1678,7 +2581,7 @@ void tools_open_tools_open_print(const union tools_open_tools_open *ptr_struct, } -int tools_open_tools_open_size(){ +int tools_open_tools_open_size(void){ return 1048576; } @@ -1705,6 +2608,8 @@ void tools_open_uint64_pack(const struct tools_open_uint64 *ptr_struct, u_int8_t void tools_open_uint64_unpack(struct tools_open_uint64 *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; + u_int8_t val=0; + (void)val; (void)offset; (void)i; (void)ptr_struct; @@ -1720,7 +2625,7 @@ void tools_open_uint64_unpack(struct tools_open_uint64 *ptr_struct, const u_int8 void tools_open_uint64_print(const struct tools_open_uint64 *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== uint64 ========\n"); + fprintf(file, "======== tools_open_uint64 ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -1734,7 +2639,7 @@ void tools_open_uint64_print(const struct tools_open_uint64 *ptr_struct, FILE* f } -int tools_open_uint64_size(){ +int tools_open_uint64_size(void){ return 8; } diff --git a/tools_layouts/tools_open_layouts.h b/tools_layouts/tools_open_layouts.h index 0d5b818..9108f99 100644 --- a/tools_layouts/tools_open_layouts.h +++ b/tools_layouts/tools_open_layouts.h @@ -1,20 +1,37 @@ - -/* - Mellanox Confidential and Proprietary - +/* + * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: * - * Copyright (C) 2010-2011, Mellanox Technologies Ltd. ALL RIGHTS RESERVED. + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: * - * Except as specifically permitted herein, no portion of the information, - * including but not limited to object code and source code, may be reproduced, - * modified, distributed, republished or otherwise exploited in any form or by - * any means for any purpose without the prior written permission of Mellanox - * Technologies Ltd. Use of software subject to the terms and conditions - * detailed in the file "LICENSE.txt". + * - 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. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. */ - /*** - *** This file was generated at "2015-01-22 18:19:26" + *** This file was generated at "2015-03-30 10:56:56" *** by: *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/tools_open/tools_open.adb --file-prefix tools_open --prefix tools_open_ ***/ @@ -28,6 +45,120 @@ extern "C" { #include "adb_to_c_utils.h"/* Description - */ /* Size in bytes - 4 */ +struct tools_open_tlv_type_dw { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - */ + /* 0.0 - 4.31 */ + u_int32_t tlv_type_dw; +}; + +/* Description - */ +/* Size in bytes - 4 */ +struct tools_open_per_port_type { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - */ + /* 0.0 - 0.15 */ + u_int16_t param_idx; + /* Description - */ + /* 0.16 - 0.23 */ + u_int8_t port; + /* Description - */ + /* 0.24 - 4.31 */ + u_int8_t param_class; +}; + +/* Description - */ +/* Size in bytes - 4 */ +struct tools_open_bmc_type { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - */ + /* 0.0 - 0.12 */ + u_int16_t param_idx; + /* Description - */ + /* 0.13 - 0.17 */ + u_int8_t channel; + /* Description - */ + /* 0.18 - 0.23 */ + u_int8_t host; + /* Description - */ + /* 0.24 - 4.31 */ + u_int8_t param_class; +}; + +/* Description - */ +/* Size in bytes - 4 */ +struct tools_open_per_host_type { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - */ + /* 0.0 - 0.9 */ + u_int16_t param_idx; + /* Description - */ + /* 0.10 - 0.17 */ + u_int8_t function; + /* Description - */ + /* 0.18 - 0.23 */ + u_int8_t host; + /* Description - */ + /* 0.24 - 4.31 */ + u_int8_t param_class; +}; + +/* Description - */ +/* Size in bytes - 4 */ +struct tools_open_eswitch_type { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - */ + /* 0.0 - 0.15 */ + u_int16_t param_idx; + /* Description - */ + /* 0.16 - 0.17 */ + u_int8_t port; + /* Description - */ + /* 0.18 - 0.23 */ + u_int8_t host; + /* Description - */ + /* 0.24 - 4.31 */ + u_int8_t param_class; +}; + +/* Description - */ +/* Size in bytes - 4 */ +struct tools_open_global_type { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - */ + /* 0.0 - 0.23 */ + u_int32_t param_idx; + /* Description - */ + /* 0.24 - 4.31 */ + u_int8_t param_class; +}; + +/* Description - */ +/* Size in bytes - 4 */ +union tools_open_tlv_type { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - */ + /* 0.0 - 4.31 */ + struct tools_open_global_type global; + /* Description - */ + /* 0.0 - 4.31 */ + struct tools_open_eswitch_type eswitch; + /* Description - */ + /* 0.0 - 4.31 */ + struct tools_open_per_host_type per_host; + /* Description - */ + /* 0.0 - 4.31 */ + struct tools_open_bmc_type bmc; + /* Description - */ + /* 0.0 - 4.31 */ + struct tools_open_per_port_type per_port; + /* Description - */ + /* 0.0 - 4.31 */ + struct tools_open_tlv_type_dw tlv_type_dw; +}; + +/* Description - */ +/* Size in bytes - 4 */ struct tools_open_pmdio_addr_data { /*---------------- DWORD[0] (Offset 0x0) ----------------*/ /* Description - Data (Clause 22) / Address/Data (Clause 45) */ @@ -40,9 +171,45 @@ This field is only valid for Address + Read and Address + Write operations, prov u_int16_t addr; }; +/* Description - */ +/* Size in bytes - 12 */ +struct tools_open_nv_hdr_fifth_gen { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - Size of configuration item data in bytes between 0..256 */ + /* 0.0 - 0.7 */ + u_int8_t length; + /* Description - 0 - FW writes configuration item directly +1 - FW writes configuration to a temporary aread untill NVCT operation is called */ + /* 0.11 - 0.11 */ + u_int8_t shadow; + /* Description - Configuration item version */ + /* 0.12 - 0.15 */ + u_int8_t version; + /* Description - enables reading the TLV by lower priorities +0 - TLV can be read by the subsequent lifecycle priorities. +1 - TLV cannot be read by the subsequent lifecycle priorities. + */ + /* 0.24 - 0.24 */ + u_int8_t rd_en; + /* Description - enables overwriting the TLV by lower priorities + +0 - Can only be overwritten by the current lifecycle priority +1 - Allowed to be overwritten by subsequent lifecycle priorities + */ + /* 0.25 - 0.25 */ + u_int8_t over_en; + /* Description - when set in query , will display the default configuration */ + /* 0.28 - 0.28 */ + u_int8_t default_; +/*---------------- DWORD[1] (Offset 0x4) ----------------*/ + /* Description - */ + /* 4.0 - 8.31 */ + union tools_open_tlv_type type; +}; + /* Description - */ /* Size in bytes - 8 */ -struct tools_open_mnv_hdr { +struct tools_open_nv_hdr { /*---------------- DWORD[0] (Offset 0x0) ----------------*/ /* Description - Tlv type */ /* 0.0 - 0.15 */ @@ -153,13 +320,63 @@ Used for external Phy FW burning. When set, the MDIO I/F is used for an external u_int8_t misc_cap; }; +/* Description - */ +/* Size in bytes - 12 */ +struct tools_open_nvdi { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - */ + /* 0.0 - 12.31 */ + struct tools_open_nv_hdr_fifth_gen nv_hdr; +}; + +/* Description - */ +/* Size in bytes - 256 */ +struct tools_open_nvda { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - */ + /* 0.0 - 12.31 */ + struct tools_open_nv_hdr_fifth_gen nv_hdr; +/*---------------- DWORD[3] (Offset 0xc) ----------------*/ + /* Description - */ + /* 12.24 - 140.23 */ + u_int8_t data[128]; +}; + +/* Description - */ +/* Size in bytes - 12 */ +struct tools_open_nvdia { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - */ + /* 0.0 - 12.31 */ + struct tools_open_nv_hdr_fifth_gen nv_hdr; +}; + +/* Description - */ +/* Size in bytes - 8 */ +struct tools_open_nvqc { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - */ + /* 0.0 - 4.31 */ + union tools_open_tlv_type type; +/*---------------- DWORD[1] (Offset 0x4) ----------------*/ + /* Description - the configuration item is supported and can be read */ + /* 4.0 - 4.0 */ + u_int8_t support_rd; + /* Description - the configuration item is supported and can be updated */ + /* 4.1 - 4.1 */ + u_int8_t support_wr; + /* Description - The maximum version of the configuration item currently supported by the firmware. */ + /* 4.4 - 4.7 */ + u_int8_t version; +}; + /* Description - */ /* Size in bytes - 8 */ struct tools_open_mnvia { /*---------------- DWORD[0] (Offset 0x0) ----------------*/ /* Description - */ /* 0.0 - 8.31 */ - struct tools_open_mnv_hdr mnv_hdr; + struct tools_open_nv_hdr nv_hdr; }; /* Description - */ @@ -168,7 +385,7 @@ struct tools_open_mnvi { /*---------------- DWORD[0] (Offset 0x0) ----------------*/ /* Description - */ /* 0.0 - 8.31 */ - struct tools_open_mnv_hdr mnv_hdr; + struct tools_open_nv_hdr nv_hdr; }; /* Description - */ @@ -177,7 +394,7 @@ struct tools_open_mnva { /*---------------- DWORD[0] (Offset 0x0) ----------------*/ /* Description - */ /* 0.0 - 8.31 */ - struct tools_open_mnv_hdr mnv_hdr; + struct tools_open_nv_hdr nv_hdr; /*---------------- DWORD[2] (Offset 0x8) ----------------*/ /* Description - */ /* 8.24 - 136.23 */ @@ -223,6 +440,15 @@ struct tools_open_query_def_params_per_port { /* Description - */ /* 8.0 - 8.15 */ u_int16_t boot_pkey; + /* Description - */ + /* 8.29 - 8.29 */ + u_int8_t nv_config_dhcp_iscsi_parameters; + /* Description - */ + /* 8.30 - 8.30 */ + u_int8_t nv_config_iscsi_parameters; + /* Description - */ + /* 8.31 - 12.31 */ + u_int8_t nv_config_boot_parameters; /*---------------- DWORD[3] (Offset 0xc) ----------------*/ /* Description - */ /* 12.22 - 12.23 */ @@ -301,39 +527,106 @@ union tools_open_mnv_cfg { /* Description - */ /* 0.0 - 8.31 */ struct tools_open_mnvia mnvia; + /* Description - */ + /* 0.0 - 8.31 */ + struct tools_open_nvqc nvqc; + /* Description - */ + /* 0.0 - 12.31 */ + struct tools_open_nvdia nvdia; + /* Description - */ + /* 0.0 - 256.31 */ + struct tools_open_nvda nvda; + /* Description - */ + /* 0.0 - 12.31 */ + struct tools_open_nvdi nvdi; }; /* Description - */ -/* Size in bytes - 4 */ -struct tools_open_vpi_settings { +/* Size in bytes - 12 */ +struct tools_open_iscsi_settings { /*---------------- DWORD[0] (Offset 0x0) ----------------*/ - /* Description - Default link type: -0 InfiniBand -1 Ethernet + /* Description - Enable or disable whether the iSCSI target will appear as the first hard disk drive in the system. Currently not supported. */ + /* 0.21 - 0.21 */ + u_int8_t target_as_first_hdd_en; + /* Description - Boot to iSCSI target after connection. +• 0 – Enabled +• 1 – Disabled +• 2 - One time disabled +• 3 - Invalid setting */ - /* 0.0 - 0.1 */ - u_int8_t network_link_type; + /* 0.22 - 0.23 */ + u_int8_t boot_to_target; + /* Description - Enable IPv6 auto-configuration through DHCP. Currently not supported. */ + /* 0.24 - 0.24 */ + u_int8_t ipv6_auto_config_en; + /* Description - Enable VLAN mode for iSCSI. */ + /* 0.26 - 0.26 */ + u_int8_t vlan_en; + /* Description - Enable the TCP timestamps option for iSCSI TCP connections. */ + /* 0.27 - 0.27 */ + u_int8_t tcp_timestamps_en; + /* Description - Authenticate the target to the initiator using CHAP. */ + /* 0.28 - 0.28 */ + u_int8_t chap_mutual_auth_en; + /* Description - Authenticate the initiator to the target using CHAP. */ + /* 0.29 - 0.29 */ + u_int8_t chap_auth_en; + /* Description - Retrieve iSCSI parameters through DHCP. */ + /* 0.30 - 0.30 */ + u_int8_t dhcp_iscsi_en; + /* Description - Retrieve IPv4 configuration for iSCSI through DHCP. */ + /* 0.31 - 4.31 */ + u_int8_t ipv4_dhcp_en; +/*---------------- DWORD[1] (Offset 0x4) ----------------*/ + /* Description - VLAN number. Only valid when vlan_en is 1 */ + /* 4.0 - 4.11 */ + u_int16_t vlan; +/*---------------- DWORD[2] (Offset 0x8) ----------------*/ + /* Description - Number of connection attempts to make if the iSCSI target is busy. Valid values are between 0 and 60. */ + /* 8.0 - 8.7 */ + u_int8_t lun_busy_retry_count; + /* Description - Number of seconds to wait after the link comes up before sending packets over the network. */ + /* 8.8 - 8.15 */ + u_int8_t link_up_delay_time; }; /* Description - */ /* Size in bytes - 4 */ -struct tools_open_bar_size { +struct tools_open_infiniband_boot_settings { /*---------------- DWORD[0] (Offset 0x0) ----------------*/ - /* Description - Base 2 log of the size of the physical function’s first BAR, in MBs. E.g. for 8MB the value is 3. */ - /* 0.0 - 4.31 */ - u_int32_t log_uar_bar_size; + /* Description - P_Key to be used by PXE boot. */ + /* 0.0 - 0.15 */ + u_int16_t boot_pkey; }; /* Description - */ /* Size in bytes - 4 */ -struct tools_open_sriov { +struct tools_open_boot_settings { /*---------------- DWORD[0] (Offset 0x0) ----------------*/ - /* Description - The total number of VFs that can be supported. */ - /* 0.0 - 0.15 */ - u_int16_t total_vfs; - /* Description - 1 when SRIOV is enabled: SRIOV capability will appear on the PCI configuration header. */ + /* Description - VLAN ID for network boot. */ + /* 0.0 - 0.11 */ + u_int16_t boot_vlan; + /* Description - 0 – None – disable legacy boot. +1 – PXE (DHCP/TFTP boot). +2 – iSCSI +3 – PXE + iSCSI +4-255 – Reserved + */ + /* 0.16 - 0.23 */ + u_int8_t legacy_boot_protocol; + /* Description - Number of retries to attempt in case of boot failure. +7 indicate indefinite retries. + */ + /* 0.24 - 0.26 */ + u_int8_t boot_retry_conut; + /* Description - 1 – Enable VLAN mode for network boot. */ + /* 0.30 - 0.30 */ + u_int8_t boot_vlan_en; + /* Description - 0 – disable boot option ROM: disables installation of the UNDI/16 driver. The option ROM is still required to expose CLP, UEFI and so on. +1 – enable boot option ROM + */ /* 0.31 - 4.31 */ - u_int8_t sriov_en; + u_int8_t boot_option_rom_en; }; /* Description - */ @@ -372,90 +665,44 @@ PFC and global pauses are mutually exclusive. /* Description - */ /* Size in bytes - 4 */ -struct tools_open_boot_settings { +struct tools_open_sriov { /*---------------- DWORD[0] (Offset 0x0) ----------------*/ - /* Description - VLAN ID for network boot. */ - /* 0.0 - 0.11 */ - u_int16_t boot_vlan; - /* Description - 0 – None – disable legacy boot. -1 – PXE (DHCP/TFTP boot). -2 – iSCSI -3 – PXE + iSCSI -4-255 – Reserved - */ - /* 0.16 - 0.23 */ - u_int8_t legacy_boot_protocol; - /* Description - Number of retries to attempt in case of boot failure. -7 indicate indefinite retries. - */ - /* 0.24 - 0.26 */ - u_int8_t boot_retry_conut; - /* Description - 1 – Enable VLAN mode for network boot. */ - /* 0.30 - 0.30 */ - u_int8_t boot_vlan_en; - /* Description - 0 – disable boot option ROM: disables installation of the UNDI/16 driver. The option ROM is still required to expose CLP, UEFI and so on. -1 – enable boot option ROM - */ + /* Description - The total number of VFs that can be supported. */ + /* 0.0 - 0.15 */ + u_int16_t total_vfs; + /* Description - 1 when SRIOV is enabled: SRIOV capability will appear on the PCI configuration header. */ /* 0.31 - 4.31 */ - u_int8_t boot_option_rom_en; + u_int8_t sriov_en; }; /* Description - */ /* Size in bytes - 4 */ -struct tools_open_infiniband_boot_settings { +struct tools_open_bar_size { /*---------------- DWORD[0] (Offset 0x0) ----------------*/ - /* Description - P_Key to be used by PXE boot. */ - /* 0.0 - 0.15 */ - u_int16_t boot_pkey; + /* Description - Base 2 log of the size of the physical function’s first BAR, in MBs. E.g. for 8MB the value is 3. */ + /* 0.0 - 4.31 */ + u_int32_t log_uar_bar_size; }; /* Description - */ -/* Size in bytes - 12 */ -struct tools_open_iscsi_settings { +/* Size in bytes - 4 */ +struct tools_open_vpi_settings { /*---------------- DWORD[0] (Offset 0x0) ----------------*/ - /* Description - Enable or disable whether the iSCSI target will appear as the first hard disk drive in the system. Currently not supported. */ - /* 0.21 - 0.21 */ - u_int8_t target_as_first_hdd_en; - /* Description - Boot to iSCSI target after connection. -• 0 – Enabled -• 1 – Disabled -• 2 - One time disabled -• 3 - Invalid setting + /* Description - Network link type: +0 - Reserved +1 - InfiniBand +2 - Ethernet */ - /* 0.22 - 0.23 */ - u_int8_t boot_to_target; - /* Description - Enable IPv6 auto-configuration through DHCP. Currently not supported. */ - /* 0.24 - 0.24 */ - u_int8_t ipv6_auto_config_en; - /* Description - Enable VLAN mode for iSCSI. */ - /* 0.26 - 0.26 */ - u_int8_t vlan_en; - /* Description - Enable the TCP timestamps option for iSCSI TCP connections. */ - /* 0.27 - 0.27 */ - u_int8_t tcp_timestamps_en; - /* Description - Authenticate the target to the initiator using CHAP. */ - /* 0.28 - 0.28 */ - u_int8_t chap_mutual_auth_en; - /* Description - Authenticate the initiator to the target using CHAP. */ - /* 0.29 - 0.29 */ - u_int8_t chap_auth_en; - /* Description - Retrieve iSCSI parameters through DHCP. */ - /* 0.30 - 0.30 */ - u_int8_t dhcp_iscsi_en; - /* Description - Retrieve IPv4 configuration for iSCSI through DHCP. */ - /* 0.31 - 4.31 */ - u_int8_t ipv4_dhcp_en; -/*---------------- DWORD[1] (Offset 0x4) ----------------*/ - /* Description - VLAN number. Only valid when vlan_en is 1 */ - /* 4.0 - 4.11 */ - u_int16_t vlan; -/*---------------- DWORD[2] (Offset 0x8) ----------------*/ - /* Description - Number of connection attempts to make if the iSCSI target is busy. Valid values are between 0 and 60. */ - /* 8.0 - 8.7 */ - u_int8_t lun_busy_retry_count; - /* Description - Number of seconds to wait after the link comes up before sending packets over the network. */ - /* 8.8 - 8.15 */ - u_int8_t link_up_delay_time; + /* 0.0 - 0.1 */ + u_int8_t network_link_type; + /* Description - 0 - Reserved +1 - Infiniband +2 - Ethernet +Valid for CX4 and above only +when VPI network link type is selcted this field determines +the default link type when no cable is connected */ + /* 0.2 - 0.3 */ + u_int8_t default_link_type; }; /* Description - */ @@ -517,26 +764,26 @@ union tools_open_nv_cfg { /* 0.0 - 8.31 */ struct tools_open_wol wol; /* Description - */ - /* 0.0 - 12.31 */ - struct tools_open_iscsi_settings iscsi_settings; + /* 0.0 - 4.31 */ + struct tools_open_vpi_settings vpi_settings; /* Description - */ /* 0.0 - 4.31 */ - struct tools_open_infiniband_boot_settings infiniband_boot_settings; + struct tools_open_bar_size bar_size; /* Description - */ /* 0.0 - 4.31 */ - struct tools_open_boot_settings boot_settings; + struct tools_open_sriov sriov; /* Description - */ /* 0.0 - 4.31 */ struct tools_open_preboot_flow_ctrl preboot_flow_ctrl; /* Description - */ /* 0.0 - 4.31 */ - struct tools_open_sriov sriov; + struct tools_open_boot_settings boot_settings; /* Description - */ /* 0.0 - 4.31 */ - struct tools_open_bar_size bar_size; + struct tools_open_infiniband_boot_settings infiniband_boot_settings; /* Description - */ - /* 0.0 - 4.31 */ - struct tools_open_vpi_settings vpi_settings; + /* 0.0 - 12.31 */ + struct tools_open_iscsi_settings iscsi_settings; }; /* Description - */ @@ -569,172 +816,256 @@ struct tools_open_uint64 { /*================= PACK/UNPACK/PRINT FUNCTIONS ======================*/ +/* tlv_type_dw */ +void tools_open_tlv_type_dw_pack(const struct tools_open_tlv_type_dw *ptr_struct, u_int8_t* ptr_buff); +void tools_open_tlv_type_dw_unpack(struct tools_open_tlv_type_dw *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_tlv_type_dw_print(const struct tools_open_tlv_type_dw *ptr_struct, FILE* file, int indent_level); +int tools_open_tlv_type_dw_size(void); +#define TOOLS_OPEN_TLV_TYPE_DW_SIZE (0x4) +void tools_open_tlv_type_dw_dump(const struct tools_open_tlv_type_dw *ptr_struct, FILE* file); +/* per_port_type */ +void tools_open_per_port_type_pack(const struct tools_open_per_port_type *ptr_struct, u_int8_t* ptr_buff); +void tools_open_per_port_type_unpack(struct tools_open_per_port_type *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_per_port_type_print(const struct tools_open_per_port_type *ptr_struct, FILE* file, int indent_level); +int tools_open_per_port_type_size(void); +#define TOOLS_OPEN_PER_PORT_TYPE_SIZE (0x4) +void tools_open_per_port_type_dump(const struct tools_open_per_port_type *ptr_struct, FILE* file); +/* bmc_type */ +void tools_open_bmc_type_pack(const struct tools_open_bmc_type *ptr_struct, u_int8_t* ptr_buff); +void tools_open_bmc_type_unpack(struct tools_open_bmc_type *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_bmc_type_print(const struct tools_open_bmc_type *ptr_struct, FILE* file, int indent_level); +int tools_open_bmc_type_size(void); +#define TOOLS_OPEN_BMC_TYPE_SIZE (0x4) +void tools_open_bmc_type_dump(const struct tools_open_bmc_type *ptr_struct, FILE* file); +/* per_host_type */ +void tools_open_per_host_type_pack(const struct tools_open_per_host_type *ptr_struct, u_int8_t* ptr_buff); +void tools_open_per_host_type_unpack(struct tools_open_per_host_type *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_per_host_type_print(const struct tools_open_per_host_type *ptr_struct, FILE* file, int indent_level); +int tools_open_per_host_type_size(void); +#define TOOLS_OPEN_PER_HOST_TYPE_SIZE (0x4) +void tools_open_per_host_type_dump(const struct tools_open_per_host_type *ptr_struct, FILE* file); +/* eswitch_type */ +void tools_open_eswitch_type_pack(const struct tools_open_eswitch_type *ptr_struct, u_int8_t* ptr_buff); +void tools_open_eswitch_type_unpack(struct tools_open_eswitch_type *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_eswitch_type_print(const struct tools_open_eswitch_type *ptr_struct, FILE* file, int indent_level); +int tools_open_eswitch_type_size(void); +#define TOOLS_OPEN_ESWITCH_TYPE_SIZE (0x4) +void tools_open_eswitch_type_dump(const struct tools_open_eswitch_type *ptr_struct, FILE* file); +/* global_type */ +void tools_open_global_type_pack(const struct tools_open_global_type *ptr_struct, u_int8_t* ptr_buff); +void tools_open_global_type_unpack(struct tools_open_global_type *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_global_type_print(const struct tools_open_global_type *ptr_struct, FILE* file, int indent_level); +int tools_open_global_type_size(void); +#define TOOLS_OPEN_GLOBAL_TYPE_SIZE (0x4) +void tools_open_global_type_dump(const struct tools_open_global_type *ptr_struct, FILE* file); +/* tlv_type */ +void tools_open_tlv_type_pack(const union tools_open_tlv_type *ptr_struct, u_int8_t* ptr_buff); +void tools_open_tlv_type_unpack(union tools_open_tlv_type *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_tlv_type_print(const union tools_open_tlv_type *ptr_struct, FILE* file, int indent_level); +int tools_open_tlv_type_size(void); +#define TOOLS_OPEN_TLV_TYPE_SIZE (0x4) +void tools_open_tlv_type_dump(const union tools_open_tlv_type *ptr_struct, FILE* file); /* pmdio_addr_data */ void tools_open_pmdio_addr_data_pack(const struct tools_open_pmdio_addr_data *ptr_struct, u_int8_t* ptr_buff); void tools_open_pmdio_addr_data_unpack(struct tools_open_pmdio_addr_data *ptr_struct, const u_int8_t* ptr_buff); void tools_open_pmdio_addr_data_print(const struct tools_open_pmdio_addr_data *ptr_struct, FILE* file, int indent_level); -int tools_open_pmdio_addr_data_size(); +int tools_open_pmdio_addr_data_size(void); #define TOOLS_OPEN_PMDIO_ADDR_DATA_SIZE (0x4) void tools_open_pmdio_addr_data_dump(const struct tools_open_pmdio_addr_data *ptr_struct, FILE* file); -/* mnv_hdr */ -void tools_open_mnv_hdr_pack(const struct tools_open_mnv_hdr *ptr_struct, u_int8_t* ptr_buff); -void tools_open_mnv_hdr_unpack(struct tools_open_mnv_hdr *ptr_struct, const u_int8_t* ptr_buff); -void tools_open_mnv_hdr_print(const struct tools_open_mnv_hdr *ptr_struct, FILE* file, int indent_level); -int tools_open_mnv_hdr_size(); -#define TOOLS_OPEN_MNV_HDR_SIZE (0x8) -void tools_open_mnv_hdr_dump(const struct tools_open_mnv_hdr *ptr_struct, FILE* file); +/* nv_hdr_fifth_gen */ +void tools_open_nv_hdr_fifth_gen_pack(const struct tools_open_nv_hdr_fifth_gen *ptr_struct, u_int8_t* ptr_buff); +void tools_open_nv_hdr_fifth_gen_unpack(struct tools_open_nv_hdr_fifth_gen *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_nv_hdr_fifth_gen_print(const struct tools_open_nv_hdr_fifth_gen *ptr_struct, FILE* file, int indent_level); +int tools_open_nv_hdr_fifth_gen_size(void); +#define TOOLS_OPEN_NV_HDR_FIFTH_GEN_SIZE (0xc) +void tools_open_nv_hdr_fifth_gen_dump(const struct tools_open_nv_hdr_fifth_gen *ptr_struct, FILE* file); +/* nv_hdr */ +void tools_open_nv_hdr_pack(const struct tools_open_nv_hdr *ptr_struct, u_int8_t* ptr_buff); +void tools_open_nv_hdr_unpack(struct tools_open_nv_hdr *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_nv_hdr_print(const struct tools_open_nv_hdr *ptr_struct, FILE* file, int indent_level); +int tools_open_nv_hdr_size(void); +#define TOOLS_OPEN_NV_HDR_SIZE (0x8) +void tools_open_nv_hdr_dump(const struct tools_open_nv_hdr *ptr_struct, FILE* file); /* pmdio */ void tools_open_pmdio_pack(const struct tools_open_pmdio *ptr_struct, u_int8_t* ptr_buff); void tools_open_pmdio_unpack(struct tools_open_pmdio *ptr_struct, const u_int8_t* ptr_buff); void tools_open_pmdio_print(const struct tools_open_pmdio *ptr_struct, FILE* file, int indent_level); -int tools_open_pmdio_size(); +int tools_open_pmdio_size(void); #define TOOLS_OPEN_PMDIO_SIZE (0x108) void tools_open_pmdio_dump(const struct tools_open_pmdio *ptr_struct, FILE* file); /* pmdic */ void tools_open_pmdic_pack(const struct tools_open_pmdic *ptr_struct, u_int8_t* ptr_buff); void tools_open_pmdic_unpack(struct tools_open_pmdic *ptr_struct, const u_int8_t* ptr_buff); void tools_open_pmdic_print(const struct tools_open_pmdic *ptr_struct, FILE* file, int indent_level); -int tools_open_pmdic_size(); +int tools_open_pmdic_size(void); #define TOOLS_OPEN_PMDIC_SIZE (0xc) void tools_open_pmdic_dump(const struct tools_open_pmdic *ptr_struct, FILE* file); +/* nvdi */ +void tools_open_nvdi_pack(const struct tools_open_nvdi *ptr_struct, u_int8_t* ptr_buff); +void tools_open_nvdi_unpack(struct tools_open_nvdi *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_nvdi_print(const struct tools_open_nvdi *ptr_struct, FILE* file, int indent_level); +int tools_open_nvdi_size(void); +#define TOOLS_OPEN_NVDI_SIZE (0xc) +void tools_open_nvdi_dump(const struct tools_open_nvdi *ptr_struct, FILE* file); +/* nvda */ +void tools_open_nvda_pack(const struct tools_open_nvda *ptr_struct, u_int8_t* ptr_buff); +void tools_open_nvda_unpack(struct tools_open_nvda *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_nvda_print(const struct tools_open_nvda *ptr_struct, FILE* file, int indent_level); +int tools_open_nvda_size(void); +#define TOOLS_OPEN_NVDA_SIZE (0x100) +void tools_open_nvda_dump(const struct tools_open_nvda *ptr_struct, FILE* file); +/* nvdia */ +void tools_open_nvdia_pack(const struct tools_open_nvdia *ptr_struct, u_int8_t* ptr_buff); +void tools_open_nvdia_unpack(struct tools_open_nvdia *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_nvdia_print(const struct tools_open_nvdia *ptr_struct, FILE* file, int indent_level); +int tools_open_nvdia_size(void); +#define TOOLS_OPEN_NVDIA_SIZE (0xc) +void tools_open_nvdia_dump(const struct tools_open_nvdia *ptr_struct, FILE* file); +/* nvqc */ +void tools_open_nvqc_pack(const struct tools_open_nvqc *ptr_struct, u_int8_t* ptr_buff); +void tools_open_nvqc_unpack(struct tools_open_nvqc *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_nvqc_print(const struct tools_open_nvqc *ptr_struct, FILE* file, int indent_level); +int tools_open_nvqc_size(void); +#define TOOLS_OPEN_NVQC_SIZE (0x8) +void tools_open_nvqc_dump(const struct tools_open_nvqc *ptr_struct, FILE* file); /* mnvia */ void tools_open_mnvia_pack(const struct tools_open_mnvia *ptr_struct, u_int8_t* ptr_buff); void tools_open_mnvia_unpack(struct tools_open_mnvia *ptr_struct, const u_int8_t* ptr_buff); void tools_open_mnvia_print(const struct tools_open_mnvia *ptr_struct, FILE* file, int indent_level); -int tools_open_mnvia_size(); +int tools_open_mnvia_size(void); #define TOOLS_OPEN_MNVIA_SIZE (0x8) void tools_open_mnvia_dump(const struct tools_open_mnvia *ptr_struct, FILE* file); /* mnvi */ void tools_open_mnvi_pack(const struct tools_open_mnvi *ptr_struct, u_int8_t* ptr_buff); void tools_open_mnvi_unpack(struct tools_open_mnvi *ptr_struct, const u_int8_t* ptr_buff); void tools_open_mnvi_print(const struct tools_open_mnvi *ptr_struct, FILE* file, int indent_level); -int tools_open_mnvi_size(); +int tools_open_mnvi_size(void); #define TOOLS_OPEN_MNVI_SIZE (0x8) void tools_open_mnvi_dump(const struct tools_open_mnvi *ptr_struct, FILE* file); /* mnva */ void tools_open_mnva_pack(const struct tools_open_mnva *ptr_struct, u_int8_t* ptr_buff); void tools_open_mnva_unpack(struct tools_open_mnva *ptr_struct, const u_int8_t* ptr_buff); void tools_open_mnva_print(const struct tools_open_mnva *ptr_struct, FILE* file, int indent_level); -int tools_open_mnva_size(); +int tools_open_mnva_size(void); #define TOOLS_OPEN_MNVA_SIZE (0x100) void tools_open_mnva_dump(const struct tools_open_mnva *ptr_struct, FILE* file); /* query_def_params_per_port */ void tools_open_query_def_params_per_port_pack(const struct tools_open_query_def_params_per_port *ptr_struct, u_int8_t* ptr_buff); void tools_open_query_def_params_per_port_unpack(struct tools_open_query_def_params_per_port *ptr_struct, const u_int8_t* ptr_buff); void tools_open_query_def_params_per_port_print(const struct tools_open_query_def_params_per_port *ptr_struct, FILE* file, int indent_level); -int tools_open_query_def_params_per_port_size(); +int tools_open_query_def_params_per_port_size(void); #define TOOLS_OPEN_QUERY_DEF_PARAMS_PER_PORT_SIZE (0x1c) void tools_open_query_def_params_per_port_dump(const struct tools_open_query_def_params_per_port *ptr_struct, FILE* file); /* query_def_params_global */ void tools_open_query_def_params_global_pack(const struct tools_open_query_def_params_global *ptr_struct, u_int8_t* ptr_buff); void tools_open_query_def_params_global_unpack(struct tools_open_query_def_params_global *ptr_struct, const u_int8_t* ptr_buff); void tools_open_query_def_params_global_print(const struct tools_open_query_def_params_global *ptr_struct, FILE* file, int indent_level); -int tools_open_query_def_params_global_size(); +int tools_open_query_def_params_global_size(void); #define TOOLS_OPEN_QUERY_DEF_PARAMS_GLOBAL_SIZE (0x14) void tools_open_query_def_params_global_dump(const struct tools_open_query_def_params_global *ptr_struct, FILE* file); /* phy_reg */ void tools_open_phy_reg_pack(const union tools_open_phy_reg *ptr_struct, u_int8_t* ptr_buff); void tools_open_phy_reg_unpack(union tools_open_phy_reg *ptr_struct, const u_int8_t* ptr_buff); void tools_open_phy_reg_print(const union tools_open_phy_reg *ptr_struct, FILE* file, int indent_level); -int tools_open_phy_reg_size(); +int tools_open_phy_reg_size(void); #define TOOLS_OPEN_PHY_REG_SIZE (0x108) void tools_open_phy_reg_dump(const union tools_open_phy_reg *ptr_struct, FILE* file); /* mnv_cfg */ void tools_open_mnv_cfg_pack(const union tools_open_mnv_cfg *ptr_struct, u_int8_t* ptr_buff); void tools_open_mnv_cfg_unpack(union tools_open_mnv_cfg *ptr_struct, const u_int8_t* ptr_buff); void tools_open_mnv_cfg_print(const union tools_open_mnv_cfg *ptr_struct, FILE* file, int indent_level); -int tools_open_mnv_cfg_size(); +int tools_open_mnv_cfg_size(void); #define TOOLS_OPEN_MNV_CFG_SIZE (0x100) void tools_open_mnv_cfg_dump(const union tools_open_mnv_cfg *ptr_struct, FILE* file); -/* vpi_settings */ -void tools_open_vpi_settings_pack(const struct tools_open_vpi_settings *ptr_struct, u_int8_t* ptr_buff); -void tools_open_vpi_settings_unpack(struct tools_open_vpi_settings *ptr_struct, const u_int8_t* ptr_buff); -void tools_open_vpi_settings_print(const struct tools_open_vpi_settings *ptr_struct, FILE* file, int indent_level); -int tools_open_vpi_settings_size(); -#define TOOLS_OPEN_VPI_SETTINGS_SIZE (0x4) -void tools_open_vpi_settings_dump(const struct tools_open_vpi_settings *ptr_struct, FILE* file); -/* bar_size */ -void tools_open_bar_size_pack(const struct tools_open_bar_size *ptr_struct, u_int8_t* ptr_buff); -void tools_open_bar_size_unpack(struct tools_open_bar_size *ptr_struct, const u_int8_t* ptr_buff); -void tools_open_bar_size_print(const struct tools_open_bar_size *ptr_struct, FILE* file, int indent_level); -int tools_open_bar_size_size(); -#define TOOLS_OPEN_BAR_SIZE_SIZE (0x4) -void tools_open_bar_size_dump(const struct tools_open_bar_size *ptr_struct, FILE* file); -/* sriov */ -void tools_open_sriov_pack(const struct tools_open_sriov *ptr_struct, u_int8_t* ptr_buff); -void tools_open_sriov_unpack(struct tools_open_sriov *ptr_struct, const u_int8_t* ptr_buff); -void tools_open_sriov_print(const struct tools_open_sriov *ptr_struct, FILE* file, int indent_level); -int tools_open_sriov_size(); -#define TOOLS_OPEN_SRIOV_SIZE (0x4) -void tools_open_sriov_dump(const struct tools_open_sriov *ptr_struct, FILE* file); -/* preboot_flow_ctrl */ -void tools_open_preboot_flow_ctrl_pack(const struct tools_open_preboot_flow_ctrl *ptr_struct, u_int8_t* ptr_buff); -void tools_open_preboot_flow_ctrl_unpack(struct tools_open_preboot_flow_ctrl *ptr_struct, const u_int8_t* ptr_buff); -void tools_open_preboot_flow_ctrl_print(const struct tools_open_preboot_flow_ctrl *ptr_struct, FILE* file, int indent_level); -int tools_open_preboot_flow_ctrl_size(); -#define TOOLS_OPEN_PREBOOT_FLOW_CTRL_SIZE (0x4) -void tools_open_preboot_flow_ctrl_dump(const struct tools_open_preboot_flow_ctrl *ptr_struct, FILE* file); -/* boot_settings */ -void tools_open_boot_settings_pack(const struct tools_open_boot_settings *ptr_struct, u_int8_t* ptr_buff); -void tools_open_boot_settings_unpack(struct tools_open_boot_settings *ptr_struct, const u_int8_t* ptr_buff); -void tools_open_boot_settings_print(const struct tools_open_boot_settings *ptr_struct, FILE* file, int indent_level); -int tools_open_boot_settings_size(); -#define TOOLS_OPEN_BOOT_SETTINGS_SIZE (0x4) -void tools_open_boot_settings_dump(const struct tools_open_boot_settings *ptr_struct, FILE* file); -/* infiniband_boot_settings */ -void tools_open_infiniband_boot_settings_pack(const struct tools_open_infiniband_boot_settings *ptr_struct, u_int8_t* ptr_buff); -void tools_open_infiniband_boot_settings_unpack(struct tools_open_infiniband_boot_settings *ptr_struct, const u_int8_t* ptr_buff); -void tools_open_infiniband_boot_settings_print(const struct tools_open_infiniband_boot_settings *ptr_struct, FILE* file, int indent_level); -int tools_open_infiniband_boot_settings_size(); -#define TOOLS_OPEN_INFINIBAND_BOOT_SETTINGS_SIZE (0x4) -void tools_open_infiniband_boot_settings_dump(const struct tools_open_infiniband_boot_settings *ptr_struct, FILE* file); /* iscsi_settings */ void tools_open_iscsi_settings_pack(const struct tools_open_iscsi_settings *ptr_struct, u_int8_t* ptr_buff); void tools_open_iscsi_settings_unpack(struct tools_open_iscsi_settings *ptr_struct, const u_int8_t* ptr_buff); void tools_open_iscsi_settings_print(const struct tools_open_iscsi_settings *ptr_struct, FILE* file, int indent_level); -int tools_open_iscsi_settings_size(); +int tools_open_iscsi_settings_size(void); #define TOOLS_OPEN_ISCSI_SETTINGS_SIZE (0xc) void tools_open_iscsi_settings_dump(const struct tools_open_iscsi_settings *ptr_struct, FILE* file); +/* infiniband_boot_settings */ +void tools_open_infiniband_boot_settings_pack(const struct tools_open_infiniband_boot_settings *ptr_struct, u_int8_t* ptr_buff); +void tools_open_infiniband_boot_settings_unpack(struct tools_open_infiniband_boot_settings *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_infiniband_boot_settings_print(const struct tools_open_infiniband_boot_settings *ptr_struct, FILE* file, int indent_level); +int tools_open_infiniband_boot_settings_size(void); +#define TOOLS_OPEN_INFINIBAND_BOOT_SETTINGS_SIZE (0x4) +void tools_open_infiniband_boot_settings_dump(const struct tools_open_infiniband_boot_settings *ptr_struct, FILE* file); +/* boot_settings */ +void tools_open_boot_settings_pack(const struct tools_open_boot_settings *ptr_struct, u_int8_t* ptr_buff); +void tools_open_boot_settings_unpack(struct tools_open_boot_settings *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_boot_settings_print(const struct tools_open_boot_settings *ptr_struct, FILE* file, int indent_level); +int tools_open_boot_settings_size(void); +#define TOOLS_OPEN_BOOT_SETTINGS_SIZE (0x4) +void tools_open_boot_settings_dump(const struct tools_open_boot_settings *ptr_struct, FILE* file); +/* preboot_flow_ctrl */ +void tools_open_preboot_flow_ctrl_pack(const struct tools_open_preboot_flow_ctrl *ptr_struct, u_int8_t* ptr_buff); +void tools_open_preboot_flow_ctrl_unpack(struct tools_open_preboot_flow_ctrl *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_preboot_flow_ctrl_print(const struct tools_open_preboot_flow_ctrl *ptr_struct, FILE* file, int indent_level); +int tools_open_preboot_flow_ctrl_size(void); +#define TOOLS_OPEN_PREBOOT_FLOW_CTRL_SIZE (0x4) +void tools_open_preboot_flow_ctrl_dump(const struct tools_open_preboot_flow_ctrl *ptr_struct, FILE* file); +/* sriov */ +void tools_open_sriov_pack(const struct tools_open_sriov *ptr_struct, u_int8_t* ptr_buff); +void tools_open_sriov_unpack(struct tools_open_sriov *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_sriov_print(const struct tools_open_sriov *ptr_struct, FILE* file, int indent_level); +int tools_open_sriov_size(void); +#define TOOLS_OPEN_SRIOV_SIZE (0x4) +void tools_open_sriov_dump(const struct tools_open_sriov *ptr_struct, FILE* file); +/* bar_size */ +void tools_open_bar_size_pack(const struct tools_open_bar_size *ptr_struct, u_int8_t* ptr_buff); +void tools_open_bar_size_unpack(struct tools_open_bar_size *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_bar_size_print(const struct tools_open_bar_size *ptr_struct, FILE* file, int indent_level); +int tools_open_bar_size_size(void); +#define TOOLS_OPEN_BAR_SIZE_SIZE (0x4) +void tools_open_bar_size_dump(const struct tools_open_bar_size *ptr_struct, FILE* file); +/* vpi_settings */ +void tools_open_vpi_settings_pack(const struct tools_open_vpi_settings *ptr_struct, u_int8_t* ptr_buff); +void tools_open_vpi_settings_unpack(struct tools_open_vpi_settings *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_vpi_settings_print(const struct tools_open_vpi_settings *ptr_struct, FILE* file, int indent_level); +int tools_open_vpi_settings_size(void); +#define TOOLS_OPEN_VPI_SETTINGS_SIZE (0x4) +void tools_open_vpi_settings_dump(const struct tools_open_vpi_settings *ptr_struct, FILE* file); /* wol */ void tools_open_wol_pack(const struct tools_open_wol *ptr_struct, u_int8_t* ptr_buff); void tools_open_wol_unpack(struct tools_open_wol *ptr_struct, const u_int8_t* ptr_buff); void tools_open_wol_print(const struct tools_open_wol *ptr_struct, FILE* file, int indent_level); -int tools_open_wol_size(); +int tools_open_wol_size(void); #define TOOLS_OPEN_WOL_SIZE (0x8) void tools_open_wol_dump(const struct tools_open_wol *ptr_struct, FILE* file); /* hcr_cmds */ void tools_open_hcr_cmds_pack(const union tools_open_hcr_cmds *ptr_struct, u_int8_t* ptr_buff); void tools_open_hcr_cmds_unpack(union tools_open_hcr_cmds *ptr_struct, const u_int8_t* ptr_buff); void tools_open_hcr_cmds_print(const union tools_open_hcr_cmds *ptr_struct, FILE* file, int indent_level); -int tools_open_hcr_cmds_size(); +int tools_open_hcr_cmds_size(void); #define TOOLS_OPEN_HCR_CMDS_SIZE (0x108) void tools_open_hcr_cmds_dump(const union tools_open_hcr_cmds *ptr_struct, FILE* file); /* access_registers */ void tools_open_access_registers_pack(const union tools_open_access_registers *ptr_struct, u_int8_t* ptr_buff); void tools_open_access_registers_unpack(union tools_open_access_registers *ptr_struct, const u_int8_t* ptr_buff); void tools_open_access_registers_print(const union tools_open_access_registers *ptr_struct, FILE* file, int indent_level); -int tools_open_access_registers_size(); +int tools_open_access_registers_size(void); #define TOOLS_OPEN_ACCESS_REGISTERS_SIZE (0x200) void tools_open_access_registers_dump(const union tools_open_access_registers *ptr_struct, FILE* file); /* nv_cfg */ void tools_open_nv_cfg_pack(const union tools_open_nv_cfg *ptr_struct, u_int8_t* ptr_buff); void tools_open_nv_cfg_unpack(union tools_open_nv_cfg *ptr_struct, const u_int8_t* ptr_buff); void tools_open_nv_cfg_print(const union tools_open_nv_cfg *ptr_struct, FILE* file, int indent_level); -int tools_open_nv_cfg_size(); +int tools_open_nv_cfg_size(void); #define TOOLS_OPEN_NV_CFG_SIZE (0x100) void tools_open_nv_cfg_dump(const union tools_open_nv_cfg *ptr_struct, FILE* file); /* tools_open */ void tools_open_tools_open_pack(const union tools_open_tools_open *ptr_struct, u_int8_t* ptr_buff); void tools_open_tools_open_unpack(union tools_open_tools_open *ptr_struct, const u_int8_t* ptr_buff); void tools_open_tools_open_print(const union tools_open_tools_open *ptr_struct, FILE* file, int indent_level); -int tools_open_tools_open_size(); +int tools_open_tools_open_size(void); #define TOOLS_OPEN_TOOLS_OPEN_SIZE (0x100000) void tools_open_tools_open_dump(const union tools_open_tools_open *ptr_struct, FILE* file); /* uint64 */ void tools_open_uint64_pack(const struct tools_open_uint64 *ptr_struct, u_int8_t* ptr_buff); void tools_open_uint64_unpack(struct tools_open_uint64 *ptr_struct, const u_int8_t* ptr_buff); void tools_open_uint64_print(const struct tools_open_uint64 *ptr_struct, FILE* file, int indent_level); -int tools_open_uint64_size(); +int tools_open_uint64_size(void); #define TOOLS_OPEN_UINT64_SIZE (0x8) void tools_open_uint64_dump(const struct tools_open_uint64 *ptr_struct, FILE* file); diff --git a/tools_res_mgmt/Makefile.am b/tools_res_mgmt/Makefile.am new file mode 100644 index 0000000..e155ed4 --- /dev/null +++ b/tools_res_mgmt/Makefile.am @@ -0,0 +1,42 @@ +# Copyright (c) 2004-2010 Mellanox Technologies LTD. All rights reserved. +# +# This software is available to you under a choice of one of two +# licenses. You may choose to be licensed under the terms of the GNU +# General Public License (GPL) Version 2, available from the file +# COPYING in the main directory of this source tree, or the +# OpenIB.org BSD license below: +# +# 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. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +#-- + +# Makefile.am -- Process this file with automake to produce Makefile.in + +USER_DIR = $(top_srcdir) +MTCR_DIR = $(USER_DIR)/include/mtcr_ul +INCLUDES = -I. -I../common -I$(MTCR_DIR) -I.. -I$(USER_DIR)/mtcr_ul + +AM_CFLAGS = -W -Wall -Werror -g -MP -MD $(COMPILER_FPIC) +noinst_LIBRARIES = libtools_res_mgmt.a + +libtools_res_mgmt_a_SOURCES = tools_res_mgmt.c + diff --git a/tools_res_mgmt/tools_res_mgmt.c b/tools_res_mgmt/tools_res_mgmt.c new file mode 100644 index 0000000..60fe44f --- /dev/null +++ b/tools_res_mgmt/tools_res_mgmt.c @@ -0,0 +1,372 @@ +/* + * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * 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. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include + +#include +#include +#include +#include +#include "tools_res_mgmt.h" + +#ifdef __WIN__ +#include +#define getpid() _getpid() +#endif + +#define VSEC_SEM_NUM 10 +#define HW_SEM_NUM VSEC_SEM_NUM + +/* + * Macros: + */ + +/* + * VSEC semaphore space macros + */ + +#define SET_SPACE_FOR_SEMAPHORE_ACCESS(mf) \ + if (mget_vsec_supp(mf)) { \ + mset_addr_space(mf, AS_SEMAPHORE); \ + } + +#define RESTORE_SPACE(mf) mset_addr_space(mf, AS_CR_SPACE) + +#define MWRITE4_SEMAPHORE(mf, offset, value, action_on_fail)\ + do {\ + SET_SPACE_FOR_SEMAPHORE_ACCESS(mf);\ + if (mwrite4(mf, offset, value) != 4) {\ + RESTORE_SPACE(mf);\ + action_on_fail;\ + }\ + RESTORE_SPACE(mf);\ + }while(0) + +#define MREAD4_SEMAPHORE(mf, offset, ptr, action_on_fail)\ + do {\ + SET_SPACE_FOR_SEMAPHORE_ACCESS(mf);\ + if (mread4(mf, offset, ptr) != 4) {\ + RESTORE_SPACE(mf);\ + action_on_fail;\ + }\ + RESTORE_SPACE(mf);\ + }while(0) + +/***********************/ + +static const char* status_to_str[] = +{ + "Ok", + "Resource is busy", + "Tools resource management interface not available", + "Device not supported", + "Resource not supported", + "CR-Space access error" +}; + +struct device_sem_info +{ + dm_dev_id_t dev_id; + u_int32_t hw_sem_addr[HW_SEM_NUM]; // if semaphore entry supported: value != 0 , main semaphore is at [0] + int vsec_sem_supported; +}; + +static u_int32_t g_vsec_sem_addr[VSEC_SEM_NUM] = {0x0, 0x10}; + +#define HW_SEM_ADDR_MASK 0xf + +static struct device_sem_info g_dev_sem_info_db[] = { + { + DeviceConnectX, // dev_id + {0xf03bc}, // hw_sem_addr + 0, // vsec_sem_supported + }, + { + DeviceConnectX2, // dev_id + {0xf03bc}, // hw_sem_addr + 0, // vsec_sem_supported + }, + { + DeviceConnectX3, // dev_id + {0xf03bc, 0xf03a0}, // hw_sem_addr + 0, // vsec_sem_supported + }, + { + DeviceConnectX3Pro, // dev_id + {0xf03bc, 0xf03a0}, // hw_sem_addr + 0, // vsec_sem_supported + }, + { + DeviceInfiniScaleIV, // dev_id + {0}, // hw_sem_addr + 0, // vsec_sem_supported + }, + { + DeviceSwitchX, // dev_id + {0}, // hw_sem_addr + 0, // vsec_sem_supported + }, + { + DeviceConnectIB, // dev_id + {0xe27f8}, // hw_sem_addr + 1, // vsec_sem_supported + }, + { + DeviceConnectX4, // dev_id + {0xe250c}, // hw_sem_addr + 1, // vsec_sem_supported + }, + { + DeviceSwitchIB, // dev_id + {0xa24f8}, // hw_sem_addr + 0, // vsec_sem_supported + }, + { + DeviceSwitchEN, // dev_id + {0xa24f8}, // hw_sem_addr + 0, // vsec_sem_supported + }, + { + DeviceConnectX4LX, // dev_id + {0xe250c}, // hw_sem_addr + 1, // vsec_sem_supported + }, +}; + +/************************************ + * Function: lock_hw_semaphore + ************************************/ +static trm_sts lock_hw_semaphore(mfile* mf, u_int32_t addr, unsigned int max_retries) +{ + u_int32_t val; + unsigned int cnt = 0; + int rc; + + while (((rc = mread4(mf, addr, &val)) == 4) && val == 1 && cnt < max_retries) { + cnt ++; + msleep(((rand() % 5) + 1)); + } + + if (rc != 4) { + return TRM_STS_CR_ACCESS_ERR; + } else if (val == 0) { + return TRM_STS_OK; + } else { + return TRM_STS_RES_BUSY; + } +} + +/************************************ + * Function: unlock_hw_semaphore + ************************************/ +static trm_sts unlock_hw_semaphore(mfile* mf, u_int32_t addr) +{ + int rc = mwrite4(mf, addr, 0) == 4 ? TRM_STS_OK : TRM_STS_CR_ACCESS_ERR; + // give up the rest of the time slice + msleep(0); + return rc; +} + +/************************************ + * Function: lock_vsec_semaphore() + ************************************/ +static trm_sts lock_vsec_semaphore(mfile* mf, u_int32_t addr, unsigned int max_retries) +{ + static u_int32_t pid = 0; + u_int32_t read_val; + unsigned cnt = 0; + + if (!pid) { + pid = getpid(); + } + do { // loop while the semaphore is taken by someone else + if (cnt++ > max_retries) { + return TRM_STS_RES_BUSY; + } + //write pid to semaphore + MWRITE4_SEMAPHORE(mf, addr, pid, return TRM_STS_CR_ACCESS_ERR); + // Read back + MREAD4_SEMAPHORE(mf, addr, &read_val, return TRM_STS_CR_ACCESS_ERR); + if (read_val == pid) + break; + msleep(((rand() % 5) + 1)); + } while (read_val != pid); + return TRM_STS_OK; +} + +/************************************ + * Function: unlock_vsec_semaphore() + ************************************/ +static trm_sts unlock_vsec_semaphore(mfile* mf, u_int32_t addr) +{ + MWRITE4_SEMAPHORE(mf, addr, 0, return TRM_STS_CR_ACCESS_ERR); + return TRM_STS_OK; +} + +/************************************ + * Function: get_device_sem_info + ************************************/ +static struct device_sem_info* get_device_sem_info(dm_dev_id_t dev_id) +{ + size_t i; + for (i = 0; i < sizeof(g_dev_sem_info_db)/sizeof(g_dev_sem_info_db[0]); i++) { + if (g_dev_sem_info_db[i].dev_id == dev_id) { + return &g_dev_sem_info_db[i]; + } + } + + return NULL; +} + +/************************************ + * Function: trm_lock + ************************************/ +trm_sts trm_lock(mfile* mf, trm_resourse res, unsigned int max_retries) +{ + dm_dev_id_t dev_id; + u_int32_t hw_dev_id; + u_int32_t chip_rev; + struct device_sem_info* dev_sem_info; + + if (dm_get_device_id(mf, &dev_id, &hw_dev_id, &chip_rev)) { + return TRM_STS_CR_ACCESS_ERR; + } + + dev_sem_info = get_device_sem_info(dev_id); + + // Not supported device + if (!dev_sem_info) { + return TRM_STS_DEV_NOT_SUPPORTED; + } + + // lock resource on appropriate ifc if supported + switch ((int)res) { + case TRM_RES_ICMD: + if (dev_sem_info->vsec_sem_supported && mget_vsec_supp(mf)) { + return lock_vsec_semaphore(mf, g_vsec_sem_addr[TRM_RES_ICMD], max_retries); + } else if (dev_sem_info->hw_sem_addr[TRM_RES_MAIN_SEM & HW_SEM_ADDR_MASK]){ // lock hw semaphore + return lock_hw_semaphore(mf, dev_sem_info->hw_sem_addr[TRM_RES_MAIN_SEM & HW_SEM_ADDR_MASK], max_retries); + } + break; + case TRM_RES_FLASH_PROGRAMING: + if (dev_sem_info->vsec_sem_supported && mget_vsec_supp(mf)) { + return lock_vsec_semaphore(mf, g_vsec_sem_addr[TRM_RES_FLASH_PROGRAMING], max_retries); + } + break; + case TRM_RES_HCR_FLASH_PROGRAMING: + if (dev_sem_info->hw_sem_addr[TRM_RES_HCR_FLASH_PROGRAMING & HW_SEM_ADDR_MASK]){ // lock hw semaphore + return lock_hw_semaphore(mf, dev_sem_info->hw_sem_addr[TRM_RES_HCR_FLASH_PROGRAMING & HW_SEM_ADDR_MASK], max_retries); + } + break; + case TRM_RES_HW_TRACER: + if (dev_sem_info->hw_sem_addr[TRM_RES_HW_TRACER & HW_SEM_ADDR_MASK]){ // lock hw semaphore + return lock_hw_semaphore(mf, dev_sem_info->hw_sem_addr[TRM_RES_HW_TRACER & HW_SEM_ADDR_MASK], max_retries); + } + break; + default: + break; + } + return TRM_STS_RES_NOT_SUPPORTED; +} + +/************************************ + * Function: trm_try_lock + ************************************/ +trm_sts trm_try_lock(mfile* mf, trm_resourse res) +{ + return trm_lock(mf, res, 1); +} + +/************************************ + * Function: trm_unlock + ************************************/ +trm_sts trm_unlock(mfile* mf, trm_resourse res) +{ + dm_dev_id_t dev_id; + u_int32_t hw_dev_id; + u_int32_t chip_rev; + struct device_sem_info* dev_sem_info; + + if (dm_get_device_id(mf, &dev_id, &hw_dev_id, &chip_rev)) { + return TRM_STS_CR_ACCESS_ERR; + } + + dev_sem_info = get_device_sem_info(dev_id); + + // Not supported device + if (!dev_sem_info) { + return TRM_STS_DEV_NOT_SUPPORTED; + } + + // lock resource on appropriate ifc if supported + switch ((int)res) { + case TRM_RES_ICMD: + if (dev_sem_info->vsec_sem_supported && mget_vsec_supp(mf)) { + return unlock_vsec_semaphore(mf, g_vsec_sem_addr[TRM_RES_ICMD]); + } else if (dev_sem_info->hw_sem_addr[TRM_RES_MAIN_SEM & HW_SEM_ADDR_MASK]){ // lock hw semaphore + return unlock_hw_semaphore(mf, dev_sem_info->hw_sem_addr[TRM_RES_MAIN_SEM & HW_SEM_ADDR_MASK]); + } + break; + case TRM_RES_FLASH_PROGRAMING: + if (dev_sem_info->vsec_sem_supported && mget_vsec_supp(mf)) { + return unlock_vsec_semaphore(mf, g_vsec_sem_addr[TRM_RES_FLASH_PROGRAMING]); + } + break; + case TRM_RES_HCR_FLASH_PROGRAMING: + if (dev_sem_info->hw_sem_addr[TRM_RES_HCR_FLASH_PROGRAMING & HW_SEM_ADDR_MASK]){ // lock hw semaphore + return unlock_hw_semaphore(mf, dev_sem_info->hw_sem_addr[TRM_RES_HCR_FLASH_PROGRAMING & HW_SEM_ADDR_MASK]); + } + break; + case TRM_RES_HW_TRACER: + if (dev_sem_info->hw_sem_addr[TRM_RES_HW_TRACER & HW_SEM_ADDR_MASK]){ // lock hw semaphore + return unlock_hw_semaphore(mf, dev_sem_info->hw_sem_addr[TRM_RES_HW_TRACER & HW_SEM_ADDR_MASK]); + } + break; + default: + break; + } + return TRM_STS_RES_NOT_SUPPORTED; +} + +/************************************ + * Function: trm_sts2str + ************************************/ +const char* trm_sts2str(trm_sts status) +{ + size_t num_of_sts = sizeof(status_to_str)/sizeof(status_to_str[0]); + + if ((size_t)status >= num_of_sts) { + return "Unknown status code"; + } + + return status_to_str[status]; +} diff --git a/tools_res_mgmt/tools_res_mgmt.h b/tools_res_mgmt/tools_res_mgmt.h new file mode 100644 index 0000000..caed2b7 --- /dev/null +++ b/tools_res_mgmt/tools_res_mgmt.h @@ -0,0 +1,98 @@ +/* + * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * 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. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#ifndef TOOLS_RESOURCE_MGMT_H +#define TOOLS_RESOURCE_MGMT_H + +#include +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + TRM_STS_OK = 0, + TRM_STS_RES_BUSY, + TRM_STS_IFC_NA, + TRM_STS_DEV_NOT_SUPPORTED, + TRM_STS_RES_NOT_SUPPORTED, + TRM_STS_CR_ACCESS_ERR +} trm_sts; + +typedef enum { + // vsec semaphores + TRM_RES_ICMD = 0x0, + TRM_RES_FLASH_PROGRAMING = 0x1, + // hw semaphores + TRM_RES_MAIN_SEM = 0x10, + TRM_RES_HW_TRACER = TRM_RES_MAIN_SEM, + TRM_RES_TOOLS_HCR = TRM_RES_MAIN_SEM, + TRM_RES_HCR_FLASH_PROGRAMING = 0x11, + TRM_RES_ALL = 0xffff, +} trm_resourse; + +/* + * Lock tools resource + * Parameter (mf) - an opened mst device handler + * Parameter (res) - resource to acquire. + * Parameter (max_retry) - max retry count before declaring resource busy. + * Return TOOLS_STS_OK on success of locking all the desired resources, otherwise any other error code. + */ +trm_sts trm_lock(mfile* mf, trm_resourse res, unsigned int max_retry); + +/* + * Try to lock tools resource (returns immediately if resource busy) + * Parameter (mf) - an opened mst device handler + * Parameter (res) - resource to acquire. + * Return TOOLS_STS_OK on success of locking all the desired resources, otherwise any other error code. + */ +trm_sts trm_try_lock(mfile* mf, trm_resourse res); + +/* + * Unlock tools resource + * Parameter (mf) - an opened mst device handler + * Parameter (res) - resource to release. + * Return TOOLS_STS_OK if all given resources were unlocked successfully. + */ +trm_sts trm_unlock(mfile* mf, trm_resourse res); + +/* + * Translate tools_sem_mgmt_sts status code to a human readable string. + * Parameter (status) - status code to translate. + * Return descriptive string. + */ +const char* trm_sts2str(trm_sts status); + +#ifdef __cplusplus +} +#endif + +#endif // TOOLS_RESOURCE_MGMT_H -- 2.41.0