diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-10-09 22:42:09 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-10-10 09:06:58 +0200 |
commit | bceabc95c1c85d793200446fa85f1ddc6313ea29 (patch) | |
tree | 973c8bd8deca9fd69913f2895cc91e0e6114d46c /freebsd/sys/dev/bce | |
parent | Add FreeBSD sources as a submodule (diff) | |
download | rtems-libbsd-bceabc95c1c85d793200446fa85f1ddc6313ea29.tar.bz2 |
Move files to match FreeBSD layout
Diffstat (limited to 'freebsd/sys/dev/bce')
-rw-r--r-- | freebsd/sys/dev/bce/if_bce.c | 10847 | ||||
-rw-r--r-- | freebsd/sys/dev/bce/if_bcefw.h | 14594 | ||||
-rw-r--r-- | freebsd/sys/dev/bce/if_bcereg.h | 6796 |
3 files changed, 32237 insertions, 0 deletions
diff --git a/freebsd/sys/dev/bce/if_bce.c b/freebsd/sys/dev/bce/if_bce.c new file mode 100644 index 00000000..646e6cbf --- /dev/null +++ b/freebsd/sys/dev/bce/if_bce.c @@ -0,0 +1,10847 @@ +#include <freebsd/machine/rtems-bsd-config.h> + +/*- + * Copyright (c) 2006-2010 Broadcom Corporation + * David Christensen <davidch@broadcom.com>. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * 3. Neither the name of Broadcom Corporation nor the name of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written consent. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include <freebsd/sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +/* + * The following controllers are supported by this driver: + * BCM5706C A2, A3 + * BCM5706S A2, A3 + * BCM5708C B1, B2 + * BCM5708S B1, B2 + * BCM5709C A1, C0 + * BCM5709S A1, C0 + * BCM5716C C0 + * BCM5716S C0 + * + * The following controllers are not supported by this driver: + * BCM5706C A0, A1 (pre-production) + * BCM5706S A0, A1 (pre-production) + * BCM5708C A0, B0 (pre-production) + * BCM5708S A0, B0 (pre-production) + * BCM5709C A0 B0, B1, B2 (pre-production) + * BCM5709S A0, B0, B1, B2 (pre-production) + */ + +#include <freebsd/local/opt_bce.h> + +#include <freebsd/dev/bce/if_bcereg.h> +#include <freebsd/dev/bce/if_bcefw.h> + +/****************************************************************************/ +/* BCE Debug Options */ +/****************************************************************************/ +#ifdef BCE_DEBUG + u32 bce_debug = BCE_WARN; + + /* 0 = Never */ + /* 1 = 1 in 2,147,483,648 */ + /* 256 = 1 in 8,388,608 */ + /* 2048 = 1 in 1,048,576 */ + /* 65536 = 1 in 32,768 */ + /* 1048576 = 1 in 2,048 */ + /* 268435456 = 1 in 8 */ + /* 536870912 = 1 in 4 */ + /* 1073741824 = 1 in 2 */ + + /* Controls how often the l2_fhdr frame error check will fail. */ + int l2fhdr_error_sim_control = 0; + + /* Controls how often the unexpected attention check will fail. */ + int unexpected_attention_sim_control = 0; + + /* Controls how often to simulate an mbuf allocation failure. */ + int mbuf_alloc_failed_sim_control = 0; + + /* Controls how often to simulate a DMA mapping failure. */ + int dma_map_addr_failed_sim_control = 0; + + /* Controls how often to simulate a bootcode failure. */ + int bootcode_running_failure_sim_control = 0; +#endif + +/****************************************************************************/ +/* BCE Build Time Options */ +/****************************************************************************/ +/* #define BCE_NVRAM_WRITE_SUPPORT 1 */ + + +/****************************************************************************/ +/* PCI Device ID Table */ +/* */ +/* Used by bce_probe() to identify the devices supported by this driver. */ +/****************************************************************************/ +#define BCE_DEVDESC_MAX 64 + +static struct bce_type bce_devs[] = { + /* BCM5706C Controllers and OEM boards. */ + { BRCM_VENDORID, BRCM_DEVICEID_BCM5706, HP_VENDORID, 0x3101, + "HP NC370T Multifunction Gigabit Server Adapter" }, + { BRCM_VENDORID, BRCM_DEVICEID_BCM5706, HP_VENDORID, 0x3106, + "HP NC370i Multifunction Gigabit Server Adapter" }, + { BRCM_VENDORID, BRCM_DEVICEID_BCM5706, HP_VENDORID, 0x3070, + "HP NC380T PCIe DP Multifunc Gig Server Adapter" }, + { BRCM_VENDORID, BRCM_DEVICEID_BCM5706, HP_VENDORID, 0x1709, + "HP NC371i Multifunction Gigabit Server Adapter" }, + { BRCM_VENDORID, BRCM_DEVICEID_BCM5706, PCI_ANY_ID, PCI_ANY_ID, + "Broadcom NetXtreme II BCM5706 1000Base-T" }, + + /* BCM5706S controllers and OEM boards. */ + { BRCM_VENDORID, BRCM_DEVICEID_BCM5706S, HP_VENDORID, 0x3102, + "HP NC370F Multifunction Gigabit Server Adapter" }, + { BRCM_VENDORID, BRCM_DEVICEID_BCM5706S, PCI_ANY_ID, PCI_ANY_ID, + "Broadcom NetXtreme II BCM5706 1000Base-SX" }, + + /* BCM5708C controllers and OEM boards. */ + { BRCM_VENDORID, BRCM_DEVICEID_BCM5708, HP_VENDORID, 0x7037, + "HP NC373T PCIe Multifunction Gig Server Adapter" }, + { BRCM_VENDORID, BRCM_DEVICEID_BCM5708, HP_VENDORID, 0x7038, + "HP NC373i Multifunction Gigabit Server Adapter" }, + { BRCM_VENDORID, BRCM_DEVICEID_BCM5708, HP_VENDORID, 0x7045, + "HP NC374m PCIe Multifunction Adapter" }, + { BRCM_VENDORID, BRCM_DEVICEID_BCM5708, PCI_ANY_ID, PCI_ANY_ID, + "Broadcom NetXtreme II BCM5708 1000Base-T" }, + + /* BCM5708S controllers and OEM boards. */ + { BRCM_VENDORID, BRCM_DEVICEID_BCM5708S, HP_VENDORID, 0x1706, + "HP NC373m Multifunction Gigabit Server Adapter" }, + { BRCM_VENDORID, BRCM_DEVICEID_BCM5708S, HP_VENDORID, 0x703b, + "HP NC373i Multifunction Gigabit Server Adapter" }, + { BRCM_VENDORID, BRCM_DEVICEID_BCM5708S, HP_VENDORID, 0x703d, + "HP NC373F PCIe Multifunc Giga Server Adapter" }, + { BRCM_VENDORID, BRCM_DEVICEID_BCM5708S, PCI_ANY_ID, PCI_ANY_ID, + "Broadcom NetXtreme II BCM5708 1000Base-SX" }, + + /* BCM5709C controllers and OEM boards. */ + { BRCM_VENDORID, BRCM_DEVICEID_BCM5709, HP_VENDORID, 0x7055, + "HP NC382i DP Multifunction Gigabit Server Adapter" }, + { BRCM_VENDORID, BRCM_DEVICEID_BCM5709, HP_VENDORID, 0x7059, + "HP NC382T PCIe DP Multifunction Gigabit Server Adapter" }, + { BRCM_VENDORID, BRCM_DEVICEID_BCM5709, PCI_ANY_ID, PCI_ANY_ID, + "Broadcom NetXtreme II BCM5709 1000Base-T" }, + + /* BCM5709S controllers and OEM boards. */ + { BRCM_VENDORID, BRCM_DEVICEID_BCM5709S, HP_VENDORID, 0x171d, + "HP NC382m DP 1GbE Multifunction BL-c Adapter" }, + { BRCM_VENDORID, BRCM_DEVICEID_BCM5709S, HP_VENDORID, 0x7056, + "HP NC382i DP Multifunction Gigabit Server Adapter" }, + { BRCM_VENDORID, BRCM_DEVICEID_BCM5709S, PCI_ANY_ID, PCI_ANY_ID, + "Broadcom NetXtreme II BCM5709 1000Base-SX" }, + + /* BCM5716 controllers and OEM boards. */ + { BRCM_VENDORID, BRCM_DEVICEID_BCM5716, PCI_ANY_ID, PCI_ANY_ID, + "Broadcom NetXtreme II BCM5716 1000Base-T" }, + + { 0, 0, 0, 0, NULL } +}; + + +/****************************************************************************/ +/* Supported Flash NVRAM device data. */ +/****************************************************************************/ +static struct flash_spec flash_table[] = +{ +#define BUFFERED_FLAGS (BCE_NV_BUFFERED | BCE_NV_TRANSLATE) +#define NONBUFFERED_FLAGS (BCE_NV_WREN) + + /* Slow EEPROM */ + {0x00000000, 0x40830380, 0x009f0081, 0xa184a053, 0xaf000400, + BUFFERED_FLAGS, SEEPROM_PAGE_BITS, SEEPROM_PAGE_SIZE, + SEEPROM_BYTE_ADDR_MASK, SEEPROM_TOTAL_SIZE, + "EEPROM - slow"}, + /* Expansion entry 0001 */ + {0x08000002, 0x4b808201, 0x00050081, 0x03840253, 0xaf020406, + NONBUFFERED_FLAGS, SAIFUN_FLASH_PAGE_BITS, SAIFUN_FLASH_PAGE_SIZE, + SAIFUN_FLASH_BYTE_ADDR_MASK, 0, + "Entry 0001"}, + /* Saifun SA25F010 (non-buffered flash) */ + /* strap, cfg1, & write1 need updates */ + {0x04000001, 0x47808201, 0x00050081, 0x03840253, 0xaf020406, + NONBUFFERED_FLAGS, SAIFUN_FLASH_PAGE_BITS, SAIFUN_FLASH_PAGE_SIZE, + SAIFUN_FLASH_BYTE_ADDR_MASK, SAIFUN_FLASH_BASE_TOTAL_SIZE*2, + "Non-buffered flash (128kB)"}, + /* Saifun SA25F020 (non-buffered flash) */ + /* strap, cfg1, & write1 need updates */ + {0x0c000003, 0x4f808201, 0x00050081, 0x03840253, 0xaf020406, + NONBUFFERED_FLAGS, SAIFUN_FLASH_PAGE_BITS, SAIFUN_FLASH_PAGE_SIZE, + SAIFUN_FLASH_BYTE_ADDR_MASK, SAIFUN_FLASH_BASE_TOTAL_SIZE*4, + "Non-buffered flash (256kB)"}, + /* Expansion entry 0100 */ + {0x11000000, 0x53808201, 0x00050081, 0x03840253, 0xaf020406, + NONBUFFERED_FLAGS, SAIFUN_FLASH_PAGE_BITS, SAIFUN_FLASH_PAGE_SIZE, + SAIFUN_FLASH_BYTE_ADDR_MASK, 0, + "Entry 0100"}, + /* Entry 0101: ST M45PE10 (non-buffered flash, TetonII B0) */ + {0x19000002, 0x5b808201, 0x000500db, 0x03840253, 0xaf020406, + NONBUFFERED_FLAGS, ST_MICRO_FLASH_PAGE_BITS, ST_MICRO_FLASH_PAGE_SIZE, + ST_MICRO_FLASH_BYTE_ADDR_MASK, ST_MICRO_FLASH_BASE_TOTAL_SIZE*2, + "Entry 0101: ST M45PE10 (128kB non-bufferred)"}, + /* Entry 0110: ST M45PE20 (non-buffered flash)*/ + {0x15000001, 0x57808201, 0x000500db, 0x03840253, 0xaf020406, + NONBUFFERED_FLAGS, ST_MICRO_FLASH_PAGE_BITS, ST_MICRO_FLASH_PAGE_SIZE, + ST_MICRO_FLASH_BYTE_ADDR_MASK, ST_MICRO_FLASH_BASE_TOTAL_SIZE*4, + "Entry 0110: ST M45PE20 (256kB non-bufferred)"}, + /* Saifun SA25F005 (non-buffered flash) */ + /* strap, cfg1, & write1 need updates */ + {0x1d000003, 0x5f808201, 0x00050081, 0x03840253, 0xaf020406, + NONBUFFERED_FLAGS, SAIFUN_FLASH_PAGE_BITS, SAIFUN_FLASH_PAGE_SIZE, + SAIFUN_FLASH_BYTE_ADDR_MASK, SAIFUN_FLASH_BASE_TOTAL_SIZE, + "Non-buffered flash (64kB)"}, + /* Fast EEPROM */ + {0x22000000, 0x62808380, 0x009f0081, 0xa184a053, 0xaf000400, + BUFFERED_FLAGS, SEEPROM_PAGE_BITS, SEEPROM_PAGE_SIZE, + SEEPROM_BYTE_ADDR_MASK, SEEPROM_TOTAL_SIZE, + "EEPROM - fast"}, + /* Expansion entry 1001 */ + {0x2a000002, 0x6b808201, 0x00050081, 0x03840253, 0xaf020406, + NONBUFFERED_FLAGS, SAIFUN_FLASH_PAGE_BITS, SAIFUN_FLASH_PAGE_SIZE, + SAIFUN_FLASH_BYTE_ADDR_MASK, 0, + "Entry 1001"}, + /* Expansion entry 1010 */ + {0x26000001, 0x67808201, 0x00050081, 0x03840253, 0xaf020406, + NONBUFFERED_FLAGS, SAIFUN_FLASH_PAGE_BITS, SAIFUN_FLASH_PAGE_SIZE, + SAIFUN_FLASH_BYTE_ADDR_MASK, 0, + "Entry 1010"}, + /* ATMEL AT45DB011B (buffered flash) */ + {0x2e000003, 0x6e808273, 0x00570081, 0x68848353, 0xaf000400, + BUFFERED_FLAGS, BUFFERED_FLASH_PAGE_BITS, BUFFERED_FLASH_PAGE_SIZE, + BUFFERED_FLASH_BYTE_ADDR_MASK, BUFFERED_FLASH_TOTAL_SIZE, + "Buffered flash (128kB)"}, + /* Expansion entry 1100 */ + {0x33000000, 0x73808201, 0x00050081, 0x03840253, 0xaf020406, + NONBUFFERED_FLAGS, SAIFUN_FLASH_PAGE_BITS, SAIFUN_FLASH_PAGE_SIZE, + SAIFUN_FLASH_BYTE_ADDR_MASK, 0, + "Entry 1100"}, + /* Expansion entry 1101 */ + {0x3b000002, 0x7b808201, 0x00050081, 0x03840253, 0xaf020406, + NONBUFFERED_FLAGS, SAIFUN_FLASH_PAGE_BITS, SAIFUN_FLASH_PAGE_SIZE, + SAIFUN_FLASH_BYTE_ADDR_MASK, 0, + "Entry 1101"}, + /* Ateml Expansion entry 1110 */ + {0x37000001, 0x76808273, 0x00570081, 0x68848353, 0xaf000400, + BUFFERED_FLAGS, BUFFERED_FLASH_PAGE_BITS, BUFFERED_FLASH_PAGE_SIZE, + BUFFERED_FLASH_BYTE_ADDR_MASK, 0, + "Entry 1110 (Atmel)"}, + /* ATMEL AT45DB021B (buffered flash) */ + {0x3f000003, 0x7e808273, 0x00570081, 0x68848353, 0xaf000400, + BUFFERED_FLAGS, BUFFERED_FLASH_PAGE_BITS, BUFFERED_FLASH_PAGE_SIZE, + BUFFERED_FLASH_BYTE_ADDR_MASK, BUFFERED_FLASH_TOTAL_SIZE*2, + "Buffered flash (256kB)"}, +}; + +/* + * The BCM5709 controllers transparently handle the + * differences between Atmel 264 byte pages and all + * flash devices which use 256 byte pages, so no + * logical-to-physical mapping is required in the + * driver. + */ +static struct flash_spec flash_5709 = { + .flags = BCE_NV_BUFFERED, + .page_bits = BCM5709_FLASH_PAGE_BITS, + .page_size = BCM5709_FLASH_PAGE_SIZE, + .addr_mask = BCM5709_FLASH_BYTE_ADDR_MASK, + .total_size = BUFFERED_FLASH_TOTAL_SIZE * 2, + .name = "5709/5716 buffered flash (256kB)", +}; + + +/****************************************************************************/ +/* FreeBSD device entry points. */ +/****************************************************************************/ +static int bce_probe (device_t); +static int bce_attach (device_t); +static int bce_detach (device_t); +static int bce_shutdown (device_t); + + +/****************************************************************************/ +/* BCE Debug Data Structure Dump Routines */ +/****************************************************************************/ +#ifdef BCE_DEBUG +static u32 bce_reg_rd (struct bce_softc *, u32); +static void bce_reg_wr (struct bce_softc *, u32, u32); +static void bce_reg_wr16 (struct bce_softc *, u32, u16); +static u32 bce_ctx_rd (struct bce_softc *, u32, u32); +static void bce_dump_enet (struct bce_softc *, struct mbuf *); +static void bce_dump_mbuf (struct bce_softc *, struct mbuf *); +static void bce_dump_tx_mbuf_chain (struct bce_softc *, u16, int); +static void bce_dump_rx_mbuf_chain (struct bce_softc *, u16, int); +#ifdef BCE_JUMBO_HDRSPLIT +static void bce_dump_pg_mbuf_chain (struct bce_softc *, u16, int); +#endif +static void bce_dump_txbd (struct bce_softc *, + int, struct tx_bd *); +static void bce_dump_rxbd (struct bce_softc *, + int, struct rx_bd *); +#ifdef BCE_JUMBO_HDRSPLIT +static void bce_dump_pgbd (struct bce_softc *, + int, struct rx_bd *); +#endif +static void bce_dump_l2fhdr (struct bce_softc *, + int, struct l2_fhdr *); +static void bce_dump_ctx (struct bce_softc *, u16); +static void bce_dump_ftqs (struct bce_softc *); +static void bce_dump_tx_chain (struct bce_softc *, u16, int); +static void bce_dump_rx_bd_chain (struct bce_softc *, u16, int); +#ifdef BCE_JUMBO_HDRSPLIT +static void bce_dump_pg_chain (struct bce_softc *, u16, int); +#endif +static void bce_dump_status_block (struct bce_softc *); +static void bce_dump_stats_block (struct bce_softc *); +static void bce_dump_driver_state (struct bce_softc *); +static void bce_dump_hw_state (struct bce_softc *); +static void bce_dump_mq_regs (struct bce_softc *); +static void bce_dump_bc_state (struct bce_softc *); +static void bce_dump_txp_state (struct bce_softc *, int); +static void bce_dump_rxp_state (struct bce_softc *, int); +static void bce_dump_tpat_state (struct bce_softc *, int); +static void bce_dump_cp_state (struct bce_softc *, int); +static void bce_dump_com_state (struct bce_softc *, int); +static void bce_dump_rv2p_state (struct bce_softc *); +static void bce_breakpoint (struct bce_softc *); +#endif + + +/****************************************************************************/ +/* BCE Register/Memory Access Routines */ +/****************************************************************************/ +static u32 bce_reg_rd_ind (struct bce_softc *, u32); +static void bce_reg_wr_ind (struct bce_softc *, u32, u32); +static void bce_shmem_wr (struct bce_softc *, u32, u32); +static u32 bce_shmem_rd (struct bce_softc *, u32); +static void bce_ctx_wr (struct bce_softc *, u32, u32, u32); +static int bce_miibus_read_reg (device_t, int, int); +static int bce_miibus_write_reg (device_t, int, int, int); +static void bce_miibus_statchg (device_t); + + +/****************************************************************************/ +/* BCE NVRAM Access Routines */ +/****************************************************************************/ +static int bce_acquire_nvram_lock (struct bce_softc *); +static int bce_release_nvram_lock (struct bce_softc *); +static void bce_enable_nvram_access (struct bce_softc *); +static void bce_disable_nvram_access (struct bce_softc *); +static int bce_nvram_read_dword (struct bce_softc *, u32, u8 *, u32); +static int bce_init_nvram (struct bce_softc *); +static int bce_nvram_read (struct bce_softc *, u32, u8 *, int); +static int bce_nvram_test (struct bce_softc *); +#ifdef BCE_NVRAM_WRITE_SUPPORT +static int bce_enable_nvram_write (struct bce_softc *); +static void bce_disable_nvram_write (struct bce_softc *); +static int bce_nvram_erase_page (struct bce_softc *, u32); +static int bce_nvram_write_dword (struct bce_softc *, u32, u8 *, u32); +static int bce_nvram_write (struct bce_softc *, u32, u8 *, int); +#endif + +/****************************************************************************/ +/* */ +/****************************************************************************/ +static void bce_get_media (struct bce_softc *); +static void bce_init_media (struct bce_softc *); +static void bce_dma_map_addr (void *, + bus_dma_segment_t *, int, int); +static int bce_dma_alloc (device_t); +static void bce_dma_free (struct bce_softc *); +static void bce_release_resources (struct bce_softc *); + +/****************************************************************************/ +/* BCE Firmware Synchronization and Load */ +/****************************************************************************/ +static int bce_fw_sync (struct bce_softc *, u32); +static void bce_load_rv2p_fw (struct bce_softc *, u32 *, u32, u32); +static void bce_load_cpu_fw (struct bce_softc *, + struct cpu_reg *, struct fw_info *); +static void bce_start_cpu (struct bce_softc *, struct cpu_reg *); +static void bce_halt_cpu (struct bce_softc *, struct cpu_reg *); +static void bce_start_rxp_cpu (struct bce_softc *); +static void bce_init_rxp_cpu (struct bce_softc *); +static void bce_init_txp_cpu (struct bce_softc *); +static void bce_init_tpat_cpu (struct bce_softc *); +static void bce_init_cp_cpu (struct bce_softc *); +static void bce_init_com_cpu (struct bce_softc *); +static void bce_init_cpus (struct bce_softc *); + +static void bce_print_adapter_info (struct bce_softc *); +static void bce_probe_pci_caps (device_t, struct bce_softc *); +static void bce_stop (struct bce_softc *); +static int bce_reset (struct bce_softc *, u32); +static int bce_chipinit (struct bce_softc *); +static int bce_blockinit (struct bce_softc *); + +static int bce_init_tx_chain (struct bce_softc *); +static void bce_free_tx_chain (struct bce_softc *); + +static int bce_get_rx_buf (struct bce_softc *, + struct mbuf *, u16 *, u16 *, u32 *); +static int bce_init_rx_chain (struct bce_softc *); +static void bce_fill_rx_chain (struct bce_softc *); +static void bce_free_rx_chain (struct bce_softc *); + +#ifdef BCE_JUMBO_HDRSPLIT +static int bce_get_pg_buf (struct bce_softc *, + struct mbuf *, u16 *, u16 *); +static int bce_init_pg_chain (struct bce_softc *); +static void bce_fill_pg_chain (struct bce_softc *); +static void bce_free_pg_chain (struct bce_softc *); +#endif + +static struct mbuf *bce_tso_setup (struct bce_softc *, + struct mbuf **, u16 *); +static int bce_tx_encap (struct bce_softc *, struct mbuf **); +static void bce_start_locked (struct ifnet *); +static void bce_start (struct ifnet *); +static int bce_ioctl (struct ifnet *, u_long, caddr_t); +static void bce_watchdog (struct bce_softc *); +static int bce_ifmedia_upd (struct ifnet *); +static int bce_ifmedia_upd_locked (struct ifnet *); +static void bce_ifmedia_sts (struct ifnet *, struct ifmediareq *); +static void bce_init_locked (struct bce_softc *); +static void bce_init (void *); +static void bce_mgmt_init_locked (struct bce_softc *sc); + +static int bce_init_ctx (struct bce_softc *); +static void bce_get_mac_addr (struct bce_softc *); +static void bce_set_mac_addr (struct bce_softc *); +static void bce_phy_intr (struct bce_softc *); +static inline u16 bce_get_hw_rx_cons (struct bce_softc *); +static void bce_rx_intr (struct bce_softc *); +static void bce_tx_intr (struct bce_softc *); +static void bce_disable_intr (struct bce_softc *); +static void bce_enable_intr (struct bce_softc *, int); + +static void bce_intr (void *); +static void bce_set_rx_mode (struct bce_softc *); +static void bce_stats_update (struct bce_softc *); +static void bce_tick (void *); +static void bce_pulse (void *); +static void bce_add_sysctls (struct bce_softc *); + + +/****************************************************************************/ +/* FreeBSD device dispatch table. */ +/****************************************************************************/ +static device_method_t bce_methods[] = { + /* Device interface (device_if.h) */ + DEVMETHOD(device_probe, bce_probe), + DEVMETHOD(device_attach, bce_attach), + DEVMETHOD(device_detach, bce_detach), + DEVMETHOD(device_shutdown, bce_shutdown), +/* Supported by device interface but not used here. */ +/* DEVMETHOD(device_identify, bce_identify), */ +/* DEVMETHOD(device_suspend, bce_suspend), */ +/* DEVMETHOD(device_resume, bce_resume), */ +/* DEVMETHOD(device_quiesce, bce_quiesce), */ + + /* Bus interface (bus_if.h) */ + DEVMETHOD(bus_print_child, bus_generic_print_child), + DEVMETHOD(bus_driver_added, bus_generic_driver_added), + + /* MII interface (miibus_if.h) */ + DEVMETHOD(miibus_readreg, bce_miibus_read_reg), + DEVMETHOD(miibus_writereg, bce_miibus_write_reg), + DEVMETHOD(miibus_statchg, bce_miibus_statchg), +/* Supported by MII interface but not used here. */ +/* DEVMETHOD(miibus_linkchg, bce_miibus_linkchg), */ +/* DEVMETHOD(miibus_mediainit, bce_miibus_mediainit), */ + + { 0, 0 } +}; + +static driver_t bce_driver = { + "bce", + bce_methods, + sizeof(struct bce_softc) +}; + +static devclass_t bce_devclass; + +MODULE_DEPEND(bce, pci, 1, 1, 1); +MODULE_DEPEND(bce, ether, 1, 1, 1); +MODULE_DEPEND(bce, miibus, 1, 1, 1); + +DRIVER_MODULE(bce, pci, bce_driver, bce_devclass, 0, 0); +DRIVER_MODULE(miibus, bce, miibus_driver, miibus_devclass, 0, 0); + + +/****************************************************************************/ +/* Tunable device values */ +/****************************************************************************/ +SYSCTL_NODE(_hw, OID_AUTO, bce, CTLFLAG_RD, 0, "bce driver parameters"); + +/* Allowable values are TRUE or FALSE */ +static int bce_tso_enable = TRUE; +TUNABLE_INT("hw.bce.tso_enable", &bce_tso_enable); +SYSCTL_UINT(_hw_bce, OID_AUTO, tso_enable, CTLFLAG_RDTUN, &bce_tso_enable, 0, +"TSO Enable/Disable"); + +/* Allowable values are 0 (IRQ), 1 (MSI/IRQ), and 2 (MSI-X/MSI/IRQ) */ +/* ToDo: Add MSI-X support. */ +static int bce_msi_enable = 1; +TUNABLE_INT("hw.bce.msi_enable", &bce_msi_enable); +SYSCTL_UINT(_hw_bce, OID_AUTO, msi_enable, CTLFLAG_RDTUN, &bce_msi_enable, 0, +"MSI-X|MSI|INTx selector"); + +/* ToDo: Add tunable to enable/disable strict MTU handling. */ +/* Currently allows "loose" RX MTU checking (i.e. sets the */ +/* H/W RX MTU to the size of the largest receive buffer, or */ +/* 2048 bytes). This will cause a UNH failure but is more */ +/* desireable from a functional perspective. */ + + +/****************************************************************************/ +/* Device probe function. */ +/* */ +/* Compares the device to the driver's list of supported devices and */ +/* reports back to the OS whether this is the right driver for the device. */ +/* */ +/* Returns: */ +/* BUS_PROBE_DEFAULT on success, positive value on failure. */ +/****************************************************************************/ +static int +bce_probe(device_t dev) +{ + struct bce_type *t; + struct bce_softc *sc; + char *descbuf; + u16 vid = 0, did = 0, svid = 0, sdid = 0; + + t = bce_devs; + + sc = device_get_softc(dev); + bzero(sc, sizeof(struct bce_softc)); + sc->bce_unit = device_get_unit(dev); + sc->bce_dev = dev; + + /* Get the data for the device to be probed. */ + vid = pci_get_vendor(dev); + did = pci_get_device(dev); + svid = pci_get_subvendor(dev); + sdid = pci_get_subdevice(dev); + + DBPRINT(sc, BCE_EXTREME_LOAD, + "%s(); VID = 0x%04X, DID = 0x%04X, SVID = 0x%04X, " + "SDID = 0x%04X\n", __FUNCTION__, vid, did, svid, sdid); + + /* Look through the list of known devices for a match. */ + while(t->bce_name != NULL) { + + if ((vid == t->bce_vid) && (did == t->bce_did) && + ((svid == t->bce_svid) || (t->bce_svid == PCI_ANY_ID)) && + ((sdid == t->bce_sdid) || (t->bce_sdid == PCI_ANY_ID))) { + + descbuf = malloc(BCE_DEVDESC_MAX, M_TEMP, M_NOWAIT); + + if (descbuf == NULL) + return(ENOMEM); + + /* Print out the device identity. */ + snprintf(descbuf, BCE_DEVDESC_MAX, "%s (%c%d)", + t->bce_name, (((pci_read_config(dev, + PCIR_REVID, 4) & 0xf0) >> 4) + 'A'), + (pci_read_config(dev, PCIR_REVID, 4) & 0xf)); + + device_set_desc_copy(dev, descbuf); + free(descbuf, M_TEMP); + return(BUS_PROBE_DEFAULT); + } + t++; + } + + return(ENXIO); +} + + +/****************************************************************************/ +/* PCI Capabilities Probe Function. */ +/* */ +/* Walks the PCI capabiites list for the device to find what features are */ +/* supported. */ +/* */ +/* Returns: */ +/* None. */ +/****************************************************************************/ +static void +bce_print_adapter_info(struct bce_softc *sc) +{ + int i = 0; + + DBENTER(BCE_VERBOSE_LOAD); + + if (bootverbose) { + BCE_PRINTF("ASIC (0x%08X); ", sc->bce_chipid); + printf("Rev (%c%d); ", ((BCE_CHIP_ID(sc) & 0xf000) >> + 12) + 'A', ((BCE_CHIP_ID(sc) & 0x0ff0) >> 4)); + + + /* Bus info. */ + if (sc->bce_flags & BCE_PCIE_FLAG) { + printf("Bus (PCIe x%d, ", sc->link_width); + switch (sc->link_speed) { + case 1: printf("2.5Gbps); "); break; + case 2: printf("5Gbps); "); break; + default: printf("Unknown link speed); "); + } + } else { + printf("Bus (PCI%s, %s, %dMHz); ", + ((sc->bce_flags & BCE_PCIX_FLAG) ? "-X" : ""), + ((sc->bce_flags & BCE_PCI_32BIT_FLAG) ? + "32-bit" : "64-bit"), sc->bus_speed_mhz); + } + + /* Firmware version and device features. */ + printf("B/C (%s); Flags (", sc->bce_bc_ver); + + #ifdef BCE_JUMBO_HDRSPLIT + printf("SPLT"); + i++; + #endif + + if (sc->bce_flags & BCE_USING_MSI_FLAG) { + if (i > 0) printf("|"); + printf("MSI"); i++; + } + + if (sc->bce_flags & BCE_USING_MSIX_FLAG) { + if (i > 0) printf("|"); + printf("MSI-X"); i++; + } + + if (sc->bce_phy_flags & BCE_PHY_2_5G_CAPABLE_FLAG) { + if (i > 0) printf("|"); + printf("2.5G"); i++; + } + + if (sc->bce_flags & BCE_MFW_ENABLE_FLAG) { + if (i > 0) printf("|"); + printf("MFW); MFW (%s)\n", sc->bce_mfw_ver); + } else { + printf(")\n"); + } + } + + DBEXIT(BCE_VERBOSE_LOAD); +} + + +/****************************************************************************/ +/* PCI Capabilities Probe Function. */ +/* */ +/* Walks the PCI capabiites list for the device to find what features are */ +/* supported. */ +/* */ +/* Returns: */ +/* None. */ +/****************************************************************************/ +static void +bce_probe_pci_caps(device_t dev, struct bce_softc *sc) +{ + u32 reg; + + DBENTER(BCE_VERBOSE_LOAD); + + /* Check if PCI-X capability is enabled. */ + if (pci_find_extcap(dev, PCIY_PCIX, ®) == 0) { + if (reg != 0) + sc->bce_cap_flags |= BCE_PCIX_CAPABLE_FLAG; + } + + /* Check if PCIe capability is enabled. */ + if (pci_find_extcap(dev, PCIY_EXPRESS, ®) == 0) { + if (reg != 0) { + u16 link_status = pci_read_config(dev, reg + 0x12, 2); + DBPRINT(sc, BCE_INFO_LOAD, "PCIe link_status = " + "0x%08X\n", link_status); + sc->link_speed = link_status & 0xf; + sc->link_width = (link_status >> 4) & 0x3f; + sc->bce_cap_flags |= BCE_PCIE_CAPABLE_FLAG; + sc->bce_flags |= BCE_PCIE_FLAG; + } + } + + /* Check if MSI capability is enabled. */ + if (pci_find_extcap(dev, PCIY_MSI, ®) == 0) { + if (reg != 0) + sc->bce_cap_flags |= BCE_MSI_CAPABLE_FLAG; + } + + /* Check if MSI-X capability is enabled. */ + if (pci_find_extcap(dev, PCIY_MSIX, ®) == 0) { + if (reg != 0) + sc->bce_cap_flags |= BCE_MSIX_CAPABLE_FLAG; + } + + DBEXIT(BCE_VERBOSE_LOAD); +} + + +/****************************************************************************/ +/* Device attach function. */ +/* */ +/* Allocates device resources, performs secondary chip identification, */ +/* resets and initializes the hardware, and initializes driver instance */ +/* variables. */ +/* */ +/* Returns: */ +/* 0 on success, positive value on failure. */ +/****************************************************************************/ +static int +bce_attach(device_t dev) +{ + struct bce_softc *sc; + struct ifnet *ifp; + u32 val; + int error, rid, rc = 0; + + sc = device_get_softc(dev); + sc->bce_dev = dev; + + DBENTER(BCE_VERBOSE_LOAD | BCE_VERBOSE_RESET); + + sc->bce_unit = device_get_unit(dev); + + /* Set initial device and PHY flags */ + sc->bce_flags = 0; + sc->bce_phy_flags = 0; + + pci_enable_busmaster(dev); + + /* Allocate PCI memory resources. */ + rid = PCIR_BAR(0); + sc->bce_res_mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, + &rid, RF_ACTIVE); + + if (sc->bce_res_mem == NULL) { + BCE_PRINTF("%s(%d): PCI memory allocation failed\n", + __FILE__, __LINE__); + rc = ENXIO; + goto bce_attach_fail; + } + + /* Get various resource handles. */ + sc->bce_btag = rman_get_bustag(sc->bce_res_mem); + sc->bce_bhandle = rman_get_bushandle(sc->bce_res_mem); + sc->bce_vhandle = (vm_offset_t) rman_get_virtual(sc->bce_res_mem); + + bce_probe_pci_caps(dev, sc); + + rid = 1; +#if 0 + /* Try allocating MSI-X interrupts. */ + if ((sc->bce_cap_flags & BCE_MSIX_CAPABLE_FLAG) && + (bce_msi_enable >= 2) && + ((sc->bce_res_irq = bus_alloc_resource_any(dev, SYS_RES_MEMORY, + &rid, RF_ACTIVE)) != NULL)) { + + msi_needed = sc->bce_msi_count = 1; + + if (((error = pci_alloc_msix(dev, &sc->bce_msi_count)) != 0) || + (sc->bce_msi_count != msi_needed)) { + BCE_PRINTF("%s(%d): MSI-X allocation failed! Requested = %d," + "Received = %d, error = %d\n", __FILE__, __LINE__, + msi_needed, sc->bce_msi_count, error); + sc->bce_msi_count = 0; + pci_release_msi(dev); + bus_release_resource(dev, SYS_RES_MEMORY, rid, + sc->bce_res_irq); + sc->bce_res_irq = NULL; + } else { + DBPRINT(sc, BCE_INFO_LOAD, "%s(): Using MSI-X interrupt.\n", + __FUNCTION__); + sc->bce_flags |= BCE_USING_MSIX_FLAG; + sc->bce_intr = bce_intr; + } + } +#endif + + /* Try allocating a MSI interrupt. */ + if ((sc->bce_cap_flags & BCE_MSI_CAPABLE_FLAG) && + (bce_msi_enable >= 1) && (sc->bce_msi_count == 0)) { + sc->bce_msi_count = 1; + if ((error = pci_alloc_msi(dev, &sc->bce_msi_count)) != 0) { + BCE_PRINTF("%s(%d): MSI allocation failed! " + "error = %d\n", __FILE__, __LINE__, error); + sc->bce_msi_count = 0; + pci_release_msi(dev); + } else { + DBPRINT(sc, BCE_INFO_LOAD, "%s(): Using MSI " + "interrupt.\n", __FUNCTION__); + sc->bce_flags |= BCE_USING_MSI_FLAG; + if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || + (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) + sc->bce_flags |= BCE_ONE_SHOT_MSI_FLAG; + sc->bce_irq_rid = 1; + sc->bce_intr = bce_intr; + } + } + + /* Try allocating a legacy interrupt. */ + if (sc->bce_msi_count == 0) { + DBPRINT(sc, BCE_INFO_LOAD, "%s(): Using INTx interrupt.\n", + __FUNCTION__); + rid = 0; + sc->bce_intr = bce_intr; + } + + sc->bce_res_irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, + &rid, RF_SHAREABLE | RF_ACTIVE); + + sc->bce_irq_rid = rid; + + /* Report any IRQ allocation errors. */ + if (sc->bce_res_irq == NULL) { + BCE_PRINTF("%s(%d): PCI map interrupt failed!\n", + __FILE__, __LINE__); + rc = ENXIO; + goto bce_attach_fail; + } + + /* Initialize mutex for the current device instance. */ + BCE_LOCK_INIT(sc, device_get_nameunit(dev)); + + /* + * Configure byte swap and enable indirect register access. + * Rely on CPU to do target byte swapping on big endian systems. + * Access to registers outside of PCI configurtion space are not + * valid until this is done. + */ + pci_write_config(dev, BCE_PCICFG_MISC_CONFIG, + BCE_PCICFG_MISC_CONFIG_REG_WINDOW_ENA | + BCE_PCICFG_MISC_CONFIG_TARGET_MB_WORD_SWAP, 4); + + /* Save ASIC revsion info. */ + sc->bce_chipid = REG_RD(sc, BCE_MISC_ID); + + /* Weed out any non-production controller revisions. */ + switch(BCE_CHIP_ID(sc)) { + case BCE_CHIP_ID_5706_A0: + case BCE_CHIP_ID_5706_A1: + case BCE_CHIP_ID_5708_A0: + case BCE_CHIP_ID_5708_B0: + case BCE_CHIP_ID_5709_A0: + case BCE_CHIP_ID_5709_B0: + case BCE_CHIP_ID_5709_B1: + case BCE_CHIP_ID_5709_B2: + BCE_PRINTF("%s(%d): Unsupported controller " + "revision (%c%d)!\n", __FILE__, __LINE__, + (((pci_read_config(dev, PCIR_REVID, 4) & + 0xf0) >> 4) + 'A'), (pci_read_config(dev, + PCIR_REVID, 4) & 0xf)); + rc = ENODEV; + goto bce_attach_fail; + } + + /* + * The embedded PCIe to PCI-X bridge (EPB) + * in the 5708 cannot address memory above + * 40 bits (E7_5708CB1_23043 & E6_5708SB1_23043). + */ + if (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5708) + sc->max_bus_addr = BCE_BUS_SPACE_MAXADDR; + else + sc->max_bus_addr = BUS_SPACE_MAXADDR; + + /* + * Find the base address for shared memory access. + * Newer versions of bootcode use a signature and offset + * while older versions use a fixed address. + */ + val = REG_RD_IND(sc, BCE_SHM_HDR_SIGNATURE); + if ((val & BCE_SHM_HDR_SIGNATURE_SIG_MASK) == BCE_SHM_HDR_SIGNATURE_SIG) + /* Multi-port devices use different offsets in shared memory. */ + sc->bce_shmem_base = REG_RD_IND(sc, BCE_SHM_HDR_ADDR_0 + + (pci_get_function(sc->bce_dev) << 2)); + else + sc->bce_shmem_base = HOST_VIEW_SHMEM_BASE; + + DBPRINT(sc, BCE_VERBOSE_FIRMWARE, "%s(): bce_shmem_base = 0x%08X\n", + __FUNCTION__, sc->bce_shmem_base); + + /* Fetch the bootcode revision. */ + val = bce_shmem_rd(sc, BCE_DEV_INFO_BC_REV); + for (int i = 0, j = 0; i < 3; i++) { + u8 num; + + num = (u8) (val >> (24 - (i * 8))); + for (int k = 100, skip0 = 1; k >= 1; num %= k, k /= 10) { + if (num >= k || !skip0 || k == 1) { + sc->bce_bc_ver[j++] = (num / k) + '0'; + skip0 = 0; + } + } + + if (i != 2) + sc->bce_bc_ver[j++] = '.'; + } + + /* Check if any management firwmare is enabled. */ + val = bce_shmem_rd(sc, BCE_PORT_FEATURE); + if (val & BCE_PORT_FEATURE_ASF_ENABLED) { + sc->bce_flags |= BCE_MFW_ENABLE_FLAG; + + /* Allow time for firmware to enter the running state. */ + for (int i = 0; i < 30; i++) { + val = bce_shmem_rd(sc, BCE_BC_STATE_CONDITION); + if (val & BCE_CONDITION_MFW_RUN_MASK) + break; + DELAY(10000); + } + + /* Check if management firmware is running. */ + val = bce_shmem_rd(sc, BCE_BC_STATE_CONDITION); + val &= BCE_CONDITION_MFW_RUN_MASK; + if ((val != BCE_CONDITION_MFW_RUN_UNKNOWN) && + (val != BCE_CONDITION_MFW_RUN_NONE)) { + u32 addr = bce_shmem_rd(sc, BCE_MFW_VER_PTR); + int i = 0; + + /* Read the management firmware version string. */ + for (int j = 0; j < 3; j++) { + val = bce_reg_rd_ind(sc, addr + j * 4); + val = bswap32(val); + memcpy(&sc->bce_mfw_ver[i], &val, 4); + i += 4; + } + } else { + /* May cause firmware synchronization timeouts. */ + BCE_PRINTF("%s(%d): Management firmware enabled " + "but not running!\n", __FILE__, __LINE__); + strcpy(sc->bce_mfw_ver, "NOT RUNNING!"); + + /* ToDo: Any action the driver should take? */ + } + } + + /* Get PCI bus information (speed and type). */ + val = REG_RD(sc, BCE_PCICFG_MISC_STATUS); + if (val & BCE_PCICFG_MISC_STATUS_PCIX_DET) { + u32 clkreg; + + sc->bce_flags |= BCE_PCIX_FLAG; + + clkreg = REG_RD(sc, BCE_PCICFG_PCI_CLOCK_CONTROL_BITS); + + clkreg &= BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET; + switch (clkreg) { + case BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_133MHZ: + sc->bus_speed_mhz = 133; + break; + + case BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_95MHZ: + sc->bus_speed_mhz = 100; + break; + + case BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_66MHZ: + case BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_80MHZ: + sc->bus_speed_mhz = 66; + break; + + case BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_48MHZ: + case BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_55MHZ: + sc->bus_speed_mhz = 50; + break; + + case BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_LOW: + case BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_32MHZ: + case BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_38MHZ: + sc->bus_speed_mhz = 33; + break; + } + } else { + if (val & BCE_PCICFG_MISC_STATUS_M66EN) + sc->bus_speed_mhz = 66; + else + sc->bus_speed_mhz = 33; + } + + if (val & BCE_PCICFG_MISC_STATUS_32BIT_DET) + sc->bce_flags |= BCE_PCI_32BIT_FLAG; + + /* Reset controller and announce to bootcode that driver is present. */ + if (bce_reset(sc, BCE_DRV_MSG_CODE_RESET)) { + BCE_PRINTF("%s(%d): Controller reset failed!\n", + __FILE__, __LINE__); + rc = ENXIO; + goto bce_attach_fail; + } + + /* Initialize the controller. */ + if (bce_chipinit(sc)) { + BCE_PRINTF("%s(%d): Controller initialization failed!\n", + __FILE__, __LINE__); + rc = ENXIO; + goto bce_attach_fail; + } + + /* Perform NVRAM test. */ + if (bce_nvram_test(sc)) { + BCE_PRINTF("%s(%d): NVRAM test failed!\n", + __FILE__, __LINE__); + rc = ENXIO; + goto bce_attach_fail; + } + + /* Fetch the permanent Ethernet MAC address. */ + bce_get_mac_addr(sc); + + /* + * Trip points control how many BDs + * should be ready before generating an + * interrupt while ticks control how long + * a BD can sit in the chain before + * generating an interrupt. Set the default + * values for the RX and TX chains. + */ + +#ifdef BCE_DEBUG + /* Force more frequent interrupts. */ + sc->bce_tx_quick_cons_trip_int = 1; + sc->bce_tx_quick_cons_trip = 1; + sc->bce_tx_ticks_int = 0; + sc->bce_tx_ticks = 0; + + sc->bce_rx_quick_cons_trip_int = 1; + sc->bce_rx_quick_cons_trip = 1; + sc->bce_rx_ticks_int = 0; + sc->bce_rx_ticks = 0; +#else + /* Improve throughput at the expense of increased latency. */ + sc->bce_tx_quick_cons_trip_int = 20; + sc->bce_tx_quick_cons_trip = 20; + sc->bce_tx_ticks_int = 80; + sc->bce_tx_ticks = 80; + + sc->bce_rx_quick_cons_trip_int = 6; + sc->bce_rx_quick_cons_trip = 6; + sc->bce_rx_ticks_int = 18; + sc->bce_rx_ticks = 18; +#endif + + /* Not used for L2. */ + sc->bce_comp_prod_trip_int = 0; + sc->bce_comp_prod_trip = 0; + sc->bce_com_ticks_int = 0; + sc->bce_com_ticks = 0; + sc->bce_cmd_ticks_int = 0; + sc->bce_cmd_ticks = 0; + + /* Update statistics once every second. */ + sc->bce_stats_ticks = 1000000 & 0xffff00; + + /* Find the media type for the adapter. */ + bce_get_media(sc); + + /* Store data needed by PHY driver for backplane applications */ + sc->bce_shared_hw_cfg = bce_shmem_rd(sc, BCE_SHARED_HW_CFG_CONFIG); + sc->bce_port_hw_cfg = bce_shmem_rd(sc, BCE_PORT_HW_CFG_CONFIG); + + /* Allocate DMA memory resources. */ + if (bce_dma_alloc(dev)) { + BCE_PRINTF("%s(%d): DMA resource allocation failed!\n", + __FILE__, __LINE__); + rc = ENXIO; + goto bce_attach_fail; + } + + /* Allocate an ifnet structure. */ + ifp = sc->bce_ifp = if_alloc(IFT_ETHER); + if (ifp == NULL) { + BCE_PRINTF("%s(%d): Interface allocation failed!\n", + __FILE__, __LINE__); + rc = ENXIO; + goto bce_attach_fail; + } + + /* Initialize the ifnet interface. */ + ifp->if_softc = sc; + if_initname(ifp, device_get_name(dev), device_get_unit(dev)); + ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; + ifp->if_ioctl = bce_ioctl; + ifp->if_start = bce_start; + ifp->if_init = bce_init; + ifp->if_mtu = ETHERMTU; + + if (bce_tso_enable) { + ifp->if_hwassist = BCE_IF_HWASSIST | CSUM_TSO; + ifp->if_capabilities = BCE_IF_CAPABILITIES | IFCAP_TSO4 | + IFCAP_VLAN_HWTSO; + } else { + ifp->if_hwassist = BCE_IF_HWASSIST; + ifp->if_capabilities = BCE_IF_CAPABILITIES; + } + + ifp->if_capenable = ifp->if_capabilities; + + /* + * Assume standard mbuf sizes for buffer allocation. + * This may change later if the MTU size is set to + * something other than 1500. + */ +#ifdef BCE_JUMBO_HDRSPLIT + sc->rx_bd_mbuf_alloc_size = MHLEN; + /* Make sure offset is 16 byte aligned for hardware. */ + sc->rx_bd_mbuf_align_pad = + roundup2((MSIZE - MHLEN), 16) - (MSIZE - MHLEN); + sc->rx_bd_mbuf_data_len = sc->rx_bd_mbuf_alloc_size - + sc->rx_bd_mbuf_align_pad; + sc->pg_bd_mbuf_alloc_size = MCLBYTES; +#else + sc->rx_bd_mbuf_alloc_size = MCLBYTES; + sc->rx_bd_mbuf_align_pad = + roundup2(MCLBYTES, 16) - MCLBYTES; + sc->rx_bd_mbuf_data_len = sc->rx_bd_mbuf_alloc_size - + sc->rx_bd_mbuf_align_pad; +#endif + + ifp->if_snd.ifq_drv_maxlen = USABLE_TX_BD; + IFQ_SET_MAXLEN(&ifp->if_snd, ifp->if_snd.ifq_drv_maxlen); + IFQ_SET_READY(&ifp->if_snd); + + if (sc->bce_phy_flags & BCE_PHY_2_5G_CAPABLE_FLAG) + ifp->if_baudrate = IF_Mbps(2500ULL); + else + ifp->if_baudrate = IF_Mbps(1000); + + /* Handle any special PHY initialization for SerDes PHYs. */ + bce_init_media(sc); + + /* MII child bus by attaching the PHY. */ + rc = mii_attach(dev, &sc->bce_miibus, ifp, bce_ifmedia_upd, + bce_ifmedia_sts, BMSR_DEFCAPMASK, sc->bce_phy_addr, + MII_OFFSET_ANY, MIIF_DOPAUSE | MIIF_FORCEPAUSE); + if (rc != 0) { + BCE_PRINTF("%s(%d): attaching PHYs failed\n", __FILE__, + __LINE__); + goto bce_attach_fail; + } + + /* Attach to the Ethernet interface list. */ + ether_ifattach(ifp, sc->eaddr); + +#if __FreeBSD_version < 500000 + callout_init(&sc->bce_tick_callout); + callout_init(&sc->bce_pulse_callout); +#else + callout_init_mtx(&sc->bce_tick_callout, &sc->bce_mtx, 0); + callout_init_mtx(&sc->bce_pulse_callout, &sc->bce_mtx, 0); +#endif + + /* Hookup IRQ last. */ + rc = bus_setup_intr(dev, sc->bce_res_irq, INTR_TYPE_NET | INTR_MPSAFE, + NULL, bce_intr, sc, &sc->bce_intrhand); + + if (rc) { + BCE_PRINTF("%s(%d): Failed to setup IRQ!\n", + __FILE__, __LINE__); + bce_detach(dev); + goto bce_attach_exit; + } + + /* + * At this point we've acquired all the resources + * we need to run so there's no turning back, we're + * cleared for launch. + */ + + /* Print some important debugging info. */ + DBRUNMSG(BCE_INFO, bce_dump_driver_state(sc)); + + /* Add the supported sysctls to the kernel. */ + bce_add_sysctls(sc); + + BCE_LOCK(sc); + + /* + * The chip reset earlier notified the bootcode that + * a driver is present. We now need to start our pulse + * routine so that the bootcode is reminded that we're + * still running. + */ + bce_pulse(sc); + + bce_mgmt_init_locked(sc); + BCE_UNLOCK(sc); + + /* Finally, print some useful adapter info */ + bce_print_adapter_info(sc); + DBPRINT(sc, BCE_FATAL, "%s(): sc = %p\n", + __FUNCTION__, sc); + + goto bce_attach_exit; + +bce_attach_fail: + bce_release_resources(sc); + +bce_attach_exit: + + DBEXIT(BCE_VERBOSE_LOAD | BCE_VERBOSE_RESET); + + return(rc); +} + + +/****************************************************************************/ +/* Device detach function. */ +/* */ +/* Stops the controller, resets the controller, and releases resources. */ +/* */ +/* Returns: */ +/* 0 on success, positive value on failure. */ +/****************************************************************************/ +static int +bce_detach(device_t dev) +{ + struct bce_softc *sc = device_get_softc(dev); + struct ifnet *ifp; + u32 msg; + + DBENTER(BCE_VERBOSE_UNLOAD | BCE_VERBOSE_RESET); + + ifp = sc->bce_ifp; + + /* Stop and reset the controller. */ + BCE_LOCK(sc); + + /* Stop the pulse so the bootcode can go to driver absent state. */ + callout_stop(&sc->bce_pulse_callout); + + bce_stop(sc); + if (sc->bce_flags & BCE_NO_WOL_FLAG) + msg = BCE_DRV_MSG_CODE_UNLOAD_LNK_DN; + else + msg = BCE_DRV_MSG_CODE_UNLOAD; + bce_reset(sc, msg); + + BCE_UNLOCK(sc); + + ether_ifdetach(ifp); + + /* If we have a child device on the MII bus remove it too. */ + bus_generic_detach(dev); + device_delete_child(dev, sc->bce_miibus); + + /* Release all remaining resources. */ + bce_release_resources(sc); + + DBEXIT(BCE_VERBOSE_UNLOAD | BCE_VERBOSE_RESET); + + return(0); +} + + +/****************************************************************************/ +/* Device shutdown function. */ +/* */ +/* Stops and resets the controller. */ +/* */ +/* Returns: */ +/* 0 on success, positive value on failure. */ +/****************************************************************************/ +static int +bce_shutdown(device_t dev) +{ + struct bce_softc *sc = device_get_softc(dev); + u32 msg; + + DBENTER(BCE_VERBOSE); + + BCE_LOCK(sc); + bce_stop(sc); + if (sc->bce_flags & BCE_NO_WOL_FLAG) + msg = BCE_DRV_MSG_CODE_UNLOAD_LNK_DN; + else + msg = BCE_DRV_MSG_CODE_UNLOAD; + bce_reset(sc, msg); + BCE_UNLOCK(sc); + + DBEXIT(BCE_VERBOSE); + + return (0); +} + + +#ifdef BCE_DEBUG +/****************************************************************************/ +/* Register read. */ +/* */ +/* Returns: */ +/* The value of the register. */ +/****************************************************************************/ +static u32 +bce_reg_rd(struct bce_softc *sc, u32 offset) +{ + u32 val = bus_space_read_4(sc->bce_btag, sc->bce_bhandle, offset); + DBPRINT(sc, BCE_INSANE_REG, "%s(); offset = 0x%08X, val = 0x%08X\n", + __FUNCTION__, offset, val); + return val; +} + + +/****************************************************************************/ +/* Register write (16 bit). */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_reg_wr16(struct bce_softc *sc, u32 offset, u16 val) +{ + DBPRINT(sc, BCE_INSANE_REG, "%s(); offset = 0x%08X, val = 0x%04X\n", + __FUNCTION__, offset, val); + bus_space_write_2(sc->bce_btag, sc->bce_bhandle, offset, val); +} + + +/****************************************************************************/ +/* Register write. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_reg_wr(struct bce_softc *sc, u32 offset, u32 val) +{ + DBPRINT(sc, BCE_INSANE_REG, "%s(); offset = 0x%08X, val = 0x%08X\n", + __FUNCTION__, offset, val); + bus_space_write_4(sc->bce_btag, sc->bce_bhandle, offset, val); +} +#endif + +/****************************************************************************/ +/* Indirect register read. */ +/* */ +/* Reads NetXtreme II registers using an index/data register pair in PCI */ +/* configuration space. Using this mechanism avoids issues with posted */ +/* reads but is much slower than memory-mapped I/O. */ +/* */ +/* Returns: */ +/* The value of the register. */ +/****************************************************************************/ +static u32 +bce_reg_rd_ind(struct bce_softc *sc, u32 offset) +{ + device_t dev; + dev = sc->bce_dev; + + pci_write_config(dev, BCE_PCICFG_REG_WINDOW_ADDRESS, offset, 4); +#ifdef BCE_DEBUG + { + u32 val; + val = pci_read_config(dev, BCE_PCICFG_REG_WINDOW, 4); + DBPRINT(sc, BCE_INSANE_REG, "%s(); offset = 0x%08X, val = 0x%08X\n", + __FUNCTION__, offset, val); + return val; + } +#else + return pci_read_config(dev, BCE_PCICFG_REG_WINDOW, 4); +#endif +} + + +/****************************************************************************/ +/* Indirect register write. */ +/* */ +/* Writes NetXtreme II registers using an index/data register pair in PCI */ +/* configuration space. Using this mechanism avoids issues with posted */ +/* writes but is muchh slower than memory-mapped I/O. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_reg_wr_ind(struct bce_softc *sc, u32 offset, u32 val) +{ + device_t dev; + dev = sc->bce_dev; + + DBPRINT(sc, BCE_INSANE_REG, "%s(); offset = 0x%08X, val = 0x%08X\n", + __FUNCTION__, offset, val); + + pci_write_config(dev, BCE_PCICFG_REG_WINDOW_ADDRESS, offset, 4); + pci_write_config(dev, BCE_PCICFG_REG_WINDOW, val, 4); +} + + +/****************************************************************************/ +/* Shared memory write. */ +/* */ +/* Writes NetXtreme II shared memory region. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_shmem_wr(struct bce_softc *sc, u32 offset, u32 val) +{ + DBPRINT(sc, BCE_VERBOSE_FIRMWARE, "%s(): Writing 0x%08X to " + "0x%08X\n", __FUNCTION__, val, offset); + + bce_reg_wr_ind(sc, sc->bce_shmem_base + offset, val); +} + + +/****************************************************************************/ +/* Shared memory read. */ +/* */ +/* Reads NetXtreme II shared memory region. */ +/* */ +/* Returns: */ +/* The 32 bit value read. */ +/****************************************************************************/ +static u32 +bce_shmem_rd(struct bce_softc *sc, u32 offset) +{ + u32 val = bce_reg_rd_ind(sc, sc->bce_shmem_base + offset); + + DBPRINT(sc, BCE_VERBOSE_FIRMWARE, "%s(): Reading 0x%08X from " + "0x%08X\n", __FUNCTION__, val, offset); + + return val; +} + + +#ifdef BCE_DEBUG +/****************************************************************************/ +/* Context memory read. */ +/* */ +/* The NetXtreme II controller uses context memory to track connection */ +/* information for L2 and higher network protocols. */ +/* */ +/* Returns: */ +/* The requested 32 bit value of context memory. */ +/****************************************************************************/ +static u32 +bce_ctx_rd(struct bce_softc *sc, u32 cid_addr, u32 ctx_offset) +{ + u32 idx, offset, retry_cnt = 5, val; + + DBRUNIF((cid_addr > MAX_CID_ADDR || ctx_offset & 0x3 || + cid_addr & CTX_MASK), BCE_PRINTF("%s(): Invalid CID " + "address: 0x%08X.\n", __FUNCTION__, cid_addr)); + + offset = ctx_offset + cid_addr; + + if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || + (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { + + REG_WR(sc, BCE_CTX_CTX_CTRL, (offset | BCE_CTX_CTX_CTRL_READ_REQ)); + + for (idx = 0; idx < retry_cnt; idx++) { + val = REG_RD(sc, BCE_CTX_CTX_CTRL); + if ((val & BCE_CTX_CTX_CTRL_READ_REQ) == 0) + break; + DELAY(5); + } + + if (val & BCE_CTX_CTX_CTRL_READ_REQ) + BCE_PRINTF("%s(%d); Unable to read CTX memory: " + "cid_addr = 0x%08X, offset = 0x%08X!\n", + __FILE__, __LINE__, cid_addr, ctx_offset); + + val = REG_RD(sc, BCE_CTX_CTX_DATA); + } else { + REG_WR(sc, BCE_CTX_DATA_ADR, offset); + val = REG_RD(sc, BCE_CTX_DATA); + } + + DBPRINT(sc, BCE_EXTREME_CTX, "%s(); cid_addr = 0x%08X, offset = 0x%08X, " + "val = 0x%08X\n", __FUNCTION__, cid_addr, ctx_offset, val); + + return(val); +} +#endif + + +/****************************************************************************/ +/* Context memory write. */ +/* */ +/* The NetXtreme II controller uses context memory to track connection */ +/* information for L2 and higher network protocols. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_ctx_wr(struct bce_softc *sc, u32 cid_addr, u32 ctx_offset, u32 ctx_val) +{ + u32 idx, offset = ctx_offset + cid_addr; + u32 val, retry_cnt = 5; + + DBPRINT(sc, BCE_EXTREME_CTX, "%s(); cid_addr = 0x%08X, offset = 0x%08X, " + "val = 0x%08X\n", __FUNCTION__, cid_addr, ctx_offset, ctx_val); + + DBRUNIF((cid_addr > MAX_CID_ADDR || ctx_offset & 0x3 || cid_addr & CTX_MASK), + BCE_PRINTF("%s(): Invalid CID address: 0x%08X.\n", + __FUNCTION__, cid_addr)); + + if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || + (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { + + REG_WR(sc, BCE_CTX_CTX_DATA, ctx_val); + REG_WR(sc, BCE_CTX_CTX_CTRL, (offset | BCE_CTX_CTX_CTRL_WRITE_REQ)); + + for (idx = 0; idx < retry_cnt; idx++) { + val = REG_RD(sc, BCE_CTX_CTX_CTRL); + if ((val & BCE_CTX_CTX_CTRL_WRITE_REQ) == 0) + break; + DELAY(5); + } + + if (val & BCE_CTX_CTX_CTRL_WRITE_REQ) + BCE_PRINTF("%s(%d); Unable to write CTX memory: " + "cid_addr = 0x%08X, offset = 0x%08X!\n", + __FILE__, __LINE__, cid_addr, ctx_offset); + + } else { + REG_WR(sc, BCE_CTX_DATA_ADR, offset); + REG_WR(sc, BCE_CTX_DATA, ctx_val); + } +} + + +/****************************************************************************/ +/* PHY register read. */ +/* */ +/* Implements register reads on the MII bus. */ +/* */ +/* Returns: */ +/* The value of the register. */ +/****************************************************************************/ +static int +bce_miibus_read_reg(device_t dev, int phy, int reg) +{ + struct bce_softc *sc; + u32 val; + int i; + + sc = device_get_softc(dev); + + /* Make sure we are accessing the correct PHY address. */ + if (phy != sc->bce_phy_addr) { + DBPRINT(sc, BCE_INSANE_PHY, "Invalid PHY address %d " + "for PHY read!\n", phy); + return(0); + } + + /* + * The 5709S PHY is an IEEE Clause 45 PHY + * with special mappings to work with IEEE + * Clause 22 register accesses. + */ + if ((sc->bce_phy_flags & BCE_PHY_IEEE_CLAUSE_45_FLAG) != 0) { + if (reg >= MII_BMCR && reg <= MII_ANLPRNP) + reg += 0x10; + } + + if (sc->bce_phy_flags & BCE_PHY_INT_MODE_AUTO_POLLING_FLAG) { + val = REG_RD(sc, BCE_EMAC_MDIO_MODE); + val &= ~BCE_EMAC_MDIO_MODE_AUTO_POLL; + + REG_WR(sc, BCE_EMAC_MDIO_MODE, val); + REG_RD(sc, BCE_EMAC_MDIO_MODE); + + DELAY(40); + } + + + val = BCE_MIPHY(phy) | BCE_MIREG(reg) | + BCE_EMAC_MDIO_COMM_COMMAND_READ | BCE_EMAC_MDIO_COMM_DISEXT | + BCE_EMAC_MDIO_COMM_START_BUSY; + REG_WR(sc, BCE_EMAC_MDIO_COMM, val); + + for (i = 0; i < BCE_PHY_TIMEOUT; i++) { + DELAY(10); + + val = REG_RD(sc, BCE_EMAC_MDIO_COMM); + if (!(val & BCE_EMAC_MDIO_COMM_START_BUSY)) { + DELAY(5); + + val = REG_RD(sc, BCE_EMAC_MDIO_COMM); + val &= BCE_EMAC_MDIO_COMM_DATA; + + break; + } + } + + if (val & BCE_EMAC_MDIO_COMM_START_BUSY) { + BCE_PRINTF("%s(%d): Error: PHY read timeout! phy = %d, " + "reg = 0x%04X\n", __FILE__, __LINE__, phy, reg); + val = 0x0; + } else { + val = REG_RD(sc, BCE_EMAC_MDIO_COMM); + } + + + if (sc->bce_phy_flags & BCE_PHY_INT_MODE_AUTO_POLLING_FLAG) { + val = REG_RD(sc, BCE_EMAC_MDIO_MODE); + val |= BCE_EMAC_MDIO_MODE_AUTO_POLL; + + REG_WR(sc, BCE_EMAC_MDIO_MODE, val); + REG_RD(sc, BCE_EMAC_MDIO_MODE); + + DELAY(40); + } + + DB_PRINT_PHY_REG(reg, val); + return (val & 0xffff); + +} + + +/****************************************************************************/ +/* PHY register write. */ +/* */ +/* Implements register writes on the MII bus. */ +/* */ +/* Returns: */ +/* The value of the register. */ +/****************************************************************************/ +static int +bce_miibus_write_reg(device_t dev, int phy, int reg, int val) +{ + struct bce_softc *sc; + u32 val1; + int i; + + sc = device_get_softc(dev); + + /* Make sure we are accessing the correct PHY address. */ + if (phy != sc->bce_phy_addr) { + DBPRINT(sc, BCE_INSANE_PHY, "Invalid PHY address %d " + "for PHY write!\n", phy); + return(0); + } + + DB_PRINT_PHY_REG(reg, val); + + /* + * The 5709S PHY is an IEEE Clause 45 PHY + * with special mappings to work with IEEE + * Clause 22 register accesses. + */ + if ((sc->bce_phy_flags & BCE_PHY_IEEE_CLAUSE_45_FLAG) != 0) { + if (reg >= MII_BMCR && reg <= MII_ANLPRNP) + reg += 0x10; + } + + if (sc->bce_phy_flags & BCE_PHY_INT_MODE_AUTO_POLLING_FLAG) { + val1 = REG_RD(sc, BCE_EMAC_MDIO_MODE); + val1 &= ~BCE_EMAC_MDIO_MODE_AUTO_POLL; + + REG_WR(sc, BCE_EMAC_MDIO_MODE, val1); + REG_RD(sc, BCE_EMAC_MDIO_MODE); + + DELAY(40); + } + + val1 = BCE_MIPHY(phy) | BCE_MIREG(reg) | val | + BCE_EMAC_MDIO_COMM_COMMAND_WRITE | + BCE_EMAC_MDIO_COMM_START_BUSY | BCE_EMAC_MDIO_COMM_DISEXT; + REG_WR(sc, BCE_EMAC_MDIO_COMM, val1); + + for (i = 0; i < BCE_PHY_TIMEOUT; i++) { + DELAY(10); + + val1 = REG_RD(sc, BCE_EMAC_MDIO_COMM); + if (!(val1 & BCE_EMAC_MDIO_COMM_START_BUSY)) { + DELAY(5); + break; + } + } + + if (val1 & BCE_EMAC_MDIO_COMM_START_BUSY) + BCE_PRINTF("%s(%d): PHY write timeout!\n", + __FILE__, __LINE__); + + if (sc->bce_phy_flags & BCE_PHY_INT_MODE_AUTO_POLLING_FLAG) { + val1 = REG_RD(sc, BCE_EMAC_MDIO_MODE); + val1 |= BCE_EMAC_MDIO_MODE_AUTO_POLL; + + REG_WR(sc, BCE_EMAC_MDIO_MODE, val1); + REG_RD(sc, BCE_EMAC_MDIO_MODE); + + DELAY(40); + } + + return 0; +} + + +/****************************************************************************/ +/* MII bus status change. */ +/* */ +/* Called by the MII bus driver when the PHY establishes link to set the */ +/* MAC interface registers. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_miibus_statchg(device_t dev) +{ + struct bce_softc *sc; + struct mii_data *mii; + int val; + + sc = device_get_softc(dev); + + DBENTER(BCE_VERBOSE_PHY); + + mii = device_get_softc(sc->bce_miibus); + + val = REG_RD(sc, BCE_EMAC_MODE); + val &= ~(BCE_EMAC_MODE_PORT | BCE_EMAC_MODE_HALF_DUPLEX | + BCE_EMAC_MODE_MAC_LOOP | BCE_EMAC_MODE_FORCE_LINK | + BCE_EMAC_MODE_25G); + + /* Set MII or GMII interface based on the PHY speed. */ + switch (IFM_SUBTYPE(mii->mii_media_active)) { + case IFM_10_T: + if (BCE_CHIP_NUM(sc) != BCE_CHIP_NUM_5706) { + DBPRINT(sc, BCE_INFO_PHY, + "Enabling 10Mb interface.\n"); + val |= BCE_EMAC_MODE_PORT_MII_10; + break; + } + /* fall-through */ + case IFM_100_TX: + DBPRINT(sc, BCE_INFO_PHY, "Enabling MII interface.\n"); + val |= BCE_EMAC_MODE_PORT_MII; + break; + case IFM_2500_SX: + DBPRINT(sc, BCE_INFO_PHY, "Enabling 2.5G MAC mode.\n"); + val |= BCE_EMAC_MODE_25G; + /* fall-through */ + case IFM_1000_T: + case IFM_1000_SX: + DBPRINT(sc, BCE_INFO_PHY, "Enabling GMII interface.\n"); + val |= BCE_EMAC_MODE_PORT_GMII; + break; + default: + DBPRINT(sc, BCE_INFO_PHY, "Unknown link speed, enabling " + "default GMII interface.\n"); + val |= BCE_EMAC_MODE_PORT_GMII; + } + + /* Set half or full duplex based on PHY settings. */ + if ((mii->mii_media_active & IFM_GMASK) == IFM_HDX) { + DBPRINT(sc, BCE_INFO_PHY, + "Setting Half-Duplex interface.\n"); + val |= BCE_EMAC_MODE_HALF_DUPLEX; + } else + DBPRINT(sc, BCE_INFO_PHY, + "Setting Full-Duplex interface.\n"); + + REG_WR(sc, BCE_EMAC_MODE, val); + + if ((mii->mii_media_active & IFM_ETH_RXPAUSE) != 0) { + DBPRINT(sc, BCE_INFO_PHY, + "%s(): Enabling RX flow control.\n", __FUNCTION__); + BCE_SETBIT(sc, BCE_EMAC_RX_MODE, BCE_EMAC_RX_MODE_FLOW_EN); + } else { + DBPRINT(sc, BCE_INFO_PHY, + "%s(): Disabling RX flow control.\n", __FUNCTION__); + BCE_CLRBIT(sc, BCE_EMAC_RX_MODE, BCE_EMAC_RX_MODE_FLOW_EN); + } + + if ((mii->mii_media_active & IFM_ETH_TXPAUSE) != 0) { + DBPRINT(sc, BCE_INFO_PHY, + "%s(): Enabling TX flow control.\n", __FUNCTION__); + BCE_SETBIT(sc, BCE_EMAC_TX_MODE, BCE_EMAC_TX_MODE_FLOW_EN); + sc->bce_flags |= BCE_USING_TX_FLOW_CONTROL; + } else { + DBPRINT(sc, BCE_INFO_PHY, + "%s(): Disabling TX flow control.\n", __FUNCTION__); + BCE_CLRBIT(sc, BCE_EMAC_TX_MODE, BCE_EMAC_TX_MODE_FLOW_EN); + sc->bce_flags &= ~BCE_USING_TX_FLOW_CONTROL; + } + + /* ToDo: Update watermarks in bce_init_rx_context(). */ + + DBEXIT(BCE_VERBOSE_PHY); +} + + +/****************************************************************************/ +/* Acquire NVRAM lock. */ +/* */ +/* Before the NVRAM can be accessed the caller must acquire an NVRAM lock. */ +/* Locks 0 and 2 are reserved, lock 1 is used by firmware and lock 2 is */ +/* for use by the driver. */ +/* */ +/* Returns: */ +/* 0 on success, positive value on failure. */ +/****************************************************************************/ +static int +bce_acquire_nvram_lock(struct bce_softc *sc) +{ + u32 val; + int j, rc = 0; + + DBENTER(BCE_VERBOSE_NVRAM); + + /* Request access to the flash interface. */ + REG_WR(sc, BCE_NVM_SW_ARB, BCE_NVM_SW_ARB_ARB_REQ_SET2); + for (j = 0; j < NVRAM_TIMEOUT_COUNT; j++) { + val = REG_RD(sc, BCE_NVM_SW_ARB); + if (val & BCE_NVM_SW_ARB_ARB_ARB2) + break; + + DELAY(5); + } + + if (j >= NVRAM_TIMEOUT_COUNT) { + DBPRINT(sc, BCE_WARN, "Timeout acquiring NVRAM lock!\n"); + rc = EBUSY; + } + + DBEXIT(BCE_VERBOSE_NVRAM); + return (rc); +} + + +/****************************************************************************/ +/* Release NVRAM lock. */ +/* */ +/* When the caller is finished accessing NVRAM the lock must be released. */ +/* Locks 0 and 2 are reserved, lock 1 is used by firmware and lock 2 is */ +/* for use by the driver. */ +/* */ +/* Returns: */ +/* 0 on success, positive value on failure. */ +/****************************************************************************/ +static int +bce_release_nvram_lock(struct bce_softc *sc) +{ + u32 val; + int j, rc = 0; + + DBENTER(BCE_VERBOSE_NVRAM); + + /* + * Relinquish nvram interface. + */ + REG_WR(sc, BCE_NVM_SW_ARB, BCE_NVM_SW_ARB_ARB_REQ_CLR2); + + for (j = 0; j < NVRAM_TIMEOUT_COUNT; j++) { + val = REG_RD(sc, BCE_NVM_SW_ARB); + if (!(val & BCE_NVM_SW_ARB_ARB_ARB2)) + break; + + DELAY(5); + } + + if (j >= NVRAM_TIMEOUT_COUNT) { + DBPRINT(sc, BCE_WARN, "Timeout releasing NVRAM lock!\n"); + rc = EBUSY; + } + + DBEXIT(BCE_VERBOSE_NVRAM); + return (rc); +} + + +#ifdef BCE_NVRAM_WRITE_SUPPORT +/****************************************************************************/ +/* Enable NVRAM write access. */ +/* */ +/* Before writing to NVRAM the caller must enable NVRAM writes. */ +/* */ +/* Returns: */ +/* 0 on success, positive value on failure. */ +/****************************************************************************/ +static int +bce_enable_nvram_write(struct bce_softc *sc) +{ + u32 val; + int rc = 0; + + DBENTER(BCE_VERBOSE_NVRAM); + + val = REG_RD(sc, BCE_MISC_CFG); + REG_WR(sc, BCE_MISC_CFG, val | BCE_MISC_CFG_NVM_WR_EN_PCI); + + if (!(sc->bce_flash_info->flags & BCE_NV_BUFFERED)) { + int j; + + REG_WR(sc, BCE_NVM_COMMAND, BCE_NVM_COMMAND_DONE); + REG_WR(sc, BCE_NVM_COMMAND, BCE_NVM_COMMAND_WREN | BCE_NVM_COMMAND_DOIT); + + for (j = 0; j < NVRAM_TIMEOUT_COUNT; j++) { + DELAY(5); + + val = REG_RD(sc, BCE_NVM_COMMAND); + if (val & BCE_NVM_COMMAND_DONE) + break; + } + + if (j >= NVRAM_TIMEOUT_COUNT) { + DBPRINT(sc, BCE_WARN, "Timeout writing NVRAM!\n"); + rc = EBUSY; + } + } + + DBENTER(BCE_VERBOSE_NVRAM); + return (rc); +} + + +/****************************************************************************/ +/* Disable NVRAM write access. */ +/* */ +/* When the caller is finished writing to NVRAM write access must be */ +/* disabled. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_disable_nvram_write(struct bce_softc *sc) +{ + u32 val; + + DBENTER(BCE_VERBOSE_NVRAM); + + val = REG_RD(sc, BCE_MISC_CFG); + REG_WR(sc, BCE_MISC_CFG, val & ~BCE_MISC_CFG_NVM_WR_EN); + + DBEXIT(BCE_VERBOSE_NVRAM); + +} +#endif + + +/****************************************************************************/ +/* Enable NVRAM access. */ +/* */ +/* Before accessing NVRAM for read or write operations the caller must */ +/* enabled NVRAM access. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_enable_nvram_access(struct bce_softc *sc) +{ + u32 val; + + DBENTER(BCE_VERBOSE_NVRAM); + + val = REG_RD(sc, BCE_NVM_ACCESS_ENABLE); + /* Enable both bits, even on read. */ + REG_WR(sc, BCE_NVM_ACCESS_ENABLE, val | + BCE_NVM_ACCESS_ENABLE_EN | BCE_NVM_ACCESS_ENABLE_WR_EN); + + DBEXIT(BCE_VERBOSE_NVRAM); +} + + +/****************************************************************************/ +/* Disable NVRAM access. */ +/* */ +/* When the caller is finished accessing NVRAM access must be disabled. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_disable_nvram_access(struct bce_softc *sc) +{ + u32 val; + + DBENTER(BCE_VERBOSE_NVRAM); + + val = REG_RD(sc, BCE_NVM_ACCESS_ENABLE); + + /* Disable both bits, even after read. */ + REG_WR(sc, BCE_NVM_ACCESS_ENABLE, val & + ~(BCE_NVM_ACCESS_ENABLE_EN | BCE_NVM_ACCESS_ENABLE_WR_EN)); + + DBEXIT(BCE_VERBOSE_NVRAM); +} + + +#ifdef BCE_NVRAM_WRITE_SUPPORT +/****************************************************************************/ +/* Erase NVRAM page before writing. */ +/* */ +/* Non-buffered flash parts require that a page be erased before it is */ +/* written. */ +/* */ +/* Returns: */ +/* 0 on success, positive value on failure. */ +/****************************************************************************/ +static int +bce_nvram_erase_page(struct bce_softc *sc, u32 offset) +{ + u32 cmd; + int j, rc = 0; + + DBENTER(BCE_VERBOSE_NVRAM); + + /* Buffered flash doesn't require an erase. */ + if (sc->bce_flash_info->flags & BCE_NV_BUFFERED) + goto bce_nvram_erase_page_exit; + + /* Build an erase command. */ + cmd = BCE_NVM_COMMAND_ERASE | BCE_NVM_COMMAND_WR | + BCE_NVM_COMMAND_DOIT; + + /* + * Clear the DONE bit separately, set the NVRAM adress to erase, + * and issue the erase command. + */ + REG_WR(sc, BCE_NVM_COMMAND, BCE_NVM_COMMAND_DONE); + REG_WR(sc, BCE_NVM_ADDR, offset & BCE_NVM_ADDR_NVM_ADDR_VALUE); + REG_WR(sc, BCE_NVM_COMMAND, cmd); + + /* Wait for completion. */ + for (j = 0; j < NVRAM_TIMEOUT_COUNT; j++) { + u32 val; + + DELAY(5); + + val = REG_RD(sc, BCE_NVM_COMMAND); + if (val & BCE_NVM_COMMAND_DONE) + break; + } + + if (j >= NVRAM_TIMEOUT_COUNT) { + DBPRINT(sc, BCE_WARN, "Timeout erasing NVRAM.\n"); + rc = EBUSY; + } + +bce_nvram_erase_page_exit: + DBEXIT(BCE_VERBOSE_NVRAM); + return (rc); +} +#endif /* BCE_NVRAM_WRITE_SUPPORT */ + + +/****************************************************************************/ +/* Read a dword (32 bits) from NVRAM. */ +/* */ +/* Read a 32 bit word from NVRAM. The caller is assumed to have already */ +/* obtained the NVRAM lock and enabled the controller for NVRAM access. */ +/* */ +/* Returns: */ +/* 0 on success and the 32 bit value read, positive value on failure. */ +/****************************************************************************/ +static int +bce_nvram_read_dword(struct bce_softc *sc, + u32 offset, u8 *ret_val, u32 cmd_flags) +{ + u32 cmd; + int i, rc = 0; + + DBENTER(BCE_EXTREME_NVRAM); + + /* Build the command word. */ + cmd = BCE_NVM_COMMAND_DOIT | cmd_flags; + + /* Calculate the offset for buffered flash if translation is used. */ + if (sc->bce_flash_info->flags & BCE_NV_TRANSLATE) { + offset = ((offset / sc->bce_flash_info->page_size) << + sc->bce_flash_info->page_bits) + + (offset % sc->bce_flash_info->page_size); + } + + /* + * Clear the DONE bit separately, set the address to read, + * and issue the read. + */ + REG_WR(sc, BCE_NVM_COMMAND, BCE_NVM_COMMAND_DONE); + REG_WR(sc, BCE_NVM_ADDR, offset & BCE_NVM_ADDR_NVM_ADDR_VALUE); + REG_WR(sc, BCE_NVM_COMMAND, cmd); + + /* Wait for completion. */ + for (i = 0; i < NVRAM_TIMEOUT_COUNT; i++) { + u32 val; + + DELAY(5); + + val = REG_RD(sc, BCE_NVM_COMMAND); + if (val & BCE_NVM_COMMAND_DONE) { + val = REG_RD(sc, BCE_NVM_READ); + + val = bce_be32toh(val); + memcpy(ret_val, &val, 4); + break; + } + } + + /* Check for errors. */ + if (i >= NVRAM_TIMEOUT_COUNT) { + BCE_PRINTF("%s(%d): Timeout error reading NVRAM at " + "offset 0x%08X!\n", __FILE__, __LINE__, offset); + rc = EBUSY; + } + + DBEXIT(BCE_EXTREME_NVRAM); + return(rc); +} + + +#ifdef BCE_NVRAM_WRITE_SUPPORT +/****************************************************************************/ +/* Write a dword (32 bits) to NVRAM. */ +/* */ +/* Write a 32 bit word to NVRAM. The caller is assumed to have already */ +/* obtained the NVRAM lock, enabled the controller for NVRAM access, and */ +/* enabled NVRAM write access. */ +/* */ +/* Returns: */ +/* 0 on success, positive value on failure. */ +/****************************************************************************/ +static int +bce_nvram_write_dword(struct bce_softc *sc, u32 offset, u8 *val, + u32 cmd_flags) +{ + u32 cmd, val32; + int j, rc = 0; + + DBENTER(BCE_VERBOSE_NVRAM); + + /* Build the command word. */ + cmd = BCE_NVM_COMMAND_DOIT | BCE_NVM_COMMAND_WR | cmd_flags; + + /* Calculate the offset for buffered flash if translation is used. */ + if (sc->bce_flash_info->flags & BCE_NV_TRANSLATE) { + offset = ((offset / sc->bce_flash_info->page_size) << + sc->bce_flash_info->page_bits) + + (offset % sc->bce_flash_info->page_size); + } + + /* + * Clear the DONE bit separately, convert NVRAM data to big-endian, + * set the NVRAM address to write, and issue the write command + */ + REG_WR(sc, BCE_NVM_COMMAND, BCE_NVM_COMMAND_DONE); + memcpy(&val32, val, 4); + val32 = htobe32(val32); + REG_WR(sc, BCE_NVM_WRITE, val32); + REG_WR(sc, BCE_NVM_ADDR, offset & BCE_NVM_ADDR_NVM_ADDR_VALUE); + REG_WR(sc, BCE_NVM_COMMAND, cmd); + + /* Wait for completion. */ + for (j = 0; j < NVRAM_TIMEOUT_COUNT; j++) { + DELAY(5); + + if (REG_RD(sc, BCE_NVM_COMMAND) & BCE_NVM_COMMAND_DONE) + break; + } + if (j >= NVRAM_TIMEOUT_COUNT) { + BCE_PRINTF("%s(%d): Timeout error writing NVRAM at " + "offset 0x%08X\n", __FILE__, __LINE__, offset); + rc = EBUSY; + } + + DBEXIT(BCE_VERBOSE_NVRAM); + return (rc); +} +#endif /* BCE_NVRAM_WRITE_SUPPORT */ + + +/****************************************************************************/ +/* Initialize NVRAM access. */ +/* */ +/* Identify the NVRAM device in use and prepare the NVRAM interface to */ +/* access that device. */ +/* */ +/* Returns: */ +/* 0 on success, positive value on failure. */ +/****************************************************************************/ +static int +bce_init_nvram(struct bce_softc *sc) +{ + u32 val; + int j, entry_count, rc = 0; + struct flash_spec *flash; + + DBENTER(BCE_VERBOSE_NVRAM); + + if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || + (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { + sc->bce_flash_info = &flash_5709; + goto bce_init_nvram_get_flash_size; + } + + /* Determine the selected interface. */ + val = REG_RD(sc, BCE_NVM_CFG1); + + entry_count = sizeof(flash_table) / sizeof(struct flash_spec); + + /* + * Flash reconfiguration is required to support additional + * NVRAM devices not directly supported in hardware. + * Check if the flash interface was reconfigured + * by the bootcode. + */ + + if (val & 0x40000000) { + /* Flash interface reconfigured by bootcode. */ + + DBPRINT(sc,BCE_INFO_LOAD, + "bce_init_nvram(): Flash WAS reconfigured.\n"); + + for (j = 0, flash = &flash_table[0]; j < entry_count; + j++, flash++) { + if ((val & FLASH_BACKUP_STRAP_MASK) == + (flash->config1 & FLASH_BACKUP_STRAP_MASK)) { + sc->bce_flash_info = flash; + break; + } + } + } else { + /* Flash interface not yet reconfigured. */ + u32 mask; + + DBPRINT(sc, BCE_INFO_LOAD, "%s(): Flash was NOT reconfigured.\n", + __FUNCTION__); + + if (val & (1 << 23)) + mask = FLASH_BACKUP_STRAP_MASK; + else + mask = FLASH_STRAP_MASK; + + /* Look for the matching NVRAM device configuration data. */ + for (j = 0, flash = &flash_table[0]; j < entry_count; j++, flash++) { + + /* Check if the device matches any of the known devices. */ + if ((val & mask) == (flash->strapping & mask)) { + /* Found a device match. */ + sc->bce_flash_info = flash; + + /* Request access to the flash interface. */ + if ((rc = bce_acquire_nvram_lock(sc)) != 0) + return rc; + + /* Reconfigure the flash interface. */ + bce_enable_nvram_access(sc); + REG_WR(sc, BCE_NVM_CFG1, flash->config1); + REG_WR(sc, BCE_NVM_CFG2, flash->config2); + REG_WR(sc, BCE_NVM_CFG3, flash->config3); + REG_WR(sc, BCE_NVM_WRITE1, flash->write1); + bce_disable_nvram_access(sc); + bce_release_nvram_lock(sc); + + break; + } + } + } + + /* Check if a matching device was found. */ + if (j == entry_count) { + sc->bce_flash_info = NULL; + BCE_PRINTF("%s(%d): Unknown Flash NVRAM found!\n", + __FILE__, __LINE__); + DBEXIT(BCE_VERBOSE_NVRAM); + return (ENODEV); + } + +bce_init_nvram_get_flash_size: + /* Write the flash config data to the shared memory interface. */ + val = bce_shmem_rd(sc, BCE_SHARED_HW_CFG_CONFIG2); + val &= BCE_SHARED_HW_CFG2_NVM_SIZE_MASK; + if (val) + sc->bce_flash_size = val; + else + sc->bce_flash_size = sc->bce_flash_info->total_size; + + DBPRINT(sc, BCE_INFO_LOAD, "%s(): Found %s, size = 0x%08X\n", + __FUNCTION__, sc->bce_flash_info->name, + sc->bce_flash_info->total_size); + + DBEXIT(BCE_VERBOSE_NVRAM); + return rc; +} + + +/****************************************************************************/ +/* Read an arbitrary range of data from NVRAM. */ +/* */ +/* Prepares the NVRAM interface for access and reads the requested data */ +/* into the supplied buffer. */ +/* */ +/* Returns: */ +/* 0 on success and the data read, positive value on failure. */ +/****************************************************************************/ +static int +bce_nvram_read(struct bce_softc *sc, u32 offset, u8 *ret_buf, + int buf_size) +{ + int rc = 0; + u32 cmd_flags, offset32, len32, extra; + + DBENTER(BCE_VERBOSE_NVRAM); + + if (buf_size == 0) + goto bce_nvram_read_exit; + + /* Request access to the flash interface. */ + if ((rc = bce_acquire_nvram_lock(sc)) != 0) + goto bce_nvram_read_exit; + + /* Enable access to flash interface */ + bce_enable_nvram_access(sc); + + len32 = buf_size; + offset32 = offset; + extra = 0; + + cmd_flags = 0; + + if (offset32 & 3) { + u8 buf[4]; + u32 pre_len; + + offset32 &= ~3; + pre_len = 4 - (offset & 3); + + if (pre_len >= len32) { + pre_len = len32; + cmd_flags = BCE_NVM_COMMAND_FIRST | BCE_NVM_COMMAND_LAST; + } + else { + cmd_flags = BCE_NVM_COMMAND_FIRST; + } + + rc = bce_nvram_read_dword(sc, offset32, buf, cmd_flags); + + if (rc) + return rc; + + memcpy(ret_buf, buf + (offset & 3), pre_len); + + offset32 += 4; + ret_buf += pre_len; + len32 -= pre_len; + } + + if (len32 & 3) { + extra = 4 - (len32 & 3); + len32 = (len32 + 4) & ~3; + } + + if (len32 == 4) { + u8 buf[4]; + + if (cmd_flags) + cmd_flags = BCE_NVM_COMMAND_LAST; + else + cmd_flags = BCE_NVM_COMMAND_FIRST | + BCE_NVM_COMMAND_LAST; + + rc = bce_nvram_read_dword(sc, offset32, buf, cmd_flags); + + memcpy(ret_buf, buf, 4 - extra); + } + else if (len32 > 0) { + u8 buf[4]; + + /* Read the first word. */ + if (cmd_flags) + cmd_flags = 0; + else + cmd_flags = BCE_NVM_COMMAND_FIRST; + + rc = bce_nvram_read_dword(sc, offset32, ret_buf, cmd_flags); + + /* Advance to the next dword. */ + offset32 += 4; + ret_buf += 4; + len32 -= 4; + + while (len32 > 4 && rc == 0) { + rc = bce_nvram_read_dword(sc, offset32, ret_buf, 0); + + /* Advance to the next dword. */ + offset32 += 4; + ret_buf += 4; + len32 -= 4; + } + + if (rc) + goto bce_nvram_read_locked_exit; + + cmd_flags = BCE_NVM_COMMAND_LAST; + rc = bce_nvram_read_dword(sc, offset32, buf, cmd_flags); + + memcpy(ret_buf, buf, 4 - extra); + } + +bce_nvram_read_locked_exit: + /* Disable access to flash interface and release the lock. */ + bce_disable_nvram_access(sc); + bce_release_nvram_lock(sc); + +bce_nvram_read_exit: + DBEXIT(BCE_VERBOSE_NVRAM); + return rc; +} + + +#ifdef BCE_NVRAM_WRITE_SUPPORT +/****************************************************************************/ +/* Write an arbitrary range of data from NVRAM. */ +/* */ +/* Prepares the NVRAM interface for write access and writes the requested */ +/* data from the supplied buffer. The caller is responsible for */ +/* calculating any appropriate CRCs. */ +/* */ +/* Returns: */ +/* 0 on success, positive value on failure. */ +/****************************************************************************/ +static int +bce_nvram_write(struct bce_softc *sc, u32 offset, u8 *data_buf, + int buf_size) +{ + u32 written, offset32, len32; + u8 *buf, start[4], end[4]; + int rc = 0; + int align_start, align_end; + + DBENTER(BCE_VERBOSE_NVRAM); + + buf = data_buf; + offset32 = offset; + len32 = buf_size; + align_start = align_end = 0; + + if ((align_start = (offset32 & 3))) { + offset32 &= ~3; + len32 += align_start; + if ((rc = bce_nvram_read(sc, offset32, start, 4))) + goto bce_nvram_write_exit; + } + + if (len32 & 3) { + if ((len32 > 4) || !align_start) { + align_end = 4 - (len32 & 3); + len32 += align_end; + if ((rc = bce_nvram_read(sc, offset32 + len32 - 4, + end, 4))) { + goto bce_nvram_write_exit; + } + } + } + + if (align_start || align_end) { + buf = malloc(len32, M_DEVBUF, M_NOWAIT); + if (buf == 0) { + rc = ENOMEM; + goto bce_nvram_write_exit; + } + + if (align_start) { + memcpy(buf, start, 4); + } + + if (align_end) { + memcpy(buf + len32 - 4, end, 4); + } + memcpy(buf + align_start, data_buf, buf_size); + } + + written = 0; + while ((written < len32) && (rc == 0)) { + u32 page_start, page_end, data_start, data_end; + u32 addr, cmd_flags; + int i; + u8 flash_buffer[264]; + + /* Find the page_start addr */ + page_start = offset32 + written; + page_start -= (page_start % sc->bce_flash_info->page_size); + /* Find the page_end addr */ + page_end = page_start + sc->bce_flash_info->page_size; + /* Find the data_start addr */ + data_start = (written == 0) ? offset32 : page_start; + /* Find the data_end addr */ + data_end = (page_end > offset32 + len32) ? + (offset32 + len32) : page_end; + + /* Request access to the flash interface. */ + if ((rc = bce_acquire_nvram_lock(sc)) != 0) + goto bce_nvram_write_exit; + + /* Enable access to flash interface */ + bce_enable_nvram_access(sc); + + cmd_flags = BCE_NVM_COMMAND_FIRST; + if (!(sc->bce_flash_info->flags & BCE_NV_BUFFERED)) { + int j; + + /* Read the whole page into the buffer + * (non-buffer flash only) */ + for (j = 0; j < sc->bce_flash_info->page_size; j += 4) { + if (j == (sc->bce_flash_info->page_size - 4)) { + cmd_flags |= BCE_NVM_COMMAND_LAST; + } + rc = bce_nvram_read_dword(sc, + page_start + j, + &flash_buffer[j], + cmd_flags); + + if (rc) + goto bce_nvram_write_locked_exit; + + cmd_flags = 0; + } + } + + /* Enable writes to flash interface (unlock write-protect) */ + if ((rc = bce_enable_nvram_write(sc)) != 0) + goto bce_nvram_write_locked_exit; + + /* Erase the page */ + if ((rc = bce_nvram_erase_page(sc, page_start)) != 0) + goto bce_nvram_write_locked_exit; + + /* Re-enable the write again for the actual write */ + bce_enable_nvram_write(sc); + + /* Loop to write back the buffer data from page_start to + * data_start */ + i = 0; + if (!(sc->bce_flash_info->flags & BCE_NV_BUFFERED)) { + for (addr = page_start; addr < data_start; + addr += 4, i += 4) { + + rc = bce_nvram_write_dword(sc, addr, + &flash_buffer[i], cmd_flags); + + if (rc != 0) + goto bce_nvram_write_locked_exit; + + cmd_flags = 0; + } + } + + /* Loop to write the new data from data_start to data_end */ + for (addr = data_start; addr < data_end; addr += 4, i++) { + if ((addr == page_end - 4) || + ((sc->bce_flash_info->flags & BCE_NV_BUFFERED) && + (addr == data_end - 4))) { + + cmd_flags |= BCE_NVM_COMMAND_LAST; + } + rc = bce_nvram_write_dword(sc, addr, buf, + cmd_flags); + + if (rc != 0) + goto bce_nvram_write_locked_exit; + + cmd_flags = 0; + buf += 4; + } + + /* Loop to write back the buffer data from data_end + * to page_end */ + if (!(sc->bce_flash_info->flags & BCE_NV_BUFFERED)) { + for (addr = data_end; addr < page_end; + addr += 4, i += 4) { + + if (addr == page_end-4) { + cmd_flags = BCE_NVM_COMMAND_LAST; + } + rc = bce_nvram_write_dword(sc, addr, + &flash_buffer[i], cmd_flags); + + if (rc != 0) + goto bce_nvram_write_locked_exit; + + cmd_flags = 0; + } + } + + /* Disable writes to flash interface (lock write-protect) */ + bce_disable_nvram_write(sc); + + /* Disable access to flash interface */ + bce_disable_nvram_access(sc); + bce_release_nvram_lock(sc); + + /* Increment written */ + written += data_end - data_start; + } + + goto bce_nvram_write_exit; + +bce_nvram_write_locked_exit: + bce_disable_nvram_write(sc); + bce_disable_nvram_access(sc); + bce_release_nvram_lock(sc); + +bce_nvram_write_exit: + if (align_start || align_end) + free(buf, M_DEVBUF); + + DBEXIT(BCE_VERBOSE_NVRAM); + return (rc); +} +#endif /* BCE_NVRAM_WRITE_SUPPORT */ + + +/****************************************************************************/ +/* Verifies that NVRAM is accessible and contains valid data. */ +/* */ +/* Reads the configuration data from NVRAM and verifies that the CRC is */ +/* correct. */ +/* */ +/* Returns: */ +/* 0 on success, positive value on failure. */ +/****************************************************************************/ +static int +bce_nvram_test(struct bce_softc *sc) +{ + u32 buf[BCE_NVRAM_SIZE / 4]; + u8 *data = (u8 *) buf; + int rc = 0; + u32 magic, csum; + + DBENTER(BCE_VERBOSE_NVRAM | BCE_VERBOSE_LOAD | BCE_VERBOSE_RESET); + + /* + * Check that the device NVRAM is valid by reading + * the magic value at offset 0. + */ + if ((rc = bce_nvram_read(sc, 0, data, 4)) != 0) { + BCE_PRINTF("%s(%d): Unable to read NVRAM!\n", + __FILE__, __LINE__); + goto bce_nvram_test_exit; + } + + /* + * Verify that offset 0 of the NVRAM contains + * a valid magic number. + */ + magic = bce_be32toh(buf[0]); + if (magic != BCE_NVRAM_MAGIC) { + rc = ENODEV; + BCE_PRINTF("%s(%d): Invalid NVRAM magic value! " + "Expected: 0x%08X, Found: 0x%08X\n", + __FILE__, __LINE__, BCE_NVRAM_MAGIC, magic); + goto bce_nvram_test_exit; + } + + /* + * Verify that the device NVRAM includes valid + * configuration data. + */ + if ((rc = bce_nvram_read(sc, 0x100, data, BCE_NVRAM_SIZE)) != 0) { + BCE_PRINTF("%s(%d): Unable to read manufacturing " + "Information from NVRAM!\n", __FILE__, __LINE__); + goto bce_nvram_test_exit; + } + + csum = ether_crc32_le(data, 0x100); + if (csum != BCE_CRC32_RESIDUAL) { + rc = ENODEV; + BCE_PRINTF("%s(%d): Invalid manufacturing information " + "NVRAM CRC! Expected: 0x%08X, Found: 0x%08X\n", + __FILE__, __LINE__, BCE_CRC32_RESIDUAL, csum); + goto bce_nvram_test_exit; + } + + csum = ether_crc32_le(data + 0x100, 0x100); + if (csum != BCE_CRC32_RESIDUAL) { + rc = ENODEV; + BCE_PRINTF("%s(%d): Invalid feature configuration " + "information NVRAM CRC! Expected: 0x%08X, " + "Found: 08%08X\n", __FILE__, __LINE__, + BCE_CRC32_RESIDUAL, csum); + } + +bce_nvram_test_exit: + DBEXIT(BCE_VERBOSE_NVRAM | BCE_VERBOSE_LOAD | BCE_VERBOSE_RESET); + return rc; +} + + +/****************************************************************************/ +/* Identifies the current media type of the controller and sets the PHY */ +/* address. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_get_media(struct bce_softc *sc) +{ + u32 val; + + DBENTER(BCE_VERBOSE_PHY); + + /* Assume PHY address for copper controllers. */ + sc->bce_phy_addr = 1; + + if (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) { + u32 val = REG_RD(sc, BCE_MISC_DUAL_MEDIA_CTRL); + u32 bond_id = val & BCE_MISC_DUAL_MEDIA_CTRL_BOND_ID; + u32 strap; + + /* + * The BCM5709S is software configurable + * for Copper or SerDes operation. + */ + if (bond_id == BCE_MISC_DUAL_MEDIA_CTRL_BOND_ID_C) { + DBPRINT(sc, BCE_INFO_LOAD, "5709 bonded " + "for copper.\n"); + goto bce_get_media_exit; + } else if (bond_id == BCE_MISC_DUAL_MEDIA_CTRL_BOND_ID_S) { + DBPRINT(sc, BCE_INFO_LOAD, "5709 bonded " + "for dual media.\n"); + sc->bce_phy_flags |= BCE_PHY_SERDES_FLAG; + goto bce_get_media_exit; + } + + if (val & BCE_MISC_DUAL_MEDIA_CTRL_STRAP_OVERRIDE) + strap = (val & + BCE_MISC_DUAL_MEDIA_CTRL_PHY_CTRL) >> 21; + else + strap = (val & + BCE_MISC_DUAL_MEDIA_CTRL_PHY_CTRL_STRAP) >> 8; + + if (pci_get_function(sc->bce_dev) == 0) { + switch (strap) { + case 0x4: + case 0x5: + case 0x6: + DBPRINT(sc, BCE_INFO_LOAD, + "BCM5709 s/w configured for SerDes.\n"); + sc->bce_phy_flags |= BCE_PHY_SERDES_FLAG; + break; + default: + DBPRINT(sc, BCE_INFO_LOAD, + "BCM5709 s/w configured for Copper.\n"); + break; + } + } else { + switch (strap) { + case 0x1: + case 0x2: + case 0x4: + DBPRINT(sc, BCE_INFO_LOAD, + "BCM5709 s/w configured for SerDes.\n"); + sc->bce_phy_flags |= BCE_PHY_SERDES_FLAG; + break; + default: + DBPRINT(sc, BCE_INFO_LOAD, + "BCM5709 s/w configured for Copper.\n"); + break; + } + } + + } else if (BCE_CHIP_BOND_ID(sc) & BCE_CHIP_BOND_ID_SERDES_BIT) + sc->bce_phy_flags |= BCE_PHY_SERDES_FLAG; + + if (sc->bce_phy_flags & BCE_PHY_SERDES_FLAG) { + + sc->bce_flags |= BCE_NO_WOL_FLAG; + + if (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) + sc->bce_phy_flags |= BCE_PHY_IEEE_CLAUSE_45_FLAG; + + if (BCE_CHIP_NUM(sc) != BCE_CHIP_NUM_5706) { + /* 5708S/09S/16S use a separate PHY for SerDes. */ + sc->bce_phy_addr = 2; + + val = bce_shmem_rd(sc, BCE_SHARED_HW_CFG_CONFIG); + if (val & BCE_SHARED_HW_CFG_PHY_2_5G) { + sc->bce_phy_flags |= + BCE_PHY_2_5G_CAPABLE_FLAG; + DBPRINT(sc, BCE_INFO_LOAD, "Found 2.5Gb " + "capable adapter\n"); + } + } + } else if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5706) || + (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5708)) + sc->bce_phy_flags |= BCE_PHY_CRC_FIX_FLAG; + +bce_get_media_exit: + DBPRINT(sc, (BCE_INFO_LOAD | BCE_INFO_PHY), + "Using PHY address %d.\n", sc->bce_phy_addr); + + DBEXIT(BCE_VERBOSE_PHY); +} + + +/****************************************************************************/ +/* Performs PHY initialization required before MII drivers access the */ +/* device. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_init_media(struct bce_softc *sc) +{ + if ((sc->bce_phy_flags & BCE_PHY_IEEE_CLAUSE_45_FLAG) != 0) { + /* + * Configure 5709S/5716S PHYs to use traditional IEEE + * Clause 22 method. Otherwise we have no way to attach + * the PHY in mii(4) layer. PHY specific configuration + * is done in mii layer. + */ + + /* Select auto-negotiation MMD of the PHY. */ + bce_miibus_write_reg(sc->bce_dev, sc->bce_phy_addr, + BRGPHY_BLOCK_ADDR, BRGPHY_BLOCK_ADDR_ADDR_EXT); + bce_miibus_write_reg(sc->bce_dev, sc->bce_phy_addr, + BRGPHY_ADDR_EXT, BRGPHY_ADDR_EXT_AN_MMD); + + /* Set IEEE0 block of AN MMD (assumed in brgphy(4) code). */ + bce_miibus_write_reg(sc->bce_dev, sc->bce_phy_addr, + BRGPHY_BLOCK_ADDR, BRGPHY_BLOCK_ADDR_COMBO_IEEE0); + } +} + + +/****************************************************************************/ +/* Free any DMA memory owned by the driver. */ +/* */ +/* Scans through each data structre that requires DMA memory and frees */ +/* the memory if allocated. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_dma_free(struct bce_softc *sc) +{ + int i; + + DBENTER(BCE_VERBOSE_RESET | BCE_VERBOSE_UNLOAD | BCE_VERBOSE_CTX); + + /* Free, unmap, and destroy the status block. */ + if (sc->status_block != NULL) { + bus_dmamem_free( + sc->status_tag, + sc->status_block, + sc->status_map); + sc->status_block = NULL; + } + + if (sc->status_map != NULL) { + bus_dmamap_unload( + sc->status_tag, + sc->status_map); + bus_dmamap_destroy(sc->status_tag, + sc->status_map); + sc->status_map = NULL; + } + + if (sc->status_tag != NULL) { + bus_dma_tag_destroy(sc->status_tag); + sc->status_tag = NULL; + } + + + /* Free, unmap, and destroy the statistics block. */ + if (sc->stats_block != NULL) { + bus_dmamem_free( + sc->stats_tag, + sc->stats_block, + sc->stats_map); + sc->stats_block = NULL; + } + + if (sc->stats_map != NULL) { + bus_dmamap_unload( + sc->stats_tag, + sc->stats_map); + bus_dmamap_destroy(sc->stats_tag, + sc->stats_map); + sc->stats_map = NULL; + } + + if (sc->stats_tag != NULL) { + bus_dma_tag_destroy(sc->stats_tag); + sc->stats_tag = NULL; + } + + + /* Free, unmap and destroy all context memory pages. */ + if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || + (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { + for (i = 0; i < sc->ctx_pages; i++ ) { + if (sc->ctx_block[i] != NULL) { + bus_dmamem_free( + sc->ctx_tag, + sc->ctx_block[i], + sc->ctx_map[i]); + sc->ctx_block[i] = NULL; + } + + if (sc->ctx_map[i] != NULL) { + bus_dmamap_unload( + sc->ctx_tag, + sc->ctx_map[i]); + bus_dmamap_destroy( + sc->ctx_tag, + sc->ctx_map[i]); + sc->ctx_map[i] = NULL; + } + } + + /* Destroy the context memory tag. */ + if (sc->ctx_tag != NULL) { + bus_dma_tag_destroy(sc->ctx_tag); + sc->ctx_tag = NULL; + } + } + + + /* Free, unmap and destroy all TX buffer descriptor chain pages. */ + for (i = 0; i < TX_PAGES; i++ ) { + if (sc->tx_bd_chain[i] != NULL) { + bus_dmamem_free( + sc->tx_bd_chain_tag, + sc->tx_bd_chain[i], + sc->tx_bd_chain_map[i]); + sc->tx_bd_chain[i] = NULL; + } + + if (sc->tx_bd_chain_map[i] != NULL) { + bus_dmamap_unload( + sc->tx_bd_chain_tag, + sc->tx_bd_chain_map[i]); + bus_dmamap_destroy( + sc->tx_bd_chain_tag, + sc->tx_bd_chain_map[i]); + sc->tx_bd_chain_map[i] = NULL; + } + } + + /* Destroy the TX buffer descriptor tag. */ + if (sc->tx_bd_chain_tag != NULL) { + bus_dma_tag_destroy(sc->tx_bd_chain_tag); + sc->tx_bd_chain_tag = NULL; + } + + + /* Free, unmap and destroy all RX buffer descriptor chain pages. */ + for (i = 0; i < RX_PAGES; i++ ) { + if (sc->rx_bd_chain[i] != NULL) { + bus_dmamem_free( + sc->rx_bd_chain_tag, + sc->rx_bd_chain[i], + sc->rx_bd_chain_map[i]); + sc->rx_bd_chain[i] = NULL; + } + + if (sc->rx_bd_chain_map[i] != NULL) { + bus_dmamap_unload( + sc->rx_bd_chain_tag, + sc->rx_bd_chain_map[i]); + bus_dmamap_destroy( + sc->rx_bd_chain_tag, + sc->rx_bd_chain_map[i]); + sc->rx_bd_chain_map[i] = NULL; + } + } + + /* Destroy the RX buffer descriptor tag. */ + if (sc->rx_bd_chain_tag != NULL) { + bus_dma_tag_destroy(sc->rx_bd_chain_tag); + sc->rx_bd_chain_tag = NULL; + } + + +#ifdef BCE_JUMBO_HDRSPLIT + /* Free, unmap and destroy all page buffer descriptor chain pages. */ + for (i = 0; i < PG_PAGES; i++ ) { + if (sc->pg_bd_chain[i] != NULL) { + bus_dmamem_free( + sc->pg_bd_chain_tag, + sc->pg_bd_chain[i], + sc->pg_bd_chain_map[i]); + sc->pg_bd_chain[i] = NULL; + } + + if (sc->pg_bd_chain_map[i] != NULL) { + bus_dmamap_unload( + sc->pg_bd_chain_tag, + sc->pg_bd_chain_map[i]); + bus_dmamap_destroy( + sc->pg_bd_chain_tag, + sc->pg_bd_chain_map[i]); + sc->pg_bd_chain_map[i] = NULL; + } + } + + /* Destroy the page buffer descriptor tag. */ + if (sc->pg_bd_chain_tag != NULL) { + bus_dma_tag_destroy(sc->pg_bd_chain_tag); + sc->pg_bd_chain_tag = NULL; + } +#endif + + + /* Unload and destroy the TX mbuf maps. */ + for (i = 0; i < TOTAL_TX_BD; i++) { + if (sc->tx_mbuf_map[i] != NULL) { + bus_dmamap_unload(sc->tx_mbuf_tag, + sc->tx_mbuf_map[i]); + bus_dmamap_destroy(sc->tx_mbuf_tag, + sc->tx_mbuf_map[i]); + sc->tx_mbuf_map[i] = NULL; + } + } + + /* Destroy the TX mbuf tag. */ + if (sc->tx_mbuf_tag != NULL) { + bus_dma_tag_destroy(sc->tx_mbuf_tag); + sc->tx_mbuf_tag = NULL; + } + + /* Unload and destroy the RX mbuf maps. */ + for (i = 0; i < TOTAL_RX_BD; i++) { + if (sc->rx_mbuf_map[i] != NULL) { + bus_dmamap_unload(sc->rx_mbuf_tag, + sc->rx_mbuf_map[i]); + bus_dmamap_destroy(sc->rx_mbuf_tag, + sc->rx_mbuf_map[i]); + sc->rx_mbuf_map[i] = NULL; + } + } + + /* Destroy the RX mbuf tag. */ + if (sc->rx_mbuf_tag != NULL) { + bus_dma_tag_destroy(sc->rx_mbuf_tag); + sc->rx_mbuf_tag = NULL; + } + +#ifdef BCE_JUMBO_HDRSPLIT + /* Unload and destroy the page mbuf maps. */ + for (i = 0; i < TOTAL_PG_BD; i++) { + if (sc->pg_mbuf_map[i] != NULL) { + bus_dmamap_unload(sc->pg_mbuf_tag, + sc->pg_mbuf_map[i]); + bus_dmamap_destroy(sc->pg_mbuf_tag, + sc->pg_mbuf_map[i]); + sc->pg_mbuf_map[i] = NULL; + } + } + + /* Destroy the page mbuf tag. */ + if (sc->pg_mbuf_tag != NULL) { + bus_dma_tag_destroy(sc->pg_mbuf_tag); + sc->pg_mbuf_tag = NULL; + } +#endif + + /* Destroy the parent tag */ + if (sc->parent_tag != NULL) { + bus_dma_tag_destroy(sc->parent_tag); + sc->parent_tag = NULL; + } + + DBEXIT(BCE_VERBOSE_RESET | BCE_VERBOSE_UNLOAD | BCE_VERBOSE_CTX); +} + + +/****************************************************************************/ +/* Get DMA memory from the OS. */ +/* */ +/* Validates that the OS has provided DMA buffers in response to a */ +/* bus_dmamap_load() call and saves the physical address of those buffers. */ +/* When the callback is used the OS will return 0 for the mapping function */ +/* (bus_dmamap_load()) so we use the value of map_arg->maxsegs to pass any */ +/* failures back to the caller. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_dma_map_addr(void *arg, bus_dma_segment_t *segs, int nseg, int error) +{ + bus_addr_t *busaddr = arg; + + KASSERT(nseg == 1, ("%s(): Too many segments returned (%d)!", + __FUNCTION__, nseg)); + /* Simulate a mapping failure. */ + DBRUNIF(DB_RANDOMTRUE(dma_map_addr_failed_sim_control), + error = ENOMEM); + + /* ToDo: How to increment debug sim_count variable here? */ + + /* Check for an error and signal the caller that an error occurred. */ + if (error) { + *busaddr = 0; + } else { + *busaddr = segs->ds_addr; + } + + return; +} + + +/****************************************************************************/ +/* Allocate any DMA memory needed by the driver. */ +/* */ +/* Allocates DMA memory needed for the various global structures needed by */ +/* hardware. */ +/* */ +/* Memory alignment requirements: */ +/* +-----------------+----------+----------+----------+----------+ */ +/* | | 5706 | 5708 | 5709 | 5716 | */ +/* +-----------------+----------+----------+----------+----------+ */ +/* |Status Block | 8 bytes | 8 bytes | 16 bytes | 16 bytes | */ +/* |Statistics Block | 8 bytes | 8 bytes | 16 bytes | 16 bytes | */ +/* |RX Buffers | 16 bytes | 16 bytes | 16 bytes | 16 bytes | */ +/* |PG Buffers | none | none | none | none | */ +/* |TX Buffers | none | none | none | none | */ +/* |Chain Pages(1) | 4KiB | 4KiB | 4KiB | 4KiB | */ +/* |Context Memory | | | | | */ +/* +-----------------+----------+----------+----------+----------+ */ +/* */ +/* (1) Must align with CPU page size (BCM_PAGE_SZIE). */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/****************************************************************************/ +static int +bce_dma_alloc(device_t dev) +{ + struct bce_softc *sc; + int i, error, rc = 0; + bus_size_t max_size, max_seg_size; + int max_segments; + + sc = device_get_softc(dev); + + DBENTER(BCE_VERBOSE_RESET | BCE_VERBOSE_CTX); + + /* + * Allocate the parent bus DMA tag appropriate for PCI. + */ + if (bus_dma_tag_create(bus_get_dma_tag(dev), 1, BCE_DMA_BOUNDARY, + sc->max_bus_addr, BUS_SPACE_MAXADDR, NULL, NULL, + BUS_SPACE_MAXSIZE_32BIT, 0, BUS_SPACE_MAXSIZE_32BIT, 0, NULL, NULL, + &sc->parent_tag)) { + BCE_PRINTF("%s(%d): Could not allocate parent DMA tag!\n", + __FILE__, __LINE__); + rc = ENOMEM; + goto bce_dma_alloc_exit; + } + + /* + * Create a DMA tag for the status block, allocate and clear the + * memory, map the memory into DMA space, and fetch the physical + * address of the block. + */ + if (bus_dma_tag_create(sc->parent_tag, BCE_DMA_ALIGN, + BCE_DMA_BOUNDARY, sc->max_bus_addr, BUS_SPACE_MAXADDR, + NULL, NULL, BCE_STATUS_BLK_SZ, 1, BCE_STATUS_BLK_SZ, + 0, NULL, NULL, &sc->status_tag)) { + BCE_PRINTF("%s(%d): Could not allocate status block " + "DMA tag!\n", __FILE__, __LINE__); + rc = ENOMEM; + goto bce_dma_alloc_exit; + } + + if(bus_dmamem_alloc(sc->status_tag, (void **)&sc->status_block, + BUS_DMA_NOWAIT | BUS_DMA_ZERO | BUS_DMA_COHERENT, + &sc->status_map)) { + BCE_PRINTF("%s(%d): Could not allocate status block " + "DMA memory!\n", __FILE__, __LINE__); + rc = ENOMEM; + goto bce_dma_alloc_exit; + } + + error = bus_dmamap_load(sc->status_tag, sc->status_map, + sc->status_block, BCE_STATUS_BLK_SZ, bce_dma_map_addr, + &sc->status_block_paddr, BUS_DMA_NOWAIT); + + if (error) { + BCE_PRINTF("%s(%d): Could not map status block " + "DMA memory!\n", __FILE__, __LINE__); + rc = ENOMEM; + goto bce_dma_alloc_exit; + } + + DBPRINT(sc, BCE_INFO_LOAD, "%s(): status_block_paddr = 0x%jX\n", + __FUNCTION__, (uintmax_t) sc->status_block_paddr); + + /* + * Create a DMA tag for the statistics block, allocate and clear the + * memory, map the memory into DMA space, and fetch the physical + * address of the block. + */ + if (bus_dma_tag_create(sc->parent_tag, BCE_DMA_ALIGN, + BCE_DMA_BOUNDARY, sc->max_bus_addr, BUS_SPACE_MAXADDR, + NULL, NULL, BCE_STATS_BLK_SZ, 1, BCE_STATS_BLK_SZ, + 0, NULL, NULL, &sc->stats_tag)) { + BCE_PRINTF("%s(%d): Could not allocate statistics block " + "DMA tag!\n", __FILE__, __LINE__); + rc = ENOMEM; + goto bce_dma_alloc_exit; + } + + if (bus_dmamem_alloc(sc->stats_tag, (void **)&sc->stats_block, + BUS_DMA_NOWAIT | BUS_DMA_ZERO | BUS_DMA_COHERENT, &sc->stats_map)) { + BCE_PRINTF("%s(%d): Could not allocate statistics block " + "DMA memory!\n", __FILE__, __LINE__); + rc = ENOMEM; + goto bce_dma_alloc_exit; + } + + error = bus_dmamap_load(sc->stats_tag, sc->stats_map, + sc->stats_block, BCE_STATS_BLK_SZ, bce_dma_map_addr, + &sc->stats_block_paddr, BUS_DMA_NOWAIT); + + if(error) { + BCE_PRINTF("%s(%d): Could not map statistics block " + "DMA memory!\n", __FILE__, __LINE__); + rc = ENOMEM; + goto bce_dma_alloc_exit; + } + + DBPRINT(sc, BCE_INFO_LOAD, "%s(): stats_block_paddr = 0x%jX\n", + __FUNCTION__, (uintmax_t) sc->stats_block_paddr); + + /* BCM5709 uses host memory as cache for context memory. */ + if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || + (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { + sc->ctx_pages = 0x2000 / BCM_PAGE_SIZE; + if (sc->ctx_pages == 0) + sc->ctx_pages = 1; + + DBRUNIF((sc->ctx_pages > 512), + BCE_PRINTF("%s(%d): Too many CTX pages! %d > 512\n", + __FILE__, __LINE__, sc->ctx_pages)); + + /* + * Create a DMA tag for the context pages, + * allocate and clear the memory, map the + * memory into DMA space, and fetch the + * physical address of the block. + */ + if(bus_dma_tag_create(sc->parent_tag, BCM_PAGE_SIZE, + BCE_DMA_BOUNDARY, sc->max_bus_addr, BUS_SPACE_MAXADDR, + NULL, NULL, BCM_PAGE_SIZE, 1, BCM_PAGE_SIZE, + 0, NULL, NULL, &sc->ctx_tag)) { + BCE_PRINTF("%s(%d): Could not allocate CTX " + "DMA tag!\n", __FILE__, __LINE__); + rc = ENOMEM; + goto bce_dma_alloc_exit; + } + + for (i = 0; i < sc->ctx_pages; i++) { + + if(bus_dmamem_alloc(sc->ctx_tag, + (void **)&sc->ctx_block[i], + BUS_DMA_NOWAIT | BUS_DMA_ZERO | BUS_DMA_COHERENT, + &sc->ctx_map[i])) { + BCE_PRINTF("%s(%d): Could not allocate CTX " + "DMA memory!\n", __FILE__, __LINE__); + rc = ENOMEM; + goto bce_dma_alloc_exit; + } + + error = bus_dmamap_load(sc->ctx_tag, sc->ctx_map[i], + sc->ctx_block[i], BCM_PAGE_SIZE, bce_dma_map_addr, + &sc->ctx_paddr[i], BUS_DMA_NOWAIT); + + if (error) { + BCE_PRINTF("%s(%d): Could not map CTX " + "DMA memory!\n", __FILE__, __LINE__); + rc = ENOMEM; + goto bce_dma_alloc_exit; + } + + DBPRINT(sc, BCE_INFO_LOAD, "%s(): ctx_paddr[%d] " + "= 0x%jX\n", __FUNCTION__, i, + (uintmax_t) sc->ctx_paddr[i]); + } + } + + /* + * Create a DMA tag for the TX buffer descriptor chain, + * allocate and clear the memory, and fetch the + * physical address of the block. + */ + if(bus_dma_tag_create(sc->parent_tag, BCM_PAGE_SIZE, BCE_DMA_BOUNDARY, + sc->max_bus_addr, BUS_SPACE_MAXADDR, NULL, NULL, + BCE_TX_CHAIN_PAGE_SZ, 1, BCE_TX_CHAIN_PAGE_SZ, 0, + NULL, NULL, &sc->tx_bd_chain_tag)) { + BCE_PRINTF("%s(%d): Could not allocate TX descriptor " + "chain DMA tag!\n", __FILE__, __LINE__); + rc = ENOMEM; + goto bce_dma_alloc_exit; + } + + for (i = 0; i < TX_PAGES; i++) { + + if(bus_dmamem_alloc(sc->tx_bd_chain_tag, + (void **)&sc->tx_bd_chain[i], + BUS_DMA_NOWAIT | BUS_DMA_ZERO | BUS_DMA_COHERENT, + &sc->tx_bd_chain_map[i])) { + BCE_PRINTF("%s(%d): Could not allocate TX descriptor " + "chain DMA memory!\n", __FILE__, __LINE__); + rc = ENOMEM; + goto bce_dma_alloc_exit; + } + + error = bus_dmamap_load(sc->tx_bd_chain_tag, + sc->tx_bd_chain_map[i], sc->tx_bd_chain[i], + BCE_TX_CHAIN_PAGE_SZ, bce_dma_map_addr, + &sc->tx_bd_chain_paddr[i], BUS_DMA_NOWAIT); + + if (error) { + BCE_PRINTF("%s(%d): Could not map TX descriptor " + "chain DMA memory!\n", __FILE__, __LINE__); + rc = ENOMEM; + goto bce_dma_alloc_exit; + } + + DBPRINT(sc, BCE_INFO_LOAD, "%s(): tx_bd_chain_paddr[%d] = " + "0x%jX\n", __FUNCTION__, i, + (uintmax_t) sc->tx_bd_chain_paddr[i]); + } + + /* Check the required size before mapping to conserve resources. */ + if (bce_tso_enable) { + max_size = BCE_TSO_MAX_SIZE; + max_segments = BCE_MAX_SEGMENTS; + max_seg_size = BCE_TSO_MAX_SEG_SIZE; + } else { + max_size = MCLBYTES * BCE_MAX_SEGMENTS; + max_segments = BCE_MAX_SEGMENTS; + max_seg_size = MCLBYTES; + } + + /* Create a DMA tag for TX mbufs. */ + if (bus_dma_tag_create(sc->parent_tag, 1, BCE_DMA_BOUNDARY, + sc->max_bus_addr, BUS_SPACE_MAXADDR, NULL, NULL, max_size, + max_segments, max_seg_size, 0, NULL, NULL, &sc->tx_mbuf_tag)) { + BCE_PRINTF("%s(%d): Could not allocate TX mbuf DMA tag!\n", + __FILE__, __LINE__); + rc = ENOMEM; + goto bce_dma_alloc_exit; + } + + /* Create DMA maps for the TX mbufs clusters. */ + for (i = 0; i < TOTAL_TX_BD; i++) { + if (bus_dmamap_create(sc->tx_mbuf_tag, BUS_DMA_NOWAIT, + &sc->tx_mbuf_map[i])) { + BCE_PRINTF("%s(%d): Unable to create TX mbuf DMA " + "map!\n", __FILE__, __LINE__); + rc = ENOMEM; + goto bce_dma_alloc_exit; + } + } + + /* + * Create a DMA tag for the RX buffer descriptor chain, + * allocate and clear the memory, and fetch the physical + * address of the blocks. + */ + if (bus_dma_tag_create(sc->parent_tag, BCM_PAGE_SIZE, + BCE_DMA_BOUNDARY, BUS_SPACE_MAXADDR, + sc->max_bus_addr, NULL, NULL, + BCE_RX_CHAIN_PAGE_SZ, 1, BCE_RX_CHAIN_PAGE_SZ, + 0, NULL, NULL, &sc->rx_bd_chain_tag)) { + BCE_PRINTF("%s(%d): Could not allocate RX descriptor chain " + "DMA tag!\n", __FILE__, __LINE__); + rc = ENOMEM; + goto bce_dma_alloc_exit; + } + + for (i = 0; i < RX_PAGES; i++) { + + if (bus_dmamem_alloc(sc->rx_bd_chain_tag, + (void **)&sc->rx_bd_chain[i], + BUS_DMA_NOWAIT | BUS_DMA_ZERO | BUS_DMA_COHERENT, + &sc->rx_bd_chain_map[i])) { + BCE_PRINTF("%s(%d): Could not allocate RX descriptor " + "chain DMA memory!\n", __FILE__, __LINE__); + rc = ENOMEM; + goto bce_dma_alloc_exit; + } + + error = bus_dmamap_load(sc->rx_bd_chain_tag, + sc->rx_bd_chain_map[i], sc->rx_bd_chain[i], + BCE_RX_CHAIN_PAGE_SZ, bce_dma_map_addr, + &sc->rx_bd_chain_paddr[i], BUS_DMA_NOWAIT); + + if (error) { + BCE_PRINTF("%s(%d): Could not map RX descriptor " + "chain DMA memory!\n", __FILE__, __LINE__); + rc = ENOMEM; + goto bce_dma_alloc_exit; + } + + DBPRINT(sc, BCE_INFO_LOAD, "%s(): rx_bd_chain_paddr[%d] = " + "0x%jX\n", __FUNCTION__, i, + (uintmax_t) sc->rx_bd_chain_paddr[i]); + } + + /* + * Create a DMA tag for RX mbufs. + */ +#ifdef BCE_JUMBO_HDRSPLIT + max_size = max_seg_size = ((sc->rx_bd_mbuf_alloc_size < MCLBYTES) ? + MCLBYTES : sc->rx_bd_mbuf_alloc_size); +#else + max_size = max_seg_size = MJUM9BYTES; +#endif + max_segments = 1; + + DBPRINT(sc, BCE_INFO_LOAD, "%s(): Creating rx_mbuf_tag " + "(max size = 0x%jX max segments = %d, max segment " + "size = 0x%jX)\n", __FUNCTION__, (uintmax_t) max_size, + max_segments, (uintmax_t) max_seg_size); + + if (bus_dma_tag_create(sc->parent_tag, BCE_RX_BUF_ALIGN, + BCE_DMA_BOUNDARY, sc->max_bus_addr, BUS_SPACE_MAXADDR, NULL, NULL, + max_size, max_segments, max_seg_size, 0, NULL, NULL, + &sc->rx_mbuf_tag)) { + BCE_PRINTF("%s(%d): Could not allocate RX mbuf DMA tag!\n", + __FILE__, __LINE__); + rc = ENOMEM; + goto bce_dma_alloc_exit; + } + + /* Create DMA maps for the RX mbuf clusters. */ + for (i = 0; i < TOTAL_RX_BD; i++) { + if (bus_dmamap_create(sc->rx_mbuf_tag, BUS_DMA_NOWAIT, + &sc->rx_mbuf_map[i])) { + BCE_PRINTF("%s(%d): Unable to create RX mbuf " + "DMA map!\n", __FILE__, __LINE__); + rc = ENOMEM; + goto bce_dma_alloc_exit; + } + } + +#ifdef BCE_JUMBO_HDRSPLIT + /* + * Create a DMA tag for the page buffer descriptor chain, + * allocate and clear the memory, and fetch the physical + * address of the blocks. + */ + if (bus_dma_tag_create(sc->parent_tag, BCM_PAGE_SIZE, + BCE_DMA_BOUNDARY, BUS_SPACE_MAXADDR, sc->max_bus_addr, + NULL, NULL, BCE_PG_CHAIN_PAGE_SZ, 1, BCE_PG_CHAIN_PAGE_SZ, + 0, NULL, NULL, &sc->pg_bd_chain_tag)) { + BCE_PRINTF("%s(%d): Could not allocate page descriptor " + "chain DMA tag!\n", __FILE__, __LINE__); + rc = ENOMEM; + goto bce_dma_alloc_exit; + } + + for (i = 0; i < PG_PAGES; i++) { + + if (bus_dmamem_alloc(sc->pg_bd_chain_tag, + (void **)&sc->pg_bd_chain[i], + BUS_DMA_NOWAIT | BUS_DMA_ZERO | BUS_DMA_COHERENT, + &sc->pg_bd_chain_map[i])) { + BCE_PRINTF("%s(%d): Could not allocate page " + "descriptor chain DMA memory!\n", + __FILE__, __LINE__); + rc = ENOMEM; + goto bce_dma_alloc_exit; + } + + error = bus_dmamap_load(sc->pg_bd_chain_tag, + sc->pg_bd_chain_map[i], sc->pg_bd_chain[i], + BCE_PG_CHAIN_PAGE_SZ, bce_dma_map_addr, + &sc->pg_bd_chain_paddr[i], BUS_DMA_NOWAIT); + + if (error) { + BCE_PRINTF("%s(%d): Could not map page descriptor " + "chain DMA memory!\n", __FILE__, __LINE__); + rc = ENOMEM; + goto bce_dma_alloc_exit; + } + + DBPRINT(sc, BCE_INFO_LOAD, "%s(): pg_bd_chain_paddr[%d] = " + "0x%jX\n", __FUNCTION__, i, + (uintmax_t) sc->pg_bd_chain_paddr[i]); + } + + /* + * Create a DMA tag for page mbufs. + */ + max_size = max_seg_size = ((sc->pg_bd_mbuf_alloc_size < MCLBYTES) ? + MCLBYTES : sc->pg_bd_mbuf_alloc_size); + + if (bus_dma_tag_create(sc->parent_tag, 1, BCE_DMA_BOUNDARY, + sc->max_bus_addr, BUS_SPACE_MAXADDR, NULL, NULL, + max_size, 1, max_seg_size, 0, NULL, NULL, &sc->pg_mbuf_tag)) { + BCE_PRINTF("%s(%d): Could not allocate page mbuf " + "DMA tag!\n", __FILE__, __LINE__); + rc = ENOMEM; + goto bce_dma_alloc_exit; + } + + /* Create DMA maps for the page mbuf clusters. */ + for (i = 0; i < TOTAL_PG_BD; i++) { + if (bus_dmamap_create(sc->pg_mbuf_tag, BUS_DMA_NOWAIT, + &sc->pg_mbuf_map[i])) { + BCE_PRINTF("%s(%d): Unable to create page mbuf " + "DMA map!\n", __FILE__, __LINE__); + rc = ENOMEM; + goto bce_dma_alloc_exit; + } + } +#endif + +bce_dma_alloc_exit: + DBEXIT(BCE_VERBOSE_RESET | BCE_VERBOSE_CTX); + return(rc); +} + + +/****************************************************************************/ +/* Release all resources used by the driver. */ +/* */ +/* Releases all resources acquired by the driver including interrupts, */ +/* interrupt handler, interfaces, mutexes, and DMA memory. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_release_resources(struct bce_softc *sc) +{ + device_t dev; + + DBENTER(BCE_VERBOSE_RESET); + + dev = sc->bce_dev; + + bce_dma_free(sc); + + if (sc->bce_intrhand != NULL) { + DBPRINT(sc, BCE_INFO_RESET, "Removing interrupt handler.\n"); + bus_teardown_intr(dev, sc->bce_res_irq, sc->bce_intrhand); + } + + if (sc->bce_res_irq != NULL) { + DBPRINT(sc, BCE_INFO_RESET, "Releasing IRQ.\n"); + bus_release_resource(dev, SYS_RES_IRQ, sc->bce_irq_rid, + sc->bce_res_irq); + } + + if (sc->bce_flags & (BCE_USING_MSI_FLAG | BCE_USING_MSIX_FLAG)) { + DBPRINT(sc, BCE_INFO_RESET, "Releasing MSI/MSI-X vector.\n"); + pci_release_msi(dev); + } + + if (sc->bce_res_mem != NULL) { + DBPRINT(sc, BCE_INFO_RESET, "Releasing PCI memory.\n"); + bus_release_resource(dev, SYS_RES_MEMORY, PCIR_BAR(0), + sc->bce_res_mem); + } + + if (sc->bce_ifp != NULL) { + DBPRINT(sc, BCE_INFO_RESET, "Releasing IF.\n"); + if_free(sc->bce_ifp); + } + + if (mtx_initialized(&sc->bce_mtx)) + BCE_LOCK_DESTROY(sc); + + DBEXIT(BCE_VERBOSE_RESET); +} + + +/****************************************************************************/ +/* Firmware synchronization. */ +/* */ +/* Before performing certain events such as a chip reset, synchronize with */ +/* the firmware first. */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/****************************************************************************/ +static int +bce_fw_sync(struct bce_softc *sc, u32 msg_data) +{ + int i, rc = 0; + u32 val; + + DBENTER(BCE_VERBOSE_RESET); + + /* Don't waste any time if we've timed out before. */ + if (sc->bce_fw_timed_out == TRUE) { + rc = EBUSY; + goto bce_fw_sync_exit; + } + + /* Increment the message sequence number. */ + sc->bce_fw_wr_seq++; + msg_data |= sc->bce_fw_wr_seq; + + DBPRINT(sc, BCE_VERBOSE_FIRMWARE, "bce_fw_sync(): msg_data = " + "0x%08X\n", msg_data); + + /* Send the message to the bootcode driver mailbox. */ + bce_shmem_wr(sc, BCE_DRV_MB, msg_data); + + /* Wait for the bootcode to acknowledge the message. */ + for (i = 0; i < FW_ACK_TIME_OUT_MS; i++) { + /* Check for a response in the bootcode firmware mailbox. */ + val = bce_shmem_rd(sc, BCE_FW_MB); + if ((val & BCE_FW_MSG_ACK) == (msg_data & BCE_DRV_MSG_SEQ)) + break; + DELAY(1000); + } + + /* If we've timed out, tell bootcode that we've stopped waiting. */ + if (((val & BCE_FW_MSG_ACK) != (msg_data & BCE_DRV_MSG_SEQ)) && + ((msg_data & BCE_DRV_MSG_DATA) != BCE_DRV_MSG_DATA_WAIT0)) { + + BCE_PRINTF("%s(%d): Firmware synchronization timeout! " + "msg_data = 0x%08X\n", __FILE__, __LINE__, msg_data); + + msg_data &= ~BCE_DRV_MSG_CODE; + msg_data |= BCE_DRV_MSG_CODE_FW_TIMEOUT; + + bce_shmem_wr(sc, BCE_DRV_MB, msg_data); + + sc->bce_fw_timed_out = TRUE; + rc = EBUSY; + } + +bce_fw_sync_exit: + DBEXIT(BCE_VERBOSE_RESET); + return (rc); +} + + +/****************************************************************************/ +/* Load Receive Virtual 2 Physical (RV2P) processor firmware. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_load_rv2p_fw(struct bce_softc *sc, u32 *rv2p_code, + u32 rv2p_code_len, u32 rv2p_proc) +{ + int i; + u32 val; + + DBENTER(BCE_VERBOSE_RESET); + + /* Set the page size used by RV2P. */ + if (rv2p_proc == RV2P_PROC2) { + BCE_RV2P_PROC2_CHG_MAX_BD_PAGE(USABLE_RX_BD_PER_PAGE); + } + + for (i = 0; i < rv2p_code_len; i += 8) { + REG_WR(sc, BCE_RV2P_INSTR_HIGH, *rv2p_code); + rv2p_code++; + REG_WR(sc, BCE_RV2P_INSTR_LOW, *rv2p_code); + rv2p_code++; + + if (rv2p_proc == RV2P_PROC1) { + val = (i / 8) | BCE_RV2P_PROC1_ADDR_CMD_RDWR; + REG_WR(sc, BCE_RV2P_PROC1_ADDR_CMD, val); + } + else { + val = (i / 8) | BCE_RV2P_PROC2_ADDR_CMD_RDWR; + REG_WR(sc, BCE_RV2P_PROC2_ADDR_CMD, val); + } + } + + /* Reset the processor, un-stall is done later. */ + if (rv2p_proc == RV2P_PROC1) { + REG_WR(sc, BCE_RV2P_COMMAND, BCE_RV2P_COMMAND_PROC1_RESET); + } + else { + REG_WR(sc, BCE_RV2P_COMMAND, BCE_RV2P_COMMAND_PROC2_RESET); + } + + DBEXIT(BCE_VERBOSE_RESET); +} + + +/****************************************************************************/ +/* Load RISC processor firmware. */ +/* */ +/* Loads firmware from the file if_bcefw.h into the scratchpad memory */ +/* associated with a particular processor. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_load_cpu_fw(struct bce_softc *sc, struct cpu_reg *cpu_reg, + struct fw_info *fw) +{ + u32 offset; + + DBENTER(BCE_VERBOSE_RESET); + + bce_halt_cpu(sc, cpu_reg); + + /* Load the Text area. */ + offset = cpu_reg->spad_base + (fw->text_addr - cpu_reg->mips_view_base); + if (fw->text) { + int j; + + for (j = 0; j < (fw->text_len / 4); j++, offset += 4) { + REG_WR_IND(sc, offset, fw->text[j]); + } + } + + /* Load the Data area. */ + offset = cpu_reg->spad_base + (fw->data_addr - cpu_reg->mips_view_base); + if (fw->data) { + int j; + + for (j = 0; j < (fw->data_len / 4); j++, offset += 4) { + REG_WR_IND(sc, offset, fw->data[j]); + } + } + + /* Load the SBSS area. */ + offset = cpu_reg->spad_base + (fw->sbss_addr - cpu_reg->mips_view_base); + if (fw->sbss) { + int j; + + for (j = 0; j < (fw->sbss_len / 4); j++, offset += 4) { + REG_WR_IND(sc, offset, fw->sbss[j]); + } + } + + /* Load the BSS area. */ + offset = cpu_reg->spad_base + (fw->bss_addr - cpu_reg->mips_view_base); + if (fw->bss) { + int j; + + for (j = 0; j < (fw->bss_len/4); j++, offset += 4) { + REG_WR_IND(sc, offset, fw->bss[j]); + } + } + + /* Load the Read-Only area. */ + offset = cpu_reg->spad_base + + (fw->rodata_addr - cpu_reg->mips_view_base); + if (fw->rodata) { + int j; + + for (j = 0; j < (fw->rodata_len / 4); j++, offset += 4) { + REG_WR_IND(sc, offset, fw->rodata[j]); + } + } + + /* Clear the pre-fetch instruction and set the FW start address. */ + REG_WR_IND(sc, cpu_reg->inst, 0); + REG_WR_IND(sc, cpu_reg->pc, fw->start_addr); + + DBEXIT(BCE_VERBOSE_RESET); +} + + +/****************************************************************************/ +/* Starts the RISC processor. */ +/* */ +/* Assumes the CPU starting address has already been set. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_start_cpu(struct bce_softc *sc, struct cpu_reg *cpu_reg) +{ + u32 val; + + DBENTER(BCE_VERBOSE_RESET); + + /* Start the CPU. */ + val = REG_RD_IND(sc, cpu_reg->mode); + val &= ~cpu_reg->mode_value_halt; + REG_WR_IND(sc, cpu_reg->state, cpu_reg->state_value_clear); + REG_WR_IND(sc, cpu_reg->mode, val); + + DBEXIT(BCE_VERBOSE_RESET); +} + + +/****************************************************************************/ +/* Halts the RISC processor. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_halt_cpu(struct bce_softc *sc, struct cpu_reg *cpu_reg) +{ + u32 val; + + DBENTER(BCE_VERBOSE_RESET); + + /* Halt the CPU. */ + val = REG_RD_IND(sc, cpu_reg->mode); + val |= cpu_reg->mode_value_halt; + REG_WR_IND(sc, cpu_reg->mode, val); + REG_WR_IND(sc, cpu_reg->state, cpu_reg->state_value_clear); + + DBEXIT(BCE_VERBOSE_RESET); +} + + +/****************************************************************************/ +/* Initialize the RX CPU. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_start_rxp_cpu(struct bce_softc *sc) +{ + struct cpu_reg cpu_reg; + + DBENTER(BCE_VERBOSE_RESET); + + cpu_reg.mode = BCE_RXP_CPU_MODE; + cpu_reg.mode_value_halt = BCE_RXP_CPU_MODE_SOFT_HALT; + cpu_reg.mode_value_sstep = BCE_RXP_CPU_MODE_STEP_ENA; + cpu_reg.state = BCE_RXP_CPU_STATE; + cpu_reg.state_value_clear = 0xffffff; + cpu_reg.gpr0 = BCE_RXP_CPU_REG_FILE; + cpu_reg.evmask = BCE_RXP_CPU_EVENT_MASK; + cpu_reg.pc = BCE_RXP_CPU_PROGRAM_COUNTER; + cpu_reg.inst = BCE_RXP_CPU_INSTRUCTION; + cpu_reg.bp = BCE_RXP_CPU_HW_BREAKPOINT; + cpu_reg.spad_base = BCE_RXP_SCRATCH; + cpu_reg.mips_view_base = 0x8000000; + + DBPRINT(sc, BCE_INFO_RESET, "Starting RX firmware.\n"); + bce_start_cpu(sc, &cpu_reg); + + DBEXIT(BCE_VERBOSE_RESET); +} + + +/****************************************************************************/ +/* Initialize the RX CPU. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_init_rxp_cpu(struct bce_softc *sc) +{ + struct cpu_reg cpu_reg; + struct fw_info fw; + + DBENTER(BCE_VERBOSE_RESET); + + cpu_reg.mode = BCE_RXP_CPU_MODE; + cpu_reg.mode_value_halt = BCE_RXP_CPU_MODE_SOFT_HALT; + cpu_reg.mode_value_sstep = BCE_RXP_CPU_MODE_STEP_ENA; + cpu_reg.state = BCE_RXP_CPU_STATE; + cpu_reg.state_value_clear = 0xffffff; + cpu_reg.gpr0 = BCE_RXP_CPU_REG_FILE; + cpu_reg.evmask = BCE_RXP_CPU_EVENT_MASK; + cpu_reg.pc = BCE_RXP_CPU_PROGRAM_COUNTER; + cpu_reg.inst = BCE_RXP_CPU_INSTRUCTION; + cpu_reg.bp = BCE_RXP_CPU_HW_BREAKPOINT; + cpu_reg.spad_base = BCE_RXP_SCRATCH; + cpu_reg.mips_view_base = 0x8000000; + + if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || + (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { + fw.ver_major = bce_RXP_b09FwReleaseMajor; + fw.ver_minor = bce_RXP_b09FwReleaseMinor; + fw.ver_fix = bce_RXP_b09FwReleaseFix; + fw.start_addr = bce_RXP_b09FwStartAddr; + + fw.text_addr = bce_RXP_b09FwTextAddr; + fw.text_len = bce_RXP_b09FwTextLen; + fw.text_index = 0; + fw.text = bce_RXP_b09FwText; + + fw.data_addr = bce_RXP_b09FwDataAddr; + fw.data_len = bce_RXP_b09FwDataLen; + fw.data_index = 0; + fw.data = bce_RXP_b09FwData; + + fw.sbss_addr = bce_RXP_b09FwSbssAddr; + fw.sbss_len = bce_RXP_b09FwSbssLen; + fw.sbss_index = 0; + fw.sbss = bce_RXP_b09FwSbss; + + fw.bss_addr = bce_RXP_b09FwBssAddr; + fw.bss_len = bce_RXP_b09FwBssLen; + fw.bss_index = 0; + fw.bss = bce_RXP_b09FwBss; + + fw.rodata_addr = bce_RXP_b09FwRodataAddr; + fw.rodata_len = bce_RXP_b09FwRodataLen; + fw.rodata_index = 0; + fw.rodata = bce_RXP_b09FwRodata; + } else { + fw.ver_major = bce_RXP_b06FwReleaseMajor; + fw.ver_minor = bce_RXP_b06FwReleaseMinor; + fw.ver_fix = bce_RXP_b06FwReleaseFix; + fw.start_addr = bce_RXP_b06FwStartAddr; + + fw.text_addr = bce_RXP_b06FwTextAddr; + fw.text_len = bce_RXP_b06FwTextLen; + fw.text_index = 0; + fw.text = bce_RXP_b06FwText; + + fw.data_addr = bce_RXP_b06FwDataAddr; + fw.data_len = bce_RXP_b06FwDataLen; + fw.data_index = 0; + fw.data = bce_RXP_b06FwData; + + fw.sbss_addr = bce_RXP_b06FwSbssAddr; + fw.sbss_len = bce_RXP_b06FwSbssLen; + fw.sbss_index = 0; + fw.sbss = bce_RXP_b06FwSbss; + + fw.bss_addr = bce_RXP_b06FwBssAddr; + fw.bss_len = bce_RXP_b06FwBssLen; + fw.bss_index = 0; + fw.bss = bce_RXP_b06FwBss; + + fw.rodata_addr = bce_RXP_b06FwRodataAddr; + fw.rodata_len = bce_RXP_b06FwRodataLen; + fw.rodata_index = 0; + fw.rodata = bce_RXP_b06FwRodata; + } + + DBPRINT(sc, BCE_INFO_RESET, "Loading RX firmware.\n"); + bce_load_cpu_fw(sc, &cpu_reg, &fw); + + /* Delay RXP start until initialization is complete. */ + + DBEXIT(BCE_VERBOSE_RESET); +} + + +/****************************************************************************/ +/* Initialize the TX CPU. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_init_txp_cpu(struct bce_softc *sc) +{ + struct cpu_reg cpu_reg; + struct fw_info fw; + + DBENTER(BCE_VERBOSE_RESET); + + cpu_reg.mode = BCE_TXP_CPU_MODE; + cpu_reg.mode_value_halt = BCE_TXP_CPU_MODE_SOFT_HALT; + cpu_reg.mode_value_sstep = BCE_TXP_CPU_MODE_STEP_ENA; + cpu_reg.state = BCE_TXP_CPU_STATE; + cpu_reg.state_value_clear = 0xffffff; + cpu_reg.gpr0 = BCE_TXP_CPU_REG_FILE; + cpu_reg.evmask = BCE_TXP_CPU_EVENT_MASK; + cpu_reg.pc = BCE_TXP_CPU_PROGRAM_COUNTER; + cpu_reg.inst = BCE_TXP_CPU_INSTRUCTION; + cpu_reg.bp = BCE_TXP_CPU_HW_BREAKPOINT; + cpu_reg.spad_base = BCE_TXP_SCRATCH; + cpu_reg.mips_view_base = 0x8000000; + + if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || + (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { + fw.ver_major = bce_TXP_b09FwReleaseMajor; + fw.ver_minor = bce_TXP_b09FwReleaseMinor; + fw.ver_fix = bce_TXP_b09FwReleaseFix; + fw.start_addr = bce_TXP_b09FwStartAddr; + + fw.text_addr = bce_TXP_b09FwTextAddr; + fw.text_len = bce_TXP_b09FwTextLen; + fw.text_index = 0; + fw.text = bce_TXP_b09FwText; + + fw.data_addr = bce_TXP_b09FwDataAddr; + fw.data_len = bce_TXP_b09FwDataLen; + fw.data_index = 0; + fw.data = bce_TXP_b09FwData; + + fw.sbss_addr = bce_TXP_b09FwSbssAddr; + fw.sbss_len = bce_TXP_b09FwSbssLen; + fw.sbss_index = 0; + fw.sbss = bce_TXP_b09FwSbss; + + fw.bss_addr = bce_TXP_b09FwBssAddr; + fw.bss_len = bce_TXP_b09FwBssLen; + fw.bss_index = 0; + fw.bss = bce_TXP_b09FwBss; + + fw.rodata_addr = bce_TXP_b09FwRodataAddr; + fw.rodata_len = bce_TXP_b09FwRodataLen; + fw.rodata_index = 0; + fw.rodata = bce_TXP_b09FwRodata; + } else { + fw.ver_major = bce_TXP_b06FwReleaseMajor; + fw.ver_minor = bce_TXP_b06FwReleaseMinor; + fw.ver_fix = bce_TXP_b06FwReleaseFix; + fw.start_addr = bce_TXP_b06FwStartAddr; + + fw.text_addr = bce_TXP_b06FwTextAddr; + fw.text_len = bce_TXP_b06FwTextLen; + fw.text_index = 0; + fw.text = bce_TXP_b06FwText; + + fw.data_addr = bce_TXP_b06FwDataAddr; + fw.data_len = bce_TXP_b06FwDataLen; + fw.data_index = 0; + fw.data = bce_TXP_b06FwData; + + fw.sbss_addr = bce_TXP_b06FwSbssAddr; + fw.sbss_len = bce_TXP_b06FwSbssLen; + fw.sbss_index = 0; + fw.sbss = bce_TXP_b06FwSbss; + + fw.bss_addr = bce_TXP_b06FwBssAddr; + fw.bss_len = bce_TXP_b06FwBssLen; + fw.bss_index = 0; + fw.bss = bce_TXP_b06FwBss; + + fw.rodata_addr = bce_TXP_b06FwRodataAddr; + fw.rodata_len = bce_TXP_b06FwRodataLen; + fw.rodata_index = 0; + fw.rodata = bce_TXP_b06FwRodata; + } + + DBPRINT(sc, BCE_INFO_RESET, "Loading TX firmware.\n"); + bce_load_cpu_fw(sc, &cpu_reg, &fw); + bce_start_cpu(sc, &cpu_reg); + + DBEXIT(BCE_VERBOSE_RESET); +} + + +/****************************************************************************/ +/* Initialize the TPAT CPU. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_init_tpat_cpu(struct bce_softc *sc) +{ + struct cpu_reg cpu_reg; + struct fw_info fw; + + DBENTER(BCE_VERBOSE_RESET); + + cpu_reg.mode = BCE_TPAT_CPU_MODE; + cpu_reg.mode_value_halt = BCE_TPAT_CPU_MODE_SOFT_HALT; + cpu_reg.mode_value_sstep = BCE_TPAT_CPU_MODE_STEP_ENA; + cpu_reg.state = BCE_TPAT_CPU_STATE; + cpu_reg.state_value_clear = 0xffffff; + cpu_reg.gpr0 = BCE_TPAT_CPU_REG_FILE; + cpu_reg.evmask = BCE_TPAT_CPU_EVENT_MASK; + cpu_reg.pc = BCE_TPAT_CPU_PROGRAM_COUNTER; + cpu_reg.inst = BCE_TPAT_CPU_INSTRUCTION; + cpu_reg.bp = BCE_TPAT_CPU_HW_BREAKPOINT; + cpu_reg.spad_base = BCE_TPAT_SCRATCH; + cpu_reg.mips_view_base = 0x8000000; + + if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || + (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { + fw.ver_major = bce_TPAT_b09FwReleaseMajor; + fw.ver_minor = bce_TPAT_b09FwReleaseMinor; + fw.ver_fix = bce_TPAT_b09FwReleaseFix; + fw.start_addr = bce_TPAT_b09FwStartAddr; + + fw.text_addr = bce_TPAT_b09FwTextAddr; + fw.text_len = bce_TPAT_b09FwTextLen; + fw.text_index = 0; + fw.text = bce_TPAT_b09FwText; + + fw.data_addr = bce_TPAT_b09FwDataAddr; + fw.data_len = bce_TPAT_b09FwDataLen; + fw.data_index = 0; + fw.data = bce_TPAT_b09FwData; + + fw.sbss_addr = bce_TPAT_b09FwSbssAddr; + fw.sbss_len = bce_TPAT_b09FwSbssLen; + fw.sbss_index = 0; + fw.sbss = bce_TPAT_b09FwSbss; + + fw.bss_addr = bce_TPAT_b09FwBssAddr; + fw.bss_len = bce_TPAT_b09FwBssLen; + fw.bss_index = 0; + fw.bss = bce_TPAT_b09FwBss; + + fw.rodata_addr = bce_TPAT_b09FwRodataAddr; + fw.rodata_len = bce_TPAT_b09FwRodataLen; + fw.rodata_index = 0; + fw.rodata = bce_TPAT_b09FwRodata; + } else { + fw.ver_major = bce_TPAT_b06FwReleaseMajor; + fw.ver_minor = bce_TPAT_b06FwReleaseMinor; + fw.ver_fix = bce_TPAT_b06FwReleaseFix; + fw.start_addr = bce_TPAT_b06FwStartAddr; + + fw.text_addr = bce_TPAT_b06FwTextAddr; + fw.text_len = bce_TPAT_b06FwTextLen; + fw.text_index = 0; + fw.text = bce_TPAT_b06FwText; + + fw.data_addr = bce_TPAT_b06FwDataAddr; + fw.data_len = bce_TPAT_b06FwDataLen; + fw.data_index = 0; + fw.data = bce_TPAT_b06FwData; + + fw.sbss_addr = bce_TPAT_b06FwSbssAddr; + fw.sbss_len = bce_TPAT_b06FwSbssLen; + fw.sbss_index = 0; + fw.sbss = bce_TPAT_b06FwSbss; + + fw.bss_addr = bce_TPAT_b06FwBssAddr; + fw.bss_len = bce_TPAT_b06FwBssLen; + fw.bss_index = 0; + fw.bss = bce_TPAT_b06FwBss; + + fw.rodata_addr = bce_TPAT_b06FwRodataAddr; + fw.rodata_len = bce_TPAT_b06FwRodataLen; + fw.rodata_index = 0; + fw.rodata = bce_TPAT_b06FwRodata; + } + + DBPRINT(sc, BCE_INFO_RESET, "Loading TPAT firmware.\n"); + bce_load_cpu_fw(sc, &cpu_reg, &fw); + bce_start_cpu(sc, &cpu_reg); + + DBEXIT(BCE_VERBOSE_RESET); +} + + +/****************************************************************************/ +/* Initialize the CP CPU. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_init_cp_cpu(struct bce_softc *sc) +{ + struct cpu_reg cpu_reg; + struct fw_info fw; + + DBENTER(BCE_VERBOSE_RESET); + + cpu_reg.mode = BCE_CP_CPU_MODE; + cpu_reg.mode_value_halt = BCE_CP_CPU_MODE_SOFT_HALT; + cpu_reg.mode_value_sstep = BCE_CP_CPU_MODE_STEP_ENA; + cpu_reg.state = BCE_CP_CPU_STATE; + cpu_reg.state_value_clear = 0xffffff; + cpu_reg.gpr0 = BCE_CP_CPU_REG_FILE; + cpu_reg.evmask = BCE_CP_CPU_EVENT_MASK; + cpu_reg.pc = BCE_CP_CPU_PROGRAM_COUNTER; + cpu_reg.inst = BCE_CP_CPU_INSTRUCTION; + cpu_reg.bp = BCE_CP_CPU_HW_BREAKPOINT; + cpu_reg.spad_base = BCE_CP_SCRATCH; + cpu_reg.mips_view_base = 0x8000000; + + if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || + (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { + fw.ver_major = bce_CP_b09FwReleaseMajor; + fw.ver_minor = bce_CP_b09FwReleaseMinor; + fw.ver_fix = bce_CP_b09FwReleaseFix; + fw.start_addr = bce_CP_b09FwStartAddr; + + fw.text_addr = bce_CP_b09FwTextAddr; + fw.text_len = bce_CP_b09FwTextLen; + fw.text_index = 0; + fw.text = bce_CP_b09FwText; + + fw.data_addr = bce_CP_b09FwDataAddr; + fw.data_len = bce_CP_b09FwDataLen; + fw.data_index = 0; + fw.data = bce_CP_b09FwData; + + fw.sbss_addr = bce_CP_b09FwSbssAddr; + fw.sbss_len = bce_CP_b09FwSbssLen; + fw.sbss_index = 0; + fw.sbss = bce_CP_b09FwSbss; + + fw.bss_addr = bce_CP_b09FwBssAddr; + fw.bss_len = bce_CP_b09FwBssLen; + fw.bss_index = 0; + fw.bss = bce_CP_b09FwBss; + + fw.rodata_addr = bce_CP_b09FwRodataAddr; + fw.rodata_len = bce_CP_b09FwRodataLen; + fw.rodata_index = 0; + fw.rodata = bce_CP_b09FwRodata; + } else { + fw.ver_major = bce_CP_b06FwReleaseMajor; + fw.ver_minor = bce_CP_b06FwReleaseMinor; + fw.ver_fix = bce_CP_b06FwReleaseFix; + fw.start_addr = bce_CP_b06FwStartAddr; + + fw.text_addr = bce_CP_b06FwTextAddr; + fw.text_len = bce_CP_b06FwTextLen; + fw.text_index = 0; + fw.text = bce_CP_b06FwText; + + fw.data_addr = bce_CP_b06FwDataAddr; + fw.data_len = bce_CP_b06FwDataLen; + fw.data_index = 0; + fw.data = bce_CP_b06FwData; + + fw.sbss_addr = bce_CP_b06FwSbssAddr; + fw.sbss_len = bce_CP_b06FwSbssLen; + fw.sbss_index = 0; + fw.sbss = bce_CP_b06FwSbss; + + fw.bss_addr = bce_CP_b06FwBssAddr; + fw.bss_len = bce_CP_b06FwBssLen; + fw.bss_index = 0; + fw.bss = bce_CP_b06FwBss; + + fw.rodata_addr = bce_CP_b06FwRodataAddr; + fw.rodata_len = bce_CP_b06FwRodataLen; + fw.rodata_index = 0; + fw.rodata = bce_CP_b06FwRodata; + } + + DBPRINT(sc, BCE_INFO_RESET, "Loading CP firmware.\n"); + bce_load_cpu_fw(sc, &cpu_reg, &fw); + bce_start_cpu(sc, &cpu_reg); + + DBEXIT(BCE_VERBOSE_RESET); +} + + +/****************************************************************************/ +/* Initialize the COM CPU. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_init_com_cpu(struct bce_softc *sc) +{ + struct cpu_reg cpu_reg; + struct fw_info fw; + + DBENTER(BCE_VERBOSE_RESET); + + cpu_reg.mode = BCE_COM_CPU_MODE; + cpu_reg.mode_value_halt = BCE_COM_CPU_MODE_SOFT_HALT; + cpu_reg.mode_value_sstep = BCE_COM_CPU_MODE_STEP_ENA; + cpu_reg.state = BCE_COM_CPU_STATE; + cpu_reg.state_value_clear = 0xffffff; + cpu_reg.gpr0 = BCE_COM_CPU_REG_FILE; + cpu_reg.evmask = BCE_COM_CPU_EVENT_MASK; + cpu_reg.pc = BCE_COM_CPU_PROGRAM_COUNTER; + cpu_reg.inst = BCE_COM_CPU_INSTRUCTION; + cpu_reg.bp = BCE_COM_CPU_HW_BREAKPOINT; + cpu_reg.spad_base = BCE_COM_SCRATCH; + cpu_reg.mips_view_base = 0x8000000; + + if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || + (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { + fw.ver_major = bce_COM_b09FwReleaseMajor; + fw.ver_minor = bce_COM_b09FwReleaseMinor; + fw.ver_fix = bce_COM_b09FwReleaseFix; + fw.start_addr = bce_COM_b09FwStartAddr; + + fw.text_addr = bce_COM_b09FwTextAddr; + fw.text_len = bce_COM_b09FwTextLen; + fw.text_index = 0; + fw.text = bce_COM_b09FwText; + + fw.data_addr = bce_COM_b09FwDataAddr; + fw.data_len = bce_COM_b09FwDataLen; + fw.data_index = 0; + fw.data = bce_COM_b09FwData; + + fw.sbss_addr = bce_COM_b09FwSbssAddr; + fw.sbss_len = bce_COM_b09FwSbssLen; + fw.sbss_index = 0; + fw.sbss = bce_COM_b09FwSbss; + + fw.bss_addr = bce_COM_b09FwBssAddr; + fw.bss_len = bce_COM_b09FwBssLen; + fw.bss_index = 0; + fw.bss = bce_COM_b09FwBss; + + fw.rodata_addr = bce_COM_b09FwRodataAddr; + fw.rodata_len = bce_COM_b09FwRodataLen; + fw.rodata_index = 0; + fw.rodata = bce_COM_b09FwRodata; + } else { + fw.ver_major = bce_COM_b06FwReleaseMajor; + fw.ver_minor = bce_COM_b06FwReleaseMinor; + fw.ver_fix = bce_COM_b06FwReleaseFix; + fw.start_addr = bce_COM_b06FwStartAddr; + + fw.text_addr = bce_COM_b06FwTextAddr; + fw.text_len = bce_COM_b06FwTextLen; + fw.text_index = 0; + fw.text = bce_COM_b06FwText; + + fw.data_addr = bce_COM_b06FwDataAddr; + fw.data_len = bce_COM_b06FwDataLen; + fw.data_index = 0; + fw.data = bce_COM_b06FwData; + + fw.sbss_addr = bce_COM_b06FwSbssAddr; + fw.sbss_len = bce_COM_b06FwSbssLen; + fw.sbss_index = 0; + fw.sbss = bce_COM_b06FwSbss; + + fw.bss_addr = bce_COM_b06FwBssAddr; + fw.bss_len = bce_COM_b06FwBssLen; + fw.bss_index = 0; + fw.bss = bce_COM_b06FwBss; + + fw.rodata_addr = bce_COM_b06FwRodataAddr; + fw.rodata_len = bce_COM_b06FwRodataLen; + fw.rodata_index = 0; + fw.rodata = bce_COM_b06FwRodata; + } + + DBPRINT(sc, BCE_INFO_RESET, "Loading COM firmware.\n"); + bce_load_cpu_fw(sc, &cpu_reg, &fw); + bce_start_cpu(sc, &cpu_reg); + + DBEXIT(BCE_VERBOSE_RESET); +} + + +/****************************************************************************/ +/* Initialize the RV2P, RX, TX, TPAT, COM, and CP CPUs. */ +/* */ +/* Loads the firmware for each CPU and starts the CPU. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_init_cpus(struct bce_softc *sc) +{ + DBENTER(BCE_VERBOSE_RESET); + + if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || + (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { + + if ((BCE_CHIP_REV(sc) == BCE_CHIP_REV_Ax)) { + bce_load_rv2p_fw(sc, bce_xi90_rv2p_proc1, + sizeof(bce_xi90_rv2p_proc1), RV2P_PROC1); + bce_load_rv2p_fw(sc, bce_xi90_rv2p_proc2, + sizeof(bce_xi90_rv2p_proc2), RV2P_PROC2); + } else { + bce_load_rv2p_fw(sc, bce_xi_rv2p_proc1, + sizeof(bce_xi_rv2p_proc1), RV2P_PROC1); + bce_load_rv2p_fw(sc, bce_xi_rv2p_proc2, + sizeof(bce_xi_rv2p_proc2), RV2P_PROC2); + } + + } else { + bce_load_rv2p_fw(sc, bce_rv2p_proc1, + sizeof(bce_rv2p_proc1), RV2P_PROC1); + bce_load_rv2p_fw(sc, bce_rv2p_proc2, + sizeof(bce_rv2p_proc2), RV2P_PROC2); + } + + bce_init_rxp_cpu(sc); + bce_init_txp_cpu(sc); + bce_init_tpat_cpu(sc); + bce_init_com_cpu(sc); + bce_init_cp_cpu(sc); + + DBEXIT(BCE_VERBOSE_RESET); +} + + +/****************************************************************************/ +/* Initialize context memory. */ +/* */ +/* Clears the memory associated with each Context ID (CID). */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static int +bce_init_ctx(struct bce_softc *sc) +{ + u32 offset, val, vcid_addr; + int i, j, rc, retry_cnt; + + rc = 0; + DBENTER(BCE_VERBOSE_RESET | BCE_VERBOSE_CTX); + + if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || + (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { + retry_cnt = CTX_INIT_RETRY_COUNT; + + DBPRINT(sc, BCE_INFO_CTX, "Initializing 5709 context.\n"); + + /* + * BCM5709 context memory may be cached + * in host memory so prepare the host memory + * for access. + */ + val = BCE_CTX_COMMAND_ENABLED | + BCE_CTX_COMMAND_MEM_INIT | (1 << 12); + val |= (BCM_PAGE_BITS - 8) << 16; + REG_WR(sc, BCE_CTX_COMMAND, val); + + /* Wait for mem init command to complete. */ + for (i = 0; i < retry_cnt; i++) { + val = REG_RD(sc, BCE_CTX_COMMAND); + if (!(val & BCE_CTX_COMMAND_MEM_INIT)) + break; + DELAY(2); + } + if ((val & BCE_CTX_COMMAND_MEM_INIT) != 0) { + BCE_PRINTF("%s(): Context memory initialization failed!\n", + __FUNCTION__); + rc = EBUSY; + goto init_ctx_fail; + } + + for (i = 0; i < sc->ctx_pages; i++) { + /* Set the physical address of the context memory. */ + REG_WR(sc, BCE_CTX_HOST_PAGE_TBL_DATA0, + BCE_ADDR_LO(sc->ctx_paddr[i] & 0xfffffff0) | + BCE_CTX_HOST_PAGE_TBL_DATA0_VALID); + REG_WR(sc, BCE_CTX_HOST_PAGE_TBL_DATA1, + BCE_ADDR_HI(sc->ctx_paddr[i])); + REG_WR(sc, BCE_CTX_HOST_PAGE_TBL_CTRL, i | + BCE_CTX_HOST_PAGE_TBL_CTRL_WRITE_REQ); + + /* Verify the context memory write was successful. */ + for (j = 0; j < retry_cnt; j++) { + val = REG_RD(sc, BCE_CTX_HOST_PAGE_TBL_CTRL); + if ((val & + BCE_CTX_HOST_PAGE_TBL_CTRL_WRITE_REQ) == 0) + break; + DELAY(5); + } + if ((val & BCE_CTX_HOST_PAGE_TBL_CTRL_WRITE_REQ) != 0) { + BCE_PRINTF("%s(): Failed to initialize " + "context page %d!\n", __FUNCTION__, i); + rc = EBUSY; + goto init_ctx_fail; + } + } + } else { + + DBPRINT(sc, BCE_INFO, "Initializing 5706/5708 context.\n"); + + /* + * For the 5706/5708, context memory is local to + * the controller, so initialize the controller + * context memory. + */ + + vcid_addr = GET_CID_ADDR(96); + while (vcid_addr) { + + vcid_addr -= PHY_CTX_SIZE; + + REG_WR(sc, BCE_CTX_VIRT_ADDR, 0); + REG_WR(sc, BCE_CTX_PAGE_TBL, vcid_addr); + + for(offset = 0; offset < PHY_CTX_SIZE; offset += 4) { + CTX_WR(sc, 0x00, offset, 0); + } + + REG_WR(sc, BCE_CTX_VIRT_ADDR, vcid_addr); + REG_WR(sc, BCE_CTX_PAGE_TBL, vcid_addr); + } + + } +init_ctx_fail: + DBEXIT(BCE_VERBOSE_RESET | BCE_VERBOSE_CTX); + return (rc); +} + + +/****************************************************************************/ +/* Fetch the permanent MAC address of the controller. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_get_mac_addr(struct bce_softc *sc) +{ + u32 mac_lo = 0, mac_hi = 0; + + DBENTER(BCE_VERBOSE_RESET); + + /* + * The NetXtreme II bootcode populates various NIC + * power-on and runtime configuration items in a + * shared memory area. The factory configured MAC + * address is available from both NVRAM and the + * shared memory area so we'll read the value from + * shared memory for speed. + */ + + mac_hi = bce_shmem_rd(sc, BCE_PORT_HW_CFG_MAC_UPPER); + mac_lo = bce_shmem_rd(sc, BCE_PORT_HW_CFG_MAC_LOWER); + + if ((mac_lo == 0) && (mac_hi == 0)) { + BCE_PRINTF("%s(%d): Invalid Ethernet address!\n", + __FILE__, __LINE__); + } else { + sc->eaddr[0] = (u_char)(mac_hi >> 8); + sc->eaddr[1] = (u_char)(mac_hi >> 0); + sc->eaddr[2] = (u_char)(mac_lo >> 24); + sc->eaddr[3] = (u_char)(mac_lo >> 16); + sc->eaddr[4] = (u_char)(mac_lo >> 8); + sc->eaddr[5] = (u_char)(mac_lo >> 0); + } + + DBPRINT(sc, BCE_INFO_MISC, "Permanent Ethernet " + "address = %6D\n", sc->eaddr, ":"); + DBEXIT(BCE_VERBOSE_RESET); +} + + +/****************************************************************************/ +/* Program the MAC address. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_set_mac_addr(struct bce_softc *sc) +{ + u32 val; + u8 *mac_addr = sc->eaddr; + + /* ToDo: Add support for setting multiple MAC addresses. */ + + DBENTER(BCE_VERBOSE_RESET); + DBPRINT(sc, BCE_INFO_MISC, "Setting Ethernet address = " + "%6D\n", sc->eaddr, ":"); + + val = (mac_addr[0] << 8) | mac_addr[1]; + + REG_WR(sc, BCE_EMAC_MAC_MATCH0, val); + + val = (mac_addr[2] << 24) | (mac_addr[3] << 16) | + (mac_addr[4] << 8) | mac_addr[5]; + + REG_WR(sc, BCE_EMAC_MAC_MATCH1, val); + + DBEXIT(BCE_VERBOSE_RESET); +} + + +/****************************************************************************/ +/* Stop the controller. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_stop(struct bce_softc *sc) +{ + struct ifnet *ifp; + + DBENTER(BCE_VERBOSE_RESET); + + BCE_LOCK_ASSERT(sc); + + ifp = sc->bce_ifp; + + callout_stop(&sc->bce_tick_callout); + + /* Disable the transmit/receive blocks. */ + REG_WR(sc, BCE_MISC_ENABLE_CLR_BITS, BCE_MISC_ENABLE_CLR_DEFAULT); + REG_RD(sc, BCE_MISC_ENABLE_CLR_BITS); + DELAY(20); + + bce_disable_intr(sc); + + /* Free RX buffers. */ +#ifdef BCE_JUMBO_HDRSPLIT + bce_free_pg_chain(sc); +#endif + bce_free_rx_chain(sc); + + /* Free TX buffers. */ + bce_free_tx_chain(sc); + + sc->watchdog_timer = 0; + + sc->bce_link_up = FALSE; + + ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE); + + DBEXIT(BCE_VERBOSE_RESET); +} + + +static int +bce_reset(struct bce_softc *sc, u32 reset_code) +{ + u32 val; + int i, rc = 0; + + DBENTER(BCE_VERBOSE_RESET); + + DBPRINT(sc, BCE_VERBOSE_RESET, "%s(): reset_code = 0x%08X\n", + __FUNCTION__, reset_code); + + /* Wait for pending PCI transactions to complete. */ + REG_WR(sc, BCE_MISC_ENABLE_CLR_BITS, + BCE_MISC_ENABLE_CLR_BITS_TX_DMA_ENABLE | + BCE_MISC_ENABLE_CLR_BITS_DMA_ENGINE_ENABLE | + BCE_MISC_ENABLE_CLR_BITS_RX_DMA_ENABLE | + BCE_MISC_ENABLE_CLR_BITS_HOST_COALESCE_ENABLE); + val = REG_RD(sc, BCE_MISC_ENABLE_CLR_BITS); + DELAY(5); + + /* Disable DMA */ + if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || + (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { + val = REG_RD(sc, BCE_MISC_NEW_CORE_CTL); + val &= ~BCE_MISC_NEW_CORE_CTL_DMA_ENABLE; + REG_WR(sc, BCE_MISC_NEW_CORE_CTL, val); + } + + /* Assume bootcode is running. */ + sc->bce_fw_timed_out = FALSE; + sc->bce_drv_cardiac_arrest = FALSE; + + /* Give the firmware a chance to prepare for the reset. */ + rc = bce_fw_sync(sc, BCE_DRV_MSG_DATA_WAIT0 | reset_code); + if (rc) + goto bce_reset_exit; + + /* Set a firmware reminder that this is a soft reset. */ + bce_shmem_wr(sc, BCE_DRV_RESET_SIGNATURE, BCE_DRV_RESET_SIGNATURE_MAGIC); + + /* Dummy read to force the chip to complete all current transactions. */ + val = REG_RD(sc, BCE_MISC_ID); + + /* Chip reset. */ + if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || + (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { + REG_WR(sc, BCE_MISC_COMMAND, BCE_MISC_COMMAND_SW_RESET); + REG_RD(sc, BCE_MISC_COMMAND); + DELAY(5); + + val = BCE_PCICFG_MISC_CONFIG_REG_WINDOW_ENA | + BCE_PCICFG_MISC_CONFIG_TARGET_MB_WORD_SWAP; + + pci_write_config(sc->bce_dev, BCE_PCICFG_MISC_CONFIG, val, 4); + } else { + val = BCE_PCICFG_MISC_CONFIG_CORE_RST_REQ | + BCE_PCICFG_MISC_CONFIG_REG_WINDOW_ENA | + BCE_PCICFG_MISC_CONFIG_TARGET_MB_WORD_SWAP; + REG_WR(sc, BCE_PCICFG_MISC_CONFIG, val); + + /* Allow up to 30us for reset to complete. */ + for (i = 0; i < 10; i++) { + val = REG_RD(sc, BCE_PCICFG_MISC_CONFIG); + if ((val & (BCE_PCICFG_MISC_CONFIG_CORE_RST_REQ | + BCE_PCICFG_MISC_CONFIG_CORE_RST_BSY)) == 0) { + break; + } + DELAY(10); + } + + /* Check that reset completed successfully. */ + if (val & (BCE_PCICFG_MISC_CONFIG_CORE_RST_REQ | + BCE_PCICFG_MISC_CONFIG_CORE_RST_BSY)) { + BCE_PRINTF("%s(%d): Reset failed!\n", + __FILE__, __LINE__); + rc = EBUSY; + goto bce_reset_exit; + } + } + + /* Make sure byte swapping is properly configured. */ + val = REG_RD(sc, BCE_PCI_SWAP_DIAG0); + if (val != 0x01020304) { + BCE_PRINTF("%s(%d): Byte swap is incorrect!\n", + __FILE__, __LINE__); + rc = ENODEV; + goto bce_reset_exit; + } + + /* Just completed a reset, assume that firmware is running again. */ + sc->bce_fw_timed_out = FALSE; + sc->bce_drv_cardiac_arrest = FALSE; + + /* Wait for the firmware to finish its initialization. */ + rc = bce_fw_sync(sc, BCE_DRV_MSG_DATA_WAIT1 | reset_code); + if (rc) + BCE_PRINTF("%s(%d): Firmware did not complete " + "initialization!\n", __FILE__, __LINE__); + +bce_reset_exit: + DBEXIT(BCE_VERBOSE_RESET); + return (rc); +} + + +static int +bce_chipinit(struct bce_softc *sc) +{ + u32 val; + int rc = 0; + + DBENTER(BCE_VERBOSE_RESET); + + bce_disable_intr(sc); + + /* + * Initialize DMA byte/word swapping, configure the number of DMA + * channels and PCI clock compensation delay. + */ + val = BCE_DMA_CONFIG_DATA_BYTE_SWAP | + BCE_DMA_CONFIG_DATA_WORD_SWAP | +#if BYTE_ORDER == BIG_ENDIAN + BCE_DMA_CONFIG_CNTL_BYTE_SWAP | +#endif + BCE_DMA_CONFIG_CNTL_WORD_SWAP | + DMA_READ_CHANS << 12 | + DMA_WRITE_CHANS << 16; + + val |= (0x2 << 20) | BCE_DMA_CONFIG_CNTL_PCI_COMP_DLY; + + if ((sc->bce_flags & BCE_PCIX_FLAG) && (sc->bus_speed_mhz == 133)) + val |= BCE_DMA_CONFIG_PCI_FAST_CLK_CMP; + + /* + * This setting resolves a problem observed on certain Intel PCI + * chipsets that cannot handle multiple outstanding DMA operations. + * See errata E9_5706A1_65. + */ + if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5706) && + (BCE_CHIP_ID(sc) != BCE_CHIP_ID_5706_A0) && + !(sc->bce_flags & BCE_PCIX_FLAG)) + val |= BCE_DMA_CONFIG_CNTL_PING_PONG_DMA; + + REG_WR(sc, BCE_DMA_CONFIG, val); + + /* Enable the RX_V2P and Context state machines before access. */ + REG_WR(sc, BCE_MISC_ENABLE_SET_BITS, + BCE_MISC_ENABLE_SET_BITS_HOST_COALESCE_ENABLE | + BCE_MISC_ENABLE_STATUS_BITS_RX_V2P_ENABLE | + BCE_MISC_ENABLE_STATUS_BITS_CONTEXT_ENABLE); + + /* Initialize context mapping and zero out the quick contexts. */ + if ((rc = bce_init_ctx(sc)) != 0) + goto bce_chipinit_exit; + + /* Initialize the on-boards CPUs */ + bce_init_cpus(sc); + + /* Enable management frames (NC-SI) to flow to the MCP. */ + if (sc->bce_flags & BCE_MFW_ENABLE_FLAG) { + val = REG_RD(sc, BCE_RPM_MGMT_PKT_CTRL) | BCE_RPM_MGMT_PKT_CTRL_MGMT_EN; + REG_WR(sc, BCE_RPM_MGMT_PKT_CTRL, val); + } + + /* Prepare NVRAM for access. */ + if ((rc = bce_init_nvram(sc)) != 0) + goto bce_chipinit_exit; + + /* Set the kernel bypass block size */ + val = REG_RD(sc, BCE_MQ_CONFIG); + val &= ~BCE_MQ_CONFIG_KNL_BYP_BLK_SIZE; + val |= BCE_MQ_CONFIG_KNL_BYP_BLK_SIZE_256; + + /* Enable bins used on the 5709. */ + if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || + (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { + val |= BCE_MQ_CONFIG_BIN_MQ_MODE; + if (BCE_CHIP_ID(sc) == BCE_CHIP_ID_5709_A1) + val |= BCE_MQ_CONFIG_HALT_DIS; + } + + REG_WR(sc, BCE_MQ_CONFIG, val); + + val = 0x10000 + (MAX_CID_CNT * MB_KERNEL_CTX_SIZE); + REG_WR(sc, BCE_MQ_KNL_BYP_WIND_START, val); + REG_WR(sc, BCE_MQ_KNL_WIND_END, val); + + /* Set the page size and clear the RV2P processor stall bits. */ + val = (BCM_PAGE_BITS - 8) << 24; + REG_WR(sc, BCE_RV2P_CONFIG, val); + + /* Configure page size. */ + val = REG_RD(sc, BCE_TBDR_CONFIG); + val &= ~BCE_TBDR_CONFIG_PAGE_SIZE; + val |= (BCM_PAGE_BITS - 8) << 24 | 0x40; + REG_WR(sc, BCE_TBDR_CONFIG, val); + + /* Set the perfect match control register to default. */ + REG_WR_IND(sc, BCE_RXP_PM_CTRL, 0); + +bce_chipinit_exit: + DBEXIT(BCE_VERBOSE_RESET); + + return(rc); +} + + +/****************************************************************************/ +/* Initialize the controller in preparation to send/receive traffic. */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/****************************************************************************/ +static int +bce_blockinit(struct bce_softc *sc) +{ + u32 reg, val; + int rc = 0; + + DBENTER(BCE_VERBOSE_RESET); + + /* Load the hardware default MAC address. */ + bce_set_mac_addr(sc); + + /* Set the Ethernet backoff seed value */ + val = sc->eaddr[0] + (sc->eaddr[1] << 8) + + (sc->eaddr[2] << 16) + (sc->eaddr[3] ) + + (sc->eaddr[4] << 8) + (sc->eaddr[5] << 16); + REG_WR(sc, BCE_EMAC_BACKOFF_SEED, val); + + sc->last_status_idx = 0; + sc->rx_mode = BCE_EMAC_RX_MODE_SORT_MODE; + + /* Set up link change interrupt generation. */ + REG_WR(sc, BCE_EMAC_ATTENTION_ENA, BCE_EMAC_ATTENTION_ENA_LINK); + + /* Program the physical address of the status block. */ + REG_WR(sc, BCE_HC_STATUS_ADDR_L, + BCE_ADDR_LO(sc->status_block_paddr)); + REG_WR(sc, BCE_HC_STATUS_ADDR_H, + BCE_ADDR_HI(sc->status_block_paddr)); + + /* Program the physical address of the statistics block. */ + REG_WR(sc, BCE_HC_STATISTICS_ADDR_L, + BCE_ADDR_LO(sc->stats_block_paddr)); + REG_WR(sc, BCE_HC_STATISTICS_ADDR_H, + BCE_ADDR_HI(sc->stats_block_paddr)); + + /* Program various host coalescing parameters. */ + REG_WR(sc, BCE_HC_TX_QUICK_CONS_TRIP, + (sc->bce_tx_quick_cons_trip_int << 16) | sc->bce_tx_quick_cons_trip); + REG_WR(sc, BCE_HC_RX_QUICK_CONS_TRIP, + (sc->bce_rx_quick_cons_trip_int << 16) | sc->bce_rx_quick_cons_trip); + REG_WR(sc, BCE_HC_COMP_PROD_TRIP, + (sc->bce_comp_prod_trip_int << 16) | sc->bce_comp_prod_trip); + REG_WR(sc, BCE_HC_TX_TICKS, + (sc->bce_tx_ticks_int << 16) | sc->bce_tx_ticks); + REG_WR(sc, BCE_HC_RX_TICKS, + (sc->bce_rx_ticks_int << 16) | sc->bce_rx_ticks); + REG_WR(sc, BCE_HC_COM_TICKS, + (sc->bce_com_ticks_int << 16) | sc->bce_com_ticks); + REG_WR(sc, BCE_HC_CMD_TICKS, + (sc->bce_cmd_ticks_int << 16) | sc->bce_cmd_ticks); + REG_WR(sc, BCE_HC_STATS_TICKS, + (sc->bce_stats_ticks & 0xffff00)); + REG_WR(sc, BCE_HC_STAT_COLLECT_TICKS, 0xbb8); /* 3ms */ + + /* Configure the Host Coalescing block. */ + val = BCE_HC_CONFIG_RX_TMR_MODE | BCE_HC_CONFIG_TX_TMR_MODE | + BCE_HC_CONFIG_COLLECT_STATS; + +#if 0 + /* ToDo: Add MSI-X support. */ + if (sc->bce_flags & BCE_USING_MSIX_FLAG) { + u32 base = ((BCE_TX_VEC - 1) * BCE_HC_SB_CONFIG_SIZE) + + BCE_HC_SB_CONFIG_1; + + REG_WR(sc, BCE_HC_MSIX_BIT_VECTOR, BCE_HC_MSIX_BIT_VECTOR_VAL); + + REG_WR(sc, base, BCE_HC_SB_CONFIG_1_TX_TMR_MODE | + BCE_HC_SB_CONFIG_1_ONE_SHOT); + + REG_WR(sc, base + BCE_HC_TX_QUICK_CONS_TRIP_OFF, + (sc->tx_quick_cons_trip_int << 16) | + sc->tx_quick_cons_trip); + + REG_WR(sc, base + BCE_HC_TX_TICKS_OFF, + (sc->tx_ticks_int << 16) | sc->tx_ticks); + + val |= BCE_HC_CONFIG_SB_ADDR_INC_128B; + } + + /* + * Tell the HC block to automatically set the + * INT_MASK bit after an MSI/MSI-X interrupt + * is generated so the driver doesn't have to. + */ + if (sc->bce_flags & BCE_ONE_SHOT_MSI_FLAG) + val |= BCE_HC_CONFIG_ONE_SHOT; + + /* Set the MSI-X status blocks to 128 byte boundaries. */ + if (sc->bce_flags & BCE_USING_MSIX_FLAG) + val |= BCE_HC_CONFIG_SB_ADDR_INC_128B; +#endif + + REG_WR(sc, BCE_HC_CONFIG, val); + + /* Clear the internal statistics counters. */ + REG_WR(sc, BCE_HC_COMMAND, BCE_HC_COMMAND_CLR_STAT_NOW); + + /* Verify that bootcode is running. */ + reg = bce_shmem_rd(sc, BCE_DEV_INFO_SIGNATURE); + + DBRUNIF(DB_RANDOMTRUE(bootcode_running_failure_sim_control), + BCE_PRINTF("%s(%d): Simulating bootcode failure.\n", + __FILE__, __LINE__); + reg = 0); + + if ((reg & BCE_DEV_INFO_SIGNATURE_MAGIC_MASK) != + BCE_DEV_INFO_SIGNATURE_MAGIC) { + BCE_PRINTF("%s(%d): Bootcode not running! Found: 0x%08X, " + "Expected: 08%08X\n", __FILE__, __LINE__, + (reg & BCE_DEV_INFO_SIGNATURE_MAGIC_MASK), + BCE_DEV_INFO_SIGNATURE_MAGIC); + rc = ENODEV; + goto bce_blockinit_exit; + } + + /* Enable DMA */ + if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || + (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { + val = REG_RD(sc, BCE_MISC_NEW_CORE_CTL); + val |= BCE_MISC_NEW_CORE_CTL_DMA_ENABLE; + REG_WR(sc, BCE_MISC_NEW_CORE_CTL, val); + } + + /* Allow bootcode to apply additional fixes before enabling MAC. */ + rc = bce_fw_sync(sc, BCE_DRV_MSG_DATA_WAIT2 | + BCE_DRV_MSG_CODE_RESET); + + /* Enable link state change interrupt generation. */ + REG_WR(sc, BCE_HC_ATTN_BITS_ENABLE, STATUS_ATTN_BITS_LINK_STATE); + + /* Enable the RXP. */ + bce_start_rxp_cpu(sc); + + /* Disable management frames (NC-SI) from flowing to the MCP. */ + if (sc->bce_flags & BCE_MFW_ENABLE_FLAG) { + val = REG_RD(sc, BCE_RPM_MGMT_PKT_CTRL) & + ~BCE_RPM_MGMT_PKT_CTRL_MGMT_EN; + REG_WR(sc, BCE_RPM_MGMT_PKT_CTRL, val); + } + + /* Enable all remaining blocks in the MAC. */ + if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || + (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) + REG_WR(sc, BCE_MISC_ENABLE_SET_BITS, + BCE_MISC_ENABLE_DEFAULT_XI); + else + REG_WR(sc, BCE_MISC_ENABLE_SET_BITS, + BCE_MISC_ENABLE_DEFAULT); + + REG_RD(sc, BCE_MISC_ENABLE_SET_BITS); + DELAY(20); + + /* Save the current host coalescing block settings. */ + sc->hc_command = REG_RD(sc, BCE_HC_COMMAND); + +bce_blockinit_exit: + DBEXIT(BCE_VERBOSE_RESET); + + return (rc); +} + + +/****************************************************************************/ +/* Encapsulate an mbuf into the rx_bd chain. */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/****************************************************************************/ +static int +bce_get_rx_buf(struct bce_softc *sc, struct mbuf *m, u16 *prod, + u16 *chain_prod, u32 *prod_bseq) +{ + bus_dmamap_t map; + bus_dma_segment_t segs[BCE_MAX_SEGMENTS]; + struct mbuf *m_new = NULL; + struct rx_bd *rxbd; + int nsegs, error, rc = 0; +#ifdef BCE_DEBUG + u16 debug_chain_prod = *chain_prod; +#endif + + DBENTER(BCE_EXTREME_RESET | BCE_EXTREME_RECV | BCE_EXTREME_LOAD); + + /* Make sure the inputs are valid. */ + DBRUNIF((*chain_prod > MAX_RX_BD), + BCE_PRINTF("%s(%d): RX producer out of range: " + "0x%04X > 0x%04X\n", __FILE__, __LINE__, + *chain_prod, (u16) MAX_RX_BD)); + + DBPRINT(sc, BCE_EXTREME_RECV, "%s(enter): prod = 0x%04X, " + "chain_prod = 0x%04X, prod_bseq = 0x%08X\n", __FUNCTION__, + *prod, *chain_prod, *prod_bseq); + + /* Update some debug statistic counters */ + DBRUNIF((sc->free_rx_bd < sc->rx_low_watermark), + sc->rx_low_watermark = sc->free_rx_bd); + DBRUNIF((sc->free_rx_bd == sc->max_rx_bd), + sc->rx_empty_count++); + + /* Check whether this is a new mbuf allocation. */ + if (m == NULL) { + + /* Simulate an mbuf allocation failure. */ + DBRUNIF(DB_RANDOMTRUE(mbuf_alloc_failed_sim_control), + sc->mbuf_alloc_failed_count++; + sc->mbuf_alloc_failed_sim_count++; + rc = ENOBUFS; + goto bce_get_rx_buf_exit); + + /* This is a new mbuf allocation. */ +#ifdef BCE_JUMBO_HDRSPLIT + MGETHDR(m_new, M_DONTWAIT, MT_DATA); +#else + if (sc->rx_bd_mbuf_alloc_size <= MCLBYTES) + m_new = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR); + else + m_new = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR, + sc->rx_bd_mbuf_alloc_size); +#endif + + if (m_new == NULL) { + sc->mbuf_alloc_failed_count++; + rc = ENOBUFS; + goto bce_get_rx_buf_exit; + } + + DBRUN(sc->debug_rx_mbuf_alloc++); + } else { + /* Reuse an existing mbuf. */ + m_new = m; + } + + /* Make sure we have a valid packet header. */ + M_ASSERTPKTHDR(m_new); + + /* Initialize the mbuf size and pad if necessary for alignment. */ + m_new->m_pkthdr.len = m_new->m_len = sc->rx_bd_mbuf_alloc_size; + m_adj(m_new, sc->rx_bd_mbuf_align_pad); + + /* ToDo: Consider calling m_fragment() to test error handling. */ + + /* Map the mbuf cluster into device memory. */ + map = sc->rx_mbuf_map[*chain_prod]; + error = bus_dmamap_load_mbuf_sg(sc->rx_mbuf_tag, map, m_new, + segs, &nsegs, BUS_DMA_NOWAIT); + + /* Handle any mapping errors. */ + if (error) { + BCE_PRINTF("%s(%d): Error mapping mbuf into RX " + "chain (%d)!\n", __FILE__, __LINE__, error); + + sc->dma_map_addr_rx_failed_count++; + m_freem(m_new); + + DBRUN(sc->debug_rx_mbuf_alloc--); + + rc = ENOBUFS; + goto bce_get_rx_buf_exit; + } + + /* All mbufs must map to a single segment. */ + KASSERT(nsegs == 1, ("%s(): Too many segments returned (%d)!", + __FUNCTION__, nsegs)); + + /* Setup the rx_bd for the segment. */ + rxbd = &sc->rx_bd_chain[RX_PAGE(*chain_prod)][RX_IDX(*chain_prod)]; + + rxbd->rx_bd_haddr_lo = htole32(BCE_ADDR_LO(segs[0].ds_addr)); + rxbd->rx_bd_haddr_hi = htole32(BCE_ADDR_HI(segs[0].ds_addr)); + rxbd->rx_bd_len = htole32(segs[0].ds_len); + rxbd->rx_bd_flags = htole32(RX_BD_FLAGS_START | RX_BD_FLAGS_END); + *prod_bseq += segs[0].ds_len; + + /* Save the mbuf and update our counter. */ + sc->rx_mbuf_ptr[*chain_prod] = m_new; + sc->free_rx_bd -= nsegs; + + DBRUNMSG(BCE_INSANE_RECV, + bce_dump_rx_mbuf_chain(sc, debug_chain_prod, nsegs)); + + DBPRINT(sc, BCE_EXTREME_RECV, "%s(exit): prod = 0x%04X, " + "chain_prod = 0x%04X, prod_bseq = 0x%08X\n", + __FUNCTION__, *prod, *chain_prod, *prod_bseq); + +bce_get_rx_buf_exit: + DBEXIT(BCE_EXTREME_RESET | BCE_EXTREME_RECV | BCE_EXTREME_LOAD); + + return(rc); +} + + +#ifdef BCE_JUMBO_HDRSPLIT +/****************************************************************************/ +/* Encapsulate an mbuf cluster into the page chain. */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/****************************************************************************/ +static int +bce_get_pg_buf(struct bce_softc *sc, struct mbuf *m, u16 *prod, + u16 *prod_idx) +{ + bus_dmamap_t map; + bus_addr_t busaddr; + struct mbuf *m_new = NULL; + struct rx_bd *pgbd; + int error, rc = 0; +#ifdef BCE_DEBUG + u16 debug_prod_idx = *prod_idx; +#endif + + DBENTER(BCE_EXTREME_RESET | BCE_EXTREME_RECV | BCE_EXTREME_LOAD); + + /* Make sure the inputs are valid. */ + DBRUNIF((*prod_idx > MAX_PG_BD), + BCE_PRINTF("%s(%d): page producer out of range: " + "0x%04X > 0x%04X\n", __FILE__, __LINE__, + *prod_idx, (u16) MAX_PG_BD)); + + DBPRINT(sc, BCE_EXTREME_RECV, "%s(enter): prod = 0x%04X, " + "chain_prod = 0x%04X\n", __FUNCTION__, *prod, *prod_idx); + + /* Update counters if we've hit a new low or run out of pages. */ + DBRUNIF((sc->free_pg_bd < sc->pg_low_watermark), + sc->pg_low_watermark = sc->free_pg_bd); + DBRUNIF((sc->free_pg_bd == sc->max_pg_bd), sc->pg_empty_count++); + + /* Check whether this is a new mbuf allocation. */ + if (m == NULL) { + + /* Simulate an mbuf allocation failure. */ + DBRUNIF(DB_RANDOMTRUE(mbuf_alloc_failed_sim_control), + sc->mbuf_alloc_failed_count++; + sc->mbuf_alloc_failed_sim_count++; + rc = ENOBUFS; + goto bce_get_pg_buf_exit); + + /* This is a new mbuf allocation. */ + m_new = m_getcl(M_DONTWAIT, MT_DATA, 0); + if (m_new == NULL) { + sc->mbuf_alloc_failed_count++; + rc = ENOBUFS; + goto bce_get_pg_buf_exit; + } + + DBRUN(sc->debug_pg_mbuf_alloc++); + } else { + /* Reuse an existing mbuf. */ + m_new = m; + m_new->m_data = m_new->m_ext.ext_buf; + } + + m_new->m_len = sc->pg_bd_mbuf_alloc_size; + + /* ToDo: Consider calling m_fragment() to test error handling. */ + + /* Map the mbuf cluster into device memory. */ + map = sc->pg_mbuf_map[*prod_idx]; + error = bus_dmamap_load(sc->pg_mbuf_tag, map, mtod(m_new, void *), + sc->pg_bd_mbuf_alloc_size, bce_dma_map_addr, + &busaddr, BUS_DMA_NOWAIT); + + /* Handle any mapping errors. */ + if (error) { + BCE_PRINTF("%s(%d): Error mapping mbuf into page chain!\n", + __FILE__, __LINE__); + + m_freem(m_new); + DBRUN(sc->debug_pg_mbuf_alloc--); + + rc = ENOBUFS; + goto bce_get_pg_buf_exit; + } + + /* ToDo: Do we need bus_dmamap_sync(,,BUS_DMASYNC_PREREAD) here? */ + + /* + * The page chain uses the same rx_bd data structure + * as the receive chain but doesn't require a byte sequence (bseq). + */ + pgbd = &sc->pg_bd_chain[PG_PAGE(*prod_idx)][PG_IDX(*prod_idx)]; + + pgbd->rx_bd_haddr_lo = htole32(BCE_ADDR_LO(busaddr)); + pgbd->rx_bd_haddr_hi = htole32(BCE_ADDR_HI(busaddr)); + pgbd->rx_bd_len = htole32(sc->pg_bd_mbuf_alloc_size); + pgbd->rx_bd_flags = htole32(RX_BD_FLAGS_START | RX_BD_FLAGS_END); + + /* Save the mbuf and update our counter. */ + sc->pg_mbuf_ptr[*prod_idx] = m_new; + sc->free_pg_bd--; + + DBRUNMSG(BCE_INSANE_RECV, + bce_dump_pg_mbuf_chain(sc, debug_prod_idx, 1)); + + DBPRINT(sc, BCE_EXTREME_RECV, "%s(exit): prod = 0x%04X, " + "prod_idx = 0x%04X\n", __FUNCTION__, *prod, *prod_idx); + +bce_get_pg_buf_exit: + DBEXIT(BCE_EXTREME_RESET | BCE_EXTREME_RECV | BCE_EXTREME_LOAD); + + return(rc); +} +#endif /* BCE_JUMBO_HDRSPLIT */ + + +/****************************************************************************/ +/* Initialize the TX context memory. */ +/* */ +/* Returns: */ +/* Nothing */ +/****************************************************************************/ +static void +bce_init_tx_context(struct bce_softc *sc) +{ + u32 val; + + DBENTER(BCE_VERBOSE_RESET | BCE_VERBOSE_SEND | BCE_VERBOSE_CTX); + + /* Initialize the context ID for an L2 TX chain. */ + if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || + (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { + /* Set the CID type to support an L2 connection. */ + val = BCE_L2CTX_TX_TYPE_TYPE_L2_XI | + BCE_L2CTX_TX_TYPE_SIZE_L2_XI; + CTX_WR(sc, GET_CID_ADDR(TX_CID), BCE_L2CTX_TX_TYPE_XI, val); + val = BCE_L2CTX_TX_CMD_TYPE_TYPE_L2_XI | (8 << 16); + CTX_WR(sc, GET_CID_ADDR(TX_CID), + BCE_L2CTX_TX_CMD_TYPE_XI, val); + + /* Point the hardware to the first page in the chain. */ + val = BCE_ADDR_HI(sc->tx_bd_chain_paddr[0]); + CTX_WR(sc, GET_CID_ADDR(TX_CID), + BCE_L2CTX_TX_TBDR_BHADDR_HI_XI, val); + val = BCE_ADDR_LO(sc->tx_bd_chain_paddr[0]); + CTX_WR(sc, GET_CID_ADDR(TX_CID), + BCE_L2CTX_TX_TBDR_BHADDR_LO_XI, val); + } else { + /* Set the CID type to support an L2 connection. */ + val = BCE_L2CTX_TX_TYPE_TYPE_L2 | BCE_L2CTX_TX_TYPE_SIZE_L2; + CTX_WR(sc, GET_CID_ADDR(TX_CID), BCE_L2CTX_TX_TYPE, val); + val = BCE_L2CTX_TX_CMD_TYPE_TYPE_L2 | (8 << 16); + CTX_WR(sc, GET_CID_ADDR(TX_CID), BCE_L2CTX_TX_CMD_TYPE, val); + + /* Point the hardware to the first page in the chain. */ + val = BCE_ADDR_HI(sc->tx_bd_chain_paddr[0]); + CTX_WR(sc, GET_CID_ADDR(TX_CID), + BCE_L2CTX_TX_TBDR_BHADDR_HI, val); + val = BCE_ADDR_LO(sc->tx_bd_chain_paddr[0]); + CTX_WR(sc, GET_CID_ADDR(TX_CID), + BCE_L2CTX_TX_TBDR_BHADDR_LO, val); + } + + DBEXIT(BCE_VERBOSE_RESET | BCE_VERBOSE_SEND | BCE_VERBOSE_CTX); +} + + +/****************************************************************************/ +/* Allocate memory and initialize the TX data structures. */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/****************************************************************************/ +static int +bce_init_tx_chain(struct bce_softc *sc) +{ + struct tx_bd *txbd; + int i, rc = 0; + + DBENTER(BCE_VERBOSE_RESET | BCE_VERBOSE_SEND | BCE_VERBOSE_LOAD); + + /* Set the initial TX producer/consumer indices. */ + sc->tx_prod = 0; + sc->tx_cons = 0; + sc->tx_prod_bseq = 0; + sc->used_tx_bd = 0; + sc->max_tx_bd = USABLE_TX_BD; + DBRUN(sc->tx_hi_watermark = 0); + DBRUN(sc->tx_full_count = 0); + + /* + * The NetXtreme II supports a linked-list structre called + * a Buffer Descriptor Chain (or BD chain). A BD chain + * consists of a series of 1 or more chain pages, each of which + * consists of a fixed number of BD entries. + * The last BD entry on each page is a pointer to the next page + * in the chain, and the last pointer in the BD chain + * points back to the beginning of the chain. + */ + + /* Set the TX next pointer chain entries. */ + for (i = 0; i < TX_PAGES; i++) { + int j; + + txbd = &sc->tx_bd_chain[i][USABLE_TX_BD_PER_PAGE]; + + /* Check if we've reached the last page. */ + if (i == (TX_PAGES - 1)) + j = 0; + else + j = i + 1; + + txbd->tx_bd_haddr_hi = htole32(BCE_ADDR_HI(sc->tx_bd_chain_paddr[j])); + txbd->tx_bd_haddr_lo = htole32(BCE_ADDR_LO(sc->tx_bd_chain_paddr[j])); + } + + bce_init_tx_context(sc); + + DBRUNMSG(BCE_INSANE_SEND, bce_dump_tx_chain(sc, 0, TOTAL_TX_BD)); + DBEXIT(BCE_VERBOSE_RESET | BCE_VERBOSE_SEND | BCE_VERBOSE_LOAD); + + return(rc); +} + + +/****************************************************************************/ +/* Free memory and clear the TX data structures. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_free_tx_chain(struct bce_softc *sc) +{ + int i; + + DBENTER(BCE_VERBOSE_RESET | BCE_VERBOSE_SEND | BCE_VERBOSE_UNLOAD); + + /* Unmap, unload, and free any mbufs still in the TX mbuf chain. */ + for (i = 0; i < TOTAL_TX_BD; i++) { + if (sc->tx_mbuf_ptr[i] != NULL) { + if (sc->tx_mbuf_map[i] != NULL) + bus_dmamap_sync(sc->tx_mbuf_tag, + sc->tx_mbuf_map[i], + BUS_DMASYNC_POSTWRITE); + m_freem(sc->tx_mbuf_ptr[i]); + sc->tx_mbuf_ptr[i] = NULL; + DBRUN(sc->debug_tx_mbuf_alloc--); + } + } + + /* Clear each TX chain page. */ + for (i = 0; i < TX_PAGES; i++) + bzero((char *)sc->tx_bd_chain[i], BCE_TX_CHAIN_PAGE_SZ); + + sc->used_tx_bd = 0; + + /* Check if we lost any mbufs in the process. */ + DBRUNIF((sc->debug_tx_mbuf_alloc), + BCE_PRINTF("%s(%d): Memory leak! Lost %d mbufs " + "from tx chain!\n", __FILE__, __LINE__, + sc->debug_tx_mbuf_alloc)); + + DBEXIT(BCE_VERBOSE_RESET | BCE_VERBOSE_SEND | BCE_VERBOSE_UNLOAD); +} + + +/****************************************************************************/ +/* Initialize the RX context memory. */ +/* */ +/* Returns: */ +/* Nothing */ +/****************************************************************************/ +static void +bce_init_rx_context(struct bce_softc *sc) +{ + u32 val; + + DBENTER(BCE_VERBOSE_RESET | BCE_VERBOSE_RECV | BCE_VERBOSE_CTX); + + /* Init the type, size, and BD cache levels for the RX context. */ + val = BCE_L2CTX_RX_CTX_TYPE_CTX_BD_CHN_TYPE_VALUE | + BCE_L2CTX_RX_CTX_TYPE_SIZE_L2 | + (0x02 << BCE_L2CTX_RX_BD_PRE_READ_SHIFT); + + /* + * Set the level for generating pause frames + * when the number of available rx_bd's gets + * too low (the low watermark) and the level + * when pause frames can be stopped (the high + * watermark). + */ + if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || + (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { + u32 lo_water, hi_water; + + if (sc->bce_flags && BCE_USING_TX_FLOW_CONTROL) { + lo_water = BCE_L2CTX_RX_LO_WATER_MARK_DEFAULT; + } else { + lo_water = 0; + } + + if (lo_water >= USABLE_RX_BD) { + lo_water = 0; + } + + hi_water = USABLE_RX_BD / 4; + + if (hi_water <= lo_water) { + lo_water = 0; + } + + lo_water /= BCE_L2CTX_RX_LO_WATER_MARK_SCALE; + hi_water /= BCE_L2CTX_RX_HI_WATER_MARK_SCALE; + + if (hi_water > 0xf) + hi_water = 0xf; + else if (hi_water == 0) + lo_water = 0; + + val |= (lo_water << BCE_L2CTX_RX_LO_WATER_MARK_SHIFT) | + (hi_water << BCE_L2CTX_RX_HI_WATER_MARK_SHIFT); + } + + CTX_WR(sc, GET_CID_ADDR(RX_CID), BCE_L2CTX_RX_CTX_TYPE, val); + + /* Setup the MQ BIN mapping for l2_ctx_host_bseq. */ + if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || + (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { + val = REG_RD(sc, BCE_MQ_MAP_L2_5); + REG_WR(sc, BCE_MQ_MAP_L2_5, val | BCE_MQ_MAP_L2_5_ARM); + } + + /* Point the hardware to the first page in the chain. */ + val = BCE_ADDR_HI(sc->rx_bd_chain_paddr[0]); + CTX_WR(sc, GET_CID_ADDR(RX_CID), BCE_L2CTX_RX_NX_BDHADDR_HI, val); + val = BCE_ADDR_LO(sc->rx_bd_chain_paddr[0]); + CTX_WR(sc, GET_CID_ADDR(RX_CID), BCE_L2CTX_RX_NX_BDHADDR_LO, val); + + DBEXIT(BCE_VERBOSE_RESET | BCE_VERBOSE_RECV | BCE_VERBOSE_CTX); +} + + +/****************************************************************************/ +/* Allocate memory and initialize the RX data structures. */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/****************************************************************************/ +static int +bce_init_rx_chain(struct bce_softc *sc) +{ + struct rx_bd *rxbd; + int i, rc = 0; + + DBENTER(BCE_VERBOSE_RESET | BCE_VERBOSE_RECV | BCE_VERBOSE_LOAD | + BCE_VERBOSE_CTX); + + /* Initialize the RX producer and consumer indices. */ + sc->rx_prod = 0; + sc->rx_cons = 0; + sc->rx_prod_bseq = 0; + sc->free_rx_bd = USABLE_RX_BD; + sc->max_rx_bd = USABLE_RX_BD; + + /* Initialize the RX next pointer chain entries. */ + for (i = 0; i < RX_PAGES; i++) { + int j; + + rxbd = &sc->rx_bd_chain[i][USABLE_RX_BD_PER_PAGE]; + + /* Check if we've reached the last page. */ + if (i == (RX_PAGES - 1)) + j = 0; + else + j = i + 1; + + /* Setup the chain page pointers. */ + rxbd->rx_bd_haddr_hi = + htole32(BCE_ADDR_HI(sc->rx_bd_chain_paddr[j])); + rxbd->rx_bd_haddr_lo = + htole32(BCE_ADDR_LO(sc->rx_bd_chain_paddr[j])); + } + + /* Fill up the RX chain. */ + bce_fill_rx_chain(sc); + + DBRUN(sc->rx_low_watermark = USABLE_RX_BD); + DBRUN(sc->rx_empty_count = 0); + for (i = 0; i < RX_PAGES; i++) { + bus_dmamap_sync(sc->rx_bd_chain_tag, sc->rx_bd_chain_map[i], + BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE); + } + + bce_init_rx_context(sc); + + DBRUNMSG(BCE_EXTREME_RECV, bce_dump_rx_bd_chain(sc, 0, TOTAL_RX_BD)); + DBEXIT(BCE_VERBOSE_RESET | BCE_VERBOSE_RECV | BCE_VERBOSE_LOAD | + BCE_VERBOSE_CTX); + + /* ToDo: Are there possible failure modes here? */ + + return(rc); +} + + +/****************************************************************************/ +/* Add mbufs to the RX chain until its full or an mbuf allocation error */ +/* occurs. */ +/* */ +/* Returns: */ +/* Nothing */ +/****************************************************************************/ +static void +bce_fill_rx_chain(struct bce_softc *sc) +{ + u16 prod, prod_idx; + u32 prod_bseq; + + DBENTER(BCE_VERBOSE_RESET | BCE_EXTREME_RECV | BCE_VERBOSE_LOAD | + BCE_VERBOSE_CTX); + + /* Get the RX chain producer indices. */ + prod = sc->rx_prod; + prod_bseq = sc->rx_prod_bseq; + + /* Keep filling the RX chain until it's full. */ + while (sc->free_rx_bd > 0) { + prod_idx = RX_CHAIN_IDX(prod); + if (bce_get_rx_buf(sc, NULL, &prod, &prod_idx, &prod_bseq)) { + /* Bail out if we can't add an mbuf to the chain. */ + break; + } + prod = NEXT_RX_BD(prod); + } + + /* Save the RX chain producer indices. */ + sc->rx_prod = prod; + sc->rx_prod_bseq = prod_bseq; + + /* We should never end up pointing to a next page pointer. */ + DBRUNIF(((prod & USABLE_RX_BD_PER_PAGE) == USABLE_RX_BD_PER_PAGE), + BCE_PRINTF("%s(): Invalid rx_prod value: 0x%04X\n", + __FUNCTION__, sc->rx_prod)); + + /* Write the mailbox and tell the chip about the waiting rx_bd's. */ + REG_WR16(sc, MB_GET_CID_ADDR(RX_CID) + + BCE_L2MQ_RX_HOST_BDIDX, sc->rx_prod); + REG_WR(sc, MB_GET_CID_ADDR(RX_CID) + + BCE_L2MQ_RX_HOST_BSEQ, sc->rx_prod_bseq); + + DBEXIT(BCE_VERBOSE_RESET | BCE_EXTREME_RECV | BCE_VERBOSE_LOAD | + BCE_VERBOSE_CTX); +} + + +/****************************************************************************/ +/* Free memory and clear the RX data structures. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_free_rx_chain(struct bce_softc *sc) +{ + int i; + + DBENTER(BCE_VERBOSE_RESET | BCE_VERBOSE_RECV | BCE_VERBOSE_UNLOAD); + + /* Free any mbufs still in the RX mbuf chain. */ + for (i = 0; i < TOTAL_RX_BD; i++) { + if (sc->rx_mbuf_ptr[i] != NULL) { + if (sc->rx_mbuf_map[i] != NULL) + bus_dmamap_sync(sc->rx_mbuf_tag, + sc->rx_mbuf_map[i], + BUS_DMASYNC_POSTREAD); + m_freem(sc->rx_mbuf_ptr[i]); + sc->rx_mbuf_ptr[i] = NULL; + DBRUN(sc->debug_rx_mbuf_alloc--); + } + } + + /* Clear each RX chain page. */ + for (i = 0; i < RX_PAGES; i++) + if (sc->rx_bd_chain[i] != NULL) { + bzero((char *)sc->rx_bd_chain[i], + BCE_RX_CHAIN_PAGE_SZ); + } + + sc->free_rx_bd = sc->max_rx_bd; + + /* Check if we lost any mbufs in the process. */ + DBRUNIF((sc->debug_rx_mbuf_alloc), + BCE_PRINTF("%s(): Memory leak! Lost %d mbufs from rx chain!\n", + __FUNCTION__, sc->debug_rx_mbuf_alloc)); + + DBEXIT(BCE_VERBOSE_RESET | BCE_VERBOSE_RECV | BCE_VERBOSE_UNLOAD); +} + + +#ifdef BCE_JUMBO_HDRSPLIT +/****************************************************************************/ +/* Allocate memory and initialize the page data structures. */ +/* Assumes that bce_init_rx_chain() has not already been called. */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/****************************************************************************/ +static int +bce_init_pg_chain(struct bce_softc *sc) +{ + struct rx_bd *pgbd; + int i, rc = 0; + u32 val; + + DBENTER(BCE_VERBOSE_RESET | BCE_VERBOSE_RECV | BCE_VERBOSE_LOAD | + BCE_VERBOSE_CTX); + + /* Initialize the page producer and consumer indices. */ + sc->pg_prod = 0; + sc->pg_cons = 0; + sc->free_pg_bd = USABLE_PG_BD; + sc->max_pg_bd = USABLE_PG_BD; + DBRUN(sc->pg_low_watermark = sc->max_pg_bd); + DBRUN(sc->pg_empty_count = 0); + + /* Initialize the page next pointer chain entries. */ + for (i = 0; i < PG_PAGES; i++) { + int j; + + pgbd = &sc->pg_bd_chain[i][USABLE_PG_BD_PER_PAGE]; + + /* Check if we've reached the last page. */ + if (i == (PG_PAGES - 1)) + j = 0; + else + j = i + 1; + + /* Setup the chain page pointers. */ + pgbd->rx_bd_haddr_hi = htole32(BCE_ADDR_HI(sc->pg_bd_chain_paddr[j])); + pgbd->rx_bd_haddr_lo = htole32(BCE_ADDR_LO(sc->pg_bd_chain_paddr[j])); + } + + /* Setup the MQ BIN mapping for host_pg_bidx. */ + if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || + (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) + REG_WR(sc, BCE_MQ_MAP_L2_3, BCE_MQ_MAP_L2_3_DEFAULT); + + CTX_WR(sc, GET_CID_ADDR(RX_CID), BCE_L2CTX_RX_PG_BUF_SIZE, 0); + + /* Configure the rx_bd and page chain mbuf cluster size. */ + val = (sc->rx_bd_mbuf_data_len << 16) | sc->pg_bd_mbuf_alloc_size; + CTX_WR(sc, GET_CID_ADDR(RX_CID), BCE_L2CTX_RX_PG_BUF_SIZE, val); + + /* Configure the context reserved for jumbo support. */ + CTX_WR(sc, GET_CID_ADDR(RX_CID), BCE_L2CTX_RX_RBDC_KEY, + BCE_L2CTX_RX_RBDC_JUMBO_KEY); + + /* Point the hardware to the first page in the page chain. */ + val = BCE_ADDR_HI(sc->pg_bd_chain_paddr[0]); + CTX_WR(sc, GET_CID_ADDR(RX_CID), BCE_L2CTX_RX_NX_PG_BDHADDR_HI, val); + val = BCE_ADDR_LO(sc->pg_bd_chain_paddr[0]); + CTX_WR(sc, GET_CID_ADDR(RX_CID), BCE_L2CTX_RX_NX_PG_BDHADDR_LO, val); + + /* Fill up the page chain. */ + bce_fill_pg_chain(sc); + + for (i = 0; i < PG_PAGES; i++) { + bus_dmamap_sync(sc->pg_bd_chain_tag, sc->pg_bd_chain_map[i], + BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE); + } + + DBRUNMSG(BCE_EXTREME_RECV, bce_dump_pg_chain(sc, 0, TOTAL_PG_BD)); + DBEXIT(BCE_VERBOSE_RESET | BCE_VERBOSE_RECV | BCE_VERBOSE_LOAD | + BCE_VERBOSE_CTX); + return(rc); +} + + +/****************************************************************************/ +/* Add mbufs to the page chain until its full or an mbuf allocation error */ +/* occurs. */ +/* */ +/* Returns: */ +/* Nothing */ +/****************************************************************************/ +static void +bce_fill_pg_chain(struct bce_softc *sc) +{ + u16 prod, prod_idx; + + DBENTER(BCE_VERBOSE_RESET | BCE_EXTREME_RECV | BCE_VERBOSE_LOAD | + BCE_VERBOSE_CTX); + + /* Get the page chain prodcuer index. */ + prod = sc->pg_prod; + + /* Keep filling the page chain until it's full. */ + while (sc->free_pg_bd > 0) { + prod_idx = PG_CHAIN_IDX(prod); + if (bce_get_pg_buf(sc, NULL, &prod, &prod_idx)) { + /* Bail out if we can't add an mbuf to the chain. */ + break; + } + prod = NEXT_PG_BD(prod); + } + + /* Save the page chain producer index. */ + sc->pg_prod = prod; + + DBRUNIF(((prod & USABLE_RX_BD_PER_PAGE) == USABLE_RX_BD_PER_PAGE), + BCE_PRINTF("%s(): Invalid pg_prod value: 0x%04X\n", + __FUNCTION__, sc->pg_prod)); + + /* + * Write the mailbox and tell the chip about + * the new rx_bd's in the page chain. + */ + REG_WR16(sc, MB_GET_CID_ADDR(RX_CID) + + BCE_L2MQ_RX_HOST_PG_BDIDX, sc->pg_prod); + + DBEXIT(BCE_VERBOSE_RESET | BCE_EXTREME_RECV | BCE_VERBOSE_LOAD | + BCE_VERBOSE_CTX); +} + + +/****************************************************************************/ +/* Free memory and clear the RX data structures. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_free_pg_chain(struct bce_softc *sc) +{ + int i; + + DBENTER(BCE_VERBOSE_RESET | BCE_VERBOSE_RECV | BCE_VERBOSE_UNLOAD); + + /* Free any mbufs still in the mbuf page chain. */ + for (i = 0; i < TOTAL_PG_BD; i++) { + if (sc->pg_mbuf_ptr[i] != NULL) { + if (sc->pg_mbuf_map[i] != NULL) + bus_dmamap_sync(sc->pg_mbuf_tag, + sc->pg_mbuf_map[i], + BUS_DMASYNC_POSTREAD); + m_freem(sc->pg_mbuf_ptr[i]); + sc->pg_mbuf_ptr[i] = NULL; + DBRUN(sc->debug_pg_mbuf_alloc--); + } + } + + /* Clear each page chain pages. */ + for (i = 0; i < PG_PAGES; i++) + bzero((char *)sc->pg_bd_chain[i], BCE_PG_CHAIN_PAGE_SZ); + + sc->free_pg_bd = sc->max_pg_bd; + + /* Check if we lost any mbufs in the process. */ + DBRUNIF((sc->debug_pg_mbuf_alloc), + BCE_PRINTF("%s(): Memory leak! Lost %d mbufs from page chain!\n", + __FUNCTION__, sc->debug_pg_mbuf_alloc)); + + DBEXIT(BCE_VERBOSE_RESET | BCE_VERBOSE_RECV | BCE_VERBOSE_UNLOAD); +} +#endif /* BCE_JUMBO_HDRSPLIT */ + + +/****************************************************************************/ +/* Set media options. */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/****************************************************************************/ +static int +bce_ifmedia_upd(struct ifnet *ifp) +{ + struct bce_softc *sc = ifp->if_softc; + int error; + + DBENTER(BCE_VERBOSE); + + BCE_LOCK(sc); + error = bce_ifmedia_upd_locked(ifp); + BCE_UNLOCK(sc); + + DBEXIT(BCE_VERBOSE); + return (error); +} + + +/****************************************************************************/ +/* Set media options. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static int +bce_ifmedia_upd_locked(struct ifnet *ifp) +{ + struct bce_softc *sc = ifp->if_softc; + struct mii_data *mii; + int error; + + DBENTER(BCE_VERBOSE_PHY); + + error = 0; + BCE_LOCK_ASSERT(sc); + + mii = device_get_softc(sc->bce_miibus); + + /* Make sure the MII bus has been enumerated. */ + if (mii) { + sc->bce_link_up = FALSE; + if (mii->mii_instance) { + struct mii_softc *miisc; + + LIST_FOREACH(miisc, &mii->mii_phys, mii_list) + mii_phy_reset(miisc); + } + error = mii_mediachg(mii); + } + + DBEXIT(BCE_VERBOSE_PHY); + return (error); +} + + +/****************************************************************************/ +/* Reports current media status. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr) +{ + struct bce_softc *sc = ifp->if_softc; + struct mii_data *mii; + + DBENTER(BCE_VERBOSE_PHY); + + BCE_LOCK(sc); + + if ((ifp->if_flags & IFF_UP) == 0) { + BCE_UNLOCK(sc); + return; + } + mii = device_get_softc(sc->bce_miibus); + + mii_pollstat(mii); + ifmr->ifm_active = mii->mii_media_active; + ifmr->ifm_status = mii->mii_media_status; + + BCE_UNLOCK(sc); + + DBEXIT(BCE_VERBOSE_PHY); +} + + +/****************************************************************************/ +/* Handles PHY generated interrupt events. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_phy_intr(struct bce_softc *sc) +{ + u32 new_link_state, old_link_state; + + DBENTER(BCE_VERBOSE_PHY | BCE_VERBOSE_INTR); + + DBRUN(sc->phy_interrupts++); + + new_link_state = sc->status_block->status_attn_bits & + STATUS_ATTN_BITS_LINK_STATE; + old_link_state = sc->status_block->status_attn_bits_ack & + STATUS_ATTN_BITS_LINK_STATE; + + /* Handle any changes if the link state has changed. */ + if (new_link_state != old_link_state) { + + /* Update the status_attn_bits_ack field. */ + if (new_link_state) { + REG_WR(sc, BCE_PCICFG_STATUS_BIT_SET_CMD, + STATUS_ATTN_BITS_LINK_STATE); + DBPRINT(sc, BCE_INFO_PHY, "%s(): Link is now UP.\n", + __FUNCTION__); + } + else { + REG_WR(sc, BCE_PCICFG_STATUS_BIT_CLEAR_CMD, + STATUS_ATTN_BITS_LINK_STATE); + DBPRINT(sc, BCE_INFO_PHY, "%s(): Link is now DOWN.\n", + __FUNCTION__); + } + + /* + * Assume link is down and allow + * tick routine to update the state + * based on the actual media state. + */ + sc->bce_link_up = FALSE; + callout_stop(&sc->bce_tick_callout); + bce_tick(sc); + } + + /* Acknowledge the link change interrupt. */ + REG_WR(sc, BCE_EMAC_STATUS, BCE_EMAC_STATUS_LINK_CHANGE); + + DBEXIT(BCE_VERBOSE_PHY | BCE_VERBOSE_INTR); +} + + +/****************************************************************************/ +/* Reads the receive consumer value from the status block (skipping over */ +/* chain page pointer if necessary). */ +/* */ +/* Returns: */ +/* hw_cons */ +/****************************************************************************/ +static inline u16 +bce_get_hw_rx_cons(struct bce_softc *sc) +{ + u16 hw_cons; + + rmb(); + hw_cons = sc->status_block->status_rx_quick_consumer_index0; + if ((hw_cons & USABLE_RX_BD_PER_PAGE) == USABLE_RX_BD_PER_PAGE) + hw_cons++; + + return hw_cons; +} + +/****************************************************************************/ +/* Handles received frame interrupt events. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_rx_intr(struct bce_softc *sc) +{ + struct ifnet *ifp = sc->bce_ifp; + struct l2_fhdr *l2fhdr; + struct ether_vlan_header *vh; + unsigned int pkt_len; + u16 sw_rx_cons, sw_rx_cons_idx, hw_rx_cons; + u32 status; +#ifdef BCE_JUMBO_HDRSPLIT + unsigned int rem_len; + u16 sw_pg_cons, sw_pg_cons_idx; +#endif + + DBENTER(BCE_VERBOSE_RECV | BCE_VERBOSE_INTR); + DBRUN(sc->interrupts_rx++); + DBPRINT(sc, BCE_EXTREME_RECV, "%s(enter): rx_prod = 0x%04X, " + "rx_cons = 0x%04X, rx_prod_bseq = 0x%08X\n", + __FUNCTION__, sc->rx_prod, sc->rx_cons, sc->rx_prod_bseq); + + /* Prepare the RX chain pages to be accessed by the host CPU. */ + for (int i = 0; i < RX_PAGES; i++) + bus_dmamap_sync(sc->rx_bd_chain_tag, + sc->rx_bd_chain_map[i], BUS_DMASYNC_POSTREAD); + +#ifdef BCE_JUMBO_HDRSPLIT + /* Prepare the page chain pages to be accessed by the host CPU. */ + for (int i = 0; i < PG_PAGES; i++) + bus_dmamap_sync(sc->pg_bd_chain_tag, + sc->pg_bd_chain_map[i], BUS_DMASYNC_POSTREAD); +#endif + + /* Get the hardware's view of the RX consumer index. */ + hw_rx_cons = sc->hw_rx_cons = bce_get_hw_rx_cons(sc); + + /* Get working copies of the driver's view of the consumer indices. */ + sw_rx_cons = sc->rx_cons; + +#ifdef BCE_JUMBO_HDRSPLIT + sw_pg_cons = sc->pg_cons; +#endif + + /* Update some debug statistics counters */ + DBRUNIF((sc->free_rx_bd < sc->rx_low_watermark), + sc->rx_low_watermark = sc->free_rx_bd); + DBRUNIF((sc->free_rx_bd == sc->max_rx_bd), + sc->rx_empty_count++); + + /* Scan through the receive chain as long as there is work to do */ + /* ToDo: Consider setting a limit on the number of packets processed. */ + rmb(); + while (sw_rx_cons != hw_rx_cons) { + struct mbuf *m0; + + /* Convert the producer/consumer indices to an actual rx_bd index. */ + sw_rx_cons_idx = RX_CHAIN_IDX(sw_rx_cons); + + /* Unmap the mbuf from DMA space. */ + bus_dmamap_sync(sc->rx_mbuf_tag, + sc->rx_mbuf_map[sw_rx_cons_idx], + BUS_DMASYNC_POSTREAD); + bus_dmamap_unload(sc->rx_mbuf_tag, + sc->rx_mbuf_map[sw_rx_cons_idx]); + + /* Remove the mbuf from the RX chain. */ + m0 = sc->rx_mbuf_ptr[sw_rx_cons_idx]; + sc->rx_mbuf_ptr[sw_rx_cons_idx] = NULL; + DBRUN(sc->debug_rx_mbuf_alloc--); + sc->free_rx_bd++; + + if(m0 == NULL) { + DBPRINT(sc, BCE_EXTREME_RECV, + "%s(): Oops! Empty mbuf pointer " + "found in sc->rx_mbuf_ptr[0x%04X]!\n", + __FUNCTION__, sw_rx_cons_idx); + goto bce_rx_int_next_rx; + } + + /* + * Frames received on the NetXteme II are prepended + * with an l2_fhdr structure which provides status + * information about the received frame (including + * VLAN tags and checksum info). The frames are + * also automatically adjusted to align the IP + * header (i.e. two null bytes are inserted before + * the Ethernet header). As a result the data + * DMA'd by the controller into the mbuf looks + * like this: + * + * +---------+-----+---------------------+-----+ + * | l2_fhdr | pad | packet data | FCS | + * +---------+-----+---------------------+-----+ + * + * The l2_fhdr needs to be checked and skipped and + * the FCS needs to be stripped before sending the + * packet up the stack. + */ + l2fhdr = mtod(m0, struct l2_fhdr *); + + /* Get the packet data + FCS length and the status. */ + pkt_len = l2fhdr->l2_fhdr_pkt_len; + status = l2fhdr->l2_fhdr_status; + + /* + * Skip over the l2_fhdr and pad, resulting in the + * following data in the mbuf: + * +---------------------+-----+ + * | packet data | FCS | + * +---------------------+-----+ + */ + m_adj(m0, sizeof(struct l2_fhdr) + ETHER_ALIGN); + +#ifdef BCE_JUMBO_HDRSPLIT + /* + * Check whether the received frame fits in a single + * mbuf or not (i.e. packet data + FCS <= + * sc->rx_bd_mbuf_data_len bytes). + */ + if (pkt_len > m0->m_len) { + /* + * The received frame is larger than a single mbuf. + * If the frame was a TCP frame then only the TCP + * header is placed in the mbuf, the remaining + * payload (including FCS) is placed in the page + * chain, the SPLIT flag is set, and the header + * length is placed in the IP checksum field. + * If the frame is not a TCP frame then the mbuf + * is filled and the remaining bytes are placed + * in the page chain. + */ + + DBPRINT(sc, BCE_INFO_RECV, "%s(): Found a large " + "packet.\n", __FUNCTION__); + + /* + * When the page chain is enabled and the TCP + * header has been split from the TCP payload, + * the ip_xsum structure will reflect the length + * of the TCP header, not the IP checksum. Set + * the packet length of the mbuf accordingly. + */ + if (status & L2_FHDR_STATUS_SPLIT) + m0->m_len = l2fhdr->l2_fhdr_ip_xsum; + + rem_len = pkt_len - m0->m_len; + + /* Pull mbufs off the page chain for the remaining data. */ + while (rem_len > 0) { + struct mbuf *m_pg; + + sw_pg_cons_idx = PG_CHAIN_IDX(sw_pg_cons); + + /* Remove the mbuf from the page chain. */ + m_pg = sc->pg_mbuf_ptr[sw_pg_cons_idx]; + sc->pg_mbuf_ptr[sw_pg_cons_idx] = NULL; + DBRUN(sc->debug_pg_mbuf_alloc--); + sc->free_pg_bd++; + + /* Unmap the page chain mbuf from DMA space. */ + bus_dmamap_sync(sc->pg_mbuf_tag, + sc->pg_mbuf_map[sw_pg_cons_idx], + BUS_DMASYNC_POSTREAD); + bus_dmamap_unload(sc->pg_mbuf_tag, + sc->pg_mbuf_map[sw_pg_cons_idx]); + + /* Adjust the mbuf length. */ + if (rem_len < m_pg->m_len) { + /* The mbuf chain is complete. */ + m_pg->m_len = rem_len; + rem_len = 0; + } else { + /* More packet data is waiting. */ + rem_len -= m_pg->m_len; + } + + /* Concatenate the mbuf cluster to the mbuf. */ + m_cat(m0, m_pg); + + sw_pg_cons = NEXT_PG_BD(sw_pg_cons); + } + + /* Set the total packet length. */ + m0->m_pkthdr.len = pkt_len; + + } else { + /* + * The received packet is small and fits in a + * single mbuf (i.e. the l2_fhdr + pad + packet + + * FCS <= MHLEN). In other words, the packet is + * 154 bytes or less in size. + */ + + DBPRINT(sc, BCE_INFO_RECV, "%s(): Found a small " + "packet.\n", __FUNCTION__); + + /* Set the total packet length. */ + m0->m_pkthdr.len = m0->m_len = pkt_len; + } +#else + /* Set the total packet length. */ + m0->m_pkthdr.len = m0->m_len = pkt_len; +#endif + + /* Remove the trailing Ethernet FCS. */ + m_adj(m0, -ETHER_CRC_LEN); + + /* Check that the resulting mbuf chain is valid. */ + DBRUN(m_sanity(m0, FALSE)); + DBRUNIF(((m0->m_len < ETHER_HDR_LEN) | + (m0->m_pkthdr.len > BCE_MAX_JUMBO_ETHER_MTU_VLAN)), + BCE_PRINTF("Invalid Ethernet frame size!\n"); + m_print(m0, 128)); + + DBRUNIF(DB_RANDOMTRUE(l2fhdr_error_sim_control), + sc->l2fhdr_error_sim_count++; + status = status | L2_FHDR_ERRORS_PHY_DECODE); + + /* Check the received frame for errors. */ + if (status & (L2_FHDR_ERRORS_BAD_CRC | + L2_FHDR_ERRORS_PHY_DECODE | L2_FHDR_ERRORS_ALIGNMENT | + L2_FHDR_ERRORS_TOO_SHORT | L2_FHDR_ERRORS_GIANT_FRAME)) { + + /* Log the error and release the mbuf. */ + ifp->if_ierrors++; + sc->l2fhdr_error_count++; + + m_freem(m0); + m0 = NULL; + goto bce_rx_int_next_rx; + } + + /* Send the packet to the appropriate interface. */ + m0->m_pkthdr.rcvif = ifp; + + /* Assume no hardware checksum. */ + m0->m_pkthdr.csum_flags = 0; + + /* Validate the checksum if offload enabled. */ + if (ifp->if_capenable & IFCAP_RXCSUM) { + + /* Check for an IP datagram. */ + if (!(status & L2_FHDR_STATUS_SPLIT) && + (status & L2_FHDR_STATUS_IP_DATAGRAM)) { + m0->m_pkthdr.csum_flags |= CSUM_IP_CHECKED; + DBRUN(sc->csum_offload_ip++); + /* Check if the IP checksum is valid. */ + if ((l2fhdr->l2_fhdr_ip_xsum ^ 0xffff) == 0) + m0->m_pkthdr.csum_flags |= + CSUM_IP_VALID; + } + + /* Check for a valid TCP/UDP frame. */ + if (status & (L2_FHDR_STATUS_TCP_SEGMENT | + L2_FHDR_STATUS_UDP_DATAGRAM)) { + + /* Check for a good TCP/UDP checksum. */ + if ((status & (L2_FHDR_ERRORS_TCP_XSUM | + L2_FHDR_ERRORS_UDP_XSUM)) == 0) { + DBRUN(sc->csum_offload_tcp_udp++); + m0->m_pkthdr.csum_data = + l2fhdr->l2_fhdr_tcp_udp_xsum; + m0->m_pkthdr.csum_flags |= + (CSUM_DATA_VALID + | CSUM_PSEUDO_HDR); + } + } + } + + /* Attach the VLAN tag. */ + if (status & L2_FHDR_STATUS_L2_VLAN_TAG) { + if (ifp->if_capenable & IFCAP_VLAN_HWTAGGING) { +#if __FreeBSD_version < 700000 + VLAN_INPUT_TAG(ifp, m0, + l2fhdr->l2_fhdr_vlan_tag, continue); +#else + m0->m_pkthdr.ether_vtag = + l2fhdr->l2_fhdr_vlan_tag; + m0->m_flags |= M_VLANTAG; +#endif + } else { + /* + * bce(4) controllers can't disable VLAN + * tag stripping if management firmware + * (ASF/IPMI/UMP) is running. So we always + * strip VLAN tag and manually reconstruct + * the VLAN frame by appending stripped + * VLAN tag in driver if VLAN tag stripping + * was disabled. + * + * TODO: LLC SNAP handling. + */ + bcopy(mtod(m0, uint8_t *), + mtod(m0, uint8_t *) - ETHER_VLAN_ENCAP_LEN, + ETHER_ADDR_LEN * 2); + m0->m_data -= ETHER_VLAN_ENCAP_LEN; + vh = mtod(m0, struct ether_vlan_header *); + vh->evl_encap_proto = htons(ETHERTYPE_VLAN); + vh->evl_tag = htons(l2fhdr->l2_fhdr_vlan_tag); + m0->m_pkthdr.len += ETHER_VLAN_ENCAP_LEN; + m0->m_len += ETHER_VLAN_ENCAP_LEN; + } + } + + /* Increment received packet statistics. */ + ifp->if_ipackets++; + +bce_rx_int_next_rx: + sw_rx_cons = NEXT_RX_BD(sw_rx_cons); + + /* If we have a packet, pass it up the stack */ + if (m0) { + /* Make sure we don't lose our place when we release the lock. */ + sc->rx_cons = sw_rx_cons; +#ifdef BCE_JUMBO_HDRSPLIT + sc->pg_cons = sw_pg_cons; +#endif + + BCE_UNLOCK(sc); + (*ifp->if_input)(ifp, m0); + BCE_LOCK(sc); + + /* Recover our place. */ + sw_rx_cons = sc->rx_cons; +#ifdef BCE_JUMBO_HDRSPLIT + sw_pg_cons = sc->pg_cons; +#endif + } + + /* Refresh hw_cons to see if there's new work */ + if (sw_rx_cons == hw_rx_cons) + hw_rx_cons = sc->hw_rx_cons = bce_get_hw_rx_cons(sc); + } + +#ifdef BCE_JUMBO_HDRSPLIT + /* No new packets. Refill the page chain. */ + sc->pg_cons = sw_pg_cons; + bce_fill_pg_chain(sc); +#endif + + /* No new packets. Refill the RX chain. */ + sc->rx_cons = sw_rx_cons; + bce_fill_rx_chain(sc); + + /* Prepare the page chain pages to be accessed by the NIC. */ + for (int i = 0; i < RX_PAGES; i++) + bus_dmamap_sync(sc->rx_bd_chain_tag, + sc->rx_bd_chain_map[i], BUS_DMASYNC_PREWRITE); + +#ifdef BCE_JUMBO_HDRSPLIT + for (int i = 0; i < PG_PAGES; i++) + bus_dmamap_sync(sc->pg_bd_chain_tag, + sc->pg_bd_chain_map[i], BUS_DMASYNC_PREWRITE); +#endif + + DBPRINT(sc, BCE_EXTREME_RECV, "%s(exit): rx_prod = 0x%04X, " + "rx_cons = 0x%04X, rx_prod_bseq = 0x%08X\n", + __FUNCTION__, sc->rx_prod, sc->rx_cons, sc->rx_prod_bseq); + DBEXIT(BCE_VERBOSE_RECV | BCE_VERBOSE_INTR); +} + + +/****************************************************************************/ +/* Reads the transmit consumer value from the status block (skipping over */ +/* chain page pointer if necessary). */ +/* */ +/* Returns: */ +/* hw_cons */ +/****************************************************************************/ +static inline u16 +bce_get_hw_tx_cons(struct bce_softc *sc) +{ + u16 hw_cons; + + mb(); + hw_cons = sc->status_block->status_tx_quick_consumer_index0; + if ((hw_cons & USABLE_TX_BD_PER_PAGE) == USABLE_TX_BD_PER_PAGE) + hw_cons++; + + return hw_cons; +} + + +/****************************************************************************/ +/* Handles transmit completion interrupt events. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_tx_intr(struct bce_softc *sc) +{ + struct ifnet *ifp = sc->bce_ifp; + u16 hw_tx_cons, sw_tx_cons, sw_tx_chain_cons; + + DBENTER(BCE_VERBOSE_SEND | BCE_VERBOSE_INTR); + DBRUN(sc->interrupts_tx++); + DBPRINT(sc, BCE_EXTREME_SEND, "%s(enter): tx_prod = 0x%04X, " + "tx_cons = 0x%04X, tx_prod_bseq = 0x%08X\n", + __FUNCTION__, sc->tx_prod, sc->tx_cons, sc->tx_prod_bseq); + + BCE_LOCK_ASSERT(sc); + + /* Get the hardware's view of the TX consumer index. */ + hw_tx_cons = sc->hw_tx_cons = bce_get_hw_tx_cons(sc); + sw_tx_cons = sc->tx_cons; + + /* Prevent speculative reads of the status block. */ + bus_space_barrier(sc->bce_btag, sc->bce_bhandle, 0, 0, + BUS_SPACE_BARRIER_READ); + + /* Cycle through any completed TX chain page entries. */ + while (sw_tx_cons != hw_tx_cons) { +#ifdef BCE_DEBUG + struct tx_bd *txbd = NULL; +#endif + sw_tx_chain_cons = TX_CHAIN_IDX(sw_tx_cons); + + DBPRINT(sc, BCE_INFO_SEND, + "%s(): hw_tx_cons = 0x%04X, sw_tx_cons = 0x%04X, " + "sw_tx_chain_cons = 0x%04X\n", + __FUNCTION__, hw_tx_cons, sw_tx_cons, sw_tx_chain_cons); + + DBRUNIF((sw_tx_chain_cons > MAX_TX_BD), + BCE_PRINTF("%s(%d): TX chain consumer out of range! " + " 0x%04X > 0x%04X\n", __FILE__, __LINE__, sw_tx_chain_cons, + (int) MAX_TX_BD); + bce_breakpoint(sc)); + + DBRUN(txbd = &sc->tx_bd_chain[TX_PAGE(sw_tx_chain_cons)] + [TX_IDX(sw_tx_chain_cons)]); + + DBRUNIF((txbd == NULL), + BCE_PRINTF("%s(%d): Unexpected NULL tx_bd[0x%04X]!\n", + __FILE__, __LINE__, sw_tx_chain_cons); + bce_breakpoint(sc)); + + DBRUNMSG(BCE_INFO_SEND, BCE_PRINTF("%s(): ", __FUNCTION__); + bce_dump_txbd(sc, sw_tx_chain_cons, txbd)); + + /* + * Free the associated mbuf. Remember + * that only the last tx_bd of a packet + * has an mbuf pointer and DMA map. + */ + if (sc->tx_mbuf_ptr[sw_tx_chain_cons] != NULL) { + + /* Validate that this is the last tx_bd. */ + DBRUNIF((!(txbd->tx_bd_flags & TX_BD_FLAGS_END)), + BCE_PRINTF("%s(%d): tx_bd END flag not set but " + "txmbuf == NULL!\n", __FILE__, __LINE__); + bce_breakpoint(sc)); + + DBRUNMSG(BCE_INFO_SEND, + BCE_PRINTF("%s(): Unloading map/freeing mbuf " + "from tx_bd[0x%04X]\n", __FUNCTION__, + sw_tx_chain_cons)); + + /* Unmap the mbuf. */ + bus_dmamap_unload(sc->tx_mbuf_tag, + sc->tx_mbuf_map[sw_tx_chain_cons]); + + /* Free the mbuf. */ + m_freem(sc->tx_mbuf_ptr[sw_tx_chain_cons]); + sc->tx_mbuf_ptr[sw_tx_chain_cons] = NULL; + DBRUN(sc->debug_tx_mbuf_alloc--); + + ifp->if_opackets++; + } + + sc->used_tx_bd--; + sw_tx_cons = NEXT_TX_BD(sw_tx_cons); + + /* Refresh hw_cons to see if there's new work. */ + hw_tx_cons = sc->hw_tx_cons = bce_get_hw_tx_cons(sc); + + /* Prevent speculative reads of the status block. */ + bus_space_barrier(sc->bce_btag, sc->bce_bhandle, 0, 0, + BUS_SPACE_BARRIER_READ); + } + + /* Clear the TX timeout timer. */ + sc->watchdog_timer = 0; + + /* Clear the tx hardware queue full flag. */ + if (sc->used_tx_bd < sc->max_tx_bd) { + DBRUNIF((ifp->if_drv_flags & IFF_DRV_OACTIVE), + DBPRINT(sc, BCE_INFO_SEND, + "%s(): Open TX chain! %d/%d (used/total)\n", + __FUNCTION__, sc->used_tx_bd, sc->max_tx_bd)); + ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; + } + + sc->tx_cons = sw_tx_cons; + + DBPRINT(sc, BCE_EXTREME_SEND, "%s(exit): tx_prod = 0x%04X, " + "tx_cons = 0x%04X, tx_prod_bseq = 0x%08X\n", + __FUNCTION__, sc->tx_prod, sc->tx_cons, sc->tx_prod_bseq); + DBEXIT(BCE_VERBOSE_SEND | BCE_VERBOSE_INTR); +} + + +/****************************************************************************/ +/* Disables interrupt generation. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_disable_intr(struct bce_softc *sc) +{ + DBENTER(BCE_VERBOSE_INTR); + + REG_WR(sc, BCE_PCICFG_INT_ACK_CMD, BCE_PCICFG_INT_ACK_CMD_MASK_INT); + REG_RD(sc, BCE_PCICFG_INT_ACK_CMD); + + DBEXIT(BCE_VERBOSE_INTR); +} + + +/****************************************************************************/ +/* Enables interrupt generation. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_enable_intr(struct bce_softc *sc, int coal_now) +{ + DBENTER(BCE_VERBOSE_INTR); + + REG_WR(sc, BCE_PCICFG_INT_ACK_CMD, + BCE_PCICFG_INT_ACK_CMD_INDEX_VALID | + BCE_PCICFG_INT_ACK_CMD_MASK_INT | sc->last_status_idx); + + REG_WR(sc, BCE_PCICFG_INT_ACK_CMD, + BCE_PCICFG_INT_ACK_CMD_INDEX_VALID | sc->last_status_idx); + + /* Force an immediate interrupt (whether there is new data or not). */ + if (coal_now) + REG_WR(sc, BCE_HC_COMMAND, sc->hc_command | BCE_HC_COMMAND_COAL_NOW); + + DBEXIT(BCE_VERBOSE_INTR); +} + + +/****************************************************************************/ +/* Handles controller initialization. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_init_locked(struct bce_softc *sc) +{ + struct ifnet *ifp; + u32 ether_mtu = 0; + + DBENTER(BCE_VERBOSE_RESET); + + BCE_LOCK_ASSERT(sc); + + ifp = sc->bce_ifp; + + /* Check if the driver is still running and bail out if it is. */ + if (ifp->if_drv_flags & IFF_DRV_RUNNING) + goto bce_init_locked_exit; + + bce_stop(sc); + + if (bce_reset(sc, BCE_DRV_MSG_CODE_RESET)) { + BCE_PRINTF("%s(%d): Controller reset failed!\n", + __FILE__, __LINE__); + goto bce_init_locked_exit; + } + + if (bce_chipinit(sc)) { + BCE_PRINTF("%s(%d): Controller initialization failed!\n", + __FILE__, __LINE__); + goto bce_init_locked_exit; + } + + if (bce_blockinit(sc)) { + BCE_PRINTF("%s(%d): Block initialization failed!\n", + __FILE__, __LINE__); + goto bce_init_locked_exit; + } + + /* Load our MAC address. */ + bcopy(IF_LLADDR(sc->bce_ifp), sc->eaddr, ETHER_ADDR_LEN); + bce_set_mac_addr(sc); + + /* + * Calculate and program the hardware Ethernet MTU + * size. Be generous on the receive if we have room. + */ +#ifdef BCE_JUMBO_HDRSPLIT + if (ifp->if_mtu <= (sc->rx_bd_mbuf_data_len + + sc->pg_bd_mbuf_alloc_size)) + ether_mtu = sc->rx_bd_mbuf_data_len + + sc->pg_bd_mbuf_alloc_size; +#else + if (ifp->if_mtu <= sc->rx_bd_mbuf_data_len) + ether_mtu = sc->rx_bd_mbuf_data_len; +#endif + else + ether_mtu = ifp->if_mtu; + + ether_mtu += ETHER_HDR_LEN + ETHER_VLAN_ENCAP_LEN + ETHER_CRC_LEN; + + DBPRINT(sc, BCE_INFO_MISC, "%s(): setting h/w mtu = %d\n", + __FUNCTION__, ether_mtu); + + /* Program the mtu, enabling jumbo frame support if necessary. */ + if (ether_mtu > (ETHER_MAX_LEN + ETHER_VLAN_ENCAP_LEN)) + REG_WR(sc, BCE_EMAC_RX_MTU_SIZE, + min(ether_mtu, BCE_MAX_JUMBO_ETHER_MTU) | + BCE_EMAC_RX_MTU_SIZE_JUMBO_ENA); + else + REG_WR(sc, BCE_EMAC_RX_MTU_SIZE, ether_mtu); + + DBPRINT(sc, BCE_INFO_LOAD, + "%s(): rx_bd_mbuf_alloc_size = %d, rx_bce_mbuf_data_len = %d, " + "rx_bd_mbuf_align_pad = %d\n", __FUNCTION__, + sc->rx_bd_mbuf_alloc_size, sc->rx_bd_mbuf_data_len, + sc->rx_bd_mbuf_align_pad); + + /* Program appropriate promiscuous/multicast filtering. */ + bce_set_rx_mode(sc); + +#ifdef BCE_JUMBO_HDRSPLIT + DBPRINT(sc, BCE_INFO_LOAD, "%s(): pg_bd_mbuf_alloc_size = %d\n", + __FUNCTION__, sc->pg_bd_mbuf_alloc_size); + + /* Init page buffer descriptor chain. */ + bce_init_pg_chain(sc); +#endif + + /* Init RX buffer descriptor chain. */ + bce_init_rx_chain(sc); + + /* Init TX buffer descriptor chain. */ + bce_init_tx_chain(sc); + + /* Enable host interrupts. */ + bce_enable_intr(sc, 1); + + bce_ifmedia_upd_locked(ifp); + + /* Let the OS know the driver is up and running. */ + ifp->if_drv_flags |= IFF_DRV_RUNNING; + ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; + + callout_reset(&sc->bce_tick_callout, hz, bce_tick, sc); + +bce_init_locked_exit: + DBEXIT(BCE_VERBOSE_RESET); +} + + +/****************************************************************************/ +/* Initialize the controller just enough so that any management firmware */ +/* running on the device will continue to operate correctly. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_mgmt_init_locked(struct bce_softc *sc) +{ + struct ifnet *ifp; + + DBENTER(BCE_VERBOSE_RESET); + + BCE_LOCK_ASSERT(sc); + + /* Bail out if management firmware is not running. */ + if (!(sc->bce_flags & BCE_MFW_ENABLE_FLAG)) { + DBPRINT(sc, BCE_VERBOSE_SPECIAL, + "No management firmware running...\n"); + goto bce_mgmt_init_locked_exit; + } + + ifp = sc->bce_ifp; + + /* Enable all critical blocks in the MAC. */ + REG_WR(sc, BCE_MISC_ENABLE_SET_BITS, BCE_MISC_ENABLE_DEFAULT); + REG_RD(sc, BCE_MISC_ENABLE_SET_BITS); + DELAY(20); + + bce_ifmedia_upd_locked(ifp); + +bce_mgmt_init_locked_exit: + DBEXIT(BCE_VERBOSE_RESET); +} + + +/****************************************************************************/ +/* Handles controller initialization when called from an unlocked routine. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_init(void *xsc) +{ + struct bce_softc *sc = xsc; + + DBENTER(BCE_VERBOSE_RESET); + + BCE_LOCK(sc); + bce_init_locked(sc); + BCE_UNLOCK(sc); + + DBEXIT(BCE_VERBOSE_RESET); +} + + +/****************************************************************************/ +/* Modifies an mbuf for TSO on the hardware. */ +/* */ +/* Returns: */ +/* Pointer to a modified mbuf. */ +/****************************************************************************/ +static struct mbuf * +bce_tso_setup(struct bce_softc *sc, struct mbuf **m_head, u16 *flags) +{ + struct mbuf *m; + struct ether_header *eh; + struct ip *ip; + struct tcphdr *th; + u16 etype; + int hdr_len, ip_hlen = 0, tcp_hlen = 0, ip_len = 0; + + DBRUN(sc->tso_frames_requested++); + + /* Controller may modify mbuf chains. */ + if (M_WRITABLE(*m_head) == 0) { + m = m_dup(*m_head, M_DONTWAIT); + m_freem(*m_head); + if (m == NULL) { + sc->mbuf_alloc_failed_count++; + *m_head = NULL; + return (NULL); + } + *m_head = m; + } + + /* + * For TSO the controller needs two pieces of info, + * the MSS and the IP+TCP options length. + */ + m = m_pullup(*m_head, sizeof(struct ether_header) + sizeof(struct ip)); + if (m == NULL) { + *m_head = NULL; + return (NULL); + } + eh = mtod(m, struct ether_header *); + etype = ntohs(eh->ether_type); + + /* Check for supported TSO Ethernet types (only IPv4 for now) */ + switch (etype) { + case ETHERTYPE_IP: + ip = (struct ip *)(m->m_data + sizeof(struct ether_header)); + /* TSO only supported for TCP protocol. */ + if (ip->ip_p != IPPROTO_TCP) { + BCE_PRINTF("%s(%d): TSO enabled for non-TCP frame!.\n", + __FILE__, __LINE__); + m_freem(*m_head); + *m_head = NULL; + return (NULL); + } + + /* Get IP header length in bytes (min 20) */ + ip_hlen = ip->ip_hl << 2; + m = m_pullup(*m_head, sizeof(struct ether_header) + ip_hlen + + sizeof(struct tcphdr)); + if (m == NULL) { + *m_head = NULL; + return (NULL); + } + + /* Get the TCP header length in bytes (min 20) */ + ip = (struct ip *)(m->m_data + sizeof(struct ether_header)); + th = (struct tcphdr *)((caddr_t)ip + ip_hlen); + tcp_hlen = (th->th_off << 2); + + /* Make sure all IP/TCP options live in the same buffer. */ + m = m_pullup(*m_head, sizeof(struct ether_header)+ ip_hlen + + tcp_hlen); + if (m == NULL) { + *m_head = NULL; + return (NULL); + } + + /* IP header length and checksum will be calc'd by hardware */ + ip = (struct ip *)(m->m_data + sizeof(struct ether_header)); + ip_len = ip->ip_len; + ip->ip_len = 0; + ip->ip_sum = 0; + break; + case ETHERTYPE_IPV6: + BCE_PRINTF("%s(%d): TSO over IPv6 not supported!.\n", + __FILE__, __LINE__); + m_freem(*m_head); + *m_head = NULL; + return (NULL); + /* NOT REACHED */ + default: + BCE_PRINTF("%s(%d): TSO enabled for unsupported protocol!.\n", + __FILE__, __LINE__); + m_freem(*m_head); + *m_head = NULL; + return (NULL); + } + + hdr_len = sizeof(struct ether_header) + ip_hlen + tcp_hlen; + + DBPRINT(sc, BCE_EXTREME_SEND, "%s(): hdr_len = %d, e_hlen = %d, " + "ip_hlen = %d, tcp_hlen = %d, ip_len = %d\n", + __FUNCTION__, hdr_len, (int) sizeof(struct ether_header), ip_hlen, + tcp_hlen, ip_len); + + /* Set the LSO flag in the TX BD */ + *flags |= TX_BD_FLAGS_SW_LSO; + + /* Set the length of IP + TCP options (in 32 bit words) */ + *flags |= (((ip_hlen + tcp_hlen - sizeof(struct ip) - + sizeof(struct tcphdr)) >> 2) << 8); + + DBRUN(sc->tso_frames_completed++); + return (*m_head); +} + + +/****************************************************************************/ +/* Encapsultes an mbuf cluster into the tx_bd chain structure and makes the */ +/* memory visible to the controller. */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/* Modified: */ +/* m_head: May be set to NULL if MBUF is excessively fragmented. */ +/****************************************************************************/ +static int +bce_tx_encap(struct bce_softc *sc, struct mbuf **m_head) +{ + bus_dma_segment_t segs[BCE_MAX_SEGMENTS]; + bus_dmamap_t map; + struct tx_bd *txbd = NULL; + struct mbuf *m0; + u16 prod, chain_prod, mss = 0, vlan_tag = 0, flags = 0; + u32 prod_bseq; + +#ifdef BCE_DEBUG + u16 debug_prod; +#endif + + int i, error, nsegs, rc = 0; + + DBENTER(BCE_VERBOSE_SEND); + + /* Make sure we have room in the TX chain. */ + if (sc->used_tx_bd >= sc->max_tx_bd) + goto bce_tx_encap_exit; + + /* Transfer any checksum offload flags to the bd. */ + m0 = *m_head; + if (m0->m_pkthdr.csum_flags) { + if (m0->m_pkthdr.csum_flags & CSUM_TSO) { + m0 = bce_tso_setup(sc, m_head, &flags); + if (m0 == NULL) { + DBRUN(sc->tso_frames_failed++); + goto bce_tx_encap_exit; + } + mss = htole16(m0->m_pkthdr.tso_segsz); + } else { + if (m0->m_pkthdr.csum_flags & CSUM_IP) + flags |= TX_BD_FLAGS_IP_CKSUM; + if (m0->m_pkthdr.csum_flags & (CSUM_TCP | CSUM_UDP)) + flags |= TX_BD_FLAGS_TCP_UDP_CKSUM; + } + } + + /* Transfer any VLAN tags to the bd. */ + if (m0->m_flags & M_VLANTAG) { + flags |= TX_BD_FLAGS_VLAN_TAG; + vlan_tag = m0->m_pkthdr.ether_vtag; + } + + /* Map the mbuf into DMAable memory. */ + prod = sc->tx_prod; + chain_prod = TX_CHAIN_IDX(prod); + map = sc->tx_mbuf_map[chain_prod]; + + /* Map the mbuf into our DMA address space. */ + error = bus_dmamap_load_mbuf_sg(sc->tx_mbuf_tag, map, m0, + segs, &nsegs, BUS_DMA_NOWAIT); + + /* Check if the DMA mapping was successful */ + if (error == EFBIG) { + sc->mbuf_frag_count++; + + /* Try to defrag the mbuf. */ + m0 = m_collapse(*m_head, M_DONTWAIT, BCE_MAX_SEGMENTS); + if (m0 == NULL) { + /* Defrag was unsuccessful */ + m_freem(*m_head); + *m_head = NULL; + sc->mbuf_alloc_failed_count++; + rc = ENOBUFS; + goto bce_tx_encap_exit; + } + + /* Defrag was successful, try mapping again */ + *m_head = m0; + error = bus_dmamap_load_mbuf_sg(sc->tx_mbuf_tag, + map, m0, segs, &nsegs, BUS_DMA_NOWAIT); + + /* Still getting an error after a defrag. */ + if (error == ENOMEM) { + /* Insufficient DMA buffers available. */ + sc->dma_map_addr_tx_failed_count++; + rc = error; + goto bce_tx_encap_exit; + } else if (error != 0) { + /* Release it and return an error. */ + BCE_PRINTF("%s(%d): Unknown error mapping mbuf into " + "TX chain!\n", __FILE__, __LINE__); + m_freem(m0); + *m_head = NULL; + sc->dma_map_addr_tx_failed_count++; + rc = ENOBUFS; + goto bce_tx_encap_exit; + } + } else if (error == ENOMEM) { + /* Insufficient DMA buffers available. */ + sc->dma_map_addr_tx_failed_count++; + rc = error; + goto bce_tx_encap_exit; + } else if (error != 0) { + m_freem(m0); + *m_head = NULL; + sc->dma_map_addr_tx_failed_count++; + rc = error; + goto bce_tx_encap_exit; + } + + /* Make sure there's room in the chain */ + if (nsegs > (sc->max_tx_bd - sc->used_tx_bd)) { + bus_dmamap_unload(sc->tx_mbuf_tag, map); + rc = ENOBUFS; + goto bce_tx_encap_exit; + } + + /* prod points to an empty tx_bd at this point. */ + prod_bseq = sc->tx_prod_bseq; + +#ifdef BCE_DEBUG + debug_prod = chain_prod; +#endif + + DBPRINT(sc, BCE_INFO_SEND, + "%s(start): prod = 0x%04X, chain_prod = 0x%04X, " + "prod_bseq = 0x%08X\n", + __FUNCTION__, prod, chain_prod, prod_bseq); + + /* + * Cycle through each mbuf segment that makes up + * the outgoing frame, gathering the mapping info + * for that segment and creating a tx_bd for + * the mbuf. + */ + for (i = 0; i < nsegs ; i++) { + + chain_prod = TX_CHAIN_IDX(prod); + txbd= &sc->tx_bd_chain[TX_PAGE(chain_prod)] + [TX_IDX(chain_prod)]; + + txbd->tx_bd_haddr_lo = + htole32(BCE_ADDR_LO(segs[i].ds_addr)); + txbd->tx_bd_haddr_hi = + htole32(BCE_ADDR_HI(segs[i].ds_addr)); + txbd->tx_bd_mss_nbytes = htole32(mss << 16) | + htole16(segs[i].ds_len); + txbd->tx_bd_vlan_tag = htole16(vlan_tag); + txbd->tx_bd_flags = htole16(flags); + prod_bseq += segs[i].ds_len; + if (i == 0) + txbd->tx_bd_flags |= htole16(TX_BD_FLAGS_START); + prod = NEXT_TX_BD(prod); + } + + /* Set the END flag on the last TX buffer descriptor. */ + txbd->tx_bd_flags |= htole16(TX_BD_FLAGS_END); + + DBRUNMSG(BCE_EXTREME_SEND, + bce_dump_tx_chain(sc, debug_prod, nsegs)); + + /* + * Ensure that the mbuf pointer for this transmission + * is placed at the array index of the last + * descriptor in this chain. This is done + * because a single map is used for all + * segments of the mbuf and we don't want to + * unload the map before all of the segments + * have been freed. + */ + sc->tx_mbuf_ptr[chain_prod] = m0; + sc->used_tx_bd += nsegs; + + /* Update some debug statistic counters */ + DBRUNIF((sc->used_tx_bd > sc->tx_hi_watermark), + sc->tx_hi_watermark = sc->used_tx_bd); + DBRUNIF((sc->used_tx_bd == sc->max_tx_bd), sc->tx_full_count++); + DBRUNIF(sc->debug_tx_mbuf_alloc++); + + DBRUNMSG(BCE_EXTREME_SEND, bce_dump_tx_mbuf_chain(sc, chain_prod, 1)); + + /* prod points to the next free tx_bd at this point. */ + sc->tx_prod = prod; + sc->tx_prod_bseq = prod_bseq; + + /* Tell the chip about the waiting TX frames. */ + REG_WR16(sc, MB_GET_CID_ADDR(TX_CID) + + BCE_L2MQ_TX_HOST_BIDX, sc->tx_prod); + REG_WR(sc, MB_GET_CID_ADDR(TX_CID) + + BCE_L2MQ_TX_HOST_BSEQ, sc->tx_prod_bseq); + +bce_tx_encap_exit: + DBEXIT(BCE_VERBOSE_SEND); + return(rc); +} + + +/****************************************************************************/ +/* Main transmit routine when called from another routine with a lock. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_start_locked(struct ifnet *ifp) +{ + struct bce_softc *sc = ifp->if_softc; + struct mbuf *m_head = NULL; + int count = 0; + u16 tx_prod, tx_chain_prod; + + DBENTER(BCE_VERBOSE_SEND | BCE_VERBOSE_CTX); + + BCE_LOCK_ASSERT(sc); + + /* prod points to the next free tx_bd. */ + tx_prod = sc->tx_prod; + tx_chain_prod = TX_CHAIN_IDX(tx_prod); + + DBPRINT(sc, BCE_INFO_SEND, + "%s(enter): tx_prod = 0x%04X, tx_chain_prod = 0x%04X, " + "tx_prod_bseq = 0x%08X\n", + __FUNCTION__, tx_prod, tx_chain_prod, sc->tx_prod_bseq); + + /* If there's no link or the transmit queue is empty then just exit. */ + if (sc->bce_link_up == FALSE) { + DBPRINT(sc, BCE_INFO_SEND, "%s(): No link.\n", + __FUNCTION__); + goto bce_start_locked_exit; + } + + if (IFQ_DRV_IS_EMPTY(&ifp->if_snd)) { + DBPRINT(sc, BCE_INFO_SEND, "%s(): Transmit queue empty.\n", + __FUNCTION__); + goto bce_start_locked_exit; + } + + /* + * Keep adding entries while there is space in the ring. + */ + while (sc->used_tx_bd < sc->max_tx_bd) { + + /* Check for any frames to send. */ + IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head); + + /* Stop when the transmit queue is empty. */ + if (m_head == NULL) + break; + + /* + * Pack the data into the transmit ring. If we + * don't have room, place the mbuf back at the + * head of the queue and set the OACTIVE flag + * to wait for the NIC to drain the chain. + */ + if (bce_tx_encap(sc, &m_head)) { + if (m_head != NULL) + IFQ_DRV_PREPEND(&ifp->if_snd, m_head); + ifp->if_drv_flags |= IFF_DRV_OACTIVE; + DBPRINT(sc, BCE_INFO_SEND, + "TX chain is closed for business! Total " + "tx_bd used = %d\n", sc->used_tx_bd); + break; + } + + count++; + + /* Send a copy of the frame to any BPF listeners. */ + ETHER_BPF_MTAP(ifp, m_head); + } + + /* Exit if no packets were dequeued. */ + if (count == 0) { + DBPRINT(sc, BCE_VERBOSE_SEND, "%s(): No packets were " + "dequeued\n", __FUNCTION__); + goto bce_start_locked_exit; + } + + DBPRINT(sc, BCE_VERBOSE_SEND, "%s(): Inserted %d frames into " + "send queue.\n", __FUNCTION__, count); + + /* Set the tx timeout. */ + sc->watchdog_timer = BCE_TX_TIMEOUT; + + DBRUNMSG(BCE_VERBOSE_SEND, bce_dump_ctx(sc, TX_CID)); + DBRUNMSG(BCE_VERBOSE_SEND, bce_dump_mq_regs(sc)); + +bce_start_locked_exit: + DBEXIT(BCE_VERBOSE_SEND | BCE_VERBOSE_CTX); + return; +} + + +/****************************************************************************/ +/* Main transmit routine when called from another routine without a lock. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_start(struct ifnet *ifp) +{ + struct bce_softc *sc = ifp->if_softc; + + DBENTER(BCE_VERBOSE_SEND); + + BCE_LOCK(sc); + bce_start_locked(ifp); + BCE_UNLOCK(sc); + + DBEXIT(BCE_VERBOSE_SEND); +} + + +/****************************************************************************/ +/* Handles any IOCTL calls from the operating system. */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/****************************************************************************/ +static int +bce_ioctl(struct ifnet *ifp, u_long command, caddr_t data) +{ + struct bce_softc *sc = ifp->if_softc; + struct ifreq *ifr = (struct ifreq *) data; + struct mii_data *mii; + int mask, error = 0, reinit; + + DBENTER(BCE_VERBOSE_MISC); + + switch(command) { + + /* Set the interface MTU. */ + case SIOCSIFMTU: + /* Check that the MTU setting is supported. */ + if ((ifr->ifr_mtu < BCE_MIN_MTU) || + (ifr->ifr_mtu > BCE_MAX_JUMBO_MTU)) { + error = EINVAL; + break; + } + + DBPRINT(sc, BCE_INFO_MISC, + "SIOCSIFMTU: Changing MTU from %d to %d\n", + (int) ifp->if_mtu, (int) ifr->ifr_mtu); + + BCE_LOCK(sc); + ifp->if_mtu = ifr->ifr_mtu; + reinit = 0; + if (ifp->if_drv_flags & IFF_DRV_RUNNING) { + /* + * Because allocation size is used in RX + * buffer allocation, stop controller if + * it is already running. + */ + bce_stop(sc); + reinit = 1; + } +#ifdef BCE_JUMBO_HDRSPLIT + /* No buffer allocation size changes are necessary. */ +#else + /* Recalculate our buffer allocation sizes. */ + if ((ifp->if_mtu + ETHER_HDR_LEN + ETHER_VLAN_ENCAP_LEN + + ETHER_CRC_LEN) > MCLBYTES) { + sc->rx_bd_mbuf_alloc_size = MJUM9BYTES; + sc->rx_bd_mbuf_align_pad = + roundup2(MJUM9BYTES, 16) - MJUM9BYTES; + sc->rx_bd_mbuf_data_len = + sc->rx_bd_mbuf_alloc_size - + sc->rx_bd_mbuf_align_pad; + } else { + sc->rx_bd_mbuf_alloc_size = MCLBYTES; + sc->rx_bd_mbuf_align_pad = + roundup2(MCLBYTES, 16) - MCLBYTES; + sc->rx_bd_mbuf_data_len = + sc->rx_bd_mbuf_alloc_size - + sc->rx_bd_mbuf_align_pad; + } +#endif + + if (reinit != 0) + bce_init_locked(sc); + BCE_UNLOCK(sc); + break; + + /* Set interface flags. */ + case SIOCSIFFLAGS: + DBPRINT(sc, BCE_VERBOSE_SPECIAL, "Received SIOCSIFFLAGS\n"); + + BCE_LOCK(sc); + + /* Check if the interface is up. */ + if (ifp->if_flags & IFF_UP) { + if (ifp->if_drv_flags & IFF_DRV_RUNNING) { + /* Change promiscuous/multicast flags as necessary. */ + bce_set_rx_mode(sc); + } else { + /* Start the HW */ + bce_init_locked(sc); + } + } else { + /* The interface is down, check if driver is running. */ + if (ifp->if_drv_flags & IFF_DRV_RUNNING) { + bce_stop(sc); + + /* If MFW is running, restart the controller a bit. */ + if (sc->bce_flags & BCE_MFW_ENABLE_FLAG) { + bce_reset(sc, BCE_DRV_MSG_CODE_RESET); + bce_chipinit(sc); + bce_mgmt_init_locked(sc); + } + } + } + + BCE_UNLOCK(sc); + break; + + /* Add/Delete multicast address */ + case SIOCADDMULTI: + case SIOCDELMULTI: + DBPRINT(sc, BCE_VERBOSE_MISC, + "Received SIOCADDMULTI/SIOCDELMULTI\n"); + + BCE_LOCK(sc); + if (ifp->if_drv_flags & IFF_DRV_RUNNING) + bce_set_rx_mode(sc); + BCE_UNLOCK(sc); + + break; + + /* Set/Get Interface media */ + case SIOCSIFMEDIA: + case SIOCGIFMEDIA: + DBPRINT(sc, BCE_VERBOSE_MISC, + "Received SIOCSIFMEDIA/SIOCGIFMEDIA\n"); + + mii = device_get_softc(sc->bce_miibus); + error = ifmedia_ioctl(ifp, ifr, + &mii->mii_media, command); + break; + + /* Set interface capability */ + case SIOCSIFCAP: + mask = ifr->ifr_reqcap ^ ifp->if_capenable; + DBPRINT(sc, BCE_INFO_MISC, + "Received SIOCSIFCAP = 0x%08X\n", (u32) mask); + + /* Toggle the TX checksum capabilities enable flag. */ + if (mask & IFCAP_TXCSUM && + ifp->if_capabilities & IFCAP_TXCSUM) { + ifp->if_capenable ^= IFCAP_TXCSUM; + if (IFCAP_TXCSUM & ifp->if_capenable) + ifp->if_hwassist |= BCE_IF_HWASSIST; + else + ifp->if_hwassist &= ~BCE_IF_HWASSIST; + } + + /* Toggle the RX checksum capabilities enable flag. */ + if (mask & IFCAP_RXCSUM && + ifp->if_capabilities & IFCAP_RXCSUM) + ifp->if_capenable ^= IFCAP_RXCSUM; + + /* Toggle the TSO capabilities enable flag. */ + if (bce_tso_enable && (mask & IFCAP_TSO4) && + ifp->if_capabilities & IFCAP_TSO4) { + ifp->if_capenable ^= IFCAP_TSO4; + if (IFCAP_TSO4 & ifp->if_capenable) + ifp->if_hwassist |= CSUM_TSO; + else + ifp->if_hwassist &= ~CSUM_TSO; + } + + if (mask & IFCAP_VLAN_HWCSUM && + ifp->if_capabilities & IFCAP_VLAN_HWCSUM) + ifp->if_capenable ^= IFCAP_VLAN_HWCSUM; + + if ((mask & IFCAP_VLAN_HWTSO) != 0 && + (ifp->if_capabilities & IFCAP_VLAN_HWTSO) != 0) + ifp->if_capenable ^= IFCAP_VLAN_HWTSO; + /* + * Don't actually disable VLAN tag stripping as + * management firmware (ASF/IPMI/UMP) requires the + * feature. If VLAN tag stripping is disabled driver + * will manually reconstruct the VLAN frame by + * appending stripped VLAN tag. + */ + if ((mask & IFCAP_VLAN_HWTAGGING) != 0 && + (ifp->if_capabilities & IFCAP_VLAN_HWTAGGING)) { + ifp->if_capenable ^= IFCAP_VLAN_HWTAGGING; + if ((ifp->if_capenable & IFCAP_VLAN_HWTAGGING) + == 0) + ifp->if_capenable &= ~IFCAP_VLAN_HWTSO; + } + VLAN_CAPABILITIES(ifp); + break; + default: + /* We don't know how to handle the IOCTL, pass it on. */ + error = ether_ioctl(ifp, command, data); + break; + } + + DBEXIT(BCE_VERBOSE_MISC); + return(error); +} + + +/****************************************************************************/ +/* Transmit timeout handler. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_watchdog(struct bce_softc *sc) +{ + DBENTER(BCE_EXTREME_SEND); + + BCE_LOCK_ASSERT(sc); + + /* If the watchdog timer hasn't expired then just exit. */ + if (sc->watchdog_timer == 0 || --sc->watchdog_timer) + goto bce_watchdog_exit; + + /* If pause frames are active then don't reset the hardware. */ + /* ToDo: Should we reset the timer here? */ + if (REG_RD(sc, BCE_EMAC_TX_STATUS) & BCE_EMAC_TX_STATUS_XOFFED) + goto bce_watchdog_exit; + + BCE_PRINTF("%s(%d): Watchdog timeout occurred, resetting!\n", + __FILE__, __LINE__); + + DBRUNMSG(BCE_INFO, + bce_dump_driver_state(sc); + bce_dump_status_block(sc); + bce_dump_stats_block(sc); + bce_dump_ftqs(sc); + bce_dump_txp_state(sc, 0); + bce_dump_rxp_state(sc, 0); + bce_dump_tpat_state(sc, 0); + bce_dump_cp_state(sc, 0); + bce_dump_com_state(sc, 0)); + + DBRUN(bce_breakpoint(sc)); + + sc->bce_ifp->if_drv_flags &= ~IFF_DRV_RUNNING; + + bce_init_locked(sc); + sc->bce_ifp->if_oerrors++; + +bce_watchdog_exit: + DBEXIT(BCE_EXTREME_SEND); +} + + +/* + * Interrupt handler. + */ +/****************************************************************************/ +/* Main interrupt entry point. Verifies that the controller generated the */ +/* interrupt and then calls a separate routine for handle the various */ +/* interrupt causes (PHY, TX, RX). */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/****************************************************************************/ +static void +bce_intr(void *xsc) +{ + struct bce_softc *sc; + struct ifnet *ifp; + u32 status_attn_bits; + u16 hw_rx_cons, hw_tx_cons; + + sc = xsc; + ifp = sc->bce_ifp; + + DBENTER(BCE_VERBOSE_SEND | BCE_VERBOSE_RECV | BCE_VERBOSE_INTR); + DBRUNMSG(BCE_VERBOSE_INTR, bce_dump_status_block(sc)); + DBRUNMSG(BCE_VERBOSE_INTR, bce_dump_stats_block(sc)); + + BCE_LOCK(sc); + + DBRUN(sc->interrupts_generated++); + + /* Synchnorize before we read from interface's status block */ + bus_dmamap_sync(sc->status_tag, sc->status_map, + BUS_DMASYNC_POSTREAD); + + /* + * If the hardware status block index + * matches the last value read by the + * driver and we haven't asserted our + * interrupt then there's nothing to do. + */ + if ((sc->status_block->status_idx == sc->last_status_idx) && + (REG_RD(sc, BCE_PCICFG_MISC_STATUS) & + BCE_PCICFG_MISC_STATUS_INTA_VALUE)) { + DBPRINT(sc, BCE_VERBOSE_INTR, "%s(): Spurious interrupt.\n", + __FUNCTION__); + goto bce_intr_exit; + } + + /* Ack the interrupt and stop others from occuring. */ + REG_WR(sc, BCE_PCICFG_INT_ACK_CMD, + BCE_PCICFG_INT_ACK_CMD_USE_INT_HC_PARAM | + BCE_PCICFG_INT_ACK_CMD_MASK_INT); + + /* Check if the hardware has finished any work. */ + hw_rx_cons = bce_get_hw_rx_cons(sc); + hw_tx_cons = bce_get_hw_tx_cons(sc); + + /* Keep processing data as long as there is work to do. */ + for (;;) { + + status_attn_bits = sc->status_block->status_attn_bits; + + DBRUNIF(DB_RANDOMTRUE(unexpected_attention_sim_control), + BCE_PRINTF("Simulating unexpected status attention " + "bit set."); + sc->unexpected_attention_sim_count++; + status_attn_bits = status_attn_bits | + STATUS_ATTN_BITS_PARITY_ERROR); + + /* Was it a link change interrupt? */ + if ((status_attn_bits & STATUS_ATTN_BITS_LINK_STATE) != + (sc->status_block->status_attn_bits_ack & + STATUS_ATTN_BITS_LINK_STATE)) { + bce_phy_intr(sc); + + /* Clear transient updates during link state change. */ + REG_WR(sc, BCE_HC_COMMAND, sc->hc_command | + BCE_HC_COMMAND_COAL_NOW_WO_INT); + REG_RD(sc, BCE_HC_COMMAND); + } + + /* If any other attention is asserted, the chip is toast. */ + if (((status_attn_bits & ~STATUS_ATTN_BITS_LINK_STATE) != + (sc->status_block->status_attn_bits_ack & + ~STATUS_ATTN_BITS_LINK_STATE))) { + + sc->unexpected_attention_count++; + + BCE_PRINTF("%s(%d): Fatal attention detected: " + "0x%08X\n", __FILE__, __LINE__, + sc->status_block->status_attn_bits); + + DBRUNMSG(BCE_FATAL, + if (unexpected_attention_sim_control == 0) + bce_breakpoint(sc)); + + bce_init_locked(sc); + goto bce_intr_exit; + } + + /* Check for any completed RX frames. */ + if (hw_rx_cons != sc->hw_rx_cons) + bce_rx_intr(sc); + + /* Check for any completed TX frames. */ + if (hw_tx_cons != sc->hw_tx_cons) + bce_tx_intr(sc); + + /* Save status block index value for the next interrupt. */ + sc->last_status_idx = sc->status_block->status_idx; + + /* + * Prevent speculative reads from getting + * ahead of the status block. + */ + bus_space_barrier(sc->bce_btag, sc->bce_bhandle, 0, 0, + BUS_SPACE_BARRIER_READ); + + /* + * If there's no work left then exit the + * interrupt service routine. + */ + hw_rx_cons = bce_get_hw_rx_cons(sc); + hw_tx_cons = bce_get_hw_tx_cons(sc); + + if ((hw_rx_cons == sc->hw_rx_cons) && + (hw_tx_cons == sc->hw_tx_cons)) + break; + + } + + bus_dmamap_sync(sc->status_tag, sc->status_map, + BUS_DMASYNC_PREREAD); + + /* Re-enable interrupts. */ + bce_enable_intr(sc, 0); + + /* Handle any frames that arrived while handling the interrupt. */ + if (ifp->if_drv_flags & IFF_DRV_RUNNING && + !IFQ_DRV_IS_EMPTY(&ifp->if_snd)) + bce_start_locked(ifp); + +bce_intr_exit: + BCE_UNLOCK(sc); + + DBEXIT(BCE_VERBOSE_SEND | BCE_VERBOSE_RECV | BCE_VERBOSE_INTR); +} + + +/****************************************************************************/ +/* Programs the various packet receive modes (broadcast and multicast). */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_set_rx_mode(struct bce_softc *sc) +{ + struct ifnet *ifp; + struct ifmultiaddr *ifma; + u32 hashes[NUM_MC_HASH_REGISTERS] = { 0, 0, 0, 0, 0, 0, 0, 0 }; + u32 rx_mode, sort_mode; + int h, i; + + DBENTER(BCE_VERBOSE_MISC); + + BCE_LOCK_ASSERT(sc); + + ifp = sc->bce_ifp; + + /* Initialize receive mode default settings. */ + rx_mode = sc->rx_mode & ~(BCE_EMAC_RX_MODE_PROMISCUOUS | + BCE_EMAC_RX_MODE_KEEP_VLAN_TAG); + sort_mode = 1 | BCE_RPM_SORT_USER0_BC_EN; + + /* + * ASF/IPMI/UMP firmware requires that VLAN tag stripping + * be enbled. + */ + if (!(BCE_IF_CAPABILITIES & IFCAP_VLAN_HWTAGGING) && + (!(sc->bce_flags & BCE_MFW_ENABLE_FLAG))) + rx_mode |= BCE_EMAC_RX_MODE_KEEP_VLAN_TAG; + + /* + * Check for promiscuous, all multicast, or selected + * multicast address filtering. + */ + if (ifp->if_flags & IFF_PROMISC) { + DBPRINT(sc, BCE_INFO_MISC, "Enabling promiscuous mode.\n"); + + /* Enable promiscuous mode. */ + rx_mode |= BCE_EMAC_RX_MODE_PROMISCUOUS; + sort_mode |= BCE_RPM_SORT_USER0_PROM_EN; + } else if (ifp->if_flags & IFF_ALLMULTI) { + DBPRINT(sc, BCE_INFO_MISC, "Enabling all multicast mode.\n"); + + /* Enable all multicast addresses. */ + for (i = 0; i < NUM_MC_HASH_REGISTERS; i++) { + REG_WR(sc, BCE_EMAC_MULTICAST_HASH0 + (i * 4), 0xffffffff); + } + sort_mode |= BCE_RPM_SORT_USER0_MC_EN; + } else { + /* Accept one or more multicast(s). */ + DBPRINT(sc, BCE_INFO_MISC, "Enabling selective multicast mode.\n"); + + if_maddr_rlock(ifp); + TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) { + if (ifma->ifma_addr->sa_family != AF_LINK) + continue; + h = ether_crc32_le(LLADDR((struct sockaddr_dl *) + ifma->ifma_addr), ETHER_ADDR_LEN) & 0xFF; + hashes[(h & 0xE0) >> 5] |= 1 << (h & 0x1F); + } + if_maddr_runlock(ifp); + + for (i = 0; i < NUM_MC_HASH_REGISTERS; i++) + REG_WR(sc, BCE_EMAC_MULTICAST_HASH0 + (i * 4), hashes[i]); + + sort_mode |= BCE_RPM_SORT_USER0_MC_HSH_EN; + } + + /* Only make changes if the recive mode has actually changed. */ + if (rx_mode != sc->rx_mode) { + DBPRINT(sc, BCE_VERBOSE_MISC, "Enabling new receive mode: " + "0x%08X\n", rx_mode); + + sc->rx_mode = rx_mode; + REG_WR(sc, BCE_EMAC_RX_MODE, rx_mode); + } + + /* Disable and clear the exisitng sort before enabling a new sort. */ + REG_WR(sc, BCE_RPM_SORT_USER0, 0x0); + REG_WR(sc, BCE_RPM_SORT_USER0, sort_mode); + REG_WR(sc, BCE_RPM_SORT_USER0, sort_mode | BCE_RPM_SORT_USER0_ENA); + + DBEXIT(BCE_VERBOSE_MISC); +} + + +/****************************************************************************/ +/* Called periodically to updates statistics from the controllers */ +/* statistics block. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_stats_update(struct bce_softc *sc) +{ + struct ifnet *ifp; + struct statistics_block *stats; + + DBENTER(BCE_EXTREME_MISC); + + ifp = sc->bce_ifp; + + stats = (struct statistics_block *) sc->stats_block; + + /* + * Certain controllers don't report + * carrier sense errors correctly. + * See errata E11_5708CA0_1165. + */ + if (!(BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5706) && + !(BCE_CHIP_ID(sc) == BCE_CHIP_ID_5708_A0)) + ifp->if_oerrors += + (u_long) stats->stat_Dot3StatsCarrierSenseErrors; + + /* + * Update the sysctl statistics from the + * hardware statistics. + */ + sc->stat_IfHCInOctets = + ((u64) stats->stat_IfHCInOctets_hi << 32) + + (u64) stats->stat_IfHCInOctets_lo; + + sc->stat_IfHCInBadOctets = + ((u64) stats->stat_IfHCInBadOctets_hi << 32) + + (u64) stats->stat_IfHCInBadOctets_lo; + + sc->stat_IfHCOutOctets = + ((u64) stats->stat_IfHCOutOctets_hi << 32) + + (u64) stats->stat_IfHCOutOctets_lo; + + sc->stat_IfHCOutBadOctets = + ((u64) stats->stat_IfHCOutBadOctets_hi << 32) + + (u64) stats->stat_IfHCOutBadOctets_lo; + + sc->stat_IfHCInUcastPkts = + ((u64) stats->stat_IfHCInUcastPkts_hi << 32) + + (u64) stats->stat_IfHCInUcastPkts_lo; + + sc->stat_IfHCInMulticastPkts = + ((u64) stats->stat_IfHCInMulticastPkts_hi << 32) + + (u64) stats->stat_IfHCInMulticastPkts_lo; + + sc->stat_IfHCInBroadcastPkts = + ((u64) stats->stat_IfHCInBroadcastPkts_hi << 32) + + (u64) stats->stat_IfHCInBroadcastPkts_lo; + + sc->stat_IfHCOutUcastPkts = + ((u64) stats->stat_IfHCOutUcastPkts_hi << 32) + + (u64) stats->stat_IfHCOutUcastPkts_lo; + + sc->stat_IfHCOutMulticastPkts = + ((u64) stats->stat_IfHCOutMulticastPkts_hi << 32) + + (u64) stats->stat_IfHCOutMulticastPkts_lo; + + sc->stat_IfHCOutBroadcastPkts = + ((u64) stats->stat_IfHCOutBroadcastPkts_hi << 32) + + (u64) stats->stat_IfHCOutBroadcastPkts_lo; + + /* ToDo: Preserve counters beyond 32 bits? */ + /* ToDo: Read the statistics from auto-clear regs? */ + + sc->stat_emac_tx_stat_dot3statsinternalmactransmiterrors = + stats->stat_emac_tx_stat_dot3statsinternalmactransmiterrors; + + sc->stat_Dot3StatsCarrierSenseErrors = + stats->stat_Dot3StatsCarrierSenseErrors; + + sc->stat_Dot3StatsFCSErrors = + stats->stat_Dot3StatsFCSErrors; + + sc->stat_Dot3StatsAlignmentErrors = + stats->stat_Dot3StatsAlignmentErrors; + + sc->stat_Dot3StatsSingleCollisionFrames = + stats->stat_Dot3StatsSingleCollisionFrames; + + sc->stat_Dot3StatsMultipleCollisionFrames = + stats->stat_Dot3StatsMultipleCollisionFrames; + + sc->stat_Dot3StatsDeferredTransmissions = + stats->stat_Dot3StatsDeferredTransmissions; + + sc->stat_Dot3StatsExcessiveCollisions = + stats->stat_Dot3StatsExcessiveCollisions; + + sc->stat_Dot3StatsLateCollisions = + stats->stat_Dot3StatsLateCollisions; + + sc->stat_EtherStatsCollisions = + stats->stat_EtherStatsCollisions; + + sc->stat_EtherStatsFragments = + stats->stat_EtherStatsFragments; + + sc->stat_EtherStatsJabbers = + stats->stat_EtherStatsJabbers; + + sc->stat_EtherStatsUndersizePkts = + stats->stat_EtherStatsUndersizePkts; + + sc->stat_EtherStatsOversizePkts = + stats->stat_EtherStatsOversizePkts; + + sc->stat_EtherStatsPktsRx64Octets = + stats->stat_EtherStatsPktsRx64Octets; + + sc->stat_EtherStatsPktsRx65Octetsto127Octets = + stats->stat_EtherStatsPktsRx65Octetsto127Octets; + + sc->stat_EtherStatsPktsRx128Octetsto255Octets = + stats->stat_EtherStatsPktsRx128Octetsto255Octets; + + sc->stat_EtherStatsPktsRx256Octetsto511Octets = + stats->stat_EtherStatsPktsRx256Octetsto511Octets; + + sc->stat_EtherStatsPktsRx512Octetsto1023Octets = + stats->stat_EtherStatsPktsRx512Octetsto1023Octets; + + sc->stat_EtherStatsPktsRx1024Octetsto1522Octets = + stats->stat_EtherStatsPktsRx1024Octetsto1522Octets; + + sc->stat_EtherStatsPktsRx1523Octetsto9022Octets = + stats->stat_EtherStatsPktsRx1523Octetsto9022Octets; + + sc->stat_EtherStatsPktsTx64Octets = + stats->stat_EtherStatsPktsTx64Octets; + + sc->stat_EtherStatsPktsTx65Octetsto127Octets = + stats->stat_EtherStatsPktsTx65Octetsto127Octets; + + sc->stat_EtherStatsPktsTx128Octetsto255Octets = + stats->stat_EtherStatsPktsTx128Octetsto255Octets; + + sc->stat_EtherStatsPktsTx256Octetsto511Octets = + stats->stat_EtherStatsPktsTx256Octetsto511Octets; + + sc->stat_EtherStatsPktsTx512Octetsto1023Octets = + stats->stat_EtherStatsPktsTx512Octetsto1023Octets; + + sc->stat_EtherStatsPktsTx1024Octetsto1522Octets = + stats->stat_EtherStatsPktsTx1024Octetsto1522Octets; + + sc->stat_EtherStatsPktsTx1523Octetsto9022Octets = + stats->stat_EtherStatsPktsTx1523Octetsto9022Octets; + + sc->stat_XonPauseFramesReceived = + stats->stat_XonPauseFramesReceived; + + sc->stat_XoffPauseFramesReceived = + stats->stat_XoffPauseFramesReceived; + + sc->stat_OutXonSent = + stats->stat_OutXonSent; + + sc->stat_OutXoffSent = + stats->stat_OutXoffSent; + + sc->stat_FlowControlDone = + stats->stat_FlowControlDone; + + sc->stat_MacControlFramesReceived = + stats->stat_MacControlFramesReceived; + + sc->stat_XoffStateEntered = + stats->stat_XoffStateEntered; + + sc->stat_IfInFramesL2FilterDiscards = + stats->stat_IfInFramesL2FilterDiscards; + + sc->stat_IfInRuleCheckerDiscards = + stats->stat_IfInRuleCheckerDiscards; + + sc->stat_IfInFTQDiscards = + stats->stat_IfInFTQDiscards; + + sc->stat_IfInMBUFDiscards = + stats->stat_IfInMBUFDiscards; + + sc->stat_IfInRuleCheckerP4Hit = + stats->stat_IfInRuleCheckerP4Hit; + + sc->stat_CatchupInRuleCheckerDiscards = + stats->stat_CatchupInRuleCheckerDiscards; + + sc->stat_CatchupInFTQDiscards = + stats->stat_CatchupInFTQDiscards; + + sc->stat_CatchupInMBUFDiscards = + stats->stat_CatchupInMBUFDiscards; + + sc->stat_CatchupInRuleCheckerP4Hit = + stats->stat_CatchupInRuleCheckerP4Hit; + + sc->com_no_buffers = REG_RD_IND(sc, 0x120084); + + /* + * Update the interface statistics from the + * hardware statistics. + */ + ifp->if_collisions = + (u_long) sc->stat_EtherStatsCollisions; + + /* ToDo: This method loses soft errors. */ + ifp->if_ierrors = + (u_long) sc->stat_EtherStatsUndersizePkts + + (u_long) sc->stat_EtherStatsOversizePkts + + (u_long) sc->stat_IfInMBUFDiscards + + (u_long) sc->stat_Dot3StatsAlignmentErrors + + (u_long) sc->stat_Dot3StatsFCSErrors + + (u_long) sc->stat_IfInRuleCheckerDiscards + + (u_long) sc->stat_IfInFTQDiscards + + (u_long) sc->com_no_buffers; + + /* ToDo: This method loses soft errors. */ + ifp->if_oerrors = + (u_long) sc->stat_emac_tx_stat_dot3statsinternalmactransmiterrors + + (u_long) sc->stat_Dot3StatsExcessiveCollisions + + (u_long) sc->stat_Dot3StatsLateCollisions; + + /* ToDo: Add additional statistics? */ + + DBEXIT(BCE_EXTREME_MISC); +} + + +/****************************************************************************/ +/* Periodic function to notify the bootcode that the driver is still */ +/* present. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_pulse(void *xsc) +{ + struct bce_softc *sc = xsc; + u32 msg; + + DBENTER(BCE_EXTREME_MISC); + + BCE_LOCK_ASSERT(sc); + + /* Tell the firmware that the driver is still running. */ + msg = (u32) ++sc->bce_fw_drv_pulse_wr_seq; + bce_shmem_wr(sc, BCE_DRV_PULSE_MB, msg); + + /* Update the bootcode condition. */ + sc->bc_state = bce_shmem_rd(sc, BCE_BC_STATE_CONDITION); + + /* Report whether the bootcode still knows the driver is running. */ + if (bootverbose) { + if (sc->bce_drv_cardiac_arrest == FALSE) { + if (!(sc->bc_state & BCE_CONDITION_DRV_PRESENT)) { + sc->bce_drv_cardiac_arrest = TRUE; + BCE_PRINTF("%s(): Warning: bootcode " + "thinks driver is absent! " + "(bc_state = 0x%08X)\n", + __FUNCTION__, sc->bc_state); + } + } else { + /* + * Not supported by all bootcode versions. + * (v5.0.11+ and v5.2.1+) Older bootcode + * will require the driver to reset the + * controller to clear this condition. + */ + if (sc->bc_state & BCE_CONDITION_DRV_PRESENT) { + sc->bce_drv_cardiac_arrest = FALSE; + BCE_PRINTF("%s(): Bootcode found the " + "driver pulse! (bc_state = 0x%08X)\n", + __FUNCTION__, sc->bc_state); + } + } + } + + + /* Schedule the next pulse. */ + callout_reset(&sc->bce_pulse_callout, hz, bce_pulse, sc); + + DBEXIT(BCE_EXTREME_MISC); +} + + +/****************************************************************************/ +/* Periodic function to perform maintenance tasks. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_tick(void *xsc) +{ + struct bce_softc *sc = xsc; + struct mii_data *mii; + struct ifnet *ifp; + + ifp = sc->bce_ifp; + + DBENTER(BCE_EXTREME_MISC); + + BCE_LOCK_ASSERT(sc); + + /* Schedule the next tick. */ + callout_reset(&sc->bce_tick_callout, hz, bce_tick, sc); + + /* Update the statistics from the hardware statistics block. */ + bce_stats_update(sc); + + /* Top off the receive and page chains. */ +#ifdef BCE_JUMBO_HDRSPLIT + bce_fill_pg_chain(sc); +#endif + bce_fill_rx_chain(sc); + + /* Check that chip hasn't hung. */ + bce_watchdog(sc); + + /* If link is up already up then we're done. */ + if (sc->bce_link_up == TRUE) + goto bce_tick_exit; + + /* Link is down. Check what the PHY's doing. */ + mii = device_get_softc(sc->bce_miibus); + mii_tick(mii); + + /* Check if the link has come up. */ + if ((mii->mii_media_status & IFM_ACTIVE) && + (IFM_SUBTYPE(mii->mii_media_active) != IFM_NONE)) { + DBPRINT(sc, BCE_VERBOSE_MISC, + "%s(): Link up!\n", __FUNCTION__); + sc->bce_link_up = TRUE; + if ((IFM_SUBTYPE(mii->mii_media_active) == IFM_1000_T || + IFM_SUBTYPE(mii->mii_media_active) == IFM_1000_SX || + IFM_SUBTYPE(mii->mii_media_active) == IFM_2500_SX) && + bootverbose) + BCE_PRINTF("Gigabit link up!\n"); + + /* Now that link is up, handle any outstanding TX traffic. */ + if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) { + DBPRINT(sc, BCE_VERBOSE_MISC, "%s(): Found " + "pending TX traffic.\n", __FUNCTION__); + bce_start_locked(ifp); + } + } + +bce_tick_exit: + DBEXIT(BCE_EXTREME_MISC); + return; +} + + +#ifdef BCE_DEBUG +/****************************************************************************/ +/* Allows the driver state to be dumped through the sysctl interface. */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/****************************************************************************/ +static int +bce_sysctl_driver_state(SYSCTL_HANDLER_ARGS) +{ + int error; + int result; + struct bce_softc *sc; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + + if (error || !req->newptr) + return (error); + + if (result == 1) { + sc = (struct bce_softc *)arg1; + bce_dump_driver_state(sc); + } + + return error; +} + + +/****************************************************************************/ +/* Allows the hardware state to be dumped through the sysctl interface. */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/****************************************************************************/ +static int +bce_sysctl_hw_state(SYSCTL_HANDLER_ARGS) +{ + int error; + int result; + struct bce_softc *sc; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + + if (error || !req->newptr) + return (error); + + if (result == 1) { + sc = (struct bce_softc *)arg1; + bce_dump_hw_state(sc); + } + + return error; +} + + +/****************************************************************************/ +/* Allows the status block to be dumped through the sysctl interface. */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/****************************************************************************/ +static int +bce_sysctl_status_block(SYSCTL_HANDLER_ARGS) +{ + int error; + int result; + struct bce_softc *sc; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + + if (error || !req->newptr) + return (error); + + if (result == 1) { + sc = (struct bce_softc *)arg1; + bce_dump_status_block(sc); + } + + return error; +} + + +/****************************************************************************/ +/* Allows the stats block to be dumped through the sysctl interface. */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/****************************************************************************/ +static int +bce_sysctl_stats_block(SYSCTL_HANDLER_ARGS) +{ + int error; + int result; + struct bce_softc *sc; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + + if (error || !req->newptr) + return (error); + + if (result == 1) { + sc = (struct bce_softc *)arg1; + bce_dump_stats_block(sc); + } + + return error; +} + + +/****************************************************************************/ +/* Allows the stat counters to be cleared without unloading/reloading the */ +/* driver. */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/****************************************************************************/ +static int +bce_sysctl_stats_clear(SYSCTL_HANDLER_ARGS) +{ + int error; + int result; + struct bce_softc *sc; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + + if (error || !req->newptr) + return (error); + + if (result == 1) { + sc = (struct bce_softc *)arg1; + + /* Clear the internal H/W statistics counters. */ + REG_WR(sc, BCE_HC_COMMAND, BCE_HC_COMMAND_CLR_STAT_NOW); + + /* Reset the driver maintained statistics. */ + sc->interrupts_rx = + sc->interrupts_tx = 0; + sc->tso_frames_requested = + sc->tso_frames_completed = + sc->tso_frames_failed = 0; + sc->rx_empty_count = + sc->tx_full_count = 0; + sc->rx_low_watermark = USABLE_RX_BD; + sc->tx_hi_watermark = 0; + sc->l2fhdr_error_count = + sc->l2fhdr_error_sim_count = 0; + sc->mbuf_alloc_failed_count = + sc->mbuf_alloc_failed_sim_count = 0; + sc->dma_map_addr_rx_failed_count = + sc->dma_map_addr_tx_failed_count = 0; + sc->mbuf_frag_count = 0; + sc->csum_offload_tcp_udp = + sc->csum_offload_ip = 0; + sc->vlan_tagged_frames_rcvd = + sc->vlan_tagged_frames_stripped = 0; + + /* Clear firmware maintained statistics. */ + REG_WR_IND(sc, 0x120084, 0); + } + + return error; +} + + +/****************************************************************************/ +/* Allows the bootcode state to be dumped through the sysctl interface. */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/****************************************************************************/ +static int +bce_sysctl_bc_state(SYSCTL_HANDLER_ARGS) +{ + int error; + int result; + struct bce_softc *sc; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + + if (error || !req->newptr) + return (error); + + if (result == 1) { + sc = (struct bce_softc *)arg1; + bce_dump_bc_state(sc); + } + + return error; +} + + +/****************************************************************************/ +/* Provides a sysctl interface to allow dumping the RX BD chain. */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/****************************************************************************/ +static int +bce_sysctl_dump_rx_bd_chain(SYSCTL_HANDLER_ARGS) +{ + int error; + int result; + struct bce_softc *sc; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + + if (error || !req->newptr) + return (error); + + if (result == 1) { + sc = (struct bce_softc *)arg1; + bce_dump_rx_bd_chain(sc, 0, TOTAL_RX_BD); + } + + return error; +} + + +/****************************************************************************/ +/* Provides a sysctl interface to allow dumping the RX MBUF chain. */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/****************************************************************************/ +static int +bce_sysctl_dump_rx_mbuf_chain(SYSCTL_HANDLER_ARGS) +{ + int error; + int result; + struct bce_softc *sc; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + + if (error || !req->newptr) + return (error); + + if (result == 1) { + sc = (struct bce_softc *)arg1; + bce_dump_rx_mbuf_chain(sc, 0, USABLE_RX_BD); + } + + return error; +} + + +/****************************************************************************/ +/* Provides a sysctl interface to allow dumping the TX chain. */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/****************************************************************************/ +static int +bce_sysctl_dump_tx_chain(SYSCTL_HANDLER_ARGS) +{ + int error; + int result; + struct bce_softc *sc; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + + if (error || !req->newptr) + return (error); + + if (result == 1) { + sc = (struct bce_softc *)arg1; + bce_dump_tx_chain(sc, 0, TOTAL_TX_BD); + } + + return error; +} + + +#ifdef BCE_JUMBO_HDRSPLIT +/****************************************************************************/ +/* Provides a sysctl interface to allow dumping the page chain. */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/****************************************************************************/ +static int +bce_sysctl_dump_pg_chain(SYSCTL_HANDLER_ARGS) +{ + int error; + int result; + struct bce_softc *sc; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + + if (error || !req->newptr) + return (error); + + if (result == 1) { + sc = (struct bce_softc *)arg1; + bce_dump_pg_chain(sc, 0, TOTAL_PG_BD); + } + + return error; +} +#endif + +/****************************************************************************/ +/* Provides a sysctl interface to allow reading arbitrary NVRAM offsets in */ +/* the device. DO NOT ENABLE ON PRODUCTION SYSTEMS! */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/****************************************************************************/ +static int +bce_sysctl_nvram_read(SYSCTL_HANDLER_ARGS) +{ + struct bce_softc *sc = (struct bce_softc *)arg1; + int error; + u32 result; + u32 val[1]; + u8 *data = (u8 *) val; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + if (error || (req->newptr == NULL)) + return (error); + + bce_nvram_read(sc, result, data, 4); + BCE_PRINTF("offset 0x%08X = 0x%08X\n", result, bce_be32toh(val[0])); + + return (error); +} + + +/****************************************************************************/ +/* Provides a sysctl interface to allow reading arbitrary registers in the */ +/* device. DO NOT ENABLE ON PRODUCTION SYSTEMS! */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/****************************************************************************/ +static int +bce_sysctl_reg_read(SYSCTL_HANDLER_ARGS) +{ + struct bce_softc *sc = (struct bce_softc *)arg1; + int error; + u32 val, result; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + if (error || (req->newptr == NULL)) + return (error); + + /* Make sure the register is accessible. */ + if (result < 0x8000) { + val = REG_RD(sc, result); + BCE_PRINTF("reg 0x%08X = 0x%08X\n", result, val); + } else if (result < 0x0280000) { + val = REG_RD_IND(sc, result); + BCE_PRINTF("reg 0x%08X = 0x%08X\n", result, val); + } + + return (error); +} + + +/****************************************************************************/ +/* Provides a sysctl interface to allow reading arbitrary PHY registers in */ +/* the device. DO NOT ENABLE ON PRODUCTION SYSTEMS! */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/****************************************************************************/ +static int +bce_sysctl_phy_read(SYSCTL_HANDLER_ARGS) +{ + struct bce_softc *sc; + device_t dev; + int error, result; + u16 val; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + if (error || (req->newptr == NULL)) + return (error); + + /* Make sure the register is accessible. */ + if (result < 0x20) { + sc = (struct bce_softc *)arg1; + dev = sc->bce_dev; + val = bce_miibus_read_reg(dev, sc->bce_phy_addr, result); + BCE_PRINTF("phy 0x%02X = 0x%04X\n", result, val); + } + return (error); +} + + +/****************************************************************************/ +/* Provides a sysctl interface to allow reading a CID. */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/****************************************************************************/ +static int +bce_sysctl_dump_ctx(SYSCTL_HANDLER_ARGS) +{ + struct bce_softc *sc; + int error, result; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + if (error || (req->newptr == NULL)) + return (error); + + /* Make sure the register is accessible. */ + if (result <= TX_CID) { + sc = (struct bce_softc *)arg1; + bce_dump_ctx(sc, result); + } + + return (error); +} + + + /****************************************************************************/ +/* Provides a sysctl interface to forcing the driver to dump state and */ +/* enter the debugger. DO NOT ENABLE ON PRODUCTION SYSTEMS! */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/****************************************************************************/ +static int +bce_sysctl_breakpoint(SYSCTL_HANDLER_ARGS) +{ + int error; + int result; + struct bce_softc *sc; + + result = -1; + error = sysctl_handle_int(oidp, &result, 0, req); + + if (error || !req->newptr) + return (error); + + if (result == 1) { + sc = (struct bce_softc *)arg1; + bce_breakpoint(sc); + } + + return error; +} +#endif + + +/****************************************************************************/ +/* Adds any sysctl parameters for tuning or debugging purposes. */ +/* */ +/* Returns: */ +/* 0 for success, positive value for failure. */ +/****************************************************************************/ +static void +bce_add_sysctls(struct bce_softc *sc) +{ + struct sysctl_ctx_list *ctx; + struct sysctl_oid_list *children; + + DBENTER(BCE_VERBOSE_MISC); + + ctx = device_get_sysctl_ctx(sc->bce_dev); + children = SYSCTL_CHILDREN(device_get_sysctl_tree(sc->bce_dev)); + +#ifdef BCE_DEBUG + SYSCTL_ADD_INT(ctx, children, OID_AUTO, + "l2fhdr_error_sim_control", + CTLFLAG_RW, &l2fhdr_error_sim_control, + 0, "Debug control to force l2fhdr errors"); + + SYSCTL_ADD_INT(ctx, children, OID_AUTO, + "l2fhdr_error_sim_count", + CTLFLAG_RD, &sc->l2fhdr_error_sim_count, + 0, "Number of simulated l2_fhdr errors"); +#endif + + SYSCTL_ADD_INT(ctx, children, OID_AUTO, + "l2fhdr_error_count", + CTLFLAG_RD, &sc->l2fhdr_error_count, + 0, "Number of l2_fhdr errors"); + +#ifdef BCE_DEBUG + SYSCTL_ADD_INT(ctx, children, OID_AUTO, + "mbuf_alloc_failed_sim_control", + CTLFLAG_RW, &mbuf_alloc_failed_sim_control, + 0, "Debug control to force mbuf allocation failures"); + + SYSCTL_ADD_INT(ctx, children, OID_AUTO, + "mbuf_alloc_failed_sim_count", + CTLFLAG_RD, &sc->mbuf_alloc_failed_sim_count, + 0, "Number of simulated mbuf cluster allocation failures"); +#endif + + SYSCTL_ADD_INT(ctx, children, OID_AUTO, + "mbuf_alloc_failed_count", + CTLFLAG_RD, &sc->mbuf_alloc_failed_count, + 0, "Number of mbuf allocation failures"); + + SYSCTL_ADD_INT(ctx, children, OID_AUTO, + "mbuf_frag_count", + CTLFLAG_RD, &sc->mbuf_frag_count, + 0, "Number of fragmented mbufs"); + +#ifdef BCE_DEBUG + SYSCTL_ADD_INT(ctx, children, OID_AUTO, + "dma_map_addr_failed_sim_control", + CTLFLAG_RW, &dma_map_addr_failed_sim_control, + 0, "Debug control to force DMA mapping failures"); + + /* ToDo: Figure out how to update this value in bce_dma_map_addr(). */ + SYSCTL_ADD_INT(ctx, children, OID_AUTO, + "dma_map_addr_failed_sim_count", + CTLFLAG_RD, &sc->dma_map_addr_failed_sim_count, + 0, "Number of simulated DMA mapping failures"); + +#endif + + SYSCTL_ADD_INT(ctx, children, OID_AUTO, + "dma_map_addr_rx_failed_count", + CTLFLAG_RD, &sc->dma_map_addr_rx_failed_count, + 0, "Number of RX DMA mapping failures"); + + SYSCTL_ADD_INT(ctx, children, OID_AUTO, + "dma_map_addr_tx_failed_count", + CTLFLAG_RD, &sc->dma_map_addr_tx_failed_count, + 0, "Number of TX DMA mapping failures"); + +#ifdef BCE_DEBUG + SYSCTL_ADD_INT(ctx, children, OID_AUTO, + "unexpected_attention_sim_control", + CTLFLAG_RW, &unexpected_attention_sim_control, + 0, "Debug control to simulate unexpected attentions"); + + SYSCTL_ADD_INT(ctx, children, OID_AUTO, + "unexpected_attention_sim_count", + CTLFLAG_RW, &sc->unexpected_attention_sim_count, + 0, "Number of simulated unexpected attentions"); +#endif + + SYSCTL_ADD_INT(ctx, children, OID_AUTO, + "unexpected_attention_count", + CTLFLAG_RW, &sc->unexpected_attention_count, + 0, "Number of unexpected attentions"); + +#ifdef BCE_DEBUG + SYSCTL_ADD_INT(ctx, children, OID_AUTO, + "debug_bootcode_running_failure", + CTLFLAG_RW, &bootcode_running_failure_sim_control, + 0, "Debug control to force bootcode running failures"); + + SYSCTL_ADD_INT(ctx, children, OID_AUTO, + "rx_low_watermark", + CTLFLAG_RD, &sc->rx_low_watermark, + 0, "Lowest level of free rx_bd's"); + + SYSCTL_ADD_INT(ctx, children, OID_AUTO, + "rx_empty_count", + CTLFLAG_RD, &sc->rx_empty_count, + 0, "Number of times the RX chain was empty"); + + SYSCTL_ADD_INT(ctx, children, OID_AUTO, + "tx_hi_watermark", + CTLFLAG_RD, &sc->tx_hi_watermark, + 0, "Highest level of used tx_bd's"); + + SYSCTL_ADD_INT(ctx, children, OID_AUTO, + "tx_full_count", + CTLFLAG_RD, &sc->tx_full_count, + 0, "Number of times the TX chain was full"); + + SYSCTL_ADD_INT(ctx, children, OID_AUTO, + "tso_frames_requested", + CTLFLAG_RD, &sc->tso_frames_requested, + 0, "Number of TSO frames requested"); + + SYSCTL_ADD_INT(ctx, children, OID_AUTO, + "tso_frames_completed", + CTLFLAG_RD, &sc->tso_frames_completed, + 0, "Number of TSO frames completed"); + + SYSCTL_ADD_INT(ctx, children, OID_AUTO, + "tso_frames_failed", + CTLFLAG_RD, &sc->tso_frames_failed, + 0, "Number of TSO frames failed"); + + SYSCTL_ADD_INT(ctx, children, OID_AUTO, + "csum_offload_ip", + CTLFLAG_RD, &sc->csum_offload_ip, + 0, "Number of IP checksum offload frames"); + + SYSCTL_ADD_INT(ctx, children, OID_AUTO, + "csum_offload_tcp_udp", + CTLFLAG_RD, &sc->csum_offload_tcp_udp, + 0, "Number of TCP/UDP checksum offload frames"); + + SYSCTL_ADD_INT(ctx, children, OID_AUTO, + "vlan_tagged_frames_rcvd", + CTLFLAG_RD, &sc->vlan_tagged_frames_rcvd, + 0, "Number of VLAN tagged frames received"); + + SYSCTL_ADD_INT(ctx, children, OID_AUTO, + "vlan_tagged_frames_stripped", + CTLFLAG_RD, &sc->vlan_tagged_frames_stripped, + 0, "Number of VLAN tagged frames stripped"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "interrupts_rx", + CTLFLAG_RD, &sc->interrupts_rx, + 0, "Number of RX interrupts"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "interrupts_tx", + CTLFLAG_RD, &sc->interrupts_tx, + 0, "Number of TX interrupts"); +#endif + + SYSCTL_ADD_ULONG(ctx, children, OID_AUTO, + "stat_IfHcInOctets", + CTLFLAG_RD, &sc->stat_IfHCInOctets, + "Bytes received"); + + SYSCTL_ADD_ULONG(ctx, children, OID_AUTO, + "stat_IfHCInBadOctets", + CTLFLAG_RD, &sc->stat_IfHCInBadOctets, + "Bad bytes received"); + + SYSCTL_ADD_ULONG(ctx, children, OID_AUTO, + "stat_IfHCOutOctets", + CTLFLAG_RD, &sc->stat_IfHCOutOctets, + "Bytes sent"); + + SYSCTL_ADD_ULONG(ctx, children, OID_AUTO, + "stat_IfHCOutBadOctets", + CTLFLAG_RD, &sc->stat_IfHCOutBadOctets, + "Bad bytes sent"); + + SYSCTL_ADD_ULONG(ctx, children, OID_AUTO, + "stat_IfHCInUcastPkts", + CTLFLAG_RD, &sc->stat_IfHCInUcastPkts, + "Unicast packets received"); + + SYSCTL_ADD_ULONG(ctx, children, OID_AUTO, + "stat_IfHCInMulticastPkts", + CTLFLAG_RD, &sc->stat_IfHCInMulticastPkts, + "Multicast packets received"); + + SYSCTL_ADD_ULONG(ctx, children, OID_AUTO, + "stat_IfHCInBroadcastPkts", + CTLFLAG_RD, &sc->stat_IfHCInBroadcastPkts, + "Broadcast packets received"); + + SYSCTL_ADD_ULONG(ctx, children, OID_AUTO, + "stat_IfHCOutUcastPkts", + CTLFLAG_RD, &sc->stat_IfHCOutUcastPkts, + "Unicast packets sent"); + + SYSCTL_ADD_ULONG(ctx, children, OID_AUTO, + "stat_IfHCOutMulticastPkts", + CTLFLAG_RD, &sc->stat_IfHCOutMulticastPkts, + "Multicast packets sent"); + + SYSCTL_ADD_ULONG(ctx, children, OID_AUTO, + "stat_IfHCOutBroadcastPkts", + CTLFLAG_RD, &sc->stat_IfHCOutBroadcastPkts, + "Broadcast packets sent"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_emac_tx_stat_dot3statsinternalmactransmiterrors", + CTLFLAG_RD, &sc->stat_emac_tx_stat_dot3statsinternalmactransmiterrors, + 0, "Internal MAC transmit errors"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_Dot3StatsCarrierSenseErrors", + CTLFLAG_RD, &sc->stat_Dot3StatsCarrierSenseErrors, + 0, "Carrier sense errors"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_Dot3StatsFCSErrors", + CTLFLAG_RD, &sc->stat_Dot3StatsFCSErrors, + 0, "Frame check sequence errors"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_Dot3StatsAlignmentErrors", + CTLFLAG_RD, &sc->stat_Dot3StatsAlignmentErrors, + 0, "Alignment errors"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_Dot3StatsSingleCollisionFrames", + CTLFLAG_RD, &sc->stat_Dot3StatsSingleCollisionFrames, + 0, "Single Collision Frames"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_Dot3StatsMultipleCollisionFrames", + CTLFLAG_RD, &sc->stat_Dot3StatsMultipleCollisionFrames, + 0, "Multiple Collision Frames"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_Dot3StatsDeferredTransmissions", + CTLFLAG_RD, &sc->stat_Dot3StatsDeferredTransmissions, + 0, "Deferred Transmissions"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_Dot3StatsExcessiveCollisions", + CTLFLAG_RD, &sc->stat_Dot3StatsExcessiveCollisions, + 0, "Excessive Collisions"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_Dot3StatsLateCollisions", + CTLFLAG_RD, &sc->stat_Dot3StatsLateCollisions, + 0, "Late Collisions"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_EtherStatsCollisions", + CTLFLAG_RD, &sc->stat_EtherStatsCollisions, + 0, "Collisions"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_EtherStatsFragments", + CTLFLAG_RD, &sc->stat_EtherStatsFragments, + 0, "Fragments"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_EtherStatsJabbers", + CTLFLAG_RD, &sc->stat_EtherStatsJabbers, + 0, "Jabbers"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_EtherStatsUndersizePkts", + CTLFLAG_RD, &sc->stat_EtherStatsUndersizePkts, + 0, "Undersize packets"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_EtherStatsOversizePkts", + CTLFLAG_RD, &sc->stat_EtherStatsOversizePkts, + 0, "stat_EtherStatsOversizePkts"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_EtherStatsPktsRx64Octets", + CTLFLAG_RD, &sc->stat_EtherStatsPktsRx64Octets, + 0, "Bytes received in 64 byte packets"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_EtherStatsPktsRx65Octetsto127Octets", + CTLFLAG_RD, &sc->stat_EtherStatsPktsRx65Octetsto127Octets, + 0, "Bytes received in 65 to 127 byte packets"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_EtherStatsPktsRx128Octetsto255Octets", + CTLFLAG_RD, &sc->stat_EtherStatsPktsRx128Octetsto255Octets, + 0, "Bytes received in 128 to 255 byte packets"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_EtherStatsPktsRx256Octetsto511Octets", + CTLFLAG_RD, &sc->stat_EtherStatsPktsRx256Octetsto511Octets, + 0, "Bytes received in 256 to 511 byte packets"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_EtherStatsPktsRx512Octetsto1023Octets", + CTLFLAG_RD, &sc->stat_EtherStatsPktsRx512Octetsto1023Octets, + 0, "Bytes received in 512 to 1023 byte packets"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_EtherStatsPktsRx1024Octetsto1522Octets", + CTLFLAG_RD, &sc->stat_EtherStatsPktsRx1024Octetsto1522Octets, + 0, "Bytes received in 1024 t0 1522 byte packets"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_EtherStatsPktsRx1523Octetsto9022Octets", + CTLFLAG_RD, &sc->stat_EtherStatsPktsRx1523Octetsto9022Octets, + 0, "Bytes received in 1523 to 9022 byte packets"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_EtherStatsPktsTx64Octets", + CTLFLAG_RD, &sc->stat_EtherStatsPktsTx64Octets, + 0, "Bytes sent in 64 byte packets"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_EtherStatsPktsTx65Octetsto127Octets", + CTLFLAG_RD, &sc->stat_EtherStatsPktsTx65Octetsto127Octets, + 0, "Bytes sent in 65 to 127 byte packets"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_EtherStatsPktsTx128Octetsto255Octets", + CTLFLAG_RD, &sc->stat_EtherStatsPktsTx128Octetsto255Octets, + 0, "Bytes sent in 128 to 255 byte packets"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_EtherStatsPktsTx256Octetsto511Octets", + CTLFLAG_RD, &sc->stat_EtherStatsPktsTx256Octetsto511Octets, + 0, "Bytes sent in 256 to 511 byte packets"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_EtherStatsPktsTx512Octetsto1023Octets", + CTLFLAG_RD, &sc->stat_EtherStatsPktsTx512Octetsto1023Octets, + 0, "Bytes sent in 512 to 1023 byte packets"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_EtherStatsPktsTx1024Octetsto1522Octets", + CTLFLAG_RD, &sc->stat_EtherStatsPktsTx1024Octetsto1522Octets, + 0, "Bytes sent in 1024 to 1522 byte packets"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_EtherStatsPktsTx1523Octetsto9022Octets", + CTLFLAG_RD, &sc->stat_EtherStatsPktsTx1523Octetsto9022Octets, + 0, "Bytes sent in 1523 to 9022 byte packets"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_XonPauseFramesReceived", + CTLFLAG_RD, &sc->stat_XonPauseFramesReceived, + 0, "XON pause frames receved"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_XoffPauseFramesReceived", + CTLFLAG_RD, &sc->stat_XoffPauseFramesReceived, + 0, "XOFF pause frames received"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_OutXonSent", + CTLFLAG_RD, &sc->stat_OutXonSent, + 0, "XON pause frames sent"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_OutXoffSent", + CTLFLAG_RD, &sc->stat_OutXoffSent, + 0, "XOFF pause frames sent"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_FlowControlDone", + CTLFLAG_RD, &sc->stat_FlowControlDone, + 0, "Flow control done"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_MacControlFramesReceived", + CTLFLAG_RD, &sc->stat_MacControlFramesReceived, + 0, "MAC control frames received"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_XoffStateEntered", + CTLFLAG_RD, &sc->stat_XoffStateEntered, + 0, "XOFF state entered"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_IfInFramesL2FilterDiscards", + CTLFLAG_RD, &sc->stat_IfInFramesL2FilterDiscards, + 0, "Received L2 packets discarded"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_IfInRuleCheckerDiscards", + CTLFLAG_RD, &sc->stat_IfInRuleCheckerDiscards, + 0, "Received packets discarded by rule"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_IfInFTQDiscards", + CTLFLAG_RD, &sc->stat_IfInFTQDiscards, + 0, "Received packet FTQ discards"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_IfInMBUFDiscards", + CTLFLAG_RD, &sc->stat_IfInMBUFDiscards, + 0, "Received packets discarded due to lack " + "of controller buffer memory"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_IfInRuleCheckerP4Hit", + CTLFLAG_RD, &sc->stat_IfInRuleCheckerP4Hit, + 0, "Received packets rule checker hits"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_CatchupInRuleCheckerDiscards", + CTLFLAG_RD, &sc->stat_CatchupInRuleCheckerDiscards, + 0, "Received packets discarded in Catchup path"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_CatchupInFTQDiscards", + CTLFLAG_RD, &sc->stat_CatchupInFTQDiscards, + 0, "Received packets discarded in FTQ in Catchup path"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_CatchupInMBUFDiscards", + CTLFLAG_RD, &sc->stat_CatchupInMBUFDiscards, + 0, "Received packets discarded in controller " + "buffer memory in Catchup path"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "stat_CatchupInRuleCheckerP4Hit", + CTLFLAG_RD, &sc->stat_CatchupInRuleCheckerP4Hit, + 0, "Received packets rule checker hits in Catchup path"); + + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, + "com_no_buffers", + CTLFLAG_RD, &sc->com_no_buffers, + 0, "Valid packets received but no RX buffers available"); + +#ifdef BCE_DEBUG + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, + "driver_state", CTLTYPE_INT | CTLFLAG_RW, + (void *)sc, 0, + bce_sysctl_driver_state, "I", "Drive state information"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, + "hw_state", CTLTYPE_INT | CTLFLAG_RW, + (void *)sc, 0, + bce_sysctl_hw_state, "I", "Hardware state information"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, + "status_block", CTLTYPE_INT | CTLFLAG_RW, + (void *)sc, 0, + bce_sysctl_status_block, "I", "Dump status block"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, + "stats_block", CTLTYPE_INT | CTLFLAG_RW, + (void *)sc, 0, + bce_sysctl_stats_block, "I", "Dump statistics block"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, + "stats_clear", CTLTYPE_INT | CTLFLAG_RW, + (void *)sc, 0, + bce_sysctl_stats_clear, "I", "Clear statistics block"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, + "bc_state", CTLTYPE_INT | CTLFLAG_RW, + (void *)sc, 0, + bce_sysctl_bc_state, "I", "Bootcode state information"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, + "dump_rx_bd_chain", CTLTYPE_INT | CTLFLAG_RW, + (void *)sc, 0, + bce_sysctl_dump_rx_bd_chain, "I", "Dump RX BD chain"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, + "dump_rx_mbuf_chain", CTLTYPE_INT | CTLFLAG_RW, + (void *)sc, 0, + bce_sysctl_dump_rx_mbuf_chain, "I", "Dump RX MBUF chain"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, + "dump_tx_chain", CTLTYPE_INT | CTLFLAG_RW, + (void *)sc, 0, + bce_sysctl_dump_tx_chain, "I", "Dump tx_bd chain"); + +#ifdef BCE_JUMBO_HDRSPLIT + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, + "dump_pg_chain", CTLTYPE_INT | CTLFLAG_RW, + (void *)sc, 0, + bce_sysctl_dump_pg_chain, "I", "Dump page chain"); +#endif + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, + "dump_ctx", CTLTYPE_INT | CTLFLAG_RW, + (void *)sc, 0, + bce_sysctl_dump_ctx, "I", "Dump context memory"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, + "breakpoint", CTLTYPE_INT | CTLFLAG_RW, + (void *)sc, 0, + bce_sysctl_breakpoint, "I", "Driver breakpoint"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, + "reg_read", CTLTYPE_INT | CTLFLAG_RW, + (void *)sc, 0, + bce_sysctl_reg_read, "I", "Register read"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, + "nvram_read", CTLTYPE_INT | CTLFLAG_RW, + (void *)sc, 0, + bce_sysctl_nvram_read, "I", "NVRAM read"); + + SYSCTL_ADD_PROC(ctx, children, OID_AUTO, + "phy_read", CTLTYPE_INT | CTLFLAG_RW, + (void *)sc, 0, + bce_sysctl_phy_read, "I", "PHY register read"); + +#endif + + DBEXIT(BCE_VERBOSE_MISC); +} + + +/****************************************************************************/ +/* BCE Debug Routines */ +/****************************************************************************/ +#ifdef BCE_DEBUG + +/****************************************************************************/ +/* Freezes the controller to allow for a cohesive state dump. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_freeze_controller(struct bce_softc *sc) +{ + u32 val; + val = REG_RD(sc, BCE_MISC_COMMAND); + val |= BCE_MISC_COMMAND_DISABLE_ALL; + REG_WR(sc, BCE_MISC_COMMAND, val); +} + + +/****************************************************************************/ +/* Unfreezes the controller after a freeze operation. This may not always */ +/* work and the controller will require a reset! */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_unfreeze_controller(struct bce_softc *sc) +{ + u32 val; + val = REG_RD(sc, BCE_MISC_COMMAND); + val |= BCE_MISC_COMMAND_ENABLE_ALL; + REG_WR(sc, BCE_MISC_COMMAND, val); +} + + +/****************************************************************************/ +/* Prints out Ethernet frame information from an mbuf. */ +/* */ +/* Partially decode an Ethernet frame to look at some important headers. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_dump_enet(struct bce_softc *sc, struct mbuf *m) +{ + struct ether_vlan_header *eh; + u16 etype; + int ehlen; + struct ip *ip; + struct tcphdr *th; + struct udphdr *uh; + struct arphdr *ah; + + BCE_PRINTF( + "-----------------------------" + " Frame Decode " + "-----------------------------\n"); + + eh = mtod(m, struct ether_vlan_header *); + + /* Handle VLAN encapsulation if present. */ + if (eh->evl_encap_proto == htons(ETHERTYPE_VLAN)) { + etype = ntohs(eh->evl_proto); + ehlen = ETHER_HDR_LEN + ETHER_VLAN_ENCAP_LEN; + } else { + etype = ntohs(eh->evl_encap_proto); + ehlen = ETHER_HDR_LEN; + } + + /* ToDo: Add VLAN output. */ + BCE_PRINTF("enet: dest = %6D, src = %6D, type = 0x%04X, hlen = %d\n", + eh->evl_dhost, ":", eh->evl_shost, ":", etype, ehlen); + + switch (etype) { + case ETHERTYPE_IP: + ip = (struct ip *)(m->m_data + ehlen); + BCE_PRINTF("--ip: dest = 0x%08X , src = 0x%08X, " + "len = %d bytes, protocol = 0x%02X, xsum = 0x%04X\n", + ntohl(ip->ip_dst.s_addr), ntohl(ip->ip_src.s_addr), + ntohs(ip->ip_len), ip->ip_p, ntohs(ip->ip_sum)); + + switch (ip->ip_p) { + case IPPROTO_TCP: + th = (struct tcphdr *)((caddr_t)ip + (ip->ip_hl << 2)); + BCE_PRINTF("-tcp: dest = %d, src = %d, hlen = " + "%d bytes, flags = 0x%b, csum = 0x%04X\n", + ntohs(th->th_dport), ntohs(th->th_sport), + (th->th_off << 2), th->th_flags, + "\20\10CWR\07ECE\06URG\05ACK\04PSH\03RST" + "\02SYN\01FIN", ntohs(th->th_sum)); + break; + case IPPROTO_UDP: + uh = (struct udphdr *)((caddr_t)ip + (ip->ip_hl << 2)); + BCE_PRINTF("-udp: dest = %d, src = %d, len = %d " + "bytes, csum = 0x%04X\n", ntohs(uh->uh_dport), + ntohs(uh->uh_sport), ntohs(uh->uh_ulen), + ntohs(uh->uh_sum)); + break; + case IPPROTO_ICMP: + BCE_PRINTF("icmp:\n"); + break; + default: + BCE_PRINTF("----: Other IP protocol.\n"); + } + break; + case ETHERTYPE_IPV6: + BCE_PRINTF("ipv6: No decode supported.\n"); + break; + case ETHERTYPE_ARP: + BCE_PRINTF("-arp: "); + ah = (struct arphdr *) (m->m_data + ehlen); + switch (ntohs(ah->ar_op)) { + case ARPOP_REVREQUEST: + printf("reverse ARP request\n"); + break; + case ARPOP_REVREPLY: + printf("reverse ARP reply\n"); + break; + case ARPOP_REQUEST: + printf("ARP request\n"); + break; + case ARPOP_REPLY: + printf("ARP reply\n"); + break; + default: + printf("other ARP operation\n"); + } + break; + default: + BCE_PRINTF("----: Other protocol.\n"); + } + + BCE_PRINTF( + "-----------------------------" + "--------------" + "-----------------------------\n"); +} + + +/****************************************************************************/ +/* Prints out information about an mbuf. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_dump_mbuf(struct bce_softc *sc, struct mbuf *m) +{ + struct mbuf *mp = m; + + if (m == NULL) { + BCE_PRINTF("mbuf: null pointer\n"); + return; + } + + while (mp) { + BCE_PRINTF("mbuf: %p, m_len = %d, m_flags = 0x%b, " + "m_data = %p\n", mp, mp->m_len, mp->m_flags, + "\20\1M_EXT\2M_PKTHDR\3M_EOR\4M_RDONLY", mp->m_data); + + if (mp->m_flags & M_PKTHDR) { + BCE_PRINTF("- m_pkthdr: len = %d, flags = 0x%b, " + "csum_flags = %b\n", mp->m_pkthdr.len, + mp->m_flags, "\20\12M_BCAST\13M_MCAST\14M_FRAG" + "\15M_FIRSTFRAG\16M_LASTFRAG\21M_VLANTAG" + "\22M_PROMISC\23M_NOFREE", + mp->m_pkthdr.csum_flags, + "\20\1CSUM_IP\2CSUM_TCP\3CSUM_UDP\4CSUM_IP_FRAGS" + "\5CSUM_FRAGMENT\6CSUM_TSO\11CSUM_IP_CHECKED" + "\12CSUM_IP_VALID\13CSUM_DATA_VALID" + "\14CSUM_PSEUDO_HDR"); + } + + if (mp->m_flags & M_EXT) { + BCE_PRINTF("- m_ext: %p, ext_size = %d, type = ", + mp->m_ext.ext_buf, mp->m_ext.ext_size); + switch (mp->m_ext.ext_type) { + case EXT_CLUSTER: + printf("EXT_CLUSTER\n"); break; + case EXT_SFBUF: + printf("EXT_SFBUF\n"); break; + case EXT_JUMBO9: + printf("EXT_JUMBO9\n"); break; + case EXT_JUMBO16: + printf("EXT_JUMBO16\n"); break; + case EXT_PACKET: + printf("EXT_PACKET\n"); break; + case EXT_MBUF: + printf("EXT_MBUF\n"); break; + case EXT_NET_DRV: + printf("EXT_NET_DRV\n"); break; + case EXT_MOD_TYPE: + printf("EXT_MDD_TYPE\n"); break; + case EXT_DISPOSABLE: + printf("EXT_DISPOSABLE\n"); break; + case EXT_EXTREF: + printf("EXT_EXTREF\n"); break; + default: + printf("UNKNOWN\n"); + } + } + + mp = mp->m_next; + } +} + + +/****************************************************************************/ +/* Prints out the mbufs in the TX mbuf chain. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_dump_tx_mbuf_chain(struct bce_softc *sc, u16 chain_prod, int count) +{ + struct mbuf *m; + + BCE_PRINTF( + "----------------------------" + " tx mbuf data " + "----------------------------\n"); + + for (int i = 0; i < count; i++) { + m = sc->tx_mbuf_ptr[chain_prod]; + BCE_PRINTF("txmbuf[0x%04X]\n", chain_prod); + bce_dump_mbuf(sc, m); + chain_prod = TX_CHAIN_IDX(NEXT_TX_BD(chain_prod)); + } + + BCE_PRINTF( + "----------------------------" + "----------------" + "----------------------------\n"); +} + + +/****************************************************************************/ +/* Prints out the mbufs in the RX mbuf chain. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_dump_rx_mbuf_chain(struct bce_softc *sc, u16 chain_prod, int count) +{ + struct mbuf *m; + + BCE_PRINTF( + "----------------------------" + " rx mbuf data " + "----------------------------\n"); + + for (int i = 0; i < count; i++) { + m = sc->rx_mbuf_ptr[chain_prod]; + BCE_PRINTF("rxmbuf[0x%04X]\n", chain_prod); + bce_dump_mbuf(sc, m); + chain_prod = RX_CHAIN_IDX(NEXT_RX_BD(chain_prod)); + } + + + BCE_PRINTF( + "----------------------------" + "----------------" + "----------------------------\n"); +} + + +#ifdef BCE_JUMBO_HDRSPLIT +/****************************************************************************/ +/* Prints out the mbufs in the mbuf page chain. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_dump_pg_mbuf_chain(struct bce_softc *sc, u16 chain_prod, int count) +{ + struct mbuf *m; + + BCE_PRINTF( + "----------------------------" + " pg mbuf data " + "----------------------------\n"); + + for (int i = 0; i < count; i++) { + m = sc->pg_mbuf_ptr[chain_prod]; + BCE_PRINTF("pgmbuf[0x%04X]\n", chain_prod); + bce_dump_mbuf(sc, m); + chain_prod = PG_CHAIN_IDX(NEXT_PG_BD(chain_prod)); + } + + + BCE_PRINTF( + "----------------------------" + "----------------" + "----------------------------\n"); +} +#endif + + +/****************************************************************************/ +/* Prints out a tx_bd structure. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_dump_txbd(struct bce_softc *sc, int idx, struct tx_bd *txbd) +{ + int i = 0; + + if (idx > MAX_TX_BD) + /* Index out of range. */ + BCE_PRINTF("tx_bd[0x%04X]: Invalid tx_bd index!\n", idx); + else if ((idx & USABLE_TX_BD_PER_PAGE) == USABLE_TX_BD_PER_PAGE) + /* TX Chain page pointer. */ + BCE_PRINTF("tx_bd[0x%04X]: haddr = 0x%08X:%08X, chain page " + "pointer\n", idx, txbd->tx_bd_haddr_hi, + txbd->tx_bd_haddr_lo); + else { + /* Normal tx_bd entry. */ + BCE_PRINTF("tx_bd[0x%04X]: haddr = 0x%08X:%08X, " + "mss_nbytes = 0x%08X, vlan tag = 0x%04X, flags = " + "0x%04X (", idx, txbd->tx_bd_haddr_hi, + txbd->tx_bd_haddr_lo, txbd->tx_bd_mss_nbytes, + txbd->tx_bd_vlan_tag, txbd->tx_bd_flags); + + if (txbd->tx_bd_flags & TX_BD_FLAGS_CONN_FAULT) { + if (i>0) + printf("|"); + printf("CONN_FAULT"); + i++; + } + + if (txbd->tx_bd_flags & TX_BD_FLAGS_TCP_UDP_CKSUM) { + if (i>0) + printf("|"); + printf("TCP_UDP_CKSUM"); + i++; + } + + if (txbd->tx_bd_flags & TX_BD_FLAGS_IP_CKSUM) { + if (i>0) + printf("|"); + printf("IP_CKSUM"); + i++; + } + + if (txbd->tx_bd_flags & TX_BD_FLAGS_VLAN_TAG) { + if (i>0) + printf("|"); + printf("VLAN"); + i++; + } + + if (txbd->tx_bd_flags & TX_BD_FLAGS_COAL_NOW) { + if (i>0) + printf("|"); + printf("COAL_NOW"); + i++; + } + + if (txbd->tx_bd_flags & TX_BD_FLAGS_DONT_GEN_CRC) { + if (i>0) + printf("|"); + printf("DONT_GEN_CRC"); + i++; + } + + if (txbd->tx_bd_flags & TX_BD_FLAGS_START) { + if (i>0) + printf("|"); + printf("START"); + i++; + } + + if (txbd->tx_bd_flags & TX_BD_FLAGS_END) { + if (i>0) + printf("|"); + printf("END"); + i++; + } + + if (txbd->tx_bd_flags & TX_BD_FLAGS_SW_LSO) { + if (i>0) + printf("|"); + printf("LSO"); + i++; + } + + if (txbd->tx_bd_flags & TX_BD_FLAGS_SW_OPTION_WORD) { + if (i>0) + printf("|"); + printf("SW_OPTION=%d", ((txbd->tx_bd_flags & + TX_BD_FLAGS_SW_OPTION_WORD) >> 8)); i++; + } + + if (txbd->tx_bd_flags & TX_BD_FLAGS_SW_FLAGS) { + if (i>0) + printf("|"); + printf("SW_FLAGS"); + i++; + } + + if (txbd->tx_bd_flags & TX_BD_FLAGS_SW_SNAP) { + if (i>0) + printf("|"); + printf("SNAP)"); + } else { + printf(")\n"); + } + } +} + + +/****************************************************************************/ +/* Prints out a rx_bd structure. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_dump_rxbd(struct bce_softc *sc, int idx, struct rx_bd *rxbd) +{ + if (idx > MAX_RX_BD) + /* Index out of range. */ + BCE_PRINTF("rx_bd[0x%04X]: Invalid rx_bd index!\n", idx); + else if ((idx & USABLE_RX_BD_PER_PAGE) == USABLE_RX_BD_PER_PAGE) + /* RX Chain page pointer. */ + BCE_PRINTF("rx_bd[0x%04X]: haddr = 0x%08X:%08X, chain page " + "pointer\n", idx, rxbd->rx_bd_haddr_hi, + rxbd->rx_bd_haddr_lo); + else + /* Normal rx_bd entry. */ + BCE_PRINTF("rx_bd[0x%04X]: haddr = 0x%08X:%08X, nbytes = " + "0x%08X, flags = 0x%08X\n", idx, rxbd->rx_bd_haddr_hi, + rxbd->rx_bd_haddr_lo, rxbd->rx_bd_len, + rxbd->rx_bd_flags); +} + + +#ifdef BCE_JUMBO_HDRSPLIT +/****************************************************************************/ +/* Prints out a rx_bd structure in the page chain. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_dump_pgbd(struct bce_softc *sc, int idx, struct rx_bd *pgbd) +{ + if (idx > MAX_PG_BD) + /* Index out of range. */ + BCE_PRINTF("pg_bd[0x%04X]: Invalid pg_bd index!\n", idx); + else if ((idx & USABLE_PG_BD_PER_PAGE) == USABLE_PG_BD_PER_PAGE) + /* Page Chain page pointer. */ + BCE_PRINTF("px_bd[0x%04X]: haddr = 0x%08X:%08X, chain page pointer\n", + idx, pgbd->rx_bd_haddr_hi, pgbd->rx_bd_haddr_lo); + else + /* Normal rx_bd entry. */ + BCE_PRINTF("pg_bd[0x%04X]: haddr = 0x%08X:%08X, nbytes = 0x%08X, " + "flags = 0x%08X\n", idx, + pgbd->rx_bd_haddr_hi, pgbd->rx_bd_haddr_lo, + pgbd->rx_bd_len, pgbd->rx_bd_flags); +} +#endif + + +/****************************************************************************/ +/* Prints out a l2_fhdr structure. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_dump_l2fhdr(struct bce_softc *sc, int idx, struct l2_fhdr *l2fhdr) +{ + BCE_PRINTF("l2_fhdr[0x%04X]: status = 0x%b, " + "pkt_len = %d, vlan = 0x%04x, ip_xsum/hdr_len = 0x%04X, " + "tcp_udp_xsum = 0x%04X\n", idx, + l2fhdr->l2_fhdr_status, BCE_L2FHDR_PRINTFB, + l2fhdr->l2_fhdr_pkt_len, l2fhdr->l2_fhdr_vlan_tag, + l2fhdr->l2_fhdr_ip_xsum, l2fhdr->l2_fhdr_tcp_udp_xsum); +} + + +/****************************************************************************/ +/* Prints out context memory info. (Only useful for CID 0 to 16.) */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_dump_ctx(struct bce_softc *sc, u16 cid) +{ + if (cid > TX_CID) { + BCE_PRINTF(" Unknown CID\n"); + return; + } + + BCE_PRINTF( + "----------------------------" + " CTX Data " + "----------------------------\n"); + + BCE_PRINTF(" 0x%04X - (CID) Context ID\n", cid); + + if (cid == RX_CID) { + BCE_PRINTF(" 0x%08X - (L2CTX_RX_HOST_BDIDX) host rx " + "producer index\n", + CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_RX_HOST_BDIDX)); + BCE_PRINTF(" 0x%08X - (L2CTX_RX_HOST_BSEQ) host " + "byte sequence\n", CTX_RD(sc, GET_CID_ADDR(cid), + BCE_L2CTX_RX_HOST_BSEQ)); + BCE_PRINTF(" 0x%08X - (L2CTX_RX_NX_BSEQ) h/w byte sequence\n", + CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_RX_NX_BSEQ)); + BCE_PRINTF(" 0x%08X - (L2CTX_RX_NX_BDHADDR_HI) h/w buffer " + "descriptor address\n", + CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_RX_NX_BDHADDR_HI)); + BCE_PRINTF(" 0x%08X - (L2CTX_RX_NX_BDHADDR_LO) h/w buffer " + "descriptor address\n", + CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_RX_NX_BDHADDR_LO)); + BCE_PRINTF(" 0x%08X - (L2CTX_RX_NX_BDIDX) h/w rx consumer " + "index\n", CTX_RD(sc, GET_CID_ADDR(cid), + BCE_L2CTX_RX_NX_BDIDX)); + BCE_PRINTF(" 0x%08X - (L2CTX_RX_HOST_PG_BDIDX) host page " + "producer index\n", CTX_RD(sc, GET_CID_ADDR(cid), + BCE_L2CTX_RX_HOST_PG_BDIDX)); + BCE_PRINTF(" 0x%08X - (L2CTX_RX_PG_BUF_SIZE) host rx_bd/page " + "buffer size\n", CTX_RD(sc, GET_CID_ADDR(cid), + BCE_L2CTX_RX_PG_BUF_SIZE)); + BCE_PRINTF(" 0x%08X - (L2CTX_RX_NX_PG_BDHADDR_HI) h/w page " + "chain address\n", CTX_RD(sc, GET_CID_ADDR(cid), + BCE_L2CTX_RX_NX_PG_BDHADDR_HI)); + BCE_PRINTF(" 0x%08X - (L2CTX_RX_NX_PG_BDHADDR_LO) h/w page " + "chain address\n", CTX_RD(sc, GET_CID_ADDR(cid), + BCE_L2CTX_RX_NX_PG_BDHADDR_LO)); + BCE_PRINTF(" 0x%08X - (L2CTX_RX_NX_PG_BDIDX) h/w page " + "consumer index\n", CTX_RD(sc, GET_CID_ADDR(cid), + BCE_L2CTX_RX_NX_PG_BDIDX)); + } else if (cid == TX_CID) { + if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || + (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { + BCE_PRINTF(" 0x%08X - (L2CTX_TX_TYPE_XI) ctx type\n", + CTX_RD(sc, GET_CID_ADDR(cid), + BCE_L2CTX_TX_TYPE_XI)); + BCE_PRINTF(" 0x%08X - (L2CTX_CMD_TX_TYPE_XI) ctx " + "cmd\n", CTX_RD(sc, GET_CID_ADDR(cid), + BCE_L2CTX_TX_CMD_TYPE_XI)); + BCE_PRINTF(" 0x%08X - (L2CTX_TX_TBDR_BDHADDR_HI_XI) " + "h/w buffer descriptor address\n", + CTX_RD(sc, GET_CID_ADDR(cid), + BCE_L2CTX_TX_TBDR_BHADDR_HI_XI)); + BCE_PRINTF(" 0x%08X - (L2CTX_TX_TBDR_BHADDR_LO_XI) " + "h/w buffer descriptor address\n", + CTX_RD(sc, GET_CID_ADDR(cid), + BCE_L2CTX_TX_TBDR_BHADDR_LO_XI)); + BCE_PRINTF(" 0x%08X - (L2CTX_TX_HOST_BIDX_XI) " + "host producer index\n", + CTX_RD(sc, GET_CID_ADDR(cid), + BCE_L2CTX_TX_HOST_BIDX_XI)); + BCE_PRINTF(" 0x%08X - (L2CTX_TX_HOST_BSEQ_XI) " + "host byte sequence\n", + CTX_RD(sc, GET_CID_ADDR(cid), + BCE_L2CTX_TX_HOST_BSEQ_XI)); + } else { + BCE_PRINTF(" 0x%08X - (L2CTX_TX_TYPE) ctx type\n", + CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_TX_TYPE)); + BCE_PRINTF(" 0x%08X - (L2CTX_TX_CMD_TYPE) ctx cmd\n", + CTX_RD(sc, GET_CID_ADDR(cid), + BCE_L2CTX_TX_CMD_TYPE)); + BCE_PRINTF(" 0x%08X - (L2CTX_TX_TBDR_BDHADDR_HI) " + "h/w buffer descriptor address\n", + CTX_RD(sc, GET_CID_ADDR(cid), + BCE_L2CTX_TX_TBDR_BHADDR_HI)); + BCE_PRINTF(" 0x%08X - (L2CTX_TX_TBDR_BHADDR_LO) " + "h/w buffer descriptor address\n", + CTX_RD(sc, GET_CID_ADDR(cid), + BCE_L2CTX_TX_TBDR_BHADDR_LO)); + BCE_PRINTF(" 0x%08X - (L2CTX_TX_HOST_BIDX) host " + "producer index\n", CTX_RD(sc, GET_CID_ADDR(cid), + BCE_L2CTX_TX_HOST_BIDX)); + BCE_PRINTF(" 0x%08X - (L2CTX_TX_HOST_BSEQ) host byte " + "sequence\n", CTX_RD(sc, GET_CID_ADDR(cid), + BCE_L2CTX_TX_HOST_BSEQ)); + } + } + + BCE_PRINTF( + "----------------------------" + " Raw CTX " + "----------------------------\n"); + + for (int i = 0x0; i < 0x300; i += 0x10) { + BCE_PRINTF("0x%04X: 0x%08X 0x%08X 0x%08X 0x%08X\n", i, + CTX_RD(sc, GET_CID_ADDR(cid), i), + CTX_RD(sc, GET_CID_ADDR(cid), i + 0x4), + CTX_RD(sc, GET_CID_ADDR(cid), i + 0x8), + CTX_RD(sc, GET_CID_ADDR(cid), i + 0xc)); + } + + + BCE_PRINTF( + "----------------------------" + "----------------" + "----------------------------\n"); +} + + +/****************************************************************************/ +/* Prints out the FTQ data. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_dump_ftqs(struct bce_softc *sc) +{ + u32 cmd, ctl, cur_depth, max_depth, valid_cnt, val; + + BCE_PRINTF( + "----------------------------" + " FTQ Data " + "----------------------------\n"); + + BCE_PRINTF(" FTQ Command Control Depth_Now " + "Max_Depth Valid_Cnt \n"); + BCE_PRINTF(" ------- ---------- ---------- ---------- " + "---------- ----------\n"); + + /* Setup the generic statistic counters for the FTQ valid count. */ + val = (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RV2PPQ_VALID_CNT << 24) | + (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RXPCQ_VALID_CNT << 16) | + (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RXPQ_VALID_CNT << 8) | + (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RLUPQ_VALID_CNT); + REG_WR(sc, BCE_HC_STAT_GEN_SEL_0, val); + + val = (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TSCHQ_VALID_CNT << 24) | + (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RDMAQ_VALID_CNT << 16) | + (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RV2PTQ_VALID_CNT << 8) | + (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RV2PMQ_VALID_CNT); + REG_WR(sc, BCE_HC_STAT_GEN_SEL_1, val); + + val = (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TPATQ_VALID_CNT << 24) | + (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TDMAQ_VALID_CNT << 16) | + (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TXPQ_VALID_CNT << 8) | + (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TBDRQ_VALID_CNT); + REG_WR(sc, BCE_HC_STAT_GEN_SEL_2, val); + + val = (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_COMQ_VALID_CNT << 24) | + (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_COMTQ_VALID_CNT << 16) | + (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_COMXQ_VALID_CNT << 8) | + (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TASQ_VALID_CNT); + REG_WR(sc, BCE_HC_STAT_GEN_SEL_3, val); + + /* Input queue to the Receive Lookup state machine */ + cmd = REG_RD(sc, BCE_RLUP_FTQ_CMD); + ctl = REG_RD(sc, BCE_RLUP_FTQ_CTL); + cur_depth = (ctl & BCE_RLUP_FTQ_CTL_CUR_DEPTH) >> 22; + max_depth = (ctl & BCE_RLUP_FTQ_CTL_MAX_DEPTH) >> 12; + valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT0); + BCE_PRINTF(" RLUP 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", + cmd, ctl, cur_depth, max_depth, valid_cnt); + + /* Input queue to the Receive Processor */ + cmd = REG_RD_IND(sc, BCE_RXP_FTQ_CMD); + ctl = REG_RD_IND(sc, BCE_RXP_FTQ_CTL); + cur_depth = (ctl & BCE_RXP_FTQ_CTL_CUR_DEPTH) >> 22; + max_depth = (ctl & BCE_RXP_FTQ_CTL_MAX_DEPTH) >> 12; + valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT1); + BCE_PRINTF(" RXP 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", + cmd, ctl, cur_depth, max_depth, valid_cnt); + + /* Input queue to the Recevie Processor */ + cmd = REG_RD_IND(sc, BCE_RXP_CFTQ_CMD); + ctl = REG_RD_IND(sc, BCE_RXP_CFTQ_CTL); + cur_depth = (ctl & BCE_RXP_CFTQ_CTL_CUR_DEPTH) >> 22; + max_depth = (ctl & BCE_RXP_CFTQ_CTL_MAX_DEPTH) >> 12; + valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT2); + BCE_PRINTF(" RXPC 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", + cmd, ctl, cur_depth, max_depth, valid_cnt); + + /* Input queue to the Receive Virtual to Physical state machine */ + cmd = REG_RD(sc, BCE_RV2P_PFTQ_CMD); + ctl = REG_RD(sc, BCE_RV2P_PFTQ_CTL); + cur_depth = (ctl & BCE_RV2P_PFTQ_CTL_CUR_DEPTH) >> 22; + max_depth = (ctl & BCE_RV2P_PFTQ_CTL_MAX_DEPTH) >> 12; + valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT3); + BCE_PRINTF(" RV2PP 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", + cmd, ctl, cur_depth, max_depth, valid_cnt); + + /* Input queue to the Recevie Virtual to Physical state machine */ + cmd = REG_RD(sc, BCE_RV2P_MFTQ_CMD); + ctl = REG_RD(sc, BCE_RV2P_MFTQ_CTL); + cur_depth = (ctl & BCE_RV2P_MFTQ_CTL_CUR_DEPTH) >> 22; + max_depth = (ctl & BCE_RV2P_MFTQ_CTL_MAX_DEPTH) >> 12; + valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT4); + BCE_PRINTF(" RV2PM 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", + cmd, ctl, cur_depth, max_depth, valid_cnt); + + /* Input queue to the Receive Virtual to Physical state machine */ + cmd = REG_RD(sc, BCE_RV2P_TFTQ_CMD); + ctl = REG_RD(sc, BCE_RV2P_TFTQ_CTL); + cur_depth = (ctl & BCE_RV2P_TFTQ_CTL_CUR_DEPTH) >> 22; + max_depth = (ctl & BCE_RV2P_TFTQ_CTL_MAX_DEPTH) >> 12; + valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT5); + BCE_PRINTF(" RV2PT 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", + cmd, ctl, cur_depth, max_depth, valid_cnt); + + /* Input queue to the Receive DMA state machine */ + cmd = REG_RD(sc, BCE_RDMA_FTQ_CMD); + ctl = REG_RD(sc, BCE_RDMA_FTQ_CTL); + cur_depth = (ctl & BCE_RDMA_FTQ_CTL_CUR_DEPTH) >> 22; + max_depth = (ctl & BCE_RDMA_FTQ_CTL_MAX_DEPTH) >> 12; + valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT6); + BCE_PRINTF(" RDMA 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", + cmd, ctl, cur_depth, max_depth, valid_cnt); + + /* Input queue to the Transmit Scheduler state machine */ + cmd = REG_RD(sc, BCE_TSCH_FTQ_CMD); + ctl = REG_RD(sc, BCE_TSCH_FTQ_CTL); + cur_depth = (ctl & BCE_TSCH_FTQ_CTL_CUR_DEPTH) >> 22; + max_depth = (ctl & BCE_TSCH_FTQ_CTL_MAX_DEPTH) >> 12; + valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT7); + BCE_PRINTF(" TSCH 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", + cmd, ctl, cur_depth, max_depth, valid_cnt); + + /* Input queue to the Transmit Buffer Descriptor state machine */ + cmd = REG_RD(sc, BCE_TBDR_FTQ_CMD); + ctl = REG_RD(sc, BCE_TBDR_FTQ_CTL); + cur_depth = (ctl & BCE_TBDR_FTQ_CTL_CUR_DEPTH) >> 22; + max_depth = (ctl & BCE_TBDR_FTQ_CTL_MAX_DEPTH) >> 12; + valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT8); + BCE_PRINTF(" TBDR 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", + cmd, ctl, cur_depth, max_depth, valid_cnt); + + /* Input queue to the Transmit Processor */ + cmd = REG_RD_IND(sc, BCE_TXP_FTQ_CMD); + ctl = REG_RD_IND(sc, BCE_TXP_FTQ_CTL); + cur_depth = (ctl & BCE_TXP_FTQ_CTL_CUR_DEPTH) >> 22; + max_depth = (ctl & BCE_TXP_FTQ_CTL_MAX_DEPTH) >> 12; + valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT9); + BCE_PRINTF(" TXP 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", + cmd, ctl, cur_depth, max_depth, valid_cnt); + + /* Input queue to the Transmit DMA state machine */ + cmd = REG_RD(sc, BCE_TDMA_FTQ_CMD); + ctl = REG_RD(sc, BCE_TDMA_FTQ_CTL); + cur_depth = (ctl & BCE_TDMA_FTQ_CTL_CUR_DEPTH) >> 22; + max_depth = (ctl & BCE_TDMA_FTQ_CTL_MAX_DEPTH) >> 12; + valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT10); + BCE_PRINTF(" TDMA 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", + cmd, ctl, cur_depth, max_depth, valid_cnt); + + /* Input queue to the Transmit Patch-Up Processor */ + cmd = REG_RD_IND(sc, BCE_TPAT_FTQ_CMD); + ctl = REG_RD_IND(sc, BCE_TPAT_FTQ_CTL); + cur_depth = (ctl & BCE_TPAT_FTQ_CTL_CUR_DEPTH) >> 22; + max_depth = (ctl & BCE_TPAT_FTQ_CTL_MAX_DEPTH) >> 12; + valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT11); + BCE_PRINTF(" TPAT 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", + cmd, ctl, cur_depth, max_depth, valid_cnt); + + /* Input queue to the Transmit Assembler state machine */ + cmd = REG_RD_IND(sc, BCE_TAS_FTQ_CMD); + ctl = REG_RD_IND(sc, BCE_TAS_FTQ_CTL); + cur_depth = (ctl & BCE_TAS_FTQ_CTL_CUR_DEPTH) >> 22; + max_depth = (ctl & BCE_TAS_FTQ_CTL_MAX_DEPTH) >> 12; + valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT12); + BCE_PRINTF(" TAS 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", + cmd, ctl, cur_depth, max_depth, valid_cnt); + + /* Input queue to the Completion Processor */ + cmd = REG_RD_IND(sc, BCE_COM_COMXQ_FTQ_CMD); + ctl = REG_RD_IND(sc, BCE_COM_COMXQ_FTQ_CTL); + cur_depth = (ctl & BCE_COM_COMXQ_FTQ_CTL_CUR_DEPTH) >> 22; + max_depth = (ctl & BCE_COM_COMXQ_FTQ_CTL_MAX_DEPTH) >> 12; + valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT13); + BCE_PRINTF(" COMX 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", + cmd, ctl, cur_depth, max_depth, valid_cnt); + + /* Input queue to the Completion Processor */ + cmd = REG_RD_IND(sc, BCE_COM_COMTQ_FTQ_CMD); + ctl = REG_RD_IND(sc, BCE_COM_COMTQ_FTQ_CTL); + cur_depth = (ctl & BCE_COM_COMTQ_FTQ_CTL_CUR_DEPTH) >> 22; + max_depth = (ctl & BCE_COM_COMTQ_FTQ_CTL_MAX_DEPTH) >> 12; + valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT14); + BCE_PRINTF(" COMT 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", + cmd, ctl, cur_depth, max_depth, valid_cnt); + + /* Input queue to the Completion Processor */ + cmd = REG_RD_IND(sc, BCE_COM_COMQ_FTQ_CMD); + ctl = REG_RD_IND(sc, BCE_COM_COMQ_FTQ_CTL); + cur_depth = (ctl & BCE_COM_COMQ_FTQ_CTL_CUR_DEPTH) >> 22; + max_depth = (ctl & BCE_COM_COMQ_FTQ_CTL_MAX_DEPTH) >> 12; + valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT15); + BCE_PRINTF(" COMX 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", + cmd, ctl, cur_depth, max_depth, valid_cnt); + + /* Setup the generic statistic counters for the FTQ valid count. */ + val = (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_CSQ_VALID_CNT << 16) | + (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_CPQ_VALID_CNT << 8) | + (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_MGMQ_VALID_CNT); + + if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || + (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) + val = val | + (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RV2PCSQ_VALID_CNT_XI << + 24); + REG_WR(sc, BCE_HC_STAT_GEN_SEL_0, val); + + /* Input queue to the Management Control Processor */ + cmd = REG_RD_IND(sc, BCE_MCP_MCPQ_FTQ_CMD); + ctl = REG_RD_IND(sc, BCE_MCP_MCPQ_FTQ_CTL); + cur_depth = (ctl & BCE_MCP_MCPQ_FTQ_CTL_CUR_DEPTH) >> 22; + max_depth = (ctl & BCE_MCP_MCPQ_FTQ_CTL_MAX_DEPTH) >> 12; + valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT0); + BCE_PRINTF(" MCP 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", + cmd, ctl, cur_depth, max_depth, valid_cnt); + + /* Input queue to the Command Processor */ + cmd = REG_RD_IND(sc, BCE_CP_CPQ_FTQ_CMD); + ctl = REG_RD_IND(sc, BCE_CP_CPQ_FTQ_CTL); + cur_depth = (ctl & BCE_CP_CPQ_FTQ_CTL_CUR_DEPTH) >> 22; + max_depth = (ctl & BCE_CP_CPQ_FTQ_CTL_MAX_DEPTH) >> 12; + valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT1); + BCE_PRINTF(" CP 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", + cmd, ctl, cur_depth, max_depth, valid_cnt); + + /* Input queue to the Completion Scheduler state machine */ + cmd = REG_RD(sc, BCE_CSCH_CH_FTQ_CMD); + ctl = REG_RD(sc, BCE_CSCH_CH_FTQ_CTL); + cur_depth = (ctl & BCE_CSCH_CH_FTQ_CTL_CUR_DEPTH) >> 22; + max_depth = (ctl & BCE_CSCH_CH_FTQ_CTL_MAX_DEPTH) >> 12; + valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT2); + BCE_PRINTF(" CS 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", + cmd, ctl, cur_depth, max_depth, valid_cnt); + + if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || + (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { + /* Input queue to the RV2P Command Scheduler */ + cmd = REG_RD(sc, BCE_RV2PCSR_FTQ_CMD); + ctl = REG_RD(sc, BCE_RV2PCSR_FTQ_CTL); + cur_depth = (ctl & 0xFFC00000) >> 22; + max_depth = (ctl & 0x003FF000) >> 12; + valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT3); + BCE_PRINTF(" RV2PCSR 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", + cmd, ctl, cur_depth, max_depth, valid_cnt); + } + + BCE_PRINTF( + "----------------------------" + "----------------" + "----------------------------\n"); +} + + +/****************************************************************************/ +/* Prints out the TX chain. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_dump_tx_chain(struct bce_softc *sc, u16 tx_prod, int count) +{ + struct tx_bd *txbd; + + /* First some info about the tx_bd chain structure. */ + BCE_PRINTF( + "----------------------------" + " tx_bd chain " + "----------------------------\n"); + + BCE_PRINTF("page size = 0x%08X, tx chain pages = 0x%08X\n", + (u32) BCM_PAGE_SIZE, (u32) TX_PAGES); + BCE_PRINTF("tx_bd per page = 0x%08X, usable tx_bd per page = 0x%08X\n", + (u32) TOTAL_TX_BD_PER_PAGE, (u32) USABLE_TX_BD_PER_PAGE); + BCE_PRINTF("total tx_bd = 0x%08X\n", (u32) TOTAL_TX_BD); + + BCE_PRINTF( + "----------------------------" + " tx_bd data " + "----------------------------\n"); + + /* Now print out a decoded list of TX buffer descriptors. */ + for (int i = 0; i < count; i++) { + txbd = &sc->tx_bd_chain[TX_PAGE(tx_prod)][TX_IDX(tx_prod)]; + bce_dump_txbd(sc, tx_prod, txbd); + tx_prod++; + } + + BCE_PRINTF( + "----------------------------" + "----------------" + "----------------------------\n"); +} + + +/****************************************************************************/ +/* Prints out the RX chain. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_dump_rx_bd_chain(struct bce_softc *sc, u16 rx_prod, int count) +{ + struct rx_bd *rxbd; + + /* First some info about the rx_bd chain structure. */ + BCE_PRINTF( + "----------------------------" + " rx_bd chain " + "----------------------------\n"); + + BCE_PRINTF("page size = 0x%08X, rx chain pages = 0x%08X\n", + (u32) BCM_PAGE_SIZE, (u32) RX_PAGES); + + BCE_PRINTF("rx_bd per page = 0x%08X, usable rx_bd per page = 0x%08X\n", + (u32) TOTAL_RX_BD_PER_PAGE, (u32) USABLE_RX_BD_PER_PAGE); + + BCE_PRINTF("total rx_bd = 0x%08X\n", (u32) TOTAL_RX_BD); + + BCE_PRINTF( + "----------------------------" + " rx_bd data " + "----------------------------\n"); + + /* Now print out the rx_bd's themselves. */ + for (int i = 0; i < count; i++) { + rxbd = &sc->rx_bd_chain[RX_PAGE(rx_prod)][RX_IDX(rx_prod)]; + bce_dump_rxbd(sc, rx_prod, rxbd); + rx_prod = RX_CHAIN_IDX(rx_prod + 1); + } + + BCE_PRINTF( + "----------------------------" + "----------------" + "----------------------------\n"); +} + + +#ifdef BCE_JUMBO_HDRSPLIT +/****************************************************************************/ +/* Prints out the page chain. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_dump_pg_chain(struct bce_softc *sc, u16 pg_prod, int count) +{ + struct rx_bd *pgbd; + + /* First some info about the page chain structure. */ + BCE_PRINTF( + "----------------------------" + " page chain " + "----------------------------\n"); + + BCE_PRINTF("page size = 0x%08X, pg chain pages = 0x%08X\n", + (u32) BCM_PAGE_SIZE, (u32) PG_PAGES); + + BCE_PRINTF("rx_bd per page = 0x%08X, usable rx_bd per page = 0x%08X\n", + (u32) TOTAL_PG_BD_PER_PAGE, (u32) USABLE_PG_BD_PER_PAGE); + + BCE_PRINTF("total rx_bd = 0x%08X, max_pg_bd = 0x%08X\n", + (u32) TOTAL_PG_BD, (u32) MAX_PG_BD); + + BCE_PRINTF( + "----------------------------" + " page data " + "----------------------------\n"); + + /* Now print out the rx_bd's themselves. */ + for (int i = 0; i < count; i++) { + pgbd = &sc->pg_bd_chain[PG_PAGE(pg_prod)][PG_IDX(pg_prod)]; + bce_dump_pgbd(sc, pg_prod, pgbd); + pg_prod = PG_CHAIN_IDX(pg_prod + 1); + } + + BCE_PRINTF( + "----------------------------" + "----------------" + "----------------------------\n"); +} +#endif + + +#define BCE_PRINT_RX_CONS(arg) \ +if (sblk->status_rx_quick_consumer_index##arg) \ + BCE_PRINTF("0x%04X(0x%04X) - rx_quick_consumer_index%d\n", \ + sblk->status_rx_quick_consumer_index##arg, (u16) \ + RX_CHAIN_IDX(sblk->status_rx_quick_consumer_index##arg), \ + arg); + + +#define BCE_PRINT_TX_CONS(arg) \ +if (sblk->status_tx_quick_consumer_index##arg) \ + BCE_PRINTF("0x%04X(0x%04X) - tx_quick_consumer_index%d\n", \ + sblk->status_tx_quick_consumer_index##arg, (u16) \ + TX_CHAIN_IDX(sblk->status_tx_quick_consumer_index##arg), \ + arg); + +/****************************************************************************/ +/* Prints out the status block from host memory. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_dump_status_block(struct bce_softc *sc) +{ + struct status_block *sblk; + + sblk = sc->status_block; + + BCE_PRINTF( + "----------------------------" + " Status Block " + "----------------------------\n"); + + /* Theses indices are used for normal L2 drivers. */ + BCE_PRINTF(" 0x%08X - attn_bits\n", + sblk->status_attn_bits); + + BCE_PRINTF(" 0x%08X - attn_bits_ack\n", + sblk->status_attn_bits_ack); + + BCE_PRINT_RX_CONS(0); + BCE_PRINT_TX_CONS(0) + + BCE_PRINTF(" 0x%04X - status_idx\n", sblk->status_idx); + + /* Theses indices are not used for normal L2 drivers. */ + BCE_PRINT_RX_CONS(1); BCE_PRINT_RX_CONS(2); BCE_PRINT_RX_CONS(3); + BCE_PRINT_RX_CONS(4); BCE_PRINT_RX_CONS(5); BCE_PRINT_RX_CONS(6); + BCE_PRINT_RX_CONS(7); BCE_PRINT_RX_CONS(8); BCE_PRINT_RX_CONS(9); + BCE_PRINT_RX_CONS(10); BCE_PRINT_RX_CONS(11); BCE_PRINT_RX_CONS(12); + BCE_PRINT_RX_CONS(13); BCE_PRINT_RX_CONS(14); BCE_PRINT_RX_CONS(15); + + BCE_PRINT_TX_CONS(1); BCE_PRINT_TX_CONS(2); BCE_PRINT_TX_CONS(3); + + if (sblk->status_completion_producer_index || + sblk->status_cmd_consumer_index) + BCE_PRINTF("com_prod = 0x%08X, cmd_cons = 0x%08X\n", + sblk->status_completion_producer_index, + sblk->status_cmd_consumer_index); + + BCE_PRINTF( + "----------------------------" + "----------------" + "----------------------------\n"); +} + + +#define BCE_PRINT_64BIT_STAT(arg) \ +if (sblk->arg##_lo || sblk->arg##_hi) \ + BCE_PRINTF("0x%08X:%08X : %s\n", sblk->arg##_hi, \ + sblk->arg##_lo, #arg); + +#define BCE_PRINT_32BIT_STAT(arg) \ +if (sblk->arg) \ + BCE_PRINTF(" 0x%08X : %s\n", \ + sblk->arg, #arg); + +/****************************************************************************/ +/* Prints out the statistics block from host memory. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_dump_stats_block(struct bce_softc *sc) +{ + struct statistics_block *sblk; + + sblk = sc->stats_block; + + BCE_PRINTF( + "---------------" + " Stats Block (All Stats Not Shown Are 0) " + "---------------\n"); + + BCE_PRINT_64BIT_STAT(stat_IfHCInOctets); + BCE_PRINT_64BIT_STAT(stat_IfHCInBadOctets); + BCE_PRINT_64BIT_STAT(stat_IfHCOutOctets); + BCE_PRINT_64BIT_STAT(stat_IfHCOutBadOctets); + BCE_PRINT_64BIT_STAT(stat_IfHCInUcastPkts); + BCE_PRINT_64BIT_STAT(stat_IfHCInBroadcastPkts); + BCE_PRINT_64BIT_STAT(stat_IfHCInMulticastPkts); + BCE_PRINT_64BIT_STAT(stat_IfHCOutUcastPkts); + BCE_PRINT_64BIT_STAT(stat_IfHCOutBroadcastPkts); + BCE_PRINT_64BIT_STAT(stat_IfHCOutMulticastPkts); + BCE_PRINT_32BIT_STAT( + stat_emac_tx_stat_dot3statsinternalmactransmiterrors); + BCE_PRINT_32BIT_STAT(stat_Dot3StatsCarrierSenseErrors); + BCE_PRINT_32BIT_STAT(stat_Dot3StatsFCSErrors); + BCE_PRINT_32BIT_STAT(stat_Dot3StatsAlignmentErrors); + BCE_PRINT_32BIT_STAT(stat_Dot3StatsSingleCollisionFrames); + BCE_PRINT_32BIT_STAT(stat_Dot3StatsMultipleCollisionFrames); + BCE_PRINT_32BIT_STAT(stat_Dot3StatsDeferredTransmissions); + BCE_PRINT_32BIT_STAT(stat_Dot3StatsExcessiveCollisions); + BCE_PRINT_32BIT_STAT(stat_Dot3StatsLateCollisions); + BCE_PRINT_32BIT_STAT(stat_EtherStatsCollisions); + BCE_PRINT_32BIT_STAT(stat_EtherStatsFragments); + BCE_PRINT_32BIT_STAT(stat_EtherStatsJabbers); + BCE_PRINT_32BIT_STAT(stat_EtherStatsUndersizePkts); + BCE_PRINT_32BIT_STAT(stat_EtherStatsOversizePkts); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsRx64Octets); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsRx65Octetsto127Octets); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsRx128Octetsto255Octets); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsRx256Octetsto511Octets); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsRx512Octetsto1023Octets); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsRx1024Octetsto1522Octets); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsRx1523Octetsto9022Octets); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsTx64Octets); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsTx65Octetsto127Octets); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsTx128Octetsto255Octets); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsTx256Octetsto511Octets); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsTx512Octetsto1023Octets); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsTx1024Octetsto1522Octets); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsTx1523Octetsto9022Octets); + BCE_PRINT_32BIT_STAT(stat_XonPauseFramesReceived); + BCE_PRINT_32BIT_STAT(stat_XoffPauseFramesReceived); + BCE_PRINT_32BIT_STAT(stat_OutXonSent); + BCE_PRINT_32BIT_STAT(stat_OutXoffSent); + BCE_PRINT_32BIT_STAT(stat_FlowControlDone); + BCE_PRINT_32BIT_STAT(stat_MacControlFramesReceived); + BCE_PRINT_32BIT_STAT(stat_XoffStateEntered); + BCE_PRINT_32BIT_STAT(stat_IfInFramesL2FilterDiscards); + BCE_PRINT_32BIT_STAT(stat_IfInRuleCheckerDiscards); + BCE_PRINT_32BIT_STAT(stat_IfInFTQDiscards); + BCE_PRINT_32BIT_STAT(stat_IfInMBUFDiscards); + BCE_PRINT_32BIT_STAT(stat_IfInRuleCheckerP4Hit); + BCE_PRINT_32BIT_STAT(stat_CatchupInRuleCheckerDiscards); + BCE_PRINT_32BIT_STAT(stat_CatchupInFTQDiscards); + BCE_PRINT_32BIT_STAT(stat_CatchupInMBUFDiscards); + BCE_PRINT_32BIT_STAT(stat_CatchupInRuleCheckerP4Hit); + + BCE_PRINTF( + "----------------------------" + "----------------" + "----------------------------\n"); +} + + +/****************************************************************************/ +/* Prints out a summary of the driver state. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_dump_driver_state(struct bce_softc *sc) +{ + u32 val_hi, val_lo; + + BCE_PRINTF( + "-----------------------------" + " Driver State " + "-----------------------------\n"); + + val_hi = BCE_ADDR_HI(sc); + val_lo = BCE_ADDR_LO(sc); + BCE_PRINTF("0x%08X:%08X - (sc) driver softc structure virtual " + "address\n", val_hi, val_lo); + + val_hi = BCE_ADDR_HI(sc->bce_vhandle); + val_lo = BCE_ADDR_LO(sc->bce_vhandle); + BCE_PRINTF("0x%08X:%08X - (sc->bce_vhandle) PCI BAR virtual " + "address\n", val_hi, val_lo); + + val_hi = BCE_ADDR_HI(sc->status_block); + val_lo = BCE_ADDR_LO(sc->status_block); + BCE_PRINTF("0x%08X:%08X - (sc->status_block) status block " + "virtual address\n", val_hi, val_lo); + + val_hi = BCE_ADDR_HI(sc->stats_block); + val_lo = BCE_ADDR_LO(sc->stats_block); + BCE_PRINTF("0x%08X:%08X - (sc->stats_block) statistics block " + "virtual address\n", val_hi, val_lo); + + val_hi = BCE_ADDR_HI(sc->tx_bd_chain); + val_lo = BCE_ADDR_LO(sc->tx_bd_chain); + BCE_PRINTF("0x%08X:%08X - (sc->tx_bd_chain) tx_bd chain " + "virtual adddress\n", val_hi, val_lo); + + val_hi = BCE_ADDR_HI(sc->rx_bd_chain); + val_lo = BCE_ADDR_LO(sc->rx_bd_chain); + BCE_PRINTF("0x%08X:%08X - (sc->rx_bd_chain) rx_bd chain " + "virtual address\n", val_hi, val_lo); + +#ifdef BCE_JUMBO_HDRSPLIT + val_hi = BCE_ADDR_HI(sc->pg_bd_chain); + val_lo = BCE_ADDR_LO(sc->pg_bd_chain); + BCE_PRINTF("0x%08X:%08X - (sc->pg_bd_chain) page chain " + "virtual address\n", val_hi, val_lo); +#endif + + val_hi = BCE_ADDR_HI(sc->tx_mbuf_ptr); + val_lo = BCE_ADDR_LO(sc->tx_mbuf_ptr); + BCE_PRINTF("0x%08X:%08X - (sc->tx_mbuf_ptr) tx mbuf chain " + "virtual address\n", val_hi, val_lo); + + val_hi = BCE_ADDR_HI(sc->rx_mbuf_ptr); + val_lo = BCE_ADDR_LO(sc->rx_mbuf_ptr); + BCE_PRINTF("0x%08X:%08X - (sc->rx_mbuf_ptr) rx mbuf chain " + "virtual address\n", val_hi, val_lo); + +#ifdef BCE_JUMBO_HDRSPLIT + val_hi = BCE_ADDR_HI(sc->pg_mbuf_ptr); + val_lo = BCE_ADDR_LO(sc->pg_mbuf_ptr); + BCE_PRINTF("0x%08X:%08X - (sc->pg_mbuf_ptr) page mbuf chain " + "virtual address\n", val_hi, val_lo); +#endif + + BCE_PRINTF(" 0x%08X - (sc->interrupts_generated) " + "h/w intrs\n", sc->interrupts_generated); + + BCE_PRINTF(" 0x%08X - (sc->interrupts_rx) " + "rx interrupts handled\n", sc->interrupts_rx); + + BCE_PRINTF(" 0x%08X - (sc->interrupts_tx) " + "tx interrupts handled\n", sc->interrupts_tx); + + BCE_PRINTF(" 0x%08X - (sc->phy_interrupts) " + "phy interrupts handled\n", sc->phy_interrupts); + + BCE_PRINTF(" 0x%08X - (sc->last_status_idx) " + "status block index\n", sc->last_status_idx); + + BCE_PRINTF(" 0x%04X(0x%04X) - (sc->tx_prod) tx producer " + "index\n", sc->tx_prod, (u16) TX_CHAIN_IDX(sc->tx_prod)); + + BCE_PRINTF(" 0x%04X(0x%04X) - (sc->tx_cons) tx consumer " + "index\n", sc->tx_cons, (u16) TX_CHAIN_IDX(sc->tx_cons)); + + BCE_PRINTF(" 0x%08X - (sc->tx_prod_bseq) tx producer " + "byte seq index\n", sc->tx_prod_bseq); + + BCE_PRINTF(" 0x%08X - (sc->debug_tx_mbuf_alloc) tx " + "mbufs allocated\n", sc->debug_tx_mbuf_alloc); + + BCE_PRINTF(" 0x%08X - (sc->used_tx_bd) used " + "tx_bd's\n", sc->used_tx_bd); + + BCE_PRINTF("0x%08X/%08X - (sc->tx_hi_watermark) tx hi " + "watermark\n", sc->tx_hi_watermark, sc->max_tx_bd); + + BCE_PRINTF(" 0x%04X(0x%04X) - (sc->rx_prod) rx producer " + "index\n", sc->rx_prod, (u16) RX_CHAIN_IDX(sc->rx_prod)); + + BCE_PRINTF(" 0x%04X(0x%04X) - (sc->rx_cons) rx consumer " + "index\n", sc->rx_cons, (u16) RX_CHAIN_IDX(sc->rx_cons)); + + BCE_PRINTF(" 0x%08X - (sc->rx_prod_bseq) rx producer " + "byte seq index\n", sc->rx_prod_bseq); + + BCE_PRINTF(" 0x%08X - (sc->debug_rx_mbuf_alloc) rx " + "mbufs allocated\n", sc->debug_rx_mbuf_alloc); + + BCE_PRINTF(" 0x%08X - (sc->free_rx_bd) free " + "rx_bd's\n", sc->free_rx_bd); + +#ifdef BCE_JUMBO_HDRSPLIT + BCE_PRINTF(" 0x%04X(0x%04X) - (sc->pg_prod) page producer " + "index\n", sc->pg_prod, (u16) PG_CHAIN_IDX(sc->pg_prod)); + + BCE_PRINTF(" 0x%04X(0x%04X) - (sc->pg_cons) page consumer " + "index\n", sc->pg_cons, (u16) PG_CHAIN_IDX(sc->pg_cons)); + + BCE_PRINTF(" 0x%08X - (sc->debug_pg_mbuf_alloc) page " + "mbufs allocated\n", sc->debug_pg_mbuf_alloc); + + BCE_PRINTF(" 0x%08X - (sc->free_pg_bd) free page " + "rx_bd's\n", sc->free_pg_bd); + + BCE_PRINTF("0x%08X/%08X - (sc->pg_low_watermark) page low " + "watermark\n", sc->pg_low_watermark, sc->max_pg_bd); +#endif + + BCE_PRINTF(" 0x%08X - (sc->mbuf_alloc_failed_count) " + "mbuf alloc failures\n", sc->mbuf_alloc_failed_count); + + BCE_PRINTF(" 0x%08X - (sc->bce_flags) " + "bce mac flags\n", sc->bce_flags); + + BCE_PRINTF(" 0x%08X - (sc->bce_phy_flags) " + "bce phy flags\n", sc->bce_phy_flags); + + BCE_PRINTF( + "----------------------------" + "----------------" + "----------------------------\n"); +} + + +/****************************************************************************/ +/* Prints out the hardware state through a summary of important register, */ +/* followed by a complete register dump. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_dump_hw_state(struct bce_softc *sc) +{ + u32 val; + + BCE_PRINTF( + "----------------------------" + " Hardware State " + "----------------------------\n"); + + BCE_PRINTF("%s - bootcode version\n", sc->bce_bc_ver); + + val = REG_RD(sc, BCE_MISC_ENABLE_STATUS_BITS); + BCE_PRINTF("0x%08X - (0x%06X) misc_enable_status_bits\n", + val, BCE_MISC_ENABLE_STATUS_BITS); + + val = REG_RD(sc, BCE_DMA_STATUS); + BCE_PRINTF("0x%08X - (0x%06X) dma_status\n", + val, BCE_DMA_STATUS); + + val = REG_RD(sc, BCE_CTX_STATUS); + BCE_PRINTF("0x%08X - (0x%06X) ctx_status\n", + val, BCE_CTX_STATUS); + + val = REG_RD(sc, BCE_EMAC_STATUS); + BCE_PRINTF("0x%08X - (0x%06X) emac_status\n", + val, BCE_EMAC_STATUS); + + val = REG_RD(sc, BCE_RPM_STATUS); + BCE_PRINTF("0x%08X - (0x%06X) rpm_status\n", + val, BCE_RPM_STATUS); + + /* ToDo: Create a #define for this constant. */ + val = REG_RD(sc, 0x2004); + BCE_PRINTF("0x%08X - (0x%06X) rlup_status\n", + val, 0x2004); + + val = REG_RD(sc, BCE_RV2P_STATUS); + BCE_PRINTF("0x%08X - (0x%06X) rv2p_status\n", + val, BCE_RV2P_STATUS); + + /* ToDo: Create a #define for this constant. */ + val = REG_RD(sc, 0x2c04); + BCE_PRINTF("0x%08X - (0x%06X) rdma_status\n", + val, 0x2c04); + + val = REG_RD(sc, BCE_TBDR_STATUS); + BCE_PRINTF("0x%08X - (0x%06X) tbdr_status\n", + val, BCE_TBDR_STATUS); + + val = REG_RD(sc, BCE_TDMA_STATUS); + BCE_PRINTF("0x%08X - (0x%06X) tdma_status\n", + val, BCE_TDMA_STATUS); + + val = REG_RD(sc, BCE_HC_STATUS); + BCE_PRINTF("0x%08X - (0x%06X) hc_status\n", + val, BCE_HC_STATUS); + + val = REG_RD_IND(sc, BCE_TXP_CPU_STATE); + BCE_PRINTF("0x%08X - (0x%06X) txp_cpu_state\n", + val, BCE_TXP_CPU_STATE); + + val = REG_RD_IND(sc, BCE_TPAT_CPU_STATE); + BCE_PRINTF("0x%08X - (0x%06X) tpat_cpu_state\n", + val, BCE_TPAT_CPU_STATE); + + val = REG_RD_IND(sc, BCE_RXP_CPU_STATE); + BCE_PRINTF("0x%08X - (0x%06X) rxp_cpu_state\n", + val, BCE_RXP_CPU_STATE); + + val = REG_RD_IND(sc, BCE_COM_CPU_STATE); + BCE_PRINTF("0x%08X - (0x%06X) com_cpu_state\n", + val, BCE_COM_CPU_STATE); + + val = REG_RD_IND(sc, BCE_MCP_CPU_STATE); + BCE_PRINTF("0x%08X - (0x%06X) mcp_cpu_state\n", + val, BCE_MCP_CPU_STATE); + + val = REG_RD_IND(sc, BCE_CP_CPU_STATE); + BCE_PRINTF("0x%08X - (0x%06X) cp_cpu_state\n", + val, BCE_CP_CPU_STATE); + + BCE_PRINTF( + "----------------------------" + "----------------" + "----------------------------\n"); + + BCE_PRINTF( + "----------------------------" + " Register Dump " + "----------------------------\n"); + + for (int i = 0x400; i < 0x8000; i += 0x10) { + BCE_PRINTF("0x%04X: 0x%08X 0x%08X 0x%08X 0x%08X\n", + i, REG_RD(sc, i), REG_RD(sc, i + 0x4), + REG_RD(sc, i + 0x8), REG_RD(sc, i + 0xC)); + } + + BCE_PRINTF( + "----------------------------" + "----------------" + "----------------------------\n"); +} + + +/****************************************************************************/ +/* Prints out the mailbox queue registers. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_dump_mq_regs(struct bce_softc *sc) +{ + BCE_PRINTF( + "----------------------------" + " MQ Regs " + "----------------------------\n"); + + BCE_PRINTF( + "----------------------------" + "----------------" + "----------------------------\n"); + + for (int i = 0x3c00; i < 0x4000; i += 0x10) { + BCE_PRINTF("0x%04X: 0x%08X 0x%08X 0x%08X 0x%08X\n", + i, REG_RD(sc, i), REG_RD(sc, i + 0x4), + REG_RD(sc, i + 0x8), REG_RD(sc, i + 0xC)); + } + + BCE_PRINTF( + "----------------------------" + "----------------" + "----------------------------\n"); +} + + +/****************************************************************************/ +/* Prints out the bootcode state. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_dump_bc_state(struct bce_softc *sc) +{ + u32 val; + + BCE_PRINTF( + "----------------------------" + " Bootcode State " + "----------------------------\n"); + + BCE_PRINTF("%s - bootcode version\n", sc->bce_bc_ver); + + val = bce_shmem_rd(sc, BCE_BC_RESET_TYPE); + BCE_PRINTF("0x%08X - (0x%06X) reset_type\n", + val, BCE_BC_RESET_TYPE); + + val = bce_shmem_rd(sc, BCE_BC_STATE); + BCE_PRINTF("0x%08X - (0x%06X) state\n", + val, BCE_BC_STATE); + + val = bce_shmem_rd(sc, BCE_BC_STATE_CONDITION); + BCE_PRINTF("0x%08X - (0x%06X) condition\n", + val, BCE_BC_STATE_CONDITION); + + val = bce_shmem_rd(sc, BCE_BC_STATE_DEBUG_CMD); + BCE_PRINTF("0x%08X - (0x%06X) debug_cmd\n", + val, BCE_BC_STATE_DEBUG_CMD); + + BCE_PRINTF( + "----------------------------" + "----------------" + "----------------------------\n"); +} + + +/****************************************************************************/ +/* Prints out the TXP processor state. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_dump_txp_state(struct bce_softc *sc, int regs) +{ + u32 val; + u32 fw_version[3]; + + BCE_PRINTF( + "----------------------------" + " TXP State " + "----------------------------\n"); + + for (int i = 0; i < 3; i++) + fw_version[i] = htonl(REG_RD_IND(sc, + (BCE_TXP_SCRATCH + 0x10 + i * 4))); + BCE_PRINTF("Firmware version - %s\n", (char *) fw_version); + + val = REG_RD_IND(sc, BCE_TXP_CPU_MODE); + BCE_PRINTF("0x%08X - (0x%06X) txp_cpu_mode\n", + val, BCE_TXP_CPU_MODE); + + val = REG_RD_IND(sc, BCE_TXP_CPU_STATE); + BCE_PRINTF("0x%08X - (0x%06X) txp_cpu_state\n", + val, BCE_TXP_CPU_STATE); + + val = REG_RD_IND(sc, BCE_TXP_CPU_EVENT_MASK); + BCE_PRINTF("0x%08X - (0x%06X) txp_cpu_event_mask\n", + val, BCE_TXP_CPU_EVENT_MASK); + + if (regs) { + BCE_PRINTF( + "----------------------------" + " Register Dump " + "----------------------------\n"); + + for (int i = BCE_TXP_CPU_MODE; i < 0x68000; i += 0x10) { + /* Skip the big blank spaces */ + if (i < 0x454000 && i > 0x5ffff) + BCE_PRINTF("0x%04X: 0x%08X 0x%08X " + "0x%08X 0x%08X\n", i, + REG_RD_IND(sc, i), + REG_RD_IND(sc, i + 0x4), + REG_RD_IND(sc, i + 0x8), + REG_RD_IND(sc, i + 0xC)); + } + } + + BCE_PRINTF( + "----------------------------" + "----------------" + "----------------------------\n"); +} + + +/****************************************************************************/ +/* Prints out the RXP processor state. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_dump_rxp_state(struct bce_softc *sc, int regs) +{ + u32 val; + u32 fw_version[3]; + + BCE_PRINTF( + "----------------------------" + " RXP State " + "----------------------------\n"); + + for (int i = 0; i < 3; i++) + fw_version[i] = htonl(REG_RD_IND(sc, + (BCE_RXP_SCRATCH + 0x10 + i * 4))); + + BCE_PRINTF("Firmware version - %s\n", (char *) fw_version); + + val = REG_RD_IND(sc, BCE_RXP_CPU_MODE); + BCE_PRINTF("0x%08X - (0x%06X) rxp_cpu_mode\n", + val, BCE_RXP_CPU_MODE); + + val = REG_RD_IND(sc, BCE_RXP_CPU_STATE); + BCE_PRINTF("0x%08X - (0x%06X) rxp_cpu_state\n", + val, BCE_RXP_CPU_STATE); + + val = REG_RD_IND(sc, BCE_RXP_CPU_EVENT_MASK); + BCE_PRINTF("0x%08X - (0x%06X) rxp_cpu_event_mask\n", + val, BCE_RXP_CPU_EVENT_MASK); + + if (regs) { + BCE_PRINTF( + "----------------------------" + " Register Dump " + "----------------------------\n"); + + for (int i = BCE_RXP_CPU_MODE; i < 0xe8fff; i += 0x10) { + /* Skip the big blank sapces */ + if (i < 0xc5400 && i > 0xdffff) + BCE_PRINTF("0x%04X: 0x%08X 0x%08X " + "0x%08X 0x%08X\n", i, + REG_RD_IND(sc, i), + REG_RD_IND(sc, i + 0x4), + REG_RD_IND(sc, i + 0x8), + REG_RD_IND(sc, i + 0xC)); + } + } + + BCE_PRINTF( + "----------------------------" + "----------------" + "----------------------------\n"); +} + + +/****************************************************************************/ +/* Prints out the TPAT processor state. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_dump_tpat_state(struct bce_softc *sc, int regs) +{ + u32 val; + u32 fw_version[3]; + + BCE_PRINTF( + "----------------------------" + " TPAT State " + "----------------------------\n"); + + for (int i = 0; i < 3; i++) + fw_version[i] = htonl(REG_RD_IND(sc, + (BCE_TPAT_SCRATCH + 0x410 + i * 4))); + + BCE_PRINTF("Firmware version - %s\n", (char *) fw_version); + + val = REG_RD_IND(sc, BCE_TPAT_CPU_MODE); + BCE_PRINTF("0x%08X - (0x%06X) tpat_cpu_mode\n", + val, BCE_TPAT_CPU_MODE); + + val = REG_RD_IND(sc, BCE_TPAT_CPU_STATE); + BCE_PRINTF("0x%08X - (0x%06X) tpat_cpu_state\n", + val, BCE_TPAT_CPU_STATE); + + val = REG_RD_IND(sc, BCE_TPAT_CPU_EVENT_MASK); + BCE_PRINTF("0x%08X - (0x%06X) tpat_cpu_event_mask\n", + val, BCE_TPAT_CPU_EVENT_MASK); + + if (regs) { + BCE_PRINTF( + "----------------------------" + " Register Dump " + "----------------------------\n"); + + for (int i = BCE_TPAT_CPU_MODE; i < 0xa3fff; i += 0x10) { + /* Skip the big blank spaces */ + if (i < 0x854000 && i > 0x9ffff) + BCE_PRINTF("0x%04X: 0x%08X 0x%08X " + "0x%08X 0x%08X\n", i, + REG_RD_IND(sc, i), + REG_RD_IND(sc, i + 0x4), + REG_RD_IND(sc, i + 0x8), + REG_RD_IND(sc, i + 0xC)); + } + } + + BCE_PRINTF( + "----------------------------" + "----------------" + "----------------------------\n"); +} + + +/****************************************************************************/ +/* Prints out the Command Procesor (CP) state. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_dump_cp_state(struct bce_softc *sc, int regs) +{ + u32 val; + u32 fw_version[3]; + + BCE_PRINTF( + "----------------------------" + " CP State " + "----------------------------\n"); + + for (int i = 0; i < 3; i++) + fw_version[i] = htonl(REG_RD_IND(sc, + (BCE_CP_SCRATCH + 0x10 + i * 4))); + + BCE_PRINTF("Firmware version - %s\n", (char *) fw_version); + + val = REG_RD_IND(sc, BCE_CP_CPU_MODE); + BCE_PRINTF("0x%08X - (0x%06X) cp_cpu_mode\n", + val, BCE_CP_CPU_MODE); + + val = REG_RD_IND(sc, BCE_CP_CPU_STATE); + BCE_PRINTF("0x%08X - (0x%06X) cp_cpu_state\n", + val, BCE_CP_CPU_STATE); + + val = REG_RD_IND(sc, BCE_CP_CPU_EVENT_MASK); + BCE_PRINTF("0x%08X - (0x%06X) cp_cpu_event_mask\n", val, + BCE_CP_CPU_EVENT_MASK); + + if (regs) { + BCE_PRINTF( + "----------------------------" + " Register Dump " + "----------------------------\n"); + + for (int i = BCE_CP_CPU_MODE; i < 0x1aa000; i += 0x10) { + /* Skip the big blank spaces */ + if (i < 0x185400 && i > 0x19ffff) + BCE_PRINTF("0x%04X: 0x%08X 0x%08X " + "0x%08X 0x%08X\n", i, + REG_RD_IND(sc, i), + REG_RD_IND(sc, i + 0x4), + REG_RD_IND(sc, i + 0x8), + REG_RD_IND(sc, i + 0xC)); + } + } + + BCE_PRINTF( + "----------------------------" + "----------------" + "----------------------------\n"); +} + + +/****************************************************************************/ +/* Prints out the Completion Procesor (COM) state. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_dump_com_state(struct bce_softc *sc, int regs) +{ + u32 val; + u32 fw_version[4]; + + BCE_PRINTF( + "----------------------------" + " COM State " + "----------------------------\n"); + + for (int i = 0; i < 3; i++) + fw_version[i] = htonl(REG_RD_IND(sc, + (BCE_COM_SCRATCH + 0x10 + i * 4))); + + BCE_PRINTF("Firmware version - %s\n", (char *) fw_version); + + val = REG_RD_IND(sc, BCE_COM_CPU_MODE); + BCE_PRINTF("0x%08X - (0x%06X) com_cpu_mode\n", + val, BCE_COM_CPU_MODE); + + val = REG_RD_IND(sc, BCE_COM_CPU_STATE); + BCE_PRINTF("0x%08X - (0x%06X) com_cpu_state\n", + val, BCE_COM_CPU_STATE); + + val = REG_RD_IND(sc, BCE_COM_CPU_EVENT_MASK); + BCE_PRINTF("0x%08X - (0x%06X) com_cpu_event_mask\n", val, + BCE_COM_CPU_EVENT_MASK); + + if (regs) { + BCE_PRINTF( + "----------------------------" + " Register Dump " + "----------------------------\n"); + + for (int i = BCE_COM_CPU_MODE; i < 0x1053e8; i += 0x10) { + BCE_PRINTF("0x%04X: 0x%08X 0x%08X " + "0x%08X 0x%08X\n", i, + REG_RD_IND(sc, i), + REG_RD_IND(sc, i + 0x4), + REG_RD_IND(sc, i + 0x8), + REG_RD_IND(sc, i + 0xC)); + } + } + + BCE_PRINTF( + "----------------------------" + "----------------" + "----------------------------\n"); +} + + +/****************************************************************************/ +/* Prints out the Receive Virtual 2 Physical (RV2P) state. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_dump_rv2p_state(struct bce_softc *sc) +{ + u32 val, pc1, pc2, fw_ver_high, fw_ver_low; + + BCE_PRINTF( + "----------------------------" + " RV2P State " + "----------------------------\n"); + + /* Stall the RV2P processors. */ + val = REG_RD_IND(sc, BCE_RV2P_CONFIG); + val |= BCE_RV2P_CONFIG_STALL_PROC1 | BCE_RV2P_CONFIG_STALL_PROC2; + REG_WR_IND(sc, BCE_RV2P_CONFIG, val); + + /* Read the firmware version. */ + val = 0x00000001; + REG_WR_IND(sc, BCE_RV2P_PROC1_ADDR_CMD, val); + fw_ver_low = REG_RD_IND(sc, BCE_RV2P_INSTR_LOW); + fw_ver_high = REG_RD_IND(sc, BCE_RV2P_INSTR_HIGH) & + BCE_RV2P_INSTR_HIGH_HIGH; + BCE_PRINTF("RV2P1 Firmware version - 0x%08X:0x%08X\n", + fw_ver_high, fw_ver_low); + + val = 0x00000001; + REG_WR_IND(sc, BCE_RV2P_PROC2_ADDR_CMD, val); + fw_ver_low = REG_RD_IND(sc, BCE_RV2P_INSTR_LOW); + fw_ver_high = REG_RD_IND(sc, BCE_RV2P_INSTR_HIGH) & + BCE_RV2P_INSTR_HIGH_HIGH; + BCE_PRINTF("RV2P2 Firmware version - 0x%08X:0x%08X\n", + fw_ver_high, fw_ver_low); + + /* Resume the RV2P processors. */ + val = REG_RD_IND(sc, BCE_RV2P_CONFIG); + val &= ~(BCE_RV2P_CONFIG_STALL_PROC1 | BCE_RV2P_CONFIG_STALL_PROC2); + REG_WR_IND(sc, BCE_RV2P_CONFIG, val); + + /* Fetch the program counter value. */ + val = 0x68007800; + REG_WR_IND(sc, BCE_RV2P_DEBUG_VECT_PEEK, val); + val = REG_RD_IND(sc, BCE_RV2P_DEBUG_VECT_PEEK); + pc1 = (val & BCE_RV2P_DEBUG_VECT_PEEK_1_VALUE); + pc2 = (val & BCE_RV2P_DEBUG_VECT_PEEK_2_VALUE) >> 16; + BCE_PRINTF("0x%08X - RV2P1 program counter (1st read)\n", pc1); + BCE_PRINTF("0x%08X - RV2P2 program counter (1st read)\n", pc2); + + /* Fetch the program counter value again to see if it is advancing. */ + val = 0x68007800; + REG_WR_IND(sc, BCE_RV2P_DEBUG_VECT_PEEK, val); + val = REG_RD_IND(sc, BCE_RV2P_DEBUG_VECT_PEEK); + pc1 = (val & BCE_RV2P_DEBUG_VECT_PEEK_1_VALUE); + pc2 = (val & BCE_RV2P_DEBUG_VECT_PEEK_2_VALUE) >> 16; + BCE_PRINTF("0x%08X - RV2P1 program counter (2nd read)\n", pc1); + BCE_PRINTF("0x%08X - RV2P2 program counter (2nd read)\n", pc2); + + BCE_PRINTF( + "----------------------------" + "----------------" + "----------------------------\n"); +} + + +/****************************************************************************/ +/* Prints out the driver state and then enters the debugger. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_breakpoint(struct bce_softc *sc) +{ + + /* + * Unreachable code to silence compiler warnings + * about unused functions. + */ + if (0) { + bce_freeze_controller(sc); + bce_unfreeze_controller(sc); + bce_dump_enet(sc, NULL); + bce_dump_txbd(sc, 0, NULL); + bce_dump_rxbd(sc, 0, NULL); + bce_dump_tx_mbuf_chain(sc, 0, USABLE_TX_BD); + bce_dump_rx_mbuf_chain(sc, 0, USABLE_RX_BD); + bce_dump_l2fhdr(sc, 0, NULL); + bce_dump_ctx(sc, RX_CID); + bce_dump_ftqs(sc); + bce_dump_tx_chain(sc, 0, USABLE_TX_BD); + bce_dump_rx_bd_chain(sc, 0, USABLE_RX_BD); + bce_dump_status_block(sc); + bce_dump_stats_block(sc); + bce_dump_driver_state(sc); + bce_dump_hw_state(sc); + bce_dump_bc_state(sc); + bce_dump_txp_state(sc, 0); + bce_dump_rxp_state(sc, 0); + bce_dump_tpat_state(sc, 0); + bce_dump_cp_state(sc, 0); + bce_dump_com_state(sc, 0); + bce_dump_rv2p_state(sc); + +#ifdef BCE_JUMBO_HDRSPLIT + bce_dump_pgbd(sc, 0, NULL); + bce_dump_pg_mbuf_chain(sc, 0, USABLE_PG_BD); + bce_dump_pg_chain(sc, 0, USABLE_PG_BD); +#endif + } + + bce_dump_status_block(sc); + bce_dump_driver_state(sc); + + /* Call the debugger. */ + breakpoint(); + + return; +} +#endif + diff --git a/freebsd/sys/dev/bce/if_bcefw.h b/freebsd/sys/dev/bce/if_bcefw.h new file mode 100644 index 00000000..c41ff10a --- /dev/null +++ b/freebsd/sys/dev/bce/if_bcefw.h @@ -0,0 +1,14594 @@ +/*- + * Copyright (c) 2006-2010 Broadcom Corporation + * David Christensen <davidch@broadcom.com>. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * 3. Neither the name of Broadcom Corporation nor the name of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written consent. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * This file contains firmware data derived from proprietary unpublished + * source code, Copyright (c) 2004, 2005, 2007, 2008 Broadcom Corporation. + * + * Permission is hereby granted for the distribution of this firmware data + * in hexadecimal or equivalent format, provided this copyright notice is + * accompanying it. + */ + +/* Firmware release 4.6.17 for BCM5706 and BCM5708 (b06). */ +/* Firmware release 4.6.16 for BCM5709 and BCM5716 (b09). */ +int bce_COM_b06FwReleaseMajor = 0x1; +int bce_COM_b06FwReleaseMinor = 0x0; +int bce_COM_b06FwReleaseFix = 0x0; +u32 bce_COM_b06FwStartAddr = 0x080000f8; +u32 bce_COM_b06FwTextAddr = 0x08000000; +int bce_COM_b06FwTextLen = 0x4df0; +u32 bce_COM_b06FwDataAddr = 0x00000000; +int bce_COM_b06FwDataLen = 0x0; +u32 bce_COM_b06FwRodataAddr = 0x08004df0; +int bce_COM_b06FwRodataLen = 0x14; +u32 bce_COM_b06FwBssAddr = 0x08004e58; +int bce_COM_b06FwBssLen = 0xbc; +u32 bce_COM_b06FwSbssAddr = 0x08004e20; +int bce_COM_b06FwSbssLen = 0x38; +u32 bce_COM_b06FwSDataAddr = 0x00000000; +int bce_COM_b06FwSDataLen = 0x0; +u32 bce_COM_b06FwText[(0x4df0/4) + 1] = { +0xa00003e, 0x0, 0x0, +0xd, 0x636f6d34, 0x2e362e31, 0x37000000, +0x4061102, 0x0, 0x3, 0x14, +0x32, 0x3, 0x0, 0x0, +0x0, 0x0, 0x0, 0x10, +0x136, 0xea60, 0x1, 0x0, +0x0, 0x0, 0x8, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x2, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x10, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x10000003, 0x0, 0xd, 0xd, +0x3c020800, 0x24424e20, 0x3c030800, 0x24634f14, +0xac400000, 0x43202b, 0x1480fffd, 0x24420004, +0x3c1d0800, 0x37bd7ffc, 0x3a0f021, 0x3c100800, +0x261000f8, 0x3c1c0800, 0x279c4e20, 0xe0002bd, +0x0, 0xd, 0x3c036010, 0x8c645000, +0x2402ff7f, 0x3c1a8000, 0x822024, 0x3484380c, +0x24020037, 0xac645000, 0xaf420008, 0x24020c80, +0xaf420024, 0x3c1b8008, 0x3c060800, 0x24c607e8, +0x3c020800, 0x24424e58, 0x2404001b, 0x2484ffff, +0xac460000, 0x481fffd, 0x24420004, 0x3c020800, +0x24420380, 0x3c010800, 0xac224e60, 0x3c020800, +0x24420680, 0x3c010800, 0xac224e64, 0x3c020800, +0x24420dcc, 0x3c010800, 0xac224ea0, 0x3c020800, +0x24420a5c, 0x3c030800, 0x24630954, 0x3c040800, +0x24840990, 0x3c050800, 0x24a53c70, 0x3c010800, +0xac224ea8, 0x3c020800, 0x24420570, 0x3c010800, +0xac264ea4, 0x3c010800, 0xac254eb4, 0x3c010800, +0xac234ebc, 0x3c010800, 0xac224ec0, 0x3c010800, +0xac244ec4, 0x3c010800, 0xac234e5c, 0x3c010800, +0xac204e68, 0x3c010800, 0xac204e6c, 0x3c010800, +0xac204e70, 0x3c010800, 0xac204e74, 0x3c010800, +0xac204e78, 0x3c010800, 0xac204e7c, 0x3c010800, +0xac204e80, 0x3c010800, 0xac244e84, 0x3c010800, +0xac204e88, 0x3c010800, 0xac204e8c, 0x3c010800, +0xac204e90, 0x3c010800, 0xac204e94, 0x3c010800, +0xac204e98, 0x3c010800, 0xac264e9c, 0x3c010800, +0xac204eac, 0x3c010800, 0xac254eb0, 0x3c010800, +0xac234eb8, 0xa000707, 0x0, 0x3c030800, +0x8c630020, 0x8f820008, 0x10430003, 0x0, +0xa00053f, 0xaf830008, 0x3e00008, 0x0, +0x27bdffe8, 0xafb00010, 0xafbf0014, 0x27500100, +0x92020009, 0x1040001a, 0x24030001, 0x3c020800, +0x8c420020, 0x10400016, 0x1821, 0xe000577, +0x0, 0x96030008, 0x3c060800, 0x94c64ed6, +0x8e040018, 0x8f820020, 0x9605000c, 0x31c00, +0x661825, 0xac440000, 0xac450004, 0x24040001, +0xac400008, 0xac40000c, 0xac400010, 0xac400014, +0xac400018, 0xe00059c, 0xac43001c, 0x1821, +0x8fbf0014, 0x8fb00010, 0x601021, 0x3e00008, +0x27bd0018, 0x27bdffe8, 0xafbf0010, 0x97420108, +0x30437000, 0x24022000, 0x1062000a, 0x28642001, +0x54800012, 0x8fbf0010, 0x24024000, 0x10620008, +0x24026000, 0x1062000a, 0x8fbf0010, 0xa0000fb, +0x1021, 0x8fbf0010, 0xa0000bb, 0x27bd0018, +0xe000409, 0x0, 0xa0000fa, 0x8fbf0010, +0xe000fc9, 0x0, 0x8fbf0010, 0x1021, +0x3e00008, 0x27bd0018, 0x3c020800, 0x8c420020, +0x27bdffe8, 0x10400027, 0xafbf0010, 0xe000577, +0x0, 0x97420108, 0x9743010c, 0x8f850020, +0x3042003e, 0x3063ffff, 0x21400, 0x431025, +0xaca20000, 0x8f420100, 0x3c060800, 0x94c64ed6, +0x8fbf0010, 0xaca20004, 0x97430116, 0x9744010e, +0x3c022000, 0x31c00, 0x3084ffff, 0x641825, +0xaca30008, 0xc23025, 0x97420110, 0x97430112, +0x24040001, 0x21400, 0x3063ffff, 0x431025, +0xaca2000c, 0x97420114, 0x27bd0018, 0x3042ffff, +0xaca20010, 0xaca00014, 0xaca00018, 0xa00059c, +0xaca6001c, 0x8fbf0010, 0x3e00008, 0x27bd0018, +0x3c020800, 0x8c420020, 0x27bdffe8, 0x1040002a, +0xafbf0010, 0xe000577, 0x0, 0x97420108, +0x9743010c, 0x8f850020, 0x3042003e, 0x3063ffff, +0x21400, 0x431025, 0xaca20000, 0x8f420100, +0x3c060800, 0x94c64ed6, 0x8fbf0010, 0xaca20004, +0x97430116, 0x9744010e, 0x3c022000, 0x31c00, +0x3084ffff, 0x641825, 0xaca30008, 0xc23025, +0x97420110, 0x97430112, 0x24040001, 0x21400, +0x3063ffff, 0x431025, 0xaca2000c, 0x97420114, +0x27bd0018, 0x3042ffff, 0xaca20010, 0x8f420118, +0xaca20014, 0x9342010b, 0x304200ff, 0xaca20018, +0xa00059c, 0xaca6001c, 0x8fbf0010, 0x3e00008, +0x27bd0018, 0x27bdffe0, 0xafb00010, 0xafbf0018, +0xafb10014, 0x27500100, 0x9203000b, 0x2402001a, +0x96110008, 0x14620035, 0x2021, 0x32220001, +0x10400009, 0x0, 0x8e020000, 0x96030014, +0x211c2, 0x21040, 0x5a1021, 0xa4430080, +0xa000179, 0x32220002, 0xe00012b, 0x0, +0x3c020800, 0x8c420040, 0x24420001, 0x3c010800, +0xac220040, 0x32220002, 0x2202b, 0x3c020800, +0x8c420044, 0x32230004, 0x24420001, 0x3c010800, +0xac220044, 0x1060001a, 0x8fbf0018, 0x8f4202b8, +0x4410008, 0x24040001, 0x3c020800, 0x8c420060, +0x24420001, 0x3c010800, 0xac220060, 0xa00019c, +0x8fb10014, 0x8e020020, 0x96030016, 0x2021, +0xaf420280, 0x8e020004, 0xa7430284, 0xaf420288, +0x3c021000, 0xaf4202b8, 0x3c020800, 0x8c42005c, +0x24420001, 0x3c010800, 0xac22005c, 0x8fbf0018, +0x8fb10014, 0x8fb00010, 0x801021, 0x3e00008, +0x27bd0020, 0x27bdffe0, 0xafb00010, 0xafbf0018, +0xafb10014, 0x27500100, 0x9203000b, 0x24020003, +0x96110008, 0x14620048, 0x2021, 0x32220001, +0x10400008, 0x0, 0x8e020000, 0x96030014, +0x211c2, 0x21040, 0x5a1021, 0xa0001bb, +0xa4430080, 0xe0000fd, 0x0, 0x3c020800, +0x8c420040, 0x24420001, 0x3c010800, 0xac220040, +0x3c020800, 0x8c420044, 0x32230004, 0x24420001, +0x3c010800, 0xac220044, 0x1060001a, 0x32220002, +0x8f4202b8, 0x4430008, 0x8e020020, 0x3c020800, +0x8c420060, 0x24420001, 0x3c010800, 0xac220060, +0xa0001f1, 0x24040001, 0x96030016, 0x2021, +0xaf420280, 0x8e020004, 0xa7430284, 0xaf420288, +0x3c021000, 0xaf4202b8, 0x3c020800, 0x8c42005c, +0x24420001, 0x3c010800, 0xac22005c, 0xa0001f2, +0x8fbf0018, 0x10400014, 0x2021, 0x8f430104, +0x3c026020, 0xac430014, 0x8c420004, 0x240301fe, +0x304203ff, 0x1443000c, 0x2021, 0x8f420100, +0x219c2, 0x2462fffc, 0x2c420008, 0x10400003, +0x24040002, 0x2462fffd, 0x442004, 0x3c026000, +0xac446914, 0x2021, 0x8fbf0018, 0x8fb10014, +0x8fb00010, 0x801021, 0x3e00008, 0x27bd0020, +0x93620000, 0x3e00008, 0xaf800004, 0x3e00008, +0x1021, 0x27bdffe8, 0xafbf0014, 0xafb00010, +0x8f420100, 0xaf420020, 0x8f420104, 0xaf4200a8, +0x9350010b, 0xe0001f7, 0x321000ff, 0x3c020800, +0x24424e58, 0x101880, 0x2e10001c, 0x16000004, +0x621021, 0xe0001fa, 0xa000212, 0x0, +0x8c420000, 0x40f809, 0x0, 0x10400005, +0x3c024000, 0x8f430104, 0x3c026020, 0xac430014, +0x3c024000, 0xaf420138, 0x3c020800, 0x8c420034, +0x8fbf0014, 0x8fb00010, 0x24420001, 0x3c010800, +0xac220034, 0x3e00008, 0x27bd0018, 0x27bdffe8, +0xafbf0010, 0x8f420140, 0xe0001f7, 0xaf420020, +0xe000393, 0x0, 0x3c024000, 0xaf420178, +0x3c030800, 0x24630038, 0x8c620000, 0x8fbf0010, +0x27bd0018, 0x24420001, 0x3e00008, 0xac620000, +0x27bdffe8, 0xafbf0010, 0x8f420180, 0xe0001f7, +0xaf420020, 0x8f430180, 0x24020f00, 0x14620005, +0x0, 0x8f420188, 0xa742009c, 0xa00024c, +0x3c024000, 0x93620000, 0x24030050, 0x304200ff, +0x14430008, 0x3c024000, 0xe000377, 0x0, +0x14400004, 0x3c024000, 0xe000e55, 0x0, +0x3c024000, 0xaf4201b8, 0x3c020800, 0x8c42003c, +0x8fbf0010, 0x24420001, 0x3c010800, 0xac22003c, +0x3e00008, 0x27bd0018, 0x3e00008, 0x1021, +0x8f430104, 0x8f820010, 0x10430008, 0x0, +0x3c020800, 0x8c420084, 0x24420001, 0x3c010800, +0xac220084, 0x8f420104, 0xaf820010, 0x3e00008, +0x0, 0x27bdffe8, 0xafbf0010, 0x27440100, +0x94820008, 0x30430002, 0x30420004, 0x1040001b, +0x0, 0x8f4202b8, 0x4410008, 0x24050001, +0x3c020800, 0x8c420060, 0x24420001, 0x3c010800, +0xac220060, 0xa000294, 0x8fbf0010, 0x8c820020, +0x94830016, 0x2821, 0xaf420280, 0x8c820004, +0xa7430284, 0xaf420288, 0x3c021000, 0xaf4202b8, +0x3c020800, 0x8c42005c, 0x24420001, 0x3c010800, +0xac22005c, 0xa000294, 0x8fbf0010, 0x10600008, +0x24050001, 0x3c020800, 0x8c420084, 0x24420001, +0x3c010800, 0xac220084, 0xa000294, 0x8fbf0010, +0x8f440100, 0xe000257, 0x0, 0x2821, +0x8fbf0010, 0xa01021, 0x3e00008, 0x27bd0018, +0x3c020800, 0x8c420088, 0x27430100, 0x9465000c, +0x24420001, 0x3c010800, 0xac220088, 0x8c640018, +0x3451021, 0x90454000, 0xaf440038, 0x8c62001c, +0x2403fff8, 0x52e00, 0x431024, 0x34420004, +0xaf42003c, 0x3c020005, 0xaf420030, 0x0, +0x0, 0x0, 0xaf450404, 0x0, +0x0, 0x0, 0x3c020006, 0x34420001, +0xaf420030, 0x0, 0x0, 0x0, +0x8f420000, 0x30420010, 0x1040fffd, 0x1021, +0x3e00008, 0x0, 0x27bdffe0, 0xafbf0018, +0xafb10014, 0xe000055, 0xafb00010, 0x3c028000, +0x34420070, 0x8c420000, 0xaf820014, 0xe0000b2, +0x0, 0x3c028000, 0x34460070, 0x3c030800, +0x8c6300a0, 0x3c020800, 0x8c4200a4, 0x10430004, +0x8f840014, 0x3c010800, 0xac2300a4, 0xa743009e, +0x8cca0000, 0x3c030800, 0x8c6300bc, 0x3c020800, +0x8c4200b8, 0x1442023, 0x641821, 0x4021, +0x64202b, 0x481021, 0x441021, 0x3c010800, +0xac2300bc, 0x3c010800, 0xac2200b8, 0x8f510000, +0x32220007, 0x1040ffe1, 0xaf8a0014, 0x8cc60000, +0x3c050800, 0x8ca500bc, 0x3c040800, 0x8c8400b8, +0xca3023, 0xa62821, 0x1021, 0xa6302b, +0x822021, 0x862021, 0x32270001, 0x3c010800, +0xac2500bc, 0x3c010800, 0xac2400b8, 0x10e00021, +0x32220002, 0x8f420100, 0xaf420020, 0x8f420104, +0xaf4200a8, 0x9342010b, 0xe0001f7, 0x305000ff, +0x2e02001c, 0x54400004, 0x101080, 0xe0001fa, +0xa00030b, 0x0, 0x3c030800, 0x24634e58, +0x431021, 0x8c420000, 0x40f809, 0x0, +0x10400005, 0x3c024000, 0x8f430104, 0x3c026020, +0xac430014, 0x3c024000, 0xaf420138, 0x3c020800, +0x8c420034, 0x24420001, 0x3c010800, 0xac220034, +0x32220002, 0x1040000e, 0x32220004, 0x8f420140, +0xe0001f7, 0xaf420020, 0xe000393, 0x0, +0x3c024000, 0xaf420178, 0x3c020800, 0x8c420038, +0x24420001, 0x3c010800, 0xac220038, 0x32220004, +0x1040ff9b, 0x3c028000, 0x8f420180, 0xe0001f7, +0xaf420020, 0x8f430180, 0x24020f00, 0x14620005, +0x0, 0x8f420188, 0xa742009c, 0xa000340, +0x3c024000, 0x93620000, 0x24030050, 0x304200ff, +0x14430008, 0x3c024000, 0xe000377, 0x0, +0x54400004, 0x3c024000, 0xe000e55, 0x0, +0x3c024000, 0xaf4201b8, 0x3c020800, 0x8c42003c, +0x24420001, 0x3c010800, 0xac22003c, 0xa0002c3, +0x3c028000, 0x3c029000, 0x34420001, 0x822025, +0xaf440020, 0x8f420020, 0x440fffe, 0x0, +0x3e00008, 0x0, 0x3c028000, 0x34420001, +0x822025, 0x3e00008, 0xaf440020, 0x27bdffe0, +0xafb10014, 0xafb00010, 0x808821, 0xafbf0018, +0xe000348, 0x30b000ff, 0x9362007d, 0x2202021, +0x2028025, 0xa370007d, 0x8f700074, 0x3c028000, +0xe000351, 0x2028024, 0x16000009, 0x8fbf0018, +0x8f4201f8, 0x440fffe, 0x24020002, 0xaf5101c0, +0xa34201c4, 0x3c021000, 0xaf4201f8, 0x8fbf0018, +0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, +0x27bdffd0, 0x1021, 0x3e00008, 0x27bd0030, +0x27bdffe8, 0xafbf0010, 0x97420184, 0x30420200, +0x10400005, 0x2021, 0xe00108c, 0x0, +0xa00038b, 0x24040001, 0x8f420188, 0x4400009, +0x8fbf0010, 0x8f420188, 0x3c03ff00, 0x431024, +0x3c030400, 0x14430003, 0x24040001, 0x9362003e, +0x8fbf0010, 0x801021, 0x3e00008, 0x27bd0018, +0xa3600022, 0x8f440140, 0xa000356, 0x24050001, +0x27bdffe8, 0xafbf0014, 0xafb00010, 0x93620000, +0x24030020, 0x304200ff, 0x1043000b, 0x0, +0x93620000, 0x24030030, 0x304200ff, 0x10430006, +0x0, 0x93620000, 0x24030050, 0x304200ff, +0x14430062, 0x8fbf0014, 0x93420148, 0x304200ff, +0x2443ffff, 0x2c620005, 0x1040005c, 0x8fbf0014, +0x31080, 0x3c030800, 0x24634df0, 0x431021, +0x8c420000, 0x400008, 0x0, 0xe000348, +0x8f440140, 0x8f70000c, 0x8f420144, 0x16020002, +0x24020001, 0xaf62000c, 0xe000351, 0x8f440140, +0x8f420144, 0x14500004, 0x8fbf0014, 0x8fb00010, +0xa001000, 0x27bd0018, 0x8f62000c, 0xa0003ff, +0x0, 0x97620010, 0x8f430144, 0x3042ffff, +0x14620009, 0x0, 0x24020001, 0xa7620010, +0x8f420140, 0xaf420200, 0x3c021000, 0xaf420238, +0xa000406, 0x8fbf0014, 0x97620010, 0xa0003ff, +0x0, 0xe000348, 0x8f440140, 0x97620012, +0x8f430144, 0x3050ffff, 0x16030002, 0x24020001, +0xa7620012, 0xe000351, 0x8f440140, 0x8f420144, +0x16020004, 0x8fbf0014, 0x8fb00010, 0xa00038f, +0x27bd0018, 0x97620012, 0xa0003ff, 0x0, +0x97620014, 0x8f430144, 0x3042ffff, 0x14620006, +0x8fbf0014, 0x24020001, 0x8fb00010, 0xa7620014, +0xa00132c, 0x27bd0018, 0x97620014, 0xa0003ff, +0x0, 0x97620016, 0x8f430144, 0x3042ffff, +0x14620006, 0x24020001, 0x8fbf0014, 0x8fb00010, +0xa7620016, 0xa000bf3, 0x27bd0018, 0x97620016, +0x14400006, 0x8fbf0014, 0x3c020800, 0x8c420070, +0x24420001, 0x3c010800, 0xac220070, 0x8fb00010, +0x3e00008, 0x27bd0018, 0x27bdffe8, 0xafbf0014, +0xafb00010, 0x93430109, 0x2402001f, 0x8f500100, +0x106200a5, 0x28620020, 0x10400018, 0x24020038, +0x2862000a, 0x1040000c, 0x2402000b, 0x28620008, +0x1040002c, 0x0, 0x46000e7, 0x28620002, +0x14400028, 0x24020006, 0x10620026, 0x8fbf0014, +0xa000503, 0x8fb00010, 0x1062005e, 0x2862000b, +0x144000de, 0x8fbf0014, 0x2402000e, 0x10620073, +0x8fb00010, 0xa000503, 0x0, 0x106200c2, +0x28620039, 0x1040000a, 0x24020080, 0x24020036, +0x106200cc, 0x28620037, 0x104000b6, 0x24020035, +0x106200c3, 0x8fbf0014, 0xa000503, 0x8fb00010, +0x1062002b, 0x28620081, 0x10400006, 0x240200c8, +0x24020039, 0x106200b6, 0x8fbf0014, 0xa000503, +0x8fb00010, 0x10620099, 0x8fbf0014, 0xa000503, +0x8fb00010, 0x3c020800, 0x8c420020, 0x104000bb, +0x8fbf0014, 0xe000577, 0x0, 0x8f420100, +0x8f830020, 0x9745010c, 0x97460108, 0xac620000, +0x8f420104, 0x3c040800, 0x94844ed6, 0x52c00, +0xac620004, 0x8f420118, 0x63400, 0xc43025, +0xac620008, 0x8f42011c, 0x24040001, 0xac62000c, +0x9342010a, 0xa22825, 0xac650010, 0xac600014, +0xac600018, 0xac66001c, 0xa0004d7, 0x8fbf0014, +0x3c020800, 0x8c420020, 0x1040009c, 0x8fbf0014, +0xe000577, 0x0, 0x97440108, 0x3c030800, +0x94634ed6, 0x9745010c, 0x42202, 0x9746010e, +0x8f820020, 0x42600, 0x832025, 0x52c00, +0x3c030080, 0xa62825, 0x832025, 0xac400000, +0xac400004, 0xac400008, 0xac40000c, 0xac450010, +0xac400014, 0xac400018, 0xac44001c, 0xa0004d6, +0x24040001, 0x9742010c, 0x14400015, 0x0, +0x93620005, 0x30420010, 0x14400011, 0x0, +0xe000348, 0x2002021, 0x93620005, 0x2002021, +0x34420010, 0xe000351, 0xa3620005, 0x93620000, +0x24030020, 0x304200ff, 0x1043006f, 0x2002021, +0x8fbf0014, 0x8fb00010, 0xa0010a2, 0x27bd0018, +0xd, 0xa000502, 0x8fbf0014, 0x3c020800, +0x8c420020, 0x10400065, 0x8fbf0014, 0xe000577, +0x0, 0x8f420104, 0x8f830020, 0x9744010c, +0x3c050800, 0x94a54ed6, 0xac620000, 0x9762002c, +0x42400, 0x3042ffff, 0x822025, 0x3c02400e, +0xa22825, 0xac640004, 0xac600008, 0xac60000c, +0xac600010, 0xac600014, 0xac600018, 0xac65001c, +0xa0004d6, 0x24040001, 0xe000348, 0x2002021, +0xa7600008, 0xe000351, 0x2002021, 0x2002021, +0xe000356, 0x24050001, 0x3c020800, 0x8c420020, +0x10400042, 0x8fbf0014, 0xe000577, 0x0, +0x9742010c, 0x8f830020, 0x3c050800, 0x94a54ed6, +0x21400, 0xac700000, 0xac620004, 0xac600008, +0x8f64004c, 0x3c02401f, 0xa22825, 0xac64000c, +0x8f620050, 0x24040001, 0xac620010, 0x8f620054, +0xac620014, 0xac600018, 0xac65001c, 0x8fbf0014, +0x8fb00010, 0xa00059c, 0x27bd0018, 0x93620000, +0x24030020, 0x304200ff, 0x10430024, 0x8fbf0014, +0xe000fea, 0x2002021, 0x10400020, 0x8fbf0014, +0x2002021, 0x8fb00010, 0x2821, 0xa000356, +0x27bd0018, 0x2002021, 0x8fbf0014, 0x8fb00010, +0xa000664, 0x27bd0018, 0x9745010c, 0x2002021, +0x8fbf0014, 0x8fb00010, 0xa000684, 0x27bd0018, +0x2002021, 0x8fb00010, 0xa0006a9, 0x27bd0018, +0x9345010d, 0x2002021, 0x8fb00010, 0xa0006f3, +0x27bd0018, 0x2002021, 0x8fbf0014, 0x8fb00010, +0xa0006cf, 0x27bd0018, 0x8fbf0014, 0x8fb00010, +0x3e00008, 0x27bd0018, 0x8f420278, 0x440fffe, +0x34820080, 0xaf420240, 0x24020002, 0xa3420244, +0x3c021000, 0x3e00008, 0xaf420278, 0x3c040800, +0x94844ee2, 0x3c020800, 0x8c424eec, 0x3083ffff, +0x318c0, 0x431021, 0xaf42003c, 0x3c020800, +0x8c424ee8, 0xaf420038, 0x3c020050, 0x34420008, +0xaf420030, 0x0, 0x0, 0x0, +0x8f420000, 0x30420020, 0x1040fffd, 0x0, +0x8f420400, 0x3c010800, 0xac224ed8, 0x8f420404, +0x3c010800, 0xac224edc, 0x3c020020, 0xaf420030, +0x0, 0x3c020800, 0x94424ee0, 0x3c030800, +0x94634ee4, 0x3c050800, 0x94a54ee6, 0x24840001, +0x431021, 0x3083ffff, 0x3c010800, 0xa4224ee0, +0x3c010800, 0xa4244ee2, 0x14650003, 0x0, +0x3c010800, 0xa4204ee2, 0x3e00008, 0x0, +0x3c05000a, 0x27bdffe8, 0x3452821, 0x3c040800, +0x24844ec8, 0xafbf0010, 0xe000601, 0x2406000a, +0x3c020800, 0x94424eca, 0x3c030800, 0x94634ee6, +0x3042000f, 0x24420003, 0x431804, 0x24027fff, +0x43102b, 0x10400002, 0xaf83001c, 0xd, +0xe00050e, 0x0, 0x3c020800, 0x94424ed2, +0x8fbf0010, 0x27bd0018, 0x3e00008, 0xa74200a2, +0x3c02000a, 0x3421021, 0x94430006, 0x3c020800, +0x94424ed2, 0x3c010800, 0xa4234ece, 0x431023, +0x8f83001c, 0x21400, 0x21403, 0x43102b, +0x3e00008, 0x38420001, 0x27bdffe8, 0xafbf0010, +0x3c02000a, 0x3421021, 0x94420006, 0x3c010800, +0xa4224ece, 0xe00055b, 0x0, 0x5440fff9, +0x3c02000a, 0x8fbf0010, 0x3e00008, 0x27bd0018, +0x27bdffe8, 0xafbf0010, 0xe00055b, 0x0, +0x10400003, 0x0, 0xe000569, 0x0, +0x3c020800, 0x8c424ed8, 0x8fbf0010, 0x27430400, +0xaf420038, 0x3c020800, 0x8c424edc, 0x27bd0018, +0xaf830020, 0xaf42003c, 0x3c020005, 0xaf420030, +0x3e00008, 0xaf800018, 0x8f820018, 0x3c030006, +0x21140, 0x431025, 0xaf420030, 0x0, +0x0, 0x0, 0x8f420000, 0x30420010, +0x1040fffd, 0x27420400, 0xaf820020, 0x3e00008, +0xaf800018, 0x3c060800, 0x8cc64edc, 0x8f850018, +0x8f830020, 0x3c020800, 0x94424ed2, 0x27bdffe0, +0x24a50001, 0x24630020, 0x24420001, 0x24c70020, +0xafb10014, 0xafb00010, 0xafbf0018, 0xaf850018, +0xaf830020, 0x3c010800, 0xa4224ed2, 0x309000ff, +0x3c010800, 0xac274edc, 0x4c10008, 0x8821, +0x4e00006, 0x0, 0x3c020800, 0x8c424ed8, +0x24420001, 0x3c010800, 0xac224ed8, 0x3c020800, +0x94424ed2, 0x3c030800, 0x94634ee0, 0x10202b, +0x431026, 0x2c420001, 0x441025, 0x14400004, +0x8f830018, 0x24020010, 0x1462000f, 0x0, +0xe00058d, 0x24110001, 0x3c030800, 0x94634ed2, +0x3c020800, 0x94424ee0, 0x14620003, 0x0, +0xe00050e, 0x0, 0x16000003, 0x0, +0xe000577, 0x0, 0x3c030800, 0x94634ed6, +0x3c020800, 0x94424ed4, 0x24630001, 0x3064ffff, +0x3c010800, 0xa4234ed6, 0x14820003, 0x0, +0x3c010800, 0xa4204ed6, 0x12000006, 0x0, +0x3c020800, 0x94424ed2, 0xa74200a2, 0xa0005ef, +0x2201021, 0xe00055b, 0x0, 0x10400004, +0x2201021, 0xe000569, 0x0, 0x2201021, +0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x3e00008, +0x27bd0020, 0x3084ffff, 0x30a5ffff, 0x1821, +0x10800007, 0x0, 0x30820001, 0x10400002, +0x42042, 0x651821, 0xa0005f7, 0x52840, +0x3e00008, 0x601021, 0x10c00006, 0x24c6ffff, +0x8ca20000, 0x24a50004, 0xac820000, 0xa000601, +0x24840004, 0x3e00008, 0x0, 0x10a00008, +0x24a3ffff, 0xac860000, 0x0, 0x0, +0x2402ffff, 0x2463ffff, 0x1462fffa, 0x24840004, +0x3e00008, 0x0, 0x24020001, 0xaf62000c, +0xa7620010, 0xa7620012, 0xa7620014, 0x3e00008, +0xa7620016, 0x3082007f, 0x3421021, 0x3c08000e, +0x481821, 0x3c020800, 0x8c420020, 0x27bdffd8, +0x2407ff80, 0xafb3001c, 0xafb20018, 0xafb10014, +0xafb00010, 0xafbf0020, 0x808021, 0x30b100ff, +0x872024, 0x30d200ff, 0x1040002f, 0x9821, +0xaf44002c, 0x90620000, 0x24030050, 0x304200ff, +0x1443000e, 0x0, 0x3c020800, 0x8c4200e0, +0x2021021, 0x471024, 0xaf42002c, 0x3c020800, +0x8c4200e0, 0x2021021, 0x3042007f, 0x3421021, +0x481021, 0x944200d4, 0x3053ffff, 0xe000577, +0x0, 0x3c020800, 0x94424ed6, 0x8f830020, +0x113400, 0xc23025, 0x122c00, 0x3c024000, +0xc23025, 0x34a50001, 0xac700000, 0x8fbf0020, +0xac600004, 0x8fb20018, 0xac730008, 0x8fb10014, +0xac60000c, 0x8fb3001c, 0xac650010, 0x8fb00010, +0xac600014, 0x24040001, 0xac600018, 0x27bd0028, +0xa00059c, 0xac66001c, 0x8fbf0020, 0x8fb3001c, +0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, +0x27bd0028, 0x9343010f, 0x24020010, 0x1062000e, +0x28650011, 0x10a00007, 0x24020012, 0x24020008, +0x2405003a, 0x10620006, 0x3021, 0x3e00008, +0x0, 0x24050035, 0x1462fffc, 0x3021, +0xa00061c, 0x0, 0x8f420074, 0x24420fa0, +0x3e00008, 0xaf62000c, 0x27bdffe8, 0xafbf0010, +0xe000356, 0x24050001, 0x8fbf0010, 0x24020001, +0xa7620012, 0x27bd0018, 0x24020001, 0x3e00008, +0xa3600022, 0x27bdffe0, 0xafb10014, 0xafb00010, +0xafbf0018, 0x30b1ffff, 0xe000348, 0x808021, +0x9362003f, 0x24030004, 0x304200ff, 0x1443000c, +0x2002021, 0x12200008, 0x2402000a, 0xe000615, +0x0, 0x93620005, 0x2403fffe, 0x431024, +0xa3620005, 0x24020012, 0xa362003f, 0x2002021, +0xe000351, 0xa3600081, 0x16200003, 0x2002021, +0xe000679, 0x0, 0x2002021, 0x322600ff, +0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x24050038, +0xa00061c, 0x27bd0020, 0x27bdffe0, 0xafbf001c, +0xafb20018, 0xafb10014, 0xafb00010, 0xe000348, +0x808021, 0xe000615, 0x0, 0x9362003f, +0x24120018, 0x305100ff, 0x12320003, 0x2002021, +0x24020012, 0xa362003f, 0x93620005, 0x2403fffe, +0x431024, 0xe000351, 0xa3620005, 0x2002021, +0x24050020, 0x16320007, 0x3021, 0x8fbf001c, +0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa000356, +0x27bd0020, 0x8fbf001c, 0x8fb20018, 0x8fb10014, +0x8fb00010, 0x24050039, 0xa00061c, 0x27bd0020, +0x27bdffe8, 0xafb00010, 0xafbf0014, 0x9742010c, +0x24050036, 0x808021, 0x14400010, 0x304600ff, +0xe000348, 0x0, 0x24020012, 0xa362003f, +0x93620005, 0x34420010, 0xe000615, 0xa3620005, +0xe000351, 0x2002021, 0x2002021, 0xe000356, +0x24050020, 0xa0006e8, 0x0, 0xe00061c, +0x0, 0xe000348, 0x2002021, 0x93620023, +0x2403ff9f, 0x2002021, 0x431024, 0x8fbf0014, +0x8fb00010, 0xa3620023, 0xa000351, 0x27bd0018, +0x27bdffe0, 0xafbf0018, 0xafb10014, 0xafb00010, +0x30b100ff, 0xe000348, 0x808021, 0x24020012, +0xe000615, 0xa362003f, 0xe000351, 0x2002021, +0x2002021, 0x2203021, 0x8fbf0018, 0x8fb10014, +0x8fb00010, 0x24050035, 0xa00061c, 0x27bd0020, +0xa380002c, 0x3e00008, 0xa380002d, 0x8f420278, +0x440fffe, 0x8f820034, 0xaf420240, 0x24020002, +0xa3420244, 0x3c021000, 0x3e00008, 0xaf420278, +0x3c036000, 0x8c625400, 0x30420008, 0x1440fffd, +0x0, 0x8c625408, 0xaf820000, 0x24020052, +0xac605408, 0xac645430, 0xac625434, 0x24020008, +0x3e00008, 0xac625400, 0x3c026000, 0x8c425400, +0x30420008, 0x10400005, 0x3c036000, 0x8c625400, +0x30420008, 0x1440fffd, 0x0, 0x8f830000, +0x3c026000, 0x3e00008, 0xac435408, 0x90a30000, +0x24020005, 0x804021, 0x3063003f, 0x4821, +0x14620005, 0x5021, 0x90a2001c, 0x94a3001e, +0x304900ff, 0x306affff, 0xad00000c, 0xad000010, +0xad000024, 0x95020014, 0x8d05001c, 0x8d040018, +0x3042ffff, 0x491023, 0x21100, 0x237c3, +0x403821, 0x862023, 0xa2102b, 0x822023, +0xa72823, 0xad05001c, 0xad040018, 0xa5090014, +0xa5090020, 0xa50a0016, 0x3e00008, 0xa50a0022, +0x8f4201f8, 0x440fffe, 0x24020002, 0xaf4401c0, +0xa34201c4, 0x3c021000, 0x3e00008, 0xaf4201f8, +0x3c020800, 0x8c4200b4, 0x27bdffe8, 0xafbf0014, +0x24420001, 0xafb00010, 0x3c010800, 0xac2200b4, +0x8f430024, 0x3c02001f, 0x30aa00ff, 0x3442ff80, +0x30d800ff, 0x628024, 0x80f821, 0x30ef00ff, +0x1158003b, 0x1405821, 0x240cff80, 0x3c19000a, +0x3163007f, 0x310c0, 0x31940, 0x621821, +0x3c020800, 0x8c4200dc, 0x25680001, 0x310d007f, +0x3e21021, 0x431021, 0x3043007f, 0x3431821, +0x4c1024, 0x794821, 0xaf420024, 0x8d220024, +0x16c1824, 0x6c7026, 0xad22000c, 0x8d220024, +0x310800ff, 0xad220010, 0x95220014, 0x95230020, +0x8d27001c, 0x3042ffff, 0x3063ffff, 0x8d260018, +0x431023, 0x21100, 0x227c3, 0x402821, +0xc43023, 0xe2102b, 0xc23023, 0xe53823, +0xad27001c, 0xad260018, 0x95220020, 0xa5220014, +0x95220022, 0x154b000a, 0xa5220016, 0x8d230024, +0x8d220008, 0x25460001, 0x31450080, 0x14620004, +0x30c4007f, 0x108f0002, 0x38aa0080, 0xc05021, +0x51af0001, 0x31c800ff, 0x1518ffc9, 0x1005821, +0x8f840034, 0x3082007f, 0x3421821, 0x3c02000a, +0x621821, 0x2402ff80, 0x822024, 0xaf440024, +0xa06a0079, 0xa06a0083, 0x8c620050, 0x8f840034, +0xac620070, 0x8c650074, 0x3c027fff, 0x3442ffff, +0xa22824, 0xe00074f, 0xac650074, 0xaf500024, +0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, +0x27bdffc0, 0xafbe0038, 0xafb70034, 0xafb5002c, +0xafb20020, 0xafb1001c, 0xafb00018, 0xafbf003c, +0xafb60030, 0xafb40028, 0xafb30024, 0x8f450024, +0x8f460028, 0x8f43002c, 0x3c02001f, 0x3442ff80, +0x621824, 0xc23024, 0x80a821, 0xafa30014, +0xa2f024, 0xe000713, 0xafa60010, 0x3c020800, +0x8c4200e0, 0x2410ff80, 0x3608821, 0x2a21021, +0x501024, 0xaf420024, 0x3c020800, 0x8c4200e0, +0x2a21021, 0x3042007f, 0x3421821, 0x3c02000a, +0x629021, 0x924200d2, 0x93630084, 0x305700ff, +0x306300ff, 0x24020001, 0x10620034, 0x3602021, +0x24020002, 0x14620036, 0x0, 0xe0012f8, +0x2402821, 0x92230083, 0x92220083, 0x3063007f, +0x3042007f, 0x210c0, 0x31940, 0x621821, +0x3c020800, 0x8c4200dc, 0x2a21021, 0x433821, +0xf01024, 0xaf420028, 0x92250078, 0x92240083, +0x30e2007f, 0x3421821, 0x3c02000c, 0x14850007, +0x628021, 0x2402ffff, 0xa24200f1, 0x2402ffff, +0xa64200f2, 0xa00080b, 0x2402ffff, 0x96020020, +0xa24200f1, 0x96020022, 0xa64200f2, 0x8e020024, +0xae4200f4, 0x92220083, 0xa24200f0, 0x8e4200c8, +0xae4200fc, 0x8e4200c4, 0xae4200f8, 0x8e220050, +0xae420100, 0x8e4200cc, 0xae420104, 0x92220085, +0x3042003f, 0xa000866, 0x34420040, 0xe00131b, +0x2402821, 0x92220085, 0xa000866, 0x3042003f, +0x93620085, 0x2403ffdf, 0x3042003f, 0xa3620085, +0x93620085, 0x431024, 0xa3620085, 0x93630083, +0x93620078, 0x307400ff, 0x304200ff, 0x10540036, +0x240aff80, 0x3c0c000c, 0x3283007f, 0x310c0, +0x31940, 0x621821, 0x3c020800, 0x8c4200dc, +0x26880001, 0x3109007f, 0x2a21021, 0x433821, +0x30e2007f, 0x3421821, 0xea1024, 0xaf420028, +0x6c8021, 0x8e020024, 0x28a1824, 0x6a5826, +0xae02000c, 0x8e020024, 0x310800ff, 0xae020010, +0x96020014, 0x96030020, 0x8e07001c, 0x3042ffff, +0x3063ffff, 0x8e060018, 0x431023, 0x21100, +0x227c3, 0x402821, 0xc43023, 0xe2102b, +0xc23023, 0xe53823, 0xae07001c, 0xae060018, +0x96020020, 0xa6020014, 0x96020022, 0xa6020016, +0x92220079, 0x304200ff, 0x10540007, 0x0, +0x51370001, 0x316800ff, 0x92220078, 0x304200ff, +0x1448ffcd, 0x100a021, 0x92220083, 0xa2220079, +0x8e220050, 0xa0008c6, 0xae220070, 0xa2220085, +0x8e22004c, 0x2405ff80, 0xae42010c, 0x92220085, +0x34420020, 0xa2220085, 0x924200d1, 0x3c030800, +0x8c6300dc, 0x305400ff, 0x3c020800, 0x8c4200e4, +0x143140, 0x1420c0, 0x2a31821, 0xc42021, +0x2a21021, 0x643821, 0x461021, 0x451824, +0xe52824, 0xaf450028, 0xaf43002c, 0x3042007f, +0x924400d0, 0x30e3007f, 0x3422821, 0x3431821, +0x3c02000c, 0x628021, 0x3c02000e, 0x309600ff, +0xa29821, 0x1296002a, 0x0, 0x8e02000c, +0x2002021, 0x2602821, 0x10400025, 0x26100028, +0xe00072e, 0x0, 0x9262000d, 0x26830001, +0x307400ff, 0x3042007f, 0xa262000d, 0x2404ff80, +0x1697fff0, 0x26730020, 0x3c020800, 0x8c4200dc, +0xa021, 0x2a21021, 0x441024, 0xaf420028, +0x3c020800, 0x8c4200e4, 0x3c030800, 0x8c6300dc, +0x2a21021, 0x441024, 0xaf42002c, 0x3c020800, +0x8c4200e4, 0x2a31821, 0x3063007f, 0x2a21021, +0x3042007f, 0x3422021, 0x3431821, 0x3c02000c, +0x628021, 0x3c02000e, 0xa000888, 0x829821, +0x8e4200d8, 0xae220050, 0x8e4200d8, 0xae220070, +0x92250083, 0x924600d1, 0x92230083, 0x924400d1, +0x2402ff80, 0xa22824, 0x3063007f, 0x308400ff, +0xa62825, 0x64182a, 0x10600002, 0x30a500ff, +0x38a50080, 0xa2250083, 0xa2250079, 0xe000721, +0x0, 0x9222007e, 0x2a02021, 0xa222007a, +0x8e230074, 0x3c027fff, 0x3442ffff, 0x621824, +0xe00074f, 0xae230074, 0x8fa20010, 0xaf5e0024, +0x8fbf003c, 0xaf420028, 0x8fbe0038, 0x8fa20014, +0x8fb70034, 0x8fb60030, 0x8fb5002c, 0x8fb40028, +0x8fb30024, 0x8fb20020, 0x8fb1001c, 0x8fb00018, +0x27bd0040, 0x3e00008, 0xaf42002c, 0x90a20000, +0x24420001, 0xa0a20000, 0x3c030800, 0x8c6300f4, +0x304200ff, 0x1443000f, 0x803021, 0xa0a00000, +0x3c020800, 0x8c4200e4, 0x8f840034, 0x822021, +0x3082007f, 0x3421821, 0x3c02000c, 0x621821, +0x2402ff80, 0x822024, 0xacc30000, 0x3e00008, +0xaf440028, 0x8c820000, 0x24420020, 0x3e00008, +0xac820000, 0x94c20000, 0x3c080800, 0x950800ca, +0x30e7ffff, 0x804821, 0x1021021, 0xa4c20000, +0x94c20000, 0x3042ffff, 0xe2102b, 0x54400001, +0xa4c70000, 0x94a20000, 0x3c030800, 0x8c6300cc, +0x24420001, 0xa4a20000, 0x94a20000, 0x3042ffff, +0x54430007, 0x8f860028, 0x107102b, 0xa4a00000, +0x54400001, 0x1003821, 0xa4c70000, 0x8f860028, +0x8cc4001c, 0xaf44003c, 0x94a20000, 0x8f43003c, +0x3042ffff, 0x210c0, 0x621821, 0xaf43003c, +0x8f42003c, 0x822023, 0x18800004, 0x0, +0x8cc20018, 0xa000927, 0x24420001, 0x8cc20018, +0xaf420038, 0x3c020050, 0x34420010, 0xaf420030, +0x0, 0x0, 0x0, 0x8f420000, +0x30420020, 0x1040fffd, 0x0, 0x8f420404, +0xad220004, 0x8f420400, 0xad220000, 0x3c020020, +0xaf420030, 0x3e00008, 0x0, 0x27bdffe0, +0xafb20018, 0xafb10014, 0xafb00010, 0xafbf001c, +0x94c20000, 0xc08021, 0x3c120800, 0x965200c6, +0x24420001, 0xa6020000, 0x96030000, 0x94e20000, +0xe03021, 0x14430005, 0x8fb10030, 0xe0008fc, +0x2403821, 0xa000959, 0x0, 0x8c830004, +0x8c820004, 0x24420040, 0x4610007, 0xac820004, +0x8c820004, 0x4400004, 0x0, 0x8c820000, +0x24420001, 0xac820000, 0x96020000, 0x3042ffff, +0x50520001, 0xa6000000, 0x96220000, 0x24420001, +0xa6220000, 0x8f820028, 0x96230000, 0x94420016, +0x14430004, 0x8fbf001c, 0x24020001, 0xa6220000, +0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x3e00008, 0x27bd0020, 0x8f890028, 0x27bdffe0, +0xafbf0018, 0x8d220028, 0x27480400, 0x30e700ff, +0xaf420038, 0x8d22002c, 0xaf880030, 0xaf42003c, +0x3c020005, 0xaf420030, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x8c82000c, 0x8c82000c, 0xad020000, 0x8c820010, +0xad020004, 0x8c820018, 0xad020008, 0x8c82001c, +0xad02000c, 0x8ca20014, 0xad020010, 0x8c820020, +0xad020014, 0x90820005, 0x304200ff, 0x21200, +0xad020018, 0x8ca20018, 0xad02001c, 0x8ca2000c, +0xad020020, 0x8ca20010, 0xad020024, 0x8ca2001c, +0xad020028, 0x8ca20020, 0xad02002c, 0xad060030, +0xad000034, 0x97830026, 0x3402ffff, 0x14620002, +0x602021, 0x3404ffff, 0x10e00011, 0xad040038, +0x95230036, 0x95240036, 0x24020001, 0x3063ffff, +0x318c2, 0x691821, 0x90650040, 0x30840007, +0x821004, 0x451025, 0xa0620040, 0x8f820028, +0x94420056, 0x3042ffff, 0xa0009c0, 0xad02003c, +0x95230036, 0x95240036, 0x24020001, 0x3063ffff, +0x318c2, 0x691821, 0x90650040, 0x30840007, +0x821004, 0x21027, 0x451024, 0xa0620040, +0xad00003c, 0x0, 0x0, 0x0, +0x3c020006, 0x34420040, 0xaf420030, 0x0, +0x0, 0x0, 0x8f420000, 0x30420010, +0x1040fffd, 0x8f860028, 0xaf880030, 0x24c20056, +0x24c7003c, 0x24c40028, 0x24c50032, 0x24c60036, +0xe00093a, 0xafa20010, 0x8fbf0018, 0x3e00008, +0x27bd0020, 0x8f830024, 0x3c050800, 0x8ca500e8, +0x8f820034, 0x30633fff, 0x31980, 0x451021, +0x431021, 0x2403ff80, 0x3045007f, 0x431024, +0xaf420028, 0x3451821, 0x3c02000c, 0x623021, +0x90c2000d, 0x3821, 0x34420010, 0xa0c2000d, +0x8f890028, 0x8f8a0024, 0x95230036, 0xa1382, +0x30480003, 0x24020001, 0xa4c3000e, 0x1102000b, +0x29020002, 0x10400005, 0x24020002, 0x1100000c, +0x24030001, 0xa000a03, 0x1821, 0x11020006, +0x0, 0xa000a03, 0x1821, 0x8cc2002c, +0xa000a03, 0x24430001, 0x8cc20014, 0x24430001, +0x8cc20018, 0x43102b, 0x14400003, 0x0, +0xa000a0c, 0x24070001, 0x9522003e, 0x24420001, +0xa522003e, 0xa1382, 0x30430003, 0x2c620002, +0x10400009, 0x802821, 0x14600004, 0x0, +0x94c20036, 0xa000a1c, 0x3046ffff, 0x8cc60038, +0xa000a1c, 0x802821, 0x3021, 0x3c040800, +0x24844ef0, 0xa00096d, 0x0, 0x27490100, +0x8d22000c, 0x95230006, 0x1202021, 0x21602, +0x3045003f, 0x3063ffff, 0x24020027, 0x28a60028, +0x10a2000e, 0xaf830024, 0x10c00008, 0x24020031, +0x24020021, 0x10a20009, 0x24020025, 0x10a20007, +0x9382002d, 0xa000a3a, 0x0, 0x10a20005, +0x9382002d, 0xa000a3a, 0x0, 0xa0009d8, +0x0, 0xa00070a, 0x0, 0x95230006, +0x91240005, 0x8d25000c, 0x8d260010, 0x8d270018, +0x8d28001c, 0x8d290020, 0x24420001, 0x3c010800, +0xa4234ef6, 0x3c010800, 0xa0244ef5, 0x3c010800, +0xac254efc, 0x3c010800, 0xac264f00, 0x3c010800, +0xac274f08, 0x3c010800, 0xac284f0c, 0x3c010800, +0xac294f10, 0x3e00008, 0xa382002d, 0x8f870028, +0x27bdffc0, 0xafb30034, 0xafb20030, 0xafb1002c, +0xafb00028, 0xafbf0038, 0x3c020800, 0x8c4200d0, +0x94e30030, 0x30b0ffff, 0x501007, 0x3045ffff, +0x3063ffff, 0xc09821, 0xa7a20010, 0x3c110800, +0x963100c6, 0x14a30006, 0x3092ffff, 0x8ce20024, +0x24420030, 0xaf42003c, 0xa000a73, 0x8ce20020, +0x94e20032, 0x3042ffff, 0x54a20008, 0x27a40018, +0x8ce2002c, 0x24420030, 0xaf42003c, 0x8ce20028, +0xaf420038, 0xa000a81, 0x8f840028, 0x27a50010, +0x27a60020, 0x2203821, 0xe0008fc, 0xa7a00020, +0x8fa20018, 0x24420030, 0xaf420038, 0x8fa2001c, +0xaf42003c, 0x8f840028, 0x3c020005, 0xaf420030, +0x94820034, 0x27430400, 0x3042ffff, 0x202102b, +0x14400007, 0xaf830030, 0x94820054, 0x94830034, +0x2021021, 0x431023, 0xa000a95, 0x3043ffff, +0x94830054, 0x94820034, 0x2231821, 0x501023, +0x621823, 0x3063ffff, 0x94820016, 0x3042ffff, +0x14430003, 0x0, 0xa000aa3, 0x24030001, +0x94820016, 0x3042ffff, 0x43102b, 0x10400005, +0x8f820030, 0x94820016, 0x621023, 0x3043ffff, +0x8f820030, 0xac530000, 0xac400004, 0xac520008, +0xac43000c, 0x3c020006, 0x34420010, 0xaf420030, +0x0, 0x0, 0x0, 0x8f420000, +0x30420010, 0x1040fffd, 0x1018c2, 0x641821, +0x90650040, 0x32040007, 0x24020001, 0x8fbf0038, +0x8fb30034, 0x8fb20030, 0x8fb1002c, 0x8fb00028, +0x821004, 0x451025, 0x27bd0040, 0x3e00008, +0xa0620040, 0x27bdffa8, 0xafb60050, 0xafb5004c, +0xafb40048, 0xafb30044, 0xafb1003c, 0xafbf0054, +0xafb20040, 0xafb00038, 0x8c900000, 0x3c020800, +0x8c4200e8, 0x8f860034, 0x96030002, 0x2413ff80, +0xc23021, 0x30633fff, 0x31980, 0xc33821, +0xf31024, 0x90b20000, 0xaf42002c, 0x92030002, +0x30e2007f, 0x3423021, 0x3c02000e, 0xc28821, +0x306300c0, 0x24020040, 0x80a821, 0xa0b021, +0x14620026, 0xa021, 0x8e340038, 0x8e220018, +0x14400002, 0x24020001, 0xae220018, 0x9202000d, +0x30420020, 0x14400015, 0x8f820034, 0x3c030800, +0x8c6300dc, 0x1238c0, 0x123140, 0x431021, +0xc73021, 0x463821, 0x30e30007, 0x3c020080, +0x30e60078, 0xc23025, 0x3431821, 0xf31024, +0xaf420800, 0x24630900, 0xaf460810, 0x8e220018, +0x8c630008, 0x431021, 0xae220018, 0x8e22002c, +0x8e230018, 0x24420001, 0x62182b, 0x1060003d, +0x0, 0xa000b57, 0x0, 0x92030002, +0x2402ffc0, 0x431024, 0x304200ff, 0x14400005, +0x24020001, 0xae220018, 0x96220036, 0xa000b40, +0x3054ffff, 0x8e220014, 0x24420001, 0xae220018, +0x92020000, 0x21600, 0x21603, 0x4410029, +0x0, 0x96020002, 0x27a40010, 0x802821, +0xa7a20016, 0x96020002, 0x24070001, 0x3021, +0x3042ffff, 0xaf820024, 0xe00096d, 0xafa0001c, +0x96030002, 0x3c040800, 0x8c8400e8, 0x8f820034, +0x30633fff, 0x31980, 0x441021, 0x431021, +0x3043007f, 0x3c05000c, 0x531024, 0x3431821, +0xaf420028, 0x651821, 0x9062000d, 0x122140, +0x3042007f, 0xa062000d, 0x3c030800, 0x8c6300e4, +0x8f820034, 0x431021, 0x443821, 0x30e2007f, +0x3421021, 0x451021, 0xf31824, 0xaf430028, +0xaea20000, 0x9222000d, 0x30420010, 0x10400013, +0x2a02021, 0x8f830028, 0x8ea40000, 0x2803021, +0x9462003e, 0x2442ffff, 0xa462003e, 0x94840002, +0x9625000e, 0x3084ffff, 0xe000a52, 0x30a5ffff, +0x8f820028, 0x94430034, 0x9622000e, 0x14430003, +0x2a02021, 0x24020001, 0xa382002c, 0x2c02821, +0xe0008e2, 0x0, 0x8fbf0054, 0x8fb60050, +0x8fb5004c, 0x8fb40048, 0x8fb30044, 0x8fb20040, +0x8fb1003c, 0x8fb00038, 0x3e00008, 0x27bd0058, +0x8f850028, 0x27bdffd0, 0xafb40028, 0xafb20020, +0xafbf002c, 0xafb30024, 0xafb1001c, 0xafb00018, +0x90a800d0, 0x90a600d1, 0x3c020800, 0x8c4200e4, +0x8f830034, 0x30c700ff, 0xa3a60010, 0x621821, +0x71140, 0x621821, 0x3062007f, 0x3422021, +0x3c02000c, 0x822021, 0x2402ff80, 0x621824, +0x311200ff, 0x8cb100d8, 0xafa40014, 0x8cb300dc, +0xa021, 0xaf430028, 0x10f2001f, 0x24020001, +0x8fa60014, 0x27a40014, 0x27a50010, 0x8cc20004, +0x2228021, 0x2701023, 0x4400017, 0x24020001, +0x90c3000d, 0x2402ff80, 0x431024, 0x304200ff, +0x14400007, 0x2008821, 0x90c2000d, 0x34420040, +0xe0008e2, 0xa0c2000d, 0xa000b9e, 0x93a20010, +0xe000ac0, 0x24140001, 0x8f830028, 0xac7000d8, +0x93a20010, 0xa06200d1, 0x93a20010, 0x1452ffe5, +0x8fa60014, 0x24020001, 0x16820004, 0x8fbf002c, +0xe00070a, 0x0, 0x8fbf002c, 0x8fb40028, +0x8fb30024, 0x8fb20020, 0x8fb1001c, 0x8fb00018, +0x3e00008, 0x27bd0030, 0x27bdffd8, 0xafb3001c, +0xafb20018, 0xafb10014, 0xafb00010, 0xafbf0020, +0x809821, 0xe08021, 0x30b1ffff, 0xe000577, +0x30d200ff, 0x0, 0x0, 0x0, +0x8f820020, 0xac510000, 0xac520004, 0xac530008, +0xac40000c, 0xac400010, 0xac400014, 0xac400018, +0x3c030800, 0x94634ed6, 0x2038025, 0xac50001c, +0x0, 0x0, 0x0, 0x24040001, +0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, +0x8fb00010, 0xa00059c, 0x27bd0028, 0x27bdffe8, +0xafb00010, 0xafbf0014, 0x30a5ffff, 0x30c600ff, +0x808021, 0x24020c80, 0xaf420024, 0x0, +0x0, 0x0, 0x0, 0x0, +0xe000bad, 0x0, 0x3c040800, 0x248400e0, +0x8c820000, 0x2403ff80, 0x8fbf0014, 0x2021021, +0x431024, 0xaf420024, 0x8c820000, 0x3c03000a, +0x2028021, 0x3210007f, 0x3501021, 0x8fb00010, +0x431021, 0x27bd0018, 0x3e00008, 0xaf820028, +0x27bdffe8, 0xafbf0010, 0x8f440140, 0x3c030800, +0x8c6300e0, 0x2402ff80, 0xaf840034, 0x831821, +0x621024, 0xaf420024, 0x3c020008, 0x3424021, +0x95050002, 0x3063007f, 0x3c02000a, 0x3431821, +0x621821, 0x30a5ffff, 0x3402ffff, 0x3021, +0x3c076020, 0x10a20006, 0xaf830028, 0x2402ffff, +0xa5020002, 0x946500d4, 0xe000bd2, 0x30a5ffff, +0x8fbf0010, 0x24020c80, 0x27bd0018, 0x3e00008, +0xaf420024, 0x3c020008, 0x3424021, 0x95020002, +0x3c0a0800, 0x954a00c6, 0x3046ffff, 0x14c00007, +0x3402ffff, 0x8f820028, 0x8f840034, 0x3c076020, +0x944500d4, 0xa000c3b, 0x30a5ffff, 0x10c20024, +0x8f870028, 0x94e20054, 0x94e40016, 0x3045ffff, +0xa61023, 0xa6182b, 0x3089ffff, 0x10600004, +0x3044ffff, 0xc51023, 0x1221023, 0x3044ffff, +0x8a102b, 0x1040000c, 0x12a1023, 0x24020001, +0xa5020016, 0x2402ffff, 0xa5020002, 0x94e500d4, +0x8f840034, 0x3021, 0x30a5ffff, 0x3c076020, +0xa000bd2, 0x0, 0x44102a, 0x10400008, +0x0, 0x95020016, 0x30420001, 0x10400004, +0x0, 0x9742007e, 0x24420014, 0xa5020016, +0x3e00008, 0x0, 0x8f840028, 0x27bdffe0, +0xafbf0018, 0x94820034, 0x9483003e, 0x1060001a, +0x3048ffff, 0x9383002c, 0x24020001, 0x14620027, +0x8fbf0018, 0x8f820028, 0x818c2, 0x31080007, +0x621821, 0x2447003a, 0x24490054, 0x24440020, +0x24450030, 0x24460034, 0x90620040, 0x304200ff, +0x1021007, 0x30420001, 0x10400016, 0x8fbf0018, +0xe00093a, 0xafa90010, 0x8f820028, 0x94420034, +0xa000c54, 0x3048ffff, 0x94830036, 0x94820034, +0x1043000e, 0x8fbf0018, 0x94820036, 0xa4820034, +0x94820056, 0xa4820054, 0x8c82002c, 0xac820024, +0x94820032, 0xa4820030, 0x9482003c, 0xa482003a, +0x8fbf0018, 0xa000c14, 0x27bd0020, 0x3e00008, +0x27bd0020, 0x27bdffe8, 0xafbf0010, 0x8f4a0100, +0x3c050800, 0x8ca500e0, 0x3c020800, 0x90424efc, +0x3c0c0800, 0x958c4ef6, 0x1452821, 0x304b003f, +0x30a2007f, 0x3424021, 0x39690032, 0x3c02000a, +0x3963003f, 0x2c630001, 0x1024021, 0x2d290001, +0x2402ff80, 0xa22824, 0x1234825, 0xaf8a0034, +0x801821, 0xaf450024, 0x3021, 0x802821, +0x24070001, 0xaf880028, 0x3c040800, 0x24844ef0, +0xaf8c0024, 0x15200006, 0xa380002d, 0x24020020, +0x1562000e, 0x3402ffff, 0x1582000c, 0x0, +0x24020020, 0x15620005, 0x0, 0x8c630014, +0x2402ffff, 0x10620007, 0x0, 0xe00096d, +0x0, 0xa000cb0, 0x0, 0xe0009d8, +0x602021, 0xe000c49, 0x0, 0x8fbf0010, +0x24020c80, 0x27bd0018, 0x3e00008, 0xaf420024, +0x3c020800, 0x8c4200e0, 0x27bdffa0, 0xafb1003c, +0x821021, 0x2411ff80, 0xafbe0058, 0xafb70054, +0xafb20040, 0xafb00038, 0xafbf005c, 0xafb60050, +0xafb5004c, 0xafb40048, 0xafb30044, 0x511024, +0x8f480024, 0x8f490028, 0x8f470028, 0xaf420024, +0x3c020800, 0x8c4200e0, 0x809021, 0x24060006, +0x821021, 0x3042007f, 0x3421821, 0x3c02000a, +0x628021, 0x3c02001f, 0x3442ff80, 0xe23824, +0x27a40010, 0x260500f0, 0x122f024, 0x102b824, +0xe000601, 0xafa70030, 0x8fa20018, 0xae0200c4, +0x8fa2001c, 0xae0200c8, 0x8fa20024, 0xae0200cc, +0x93a40010, 0x920300d1, 0x2402ff80, 0x821024, +0x431025, 0x304900ff, 0x3083007f, 0x3122007f, +0x62102a, 0x10400004, 0x310c0, 0x1311026, +0x304900ff, 0x310c0, 0x31940, 0x621821, +0x3c020800, 0x8c4200dc, 0x920400d2, 0x2421021, +0x431021, 0x511024, 0xaf420028, 0x93a30010, +0x3063007f, 0x310c0, 0x31940, 0x621821, +0x3c020800, 0x8c4200dc, 0x2421021, 0x431021, +0x3042007f, 0x3421821, 0x3c02000c, 0x624021, +0x8fa30014, 0x2402ffff, 0x10620030, 0x309500ff, +0x93a20011, 0x95030014, 0x304400ff, 0x3063ffff, +0x64182b, 0x1060000d, 0x0, 0x95040014, +0x8d07001c, 0x8d060018, 0x3084ffff, 0x442023, +0x42100, 0x1021, 0xe43821, 0xe4202b, +0xc23021, 0xa000d2a, 0xc43021, 0x95040014, +0x8d07001c, 0x8d060018, 0x3084ffff, 0x822023, +0x42100, 0x1021, 0x801821, 0xc23023, +0xe4202b, 0xc43023, 0xe33823, 0xad07001c, +0xad060018, 0x93a20011, 0xa5020014, 0x97a20012, +0xa5020016, 0x8fa20014, 0xad020010, 0x8fa20014, +0xad02000c, 0x93a20011, 0xa5020020, 0x97a20012, +0xa5020022, 0x8fa20014, 0xad020024, 0x2406ff80, +0x2461024, 0x3256007f, 0xaf420024, 0x3561821, +0x3c02000a, 0x628021, 0x8e02004c, 0x8fa20020, +0x3124007f, 0x428c0, 0xae020050, 0x8fa20020, +0x42140, 0x852821, 0xae020070, 0x93a20010, +0x1208821, 0xa2020083, 0x93a20010, 0xa2020079, +0x92020085, 0x3042003f, 0xa2020085, 0x3c020800, +0x8c4200dc, 0x2421021, 0x451021, 0x461024, +0xaf42002c, 0x3c020800, 0x8c4200e4, 0x3c030800, +0x8c6300dc, 0x2421021, 0x441021, 0x461024, +0xaf420028, 0x3c020800, 0x8c4200e4, 0x2431821, +0x651821, 0x2421021, 0x441021, 0x3042007f, +0x3063007f, 0x93a50010, 0x3422021, 0x3431821, +0x3c02000e, 0x624021, 0x3c02000c, 0x10b1008c, +0x824821, 0x3233007f, 0x16600019, 0x2404ff80, +0x3c020800, 0x8c4200dc, 0x2421021, 0x441024, +0xaf42002c, 0x3c020800, 0x8c4200e4, 0x3c030800, +0x8c6300dc, 0x2421021, 0x441024, 0xaf420028, +0x3c020800, 0x8c4200e4, 0x2431821, 0x3063007f, +0x2421021, 0x3042007f, 0x3422021, 0x3431821, +0x3c02000e, 0x624021, 0x3c02000c, 0x824821, +0x9124000d, 0x2414ff80, 0x1021, 0x942025, +0xa124000d, 0x95040002, 0x95050014, 0x8d07001c, +0x3084ffff, 0x30a5ffff, 0x8d060018, 0x852023, +0x42100, 0xe43821, 0xc23021, 0xe4202b, +0xc43021, 0xad07001c, 0xad060018, 0x95020002, +0xa5020014, 0xa5000016, 0x8d020008, 0xad020010, +0x8d020008, 0xad02000c, 0x95020002, 0xa5020020, +0xa5000022, 0x8d020008, 0xad020024, 0x9122000d, +0x30420040, 0x10400042, 0x26220001, 0x3c020800, +0x8c4200e0, 0xa3b30028, 0x3c10000a, 0x2421021, +0x541024, 0xaf420024, 0x3c020800, 0x8c4200e0, +0xa380002c, 0x27a4002c, 0x2421021, 0x3042007f, +0x3421821, 0x701821, 0x8c6200d8, 0x8d260004, +0x27a50028, 0xafa9002c, 0x461021, 0xac6200d8, +0xe000ac0, 0xaf830028, 0x93a30028, 0x8f820028, +0xe00070a, 0xa04300d1, 0xe000c49, 0x0, +0x2541024, 0xaf420024, 0x3c020800, 0x8c4200dc, +0x132940, 0x1320c0, 0xa42021, 0x2421021, +0x441021, 0x541024, 0xaf42002c, 0x3c020800, +0x8c4200e4, 0x3c030800, 0x8c6300dc, 0x3563021, +0x2421021, 0x451021, 0x541024, 0xaf420028, +0x3c020800, 0x8c4200e4, 0x2431821, 0x641821, +0x2421021, 0x451021, 0x3042007f, 0x3063007f, +0x3422021, 0x3431821, 0x3c02000e, 0x624021, +0x3c02000c, 0xd08021, 0x824821, 0x26220001, +0x3043007f, 0x14750005, 0x304400ff, 0x2403ff80, +0x2231024, 0x431026, 0x304400ff, 0x93a20010, +0x808821, 0x25080028, 0x1444ff76, 0x25290020, +0x93a40010, 0x8fa30014, 0x2402ffff, 0x1062000a, +0x308900ff, 0x24820001, 0x24830001, 0x3042007f, +0x14550005, 0x306900ff, 0x2403ff80, 0x831024, +0x431026, 0x304900ff, 0x92020078, 0x305300ff, +0x11330032, 0x1208821, 0x3c020800, 0x8c4200dc, +0x3225007f, 0x520c0, 0x52940, 0xa42021, +0x2421021, 0x2406ff80, 0x441021, 0x461024, +0xaf42002c, 0x3c030800, 0x8c6300dc, 0x3c020800, +0x8c4200e4, 0x2431821, 0x2421021, 0x451021, +0x641821, 0x461024, 0x3063007f, 0xaf420028, +0x3431821, 0x3c02000e, 0x624021, 0x3c020800, +0x8c4200e4, 0x8d06000c, 0x1002021, 0x2421021, +0x451021, 0x3042007f, 0x3421821, 0x3c02000c, +0x624821, 0x10c0000d, 0x1202821, 0xe00072e, +0x0, 0x2402ff80, 0x2221824, 0x26240001, +0x622826, 0x3082007f, 0x14550002, 0x308300ff, +0x30a300ff, 0x1473ffd0, 0x608821, 0x8e030074, +0x3c027fff, 0x3442ffff, 0x621824, 0xae030074, +0xe00074f, 0x2402021, 0xaf570024, 0x8fa20030, +0xaf5e0028, 0x8fbf005c, 0x8fbe0058, 0x8fb70054, +0x8fb60050, 0x8fb5004c, 0x8fb40048, 0x8fb30044, +0x8fb20040, 0x8fb1003c, 0x8fb00038, 0x27bd0060, +0x3e00008, 0xaf42002c, 0x27bdffd8, 0xafb1001c, +0xafbf0020, 0xafb00018, 0x27510188, 0x92220003, +0x2408ff80, 0x3c03000a, 0x3047007f, 0xa3a70010, +0x8f460180, 0x3c020800, 0x8c4200e0, 0xaf860034, +0xc22821, 0xa81024, 0xaf420024, 0x92240000, +0x30a2007f, 0x3421021, 0x431021, 0xaf820028, +0x3084007f, 0x24020002, 0x14820025, 0x71940, +0x3c020800, 0x8c4200e4, 0xc21021, 0x432821, +0x30a2007f, 0x3421821, 0xa81024, 0xaf420028, +0x3c02000c, 0x621821, 0x9062000d, 0xafa30014, +0x481025, 0xa062000d, 0x8fa30014, 0x9062000d, +0x30420040, 0x5040006a, 0x8fbf0020, 0x8f860028, +0xa380002c, 0x27a40014, 0x8cc200d8, 0x8c630004, +0x27a50010, 0x431021, 0xe000ac0, 0xacc200d8, +0x93a30010, 0x8f820028, 0xe00070a, 0xa04300d1, +0xe000c49, 0x0, 0xa000eeb, 0x8fbf0020, +0xe000713, 0xc02021, 0xe000721, 0x0, +0x3c020008, 0x3428021, 0x92230001, 0x9202007b, +0x1443004f, 0x8fbf0020, 0x92220000, 0x3044007f, +0x24020004, 0x10820017, 0x28820005, 0x10400006, +0x24020005, 0x24020003, 0x10820007, 0x8fb1001c, +0xa000eec, 0x0, 0x10820012, 0x8fbf0020, +0xa000eec, 0x8fb1001c, 0x92050083, 0x92060078, +0x8e070074, 0x8f840034, 0x30a500ff, 0x73e02, +0x30c600ff, 0xe000757, 0x30e7007f, 0xa000eeb, +0x8fbf0020, 0xe000cb7, 0x8f840034, 0xa000eeb, +0x8fbf0020, 0x24020c80, 0xaf420024, 0x9202003e, +0x30420040, 0x10400020, 0x0, 0x9202003e, +0x21600, 0x21603, 0x4410006, 0x0, +0x8f840034, 0xe000684, 0x24050093, 0xa000eeb, +0x8fbf0020, 0x9202003f, 0x24030018, 0x304200ff, +0x1443000c, 0x8f840034, 0x24050039, 0xe00061c, +0x3021, 0xe000348, 0x8f840034, 0x24020012, +0xa202003f, 0xe000351, 0x8f840034, 0xa000eeb, +0x8fbf0020, 0x24050036, 0xe00061c, 0x3021, +0xa000eeb, 0x8fbf0020, 0xe000348, 0x8f840034, +0x92020005, 0x34420020, 0xa2020005, 0xe000351, +0x8f840034, 0xe0010a2, 0x8f840034, 0x8fbf0020, +0x8fb1001c, 0x8fb00018, 0x24020c80, 0x27bd0028, +0x3e00008, 0xaf420024, 0x27bdffe8, 0xafb00010, +0xafbf0014, 0x27430100, 0x94620008, 0x21400, +0x21403, 0x4410002, 0x8021, 0x24100001, +0x94620008, 0x30420080, 0x1040001a, 0x2001021, +0x94620008, 0x30422000, 0x10400016, 0x2001021, +0x8c630018, 0x3c021c2d, 0x344219ed, 0x24060006, +0x1062000f, 0x3c076021, 0x3c020800, 0x8c4200d4, +0x10400007, 0x8f820028, 0x8f830028, 0x90620062, +0x3042000f, 0x34420040, 0xa0620062, 0x8f820028, +0x8f840034, 0x944500d4, 0xe000bd2, 0x30a5ffff, +0x2001021, 0x8fbf0014, 0x8fb00010, 0x3e00008, +0x27bd0018, 0x27bdffe0, 0xafb10014, 0xafb00010, +0xa380002c, 0xafbf0018, 0x8f450100, 0x3c030800, +0x8c6300e0, 0x2402ff80, 0xaf850034, 0xa31821, +0x3064007f, 0x3442021, 0x621824, 0x3c02000a, +0x822021, 0xaf430024, 0x27500100, 0x8e020014, +0x8c8300dc, 0xaf840028, 0x431023, 0x18400004, +0x8821, 0x8e020014, 0xe000b63, 0xac8200dc, +0x9202000b, 0x24030002, 0x304200ff, 0x1443002f, +0x0, 0x96020008, 0x304300ff, 0x24020082, +0x14620005, 0x24020084, 0xe000a1e, 0x0, +0xa000f77, 0x0, 0x14620009, 0x24020081, +0x8f820028, 0x8f840034, 0x3c076021, 0x944500d4, +0x92060005, 0x30a5ffff, 0xa000f66, 0x30c600ff, +0x14620027, 0x0, 0x9202000a, 0x304300ff, +0x30620020, 0x10400004, 0x30620040, 0x8f840034, +0xa000f62, 0x24060040, 0x10400004, 0x31600, +0x8f840034, 0xa000f62, 0x24060041, 0x21603, +0x4410017, 0x8f840034, 0x24060042, 0x8f820028, +0x3c076019, 0x944500d4, 0x30a5ffff, 0xe000bd2, +0x0, 0xa000f77, 0x0, 0x9202000b, +0x24030016, 0x304200ff, 0x10430006, 0x0, +0x9202000b, 0x24030017, 0x304200ff, 0x14430004, +0x0, 0xe000ef1, 0x0, 0x408821, +0xe000c49, 0x0, 0x9202000a, 0x30420008, +0x10400006, 0x24020c80, 0x8f850028, 0x3c040008, +0xe0012d0, 0x3442021, 0x24020c80, 0xaf420024, +0x8fbf0018, 0x2201021, 0x8fb00010, 0x8fb10014, +0x3e00008, 0x27bd0020, 0x27bdffe8, 0xafbf0014, +0xafb00010, 0x8f500024, 0x3c030800, 0x8c6300e0, +0x8f450100, 0x2402ff80, 0xa31821, 0x3064007f, +0x3442021, 0x621824, 0x3c02000a, 0x822021, +0xaf850034, 0xaf430024, 0x90820062, 0xaf840028, +0x3042000f, 0x34420050, 0xa0820062, 0x3c02001f, +0x3442ff80, 0xe00070a, 0x2028024, 0xaf500024, +0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, +0x3c020800, 0x8c420020, 0x1040001d, 0x27450100, +0x90a30009, 0x3c020008, 0x3422021, 0x24020018, +0x54620003, 0x3c020008, 0xa000fb8, 0x24020008, +0x3422021, 0x24020016, 0x14620005, 0x24020017, +0x24020012, 0xa082003f, 0xa000fc2, 0x94a70008, +0x54620006, 0x94a70008, 0x93620005, 0x2403fffe, +0x431024, 0xa3620005, 0x94a70008, 0x90a6001b, +0x8ca40000, 0x94a50006, 0xa000bad, 0x73c00, +0x3e00008, 0x0, 0x27440100, 0x94820008, +0x304500ff, 0x38a30082, 0x38a20084, 0x2c630001, +0x2c420001, 0x621825, 0x10600006, 0x24020083, +0x9382002d, 0x1040000d, 0x0, 0xa000c7c, +0x0, 0x14a20005, 0x24a2ff80, 0x8f430104, +0x3c026020, 0x3e00008, 0xac430014, 0x304200ff, +0x2c420002, 0x10400003, 0x24020022, 0xa000f1c, +0x0, 0x14a20003, 0x0, 0xa000f89, +0x0, 0xa000fa7, 0x0, 0x9363007e, +0x9362007a, 0x14430009, 0x2021, 0x93620000, +0x24030050, 0x304200ff, 0x14430004, 0x24040001, +0x9362007e, 0x24420001, 0xa362007e, 0x3e00008, +0x801021, 0x8f4201f8, 0x440fffe, 0x24020002, +0xaf4401c0, 0xa34201c4, 0x3c021000, 0x3e00008, +0xaf4201f8, 0x27bdffe8, 0xafbf0010, 0x9362003f, +0x2403000a, 0x304200ff, 0x14430046, 0x0, +0x8f630054, 0x8f62004c, 0x1062007f, 0x3603021, +0x93620000, 0x24030050, 0x304200ff, 0x1443002f, +0x0, 0x8f440140, 0x3c020800, 0x8c4200e0, +0x2403ff80, 0x821021, 0x431024, 0xaf420024, +0x3c020800, 0x8c4200e0, 0x8f650054, 0x3c03000a, +0x822021, 0x3084007f, 0x3441021, 0x431021, +0xac450108, 0x9762003c, 0x8f63004c, 0x3042ffff, +0x21040, 0x621821, 0xaf63005c, 0x8f630054, +0x8f64004c, 0x9762003c, 0x641823, 0x3042ffff, +0x31843, 0x21040, 0x43102a, 0x10400006, +0x0, 0x8f620054, 0x8f63004c, 0x431023, +0xa001038, 0x21043, 0x9762003c, 0x3042ffff, +0x21040, 0xacc20064, 0x24020001, 0xa0c0007c, +0xa0c20084, 0x24020c80, 0xaf420024, 0xe000fea, +0x8f440140, 0x10400049, 0x8fbf0010, 0x8f430140, +0x8f4201f8, 0x440fffe, 0x24020002, 0xaf4301c0, +0xa34201c4, 0x3c021000, 0xaf4201f8, 0xa00108a, +0x8fbf0010, 0x9362003f, 0x24030010, 0x304200ff, +0x14430004, 0x0, 0x8f440140, 0xa001076, +0x2821, 0x9362003f, 0x24030016, 0x304200ff, +0x14430004, 0x24020014, 0xa362003f, 0xa001084, +0x0, 0x8f62004c, 0x8f630050, 0x431023, +0x441002a, 0x8fbf0010, 0x93620081, 0x24420001, +0xa3620081, 0x93620081, 0x3c030800, 0x8c6300c0, +0x304200ff, 0x14430010, 0x0, 0x9362003f, +0x24030004, 0x304200ff, 0x14430006, 0x0, +0x8f440140, 0x8fbf0010, 0x24050093, 0xa000684, +0x27bd0018, 0x8f440140, 0x24050093, 0x8fbf0010, +0xa0006f3, 0x27bd0018, 0x8f440140, 0xe000348, +0x0, 0x8f620054, 0x2442ffff, 0xaf620054, +0x8f620050, 0x2442ffff, 0xaf620050, 0xe000351, +0x8f440140, 0x8f440140, 0x8fbf0010, 0x24050004, +0xa000356, 0x27bd0018, 0x8fbf0010, 0x3e00008, +0x27bd0018, 0x8f420188, 0x9363007e, 0x21402, +0x304400ff, 0x306300ff, 0x1464000d, 0x0, +0x93620080, 0x304200ff, 0x10440009, 0x0, +0xa3640080, 0x93620000, 0x24030050, 0x304200ff, +0x14430004, 0x0, 0xa0007bb, 0x8f440180, +0xa3640080, 0x3e00008, 0x0, 0x27bdffe8, +0xafb00010, 0xafbf0014, 0x93620005, 0x24030030, +0x30420030, 0x14430089, 0x808021, 0x3c020800, +0x8c420020, 0x10400080, 0x2002021, 0xe000577, +0x0, 0x8f850020, 0xacb00000, 0x9362003e, +0x9363003f, 0x304200ff, 0x21200, 0x306300ff, +0x431025, 0xaca20004, 0x93620082, 0x21600, +0x21603, 0x4410005, 0x0, 0x3c030800, +0x8c630048, 0xa0010c8, 0x0, 0x9362003e, +0x30420040, 0x14400003, 0x1821, 0x93620081, +0x304300ff, 0x93620082, 0x31e00, 0x304200ff, +0x21400, 0x621825, 0xaca30008, 0x8f620040, +0xaca2000c, 0x8f620048, 0xaca20010, 0x8f62004c, +0xaca20014, 0x8f620050, 0x8f63004c, 0x431023, +0x4410003, 0x0, 0xa0010dc, 0x8f62004c, +0x8f620050, 0xaca20018, 0x3c020800, 0x94424ed6, +0x3c03c00b, 0x2021, 0x431025, 0xe00059c, +0xaca2001c, 0x8f620054, 0x8f840020, 0xac820000, +0x8f620058, 0xac820004, 0x8f62005c, 0xac820008, +0x8f620060, 0x8f430074, 0x431021, 0xac82000c, +0x8f620064, 0xac820010, 0x97630068, 0x9762006a, +0x31c00, 0x3042ffff, 0x621825, 0xac830014, +0x93620082, 0x24030080, 0x304200ff, 0x14430003, +0x0, 0xa001110, 0xac800018, 0x8f63000c, +0x24020001, 0x1062000e, 0x2402ffff, 0x9362003e, +0x30420040, 0x1440000a, 0x2402ffff, 0x8f63000c, +0x8f420074, 0x621823, 0x3c020800, 0x621024, +0x14400002, 0x2821, 0x602821, 0x51043, +0xac820018, 0x3c020800, 0x94424ed6, 0x3c03c00c, +0x2021, 0x431025, 0x8f830020, 0xe00059c, +0xac62001c, 0x8f620018, 0x8f830020, 0x3c050800, +0x94a54ed6, 0x24040001, 0xac620000, 0xac600004, +0x8f66006c, 0x3c02400d, 0xa22825, 0xac660008, +0x8f6200dc, 0xac62000c, 0xac600010, 0x93620005, +0x21600, 0xac620014, 0xac600018, 0xe00059c, +0xac65001c, 0x2002021, 0x8fbf0014, 0x8fb00010, +0xa3600005, 0xa000505, 0x27bd0018, 0x8fbf0014, +0x8fb00010, 0x3e00008, 0x27bd0018, 0x9742007c, +0x30c600ff, 0xa0860084, 0x3047ffff, 0x24020005, +0x14c2000b, 0x24e34650, 0x90a20112, 0x2c420007, +0x10400007, 0x24e30a00, 0x90a30112, 0x24020014, +0x621004, 0xe21021, 0xa001148, 0x3047ffff, +0x3067ffff, 0x3e00008, 0xa4870014, 0xac87004c, +0x8ca20108, 0x804021, 0xa04821, 0xe21023, +0x30c600ff, 0x18400003, 0x93aa0013, 0x24e2fffc, +0xaca20108, 0x30c20001, 0x10400008, 0x0, +0x8d020050, 0xe21023, 0x4410013, 0x24060005, +0x8d020054, 0x10e20010, 0x0, 0x8d020054, +0x14e2001a, 0x0, 0x3c020800, 0x8c4200d8, +0x30420020, 0x1040000a, 0x24020001, 0x91030078, +0x91020083, 0x14430006, 0x24020001, 0x1002021, +0x1202821, 0x24060004, 0xa001136, 0x0, +0xa1000084, 0x11400009, 0xa5020014, 0x8f430100, +0x8f4201f8, 0x440fffe, 0x24020002, 0xaf4301c0, +0xa34201c4, 0x3c021000, 0xaf4201f8, 0x3e00008, +0x0, 0x27bdffe8, 0x8fa90028, 0xafbf0010, +0x804021, 0xe91823, 0x18600073, 0x30c600ff, +0xa080007c, 0xa0800081, 0x8ca20108, 0xe21023, +0x440004d, 0x0, 0x8c820050, 0x9483003c, +0x8c840064, 0x474823, 0x3063ffff, 0x1231821, +0x83202b, 0x10800004, 0x0, 0x8d020064, +0xa001199, 0xe21021, 0x9502003c, 0x3042ffff, +0x1221021, 0xe21021, 0xad02005c, 0x9502003c, +0x8d03005c, 0x3042ffff, 0x21040, 0xe21021, +0x43102b, 0x10400003, 0x0, 0xa0011a8, +0x8d02005c, 0x9502003c, 0x3042ffff, 0x21040, +0xe21021, 0xad02005c, 0xa1000084, 0xad07004c, +0x8ca20108, 0xe21023, 0x18400002, 0x24e2fffc, +0xaca20108, 0x30c20001, 0x1040000a, 0x0, +0x8d020050, 0xe21023, 0x4410004, 0x1002021, +0x8d020054, 0x14e20003, 0x0, 0xa0011ca, +0x24060005, 0x8d020054, 0x14e20047, 0x8fbf0010, +0x3c020800, 0x8c4200d8, 0x30420020, 0x1040000a, +0x24020001, 0x91030078, 0x91020083, 0x14430006, +0x24020001, 0x1002021, 0x24060004, 0x8fbf0010, +0xa001136, 0x27bd0018, 0xa1000084, 0xa5020014, +0x8f430100, 0x8f4201f8, 0x440fffe, 0x24020002, +0xa0011ef, 0x0, 0x8c82005c, 0x491023, +0x43102b, 0x54400001, 0xac87005c, 0x9502003c, +0x3042ffff, 0x62102b, 0x14400007, 0x24020002, +0x9502003c, 0x8d03005c, 0x3042ffff, 0x621821, +0xad03005c, 0x24020002, 0xad07004c, 0xa1020084, +0xe000fea, 0x8f440100, 0x1040001b, 0x8fbf0010, +0x8f430100, 0x8f4201f8, 0x440fffe, 0x24020002, +0xaf4301c0, 0xa34201c4, 0x3c021000, 0xaf4201f8, +0xa001205, 0x8fbf0010, 0x30c20010, 0x1040000e, +0x8fbf0010, 0x8c83005c, 0x9482003c, 0x691823, +0x3042ffff, 0x621821, 0x3c023fff, 0x3444ffff, +0x83102b, 0x54400001, 0x801821, 0x1231021, +0xad02005c, 0x8fbf0010, 0x3e00008, 0x27bd0018, +0x27bdffe8, 0x8faa0028, 0xafbf0010, 0x804021, +0xea4823, 0x19200021, 0x30c600ff, 0x8c83005c, +0x8c820064, 0x6a1823, 0x43102b, 0x50400010, +0x691821, 0x94a20110, 0x1221021, 0xa4a20110, +0x94a20110, 0x3042ffff, 0x43102b, 0x1440000a, +0x3c023fff, 0x94a20110, 0x431023, 0xa4a20110, +0x9482003c, 0x3042ffff, 0xa001224, 0x621821, +0xa4a00110, 0x3c023fff, 0x3444ffff, 0x83102b, +0x54400001, 0x801821, 0x671021, 0xad02005c, +0xa100007c, 0xa00126c, 0xa1000081, 0x30c20010, +0x1040003c, 0x0, 0x8c820050, 0x4a1023, +0x18400038, 0x0, 0x9082007c, 0x24420001, +0xa082007c, 0x9082007c, 0x3c030800, 0x8c630024, +0x304200ff, 0x43102b, 0x1440005c, 0x8fbf0010, +0x8ca20108, 0xe21023, 0x18400058, 0x0, +0x8c830054, 0x9482003c, 0x6a1823, 0x3042ffff, +0x31843, 0x21040, 0x43102a, 0x10400005, +0x0, 0x8c820054, 0x4a1023, 0xa001253, +0x21043, 0x9482003c, 0x3042ffff, 0x21040, +0xad020064, 0x9502003c, 0x8d040064, 0x9503003c, +0x3042ffff, 0x21040, 0x822021, 0x3063ffff, +0x831821, 0x1431021, 0xad02005c, 0x8d020054, +0xaca20108, 0x24020002, 0xa1020084, 0xe000fea, +0x8f440100, 0x10400035, 0x8fbf0010, 0x8f430100, +0x8f4201f8, 0x440fffe, 0x24020002, 0xa001295, +0x0, 0xad07004c, 0x8ca20108, 0xe21023, +0x18400002, 0x24e2fffc, 0xaca20108, 0x30c20001, +0x1040000a, 0x0, 0x8d020050, 0xe21023, +0x4410004, 0x1002021, 0x8d020054, 0x14e20003, +0x0, 0xa00128c, 0x24060005, 0x8d020054, +0x14e2001a, 0x8fbf0010, 0x3c020800, 0x8c4200d8, +0x30420020, 0x1040000a, 0x24020001, 0x91030078, +0x91020083, 0x14430006, 0x24020001, 0x1002021, +0x24060004, 0x8fbf0010, 0xa001136, 0x27bd0018, +0xa1000084, 0xa5020014, 0x8f430100, 0x8f4201f8, +0x440fffe, 0x24020002, 0xaf4301c0, 0xa34201c4, +0x3c021000, 0xaf4201f8, 0x8fbf0010, 0x3e00008, +0x27bd0018, 0x8faa0010, 0x8c820050, 0x804021, +0x30c600ff, 0x4a1023, 0xa04821, 0x18400007, +0xe01821, 0x24020001, 0xa0800084, 0xa0a00112, +0xa4820014, 0xa001207, 0xafaa0010, 0xa0800081, +0xad07004c, 0x8ca20108, 0xe21023, 0x18400002, +0x24e2fffc, 0xaca20108, 0x30c20001, 0x10400008, +0x0, 0x8d020050, 0x621023, 0x4410013, +0x24060005, 0x8d020054, 0x10620010, 0x0, +0x8d020054, 0x14620011, 0x0, 0x3c020800, +0x8c4200d8, 0x30420020, 0x1040000a, 0x24020001, +0x91030078, 0x91020083, 0x14430006, 0x24020001, +0x1002021, 0x1202821, 0x24060004, 0xa001136, +0x0, 0xa1000084, 0xa5020014, 0x3e00008, +0x0, 0x27bdffe0, 0xafbf0018, 0x27420100, +0x9046000a, 0x8c480014, 0x8c8b004c, 0x90820084, +0x30c900ff, 0x1681823, 0x304a00ff, 0x1c60001a, +0x2d460006, 0x24020001, 0x1421004, 0x10c00016, +0x30430003, 0x1203021, 0x1003821, 0x14600007, +0x304c000c, 0x15800009, 0x30420030, 0x1440000b, +0x8fbf0018, 0xa0012f6, 0x0, 0xe001207, +0xafab0010, 0xa0012f6, 0x8fbf0018, 0xe00117c, +0xafab0010, 0xa0012f6, 0x8fbf0018, 0xafab0010, +0xe00129c, 0xafaa0014, 0x8fbf0018, 0x3e00008, +0x27bd0020, 0x24020003, 0xa0820084, 0x8c820054, +0x3e00008, 0xaca20108, 0x3c020008, 0x3421821, +0x90620081, 0x24060043, 0x3c076019, 0x24420001, +0xa0620081, 0x90630081, 0x3c020800, 0x8c4200c0, +0x306300ff, 0x14620010, 0x2403ff80, 0x3c020800, +0x8c4200e0, 0x821021, 0x431024, 0xaf420024, +0x3c020800, 0x8c4200e0, 0x3c03000a, 0x821021, +0x3042007f, 0x3421021, 0x431021, 0x944500d4, +0xa000bd2, 0x30a5ffff, 0x3e00008, 0x0, +0x27bdffe0, 0xafbf0018, 0xafb10014, 0xafb00010, +0x8f420180, 0x808021, 0xa08821, 0xe0012fd, +0x402021, 0xa2000084, 0x8e020054, 0x8fbf0018, +0x8fb00010, 0xae220108, 0x8fb10014, 0x3e00008, +0x27bd0020, 0x27bdffe0, 0x3c020008, 0xafb00010, +0xafbf0018, 0xafb10014, 0x3428021, 0x8f510140, +0x92030084, 0x8e040050, 0x8e02004c, 0x14820040, +0x306600ff, 0x3c020800, 0x8c4200e0, 0x2403ff80, +0x2221021, 0x431024, 0xaf420024, 0x3c020800, +0x8c4200e0, 0x9744007c, 0x92050081, 0x2221021, +0x3042007f, 0x3421821, 0x3c02000a, 0x621821, +0x14a0000b, 0x3084ffff, 0x24020005, 0x54c20014, +0x248205dc, 0x90620112, 0x24420001, 0xa0620112, +0x24020c80, 0xaf420024, 0xa001355, 0x24020005, +0xa0600112, 0x24020005, 0x14c20009, 0x248205dc, +0x92020081, 0x2c420007, 0x50400005, 0x24820a00, +0x92030081, 0x24020014, 0x621004, 0x821021, +0x3044ffff, 0xa6040014, 0xe0012fd, 0x2202021, +0x9602003c, 0x8e03004c, 0x2202021, 0x3042ffff, +0x21040, 0x621821, 0xe000348, 0xae03005c, +0x9202007d, 0x2202021, 0x34420040, 0xe000351, +0xa202007d, 0x8f4201f8, 0x440fffe, 0x24020002, +0xaf5101c0, 0xa34201c4, 0x3c021000, 0xaf4201f8, +0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x3e00008, +0x27bd0020, 0x0 }; +u32 bce_COM_b06FwData[(0x0/4) + 1] = { 0x0 }; +u32 bce_COM_b06FwRodata[(0x14/4) + 1] = { +0x8000ec8, +0x8000f10, 0x8000f50, 0x8000f9c, 0x8000fd0, +0x0 }; +u32 bce_COM_b06FwBss[(0xbc/4) + 1] = { 0x0 }; +u32 bce_COM_b06FwSbss[(0x38/4) + 1] = { 0x0 }; +u32 bce_COM_b06FwSdata[(0x0/4) + 1] = { 0x0 }; + + +int bce_RXP_b06FwReleaseMajor = 0x1; +int bce_RXP_b06FwReleaseMinor = 0x0; +int bce_RXP_b06FwReleaseFix = 0x0; +u32 bce_RXP_b06FwStartAddr = 0x080031d8; +u32 bce_RXP_b06FwTextAddr = 0x08000000; +int bce_RXP_b06FwTextLen = 0x70dc; +u32 bce_RXP_b06FwDataAddr = 0x00000000; +int bce_RXP_b06FwDataLen = 0x0; +u32 bce_RXP_b06FwRodataAddr = 0x080070dc; +int bce_RXP_b06FwRodataLen = 0x24; +u32 bce_RXP_b06FwBssAddr = 0x08007178; +int bce_RXP_b06FwBssLen = 0x450; +u32 bce_RXP_b06FwSbssAddr = 0x08007120; +int bce_RXP_b06FwSbssLen = 0x54; +u32 bce_RXP_b06FwSDataAddr = 0x00000000; +int bce_RXP_b06FwSDataLen = 0x0; +u32 bce_RXP_b06FwText[(0x70dc/4) + 1] = { +0xa000c76, 0x0, 0x0, +0xd, 0x72787034, 0x2e362e31, 0x37000000, +0x4061103, 0x0, 0x1, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x10000003, 0x0, 0xd, 0xd, +0x3c020800, 0x24427120, 0x3c030800, 0x246375c8, +0xac400000, 0x43202b, 0x1480fffd, 0x24420004, +0x3c1d0800, 0x37bd7ffc, 0x3a0f021, 0x3c100800, +0x261031d8, 0x3c1c0800, 0x279c7120, 0xe001164, +0x0, 0xd, 0x30a5ffff, 0x30c600ff, +0x27430180, 0x8f4201b8, 0x440fffe, 0x24020002, +0xac640000, 0xa4650008, 0xa066000a, 0xa062000b, +0x3c021000, 0xac670018, 0x3e00008, 0xaf4201b8, +0x3c036000, 0x8c624ff8, 0x440fffe, 0x3c020200, +0xac644fc0, 0xac624fc4, 0x3c021000, 0x3e00008, +0xac624ff8, 0x27bdffe8, 0xafbf0014, 0xafb00010, +0xe0011b3, 0x808021, 0x93620005, 0x2403fffe, +0x2002021, 0x431024, 0x8fbf0014, 0x8fb00010, +0xa3620005, 0xa0011bc, 0x27bd0018, 0x27bdffe8, +0xafb00010, 0xafbf0014, 0xe000ea4, 0x808021, +0x93620000, 0x24030050, 0x304200ff, 0x14430004, +0x24020100, 0xaf420180, 0xa000cc1, 0x2002021, +0xaf400180, 0x2002021, 0x8fbf0014, 0x8fb00010, +0xa000f7d, 0x27bd0018, 0x27bdff98, 0xafbe0060, +0xafb7005c, 0xafb20048, 0xafbf0064, 0xafb60058, +0xafb50054, 0xafb40050, 0xafb3004c, 0xafb10044, +0xafb00040, 0x8f500128, 0x9363003f, 0x93620005, +0xf021, 0x307200ff, 0x21027, 0x30420001, +0xb821, 0x14400066, 0xafa00038, 0x93420116, +0x93430112, 0x304200ff, 0x306300ff, 0x3422021, +0x3431021, 0x24454000, 0x8f820000, 0x10400018, +0x24884000, 0x8f420104, 0x3c030001, 0x431024, +0x10400013, 0x0, 0x8ca3000c, 0x8f620030, +0x146201a2, 0x24020001, 0x8ca30010, 0x8f62002c, +0x1462019e, 0x24020001, 0x9762003a, 0x94834000, +0x3042ffff, 0x14620199, 0x24020001, 0x97620038, +0x95030002, 0x3042ffff, 0x14620194, 0x24020001, +0x93620000, 0x304300ff, 0x24020020, 0x10620005, +0x24020050, 0x10620006, 0x0, 0xa000d0b, +0x0, 0xd, 0xa000d14, 0xafa00030, +0x3c1e0800, 0x27de7188, 0xa000d14, 0xafa00030, +0x3c020800, 0x8c4200dc, 0x24420001, 0x3c010800, +0xac2200dc, 0xe00127d, 0x0, 0xa000e8f, +0x8fbf0064, 0x8f420104, 0x3c030020, 0x9113000d, +0x431024, 0x2202b, 0x42140, 0xafa40030, +0x8f430104, 0x3c020040, 0x621824, 0x14600002, +0x34870040, 0x803821, 0x32620020, 0xafa70030, +0x14400002, 0x34e60080, 0xe03021, 0x10c0000b, +0xafa60030, 0x93c50008, 0x8f67004c, 0x2002021, +0x52b00, 0x34a50081, 0x30a5f081, 0xe000c8d, +0x30c600ff, 0xa000e8c, 0x0, 0x9362003e, +0x30420040, 0x1040000e, 0x24020004, 0x56420006, +0x24020012, 0x2002021, 0xe0013da, 0x1003021, +0xa000e8f, 0x8fbf0064, 0x16420005, 0x0, +0xe000cb2, 0x2021, 0xa000e8f, 0x8fbf0064, +0x9742011a, 0x9504000e, 0x93630035, 0x32650004, +0x3055ffff, 0x642004, 0xafa4003c, 0x8d110004, +0x10a00015, 0x8d140008, 0x9362003e, 0x30420040, +0x10400007, 0x0, 0xe00133b, 0x2202021, +0x1040000d, 0x0, 0xa000e8c, 0x0, +0x8f620044, 0x2221023, 0x4400132, 0x0, +0x8f620048, 0x2221023, 0x441012e, 0x24040016, +0xa000da2, 0x8fc20004, 0x8f620048, 0x2221023, +0x4400008, 0x0, 0x3c020800, 0x8c423100, +0x24420001, 0x3c010800, 0xac223100, 0xa000e81, +0x0, 0x8f620040, 0x2221023, 0x18400009, +0x2402000c, 0x3c020800, 0x8c423100, 0x327300fc, +0xa821, 0x24420001, 0x3c010800, 0xac223100, +0x2402000c, 0xafa20030, 0x8f620040, 0x511823, +0x1860000d, 0x2a3102a, 0x14400103, 0x0, +0x14750006, 0x2a31023, 0x3a620001, 0x30420001, +0x144000fd, 0x0, 0x2a31023, 0x2238821, +0xa000d8a, 0x3055ffff, 0x1821, 0x32620002, +0x1040001a, 0x32620010, 0x9362003e, 0x30420040, +0x50400011, 0x8fc20004, 0xe0011b3, 0x2002021, +0x24020018, 0xa362003f, 0x93620005, 0x2403fffe, +0x2002021, 0x431024, 0xe0011bc, 0xa3620005, +0x24040039, 0x2821, 0xe001324, 0x24060018, +0xa000e8e, 0x24020001, 0x24040017, 0x40f809, +0x0, 0xa000e8e, 0x24020001, 0x104000e5, +0x0, 0x8f64004c, 0x8f620054, 0x2821023, +0x1c4000e0, 0x2841023, 0x4420001, 0x80a021, +0xafa30018, 0xafb10010, 0xafb50014, 0x93420120, +0x8f660040, 0x9764003c, 0x304200ff, 0x3422821, +0x8fa2003c, 0xa32821, 0x8fa30030, 0x3084ffff, +0x44202b, 0x8fc20000, 0x641825, 0x24a54000, +0xafa50020, 0xafa60028, 0xafa30030, 0xafa60024, +0xafa0002c, 0xafb40034, 0x40f809, 0x27a40010, +0x8fa20030, 0x30420002, 0x54400001, 0x327300fe, +0x9362003e, 0x30420040, 0x10400037, 0x8fa30014, +0x8f620054, 0x1682001a, 0x32620001, 0x24020014, +0x12420010, 0x2a420015, 0x10400006, 0x24020016, +0x2402000c, 0x12420007, 0x32620001, 0xa000deb, +0x0, 0x12420005, 0x32620001, 0xa000deb, +0x0, 0xa000de6, 0x2417000e, 0xa000de6, +0x24170010, 0xa000dea, 0x24170012, 0x93620023, +0x2403ffbd, 0x431024, 0xa3620023, 0x32620001, +0x10400019, 0x8fa30014, 0x2402000c, 0x1242000e, +0x2a42000d, 0x10400006, 0x2402000e, 0x2402000a, +0x12420007, 0x8fa20024, 0xa000e03, 0x24420001, +0x12420008, 0x8fa20024, 0xa000e03, 0x24420001, +0xa000e01, 0x24170008, 0x2402000e, 0x16e20002, +0x24170016, 0x24170010, 0x8fa20024, 0x24420001, +0xafa20024, 0x8fa30014, 0x8fa20024, 0x8f760040, +0x431021, 0xaf620040, 0x8fa2003c, 0x93640036, +0x8f630040, 0x2829021, 0x3402ffff, 0x821004, +0x621821, 0xaf630048, 0x8fa60030, 0x30c20008, +0x1040000e, 0x0, 0x8f620058, 0x16420004, +0x30c600ff, 0x9742011a, 0x50400001, 0x34c60010, +0x93c50008, 0x8fa70034, 0x2002021, 0x52b00, +0x34a50080, 0xe000c8d, 0x30a5f080, 0x8f620040, +0x561023, 0x18400017, 0x8fa20018, 0x3c020800, +0x8c423198, 0x30420010, 0x10400009, 0x24020001, +0x97620068, 0x14400006, 0x24020001, 0xa7620068, +0x9742007a, 0x2442000a, 0xa000e47, 0xa7620012, +0xa7620012, 0xe0011b3, 0x2002021, 0x9362007d, +0x24030001, 0x2002021, 0x34420001, 0xa000e45, +0xafa30038, 0x1840000a, 0x0, 0xe0011b3, +0x2002021, 0x9362007d, 0x24030001, 0x2002021, +0xafa30038, 0x34420004, 0xe0011bc, 0xa362007d, +0x9362003e, 0x30420040, 0x1440000c, 0x32620001, +0x1040000a, 0x0, 0x8f630040, 0x8fc20004, +0x24040018, 0x24630001, 0x40f809, 0xaf630040, +0x8fa20030, 0xa000e8e, 0x30420004, 0x8f620058, +0x10520010, 0x0, 0x8f620018, 0x2221023, +0x1c400008, 0x24020001, 0x8f620018, 0x16220009, +0x0, 0x8f62001c, 0x2821023, 0x4400005, +0x24020001, 0xaf720058, 0xafa20038, 0xaf710018, +0xaf74001c, 0x12e0000b, 0x8fa30038, 0xe0011b3, +0x2002021, 0xa377003f, 0xe0011bc, 0x2002021, +0x2e03021, 0x24040037, 0xe001324, 0x2821, +0x8fa30038, 0x10600003, 0x0, 0xe000c9b, +0x2002021, 0x12a00005, 0x1821, 0x8fa20030, +0x30420004, 0x50400011, 0x601021, 0x24030001, +0xa000e8e, 0x601021, 0xe0011b3, 0x2002021, +0x9362007d, 0x2002021, 0x34420004, 0xe0011bc, +0xa362007d, 0xe000c9b, 0x2002021, 0xa000e8e, +0x24020001, 0xaf400044, 0x24020001, 0x8fbf0064, +0x8fbe0060, 0x8fb7005c, 0x8fb60058, 0x8fb50054, +0x8fb40050, 0x8fb3004c, 0x8fb20048, 0x8fb10044, +0x8fb00040, 0x3e00008, 0x27bd0068, 0x8c870004, +0x8c860000, 0x1021, 0xe53821, 0xe5282b, +0xc23021, 0xc53021, 0xac870004, 0x3e00008, +0xac860000, 0x8f4201b8, 0x440fffe, 0x24020800, +0xaf4201b8, 0x3e00008, 0x0, 0x3c020008, +0x3422821, 0x94a20048, 0x3084ffff, 0x1040001b, +0x24840012, 0x94a20048, 0x3042ffff, 0x44102a, +0x10400017, 0x24020003, 0x2402001a, 0x93430120, +0xa342018b, 0x8f820008, 0x306300ff, 0x30424000, +0x10400009, 0x2463fffe, 0x94a20048, 0x3042ffff, +0x43102b, 0x14400005, 0x8f820014, 0xa7430194, +0xa000ec8, 0x34420001, 0x8f820014, 0x2403fffe, +0x431024, 0x3e00008, 0xaf820014, 0x24020003, +0x3e00008, 0xa342018b, 0x27bdffe0, 0xafb20018, +0xafb10014, 0xafb00010, 0xafbf001c, 0x30b1ffff, +0x30d0ffff, 0x30f2ffff, 0x8f4201b8, 0x440fffe, +0x0, 0xaf440180, 0xaf440020, 0xe000eaa, +0x2002021, 0x8f830008, 0x8f840014, 0xa751018c, +0xa750018e, 0xa7430190, 0x8f830004, 0x30828000, +0xaf4301a8, 0xa7520188, 0x1040000e, 0x8f820014, +0x93420116, 0x304200fc, 0x24420004, 0x5a1021, +0x8c424000, 0x3042ffff, 0x14400006, 0x8f820014, +0x3c02ffff, 0x34427fff, 0x821024, 0xaf820014, +0x8f820014, 0x2403bfff, 0x431024, 0xa74201a6, +0x9743010c, 0x8f420104, 0x31c00, 0x3042ffff, +0x621825, 0xaf4301ac, 0x3c021000, 0xaf4201b8, +0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x3e00008, 0x27bd0020, 0x27bdffe0, 0xafb20018, +0x30d2ffff, 0xaf440180, 0xaf440020, 0x2402021, +0xafb10014, 0xafb00010, 0x30f1ffff, 0xafbf001c, +0xe000eaa, 0x30b0ffff, 0x8f830014, 0x2402bfff, +0xa750018c, 0x621824, 0x8f820008, 0xa752018e, +0xa7510188, 0xa74301a6, 0xa7420190, 0x3c021000, +0xaf4201b8, 0x8fbf001c, 0x8fb20018, 0x8fb10014, +0x8fb00010, 0x3e00008, 0x27bd0020, 0x27430180, +0x8f4201b8, 0x440fffe, 0x24022000, 0xa4620008, +0x24020002, 0xa062000b, 0xa4600010, 0x3c021000, +0xaf4201b8, 0x3e00008, 0x0, 0x8f470070, +0x93420112, 0x8f830008, 0x27bdfff0, 0x304200ff, +0x22882, 0x30620100, 0x3021, 0x10400043, +0x24a40003, 0x30624000, 0x10400010, 0x30622000, +0x41080, 0x5a1021, 0x8c434000, 0x24a40004, +0x41080, 0xafa30000, 0x5a1021, 0x8c424000, +0xafa20004, 0x93420116, 0x304200fc, 0x5a1021, +0x8c424000, 0xa000f56, 0xafa20008, 0x1040002f, +0x3021, 0x41080, 0x5a1021, 0x8c434000, +0x24a40004, 0x41080, 0xafa30000, 0x5a1021, +0x8c424000, 0xafa00008, 0xafa20004, 0x8fa80008, +0x3021, 0x2021, 0x240a0008, 0x3c090800, +0x25290100, 0x3a41021, 0x148a0003, 0x42a00, +0x1100000a, 0x0, 0x90420000, 0x24840001, +0x2c83000c, 0xa21021, 0x21080, 0x491021, +0x8c420000, 0x1460fff3, 0xc23026, 0x3c040800, +0x8c843104, 0x8f420070, 0x2c830020, 0x10600009, +0x473823, 0x3c030800, 0x24633108, 0x41080, +0x431021, 0x24830001, 0xac470000, 0x3c010800, +0xac233104, 0xaf860004, 0x24060001, 0xc01021, +0x3e00008, 0x27bd0010, 0x3c020800, 0x8c420038, +0x27bdffd0, 0xafb50024, 0xafb3001c, 0xafbf0028, +0xafb40020, 0xafb20018, 0xafb10014, 0xafb00010, +0x3c150800, 0x26b50038, 0x14400002, 0x2453ffff, +0x9821, 0x8f840008, 0x30824000, 0x1040000a, +0x30828000, 0x3c020020, 0x821024, 0x50400006, +0x30828000, 0x8f820014, 0x2403bfff, 0x831824, +0xa000fa2, 0x34421000, 0x1040000a, 0x3c020020, +0x821024, 0x10400007, 0x8f820014, 0x3c03ffff, +0x34637fff, 0x831824, 0x34428000, 0xaf820014, +0xaf830008, 0xe000f2e, 0x0, 0x14400008, +0x8f840008, 0x9743011e, 0x9742011c, 0x3063ffff, +0x21400, 0x621825, 0xaf830004, 0x8f840008, +0x9742010c, 0x30831000, 0x10600011, 0x3046ffff, +0x30820020, 0x1440000f, 0x24120005, 0x3c021000, +0x821024, 0x1040000b, 0x24120001, 0x3c030e00, +0x3c020dff, 0x831824, 0x3442ffff, 0x43102b, +0x10400004, 0x0, 0xa000fc4, 0x24120005, +0x24120001, 0x3c050800, 0x8ca50034, 0x54a00019, +0x8f840008, 0x8f82001c, 0x54400016, 0x8f840008, +0x8f820014, 0x30424000, 0x54400012, 0x8f840008, +0x3c021f01, 0x821024, 0x3c031000, 0x1443000d, +0x8f840008, 0x30c20200, 0x1440000b, 0x3c020001, +0x9746010e, 0x36470002, 0x2021, 0x24c60004, +0x30c6ffff, 0xe000f05, 0x24050002, 0xa00108d, +0x8fbf0028, 0x3c020001, 0x821024, 0x1040000c, +0x8f830014, 0x3c020800, 0x8c4200d8, 0x9746010e, +0x24040080, 0x24420001, 0x30c6ffff, 0x24050002, +0x3c010800, 0xac2200d8, 0xa00108a, 0x24070003, +0x30624000, 0x10400006, 0x3c021000, 0x3c020f00, +0x821024, 0x50400001, 0x93420116, 0x3c021000, +0x821024, 0x10400044, 0x0, 0x3c020800, +0x8c420030, 0x1040000c, 0x30624000, 0x1040000a, +0x3c030f00, 0x831824, 0x3c020100, 0x43102b, +0x14400005, 0x0, 0x9746010e, 0x36470002, +0xa001087, 0x24040080, 0x10a0000d, 0x30820100, +0x1040000b, 0x3c020f00, 0x821024, 0x3c030200, +0x10430007, 0x8f820004, 0x531024, 0x551021, +0x90420004, 0x24420004, 0xa00103a, 0x221c0, +0x0, 0x8f860008, 0x3c050800, 0x8ca500d0, +0x61602, 0x3050000f, 0x38a20001, 0x2c420001, +0x2e03000c, 0x431024, 0x14400018, 0x1021c0, +0x2602fffc, 0x2c420004, 0x54400014, 0x2021, +0x38a20002, 0x2c420001, 0x431024, 0x10400003, +0x61242, 0xa00103a, 0x2021, 0x10182b, +0x431024, 0x50400009, 0x1021c0, 0x9746010e, +0x2021, 0x24050002, 0x24c60004, 0x30c6ffff, +0xe000ecd, 0x3247fffb, 0x1021c0, 0x9746010e, +0xa001087, 0x36470002, 0x8f424000, 0x3c110800, +0x8e310024, 0x30420100, 0x10400040, 0x32220001, +0x2208021, 0x10a00017, 0x32540004, 0x30820100, +0x10400015, 0x24020001, 0x3c020f00, 0x821024, +0x3c030200, 0x1043000f, 0x8f820004, 0x9746010e, +0x2403821, 0x531024, 0x551021, 0x90440004, +0x24c60004, 0x30c6ffff, 0x24840004, 0x421c0, +0xe000ecd, 0x24050002, 0x2402fffe, 0x2228024, +0x3252fffb, 0x24020001, 0x16020007, 0x32020001, +0x32420004, 0x50400001, 0x36520002, 0x9746010e, +0xa001086, 0x2403821, 0x1040000a, 0x32020004, +0x9746010e, 0x2403821, 0x2021, 0x24c60004, +0x30c6ffff, 0xe000ecd, 0x24050002, 0x3252fffb, +0x32020004, 0x1040000b, 0x8f820008, 0x30420800, +0x10400008, 0x0, 0x9746010e, 0x2403821, +0x24040100, 0x24c60004, 0x30c6ffff, 0xe000ecd, +0x24050002, 0x56800010, 0x8fbf0028, 0xe000f22, +0x0, 0xa00108d, 0x8fbf0028, 0x1040000a, +0x8fbf0028, 0x9746010e, 0x36470002, 0x2021, +0x24c60004, 0x30c6ffff, 0x24050002, 0xe000ecd, +0x0, 0x8fbf0028, 0x8fb50024, 0x8fb40020, +0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x1021, 0x3e00008, 0x27bd0030, 0x27430180, +0x8f4201b8, 0x440fffe, 0x0, 0x8f420148, +0x21402, 0xa4620008, 0x24020002, 0xa062000b, +0x8f420148, 0xa4620010, 0x8f420144, 0xac620024, +0x3c021000, 0x3e00008, 0xaf4201b8, 0x27bdffe8, +0xafb00010, 0x3c04600c, 0xafbf0014, 0x8c825000, +0x2403ff7f, 0x3c1a8000, 0x431024, 0x3442380c, +0xac825000, 0x24020003, 0x3c106000, 0xaf420008, +0x8e020808, 0x3c1b8008, 0x3c010800, 0xac200020, +0x3042fff0, 0x38420010, 0x2c420001, 0xe001b39, +0xaf820000, 0x3c04ffff, 0x3c020400, 0x34830806, +0x3442000c, 0xae021948, 0xae03194c, 0x3c056016, +0x8e021980, 0x8ca30000, 0x34420200, 0x641824, +0xae021980, 0x3c025353, 0x14620003, 0x34a47c00, +0x8ca20004, 0x502021, 0x8c82007c, 0x8c830078, +0x8fbf0014, 0x8fb00010, 0x27bd0018, 0xaf820018, +0x3e00008, 0xaf830010, 0x27bdffe8, 0xafbf0010, +0x8f434000, 0x3402ffff, 0x3c040800, 0x248400f0, +0x10620007, 0x0, 0x8f424000, 0x3c040800, +0x248400e8, 0x30420100, 0x10400009, 0x0, +0x9745010e, 0xe000e9a, 0x30a5ffff, 0x9745010e, +0x3c040800, 0x248431c8, 0xa0010fc, 0x8fbf0010, +0x8f434000, 0x8f820010, 0x3c040800, 0x248400e0, +0x1462000a, 0x0, 0x8f434004, 0x8f820018, +0x14620006, 0x0, 0x9745010e, 0x3c040800, +0x248431b8, 0xa0010fc, 0x8fbf0010, 0x9745010e, +0x8fbf0010, 0x30a5ffff, 0xa000e9a, 0x27bd0018, +0x27bdffe8, 0xafbf0010, 0x8f420128, 0xaf420020, +0x8f420104, 0x8f430100, 0xaf820008, 0xe000ea4, +0xaf830014, 0xe0010d5, 0x0, 0x3c020800, +0x8c4200c0, 0x10400008, 0x8f840008, 0x3c020800, +0x8c4200c4, 0x24420001, 0x3c010800, 0xac2200c4, +0xa001135, 0x0, 0x3c020010, 0x821024, +0x1440000a, 0x8f830014, 0x3c020800, 0x8c420020, +0x24420001, 0x3c010800, 0xac220020, 0xe000f7d, +0x2021, 0xa001133, 0x0, 0x2402bfff, +0x621024, 0x10400008, 0x0, 0x240287ff, +0x621024, 0x14400008, 0x3c020060, 0x821024, +0x10400005, 0x0, 0xe000cc5, 0x0, +0xa001133, 0x0, 0xe00119d, 0x0, +0x10400006, 0x3c024000, 0x8f430124, 0x3c026020, +0xac430014, 0x0, 0x3c024000, 0xaf420138, +0x0, 0x8fbf0010, 0x3e00008, 0x27bd0018, +0x27bdffe8, 0xafbf0010, 0x8f420140, 0x3c044000, +0xaf420020, 0x8f430148, 0x3c027000, 0x621824, +0x10640010, 0x83102b, 0x14400006, 0x3c026000, +0x3c022000, 0x10620007, 0x0, 0xa00115f, +0x3c024000, 0x1062000b, 0x3c024000, 0xa00115f, +0x0, 0xe001096, 0x0, 0xa00115f, +0x3c024000, 0xe0011c1, 0x0, 0xa00115f, +0x3c024000, 0xe001b46, 0x0, 0x3c024000, +0xaf420178, 0x0, 0x8fbf0010, 0x3e00008, +0x27bd0018, 0x27bdffe8, 0xafbf0014, 0xe0010a6, +0xafb00010, 0x3c028000, 0x34420070, 0x8c430000, +0x403821, 0xaf830020, 0x603021, 0x8ce80000, +0x3c050800, 0x8ca500fc, 0x3c040800, 0x8c8400f8, +0x1063023, 0x1021, 0xa62821, 0xa6302b, +0x822021, 0x862021, 0x3c010800, 0xac2500fc, +0x3c010800, 0xac2400f8, 0x8f500000, 0x32020003, +0x1040ffee, 0x1003021, 0x8ce60000, 0x3c050800, +0x8ca500fc, 0x3c040800, 0x8c8400f8, 0xc83023, +0xa62821, 0x1021, 0xa6302b, 0x822021, +0x862021, 0x32070001, 0x3c010800, 0xac2500fc, +0xaf880020, 0x3c010800, 0xac2400f8, 0x10e00004, +0x32020002, 0xe0010ff, 0x0, 0x32020002, +0x5040ffd1, 0x3c028000, 0xe00113f, 0x0, +0xa001169, 0x3c028000, 0x8f420100, 0x3042003e, +0x14400011, 0x24020001, 0xaf400048, 0x8f420100, +0x304207c0, 0x10400005, 0x0, 0xaf40004c, +0xaf400050, 0x3e00008, 0x24020001, 0xaf400054, +0xaf400040, 0x8f420100, 0x30423800, 0x54400001, +0xaf400044, 0x24020001, 0x3e00008, 0x0, +0x3c029000, 0x34420001, 0x822025, 0xaf440020, +0x8f420020, 0x440fffe, 0x0, 0x3e00008, +0x0, 0x3c028000, 0x34420001, 0x822025, +0x3e00008, 0xaf440020, 0x27bdffe0, 0xafb20018, +0xafbf001c, 0xafb10014, 0xafb00010, 0x8f500140, +0x8f510148, 0x3c028000, 0x119402, 0x2222024, +0x324300ff, 0x2402000e, 0x1062008a, 0x2862000f, +0x10400012, 0x28620037, 0x24020006, 0x1062003b, +0x28620007, 0x10400007, 0x24020009, 0x1060001a, +0x24020001, 0x10620025, 0x0, 0xa001276, +0x0, 0x1062007b, 0x2402000b, 0x1062005b, +0x3222ffff, 0xa001276, 0x0, 0x10400008, +0x24020038, 0x28620035, 0x10400080, 0x2402001f, +0x1062007e, 0x0, 0xa001276, 0x0, +0x1062007a, 0x24020080, 0x10620042, 0x0, +0xa001276, 0x0, 0x8f4201b8, 0x440fffe, +0x24020001, 0xaf500180, 0xaf400184, 0xa7520188, +0xa342018a, 0x24020002, 0xa342018b, 0xa7510190, +0x8f420144, 0xa001271, 0xaf4201a4, 0x1080000a, +0x24020002, 0x3c010800, 0xa0227178, 0x3c010800, +0xac307180, 0x8f420144, 0x3c010800, 0xac22717c, +0xa001278, 0x8fbf001c, 0x8f4201b8, 0x440fffe, +0x24020002, 0xa00125b, 0x0, 0x8f4201b8, +0x440fffe, 0x0, 0xaf500180, 0x3c020800, +0x90427178, 0x10400003, 0x1821, 0x3c030800, +0x8c637180, 0xaf430184, 0xa7520188, 0x3c020800, +0x90427178, 0x1821, 0x34420001, 0xa342018a, +0x24020002, 0xa342018b, 0xa7510190, 0x8f420144, +0xaf4201a4, 0x3c020800, 0x90427178, 0x10400003, +0x3c021000, 0x3c030800, 0x8c63717c, 0xaf4301a8, +0xaf4201b8, 0x3c010800, 0xa0207178, 0xa001278, +0x8fbf001c, 0x8f4201b8, 0x440fffe, 0x24020002, +0xa342018b, 0xa7520188, 0xa7510190, 0x8f420144, +0xa7420192, 0xa001273, 0x3c021000, 0x1440001d, +0x0, 0x93620005, 0x30420004, 0x14400037, +0x0, 0xe0011b3, 0x2002021, 0x93620005, +0x2002021, 0x34420004, 0xe0011bc, 0xa3620005, +0x93620005, 0x30420004, 0x14400002, 0x0, +0xd, 0x93620000, 0x24030020, 0x304200ff, +0x14430008, 0x0, 0x8f4201b8, 0x440fffe, +0x24020005, 0xaf500180, 0xa342018b, 0x3c021000, +0xaf4201b8, 0x8f4201b8, 0x440fffe, 0x24020002, +0xaf400180, 0xaf500184, 0xa7520188, 0xa342018a, +0xa342018b, 0xa7510190, 0xaf4001a4, 0x8f420144, +0xaf4201a8, 0xa001273, 0x3c021000, 0x8f4201b8, +0x440fffe, 0x24020001, 0xaf500180, 0xaf400184, +0xa7520188, 0xa342018a, 0x24020002, 0xa342018b, +0xa7510190, 0xaf4001a4, 0xaf4001a8, 0x3c021000, +0xaf4201b8, 0xa001278, 0x8fbf001c, 0xd, +0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x3e00008, 0x27bd0020, 0x27bdffe8, 0xafbf0010, +0xe000ea4, 0x0, 0xaf400180, 0x8fbf0010, +0x2021, 0xa000f7d, 0x27bd0018, 0x3084ffff, +0x30a5ffff, 0x1821, 0x10800007, 0x0, +0x30820001, 0x10400002, 0x42042, 0x651821, +0xa001289, 0x52840, 0x3e00008, 0x601021, +0x10c00006, 0x24c6ffff, 0x8ca20000, 0x24a50004, +0xac820000, 0xa001293, 0x24840004, 0x3e00008, +0x0, 0x10a00008, 0x24a3ffff, 0xac860000, +0x0, 0x0, 0x2402ffff, 0x2463ffff, +0x1462fffa, 0x24840004, 0x3e00008, 0x0, +0x27bdffe0, 0xafb20018, 0xafb10014, 0xafb00010, +0xafbf001c, 0x9482000c, 0xa08821, 0x24900014, +0x21302, 0x21080, 0x829021, 0x3021, +0xa02021, 0xe00129c, 0x24050005, 0x212102b, +0x10400057, 0x1021, 0x92030000, 0x2c620009, +0x50400051, 0x92020001, 0x31080, 0x3c030800, +0x246370dc, 0x431021, 0x8c420000, 0x400008, +0x0, 0x92030001, 0x2402000c, 0x14620048, +0x24020001, 0x2501023, 0x2c42000a, 0x14400036, +0x26100002, 0x8e220000, 0x34420100, 0xae220000, +0x92020000, 0x92030001, 0x92040002, 0x92050003, +0x31c00, 0x21600, 0x431025, 0x42200, +0x441025, 0x451025, 0x26100004, 0xae220004, +0x92020000, 0x92030001, 0x92040002, 0x92050003, +0x21600, 0x31c00, 0x431025, 0x42200, +0x441025, 0x451025, 0x26100004, 0xa0012b6, +0xae220008, 0x92030001, 0x24020004, 0x14620016, +0x26100002, 0x92020000, 0x92040001, 0x8e230000, +0x21200, 0x441025, 0x34630004, 0x26100002, +0xae22000c, 0xa0012b6, 0xae230000, 0x92030001, +0x24020003, 0x14620008, 0x26100002, 0x8e220000, +0x92030000, 0x26100001, 0x34420008, 0xa2230010, +0xa0012b6, 0xae220000, 0xa00130f, 0x24020001, +0x92030001, 0x24020002, 0x10620002, 0x26040002, +0x2402021, 0xa0012b6, 0x808021, 0xa0012b6, +0x26100001, 0x92020001, 0xa0012b6, 0x2028021, +0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x3e00008, 0x27bd0020, 0x27bdffe8, 0xafbf0014, +0xafb00010, 0xe0011b3, 0x808021, 0x9362007d, +0x2002021, 0x34420020, 0xe0011bc, 0xa362007d, +0x2002021, 0x8fbf0014, 0x8fb00010, 0xa000c9b, +0x27bd0018, 0x308300ff, 0x30a500ff, 0x30c600ff, +0x27470180, 0x8f4201b8, 0x440fffe, 0x0, +0x8f420128, 0x34634000, 0xace20000, 0x24020001, +0xace00004, 0xa4e30008, 0xa0e2000a, 0x24020002, +0xa0e2000b, 0x3c021000, 0xa4e50010, 0xace00024, +0xace00028, 0xa4e60012, 0x3e00008, 0xaf4201b8, +0x27bdffe8, 0xafbf0010, 0x9362003f, 0x24030012, +0x304200ff, 0x1043000d, 0x803021, 0x8f620044, +0x821023, 0x440000a, 0x8fbf0010, 0x8f620048, +0x24040039, 0x2821, 0xc21023, 0x4410004, +0x24060012, 0xe001324, 0x0, 0x8fbf0010, +0x24020001, 0x3e00008, 0x27bd0018, 0x27bdffc8, +0xafb1002c, 0xa08821, 0xafb20030, 0x27a50010, +0x809021, 0x2202021, 0xafbf0034, 0xe0012a7, +0xafb00028, 0x10400009, 0x2402021, 0x8e220008, +0xaf620084, 0xe001315, 0xaf600040, 0x24040038, +0x2405008d, 0xa0013d1, 0x24060012, 0x93620034, +0x93630037, 0x8f640084, 0x304200ff, 0x306300ff, +0x432821, 0xa4202b, 0x1080000b, 0x0, +0x9763003c, 0x8f620084, 0x3063ffff, 0x451023, +0x62182b, 0x14600004, 0x0, 0x8f620084, +0xa00137b, 0x458023, 0x9762003c, 0x3050ffff, +0x8fa30010, 0x30620004, 0x50400003, 0x2e020218, +0x8fa2001c, 0x202102b, 0x14400005, 0x2002021, +0x30620004, 0x10400002, 0x24040218, 0x8fa4001c, +0x2c820080, 0x10400002, 0x808021, 0x24100080, +0xe0011b3, 0x2402021, 0x24020001, 0xaf62000c, +0x9362003e, 0x102040, 0x3042007f, 0xa362003e, +0x8e220004, 0x24420001, 0xaf620040, 0xa770003c, +0x8f620050, 0x9623000e, 0x431021, 0xaf620058, +0x8f620050, 0x441021, 0xaf62005c, 0x8e220004, +0xaf620018, 0x8e220008, 0xaf62001c, 0x8fa20010, +0x30420008, 0x5440000a, 0x93a20020, 0xa3600036, +0x93620036, 0x2403ffdf, 0xa3620035, 0x9362003e, +0x431024, 0xa362003e, 0xa0013b1, 0x8e220008, +0xa3620035, 0x8e220008, 0xaf62004c, 0x8f620024, +0x8f630040, 0x431021, 0xaf620048, 0x93620000, +0x24030050, 0x304200ff, 0x14430012, 0x2403ff80, +0x3c020800, 0x8c4231a0, 0x2421021, 0x431024, +0xaf420028, 0x3c020800, 0x8c4231a0, 0x8e240008, +0x3c03000c, 0x2421021, 0x3042007f, 0x3421021, +0x431021, 0xac4400d8, 0x8e230008, 0xaf820028, +0xac4300dc, 0xe0011bc, 0x2402021, 0x24040038, +0x2821, 0x2406000a, 0xe001324, 0x0, +0x8fbf0034, 0x8fb20030, 0x8fb1002c, 0x8fb00028, +0x24020001, 0x3e00008, 0x27bd0038, 0x27bdffe8, +0xafbf0010, 0x90c7000d, 0xc02821, 0x30e60010, +0x10c0000a, 0x30e20004, 0x8ca30008, 0x8f620054, +0x10620006, 0x30e20004, 0x14400017, 0x8fbf0010, +0x2021, 0xa000cb2, 0x27bd0018, 0x1040000d, +0x30e30012, 0x10c00010, 0x8fbf0010, 0x8ca30008, +0x8f620054, 0x1462000d, 0x24020001, 0x24040038, +0x2405008d, 0xe001324, 0x24060012, 0xa0013fd, +0x8fbf0010, 0x24020012, 0x14620003, 0x8fbf0010, +0xa001352, 0x27bd0018, 0x24020001, 0x3e00008, +0x27bd0018, 0x27bdfff8, 0x27420180, 0xafa20000, +0x308a00ff, 0x8f4201b8, 0x440fffe, 0x0, +0x8f460128, 0x3c020800, 0x8c4231a0, 0x2403ff80, +0xaf860050, 0xc21021, 0x431024, 0xaf420024, +0x3c020800, 0x8c4231a0, 0x8fa90000, 0x8fa80000, +0xc21021, 0x3042007f, 0x3421821, 0x3c02000a, +0x621821, 0x946400d4, 0x8fa70000, 0x8fa50000, +0x24020002, 0xaf830028, 0xa0a2000b, 0x8fa30000, +0x35426000, 0x3084ffff, 0xa4e20008, 0x3c021000, +0xad260000, 0xad040004, 0xac600024, 0x27bd0008, +0xaf4201b8, 0x3e00008, 0x24020001, 0x8c820004, +0x8f830028, 0x451023, 0xac820004, 0x90620063, +0x3042007f, 0xa0620063, 0x8c820020, 0x93830030, +0x8f850028, 0x34420002, 0xaf830044, 0xa7800042, +0xac820020, 0xa4a000e4, 0x90a20063, 0x2403ffbf, +0x431024, 0x3e00008, 0xa0a20063, 0x27430180, +0x8f4201b8, 0x440fffe, 0x8f820050, 0xac620000, +0x8f420124, 0xac620004, 0x24026083, 0xa4620008, +0x24020002, 0xa062000b, 0x3c021000, 0x3e00008, +0xaf4201b8, 0x8f880044, 0x93820030, 0x8f830028, +0x3c070800, 0x24e77594, 0x481023, 0x304200ff, +0x304900fc, 0x24650088, 0x8f860048, 0x304a0003, +0x11200009, 0x2021, 0x24820004, 0x8ca30000, +0x304400ff, 0x89102a, 0xace30000, 0x24a50004, +0x1440fff9, 0x24e70004, 0x11400009, 0x2021, +0x24820001, 0x90a30000, 0x304400ff, 0x8a102b, +0xa0e30000, 0x24a50001, 0x1440fff9, 0x24e70001, +0x30c20003, 0x14400004, 0x8f850044, 0x31020003, +0x1040000d, 0x0, 0x10a00009, 0x2021, +0x24820001, 0x90c30000, 0x304400ff, 0x85102b, +0xa0e30000, 0x24c60001, 0x1440fff9, 0x24e70001, +0x3e00008, 0x0, 0x1100fffd, 0x2021, +0x24820004, 0x8cc30000, 0x304400ff, 0x88102b, +0xace30000, 0x24c60004, 0x1440fff9, 0x24e70004, +0x3e00008, 0x0, 0x8f830044, 0x93820030, +0x30c600ff, 0x30a500ff, 0x431023, 0x304300ff, +0x8f820028, 0x803821, 0x431021, 0x14c00002, +0x24480088, 0x833821, 0x30e20003, 0x14400005, +0x30a20003, 0x14400003, 0x30620003, 0x1040000d, +0x0, 0x10a00009, 0x2021, 0x24820001, +0x90e30000, 0x304400ff, 0x85102b, 0xa1030000, +0x24e70001, 0x1440fff9, 0x25080001, 0x3e00008, +0x0, 0x10a0fffd, 0x2021, 0x24820004, +0x8ce30000, 0x304400ff, 0x85102b, 0xad030000, +0x24e70004, 0x1440fff9, 0x25080004, 0x3e00008, +0x0, 0x27bdfff8, 0x2402ffff, 0xafa20000, +0x803821, 0x2405002f, 0x3c090800, 0x25297194, +0x240800ff, 0x2406ffff, 0x90e20000, 0x24a3ffff, +0x62202, 0xc21026, 0x304200ff, 0x21080, +0x491021, 0x8c420000, 0x306500ff, 0x24e70001, +0x14a8fff5, 0x823026, 0x61027, 0xafa20004, +0xafa20000, 0x2821, 0x27a60004, 0xc51023, +0x90440003, 0x24a20001, 0xbd1821, 0x304500ff, +0x2ca20004, 0x1440fff9, 0xa0640000, 0x8fa20000, +0x3e00008, 0x27bd0008, 0x804821, 0x30aaffff, +0x30c600ff, 0x30e7ffff, 0x27480180, 0x8f4201b8, +0x440fffe, 0x8f820050, 0xad020000, 0x8f420124, +0xad020004, 0x8d220020, 0xa5070008, 0xa102000a, +0x24020016, 0xa102000b, 0x93430120, 0x8d220008, +0x8d240004, 0x306300ff, 0x431021, 0x97830042, +0x441021, 0x8d250024, 0x431023, 0x3c030800, +0x8c6331a0, 0x8f840028, 0xa502000c, 0x246300e8, +0x2402ffff, 0xa50a000e, 0xa5030010, 0xa5060012, +0xad050018, 0xad020024, 0x94820114, 0x2403fff7, +0x3042ffff, 0xad020028, 0x8c820118, 0xad02002c, +0x3c021000, 0xad000030, 0xaf4201b8, 0x8d220020, +0x431024, 0x3e00008, 0xad220020, 0x8f820028, +0x30e7ffff, 0x804821, 0x904200d3, 0x30a5ffff, +0x30c600ff, 0x21100, 0x30420f00, 0xe23825, +0x27480180, 0x8f4201b8, 0x440fffe, 0x8f820050, +0xad020000, 0x8f420124, 0xad020004, 0x8d220020, +0xa5070008, 0xa102000a, 0x24020017, 0xa102000b, +0x93430120, 0x8d220008, 0x8d240004, 0x306300ff, +0x431021, 0x97830042, 0x441021, 0x8f840028, +0x431023, 0x3c030800, 0x8c6331a0, 0xa502000c, +0xa505000e, 0x246300e8, 0xa5030010, 0xa5060012, +0xad000014, 0x8d220024, 0xad020018, 0x8c82005c, +0xad02001c, 0x8c820058, 0xad020020, 0x2402ffff, +0xad020024, 0x948200e6, 0x3042ffff, 0xad020028, +0x94820060, 0x948300be, 0x30427fff, 0x3063ffff, +0x21200, 0x431021, 0xad02002c, 0x3c021000, +0xad000030, 0xaf4201b8, 0x948200be, 0x2403fff7, +0xa21021, 0xa48200be, 0x8d220020, 0x431024, +0x3e00008, 0xad220020, 0x27430180, 0x8f4201b8, +0x440fffe, 0x24020018, 0xac640000, 0xa062000b, +0x8f820028, 0x944200e6, 0xa4620010, 0x3c021000, +0xac600030, 0x3e00008, 0xaf4201b8, 0x27430180, +0x8f4201b8, 0x440fffe, 0x8f82002c, 0x9442001c, +0x3042ffff, 0x211c0, 0xac620000, 0x24020019, +0xa062000b, 0x3c021000, 0xac600030, 0x3e00008, +0xaf4201b8, 0x8f870034, 0x30c300ff, 0x8f4201b8, +0x440fffe, 0x8f820050, 0x34636000, 0xaca20000, +0x9382004c, 0xa0a20005, 0x8ce20010, 0xa4a20006, +0xa4a30008, 0x8c820020, 0x2403fff7, 0xa0a2000a, +0x24020002, 0xa0a2000b, 0x8ce20000, 0xaca20010, +0x8ce20004, 0xaca20014, 0x8ce2001c, 0xaca20024, +0x8ce20020, 0xaca20028, 0x8ce2002c, 0xaca2002c, +0x8c820024, 0xaca20018, 0x3c021000, 0xaf4201b8, +0x8c820020, 0x431024, 0x3e00008, 0xac820020, +0x9382004c, 0x24030001, 0x27bdffe8, 0x433004, +0x2c420020, 0xafb00010, 0xafbf0014, 0x2410fffe, +0x10400005, 0x27450180, 0x3c020800, 0x8c423190, +0xa00159c, 0x461024, 0x3c020800, 0x8c423194, +0x461024, 0x14400007, 0x24060084, 0x8f830028, +0x2410ffff, 0x90620062, 0x3042000f, 0x34420040, +0xa0620062, 0xe001568, 0x0, 0x2001021, +0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, +0x8f83002c, 0x27bdffe0, 0xafb20018, 0xafb10014, +0xafb00010, 0xafbf001c, 0x9062000d, 0xa09021, +0x30d100ff, 0x3042007f, 0xa062000d, 0x8f850028, +0x8e430018, 0x808021, 0x8ca2007c, 0x14620005, +0x2402000e, 0x90a20063, 0x34420020, 0xa0015c5, +0xa0a20063, 0xe00158b, 0xa382004c, 0x2403ffff, +0x10430047, 0x2404ffff, 0x52200045, 0x2021, +0x8e430000, 0x3c020010, 0x621024, 0x50400004, +0x3c020008, 0x2002021, 0xa0015d4, 0x24020015, +0x621024, 0x50400009, 0x8e450000, 0x2002021, +0x24020014, 0xe00158b, 0xa382004c, 0x2403ffff, +0x10430033, 0x2404ffff, 0x8e450000, 0x3c020002, +0xa21024, 0x10400016, 0x3c020004, 0x8f86002c, +0x8cc20014, 0x8cc30010, 0x8cc40014, 0x431023, +0x44102b, 0x50400005, 0x2002021, 0x8e43002c, +0x8cc20010, 0x10620003, 0x2002021, 0xa001605, +0x24020012, 0x3c020004, 0xa21024, 0x5040001c, +0x2021, 0x2002021, 0xa001605, 0x24020013, +0xa21024, 0x10400006, 0x8f83002c, 0x8c620010, +0x50400013, 0x2021, 0xa0015ff, 0x2002021, +0x8c620010, 0x50400004, 0x8e42002c, 0x2002021, +0xa001605, 0x24020011, 0x50400009, 0x2021, +0x2002021, 0x24020017, 0xe00158b, 0xa382004c, +0x2403ffff, 0x10430002, 0x2404ffff, 0x2021, +0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x801021, 0x3e00008, 0x27bd0020, 0x93830030, +0x27bdffe0, 0x24020034, 0xafb20018, 0xafb10014, +0xafbf001c, 0xafb00010, 0x808821, 0x1462000c, +0xa09021, 0x8f840034, 0xe0014b4, 0x8c900030, +0x12020007, 0x24020005, 0x2202021, 0xe00158b, +0xa382004c, 0x2403ffff, 0x1043005f, 0x2404ffff, +0x92420004, 0x10400009, 0x8f820028, 0x2202021, +0x2402000c, 0xe00158b, 0xa382004c, 0x2403ffff, +0x10430055, 0x2404ffff, 0x8f820028, 0xa3800024, +0x8e430004, 0x8c440080, 0x3c0200ff, 0x3442ffff, +0x621824, 0x83202b, 0x10800008, 0xaf83003c, +0x2202021, 0x24020019, 0xe00158b, 0xa382004c, +0x2403ffff, 0x10430044, 0x2404ffff, 0x97820042, +0x8f870044, 0x8f88003c, 0x471023, 0x11000039, +0xa7820042, 0x8f860028, 0x3045ffff, 0x8f840050, +0x90c300bc, 0x3c020800, 0x8c4231a0, 0x31882, +0x30700001, 0x822021, 0x101080, 0x1021021, +0xa2282b, 0x10a00010, 0x24820088, 0x8f840034, +0x1082000d, 0x3c033f01, 0x8e420000, 0x431024, +0x3c032500, 0x14430006, 0x30e500ff, 0x8c820000, +0xacc20088, 0x8c820010, 0xa001665, 0xacc20098, +0xe001489, 0x3021, 0x8f85003c, 0x93830024, +0x8f860028, 0x30a20003, 0x21023, 0x30420003, +0x433821, 0xa3870024, 0x94c400e4, 0xa22821, +0x8f830044, 0x8f820048, 0x34841000, 0xa4c400e4, +0x431021, 0xaf820048, 0x1200000e, 0xaf850044, +0x24e20004, 0xa3820024, 0x94c200e4, 0x24a30004, +0xaf830044, 0x34422000, 0xa4c200e4, 0xa001685, +0x2021, 0x8f820048, 0xaf800044, 0x471021, +0xaf820048, 0x2021, 0x8fbf001c, 0x8fb20018, +0x8fb10014, 0x8fb00010, 0x801021, 0x3e00008, +0x27bd0020, 0x8f860028, 0x27bdffe8, 0xafbf0014, +0xafb00010, 0x90c20063, 0x30420020, 0x10400008, +0x30a500ff, 0x8cc2007c, 0x2403ffdf, 0x24420001, +0xacc2007c, 0x90c20063, 0x431024, 0xa0c20063, +0x10a00023, 0x8f830028, 0x27500180, 0x2002821, +0xe001568, 0x24060082, 0x8f820028, 0x90420063, +0x30420040, 0x50400019, 0xa380004c, 0x8f830034, +0x8f4201b8, 0x440fffe, 0x8f820050, 0xae020000, +0x24026082, 0xa6020008, 0x24020002, 0xa202000b, +0x8c620008, 0xae020010, 0x8c62000c, 0xae020014, +0x8c620014, 0xae020018, 0x8c620018, 0xae020024, +0x8c620024, 0xae020028, 0x8c620028, 0xae02002c, +0x3c021000, 0xaf4201b8, 0xa380004c, 0x8f830028, +0x8fbf0014, 0x8fb00010, 0x90620063, 0x27bd0018, +0x3042007f, 0xa0620063, 0x97820042, 0x8f860044, +0x8f850028, 0x93830030, 0x461023, 0xa7820042, +0xa4a000e4, 0x90a40063, 0x8f820048, 0xaf830044, +0x2403ffbf, 0x461021, 0x832024, 0xaf820048, +0xa0a40063, 0x8f820028, 0xa04000bd, 0x8f820028, +0x3e00008, 0xa44000be, 0x8f8a0028, 0x27bdffe0, +0xafb10014, 0xafb00010, 0x8f880044, 0xafbf0018, +0x93890024, 0x954200e4, 0x30d100ff, 0x109182b, +0x808021, 0x30ac00ff, 0x3047ffff, 0x5821, +0x14600003, 0x310600ff, 0x1203021, 0x1095823, +0x97830042, 0x68102b, 0x14400032, 0x0, +0x14680007, 0x24020001, 0x8e020020, 0x2403fffb, +0x34e78000, 0x431024, 0xae020020, 0x24020001, +0x34e70880, 0x15820005, 0x3165ffff, 0xe0014d9, +0x2002021, 0xa00171a, 0x2002021, 0xe00150a, +0x2002021, 0xe00154d, 0x8f840050, 0x8f840028, +0x94820060, 0x24420001, 0xa4820060, 0x94820060, +0x3c030800, 0x8c633188, 0x30427fff, 0x5443000f, +0x2002021, 0x94820060, 0x24038000, 0x431024, +0xa4820060, 0x90820060, 0x90830060, 0x304200ff, +0x211c2, 0x21027, 0x211c0, 0x3063007f, +0x621825, 0xa0830060, 0x2002021, 0x2202821, +0x8fbf0018, 0x8fb10014, 0x8fb00010, 0xa00168c, +0x27bd0020, 0x91420063, 0x2403ff80, 0x431025, +0xa1420063, 0x97820042, 0x3048ffff, 0x11000020, +0x93830024, 0x8f840028, 0x4b1023, 0x304600ff, +0x948300e4, 0x2402efff, 0x168282b, 0x621824, +0xa48300e4, 0x14a00003, 0x8e020020, 0x1005821, +0x3021, 0x2403fffb, 0x34e78000, 0x431024, +0xae020020, 0x24020001, 0x15820005, 0x3165ffff, +0xe0014d9, 0x2002021, 0xa001742, 0x97830042, +0xe00150a, 0x2002021, 0x97830042, 0x8f820044, +0xa7800042, 0x431023, 0xaf820044, 0x93830024, +0x8f820028, 0x8fbf0018, 0x8fb10014, 0x8fb00010, +0x27bd0020, 0x3e00008, 0xa04300bd, 0x8f820028, +0x90430088, 0x904500bd, 0x24490088, 0x3063003f, +0x2463ffe0, 0x24020001, 0x623804, 0x2c630020, +0x30e80019, 0xa3850024, 0x10600010, 0xaf890034, +0x3c028000, 0x34420002, 0x24050001, 0x24060001, +0x15000008, 0xe21824, 0x2821, 0x14600005, +0x30e20020, 0x10400005, 0x24050001, 0x91260001, +0x30c60001, 0xa0016d9, 0x0, 0x3e00008, +0x0, 0x27bdffd8, 0xafb00010, 0x8f900034, +0xafb40020, 0xafb10014, 0xafbf0024, 0xafb3001c, +0xafb20018, 0x8e050010, 0x3c020800, 0x8c4231b0, +0x8f860038, 0x30a33fff, 0x62182b, 0x8cd30014, +0x808821, 0x8cd20020, 0x10600078, 0xa021, +0x90c3000d, 0x2402ff80, 0x431024, 0x304200ff, +0x50400073, 0x2202021, 0x51382, 0x30420003, +0x5440006f, 0x2202021, 0x94c3001c, 0x8f820028, +0x8e050028, 0xa4430114, 0x8cc20010, 0x2621823, +0x14650007, 0x2402001f, 0x8f82003c, 0x621021, +0x262102b, 0x10400008, 0x8f83002c, 0x24020018, +0xe00158b, 0xa382004c, 0x2403ffff, 0x1043006f, +0x2404ffff, 0x8f83002c, 0x8f84003c, 0x8c620010, +0x2449021, 0x441023, 0xac620010, 0x8f820028, +0xac720020, 0x8c420068, 0x52102b, 0x10400009, +0x8f830038, 0x2202021, 0x2402001d, 0xe00158b, +0xa382004c, 0x2403ffff, 0x1043005c, 0x2404ffff, +0x8f830038, 0x8e020024, 0x8c630024, 0x10430007, +0x2202021, 0x2402001c, 0xe00158b, 0xa382004c, +0x2403ffff, 0x10430051, 0x2404ffff, 0x8f84002c, +0x8c820024, 0x24420001, 0xac820024, 0x12530004, +0x8f820028, 0x8c420068, 0x5642000e, 0x8e020000, +0x8e020000, 0x3c030080, 0x431024, 0x1440000d, +0x2402001a, 0x2202021, 0xe00158b, 0xa382004c, +0x2403ffff, 0x1043003d, 0x2404ffff, 0xa0017d6, +0x8e020014, 0x3c030080, 0x431024, 0x50400003, +0x8e020014, 0xac800020, 0x8e020014, 0x2412ffff, +0x10520006, 0x2402001b, 0x2202021, 0xe00158b, +0xa382004c, 0x1052002d, 0x2404ffff, 0x8e030000, +0x3c020001, 0x621024, 0x1040001f, 0x3c020080, +0x621024, 0x14400008, 0x2202021, 0x2402001a, +0xe00158b, 0xa382004c, 0x2403ffff, 0x1043001f, +0x2404ffff, 0x2202021, 0x2002821, 0xe0015ab, +0x24060001, 0x2403ffff, 0x2404ffff, 0x1443000e, +0x24140001, 0xa00180b, 0x8fbf0024, 0x2202021, +0x2402000d, 0x8fbf0024, 0x8fb40020, 0x8fb3001c, +0x8fb20018, 0x8fb10014, 0x8fb00010, 0x27bd0028, +0xa00158b, 0xa382004c, 0x8f83002c, 0x2202021, +0x2803021, 0x94620036, 0x24050001, 0x24420001, +0xe0016d9, 0xa4620036, 0x2021, 0x8fbf0024, +0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, +0x8fb00010, 0x801021, 0x3e00008, 0x27bd0028, +0x8f830028, 0x27bdffd8, 0xafb40020, 0xafb3001c, +0xafb20018, 0xafb10014, 0xafb00010, 0xafbf0024, +0x90620063, 0x8f910034, 0x2412ffff, 0x34420040, +0x92250000, 0xa0620063, 0x8e220010, 0x809821, +0x30b0003f, 0x10520006, 0x360a021, 0x2402000d, +0xe00158b, 0xa382004c, 0x10520052, 0x2404ffff, +0x8f830028, 0x8e220018, 0x8c63007c, 0x10430007, +0x2602021, 0x2402000e, 0xe00158b, 0xa382004c, +0x2403ffff, 0x10430047, 0x2404ffff, 0x24040020, +0x12040004, 0x8f830028, 0x90620063, 0x34420020, +0xa0620063, 0x8f85003c, 0x10a0001e, 0x0, +0x56040004, 0x8f820028, 0x2602021, 0xa001855, +0x2402000a, 0x9683000a, 0x2404fffd, 0x94420060, +0x3042ffff, 0x10430034, 0x8fbf0024, 0x3c020800, +0x8c42318c, 0x45102b, 0x14400006, 0x2602021, +0x2821, 0xe0016d9, 0x24060001, 0xa00187c, +0x2021, 0x2402002d, 0xe00158b, 0xa382004c, +0x2403ffff, 0x10430023, 0x2404ffff, 0xa00187c, +0x2021, 0x16040005, 0x8f840028, 0x8e230014, +0x2402ffff, 0x50620018, 0x2602021, 0x94820060, +0x24420001, 0xa4820060, 0x94820060, 0x3c030800, +0x8c633188, 0x30427fff, 0x5443000f, 0x2602021, +0x94820060, 0x24038000, 0x431024, 0xa4820060, +0x90820060, 0x90830060, 0x304200ff, 0x211c2, +0x21027, 0x211c0, 0x3063007f, 0x621825, +0xa0830060, 0x2602021, 0xe00168c, 0x24050001, +0x2021, 0x8fbf0024, 0x8fb40020, 0x8fb3001c, +0x8fb20018, 0x8fb10014, 0x8fb00010, 0x801021, +0x3e00008, 0x27bd0028, 0x8f830028, 0x27bdffe8, +0xafb00010, 0xafbf0014, 0x90620063, 0x8f870034, +0x808021, 0x34420040, 0x8ce60010, 0xa0620063, +0x3c030800, 0x8c6331b0, 0x30c23fff, 0x43102b, +0x1040004e, 0x8f850038, 0x2402ff80, 0x90a3000d, +0x431024, 0x304200ff, 0x50400049, 0x2002021, +0x61382, 0x30480003, 0x24020002, 0x55020044, +0x2002021, 0x94a2001c, 0x8f850028, 0x24030023, +0xa4a20114, 0x8ce60000, 0x61602, 0x3042003f, +0x10430010, 0x3c030083, 0x8ce30018, 0x8ca2007c, +0x10620006, 0x2402000e, 0xe00158b, 0xa382004c, +0x2403ffff, 0x10430038, 0x2404ffff, 0x8f830028, +0x90620063, 0x34420020, 0xa0620063, 0xa0018c1, +0x8f83002c, 0xc31024, 0x14430007, 0x8f83002c, +0x90a20062, 0x3042000f, 0x34420020, 0xa0a20062, +0xa3880040, 0x8f83002c, 0x9062000d, 0x3042007f, +0xa062000d, 0x8f83003c, 0x10600018, 0x2002021, +0x8f840038, 0x8c820010, 0x43102b, 0x10400009, +0x24020018, 0x2002021, 0xe00158b, 0xa382004c, +0x2403ffff, 0x10430018, 0x2404ffff, 0xa0018e9, +0x2021, 0x8c820010, 0x24050001, 0x2002021, +0x431023, 0x8f83002c, 0x24060001, 0xe0016d9, +0xac620010, 0xa0018e9, 0x2021, 0xe00168c, +0x24050001, 0xa0018e9, 0x2021, 0x2002021, +0x2402000d, 0x8fbf0014, 0x8fb00010, 0x27bd0018, +0xa00158b, 0xa382004c, 0x8fbf0014, 0x8fb00010, +0x801021, 0x3e00008, 0x27bd0018, 0x27bdffd8, +0xafb00010, 0x8f900034, 0xafb3001c, 0xafbf0020, +0xafb20018, 0xafb10014, 0x8e120010, 0x3c030800, +0x8c6331b0, 0x32423fff, 0x43102b, 0x1040007c, +0x809821, 0x8f850038, 0x2402ff80, 0x90a3000d, +0x431024, 0x304200ff, 0x50400076, 0x2602021, +0x121382, 0x30420003, 0x24030001, 0x54430071, +0x2602021, 0x90a2000d, 0x30420008, 0x54400003, +0x8f82003c, 0xa001919, 0x24020024, 0x50400003, +0x8e03000c, 0xa001919, 0x24020027, 0x8ca20020, +0x14620005, 0x24020020, 0x8e030008, 0x8ca20024, +0x10620008, 0x24020020, 0xe00158b, 0xa382004c, +0x2403ffff, 0x1043006a, 0x2404ffff, 0xa001944, +0x8f84002c, 0x8e020014, 0x2411ffff, 0x14510003, +0x8f870028, 0xa00193f, 0x24020025, 0x8e030018, +0x8ce2007c, 0x14620016, 0x2402000e, 0x8e030024, +0x8ca20028, 0x14620012, 0x24020021, 0x8e060028, +0x8ca2002c, 0x14c2000e, 0x2402001f, 0x8e03002c, +0x1060000b, 0x24020023, 0x8ce20068, 0x43102b, +0x14400007, 0x24020026, 0x8ca20014, 0x661821, +0x43102b, 0x50400007, 0x8f84002c, 0x24020022, +0xe00158b, 0xa382004c, 0x10510045, 0x2404ffff, +0x8f84002c, 0x2403fff7, 0x9082000d, 0x431024, +0xa082000d, 0x8f860028, 0x3c030800, 0x8c6331ac, +0x8f820050, 0x94c400e0, 0x8f85002c, 0x431021, +0x30847fff, 0x42040, 0x441021, 0x3043007f, +0x3432021, 0x3c03000e, 0x832021, 0x2403ff80, +0x431024, 0xaf42002c, 0xa4920000, 0x8ca20028, +0x24420001, 0xaca20028, 0x8ca2002c, 0x8e03002c, +0x431021, 0xaca2002c, 0x8e02002c, 0xaca20030, +0x8e020014, 0xaca20034, 0x94a2003a, 0x24420001, +0xa4a2003a, 0x94c600e0, 0x3c020800, 0x8c4231b0, +0x24c40001, 0x30837fff, 0x14620013, 0x803021, +0x24028000, 0x823024, 0x30c2ffff, 0x213c2, +0x304200ff, 0x21027, 0xa001981, 0x233c0, +0x2602021, 0x2402000d, 0x8fbf0020, 0x8fb3001c, +0x8fb20018, 0x8fb10014, 0x8fb00010, 0x27bd0028, +0xa00158b, 0xa382004c, 0x8f820028, 0x2602021, +0x24050001, 0xe00168c, 0xa44600e0, 0x2021, +0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, +0x8fb00010, 0x801021, 0x3e00008, 0x27bd0028, +0x27bdffe0, 0xafb10014, 0x8f910034, 0xafb00010, +0xafbf0018, 0x8e260010, 0x3c030800, 0x8c6331b0, +0x30c23fff, 0x43102b, 0x1040005e, 0x808021, +0x8f850038, 0x2402ff80, 0x90a3000d, 0x431024, +0x304200ff, 0x50400058, 0x2002021, 0x8f82003c, +0x10400008, 0x61382, 0x8f820028, 0x9763000a, +0x2404fffd, 0x94420060, 0x3042ffff, 0x10430055, +0x61382, 0x30420003, 0x1440000e, 0x0, +0x92220002, 0x10400005, 0x8e230024, 0x50600015, +0x92230003, 0xa0019ba, 0x2002021, 0x8ca20024, +0x50620010, 0x92230003, 0x2002021, 0xa0019c2, +0x2402000f, 0x90a2000d, 0x30420008, 0x54400009, +0x92230003, 0x2002021, 0x24020010, 0xe00158b, +0xa382004c, 0x2403ffff, 0x1043003a, 0x2404ffff, +0x92230003, 0x24020002, 0x5462000c, 0x92220003, +0x8f82003c, 0x54400009, 0x92220003, 0x2002021, +0x2402002c, 0xe00158b, 0xa382004c, 0x2403ffff, +0x1043002c, 0x2404ffff, 0x92220003, 0x2202821, +0x2002021, 0x38460010, 0x2cc60001, 0x2c420001, +0xe0015ab, 0x463025, 0x2411ffff, 0x10510021, +0x2404ffff, 0x8f83003c, 0x10600012, 0x2002021, +0x3c020800, 0x8c42318c, 0x43102b, 0x14400006, +0x0, 0x2821, 0xe0016d9, 0x24060001, +0xa001a00, 0x2021, 0x2402002d, 0xe00158b, +0xa382004c, 0x1051000f, 0x2404ffff, 0xa001a00, +0x2021, 0xe00168c, 0x24050001, 0xa001a00, +0x2021, 0x2002021, 0x2402000d, 0x8fbf0018, +0x8fb10014, 0x8fb00010, 0x27bd0020, 0xa00158b, +0xa382004c, 0x8fbf0018, 0x8fb10014, 0x8fb00010, +0x801021, 0x3e00008, 0x27bd0020, 0x93830040, +0x27bdffe0, 0x24020002, 0xafb10014, 0xafb00010, +0x808821, 0xafbf0018, 0x8021, 0x1062008c, +0x2404fffd, 0x97850042, 0x8f830044, 0x30a2ffff, +0x43102b, 0x5440007d, 0x8f840048, 0xe00144c, +0x0, 0x3c020800, 0x24427594, 0x2202021, +0x402821, 0xe001612, 0xaf820034, 0x2409ffff, +0x1049007b, 0x2404ffff, 0x3c080800, 0x8d0875a4, +0x3c020800, 0x8c4231b0, 0x3c030800, 0x90637594, +0x31043fff, 0x82102b, 0x1040001b, 0x3067003f, +0x3c020800, 0x8c4231a8, 0x8f830050, 0x42180, +0x621821, 0x641821, 0x3062007f, 0x3422821, +0x3c02000c, 0xa22821, 0x3c020080, 0x34420001, +0x30660078, 0xc23025, 0x2402ff80, 0x621024, +0xaf420028, 0x30640007, 0xaf420804, 0x8f820028, +0x3442021, 0x24840940, 0xaf460814, 0xaf85002c, +0xaf840038, 0xac430118, 0x93830040, 0x24020003, +0x1462003b, 0x24020001, 0x24020026, 0x10e2003d, +0x28e20027, 0x10400013, 0x24020032, 0x24020022, +0x10e20038, 0x28e20023, 0x10400008, 0x24020024, +0x24020020, 0x10e20024, 0x24020021, 0x10e2001e, +0x2202021, 0xa001a7f, 0x2402000b, 0x10e2002d, +0x24020025, 0x10e20010, 0x2202021, 0xa001a7f, +0x2402000b, 0x10e2001a, 0x28e20033, 0x10400006, +0x2402003f, 0x24020031, 0x10e2000b, 0x2202021, +0xa001a7f, 0x2402000b, 0x10e20011, 0x2202021, +0xa001a7f, 0x2402000b, 0xe00176c, 0x2202021, +0xa001a9a, 0x408021, 0xe0018ee, 0x2202021, +0xa001a9a, 0x408021, 0xe00198f, 0x2202021, +0xa001a9a, 0x408021, 0x1509000e, 0x0, +0xe001813, 0x2202021, 0xa001a9a, 0x408021, +0xe00158b, 0xa382004c, 0xa001a9a, 0x408021, +0x14620017, 0x2002021, 0x24020023, 0x14e20005, +0x2402000b, 0xe001885, 0x2202021, 0xa001a9a, +0x408021, 0x2202021, 0xa382004c, 0xe00158b, +0x2410ffff, 0xa001a9b, 0x2002021, 0x30a500ff, +0xe001489, 0x24060001, 0x97830042, 0x8f820044, +0xa7800042, 0x431023, 0xaf820044, 0x2002021, +0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x801021, +0x3e00008, 0x27bd0020, 0x27bdffe0, 0xafb10014, +0xafbf0018, 0xafb00010, 0x8f460128, 0x3c030800, +0x8c6331a0, 0x2402ff80, 0xaf860050, 0xc31821, +0x3065007f, 0x3452821, 0x621824, 0x3c02000a, +0xaf430024, 0xa22821, 0x90a20062, 0x808821, +0xaf850028, 0x304200ff, 0x21102, 0xa3820040, +0x90a200bc, 0x30420002, 0x14400002, 0x24030034, +0x24030030, 0x8f820028, 0xa3830030, 0x93830040, +0x8c4200c0, 0xa380004c, 0xaf820044, 0x24020004, +0x10620030, 0x8f840044, 0x8e240004, 0x5080002d, +0x8f840044, 0x8e220010, 0x3083ffff, 0xa7840042, +0x1060001f, 0xaf820048, 0x8f830028, 0x2405ff80, +0x2202021, 0x90620063, 0xa21024, 0x304200ff, +0x1440000d, 0x0, 0xe001a06, 0x97900042, +0x10400010, 0x401821, 0x2402fffd, 0x54620011, +0x8e230020, 0x2002821, 0xe00142a, 0x2202021, +0xa001aec, 0x8e230020, 0x90620063, 0xa21024, +0x304200ff, 0x10400003, 0x2202021, 0xe00174e, +0x0, 0x97820042, 0x1440ffe4, 0x8f830028, +0x8e230020, 0x30620004, 0x10400006, 0x8f840044, +0x2402fffb, 0x621024, 0xe00143e, 0xae220020, +0x8f840044, 0x8f830028, 0x8fbf0018, 0x8fb10014, +0x8fb00010, 0x24020001, 0x27bd0020, 0x3e00008, +0xac6400c0, 0x30a500ff, 0x24030001, 0x24a90001, +0x69102b, 0x1040000c, 0x4021, 0x240a0001, +0xa31023, 0x4a3804, 0x24630001, 0x30820001, +0x69302b, 0x10400002, 0x42042, 0x1074025, +0x54c0fff8, 0xa31023, 0x3e00008, 0x1001021, +0x27bdffe0, 0x3c021edc, 0xafb20018, 0xafb10014, +0xafbf001c, 0xafb00010, 0x34526f41, 0x8821, +0x24050008, 0xe001afc, 0x2202021, 0x118080, +0x3c070800, 0x24e77194, 0x21600, 0x2071821, +0xac620000, 0x2821, 0x24a20001, 0x3045ffff, +0x8c620000, 0x2ca60008, 0x4410002, 0x22040, +0x922026, 0x14c0fff8, 0xac640000, 0x2078021, +0x8e040000, 0xe001afc, 0x24050020, 0x26230001, +0x3071ffff, 0x2e230100, 0x1460ffe5, 0xae020000, +0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x3e00008, 0x27bd0020, 0x3c020800, 0x24426a84, +0x3c010800, 0xac227188, 0x3c020800, 0x24425000, +0x3c010800, 0xac22718c, 0x24020006, 0x3c010800, +0xa0227190, 0xa001b0f, 0x0, 0x27bdffd8, +0xafb3001c, 0xafb20018, 0xafbf0020, 0xafb10014, +0xafb00010, 0x8f510140, 0x8f480148, 0x89402, +0x324300ff, 0x311300ff, 0x8f4201b8, 0x440fffe, +0x27500180, 0xae110000, 0x8f420144, 0xae020004, +0x24020002, 0xa6120008, 0xa202000b, 0x24020014, +0xae130024, 0x10620025, 0x28620015, 0x10400008, +0x24020015, 0x24020010, 0x10620030, 0x24020012, +0x10620009, 0x8fbf0020, 0xa001c30, 0x8fb3001c, +0x10620067, 0x24020022, 0x10620037, 0x8fbf0020, +0xa001c30, 0x8fb3001c, 0x3c020800, 0x8c4231a0, +0x2403ff80, 0x2221021, 0x431024, 0xaf420024, +0x3c020800, 0x8c4231a0, 0x2221021, 0x3042007f, +0x3421821, 0x3c02000a, 0x621821, 0x166000b3, +0xaf830028, 0x90620062, 0x3042000f, 0x34420030, +0xa0620062, 0xa001c2f, 0x8fbf0020, 0x3c046000, +0x8c832c08, 0x3c02f003, 0x3442ffff, 0x621824, +0xac832c08, 0x3c020800, 0x8c4231a0, 0x8c832c08, +0x24420074, 0x21082, 0x21480, 0x621825, +0xac832c08, 0xa001c2f, 0x8fbf0020, 0x3c020800, +0x8c4231a0, 0x2403ff80, 0x2221021, 0x431024, +0xaf420024, 0x3c020800, 0x8c4231a0, 0x3c03000a, +0x2221021, 0x3042007f, 0x3421021, 0x431021, +0xa001c2e, 0xaf820028, 0x3c020800, 0x8c4231a0, +0x2404ff80, 0x2221021, 0x441024, 0xaf420024, +0x3c020800, 0x8c4231a0, 0x2221021, 0x3042007f, +0x3421821, 0x3c02000a, 0x621821, 0x90620063, +0x821024, 0x304200ff, 0x1040007c, 0xaf830028, +0x24620088, 0x94430012, 0x3c020800, 0x8c4231a8, +0x30633fff, 0x31980, 0x2221021, 0x431021, +0x3043007f, 0x3431821, 0x441024, 0x3c04000c, +0x641821, 0xaf420028, 0xe00155a, 0xaf83002c, +0x8f4201b8, 0x440fffe, 0x0, 0xae110000, +0x8f420144, 0xae020004, 0x24020002, 0xa6120008, +0xa202000b, 0xae130024, 0xa001c2f, 0x8fbf0020, +0x2406ff80, 0x2261024, 0xaf420020, 0x3c020800, +0x8c4231a0, 0x31043fff, 0x42180, 0x2221021, +0x461024, 0xaf420024, 0x3c030800, 0x8c6331a8, +0x3c020800, 0x8c4231a0, 0x3227007f, 0x2231821, +0x2221021, 0x641821, 0x3042007f, 0x3064007f, +0x3422821, 0x3c02000a, 0x661824, 0xa22821, +0x3442021, 0x3c02000c, 0x822021, 0xaf430028, +0x3c020008, 0x3471821, 0x629021, 0xaf850028, +0xaf84002c, 0xe00155a, 0x1008021, 0x8f4201b8, +0x440fffe, 0x8f82002c, 0x8f840028, 0x27450180, +0x9042000d, 0xacb10000, 0xa4b00006, 0x21600, +0x21603, 0x21027, 0x237c2, 0x14c00016, +0x24820088, 0x94420012, 0x32033fff, 0x30423fff, +0x14430012, 0x24026082, 0x90830063, 0x2402ff80, +0x431024, 0x304200ff, 0x5040000c, 0x24026082, +0x90820062, 0x3042000f, 0x34420040, 0xa0820062, +0x24026084, 0xa4a20008, 0x2402000d, 0xa0a20005, +0xa001c19, 0x3c022700, 0x24026082, 0xa4a20008, +0xa0a00005, 0x3c022700, 0x61c00, 0x621825, +0x24020002, 0xa0a2000b, 0xaca30010, 0xaca00014, +0xaca00024, 0xaca00028, 0xaca0002c, 0x8e42004c, +0x8f84002c, 0xaca20018, 0x9083000d, 0x2402ff80, +0x431024, 0x304200ff, 0x10400005, 0x8fbf0020, +0x9082000d, 0x3042007f, 0xa082000d, 0x8fbf0020, +0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x3c021000, 0x27bd0028, 0x3e00008, 0xaf4201b8, +0x0 }; +u32 bce_RXP_b06FwData[(0x0/4) + 1] = { 0x0 }; +u32 bce_RXP_b06FwRodata[(0x24/4) + 1] = { +0x8004c28, +0x8004c28, 0x8004ba0, 0x8004bd8, 0x8004c0c, +0x8004c30, 0x8004c30, 0x8004c30, 0x8004b10, +0x0 }; +u32 bce_RXP_b06FwBss[(0x450/4) + 1] = { 0x0 }; +u32 bce_RXP_b06FwSbss[(0x54/4) + 1] = { 0x0 }; +u32 bce_RXP_b06FwSdata[(0x0/4) + 1] = { 0x0 }; + + +int bce_TPAT_b06FwReleaseMajor = 0x1; +int bce_TPAT_b06FwReleaseMinor = 0x0; +int bce_TPAT_b06FwReleaseFix = 0x0; +u32 bce_TPAT_b06FwStartAddr = 0x08000488; +u32 bce_TPAT_b06FwTextAddr = 0x08000400; +int bce_TPAT_b06FwTextLen = 0x175c; +u32 bce_TPAT_b06FwDataAddr = 0x00000000; +int bce_TPAT_b06FwDataLen = 0x0; +u32 bce_TPAT_b06FwRodataAddr = 0x00000000; +int bce_TPAT_b06FwRodataLen = 0x0; +u32 bce_TPAT_b06FwBssAddr = 0x08001bc4; +int bce_TPAT_b06FwBssLen = 0x450; +u32 bce_TPAT_b06FwSbssAddr = 0x08001b80; +int bce_TPAT_b06FwSbssLen = 0x44; +u32 bce_TPAT_b06FwSDataAddr = 0x00000000; +int bce_TPAT_b06FwSDataLen = 0x0; +u32 bce_TPAT_b06FwText[(0x175c/4) + 1] = { +0xa000122, 0x0, 0x0, +0xd, 0x74706134, 0x2e362e31, 0x37000000, +0x4061101, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x10000003, 0x0, 0xd, 0xd, +0x3c020800, 0x24421b80, 0x3c030800, 0x24632014, +0xac400000, 0x43202b, 0x1480fffd, 0x24420004, +0x3c1d0800, 0x37bd2ffc, 0x3a0f021, 0x3c100800, +0x26100488, 0x3c1c0800, 0x279c1b80, 0xe00015a, +0x0, 0xd, 0x3084ffff, 0x30820007, +0x8f850018, 0x10400002, 0x24830007, 0x3064fff8, +0x853021, 0x30c41fff, 0x3441821, 0x247b4000, +0xaf85001c, 0xaf840018, 0x3e00008, 0xaf440084, +0x3084ffff, 0x30820007, 0x8f850020, 0x8f860028, +0x10400002, 0x24830007, 0x3064fff8, 0x852021, +0x86182b, 0x14600002, 0xaf850024, 0x862023, +0x3442821, 0x34068000, 0xaf840020, 0xaf440080, +0xa62021, 0x3e00008, 0xaf840038, 0x27bdffd8, +0xafb3001c, 0xafb20018, 0xafb00010, 0xafbf0024, +0xafb40020, 0xafb10014, 0x3c086008, 0x8d145000, +0x2418ff7f, 0x3c1a8000, 0x2989824, 0x3672380c, +0xad125000, 0x8f510008, 0x3c07601c, 0x3c086000, +0x36300001, 0xaf500008, 0xaf800018, 0xaf400080, +0xaf400084, 0x8ce60008, 0x8d0f0808, 0x3c076016, +0x8cec0000, 0x31eefff0, 0x39ca0010, 0x3c0dffff, +0x340b8000, 0x3c030080, 0x34b4821, 0x2d440001, +0x18d2824, 0x3c025353, 0x3c010800, 0xac230420, +0xaf890038, 0xaf860028, 0xaf840010, 0x275b4000, +0x14a20003, 0x34e37c00, 0x8cf90004, 0x3281821, +0x8c7f007c, 0x8c650078, 0x3c028000, 0x34520070, +0xaf85003c, 0xaf9f0040, 0x3c130800, 0x26731bc4, +0x240a021, 0x8e480000, 0x8f460000, 0x38c30001, +0x30640001, 0x10800017, 0xaf880034, 0x2804821, +0x8d2d0000, 0x3c190800, 0x8f39045c, 0x3c110800, +0x8e310458, 0x1a8f823, 0x33f7821, 0x4021, +0x2283821, 0x1ff802b, 0xf07021, 0x3c010800, +0xac2f045c, 0x3c010800, 0xac2e0458, 0x8f4c0000, +0x398b0001, 0x316a0001, 0x1540ffed, 0x1a04021, +0xaf8d0034, 0x8e4e0000, 0x3c0c0800, 0x8d8c045c, +0x3c0a0800, 0x8d4a0458, 0x1c86823, 0x18d2821, +0x5821, 0xad302b, 0x14b2021, 0x861021, +0x3c010800, 0xac25045c, 0x3c010800, 0xac220458, +0x8f450108, 0x8f440100, 0x30a92000, 0xaf850000, +0xaf84000c, 0x1120000a, 0xa03021, 0x3c070800, +0x8ce7042c, 0x24ef0001, 0x3c010800, 0xac2f042c, +0x3c104000, 0xaf500138, 0xa000190, 0x0, +0x30b00200, 0x16000014, 0x24110f00, 0x10910012, +0x24070d00, 0x10870233, 0x30b00006, 0x5200fff5, +0x3c104000, 0x936d0000, 0x240c0010, 0x31a600f0, +0x10cc0269, 0x240e0070, 0x10ce02dd, 0x8f8b0014, +0x25670001, 0xaf870014, 0x3c104000, 0xaf500138, +0xa000190, 0x0, 0x97480104, 0x1100ffe5, +0x3c104000, 0x30b84000, 0x170000a2, 0x0, +0x8f590178, 0x720fffe, 0x8f870038, 0x24090008, +0x24050800, 0x8ce30008, 0xaf450178, 0xa7490140, +0xa7400142, 0x97420104, 0x8f860000, 0x3049ffff, +0x30df0001, 0x13e002d5, 0x1204021, 0x2524fffe, +0x240a0002, 0xa74a0146, 0x3088ffff, 0xa7440148, +0x3c0b0800, 0x8d6b043c, 0x156002c4, 0x8f8f000c, +0x30c30020, 0x14600002, 0x24040009, 0x24040001, +0x30cd0c00, 0x240c0400, 0x51ac0001, 0x34840004, +0xa744014a, 0x3c050800, 0x8ca50420, 0x3c020048, +0x3c190001, 0xa2f825, 0x30d80002, 0x3f92825, +0x13000004, 0x1821, 0x3c040100, 0xa42825, +0x24030001, 0x30ca0004, 0x51400005, 0xaf830008, +0x3c060010, 0xa62825, 0x24030001, 0xaf830008, +0xaf451000, 0x0, 0x0, 0x0, +0x0, 0x8f830008, 0x10600023, 0x0, +0x8f4b1000, 0x561fffe, 0x0, 0x1060001e, +0x0, 0x8f4d1000, 0x3c030020, 0x1a36024, +0x11800019, 0x8f8f0000, 0x31ee0002, 0x11c00016, +0x0, 0x97501014, 0x16000013, 0x0, +0x97451008, 0x30bfffff, 0x27f80006, 0x18c882, +0x193080, 0xc72821, 0x33110001, 0x33030003, +0x12200320, 0x8ca20000, 0xd, 0xc7f821, +0xafe20000, 0x3c190800, 0x8f390430, 0x27260001, +0x3c010800, 0xac260430, 0x8f6a0000, 0x3405ffff, +0xaf8a0004, 0x8ce20000, 0x1045029a, 0x2021, +0x8ce50000, 0x30bf0100, 0x13e0027e, 0x1002021, +0x3c070800, 0x8ce70474, 0x3c100800, 0x8e10044c, +0xe85821, 0x3c180800, 0x8f180470, 0x168882b, +0x3c080800, 0x8d080448, 0x7821, 0x2046021, +0x30f1821, 0x184702b, 0x10f6821, 0x715021, +0x1ae1021, 0x3c010800, 0xac2c044c, 0x3c010800, +0xac220448, 0x3c010800, 0xac2b0474, 0x3c010800, +0xac2a0470, 0x8f8d0018, 0x1203021, 0x31290007, +0x25ae0008, 0x31c21fff, 0x3426021, 0xaf8d001c, +0xaf820018, 0x259b4000, 0xaf420084, 0x11200003, +0x8f900020, 0x24c80007, 0x3106fff8, 0x8f840028, +0xd02821, 0xa4782b, 0x15e00002, 0xaf900024, +0xa42823, 0x3452021, 0x34038000, 0x831021, +0x3c061000, 0xaf850020, 0xaf820038, 0xaf450080, +0xaf460178, 0x8f8b0014, 0x25670001, 0xa0001dd, +0xaf870014, 0x8f620008, 0x8f670000, 0x24110030, +0x7c602, 0x330300f0, 0x107100a2, 0x24190040, +0x1479ff4b, 0x8f8b0014, 0x8f4a0178, 0x540fffe, +0x30a70200, 0x14e00003, 0x51282, 0xd, +0x51282, 0x30500003, 0x104900, 0x1307021, +0xe6880, 0x1b06021, 0xc5880, 0x1738021, +0x8e080000, 0x15000002, 0x0, 0xd, +0x8f6f0004, 0x5e202b1, 0x92030006, 0x92070005, +0x920f0004, 0x3c020001, 0x72880, 0xb06021, +0x8d890018, 0x27710008, 0x25ee0005, 0x1226821, +0xe3082, 0xad8d0018, 0x2202021, 0xe000580, +0x26050014, 0x920b0006, 0x8f7f0004, 0x3c087fff, +0xb2080, 0x913021, 0x8cc30004, 0x350affff, +0x3eac824, 0x79c021, 0xacd80004, 0x92070005, +0x92090004, 0x960d0008, 0x72880, 0xb1f821, +0x8fef0000, 0x97420104, 0x3c07ffff, 0x1e75024, +0x304effff, 0x1c96021, 0x18d5823, 0x3168ffff, +0x1482025, 0xafe40000, 0x92030007, 0x24190001, +0x10790269, 0x24060003, 0x10660279, 0x0, +0x8e190010, 0x241f000a, 0xa75f0140, 0xa7590142, +0x92030004, 0x8f860000, 0x24070001, 0xa7430144, +0xa7400146, 0x97580104, 0x30d10002, 0x3c050041, +0xa7580148, 0x1821, 0xa747014a, 0x12200003, +0x30ca0004, 0x3c050141, 0x24030001, 0x51400005, +0xaf830008, 0x3c080010, 0xa82825, 0x24030001, +0xaf830008, 0xaf451000, 0x0, 0x0, +0x0, 0x0, 0x8f8b0008, 0x11600004, +0x0, 0x8f441000, 0x481fffe, 0x0, +0x8f6a0000, 0x92070004, 0x3c050800, 0x8ca50444, +0xaf8a0004, 0x975f0104, 0x3c0f0800, 0x8def0440, +0x30e300ff, 0x33f9ffff, 0x79c021, 0xb86821, +0x1021, 0x24e6000a, 0x30c8ffff, 0x1b8482b, +0x1e27021, 0x1c96021, 0x31100007, 0x3c010800, +0xac2d0444, 0x3c010800, 0xac2c0440, 0x12000003, +0x8f8d0018, 0x250b0007, 0x3168fff8, 0x10d7021, +0x31cc1fff, 0xaf8d001c, 0xaf8c0018, 0xaf4c0084, +0x97440104, 0x34c8021, 0x3084ffff, 0x30880007, +0x11000003, 0x261b4000, 0x24890007, 0x3124fff8, +0x8f820020, 0x8f850028, 0x822021, 0x85782b, +0x15e00002, 0xaf820024, 0x852023, 0x3448821, +0x34058000, 0x2251021, 0x3c061000, 0xaf840020, +0xaf820038, 0xaf440080, 0xaf460178, 0xa000285, +0x8f8b0014, 0x8f5f0178, 0x7e0fffe, 0x30aa0200, +0x15400003, 0x54282, 0xd, 0x54282, +0x31020003, 0x27100, 0x1c26821, 0xd6080, +0x1824821, 0x92880, 0xb38021, 0x8e0b0000, +0x11600002, 0x0, 0xd, 0x8f6f000c, +0x5e001f3, 0x8f870038, 0x24190001, 0xae190000, +0x8ce30008, 0xa2000007, 0x8f780004, 0x181c02, +0x306600ff, 0x24d10005, 0x113083, 0x2cc40041, +0x14800002, 0xa2030004, 0xd, 0x8f6b0004, +0x3c0effff, 0xe02821, 0x3164ffff, 0x248f000b, +0xf4082, 0x81080, 0x474821, 0x8d2d0000, +0x26040014, 0xa60b0008, 0x1ae6024, 0xe000580, +0xad2c0000, 0x8f5f0108, 0x3c0a1000, 0x3ea3824, +0x10e001a3, 0x0, 0x97460104, 0x92030007, +0x24d1ffec, 0x34650002, 0x3224ffff, 0xa2050007, +0x96060008, 0x2cc70013, 0x54e00005, 0x92030007, +0x920a0007, 0x355f0001, 0xa21f0007, 0x92030007, +0x240b0001, 0x106b01ba, 0x24090003, 0x106901cd, +0x8f880038, 0x30cfffff, 0x25e40002, 0x4c883, +0x333f00ff, 0x1f2880, 0xa2190005, 0xa85821, +0x8d780000, 0x97510104, 0x3c03ffff, 0x3036024, +0x3222ffff, 0x4f7023, 0x25cdfffe, 0x18d4825, +0xad690000, 0x92060005, 0x3c02fff6, 0x344effff, +0x30ca00ff, 0xa3880, 0xf02021, 0x90990014, +0x3c1fff7f, 0x37e7ffff, 0x3323000f, 0x667821, +0x31f800ff, 0x182880, 0xb08821, 0x8e2d0020, +0xa86021, 0xa20f0006, 0x1ae4824, 0xae0d000c, +0xad89000c, 0x920b0006, 0x8e04000c, 0x127f824, +0xb5080, 0x150c821, 0x97260026, 0x148c021, +0x874024, 0xaf260024, 0xae08000c, 0xaf3f0020, +0xaf060010, 0x8f860000, 0x240c0010, 0x24090002, +0xa74c0140, 0xa7400142, 0xa7400144, 0xa7490146, +0x974b0104, 0x24070001, 0x30c80002, 0x256afffe, +0xa74a0148, 0x3c050009, 0xa747014a, 0x11000003, +0x1821, 0x3c050109, 0x24030001, 0x30cd0004, +0x51a00005, 0xaf830008, 0x3c060010, 0xa62825, +0x24030001, 0xaf830008, 0xaf451000, 0x0, +0x0, 0x0, 0x0, 0x92180004, +0x27110002, 0x322f0007, 0xf1023, 0x304e0007, +0xae0e0010, 0x8f900008, 0x12000004, 0x0, +0x8f431000, 0x461fffe, 0x0, 0x8f780000, +0x8f8f0018, 0x3c100800, 0x8e100444, 0xaf980004, +0x97510104, 0x25e60010, 0x30ca1fff, 0x3222ffff, +0xaf8f001c, 0xaf8a0018, 0xaf4a0084, 0x2449fffe, +0x3c0b0800, 0x8d6b0440, 0x974e0104, 0x1206821, +0x967c3, 0x20d2821, 0x31c9ffff, 0xad402b, +0x16c3821, 0xe82021, 0x34af821, 0x31390007, +0x3c010800, 0xac250444, 0x3c010800, 0xac240440, +0x13200003, 0x27fb4000, 0x25230007, 0x3069fff8, +0x8f9f0020, 0x8f840028, 0x13f3821, 0xe4c82b, +0x17200002, 0xaf9f0024, 0xe43823, 0x3472021, +0x34058000, 0x851021, 0x3c061000, 0xaf870020, +0xaf820038, 0xaf470080, 0xaf460178, 0xa000285, +0x8f8b0014, 0x97580104, 0x1300fdc2, 0x3c104000, +0x8f430178, 0x460fffe, 0x30b94000, 0x13200003, +0x3c040008, 0xd, 0x3c040008, 0xaf440140, +0x24080800, 0xaf480178, 0x8f8b0000, 0x974a0104, +0x317f0001, 0x13e000e9, 0x3146ffff, 0x24d0fffe, +0x240c0002, 0xa74c0146, 0xa7500148, 0x8f8f0018, +0x2405000d, 0xa745014a, 0x8f710000, 0x25e20008, +0x30491fff, 0x3497021, 0x30cd0007, 0xaf910004, +0xaf8f001c, 0xaf890018, 0xc03821, 0xaf490084, +0x11a00003, 0x25db4000, 0x24c60007, 0x30c7fff8, +0x8f980020, 0x8f840028, 0xf83021, 0xc4382b, +0x14e00002, 0xaf980024, 0xc43023, 0x8f8a0014, +0x3465821, 0x34088000, 0x168f821, 0x25590001, +0x3c031000, 0x3c104000, 0xaf860020, 0xaf9f0038, +0xaf460080, 0xaf430178, 0xaf990014, 0xaf500138, +0xa000190, 0x0, 0x8f690000, 0x97440104, +0x3127ffff, 0x3088ffff, 0x8f4f0178, 0x5e0fffe, +0x30ff0007, 0x1f1823, 0x30780007, 0x24e6fffe, +0x2419000a, 0xa7590140, 0xa7580142, 0xa7460144, +0xa7400146, 0xa7480148, 0x8f420108, 0x30510020, +0x16200002, 0x24030009, 0x24030001, 0x30aa0002, +0xa743014a, 0x3c040041, 0x11400003, 0x1821, +0x3c040141, 0x24030001, 0x30ab0004, 0x51600005, +0xaf830008, 0x3c050010, 0x852025, 0x24030001, +0xaf830008, 0xaf441000, 0x0, 0x0, +0x0, 0x0, 0x8f900008, 0x12000004, +0x0, 0x8f4c1000, 0x581fffe, 0x0, +0x8f780000, 0x27620008, 0x8f8d003c, 0xaf980004, +0x94460008, 0x9451000a, 0x944f000c, 0x30ceffff, +0x112400, 0x31e9ffff, 0x11cd00a2, 0x892025, +0x3c030800, 0x8c630444, 0x3c180800, 0x8f180440, +0xe85021, 0x255ffffe, 0x7f7821, 0x1021, +0x1ff302b, 0x3028821, 0x2264821, 0x3c010800, +0xac2f0444, 0x3c010800, 0xac290440, 0x24eb0008, +0x3162ffff, 0x30470007, 0x10e00003, 0x8f850018, +0x24500007, 0x3202fff8, 0x3106ffff, 0x30c80007, +0x457021, 0x31cd1fff, 0x34d6021, 0xaf85001c, +0xaf8d0018, 0x259b4000, 0xaf4d0084, 0x11000003, +0x8f8f0020, 0x24c40007, 0x3086fff8, 0x8f840028, +0xcf2821, 0xa4482b, 0x15200002, 0xaf8f0024, +0xa42823, 0xaf850020, 0xaf450080, 0x3c110800, +0x8e310434, 0x345c021, 0x34028000, 0x3023021, +0x12200005, 0xaf860038, 0x93830017, 0x2419000e, +0x1079000d, 0x241f043f, 0x3c0a1000, 0xaf4a0178, +0x8f8b0014, 0x25670001, 0xa0001dd, 0xaf870014, +0xe0005a6, 0x3c104000, 0x8f8b0014, 0x25670001, +0xa0001de, 0xaf870014, 0x3c0a1000, 0xa75f0148, +0xaf4a0178, 0xa0004b4, 0x8f8b0014, 0x240e0f00, +0x11ee003d, 0x30d10020, 0x16200002, 0x24030009, +0x24030001, 0xa000208, 0xa743014a, 0xa0001fb, +0xa7400146, 0x94e50008, 0x94e2000a, 0x94eb000c, +0x8f86003c, 0x2fc00, 0x316affff, 0x30b9ffff, +0x13260037, 0x3ea2025, 0x3c050800, 0x8ca50444, +0x3c1f0800, 0x8fff0440, 0x5021, 0xa83821, +0xe8302b, 0x3eac821, 0x326c021, 0x3c010800, +0xac270444, 0x3c010800, 0xac380440, 0xa000269, +0x8f8d0018, 0x3c190800, 0x8f39047c, 0x3c030800, +0x8c630454, 0x3c060800, 0x8cc60478, 0x3c0f0800, +0x8def0450, 0x3283821, 0x686821, 0xe8c02b, +0xc48821, 0x1a8402b, 0x1e47021, 0x2385821, +0x1c86021, 0x3c010800, 0xac2d0454, 0x3c010800, +0xac2c0450, 0x3c010800, 0xac27047c, 0x3c010800, +0xac2b0478, 0xa000269, 0x8f8d0018, 0xa7400146, +0xa00041b, 0x8f8f0018, 0x30d00020, 0x1600ffc5, +0x2403000d, 0x24030005, 0xa000208, 0xa743014a, +0x97590104, 0x2738fff0, 0xa00036b, 0x3304ffff, +0x8f8c0040, 0x148cffc8, 0x8021, 0x3c110800, +0x8e31046c, 0x3c040800, 0x8c840468, 0x2287021, +0x1c8782b, 0x904021, 0x10f6821, 0x3c010800, +0xac2e046c, 0x3c010800, 0xac2d0468, 0xa000269, +0x8f8d0018, 0x8f990040, 0x1499ff5d, 0x6021, +0x3c050800, 0x8ca5046c, 0x3c100800, 0x8e100468, +0xe82021, 0x248efffe, 0xaef821, 0x3ee582b, +0x20c5021, 0x14b1821, 0x3c010800, 0xac3f046c, +0x3c010800, 0xac230468, 0xa00048b, 0x24eb0008, +0x8f880038, 0x3c02ffff, 0x8d0e000c, 0x1c26824, +0x1a46025, 0xad0c000c, 0xa000379, 0x30cfffff, +0xa0003a9, 0xae000000, 0x974b0104, 0x92040004, +0x8e2a000c, 0x1644021, 0x251ffff2, 0x1471824, +0x33f9ffff, 0x79c025, 0xae38000c, 0xa0002d4, +0x8e190010, 0x3c03ffff, 0x8d110010, 0x2232824, +0xa47825, 0xad0f0010, 0xa000379, 0x30cfffff, +0x97450104, 0x92060004, 0x8e2f0010, 0xa61021, +0x2449ffee, 0x1e76824, 0x312effff, 0x1ae6025, +0xae2c0010, 0xa0002d4, 0x8e190010, 0x8e06000c, +0xae000000, 0x3c080, 0x3108821, 0xa0002a6, +0xae260020, 0x1460000d, 0x3050ffff, 0x3c04ffff, +0x446024, 0x1846826, 0xd582b, 0xc502b, +0x14b1024, 0x10400002, 0x0, 0xd, +0x8ca30000, 0xa00023e, 0x641025, 0x3a11ffff, +0x11782b, 0x10702b, 0x1cf2024, 0x10800002, +0x0, 0xd, 0x8cb80000, 0xa00023e, +0x3702ffff, 0x3084ffff, 0x30a5ffff, 0x10800007, +0x1821, 0x30820001, 0x10400002, 0x42042, +0x651821, 0x1480fffb, 0x52840, 0x3e00008, +0x601021, 0x10c00007, 0x0, 0x8ca20000, +0x24c6ffff, 0x24a50004, 0xac820000, 0x14c0fffb, +0x24840004, 0x3e00008, 0x0, 0x10a00008, +0x24a3ffff, 0xac860000, 0x0, 0x0, +0x2402ffff, 0x2463ffff, 0x1462fffa, 0x24840004, +0x3e00008, 0x0, 0x308effff, 0x30d8ffff, +0x57c00, 0x1f86025, 0x39cdffff, 0x1ac5021, +0x14c582b, 0x14b4821, 0x94402, 0x3127ffff, +0xe83021, 0x62402, 0x30c5ffff, 0xa41821, +0x3862ffff, 0x3e00008, 0x3042ffff, 0x3c0c0800, +0x8d8c0484, 0x240bff80, 0x27bdffd0, 0x1845021, +0x14b4824, 0xaf490020, 0x3c080800, 0x8d080484, +0xafb20020, 0xafb00018, 0xafbf0028, 0xafb30024, +0xafb1001c, 0x93660004, 0x1043821, 0x30e4007f, +0x9a1021, 0x3c030008, 0x439021, 0x30c50020, +0x3608021, 0x3c080111, 0x277b0008, 0x14a00002, +0x26460070, 0x2646006c, 0x92130004, 0x97510104, +0x920f0004, 0x3267000f, 0x322effff, 0x31ed0040, +0x1c72823, 0x11a00005, 0x4821, 0x925900bc, +0x33380004, 0x17000090, 0x0, 0x924300bc, +0x307f0004, 0x13e0000f, 0x0, 0x10a0000d, +0x0, 0x960e0002, 0x240aff80, 0xa76021, +0x25cdfffe, 0xa74d1016, 0x920b0004, 0x14b2024, +0x308200ff, 0x10400085, 0x10c4025, 0x3c0f0400, +0x10f4025, 0x8f530178, 0x660fffe, 0x2404000a, +0xa7440140, 0x960d0002, 0x24040009, 0x31ac0007, +0xc5823, 0x316a0007, 0xa74a0142, 0x96020002, +0x2443fffe, 0xa7430144, 0xa7400146, 0x975f0104, +0xa75f0148, 0x8f590108, 0x33380020, 0x53000001, +0x24040001, 0x920f0004, 0x31ee0010, 0x15c00002, +0x34830010, 0x801821, 0xa743014a, 0x0, +0x0, 0x0, 0x0, 0xaf481000, +0x0, 0x0, 0x0, 0x0, +0x8f511000, 0x621fffe, 0x3113ffff, 0x12600003, +0x0, 0x8f481018, 0xacc80000, 0x96030006, +0x307fffff, 0x27f90002, 0x199882, 0x138880, +0x23b3021, 0x8cd80000, 0x15200057, 0x183402, +0x92030004, 0x2405ff80, 0xa3f824, 0x33f100ff, +0x1220002c, 0x0, 0x924700bc, 0x30f20002, +0x12400028, 0x0, 0x974b100c, 0x2562fffe, +0xa7421016, 0x0, 0x3c0a0400, 0x35490030, +0xaf491000, 0x0, 0x0, 0x0, +0x0, 0x8f4c1000, 0x581fffe, 0x0, +0x9749100c, 0x8f51101c, 0xc02021, 0x3127ffff, +0x24f20030, 0x121882, 0x32880, 0xbbf821, +0x3226ffff, 0xaff10000, 0xe000595, 0x112c02, +0x13c880, 0x33b9821, 0x8e780000, 0x27400, +0xafb80010, 0x8fa80010, 0x310fffff, 0xafaf0010, +0x8fa40010, 0x1c46825, 0xafad0010, 0x8fa60010, +0xae660000, 0x97730008, 0x976d000a, 0x9766000c, +0x8f8a003c, 0xd5c00, 0x30ccffff, 0x3262ffff, +0x104a0036, 0x16c2025, 0x96060002, 0x3c101000, +0x24d30008, 0xe000139, 0x3264ffff, 0x974c0104, +0xe000147, 0x3184ffff, 0xaf500178, 0x8fbf0028, +0x8fb30024, 0x8fb20020, 0x8fb1001c, 0x8fb00018, +0x3e00008, 0x27bd0030, 0x10a0ff70, 0x0, +0x24a5fffc, 0xa0005ce, 0x24090004, 0x8cd10000, +0xaf511018, 0x8f530178, 0x660ff7a, 0x2404000a, +0xa0005e3, 0x0, 0xa7c821, 0x8f880038, +0x8f4e101c, 0x19c082, 0x187880, 0x1e82021, +0xac8e0000, 0xe2c02, 0xc02021, 0xe000595, +0x31c6ffff, 0x23b2821, 0x8cad0000, 0x25400, +0x403021, 0xafad0010, 0x8fac0010, 0x318bffff, +0xafab0010, 0x8fa20010, 0x1424825, 0xafa90010, +0x8fa70010, 0xa000613, 0xaca70000, 0x8f8f0040, +0x148fffc9, 0x0, 0x97420104, 0x960b0002, +0x3c050800, 0x8ca5046c, 0x3049ffff, 0x316affff, +0x3c110800, 0x8e310468, 0x12a3821, 0x24f2fffe, +0xb24021, 0x12ffc3, 0x112c82b, 0x23fc021, +0x3192021, 0x3c010800, 0xac28046c, 0x3c010800, +0xac240468, 0xa00064d, 0x0, 0xa4102b, +0x10400009, 0x24030001, 0x52840, 0xa4102b, +0x4a00003, 0x31840, 0x5440fffc, 0x52840, +0x10600007, 0x0, 0x85302b, 0x14c00002, +0x31842, 0x852023, 0x1460fffb, 0x52842, +0x3e00008, 0x801021, 0x8f85002c, 0x27bdffe8, +0x53027, 0x2cc30001, 0x2ca40002, 0x831025, +0x10400003, 0xafbf0010, 0x2405007f, 0xaf85002c, +0x52827, 0x30a5ffff, 0xe000574, 0x240426f5, +0x8f830030, 0x240402bd, 0x403021, 0x83382b, +0x10e00009, 0x24050001, 0x42040, 0x83102b, +0x4800003, 0x52840, 0x5440fffc, 0x42040, +0x10a00008, 0xc35021, 0x64402b, 0x15000002, +0x52842, 0x641823, 0x14a0fffb, 0x42042, +0xc35021, 0x8fbf0010, 0xa4c02, 0x312200ff, +0x27bd0018, 0xaf8a002c, 0x3e00008, 0xaf890030, +0x0 }; +u32 bce_TPAT_b06FwData[(0x0/4) + 1] = { 0x0 }; +u32 bce_TPAT_b06FwRodata[(0x0/4) + 1] = { 0x0 }; +u32 bce_TPAT_b06FwBss[(0x450/4) + 1] = { 0x0 }; +u32 bce_TPAT_b06FwSbss[(0x44/4) + 1] = { 0x0 }; +u32 bce_TPAT_b06FwSdata[(0x0/4) + 1] = { 0x0 }; + + +int bce_TXP_b06FwReleaseMajor = 0x1; +int bce_TXP_b06FwReleaseMinor = 0x0; +int bce_TXP_b06FwReleaseFix = 0x0; +u32 bce_TXP_b06FwStartAddr = 0x08000098; +u32 bce_TXP_b06FwTextAddr = 0x08000000; +int bce_TXP_b06FwTextLen = 0x3a74; +u32 bce_TXP_b06FwDataAddr = 0x00000000; +int bce_TXP_b06FwDataLen = 0x0; +u32 bce_TXP_b06FwRodataAddr = 0x00000000; +int bce_TXP_b06FwRodataLen = 0x0; +u32 bce_TXP_b06FwBssAddr = 0x08003b08; +int bce_TXP_b06FwBssLen = 0x14c; +u32 bce_TXP_b06FwSbssAddr = 0x08003aa0; +int bce_TXP_b06FwSbssLen = 0x68; +u32 bce_TXP_b06FwSDataAddr = 0x00000000; +int bce_TXP_b06FwSDataLen = 0x0; +u32 bce_TXP_b06FwText[(0x3a74/4) + 1] = { +0xa000026, 0x0, 0x0, +0xd, 0x74787034, 0x2e362e31, 0x37000000, +0x4061100, 0xa, 0x136, 0xea60, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x1d, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x10000003, 0x0, 0xd, 0xd, +0x3c020800, 0x24423aa0, 0x3c030800, 0x24633c54, +0xac400000, 0x43202b, 0x1480fffd, 0x24420004, +0x3c1d0800, 0x37bd7ffc, 0x3a0f021, 0x3c100800, +0x26100098, 0x3c1c0800, 0x279c3aa0, 0xe000305, +0x0, 0xd, 0x8f830038, 0x3c088000, +0x35070070, 0x8ce50000, 0x833025, 0x3c029000, +0xc22025, 0xaf850030, 0xaf440020, 0x8f490020, +0x520fffe, 0x3c038000, 0x34620070, 0x8c450000, +0x8f860030, 0x3c190800, 0x8f39007c, 0x3c0e0800, +0x8dce0078, 0xa62023, 0x3245821, 0x7821, +0x164682b, 0x1cf6021, 0x18d5021, 0x3c010800, +0xac2b007c, 0x3c010800, 0xac2a0078, 0x3e00008, +0x0, 0xa00003d, 0x24040001, 0x8f840038, +0x3c058000, 0x34a20001, 0x821825, 0x3e00008, +0xaf430020, 0x3e00008, 0x1021, 0x3084ffff, +0x30a5ffff, 0x10800007, 0x1821, 0x30820001, +0x10400002, 0x42042, 0x651821, 0x1480fffb, +0x52840, 0x3e00008, 0x601021, 0x10c00007, +0x0, 0x8ca20000, 0x24c6ffff, 0x24a50004, +0xac820000, 0x14c0fffb, 0x24840004, 0x3e00008, +0x0, 0x10a00008, 0x24a3ffff, 0xac860000, +0x0, 0x0, 0x2402ffff, 0x2463ffff, +0x1462fffa, 0x24840004, 0x3e00008, 0x0, +0x308affff, 0x93a80013, 0xa74a0144, 0x97490e16, +0x30c600ff, 0x3c021000, 0xa7490146, 0xaf450148, +0xa3460152, 0xa748015a, 0xaf470160, 0x8fa40018, +0x8fa30014, 0xa7440158, 0xaf430154, 0x3e00008, +0xaf420178, 0x3e00008, 0x0, 0x3c038000, +0x34620070, 0x8c490000, 0x8f88003c, 0x24840007, +0x27bdfff8, 0x3084fff8, 0xaf890030, 0x974d008a, +0x31acffff, 0xafac0000, 0x8fab0000, 0x1685023, +0x2547ffff, 0x30e61fff, 0xc4282b, 0x14a0fff7, +0x3c0c8000, 0x358b0070, 0x8d6a0000, 0x3c070800, +0x8ce70084, 0x3c060800, 0x8cc60080, 0x81082, +0x1491823, 0x27880, 0xe37021, 0x2021, +0x1c3c82b, 0xc4c021, 0x1fa4021, 0x3194821, +0x25024000, 0x27bd0008, 0x3c010800, 0xac2e0084, +0x3c010800, 0xac290080, 0x3e00008, 0x0, +0x8f82003c, 0x24860007, 0x30c5fff8, 0xa21821, +0x30641fff, 0x3e00008, 0xaf84003c, 0x3c0e20ff, +0x27bdffe0, 0x3c1a8000, 0x3c0f8008, 0x35cdfffd, +0xafbf0018, 0xafb10014, 0xafb00010, 0xaf8f0044, +0xaf4d0e00, 0x0, 0x0, 0x0, +0x0, 0x0, 0x3c0c00ff, 0x358bfffd, +0xaf4b0e00, 0x3c066004, 0x8cc95000, 0x240aff7f, +0x3c116000, 0x12a4024, 0x3507380c, 0xacc75000, +0x8e240438, 0x24050009, 0xaf450008, 0x3083ffff, +0x38622f71, 0x2450c0b3, 0xaf80004c, 0xe000064, +0xaf80003c, 0x52000001, 0xae20442c, 0xe000460, +0x0, 0x8fbf0018, 0x8fb10014, 0x8fb00010, +0xa000e77, 0x27bd0020, 0x27bdffd0, 0xafb20028, +0xafb10024, 0xafbf002c, 0xafb00020, 0x93620008, +0x809021, 0xa08821, 0x1440002d, 0x24040010, +0xe00009a, 0x0, 0x8f8e004c, 0x3c103200, +0x31c600ff, 0x67c00, 0x1f06025, 0x25cd0001, +0xaf8d004c, 0xac4c0000, 0x936b0009, 0x9369000a, +0x316a00ff, 0xa3c00, 0x312800ff, 0xe82025, +0xac440004, 0x8f83004c, 0x6400043, 0xac430008, +0xac40000c, 0x97980040, 0x33050008, 0x14a00002, +0x26280006, 0x26280002, 0x97420e14, 0x8f450e1c, +0x8f670004, 0x937f0002, 0x3044ffff, 0x33f900ff, +0xafb90010, 0x8f710014, 0xafa80018, 0xe000087, +0xafb10014, 0x8fbf002c, 0x8fb20028, 0x8fb10024, +0x8fb00020, 0x24040010, 0xa0000c3, 0x27bd0030, +0x93690009, 0x9368000b, 0x312300ff, 0x310200ff, +0x628021, 0x261f000a, 0x33f0ffff, 0xe00009a, +0x2002021, 0x8f86004c, 0x3c0d4100, 0x24d90001, +0xaf99004c, 0x93780009, 0x30c600ff, 0x67400, +0x330500ff, 0x24af0002, 0x1cf6025, 0x18d5825, +0xac4b0000, 0x8f6a000c, 0x97440e14, 0x1523825, +0xac470004, 0x8f450e1c, 0x8f670004, 0x93690002, +0x3084ffff, 0x312800ff, 0xafa80010, 0x8f630014, +0xafb10018, 0xe000087, 0xafa30014, 0x2002021, +0x8fbf002c, 0x8fb20028, 0x8fb10024, 0x8fb00020, +0xa0000c3, 0x27bd0030, 0x3c128000, 0xa000114, +0xac52000c, 0x27bdffd8, 0xafb3001c, 0xafbf0020, +0xafb20018, 0xafb10014, 0xafb00010, 0x93620008, +0x14400081, 0x809821, 0xaf60000c, 0x97850040, +0x30a44000, 0x1080008b, 0x24030016, 0x24104007, +0xa363000a, 0xaf700014, 0x938f0042, 0x8f6c0014, +0x31ee0007, 0xe6a40, 0x18d5825, 0xaf6b0014, +0x978a0040, 0x8f680014, 0x31490010, 0x1093825, +0xaf670014, 0x97860040, 0x30c30008, 0x5060008d, +0x2821, 0x8f660014, 0x3c031000, 0x3c028100, +0xc32825, 0xaf650014, 0x97440e0a, 0x2418000e, +0x3405fffc, 0x309fffff, 0x3e2c825, 0xaf790004, +0xa3780002, 0x9372000a, 0x26510004, 0xa371000a, +0x97830040, 0x9364000a, 0x30661f00, 0x61183, +0x44f821, 0x27f90028, 0xa3790009, 0x97580e0c, +0xa7780010, 0x93720009, 0x26510002, 0x32300007, +0x107823, 0x31ee0007, 0xa36e000b, 0x936d0009, +0x976c0010, 0x8f900034, 0x97890040, 0x31ab00ff, +0x16c5021, 0x1454021, 0x31270040, 0x10e00005, +0x3105ffff, 0xb0382b, 0x3c068000, 0x10e00014, +0x8821, 0x205402b, 0x15000033, 0x2021, +0x8f4a0e14, 0xaf4a0e10, 0x8f490e1c, 0xaf490e18, +0xaf450e00, 0x8f4c0000, 0x318b0008, 0x1160fffd, +0x0, 0x974d0e08, 0xa08021, 0x3021, +0xa78d0040, 0x8f450e04, 0x24110001, 0xaf850034, +0x976e0010, 0x31d2ffff, 0x8e640000, 0x901023, +0x14400009, 0xae620000, 0x8f6a0014, 0x8f870048, +0x35490040, 0xaf690014, 0x8f480e10, 0xace80020, +0x8f430e18, 0xace30024, 0xc02021, 0xe0000f5, +0x2002821, 0x8e660000, 0x14c00005, 0x0, +0x8f6b0014, 0x240cffbf, 0x16c9824, 0xaf730014, +0x8f6d000c, 0x1b22821, 0xaf65000c, 0x93720008, +0x16400003, 0x0, 0x16200031, 0x0, +0xa3710008, 0x2002021, 0x8fbf0020, 0x8fb3001c, +0x8fb20018, 0x8fb10014, 0x8fb00010, 0x801021, +0x3e00008, 0x27bd0028, 0x8f900034, 0x97910040, +0x3c068000, 0x2009021, 0x322f0040, 0x15e0ffd2, +0x8821, 0x977f0010, 0x8f980034, 0x33f9ffff, +0x1738ffed, 0x2021, 0x3021, 0xa0001b9, +0x24110001, 0x2403000e, 0x24104007, 0xa363000a, +0xaf700014, 0x938f0042, 0x8f6c0014, 0x31ee0007, +0xe6a40, 0x18d5825, 0xaf6b0014, 0x978a0040, +0x8f680014, 0x31490010, 0x1093825, 0xaf670014, +0x97860040, 0x30c30008, 0x1460ff76, 0x0, +0x2821, 0xaf600004, 0xa000187, 0xa3600002, +0x8f6f0014, 0x3c19efff, 0x3738fffe, 0x1f87024, +0xa0001d7, 0xaf6e0014, 0x8f870038, 0x8f8a0044, +0x27bdffe0, 0x8f860048, 0xafb00018, 0xafbf001c, +0x8f450104, 0x8d4900ac, 0xaf470080, 0x8cc80020, +0xa93823, 0x8021, 0xaf480e10, 0x8f440e10, +0x4821, 0xaf440e14, 0x8cc20024, 0xaf420e18, +0x8f430e18, 0xaf430e1c, 0x10e00036, 0x2d390001, +0x936b0008, 0x1160004f, 0x0, 0x976e0010, +0x31cdffff, 0xed602b, 0x1580004a, 0x0, +0x97780010, 0x330fffff, 0xaf4f0e00, 0x8f5f0000, +0x33f90008, 0x1320fffd, 0x0, 0x97420e08, +0x8f460e04, 0x3045ffff, 0x30a30001, 0x1060008a, +0x0, 0xd, 0x30a8a040, 0x24040040, +0x1104003b, 0x30a9a000, 0x11200085, 0x0, +0x936c0008, 0x51800009, 0x27a40010, 0x976f0010, +0x31eeffff, 0xce682b, 0x11a00004, 0x27a40010, +0x30b80040, 0x1300007a, 0x0, 0xafa70010, +0xa7850040, 0xaf860034, 0xe000158, 0x0, +0x404821, 0x1440ffd0, 0x8fa70010, 0x8f420e14, +0x8f840048, 0xac820020, 0x8f470e1c, 0xac870024, +0x2d390001, 0x3303025, 0x10c00017, 0x8fbf001c, +0x8f840038, 0x24100f00, 0x10900085, 0x0, +0x8f4f0178, 0x5e0fffe, 0x24180f00, 0x1098006f, +0x0, 0x8f470e14, 0x24020240, 0x3c101000, +0xaf470144, 0x8f490e1c, 0xaf490148, 0xa3400152, +0xa740015a, 0xaf400160, 0xa7400158, 0xaf420154, +0xaf500178, 0x8fbf001c, 0x8fb00018, 0x3e00008, +0x27bd0020, 0xaf470e00, 0xa00022e, 0x0, +0x8f490178, 0x520fffe, 0x240a0800, 0x8f84003c, +0xaf4a0178, 0x9758008a, 0x330fffff, 0x1e47023, +0x25cdffff, 0x31ac1fff, 0x2d8b0008, 0x1560fff9, +0x0, 0x8f83004c, 0x8f9f0038, 0xc04821, +0x3442021, 0x24660001, 0x24190f00, 0xaf86004c, +0x306a00ff, 0xe93823, 0x24864000, 0x13f90005, +0x24080001, 0x938b0042, 0x31680007, 0x81240, +0x34480001, 0xa7c00, 0x3c180100, 0x1f87025, +0xac8e4000, 0x8f8d004c, 0x30ac0036, 0x30a40008, +0xaccd0004, 0x1080002e, 0x10c3025, 0x974d0e0a, +0x8f8c003c, 0x3c028100, 0x31a4ffff, 0x258b0008, +0x824025, 0x3c031000, 0x31651fff, 0x25390006, +0x241f000e, 0xaf480160, 0xc33025, 0xa75f015a, +0xaf85003c, 0xa7590158, 0x14e0000a, 0x8f9f0038, +0x24050f00, 0x53e50002, 0x24100001, 0x34c60040, +0x8f430e10, 0x8f880048, 0xad030020, 0x8f4b0e18, +0xad0b0024, 0x8f420e14, 0xaf420144, 0x8f440e1c, +0xaf440148, 0xa34a0152, 0x3c0a1000, 0xaf460154, +0xa000221, 0xaf4a0178, 0x14c0ff78, 0x30a8a040, +0x8f420e14, 0x8f840048, 0x4821, 0xac820020, +0x8f470e1c, 0xac870024, 0xa000258, 0x2d390001, +0x8f98003c, 0x25390002, 0xa7590158, 0x270f0008, +0x31ee1fff, 0xa0002ad, 0xaf8e003c, 0xaf40014c, +0x1120002c, 0x0, 0x8f460e10, 0xaf460144, +0x8f430e18, 0x24020040, 0x3c101000, 0xaf430148, +0xa3400152, 0xa740015a, 0xaf400160, 0xa7400158, +0xaf420154, 0xaf500178, 0xa000271, 0x8fbf001c, +0x11200006, 0x0, 0x975f0e08, 0x33e50040, +0x14a00002, 0x0, 0xd, 0x8f480178, +0x500fffe, 0x0, 0x974e0e10, 0x3c0d0500, +0x24032000, 0x31ccffff, 0x18d1025, 0xaf42014c, +0x8f440e14, 0x3c0b1000, 0xaf440144, 0x8f4a0e1c, +0xaf4a0148, 0xa3400152, 0x8f840038, 0xa740015a, +0xaf400160, 0xa7400158, 0xaf430154, 0xa00025f, +0xaf4b0178, 0x8f590e14, 0xaf590144, 0x8f430e1c, +0xa0002d9, 0x24020040, 0x27bdffe0, 0xafb20018, +0xafb10014, 0xafb00010, 0xafbf001c, 0xe0000ca, +0x0, 0x3c028000, 0x8f8a0044, 0x34500070, +0x3c120800, 0x26523b70, 0x2008821, 0x8e080000, +0x8f450000, 0x38a40001, 0x30830001, 0x10600017, +0xaf880030, 0x2204821, 0x8d2c0000, 0x3c020800, +0x8c42006c, 0x3c180800, 0x8f180068, 0x1881823, +0x436821, 0xc821, 0x1a3782b, 0x3197021, +0x1cf4021, 0x3c010800, 0xac2d006c, 0x3c010800, +0xac280068, 0x8f4b0000, 0x39670001, 0x30e60001, +0x14c0ffed, 0x1804021, 0xaf8c0030, 0x8e180000, +0x3c0e0800, 0x8dce006c, 0x3c0c0800, 0x8d8c0068, +0x3087823, 0x1cf2821, 0x4021, 0xaf302b, +0x1885821, 0x1662021, 0x3c010800, 0xac25006c, +0x3c010800, 0xac240068, 0x8f490100, 0x25470088, +0xaf870048, 0xaf890038, 0xaf490020, 0x8e070000, +0xaf870030, 0x8f590178, 0x720fffe, 0x0, +0x8e0f0000, 0x3c0d0800, 0x8dad0074, 0x3c0c0800, +0x8d8c0070, 0x1e77023, 0x1ae2821, 0x3021, +0xae582b, 0x1862021, 0x8b3821, 0x24090800, +0x3c010800, 0xac250074, 0x3c010800, 0xac270070, +0xaf490178, 0x93430108, 0xa3830042, 0x93820042, +0x305f0001, 0x17e00015, 0x8f830038, 0x241f0d00, +0x107f0019, 0x24020f00, 0x1062001d, 0x0, +0x91470000, 0x24030050, 0x30e900ff, 0x11230004, +0x3c054000, 0xaf450138, 0xa000312, 0x0, +0xe0008da, 0x0, 0x8f8a0044, 0x3c054000, +0xaf450138, 0xa000312, 0x0, 0x93990042, +0x33380006, 0x185100, 0xe00020d, 0x152d821, +0xa00036e, 0x8f8a0044, 0x3c1b0800, 0x277b3bf0, +0xe00020d, 0x0, 0xa00036e, 0x8f8a0044, +0x3c1b0800, 0x277b3c10, 0xe00020d, 0x0, +0xa00036e, 0x8f8a0044, 0x90aa0001, 0x8fab0010, +0x8cac0010, 0x3c0300ff, 0x8d680004, 0xad6c0020, +0x8cad0014, 0xe06021, 0x3462ffff, 0xad6d0024, +0x8ca70018, 0x3c09ff00, 0x109c024, 0xad670028, +0x8cae001c, 0x182c824, 0x3197825, 0xad6f0004, +0xad6e002c, 0x8cad0008, 0x314a00ff, 0xad6d001c, +0x94a90002, 0x3128ffff, 0xad680010, 0x90a70000, +0xa5600002, 0xa1600004, 0xa1670000, 0x90a30002, +0x306200ff, 0x21982, 0x10600005, 0x24050001, +0x1065000e, 0x0, 0x3e00008, 0xa16a0001, +0x8cd80028, 0x354a0080, 0xad780018, 0x8ccf0014, +0xad6f0014, 0x8cce0030, 0xad6e0008, 0x8cc4002c, +0xa16a0001, 0x3e00008, 0xad64000c, 0x8ccd001c, +0xad6d0018, 0x8cc90014, 0xad690014, 0x8cc80024, +0xad680008, 0x8cc70020, 0xad67000c, 0x8cc20014, +0x8c830064, 0x43c82b, 0x13200007, 0x0, +0x8cc20014, 0x144cffe4, 0x0, 0x354a0080, +0x3e00008, 0xa16a0001, 0x8c820064, 0xa0003c4, +0x0, 0x90aa0000, 0x27bdfff8, 0x8fa9001c, +0xa3aa0000, 0x8fae0000, 0x3c0fff80, 0x8fa80018, +0x35e2ffff, 0x8ccd002c, 0x1c26024, 0xafac0000, +0xa1200004, 0xe06021, 0xa7a00002, 0x8fb80000, +0x8d270004, 0x1881821, 0xa05821, 0xc05021, +0x6d2826, 0x3c06ff7f, 0x3c0f00ff, 0x2cad0001, +0x35eeffff, 0x34d9ffff, 0x3c02ff00, 0x3193024, +0xd1dc0, 0x10ec824, 0xe2c024, 0xc37025, +0x3197825, 0xad2e0000, 0xad2f0004, 0x8d450024, +0xafae0000, 0xad250008, 0x8d4d0020, 0x2405ffff, +0xad2d000c, 0x95680002, 0x3107ffff, 0xad270010, +0x91660018, 0x30c200ff, 0x219c2, 0x50600001, +0x8d450034, 0xad250014, 0x8d670008, 0x27bd0008, +0xad27001c, 0x8c8b00cc, 0xad2c0028, 0xad20002c, +0xad2b0024, 0xad200018, 0x3e00008, 0xad200020, +0x27bdffe0, 0xafb20018, 0xafb10014, 0xafb00010, +0xafbf001c, 0x90980000, 0xc08821, 0x3c0d00ff, +0x330f007f, 0xa0cf0000, 0x908e0001, 0x35acffff, +0x3c0aff00, 0xa0ce0001, 0x94a6001e, 0xa2200004, +0x8cab0014, 0x8e290004, 0xa08021, 0x16c2824, +0x12a4024, 0x809021, 0x1052025, 0xa6260002, +0xae240004, 0x26050020, 0x26240008, 0xe000072, +0x24060002, 0x92470000, 0x26050028, 0x26240014, +0x71e00, 0x31603, 0x24060004, 0x4400003, +0x2403ffff, 0x96590002, 0x3323ffff, 0xe000072, +0xae230010, 0x26240024, 0x8fbf001c, 0x8fb20018, +0x8fb10014, 0x8fb00010, 0x24050003, 0x3021, +0xa00007c, 0x27bd0020, 0x27bdffd8, 0xafb1001c, +0xafb00018, 0xafbf0020, 0x90a80000, 0x24020001, +0x8fb0003c, 0x3103003f, 0x808821, 0x10620014, +0x8faa0038, 0x240b0005, 0x506b0016, 0xafaa0010, +0xa02021, 0xc02821, 0xe000407, 0x2003021, +0x922400bc, 0x30830002, 0x10600003, 0x26060030, +0xacc00000, 0x24c60004, 0x8fbf0020, 0x8fb1001c, +0x8fb00018, 0xc01021, 0x3e00008, 0x27bd0028, +0x1403821, 0xe000385, 0xafb00010, 0xa00044b, +0x0, 0xe0003cc, 0xafb00014, 0xa00044b, +0x0, 0x3c02000a, 0x3421821, 0x3c040800, +0x24843b08, 0x2405001a, 0x3021, 0xa00007c, +0xaf83002c, 0x3c038000, 0x34620070, 0x8c480000, +0xa05821, 0xc04821, 0x308a00ff, 0xaf880030, +0x8f440178, 0x480fffe, 0x3c0c8000, 0x35860070, +0x8cc50000, 0x3c030800, 0x8c630074, 0x3c180800, +0x8f180070, 0xa82023, 0x646821, 0xc821, +0x1a4782b, 0x3197021, 0x1cf6021, 0x3c010800, +0xac2d0074, 0x3c010800, 0xac2c0070, 0x8f480e14, +0xaf480144, 0xaf47014c, 0xa34a0152, 0xa74b0158, +0x93460108, 0x30c50008, 0x54a00001, 0x35291000, +0x934b0900, 0x24070050, 0x316a00ff, 0x11470007, +0x0, 0x8f450e1c, 0xaf450148, 0xaf490154, +0x3c091000, 0x3e00008, 0xaf490178, 0x934d0108, +0x31a80008, 0x11000010, 0x0, 0x934f0108, +0x31ee0010, 0x51c00001, 0x35290008, 0x3c040800, +0x90843b6c, 0xa3440150, 0x8f4309a4, 0xaf430148, +0x8f4209a0, 0xaf420144, 0xaf490154, 0x3c091000, +0x3e00008, 0xaf490178, 0x3c190800, 0x8f393b28, +0x33380008, 0x5700fff1, 0x35290008, 0xa00049e, +0x0, 0x24070040, 0xaf470814, 0xaf400810, +0x8f420944, 0x8f430950, 0x8f440954, 0x8f45095c, +0x8f46094c, 0xaf820064, 0xaf830054, 0xaf840050, +0xaf85005c, 0x3e00008, 0xaf860060, 0x93460109, +0x30c5007f, 0x518c0, 0x52140, 0x831021, +0x3e00008, 0x24420088, 0x3c0a0800, 0x914a3b2d, +0x3c090800, 0x95293b26, 0x3c051100, 0xa3c00, +0x25280002, 0xe83025, 0xc51825, 0x24820008, +0xac830000, 0x3e00008, 0xac800004, 0x8f4a002c, +0x974d0908, 0x3c0e000e, 0x34e3821, 0x31acffff, +0xc41c0, 0xaf48002c, 0x97430908, 0x94eb001a, +0x804021, 0x24020001, 0x3169ffff, 0xac890000, +0x8ce6001c, 0xa05821, 0xac860004, 0x8ce40020, +0xad040008, 0x90e30019, 0x30630003, 0x1062003e, +0x0, 0x28650002, 0x14a00071, 0x240f0002, +0x106f004c, 0x0, 0x24180003, 0x10780055, +0x0, 0x3c090800, 0x95293b1c, 0x93430934, +0x934f0921, 0x3c050800, 0x94a53b22, 0x306400ff, +0x94ee002a, 0x46882, 0x31ec00ff, 0x978f0058, +0xdc600, 0xccc00, 0x3127ffff, 0x3191025, +0xa73021, 0x462025, 0x1cf6821, 0x3c034000, +0x836025, 0xd4c00, 0xad090004, 0xad0c0000, +0x93590920, 0x3c180006, 0x25090014, 0x193e00, +0xf82825, 0xad050008, 0x8f4e092c, 0x25e60001, +0x30c27fff, 0xad0e000c, 0x8f440930, 0xa7820058, +0x25020028, 0xad040010, 0x8f4d0938, 0xad0d0014, +0xad2b0004, 0x8f4c0940, 0xad2c0008, 0x93430937, +0x3c190800, 0x93393b2c, 0xad200010, 0x34700, +0x19c400, 0x1185825, 0x3567ffff, 0xad27000c, +0x3e00008, 0xaf4a002c, 0x3c090800, 0x95293b1c, +0x3c0d0800, 0x95ad3b26, 0x3c0c0800, 0x958c3b18, +0x94e40024, 0x312effff, 0x1ae3021, 0xcc1823, +0x4cc00, 0x2462fff2, 0x322c025, 0x240f0800, +0xad18000c, 0xad0f0014, 0xad000010, 0xa0004f2, +0x25080018, 0x94e50024, 0x94ee0028, 0x3c090800, +0x95293b1c, 0x56c00, 0xe6400, 0x35a68100, +0x35840800, 0xad06000c, 0xad040010, 0xa0004f2, +0x25080014, 0x3c090800, 0x95293b1c, 0x3c0f0800, +0x95ef3b26, 0x3c060800, 0x94c63b18, 0x94e40024, +0x3125ffff, 0x94ed0028, 0x1e57021, 0x1c66023, +0x4cc00, 0xd1c00, 0x2582ffee, 0x627825, +0x37388100, 0x24050800, 0xad18000c, 0xad0f0010, +0xad050018, 0xad000014, 0xa0004f2, 0x2508001c, +0x1460ff94, 0x0, 0x94e30024, 0x3c090800, +0x95293b1c, 0x31400, 0x34590800, 0xad19000c, +0xa0004f2, 0x25080010, 0x3e00008, 0x240201f4, +0x27bdffe8, 0xafb00010, 0xafbf0014, 0xe00005c, +0x808021, 0x24050040, 0xaf450814, 0x8f830054, +0x8f840050, 0x8f85005c, 0x701821, 0x641023, +0x18400004, 0xaf830054, 0xaf630054, 0x8f660054, +0xaf860050, 0x1200000c, 0x0, 0x8f440074, +0x93680081, 0x3409fa00, 0x2d070007, 0x10e00005, +0x891021, 0x936c0081, 0x240b01f4, 0x18b5004, +0x1441021, 0xaf62000c, 0x8f4e095c, 0x1c56823, +0x19a00004, 0x8fbf0014, 0x8f4f095c, 0xaf8f005c, +0x8fbf0014, 0x8fb00010, 0xa00005e, 0x27bd0018, +0x8f840064, 0x8f830054, 0x8f820050, 0xaf640044, +0xaf630050, 0x3e00008, 0xaf620054, 0x3c038000, +0x34620070, 0x8c430000, 0x27bdfff8, 0x308700ff, +0x30a900ff, 0x30c800ff, 0xaf830030, 0x8f440178, +0x480fffe, 0x3c028000, 0x34590070, 0x8f380000, +0xa3a70003, 0x3c070800, 0x8ce70074, 0x8fac0000, +0x3c060800, 0x8cc60070, 0x3037823, 0x3c0e7fff, +0xefc821, 0x35cdffff, 0x5021, 0x18d2824, +0xca1821, 0x847c0, 0x32f202b, 0xa81025, +0x64c021, 0xafa20000, 0x3c010800, 0xac390074, +0x3c010800, 0xac380070, 0x934f010a, 0xa3a00002, +0x3c0e80ff, 0xa3af0001, 0x8fac0000, 0x312b007f, +0x35cdffff, 0x18d4824, 0xb5600, 0x12a4025, +0x24073000, 0x2406ff80, 0x3c051000, 0x27bd0008, +0xaf48014c, 0xaf470154, 0xa7400158, 0xa3460152, +0x3e00008, 0xaf450178, 0x27bdffe8, 0xafbf0014, +0xafb00010, 0x8f650074, 0x3c068000, 0x309000ff, +0xa62025, 0xe00005c, 0xaf640074, 0x93630005, +0x34620008, 0xe00005e, 0xa3620005, 0x2002021, +0x8fbf0014, 0x8fb00010, 0x24050005, 0x24060001, +0xa000596, 0x27bd0018, 0x27bdffe0, 0x3c038000, +0xafb00010, 0xafbf0018, 0xafb10014, 0x34620070, +0x8c470000, 0x309000ff, 0x30a800ff, 0xaf870030, +0x8f440178, 0x480fffe, 0x3c188000, 0x37110070, +0x8e2f0000, 0x3c0d0800, 0x8dad0074, 0x3c0a0800, +0x8d4a0070, 0x1e77023, 0x1ae2821, 0x5821, +0xae302b, 0x14b4821, 0x1263821, 0x3c010800, +0xac250074, 0x8821, 0x3c010800, 0xac270070, +0x1100000f, 0x0, 0x8f620074, 0x2619ffff, +0x3208007f, 0x2fe02, 0x33e5007f, 0x15000006, +0x332200ff, 0x2407ff80, 0x2072026, 0x24a3ffff, +0x838025, 0x320200ff, 0x408021, 0x24111008, +0xe00005c, 0x0, 0x8f490818, 0x31250004, +0x14a0fffd, 0x3218007f, 0x1878c0, 0x187140, +0x1cf6821, 0x25ac0088, 0xaf4c0818, 0x274a0980, +0x8d4b0020, 0xaf4b0144, 0x8d460024, 0xaf460148, +0xa3500150, 0xe00005e, 0xa7400158, 0x2201021, +0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x3e00008, +0x27bd0020, 0x27bdffe8, 0x308400ff, 0xafbf0010, +0xe0005e1, 0x30a500ff, 0x8f830054, 0x8fbf0010, +0x34450040, 0x2404ff90, 0x3c021000, 0x27bd0018, +0xaf43014c, 0xa3440152, 0xaf450154, 0x3e00008, +0xaf420178, 0x27bdffe8, 0xafbf0014, 0xafb00010, +0x9345093f, 0x24020006, 0x3c080800, 0x95083b22, +0x30a300ff, 0x2487ffd8, 0x24050004, 0x10620036, +0x24060002, 0x974e093c, 0x3c0d0204, 0x63400, +0x31ccffff, 0x18d5825, 0xac8b0000, 0x934a093e, +0x31490020, 0x11200008, 0x0, 0x935f0936, +0x3c190103, 0x37380300, 0x33f000ff, 0x2187825, +0x24050008, 0xac8f0004, 0x93580934, 0x934d0921, +0x3c104000, 0x330e00ff, 0xe6082, 0x31ab00ff, +0xc5600, 0xb1400, 0x1421825, 0x68f825, +0x3f0c825, 0xac99ffd8, 0x93580937, 0x8f4c0948, +0x8f4d0940, 0x57882, 0x330e00ff, 0x1cf5821, +0x18d2823, 0xb5700, 0x1461025, 0x30a3ffff, +0x434025, 0xf4880, 0x1273021, 0xace80020, +0xe00005c, 0x24d00028, 0x24040004, 0xe00005e, +0xa364003f, 0x2001021, 0x8fbf0014, 0x8fb00010, +0x3e00008, 0x27bd0018, 0xa000644, 0x24060012, +0x27bdffd0, 0x24090010, 0xafb50024, 0xafb40020, +0xafb3001c, 0xafb10014, 0xafb00010, 0x3c010800, +0xa0293b2c, 0xafbf0028, 0xafb20018, 0x97480908, +0x309400ff, 0x3c02000e, 0x3107ffff, 0x731c0, +0xaf46002c, 0x97440908, 0x9344010b, 0x30b300ff, +0x3428021, 0x30830030, 0xa821, 0x106000e4, +0x8821, 0x240c0004, 0x3c010800, 0xa02c3b2c, +0x934b093e, 0xb5600, 0xa2e03, 0x4a00131, +0x0, 0xaf400048, 0x9352010b, 0x324f0020, +0x11e00006, 0x0, 0x935f093e, 0x1fce00, +0x19c603, 0x7000148, 0x0, 0x9346010b, +0x30c20040, 0x10400003, 0x8f920054, 0x8f870054, +0x24f2ffff, 0x960a002c, 0x93450934, 0x93490937, +0xa78a0058, 0x30a600ff, 0x312700ff, 0x71080, +0x462021, 0x91f821, 0x3c010800, 0xa43f3b22, +0x92030018, 0x3c010800, 0xa4203b1c, 0x3c010800, +0xa4203b18, 0x307000ff, 0x3f04021, 0x250b000a, +0x3170ffff, 0x3c010800, 0xa4283b24, 0x3c010800, +0xa4283b26, 0xe00009a, 0x2002021, 0xe0004c5, +0x402021, 0x8f4b002c, 0x97580908, 0x3c19000e, +0x3594021, 0x330fffff, 0xf71c0, 0xaf4e002c, +0x97430908, 0x950d001a, 0x24110001, 0x403821, +0x31acffff, 0xac4c0000, 0x8d0a001c, 0xac4a0004, +0x8d050020, 0xac450008, 0x91090019, 0x31230003, +0x107100bd, 0x28710002, 0x16200103, 0x240c0002, +0x106c00f5, 0x240d0003, 0x106d00ca, 0x0, +0x3c090800, 0x95293b1c, 0x93430934, 0x93580921, +0x3c0a0800, 0x954a3b22, 0x306400ff, 0x950c002a, +0x4f882, 0x331900ff, 0x97980058, 0x1f7600, +0x197c00, 0x3126ffff, 0x1cf4025, 0x1466821, +0x10d8825, 0x1982821, 0x3c084000, 0x2281025, +0x54c00, 0xace90004, 0xace20000, 0x93430920, +0x3c040006, 0x24e90014, 0x3fe00, 0x3e4c825, +0xacf90008, 0x8f4e092c, 0x270f0001, 0x31e67fff, +0xacee000c, 0x8f4d0930, 0xa7860058, 0x24e60028, +0xaced0010, 0x8f4c0938, 0xacec0014, 0xad320004, +0x8f510940, 0xad310008, 0x93420937, 0x3c050800, +0x90a53b2c, 0xad200010, 0x22700, 0x51c00, +0x83f825, 0x37f2ffff, 0xad32000c, 0xaf4b002c, +0x12a00033, 0x0, 0x9352093f, 0x24150006, +0x24050004, 0x324b00ff, 0x117500cd, 0x24090002, +0x974f093c, 0x3c0e0204, 0x31edffff, 0x1ae6025, +0xacec0028, 0x9351093e, 0x32220020, 0x10400008, +0x0, 0x93440936, 0x3c180103, 0x371f0300, +0x309900ff, 0x33f2825, 0xacc50004, 0x24050008, +0x93520934, 0x93430921, 0x56082, 0x324b00ff, +0xba882, 0x306400ff, 0x15fe00, 0x4c400, +0x3f8c825, 0x32a7825, 0x1e87025, 0xacceffd8, +0x934d0937, 0x8f520948, 0x8f420940, 0x31b100ff, +0x22c5821, 0x2423023, 0xb1f00, 0x9ac00, +0x754825, 0x30c8ffff, 0x1285025, 0xe00005c, +0xacea0020, 0x24070004, 0xe00005e, 0xa367003f, +0xe0000c3, 0x2002021, 0x3c050800, 0x90a53b2c, +0x30b00003, 0x1200000f, 0x2802021, 0x8f880054, +0x25090001, 0xaf890054, 0xaf690050, 0x8f6a0054, +0x1493823, 0x18e00002, 0x1202021, 0x8f640054, +0xaf640054, 0x8f420074, 0x244601f4, 0xaf66000c, +0x2802021, 0x2602821, 0xa7600068, 0xe0005e1, +0x3c131000, 0x8f8e0054, 0x34540006, 0xaf4e014c, +0x8f8d004c, 0x8fbf0028, 0x8fb50024, 0x31b100ff, +0x25ac0001, 0xaf8c004c, 0x8fb20018, 0xa3510152, +0x8fb00010, 0xaf540154, 0x8fb10014, 0xaf530178, +0x8fb40020, 0x8fb3001c, 0x3e00008, 0x27bd0030, +0x9359093e, 0x19c600, 0x189603, 0x6420048, +0x24110002, 0x93420923, 0x30440002, 0x1080ff1e, +0x8f870060, 0x8f860054, 0x14e6ff1b, 0x0, +0xe00005c, 0x0, 0x9365003f, 0x24080016, +0x30a900ff, 0x1128000c, 0x240a0008, 0x3c0d0800, +0x91ad3b2c, 0x35ac0001, 0x3c010800, 0xa02c3b2c, +0x936b003f, 0x316300ff, 0x106a0065, 0x240e000a, +0x106e005e, 0x2402000c, 0xe00005e, 0x0, +0xa00069d, 0x0, 0x3c090800, 0x95293b1c, +0x3c190800, 0x97393b26, 0x3c180800, 0x97183b18, +0x950e0024, 0x313fffff, 0x33f7821, 0x1f86823, +0xe8c00, 0x25acfff2, 0x22c5025, 0x24050800, +0x24470018, 0xac4a000c, 0xac450014, 0xa0006e5, +0xac400010, 0x3c090800, 0x95293b1c, 0x3c180800, +0x97183b26, 0x3c0f0800, 0x95ef3b18, 0x950d0024, +0x3139ffff, 0x950c0028, 0x3197021, 0x1cf8823, +0xd2c00, 0xc5400, 0x2622ffee, 0x1423025, +0x34a48100, 0x24030800, 0xace4000c, 0xace60010, +0xace30018, 0xace00014, 0xa0006e5, 0x24e7001c, +0x3c010800, 0xa0313b2c, 0x9343093e, 0x24150001, +0x307f0020, 0x17e0fed4, 0x24110008, 0xa00069d, +0x24110004, 0x8f6e0084, 0x8f4d0940, 0x11a0fecd, +0xaf8e0054, 0x240f0014, 0x3c010800, 0xa02f3b2c, +0xa00069c, 0x0, 0x95020024, 0x95060028, +0x3c090800, 0x95293b1c, 0x22400, 0x61c00, +0x349f8100, 0x34790800, 0xacff000c, 0xacf90010, +0xa0006e5, 0x24e70014, 0x1460ff01, 0x0, +0x95180024, 0x3c090800, 0x95293b1c, 0x24470010, +0x187c00, 0x35ee0800, 0xa0006e5, 0xac4e000c, +0xa00071f, 0x24090012, 0x8f64004c, 0xaf640054, +0x8f630054, 0xa0006a6, 0xaf630050, 0xa362003f, +0xe00005e, 0x0, 0xa00069d, 0x0, +0x24020014, 0xa0007f3, 0xa362003f, 0x27bdffe8, +0x308400ff, 0xafbf0010, 0xe0005e1, 0x30a500ff, +0x9378007e, 0x9379007f, 0x936e0080, 0x9368007a, +0x332f00ff, 0x186600, 0xf6c00, 0x31cb00ff, +0x18d4825, 0xb5200, 0x8fbf0010, 0x12a3825, +0x310600ff, 0x34447000, 0xe62825, 0x2402ff81, +0x3c031000, 0x27bd0018, 0xaf45014c, 0xaf440154, +0xa3420152, 0x3e00008, 0xaf430178, 0x27bdffd8, +0xafb20018, 0xafb10014, 0xafb00010, 0xafbf0020, +0xafb3001c, 0x93420109, 0x308600ff, 0x30b000ff, +0x618c2, 0x32040002, 0x30710001, 0x14800005, +0x305200ff, 0x93670005, 0x30e50008, 0x10a0000d, +0x30c80010, 0x2402021, 0xe0005cd, 0x2202821, +0x24040001, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, +0x8fb10014, 0x8fb00010, 0x801021, 0x3e00008, +0x27bd0028, 0x15000032, 0x0, 0x93430109, +0x2821, 0x3062007f, 0x220c0, 0x2f940, +0x3e49821, 0x26790088, 0x33b9821, 0x8e780024, +0x8e6f0008, 0x130f0046, 0x0, 0x8f640084, +0x24180002, 0x4fd82, 0x33f90003, 0x1338007c, +0x0, 0x93660083, 0x934a0109, 0x51460004, +0x3205007c, 0x10a00060, 0x0, 0x3205007c, +0x14a00053, 0x2402021, 0x16200006, 0x32040001, +0x8e7f0024, 0x8f590104, 0x17f9ffd6, 0x2021, +0x32040001, 0x1080000a, 0x2402021, 0x8f420940, +0x8f930064, 0x10530006, 0x0, 0xe00067b, +0x2202821, 0x8f430940, 0xaf630044, 0x2402021, +0xe000628, 0x2202821, 0xa00082c, 0x24040001, +0x3c090800, 0x8d290064, 0x25260001, 0x3c010800, +0xac260064, 0x16000012, 0x0, 0x8f6d0084, +0x3c0e00c0, 0x1ae6024, 0x15800005, 0x2402021, +0xe0007fa, 0x2202821, 0xa00082c, 0x24040001, +0x24050004, 0xe000596, 0x24060001, 0x2402021, +0xe0007fa, 0x2202821, 0xa00082c, 0x24040001, +0xe00003d, 0x24040001, 0x936b007d, 0x20b5025, +0xe00005e, 0xa36a007d, 0xa00086f, 0x8f6d0084, +0x8f660074, 0x8f480104, 0x8e670024, 0x64e02, +0x1507ffb6, 0x3126007f, 0x936b0083, 0x26440001, +0x308a007f, 0x11460043, 0x316300ff, 0x5464ffb0, +0x8f640084, 0x26450001, 0x30b1007f, 0x30a200ff, +0x12260004, 0x24050001, 0x409021, 0xa000842, +0x24110001, 0x240fff80, 0x24f7024, 0x1cf9026, +0x324200ff, 0x409021, 0xa000842, 0x24110001, +0xe00067b, 0x2202821, 0x32180030, 0x1300ffaa, +0x32100082, 0x2402021, 0xe0005cd, 0x2202821, +0xa00082c, 0x24040001, 0x8f6e0074, 0x3c0f8000, +0x24050003, 0x1cf9025, 0xaf720074, 0x93710083, +0x24060001, 0xe000596, 0x322400ff, 0xe00003d, +0x24040001, 0x936d007d, 0x20d6025, 0xe00005e, +0xa36c007d, 0x3c0b0800, 0x8d6b0054, 0x25700001, +0x3c010800, 0xac300054, 0xa00082c, 0x24040001, +0x8f680074, 0x3c098000, 0x24050004, 0x1093825, +0xaf670074, 0x93630083, 0x24060001, 0xe000596, +0x306400ff, 0xe00003d, 0x24040001, 0x9362007d, +0x2029825, 0xe00005e, 0xa373007d, 0xa00082c, +0x24040001, 0x324d0080, 0x39ac0080, 0x546cff6c, +0x8f640084, 0xa000895, 0x26450001, 0x27bdffd0, +0x3c0a0008, 0xafbf002c, 0xafb40028, 0xafb30024, +0xafb20020, 0xafb1001c, 0xafb00018, 0x34ad821, +0x24090040, 0xaf490814, 0xaf400810, 0x8f420944, +0x8f430950, 0x8f460954, 0x8f47095c, 0x8f48094c, +0x93440108, 0x9345010b, 0xaf820064, 0x308400ff, +0x30a500ff, 0xaf830054, 0xaf860050, 0xaf87005c, +0xe000816, 0xaf880060, 0x1440015a, 0x8fbf002c, +0xa7600068, 0x934d0900, 0x240b0050, 0x3c140800, +0x26943c30, 0x31ac00ff, 0x3c120800, 0x26523c40, +0x118b0003, 0x0, 0xa021, 0x9021, +0x934f0109, 0x8f880054, 0x24020010, 0x31f1007f, +0x1170c0, 0x116940, 0x1ae2821, 0x24b80088, +0xaf580818, 0x8f4a0104, 0x8f4b09a4, 0x3c0c000e, +0x34cc821, 0x14b4823, 0x3c010800, 0xac293b08, +0x8f440958, 0x3c010800, 0xa0223b2c, 0x97460908, +0x881823, 0x3c010800, 0xac233b0c, 0x30c7ffff, +0x7f9c0, 0x3c010800, 0xac283b30, 0xaf5f002c, +0x97420908, 0x9730002c, 0x8e910000, 0x932f0018, +0x3789821, 0xa7900058, 0xaf930048, 0x220f809, +0x31f000ff, 0x304e0002, 0x15c0018e, 0x30530001, +0x12600142, 0x0, 0x8f4f09a4, 0x24130001, +0x3c010800, 0xac2f3b34, 0x93510934, 0x934e0937, +0x322500ff, 0x31cd00ff, 0xd6080, 0x1855021, +0x1505821, 0x3c010800, 0xa42b3b24, 0x3c010800, +0xa42a3b22, 0x93490934, 0x312200ff, 0x2022021, +0x24900010, 0x3c010800, 0xa4303b20, 0x24080006, +0x8f990054, 0x3c010800, 0xac283b28, 0x8f9f005c, +0x8f580958, 0x8021, 0x3f92823, 0x4a0013c, +0x3192023, 0x480013a, 0xa4382b, 0x10e0013c, +0x0, 0x3c010800, 0xac253b0c, 0x8e420000, +0x40f809, 0x0, 0x30460002, 0x14c000dd, +0x408821, 0x30430001, 0x54600010, 0x8e420004, +0x3c040800, 0x8c843b10, 0x3c09c000, 0x898025, +0xaf500e00, 0x8f4b0000, 0x316a0008, 0x1140fffd, +0x0, 0x97450e08, 0x24100001, 0xa7850040, +0x8f4c0e04, 0xaf8c0034, 0x8e420004, 0x40f809, +0x0, 0x2228825, 0x322d0002, 0x15a00159, +0x0, 0x3c090800, 0x95293b18, 0x3c060800, +0x94c63b24, 0x3c040800, 0x94843b1a, 0x3c190800, +0x8f393b10, 0x1265821, 0x3c180800, 0x8f183b34, +0x3c1f0800, 0x97ff3b2e, 0x1641821, 0x8f4e0940, +0x3292821, 0x246f0002, 0x3196821, 0xbf6021, +0x3c010800, 0xa42b3b26, 0xaf8e0064, 0x3c010800, +0xac2d3b34, 0x3c010800, 0xa42c3b1c, 0xe00009a, +0x31e4ffff, 0x8f87004c, 0x402021, 0x3c010800, +0xa0273b2d, 0x8e420008, 0x24e80001, 0xaf88004c, +0x40f809, 0x0, 0x8f4b002c, 0x97490908, +0x3c0a000e, 0x34a3821, 0x3124ffff, 0x419c0, +0x8f8a0054, 0xaf43002c, 0x97430908, 0x94e6001a, +0x404021, 0x30dfffff, 0xac5f0000, 0x8cf9001c, +0xac590004, 0x8cf80020, 0xac580008, 0x90ef0019, +0x31e30003, 0x107300e6, 0x0, 0x28620002, +0x14400102, 0x240c0002, 0x106c00f4, 0x240d0003, +0x106d00a7, 0x0, 0x3c090800, 0x95293b1c, +0x93450934, 0x934c0921, 0x3c0f0800, 0x95ef3b22, +0x30bf00ff, 0x94ee002a, 0x1f6882, 0x319900ff, +0x978c0058, 0xd1600, 0x19c400, 0x3124ffff, +0x1e43021, 0x584825, 0x1263825, 0x1cc2821, +0x3c034000, 0xe3f825, 0x56c00, 0xad0d0004, +0xad1f0000, 0x93590920, 0x3c180006, 0x250d0014, +0x197e00, 0x1f87025, 0xad0e0008, 0x8f42092c, +0x25860001, 0x8e4c000c, 0xad02000c, 0x8f440930, +0x30c97fff, 0xa7890058, 0xad040010, 0x8f470938, +0x25040028, 0xad070014, 0xadaa0004, 0x8f450940, +0xada50008, 0x93430937, 0x3c1f0800, 0x93ff3b2c, +0xada00010, 0x3c700, 0x1fcc00, 0x3197825, +0x35eeffff, 0xadae000c, 0xaf4b002c, 0x180f809, +0x0, 0x3c060800, 0x94c63b26, 0x3c020800, +0x94423b1a, 0xc24821, 0x252b0002, 0xe0000c3, +0x3164ffff, 0x3c080800, 0x8d083b08, 0x3c070800, +0x8ce73b10, 0x1075023, 0x3c010800, 0xac2a3b08, +0x15400006, 0x0, 0x3c080800, 0x8d083b28, +0x350a0040, 0x3c010800, 0xac2a3b28, 0x12000084, +0x8f830048, 0x8f470e10, 0x8f900048, 0xae070020, +0x8f4b0e18, 0xae0b0024, 0x3c100800, 0x96103b1c, +0xe00005c, 0x0, 0x240f0040, 0xaf4f0814, +0x8f860054, 0x8f890050, 0xd01821, 0x697023, +0x19c00004, 0xaf830054, 0xaf630054, 0x8f640054, +0xaf840050, 0x1200000c, 0x0, 0x8f440074, +0x93780081, 0x3419fa00, 0x2f020007, 0x10400005, +0x991821, 0x937f0081, 0x240c01f4, 0x3ec6804, +0x1a41821, 0xaf63000c, 0x8f4a095c, 0x8f88005c, +0x1482823, 0x18a00003, 0x0, 0x8f50095c, +0xaf90005c, 0xe00005e, 0x0, 0x8f830054, +0x8e470010, 0x3c010800, 0xac233b30, 0xe0f809, +0x0, 0x3c0b0800, 0x8d6b3b08, 0x1560ff10, +0x24080006, 0x8f590024, 0x975f0908, 0x8f890064, +0x8f8e0054, 0x3c0c001f, 0x97840058, 0x8f8f002c, +0x8f930050, 0x33f8ffff, 0x358dff80, 0x32d3024, +0x1811c0, 0x32320010, 0xaf420024, 0xa5e4002c, +0xaf460024, 0xaf690044, 0xaf6e0050, 0xaf730054, +0x5640007c, 0x8e850004, 0x322a0040, 0x55400031, +0x8e910008, 0x8e88000c, 0x100f809, 0x0, +0x8fbf002c, 0x8fb40028, 0x8fb30024, 0x8fb20020, +0x8fb1001c, 0x8fb00018, 0x3e00008, 0x27bd0030, +0x3c090800, 0x95293b1c, 0x3c030800, 0x94633b26, +0x3c040800, 0x94843b18, 0x94f90024, 0x3125ffff, +0x94f80028, 0x65f821, 0x3e47823, 0x196400, +0x186c00, 0x25eeffee, 0x1ae3025, 0x35828100, +0x24030800, 0xad02000c, 0xad060010, 0xad030018, +0xad000014, 0xa0009b3, 0x2508001c, 0x93430109, +0x8f860038, 0x33e00, 0xe64025, 0xaf480080, +0x8f5f09a0, 0x8f5809a4, 0xafbf0010, 0xaf5f0e14, +0x8fb90010, 0xaf590e10, 0xaf580e1c, 0xa00092d, +0xaf580e18, 0x220f809, 0x0, 0x8e88000c, +0x100f809, 0x0, 0xa000a50, 0x8fbf002c, +0xa4600020, 0xa4730022, 0xa000a05, 0xac730024, +0x3c010800, 0xac203b0c, 0xa000953, 0x8e420000, +0x3c010800, 0xac243b0c, 0xa000953, 0x8e420000, +0x3c090800, 0x95293b1c, 0x3c1f0800, 0x97ff3b26, +0x3c050800, 0x94a53b18, 0x94f80024, 0x3124ffff, +0x3e4c821, 0x3257823, 0x186c00, 0x25eefff2, +0x1ae6025, 0xac4c000c, 0x24020800, 0xad020014, +0xad000010, 0xa0009b3, 0x25080018, 0x94e60024, +0x94e30028, 0x3c090800, 0x95293b1c, 0x62400, +0x3fc00, 0x34858100, 0x37f90800, 0xad05000c, +0xad190010, 0xa0009b3, 0x25080014, 0x1460ff02, +0x0, 0x94f80024, 0x3c090800, 0x95293b1c, +0x187c00, 0x35ee0800, 0xad0e000c, 0xa0009b3, +0x25080010, 0x93520109, 0x2821, 0xe000628, +0x324400ff, 0x8fbf002c, 0x8fb40028, 0x8fb30024, +0x8fb20020, 0x8fb1001c, 0x8fb00018, 0x3e00008, +0x27bd0030, 0xa0f809, 0x0, 0xa000a4a, +0x322a0040, 0x1200ff6b, 0x0, 0x8f4e0e14, +0x8f920048, 0xae4e0020, 0x8f530e1c, 0xa000a34, +0xae530024, 0x8f820018, 0x804021, 0x3c040100, +0x90470085, 0x30e30020, 0x10600009, 0x0, +0x3c070800, 0x8ce73b30, 0x8f830014, 0xe32023, +0x4800008, 0x93890000, 0x14e30003, 0x1002021, +0x3e00008, 0x801021, 0x3c040100, 0x3e00008, +0x801021, 0x1120000b, 0x673823, 0x8f8c001c, +0x24090034, 0x918b00bc, 0x316a0002, 0x51400001, +0x24090030, 0xe9682b, 0x15a0fff1, 0x1002021, +0xe93823, 0x2419fffc, 0xb9c024, 0xf97824, +0xf8702b, 0x15c0ffea, 0x1e82021, 0x30c20003, +0x21823, 0x14c00012, 0x30690003, 0x3021, +0xa97021, 0x1c66821, 0xed602b, 0x1180ffe0, +0x3c040100, 0x2d2f0001, 0x6482b, 0x1053821, +0x1e93024, 0x14c0ffda, 0x24e4fffc, 0x2419fffc, +0xb9c024, 0x3082021, 0x3e00008, 0x801021, +0x8f8b001c, 0x24060004, 0x916a00bc, 0x31440004, +0x1480ffec, 0xa97021, 0xa000afc, 0x3021, +0x27bdffe8, 0xafbf0010, 0x8f460100, 0x934a0109, +0x3c1f0800, 0x8fff0090, 0x2407ff80, 0x314f00ff, +0x31e8007f, 0x86140, 0x3e6c821, 0x32cc021, +0x27090120, 0x1277024, 0x3c010800, 0xa02f3b6c, +0xaf4e080c, 0x3c0d0800, 0x8dad0090, 0x3c040080, +0x34820003, 0x1a65821, 0x16c1821, 0x24650120, +0x30aa0078, 0x1424025, 0xaf48081c, 0x3c1f0800, +0x8fff0090, 0x8f880044, 0x3e6c021, 0x33190007, +0x3074824, 0x33a7821, 0xaf490028, 0x25e909c0, +0x952e0002, 0x3c0d0800, 0x8dad008c, 0x3c0a0800, +0x8d4a0090, 0x31cc3fff, 0x1a61821, 0xc5980, +0x6b2821, 0xa72024, 0xaf44002c, 0x95220002, +0x3c1f0800, 0x8fff008c, 0x91070085, 0x30593fff, +0x3e67821, 0x19c180, 0x1467021, 0x1f86821, +0x31cc007f, 0x31ab007f, 0x19a2821, 0x17a5021, +0x3c03000c, 0x3c04000e, 0xa32821, 0x1441021, +0x30e60020, 0x27470980, 0xaf820028, 0xaf880018, +0xaf890020, 0xaf85001c, 0x10c00006, 0xaf870024, +0x8d020050, 0x8ca4010c, 0x443023, 0x18c00077, +0x0, 0x910c0085, 0x240dffdf, 0x18d3824, +0xa1070085, 0x8f8b0018, 0x8f890020, 0x8f870024, +0x8d65004c, 0xaf850014, 0x912f000d, 0x31ee0020, +0x11c00017, 0x0, 0x24090001, 0xa3890000, +0xaf800008, 0x8ce40024, 0x8f850008, 0x240a0008, +0xaf800004, 0xaf80000c, 0x3c010800, 0xa42a3b1a, +0x3c010800, 0xa4203b2e, 0xe000ad0, 0x3021, +0x8f850020, 0x8fbf0010, 0xaf820010, 0x90a8000d, +0x27bd0018, 0x83942, 0x3e00008, 0x30e20001, +0x913f0002, 0x24180001, 0x33f900ff, 0x192182, +0x10980039, 0x24080002, 0x1088005b, 0x8f860028, +0x8ce50024, 0x14a0001b, 0x8f9f001c, 0x91220000, +0x240a0005, 0x3046003f, 0x10ca0047, 0x24040001, +0x8f860004, 0xa3840000, 0xaf86000c, 0xaf860008, +0x8ce40024, 0x8f850008, 0x240a0008, 0x3c010800, +0xa42a3b1a, 0x3c010800, 0xa4203b2e, 0xe000ad0, +0x0, 0x8f850020, 0x8fbf0010, 0xaf820010, +0x90a8000d, 0x27bd0018, 0x83942, 0x3e00008, +0x30e20001, 0x8cf80008, 0x8cf90024, 0x8fee00c4, +0xa3800000, 0x8ce40024, 0xaf8e0008, 0x8f850008, +0x8f860004, 0x3197823, 0x240a0008, 0xaf8f000c, +0x3c010800, 0xa42a3b1a, 0x3c010800, 0xa4203b2e, +0xe000ad0, 0x0, 0x8f850020, 0x8fbf0010, +0xaf820010, 0x90a8000d, 0x27bd0018, 0x83942, +0x3e00008, 0x30e20001, 0x91230000, 0x3062003f, +0x10440027, 0x8f85001c, 0x8ce40024, 0x14800021, +0x0, 0x8d2e0018, 0x3c187fff, 0x8f85001c, +0x370fffff, 0x1cf1824, 0xaf830004, 0x8f9f0004, +0x8ca80084, 0x3e8c82b, 0x17200002, 0x3e02021, +0x8ca40084, 0xa000b8b, 0xaf840004, 0x8ca3010c, +0xa000b69, 0xaf830014, 0x8d2c0018, 0x8f860004, +0x3c0d7fff, 0x8f89001c, 0x35a3ffff, 0x1835824, +0x24040001, 0xaf8b000c, 0xad2000cc, 0xa3840000, +0xa000b97, 0xaf860008, 0x8cca0014, 0xa000b8b, +0xaf8a0004, 0x8ca300c8, 0xa000bce, 0xaf830004, +0x8f840028, 0x8cac0064, 0x8c8d0014, 0x18d582b, +0x11600004, 0x0, 0x8ca20064, 0xa000bce, +0xaf820004, 0x8c820014, 0xa000bce, 0xaf820004, +0x8f850008, 0x27bdffe0, 0xafbf0018, 0xafb10014, +0x14a00007, 0xafb00010, 0x8f860020, 0x24020005, +0x90c40000, 0x3083003f, 0x106200b6, 0x8f84001c, +0x8f910004, 0xa08021, 0x8f8c0024, 0x3c050800, +0x8ca53b0c, 0x8d8b0004, 0x31663fff, 0xc5502b, +0x55400001, 0xc02821, 0x938d0000, 0x11a00073, +0xb0f82b, 0x8f98001c, 0x24040034, 0x930f00bc, +0x31ee0002, 0x51c00001, 0x24040030, 0xa4c82b, +0x172000d1, 0x0, 0xa42823, 0xb0f82b, +0x3c010800, 0xa4243b18, 0x17e00068, 0x2002021, +0x3c030800, 0x8c633b08, 0x83102b, 0x54400001, +0x801821, 0x8f880020, 0x3c010800, 0xac233b10, +0x4821, 0x9104000d, 0x30830020, 0x50600001, +0x8f490e18, 0x8f830010, 0x123382b, 0x10e00059, +0x0, 0x3c040800, 0x8c843b10, 0x895821, +0x6b502b, 0x11400056, 0x90602b, 0x693023, +0xc02021, 0x3c010800, 0xac263b10, 0x12000003, +0x241ffffc, 0x1090008a, 0x32270003, 0x9fc824, +0x3c010800, 0xac393b10, 0x3c010800, 0xa4203b2e, +0x8f840008, 0x12040007, 0x8f83001c, 0xaf910004, +0x2002021, 0x8c7100cc, 0xaf900008, 0x26300001, +0xac7000cc, 0x3c020800, 0x8c423b10, 0x8f8a000c, +0x24070018, 0x822023, 0x1422823, 0xaf840008, +0x10800002, 0xaf85000c, 0x24070010, 0x8f860018, +0x3c010800, 0xa0273b2c, 0x24070040, 0x90cc0085, +0x318b00c0, 0x11670040, 0x8f8d0010, 0x14a00015, +0x2021, 0x934a0109, 0x8f420974, 0x314500ff, +0x22602, 0x24a30001, 0x3090007f, 0x3071007f, +0x1230007a, 0x2407ff80, 0xa0c30083, 0x3c090800, +0x8d293b28, 0x8f880020, 0x240d0002, 0x352c0008, +0x3c010800, 0xa02d3b6d, 0x3c010800, 0xac2c3b28, +0x24040010, 0x910e000d, 0x31c60020, 0x10c00005, +0x801821, 0x24080001, 0x3c010800, 0xac283b10, +0x34830001, 0x8fbf0018, 0x8fb10014, 0x8fb00010, +0x601021, 0x3e00008, 0x27bd0020, 0x3c010800, +0xa4203b18, 0x13e0ff9a, 0x2002021, 0xa000c1f, +0xa02021, 0x3c040800, 0x8c843b10, 0x90602b, +0x1180ffae, 0x0, 0x3c0f0800, 0x95ef3b18, +0x1e47021, 0x1c6682b, 0x11a00007, 0x2c820004, +0x3c1f6000, 0x8ff95404, 0x3338003f, 0x1700ffe5, +0x24030042, 0x2c820004, 0x1040ffa0, 0x24030042, +0xa000c7d, 0x8fbf0018, 0x152dffc0, 0x0, +0x8cdf0074, 0x3c038000, 0x2405ff80, 0x3e3c825, +0xacd90074, 0x90d80085, 0x240e0004, 0x24040010, +0x330f003f, 0x1e54025, 0xa0c80085, 0x8f880020, +0x3c010800, 0xa02e3b6d, 0x24030001, 0x9106000d, +0x30c90020, 0x15200003, 0x0, 0x3c030800, +0x8c633b10, 0x3c010800, 0xac233b08, 0xa000c74, +0x0, 0x8f87000c, 0x8c880084, 0xe8282b, +0x14a00002, 0xe08821, 0x8c910084, 0x24090001, +0xa3890000, 0x8f440e18, 0x2202821, 0xe000ad0, +0x2203021, 0x2208021, 0xa000c05, 0xaf820010, +0x71823, 0x30660003, 0x3c010800, 0xa4263b2e, +0x12200005, 0x8f8c001c, 0x918b00bc, 0x316a0004, +0x15400015, 0x24cd0004, 0x3c0f0800, 0x95ef3b2e, +0x1e47021, 0xae302b, 0x50c0ff6e, 0x8f840008, +0x2c850005, 0x14a0ffa3, 0x24030042, 0x30980003, +0x17000002, 0x981823, 0x2483fffc, 0x3c010800, +0xac233b10, 0xa000c41, 0x0, 0xa75824, +0xa000c69, 0x1671826, 0x3c010800, 0xa42d3b2e, +0xa000cd1, 0x0, 0x3c010800, 0xac203b10, +0xa000c7c, 0x24030042, 0x8f83000c, 0x14600007, +0x1021, 0x8f880020, 0x24050005, 0x91060000, +0x30c400ff, 0x10850003, 0x0, 0x3e00008, +0x0, 0x910a0018, 0x314900ff, 0x939c2, +0x14e0fffa, 0x8f850018, 0x3c040800, 0x94843b18, +0x3c030800, 0x8c633b30, 0x3c190800, 0x8f393b10, +0x3c0f0800, 0x95ef3b2e, 0x64c021, 0x8cad0054, +0x3197021, 0x1cf6021, 0x18d5823, 0x1960001d, +0x0, 0x910e001c, 0x8f8c0028, 0x974b0e10, +0x31cd00ff, 0x8d850004, 0x16d3023, 0x8d880000, +0x30ceffff, 0xe5100, 0xaac821, 0x3821, +0x1072021, 0x32a182b, 0x83c021, 0xad990004, +0xad980000, 0x918f000a, 0x1cf6821, 0xa18d000a, +0x8f880028, 0x974b0e12, 0xa50b0008, 0x950a0038, +0x25490001, 0xa5090038, 0x9107000d, 0x34e60008, +0xa106000d, 0x3e00008, 0x0, 0x27bdffe0, +0x93870000, 0x8f8f0020, 0x8fad0014, 0x3c0e7fff, +0x8f890008, 0x35c8ffff, 0xafbf001c, 0xafb00018, +0x1a81824, 0x91ea000d, 0x717c0, 0x3c1fbfff, +0x625825, 0x2d2e0001, 0x8f900014, 0x37f9ffff, +0x3c180800, 0x8f183b30, 0x3c0f0800, 0x95ef3b26, +0x1796824, 0xe4780, 0x3c07efff, 0x3c05f0ff, +0x1a81825, 0x31490020, 0x34e2ffff, 0x34acffff, +0x3105823, 0x27a50010, 0x24060002, 0x25ea0002, +0x621824, 0x808021, 0x15200002, 0x4021, +0x8f480e1c, 0xa7aa0012, 0x5600037, 0x24070000, +0x30ff00ff, 0x1fcf00, 0x8f8b0018, 0x793825, +0xafa70014, 0x916f0085, 0x3c080800, 0x91083b2d, +0x3c18dfff, 0x31ee00c0, 0x370affff, 0xe182b, +0x3c1f0800, 0x97ff3b20, 0xea6824, 0xa3a80011, +0x31740, 0x1a24825, 0x8fb90010, 0xafa90014, +0x3c0a0800, 0x914a3b2f, 0xa7bf0016, 0x8fa80014, +0x32cc024, 0x3c0b0100, 0x3c0f0fff, 0x30b1825, +0x31470003, 0x35eeffff, 0x10c6824, 0x71600, +0x6ef824, 0x3c097000, 0x1a2c825, 0x3e95825, +0xafb90014, 0xafab0010, 0xe000072, 0xa3a00015, +0x8f8c0020, 0x26020008, 0x9186000d, 0x30c40020, +0x10800006, 0x8fbf001c, 0x3c050800, 0x94a53b1c, +0x24b0ffff, 0x3c010800, 0xa4303b1c, 0x8fb00018, +0x3e00008, 0x27bd0020, 0x8f980010, 0x118502b, +0x5540ffc7, 0x24070001, 0xa000d54, 0x30ff00ff, +0x93820000, 0x27bdffe0, 0xafbf0018, 0x1040000f, +0x805021, 0x8f880020, 0x240b0005, 0x8f890004, +0x91070000, 0x8f84001c, 0x1002821, 0x30e3003f, +0x8f860028, 0x106b0008, 0x3821, 0xafa90010, +0xe000439, 0xafaa0014, 0xa3800000, 0x8fbf0018, +0x3e00008, 0x27bd0020, 0x8d190018, 0x3c0f0800, +0x8def3b10, 0x8f98000c, 0x3c027fff, 0x8d080014, +0x345fffff, 0x33f6824, 0x1f87021, 0x1ae6023, +0x1883821, 0xafa90010, 0xe000439, 0xafaa0014, +0xa000da2, 0xa3800000, 0x8f870020, 0x3c050800, +0x94a53b2e, 0x3c020800, 0x8c423b28, 0x90e6000d, +0x52400, 0x30c30020, 0x1060002c, 0x444025, +0x8f850018, 0x6021, 0x240b0001, 0x90a30085, +0x4821, 0x240a0001, 0x3c0f8000, 0x35ee0070, +0x8dc70000, 0xaf870030, 0x8f580178, 0x700fffe, +0x3c038000, 0x34790070, 0x8f380000, 0x3c050800, +0x8ca50074, 0x3c0d0800, 0x8dad0070, 0x3077823, +0xaf3821, 0x1021, 0xef302b, 0x1a22021, +0x861821, 0x3c010800, 0xac270074, 0x3c010800, +0xac230070, 0xaf4b0148, 0x3c190800, 0x8f393b30, +0xa7490144, 0xa74a0146, 0xaf59014c, 0x3c0b0800, +0x916b3b2d, 0xa34b0152, 0xaf480154, 0x3c081000, +0xa74c0158, 0x3e00008, 0xaf480178, 0x8f4b0e1c, +0x3c0a0800, 0x8d4a3b10, 0x97490e16, 0x974d0e14, +0x1456021, 0x312affff, 0xa000dc5, 0x31a9ffff, +0x8f830020, 0x9064000d, 0x30820020, 0x10400029, +0x0, 0x4821, 0x5021, 0x4021, +0x3c078000, 0x34eb0070, 0x8d670000, 0xaf870030, +0x8f4c0178, 0x580fffe, 0x3c0d8000, 0x35ac0070, +0x8d8b0000, 0x3c050800, 0x8ca50074, 0x3c040800, +0x8c840070, 0x1673023, 0xa67821, 0x1021, +0x1e6c82b, 0x82c021, 0x3197021, 0x3c010800, +0xac2f0074, 0x3c010800, 0xac2e0070, 0xaf490148, +0x3c0d0800, 0x8dad3b30, 0xa7480144, 0x24090040, +0xa74a0146, 0x3c081000, 0x240aff91, 0xaf4d014c, +0xa34a0152, 0xaf490154, 0xa7400158, 0x3e00008, +0xaf480178, 0x8f490e18, 0x97460e12, 0x97450e10, +0x30caffff, 0xa000dfb, 0x30a8ffff, 0x8f830020, +0x27bdfff8, 0x9064000d, 0x30820020, 0x1040003a, +0x0, 0x240b0001, 0x4821, 0x240a0001, +0x3c088000, 0x35070070, 0x8ce30000, 0xaf830030, +0x8f4c0178, 0x580fffe, 0x3c0e8000, 0x3c040800, +0x90843b6c, 0x35c70070, 0x8cec0000, 0x3c050800, +0x8ca50074, 0xa3a40003, 0x3c190800, 0x8f390070, +0x8fad0000, 0x1833023, 0xa63821, 0x1021, +0x3227821, 0xe6c02b, 0x1f86021, 0x1ae4025, +0xafa80000, 0x3c010800, 0xac270074, 0x3c010800, +0xac2c0070, 0x9346010a, 0x3c040800, 0x90843b6d, +0xa3a00002, 0xa3a60001, 0x8fa30000, 0x3c0580ff, +0x3099007f, 0x34a2ffff, 0x627824, 0x19c600, +0x1f87025, 0x240d3000, 0xaf4e014c, 0x27bd0008, +0xaf4d0154, 0xa7400158, 0xaf4b0148, 0xa7490144, +0xa74a0146, 0x3c091000, 0x240aff80, 0xa34a0152, +0x3e00008, 0xaf490178, 0x8f4b0e18, 0x97460e12, +0x97450e10, 0x30caffff, 0xa000e2f, 0x30a9ffff, +0x8f850018, 0x24020080, 0x90a40085, 0x308300c0, +0x10620005, 0x8f86001c, 0x8f880004, 0x8f870008, +0xacc800c8, 0xacc700c4, 0x3e00008, 0x0, +0x3c0a0800, 0x254a37cc, 0x3c090800, 0x25293898, +0x3c080800, 0x25082c4c, 0x3c070800, 0x24e739ac, +0x3c060800, 0x24c6363c, 0x3c050800, 0x24a533b4, +0x3c040800, 0x24842fdc, 0x3c030800, 0x246336d4, +0x3c020800, 0x244234a8, 0x3c010800, 0xac2a3c38, +0x3c010800, 0xac293c34, 0x3c010800, 0xac283c30, +0x3c010800, 0xac273c3c, 0x3c010800, 0xac263c4c, +0x3c010800, 0xac253c44, 0x3c010800, 0xac243c40, +0x3c010800, 0xac233c50, 0x3c010800, 0xac223c48, +0x3e00008, 0x0, 0x0 }; +u32 bce_TXP_b06FwData[(0x0/4) + 1] = { 0x0 }; +u32 bce_TXP_b06FwRodata[(0x0/4) + 1] = { 0x0 }; +u32 bce_TXP_b06FwBss[(0x14c/4) + 1] = { 0x0 }; +u32 bce_TXP_b06FwSbss[(0x68/4) + 1] = { 0x0 }; +u32 bce_TXP_b06FwSdata[(0x0/4) + 1] = { 0x0 }; + + +int bce_CP_b06FwReleaseMajor = 0x1; +int bce_CP_b06FwReleaseMinor = 0x0; +int bce_CP_b06FwReleaseFix = 0x0; +u32 bce_CP_b06FwStartAddr = 0x08000080; +u32 bce_CP_b06FwTextAddr = 0x08000000; +int bce_CP_b06FwTextLen = 0x56cc; +u32 bce_CP_b06FwDataAddr = 0x08005820; +int bce_CP_b06FwDataLen = 0x84; +u32 bce_CP_b06FwRodataAddr = 0x080056cc; +int bce_CP_b06FwRodataLen = 0x134; +u32 bce_CP_b06FwBssAddr = 0x08005998; +int bce_CP_b06FwBssLen = 0x5d8; +u32 bce_CP_b06FwSbssAddr = 0x080058a4; +int bce_CP_b06FwSbssLen = 0xf1; +u32 bce_CP_b06FwSDataAddr = 0x00000000; +int bce_CP_b06FwSDataLen = 0x0; +u32 bce_CP_b06FwText[(0x56cc/4) + 1] = { +0xa000020, 0x0, 0x0, +0xd, 0x6370342e, 0x362e3137, 0x0, +0x4061104, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x20, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x1, +0x2b, 0x0, 0x10000003, 0x0, +0xd, 0xd, 0x3c020800, 0x244258a4, +0x3c030800, 0x24635f70, 0xac400000, 0x43202b, +0x1480fffd, 0x24420004, 0x3c1d0800, 0x37bd7ffc, +0x3a0f021, 0x3c100800, 0x26100080, 0x3c1c0800, +0x279c58a4, 0xe00019c, 0x0, 0xd, +0x27bdffe8, 0x3c096018, 0xafbf0010, 0x8d2c5000, +0x240dff7f, 0x24080031, 0x18d5824, 0x356a380c, +0x24070c00, 0x3c1a8000, 0xad2a5000, 0x3c04800a, +0xaf480008, 0x3c1b8008, 0xaf470024, 0xe000924, +0xaf840010, 0xe0008e7, 0x0, 0xe000834, +0x0, 0xe00125e, 0x0, 0x3c046016, +0x8c850000, 0x3c06ffff, 0x3c025353, 0xa61824, +0x1062003f, 0x34867c00, 0x94c201f2, 0xa780002c, +0x10400003, 0xa78000cc, 0x38581e1e, 0xa798002c, +0x94c201f8, 0x10400004, 0x978300cc, 0x38591e1e, +0xa79900cc, 0x978300cc, 0x2c7f0067, 0x53e00001, +0x24030066, 0x9784002c, 0x2c820401, 0x14400002, +0x602821, 0x24040400, 0x3c076000, 0x8ce90438, +0x2403103c, 0x3128ffff, 0x11030017, 0x30b9ffff, +0x5720000c, 0xa38000ce, 0x24020050, 0xa38200ce, +0x939f00ce, 0x13e0000a, 0x8fbf0010, 0x27bd0018, +0xa78000cc, 0xa780002c, 0xa7800034, 0x3e00008, +0xa78000e6, 0x939f00ce, 0x17e0fff8, 0x8fbf0010, +0x27bd0018, 0xa78500cc, 0xa784002c, 0xa7800034, +0x3e00008, 0xa78000e6, 0xa38000ce, 0x8ccb003c, +0x316a0001, 0x1140000e, 0x0, 0x30a7ffff, +0x10e0ffe6, 0x24020050, 0x8ccc00c8, 0x31860001, +0x14c0ffe4, 0x939f00ce, 0xa000072, 0x24020051, +0x8c8f0004, 0x3c0e6000, 0xa000055, 0x1ee3021, +0x8cef0808, 0x240d5708, 0xf7402, 0x11cd0004, +0x30b8ffff, 0x24050066, 0xa000073, 0x24040400, +0x1700ffd4, 0x939f00ce, 0xa000072, 0x24020050, +0x8f860010, 0x3089ffff, 0x93940, 0x8cc30010, +0x3c080050, 0xe82025, 0xaf430038, 0x8cc50014, +0x27420400, 0xaf82001c, 0xaf45003c, 0xaf440030, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x8f4b0000, 0x316a0020, 0x1140fffd, 0x0, +0x3e00008, 0x0, 0x8f840010, 0x948a001a, +0x8c870024, 0x3149ffff, 0x940c0, 0xe83021, +0xaf46003c, 0x8c850024, 0x8f43003c, 0xa31023, +0x18400029, 0x0, 0x8c8b0020, 0x25620001, +0x3c0d0050, 0x35ac0008, 0xaf420038, 0xaf4c0030, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x8f4f0000, 0x31ee0020, 0x11c0fffd, 0x0, +0x8f4a0400, 0x3c080020, 0xac8a0010, 0x8f490404, +0xac890014, 0xaf480030, 0x0, 0x94860018, +0x9487001c, 0xc71821, 0xa4830018, 0x9485001a, +0x24a20001, 0xa482001a, 0x9498001a, 0x9499001e, +0x13380003, 0x0, 0x3e00008, 0x0, +0x3e00008, 0xa480001a, 0x8c820020, 0xa0000cc, +0x3c0d0050, 0xa0000bd, 0x0, 0x3c030800, +0x8c630020, 0x8f820018, 0x27bdffe8, 0x10620008, +0xafbf0010, 0xe0000f4, 0xaf830018, 0x3c030800, +0x8c630020, 0x24040001, 0x10640004, 0x8f890010, +0x8fbf0010, 0x3e00008, 0x27bd0018, 0x8fbf0010, +0x3c076012, 0xa520000a, 0x9528000a, 0x34e50010, +0x27bd0018, 0x3106ffff, 0x3e00008, 0xaca60090, +0x3c020800, 0x8c420020, 0x27bdffc8, 0xafbf0034, +0xafbe0030, 0xafb7002c, 0xafb60028, 0xafb50024, +0xafb40020, 0xafb3001c, 0xafb20018, 0xafb10014, +0x10400050, 0xafb00010, 0x8f840010, 0x94860006, +0x9483000a, 0xc32823, 0x30b6ffff, 0x12c0004a, +0x8fbf0034, 0x94890018, 0x948a000a, 0x12a4023, +0x3102ffff, 0x2c2382b, 0x14e00002, 0x2c02021, +0x402021, 0x2c8c0005, 0x15800002, 0x80a021, +0x24140004, 0xe0000a3, 0x2802021, 0x8f870010, +0x2809821, 0xaf800014, 0x94ed000a, 0x2808821, +0x1280004e, 0x31b2ffff, 0x3c177000, 0x3c154000, +0x3c1e6000, 0x8f8f001c, 0x8dee0000, 0x1d71824, +0x50750050, 0x2202021, 0x2a3802b, 0x16000035, +0x3c182000, 0x50780047, 0x2202021, 0x24100001, +0x8f830014, 0x14600039, 0x2915823, 0x230f823, +0x250c821, 0x33f1ffff, 0x1620ffee, 0x3332ffff, +0x8f870010, 0x3c110020, 0xaf510030, 0x0, +0x94e6000a, 0x3c1e6012, 0x37d50010, 0x2662821, +0xa4e5000a, 0x94e2000a, 0x94f2000a, 0x94f40018, +0x3057ffff, 0x1292003b, 0xaeb70090, 0x8ced0014, +0x8ce40010, 0x137140, 0x1ae4021, 0xe5fc3, +0x10e502b, 0x8b4821, 0x12a1821, 0xace80014, +0xace30010, 0x2d33823, 0x30f6ffff, 0x16c0ffb9, +0x8f840010, 0x8fbf0034, 0x8fbe0030, 0x8fb7002c, +0x8fb60028, 0x8fb50024, 0x8fb40020, 0x8fb3001c, +0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, +0x27bd0038, 0x107e001b, 0x0, 0x1477ffcc, +0x24100001, 0xe0015a9, 0x0, 0x8f830014, +0x1060ffcb, 0x230f823, 0x2915823, 0x8f870010, +0x1702021, 0xa000187, 0x3093ffff, 0x8f830014, +0x1460ffcb, 0x3c110020, 0xaf510030, 0xa000153, +0x0, 0xe00079b, 0x2402821, 0xa000147, +0x408021, 0xe000341, 0x2402821, 0xa000147, +0x408021, 0xe001471, 0x2202021, 0xa000147, +0x408021, 0xe0000bd, 0x0, 0xa000169, +0x2d33823, 0x27bdffe8, 0xafb00010, 0xafbf0014, +0xe000037, 0x0, 0x3c028000, 0x34500070, +0xa0001aa, 0x8e060000, 0x8f4f0000, 0x39ee0001, +0x31c20001, 0x10400024, 0x8f8600a8, 0x8e070000, +0x3c0c0800, 0x8d8c003c, 0x3c090800, 0x8d290038, +0xe66823, 0x18d2821, 0x5021, 0xad302b, +0x12a4021, 0x1062021, 0x3c010800, 0xac25003c, +0xaf8700a8, 0x3c010800, 0xac240038, 0xe0000f6, +0x0, 0x3c030800, 0x8c630070, 0x1060ffe6, +0x602021, 0x3c050800, 0x8ca50068, 0x3c060800, +0x8cc6006c, 0xe001538, 0x0, 0x3c010800, +0xac200070, 0x8f4f0000, 0x39ee0001, 0x31c20001, +0x1440ffde, 0x8f8600a8, 0x8e0a0000, 0x8f8b00a8, +0x3c050800, 0x8ca5003c, 0x3c040800, 0x8c840038, +0x14b4823, 0xa93821, 0x821821, 0xe9402b, +0x681021, 0x3c010800, 0xac27003c, 0x3c010800, +0xac220038, 0x8f5f0100, 0x2419ff00, 0x24180c00, +0x3f92024, 0x10980012, 0xaf840000, 0xaf440020, +0x936d0000, 0x240c0020, 0x31a600ff, 0x10cc0012, +0x240e0050, 0x10ce0004, 0x3c194000, 0xaf590138, +0xa0001a3, 0x0, 0xe0011d4, 0x0, +0x3c194000, 0xaf590138, 0xa0001a3, 0x0, +0xe00010f, 0x0, 0x3c194000, 0xaf590138, +0xa0001a3, 0x0, 0x8f580100, 0x802821, +0x330f00ff, 0x1e02021, 0xe0002ee, 0xaf8f0004, +0x3c194000, 0xaf590138, 0xa0001a3, 0x0, +0xa4102b, 0x24030001, 0x10400009, 0x3021, +0x52840, 0xa4102b, 0x4a00003, 0x31840, +0x5440fffc, 0x52840, 0x5060000a, 0x4182b, +0x85382b, 0x54e00004, 0x31842, 0xc33025, +0x852023, 0x31842, 0x1460fff9, 0x52842, +0x4182b, 0x3e00008, 0xc31021, 0x3084ffff, +0x30a5ffff, 0x8f4201b8, 0x440fffe, 0x3c074080, +0x873025, 0x3c031000, 0xaf400180, 0xaf450184, +0xaf460188, 0x3e00008, 0xaf4301b8, 0x3084ffff, +0x8f4201b8, 0x440fffe, 0x3c074038, 0x8ca60000, +0x872825, 0x3c031000, 0xaf460180, 0xaf450188, +0x3e00008, 0xaf4301b8, 0x8f830038, 0x8f860030, +0x1066000b, 0x804021, 0x3c070800, 0x24e75a18, +0x328c0, 0xa71021, 0x8c440000, 0x24630001, +0x10880005, 0x3063000f, 0x5466fffa, 0x328c0, +0x3e00008, 0x1021, 0x3c070800, 0x24e75a1c, +0xa73021, 0x3e00008, 0x8cc20000, 0x3c039000, +0x34620001, 0x822025, 0xaf440020, 0x8f450020, +0x4a0fffe, 0x0, 0x3e00008, 0x0, +0x3c038000, 0x34620001, 0x822025, 0x3e00008, +0xaf440020, 0x27bdffe0, 0xafb10014, 0x3091ffff, +0xafb00010, 0xafbf0018, 0x12200015, 0xa08021, +0x8ca50000, 0x10a00013, 0x24040002, 0xe000c6b, +0x24060140, 0xae000000, 0x8f4201b8, 0x440000d, +0x2821, 0x3c064000, 0x2262025, 0x8fbf0018, +0x8fb10014, 0x8fb00010, 0x3c031000, 0x27bd0020, +0xaf450180, 0xaf440188, 0x3e00008, 0xaf4301b8, +0x8ca50000, 0x8f4201b8, 0x440fffe, 0x3c064000, +0x2262025, 0x8fbf0018, 0x8fb10014, 0x8fb00010, +0x3c031000, 0x27bd0020, 0xaf450180, 0xaf440188, +0x3e00008, 0xaf4301b8, 0x3086ffff, 0x8f4201b8, +0x440fffe, 0x3c094006, 0x8ca80000, 0xc93825, +0xaf480180, 0x8ca40004, 0x3c031000, 0xaf440184, +0xaf470188, 0x3e00008, 0xaf4301b8, 0x27bdffe0, +0xafb00010, 0xafbf0018, 0xafb10014, 0x9363003e, +0x808021, 0x802821, 0x30620040, 0x2021, +0x1040000f, 0x8e110000, 0xe000860, 0x2202021, +0x93670000, 0x24040050, 0x30e500ff, 0x50a40012, +0x8e0f0000, 0x2202021, 0x8fbf0018, 0x8fb10014, +0x8fb00010, 0xa762013c, 0xa000920, 0x27bd0020, +0xe00027d, 0x0, 0xe000860, 0x2202021, +0x93670000, 0x24040050, 0x30e500ff, 0x14a4fff2, +0x2202021, 0x8e0f0000, 0x3c100800, 0x8e100050, +0x3c0d000c, 0x240bff80, 0x1f05021, 0x314e007f, +0x1da6021, 0x18d4021, 0x14b4824, 0xaf490028, +0x2202021, 0x8fbf0018, 0x8fb10014, 0x8fb00010, +0xa50200d6, 0x27bd0020, 0xa000920, 0xaf8800d0, +0x27bdffe0, 0xafbf0018, 0xafb10014, 0xafb00010, +0x93660001, 0x808021, 0xe000246, 0x30d10004, +0x93640005, 0x1029c2, 0xa7650000, 0x34830040, +0xa3630005, 0xe00024f, 0x2002021, 0xe000922, +0x2002021, 0x24020001, 0xaf62000c, 0x2002821, +0xa7620010, 0x24040002, 0xa7620012, 0x24060140, +0xa7620014, 0xe000c6b, 0xa7620016, 0x1620000f, +0x8fbf0018, 0x978c0034, 0x3c0b0800, 0x8d6b0078, +0x2588ffff, 0x3109ffff, 0x256a0001, 0x12a382b, +0x10e00006, 0xa7880034, 0x3c0f6006, 0x240e0016, +0x35ed0010, 0xadae0050, 0x8fbf0018, 0x8fb10014, +0x8fb00010, 0x3e00008, 0x27bd0020, 0x27bdffe0, +0xafb10014, 0xafbf0018, 0xafb00010, 0xa08821, +0x1080000a, 0x3c036000, 0x24020080, 0x10820012, +0x0, 0xd, 0x8fbf0018, 0x8fb10014, +0x8fb00010, 0x3e00008, 0x27bd0020, 0x8c682bf8, +0x500fffe, 0x0, 0xac712bc0, 0x8fbf0018, +0x8fb10014, 0x8fb00010, 0x3c091000, 0x27bd0020, +0x3e00008, 0xac692bf8, 0xe000246, 0xa02021, +0x93650005, 0x2202021, 0xe00024f, 0x30b000ff, +0x2403003e, 0x1603ffe7, 0x0, 0x8f440178, +0x480fffe, 0x24070007, 0x3c061000, 0xaf510140, +0x2202021, 0xa3470144, 0x8fbf0018, 0x8fb10014, +0x8fb00010, 0xaf460178, 0xa0002bf, 0x27bd0020, +0x27bdffe8, 0xafbf0014, 0xafb00010, 0x8f500020, +0x0, 0xe000922, 0xaf440020, 0xaf500020, +0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, +0x3084ffff, 0x8f4201b8, 0x440fffe, 0x3c074035, +0x873025, 0x3c031000, 0xaf450180, 0xaf400184, +0xaf460188, 0x3e00008, 0xaf4301b8, 0x3084ffff, +0x8f4201b8, 0x440fffe, 0x3c074036, 0x873025, +0x3c031000, 0xaf450180, 0xaf400184, 0xaf460188, +0x3e00008, 0xaf4301b8, 0x27bdffd0, 0xafb3001c, +0x3093ffff, 0xafb50024, 0xafb20018, 0xafbf0028, +0xafb40020, 0xafb10014, 0xafb00010, 0x30b5ffff, +0x12600027, 0x9021, 0x8f90001c, 0x8e030000, +0x3c068000, 0x24020040, 0x33e02, 0x32c02, +0x30e4007f, 0x668824, 0x1482001d, 0x30a500ff, +0x8f830028, 0x2c68000a, 0x51000010, 0x8f910014, +0x35880, 0x3c0c0800, 0x258c56cc, 0x16c5021, +0x8d490000, 0x1200008, 0x0, 0x2b21821, +0x3065ffff, 0xe00021a, 0x24040084, 0x16200002, +0x8f90001c, 0xaf800028, 0x8f910014, 0x260c0020, +0x264b0001, 0x1808021, 0x3172ffff, 0x16200004, +0xaf8c001c, 0x253402b, 0x1500ffdc, 0x0, +0x2401021, 0x8fbf0028, 0x8fb50024, 0x8fb40020, +0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x3e00008, 0x27bd0030, 0x240d0034, 0x14ad00f6, +0x0, 0x920b000e, 0x240a1680, 0x3c07000c, +0xa36b0021, 0x9203000d, 0x347f821, 0x3c066000, +0xa3630020, 0x96110012, 0x3c087fff, 0x350cffff, +0xa771003c, 0x96020010, 0x240b0005, 0x3054ffff, +0xaf740084, 0x8e19001c, 0xaf4a0028, 0x8ff80000, +0x8ccf4448, 0x3197026, 0x1ee3021, 0xaf66004c, +0x8f69004c, 0x24cd0001, 0x3c197f00, 0xaf690050, +0x8f640050, 0xaf640054, 0xaf660070, 0xaf6d0058, +0x8f650058, 0x24040050, 0xaf65005c, 0xa3600023, +0xaf6c0064, 0xa36b0037, 0x8e030014, 0xaf630048, +0x8f710048, 0xaf710024, 0x8e020018, 0xaf62006c, +0x9214000c, 0xa3740036, 0x936a003e, 0x355f0020, +0xa37f003e, 0x8f780074, 0x3197824, 0x35ee4000, +0xaf6e0074, 0x93700000, 0x320900ff, 0x11240233, +0x2418ff80, 0x3c040800, 0x24845a98, 0xe00028a, +0x0, 0x24060004, 0x24070001, 0x3c040800, +0x8c845a98, 0xa366007d, 0xa3670005, 0x8f4a0178, +0x540fffe, 0x24020002, 0xaf440140, 0xa3420144, +0x8f90001c, 0x3c141000, 0xaf540178, 0xa000369, +0xaf800028, 0x2cad0037, 0x51a0ff9c, 0x8f910014, +0x5a080, 0x3c180800, 0x271856f4, 0x2987821, +0x8dee0000, 0x1c00008, 0x0, 0x24060006, +0x14a60011, 0x0, 0x3c1f0800, 0x8fff5a98, +0x24040005, 0xaf5f0020, 0x8e190018, 0xaf790018, +0x8f78004c, 0xaf78001c, 0x8f6f0050, 0x122000c2, +0xaf6f0070, 0xa000369, 0xaf840028, 0x240a0007, +0x10aa0084, 0x24030006, 0x3c050800, 0x24a55a98, +0xe000254, 0x24040081, 0x8f90001c, 0x11102b, +0xa000369, 0xaf820028, 0x240a0004, 0x14aafff6, +0x24030050, 0x3c0e0800, 0x8dce5a98, 0xaf4e0020, +0x8e090008, 0xaf690040, 0x8e060008, 0xaf660044, +0x8e07000c, 0xaf670048, 0x8e040010, 0xaf64004c, +0x8e0d0010, 0xaf6d0084, 0x8e080014, 0xaf680050, +0x8e050018, 0xaf650054, 0x8e0c001c, 0xaf6c0058, +0x936b0000, 0x317400ff, 0x128301f5, 0x0, +0x8f640048, 0x8f660040, 0x863823, 0x4e00004, +0x2404008c, 0x1620ffde, 0x24020003, 0x24040082, +0x3c050800, 0x24a55a98, 0xe00027d, 0x0, +0x8f90001c, 0x1021, 0xa000369, 0xaf820028, +0x24090005, 0x14a9ffcc, 0x24052000, 0x3c0a0800, +0x8d4a5a98, 0xaf4a0020, 0x8e1f0004, 0xaf7f005c, +0x92190008, 0x24100008, 0xa3790021, 0x8f98001c, +0x930f0009, 0xa36f0020, 0x8f86001c, 0x90ce000a, +0x31c400ff, 0x10900010, 0x28830009, 0x1460006c, +0x24020002, 0x24080020, 0x1088000b, 0x34058000, +0x28850021, 0x14a00008, 0x24054000, 0x240d0040, +0x108d0005, 0x3c050001, 0x24070080, 0x10870002, +0x3c050002, 0x24054000, 0x8f6e0074, 0x3c0fff00, +0x1cf8024, 0x2054825, 0xaf690074, 0x90c4000b, +0xa3640081, 0x8f84001c, 0x9486000c, 0x10c0019b, +0x0, 0x948e000c, 0x241fffbf, 0x24060004, +0xa76e003c, 0x9090000e, 0xa370003e, 0x8f89001c, +0x9124000f, 0xa364003f, 0x8f94001c, 0x8e8d0010, +0x8f470074, 0x1a72823, 0xaf650060, 0x8e880014, +0xaf680064, 0x968c0018, 0xa76c0068, 0x968b001a, +0xa76b006a, 0x8e82001c, 0xaf62006c, 0x96830002, +0xa763013e, 0x928a000e, 0xa36a003e, 0x9379003e, +0x33fc024, 0x1220016a, 0xa378003e, 0x8f90001c, +0xa000369, 0xaf860028, 0x24140022, 0x14b4ff7e, +0x24030007, 0x3c020800, 0x8c425a98, 0x1220000c, +0xaf420020, 0xa000369, 0xaf830028, 0x240c0033, +0x10ac0014, 0x24080028, 0x3c050800, 0x24a55a98, +0xe000226, 0x24040081, 0xa0003ee, 0x8f90001c, +0x3c040800, 0x24845a98, 0xe00028a, 0x0, +0x936b0000, 0x24110050, 0x316300ff, 0x10710154, +0x0, 0x8f90001c, 0x1821, 0xa000369, +0xaf830028, 0x3c050800, 0x8ca55a98, 0x24040081, +0xaf450020, 0xa3680034, 0x3c050800, 0x24a55a98, +0xe000226, 0x0, 0x8f90001c, 0x24020009, +0xa000369, 0xaf820028, 0x2b28821, 0x3225ffff, +0xe00021a, 0x24040084, 0xa000369, 0x8f90001c, +0x1082ffa1, 0x24050400, 0x28940003, 0x12800176, +0x240c0004, 0x240b0001, 0x548bff9b, 0x24054000, +0xa00043d, 0x24050100, 0x3c040800, 0x24845a98, +0x8f62004c, 0xe00028a, 0x8f630050, 0x8f90001c, +0x2021, 0xa000369, 0xaf840028, 0x8e100004, +0x2404008a, 0xaf500020, 0x936e0005, 0x31c90002, +0x15200165, 0x2002821, 0x93780023, 0x2002821, +0x330f0020, 0x15e00160, 0x2404008d, 0x9362003f, +0x24190012, 0x305f00ff, 0x13f9015b, 0x24040081, +0xe000246, 0x2002021, 0x93740023, 0x240a0004, +0x2002021, 0x36830042, 0xa3630023, 0xe00024f, +0xa36a007d, 0x8f4b0178, 0x560fffe, 0x24050002, +0xaf500140, 0xa3450144, 0x8f90001c, 0x3c0c1000, +0xaf4c0178, 0xa0003ef, 0x11102b, 0x8e100004, +0x2404008a, 0xaf500020, 0x936d0005, 0x31a80002, +0x15000019, 0x2002821, 0x9367003f, 0x24140012, +0x30e400ff, 0x10940101, 0x0, 0x936e003f, +0x24060004, 0x31c900ff, 0x112600fc, 0x0, +0xe000246, 0x2002021, 0x93620023, 0x2419fffe, +0x2002021, 0x345f0020, 0xa37f0023, 0xa374003f, +0x93780005, 0x3197824, 0xe00024f, 0xa36f0005, +0x2002821, 0x2021, 0xe000336, 0x0, +0xa0003ee, 0x8f90001c, 0x8e050004, 0x3c0f0008, +0x34f4021, 0xaf450020, 0x910e0000, 0x24060050, +0x31c900ff, 0x1126017a, 0x24040088, 0x8f5901b8, +0x720fffe, 0x3c0c400e, 0x8c5825, 0x3c031000, +0xaf450180, 0xaf400184, 0xaf4b0188, 0xaf4301b8, +0x91020000, 0x240aff80, 0x24040004, 0x4af825, +0xa11f0000, 0xe000c6b, 0x24060030, 0xa0003ee, +0x8f90001c, 0x8e04001c, 0xe000231, 0x0, +0x1040014c, 0x404821, 0x8f90001c, 0x24050089, +0x8f4d01b8, 0x5a0fffe, 0x0, 0xaf490180, +0x8e0f001c, 0x3c144001, 0x11702b, 0xb44825, +0x3c111000, 0xaf4f0184, 0xaf8e0028, 0xaf490188, +0xaf5101b8, 0xa00036a, 0x8f910014, 0x96190002, +0x3c140800, 0x26945a98, 0x33380004, 0x130000f2, +0x3c026000, 0x8e1f001c, 0x3c010800, 0xac3f5a98, +0xaf5f0020, 0x920c0010, 0x240b0014, 0x318400ff, +0x148b011c, 0x0, 0x96090002, 0x312d0001, +0x15a001b2, 0x0, 0x8e020004, 0xae820008, +0x3c0e0800, 0x8dce5aa0, 0x11c001a8, 0x0, +0x8f690074, 0x3c0e8000, 0x24040001, 0x12e6825, +0xaf6d0074, 0xa3600005, 0xaf64000c, 0x3c0c0800, +0x8d8c5aa0, 0x8f88001c, 0xa7640010, 0xc59c2, +0xa7640012, 0xa7640014, 0xa7640016, 0xa76b0008, +0x8d030008, 0x24040002, 0xaf63002c, 0x8d0a000c, +0xaf6a0030, 0x91070010, 0xa3670034, 0x8f82001c, +0x90450011, 0xa3650035, 0x8f86001c, 0x90d00012, +0xa3700036, 0x8f9f001c, 0x93f90013, 0xa3790037, +0x8f90001c, 0x96180014, 0xa7780038, 0x96140016, +0xa774003a, 0x8e0f0018, 0xaf6f0024, 0x5620fe02, +0xaf840028, 0x3c050800, 0x24a55a98, 0xe000254, +0x2021, 0x8f90001c, 0xa0004ac, 0x2021, +0x8e0f0004, 0x3c140800, 0x26945a98, 0x3c010800, +0xac2f5a98, 0xaf4f0020, 0x920e0003, 0x31c90004, +0x11200002, 0x24020012, 0x24020006, 0xa362003f, +0x9203001b, 0x240affc0, 0x3062003f, 0x4af825, +0xa37f003e, 0x92190003, 0x33380001, 0x170000c1, +0x0, 0x8e020008, 0xae820008, 0x3c020800, +0x8c425aa0, 0x104000c0, 0x0, 0x221c2, +0xa7640008, 0x8e0d000c, 0x240b0001, 0x24140014, +0xaf6d002c, 0x8e080010, 0xaf680030, 0x96050016, +0xa7650038, 0x960c0014, 0xa76c003a, 0xaf6b000c, +0xa76b0010, 0xa76b0012, 0xa76b0014, 0xa76b0016, +0x122000eb, 0xa3740034, 0x92060003, 0x30c70002, +0x2cf00001, 0x26020008, 0x8f90001c, 0xa000369, +0xaf820028, 0x8e140004, 0x24030081, 0xaf540020, +0x93680023, 0x31050010, 0x10a000ac, 0x0, +0x8f4401b8, 0x480fffe, 0x3c06401f, 0x11382b, +0x661025, 0x3c111000, 0xaf540180, 0xaf870028, +0xaf400184, 0xaf420188, 0xaf5101b8, 0xa00036a, +0x8f910014, 0x8e060004, 0x3c190008, 0x3592021, +0xaf460020, 0x8e070008, 0x90980000, 0x240f0050, +0x331400ff, 0x128f00a7, 0x24050088, 0x8f4401b8, +0x480fffe, 0x3c0d4009, 0x11602b, 0xad1025, +0x3c111000, 0xaf460180, 0xaf8c0028, 0xaf470184, +0xaf420188, 0xaf5101b8, 0xa00036a, 0x8f910014, +0x3c050800, 0x24a55a98, 0xe00027d, 0x24040082, +0x8f90001c, 0x3021, 0xa000369, 0xaf860028, +0x3c040800, 0x8c845a98, 0xe0014f6, 0x0, +0x8f90001c, 0xa000486, 0x1821, 0xe000336, +0x24040081, 0xa0003ee, 0x8f90001c, 0x3c050800, +0x24a55a98, 0xe00027d, 0x2404008b, 0x8f90001c, +0x11302b, 0xa000369, 0xaf860028, 0x3c190800, +0x8f395a98, 0x3c1f0800, 0x8fff0050, 0x24ccfffe, +0x33f7821, 0x1f87024, 0xaf4e0028, 0x3c040800, +0x8c845a98, 0x3c090800, 0x8d290050, 0x896821, +0x31a5007f, 0xba4021, 0x1078021, 0xae0600d8, +0xaf9000d0, 0xae0000dc, 0xa0003b8, 0xae0c0108, +0xaf600084, 0x3c080800, 0x8d085a98, 0x3c0d0800, +0x8dad0050, 0x2405ff80, 0x3c02000c, 0x10d5821, +0x1656024, 0xaf4c0028, 0x8e0a0014, 0x3174007f, +0x29a1821, 0x627821, 0xadea00d8, 0x8e1f0014, +0xaf8f00d0, 0xadff00dc, 0x8e190010, 0x2738fffe, +0xa00040b, 0xadf80108, 0x548cfe27, 0x24054000, +0xa00043d, 0x24051000, 0xe00032b, 0x0, +0xa0003ee, 0x8f90001c, 0x8c46442c, 0x3c056c62, +0x34b07970, 0x3c010800, 0xac205a98, 0x14d00008, +0x24040002, 0x97880034, 0x978a002c, 0x2802821, +0x10a382b, 0x10e00011, 0x24040092, 0x24040002, +0xe000c89, 0x24050140, 0x3c010800, 0xac225a98, +0xaf420020, 0x3c030800, 0x8c635a98, 0x10600005, +0x24040083, 0xe000854, 0x0, 0x10400009, +0x24040083, 0x3c050800, 0x24a55a98, 0xe000254, +0x0, 0x8f90001c, 0x11202b, 0xa000369, +0xaf840028, 0xe000858, 0x0, 0xa000530, +0x8f90001c, 0x8e040008, 0xe000231, 0x0, +0xa000586, 0xae820008, 0x3c050800, 0x24a55a98, +0xe000226, 0x24040087, 0x8f90001c, 0xa0005a2, +0x11102b, 0xe00085c, 0x0, 0x3c050800, +0x24a55a98, 0xa00063a, 0x2404008b, 0xe000246, +0x2802021, 0x93700023, 0x2802021, 0x360d0010, +0xe00024f, 0xa36d0023, 0x8f90001c, 0xa0005ab, +0x1821, 0x24040004, 0xe000c89, 0x24050030, +0x1440002a, 0x404821, 0x8f90001c, 0xa000517, +0x24050083, 0x9205000c, 0x30bf0001, 0x13e00003, +0x0, 0x9602000e, 0xa482002c, 0x920a000c, +0x31480002, 0x1100ff51, 0x2821, 0x960b0012, +0x8e030014, 0xa48b001a, 0xa0005c2, 0xac83001c, +0x8f830038, 0x8f870030, 0x1067fe84, 0x2021, +0x3c090800, 0x25295a1c, 0x320c0, 0x893021, +0x8cd40000, 0x1285005e, 0x24780001, 0x3303000f, +0x5467fffa, 0x320c0, 0xa0004fe, 0x2021, +0x3c050800, 0x24a55a98, 0xe00027d, 0x24040082, +0x8f90001c, 0xa0005a2, 0x1021, 0x3c0b0008, +0x34b2021, 0x24030050, 0x240a0001, 0xaf420020, +0xa0830000, 0xa08a0001, 0x8f88001c, 0x91070004, +0xa0870018, 0x8f82001c, 0x90450005, 0xa0850019, +0x8f86001c, 0x90df0006, 0xa09f001a, 0x8f99001c, +0x93380007, 0xa098001b, 0x8f94001c, 0x928f0008, +0xa08f001c, 0x8f90001c, 0x920e0009, 0xa08e001d, +0x8f8d001c, 0x91ac000a, 0xa08c001e, 0x8f8b001c, +0x3c0c0800, 0x258c5a1c, 0x9163000b, 0x3c0b0800, +0x256b5a18, 0xa083001f, 0x8f8a001c, 0x9148000c, +0xa0880020, 0x8f87001c, 0x90e5000d, 0xa0850021, +0x8f82001c, 0x24054646, 0x9046000e, 0xa0860022, +0x8f9f001c, 0x93f9000f, 0xa0990023, 0x8f98001c, +0x93140010, 0xa0940024, 0x8f8f001c, 0x91f00011, +0xa0900025, 0x8f90001c, 0x8f8e0030, 0x8f990038, +0x960d0014, 0xe18c0, 0x25c80001, 0xa48d0028, +0x960a0016, 0x6c3021, 0x6bf821, 0xa48a002a, +0x96070018, 0x3108000f, 0xa487002c, 0xa485002e, +0x8e02001c, 0xacc90000, 0xaf880030, 0x11190003, +0xafe20000, 0xa000517, 0x2821, 0x250c0001, +0x3184000f, 0x2821, 0xa000517, 0xaf840038, +0x3c070800, 0x24e75a18, 0x878021, 0x2021, +0xacc00000, 0xa0004fe, 0xae000000, 0x3c050800, +0x24a55a98, 0xa00063a, 0x24040087, 0x8e040004, +0xe000231, 0x0, 0xa00053b, 0xae820008, +0x3084ffff, 0x30c600ff, 0x8f4201b8, 0x440fffe, +0x64400, 0x1043025, 0x3c072000, 0xc72025, +0x3c031000, 0xaf400180, 0xaf450184, 0xaf440188, +0x3e00008, 0xaf4301b8, 0x27bdffe8, 0xafb00010, +0xafbf0014, 0x3c076000, 0x24060002, 0x10800006, +0xa08021, 0x10102b, 0x8fbf0014, 0x8fb00010, +0x3e00008, 0x27bd0018, 0x3c09600e, 0xad200034, +0x8ce5201c, 0x8f82001c, 0x2408fffc, 0xa81824, +0xace3201c, 0xe0006ef, 0x8c45000c, 0x10102b, +0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, +0x3c02600e, 0x34470100, 0x24090018, 0x274a0400, +0x0, 0x0, 0x0, 0x3c060050, +0x34c30200, 0xaf440038, 0xaf45003c, 0xaf430030, +0x1401821, 0x8f4b0000, 0x31680020, 0x1100fffd, +0x2406007f, 0x2408ffff, 0x8c6c0000, 0x24c6ffff, +0x24630004, 0xacec0000, 0x14c8fffb, 0x24e70004, +0x0, 0x0, 0x0, 0x3c0f0020, +0xaf4f0030, 0x0, 0x24ad0200, 0x1a5702b, +0x2529ffff, 0x8e2021, 0x1520ffe1, 0x1a02821, +0x3e00008, 0x0, 0x27bdffe0, 0xafb10014, +0xafbf0018, 0xafb00010, 0x3c05600e, 0x8ca20034, +0x808821, 0x14400006, 0x3c046000, 0x8c87201c, +0x2408fffc, 0xe83024, 0x34c30001, 0xac83201c, +0x8f8b001c, 0x24090001, 0xaca90034, 0x95690002, +0x8d650014, 0x8d70000c, 0x2d240081, 0x8d670004, +0x8d660008, 0x10800007, 0x8d6a0010, 0x2d2c0004, +0x1580000e, 0x30ce0007, 0x312d0003, 0x11a0000b, +0x0, 0x2404008b, 0x2002821, 0xe0006ef, +0x24060003, 0x11102b, 0x8fbf0018, 0x8fb10014, +0x8fb00010, 0x3e00008, 0x27bd0020, 0x15c0fff6, +0x2404008b, 0x3c030020, 0xaf430030, 0x0, +0x24020001, 0xaf820014, 0x0, 0x0, +0x0, 0x3c1f0150, 0x13fc825, 0x25380003, +0x3c0f600e, 0xaf470038, 0x181882, 0xaf46003c, +0x35e8003c, 0xaf590030, 0x27470400, 0x8f440000, +0x30860020, 0x10c0fffd, 0x0, 0x10600008, +0x2466ffff, 0x2403ffff, 0x8ceb0000, 0x24c6ffff, +0x24e70004, 0xad0b0000, 0x14c3fffb, 0x25080004, +0x3c08600e, 0xad090038, 0x0, 0x0, +0x0, 0x3c070020, 0xaf470030, 0x0, +0xe000717, 0x1402021, 0x2002821, 0x2021, +0xe0006ef, 0x24060003, 0x11102b, 0x8fbf0018, +0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, +0x27bdffd8, 0xafb20018, 0x3092ffff, 0xafb10014, +0xafbf0020, 0xafb3001c, 0xafb00010, 0x1240002c, +0x8821, 0xa0007af, 0x24130001, 0x50b3003c, +0x8ce5000c, 0xd, 0x262d0001, 0x31b1ffff, +0x24ec0020, 0x232382b, 0x10e00021, 0xaf8c001c, +0x8f820014, 0x1440001e, 0x8f87001c, 0x3c067000, +0x3c032000, 0x8ce40000, 0x862824, 0x14a30018, +0x8f85003c, 0x44402, 0x3c098000, 0x898024, +0x14a0ffea, 0x310600ff, 0x24040002, 0x10c4001f, +0x28ca0003, 0x11400016, 0x240b0003, 0x14d3ffe7, +0x262d0001, 0x2002821, 0xe0006fd, 0x24040001, +0x8f87001c, 0xaf82003c, 0x262d0001, 0x31b1ffff, +0x24ec0020, 0x232382b, 0x14e0ffe1, 0xaf8c001c, +0x2201021, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, +0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0028, +0x14cbffd2, 0x262d0001, 0xe00073d, 0x2002021, +0x8f87001c, 0xa0007c9, 0xaf82003c, 0x2002821, +0xe0006fd, 0x2021, 0xa0007c8, 0x8f87001c, +0xe0006ef, 0x24040084, 0x1600ffc3, 0x8f87001c, +0xa0007a9, 0xaf80003c, 0x3082ffff, 0x14400003, +0x1821, 0x42402, 0x24030010, 0x308500ff, +0x14a00005, 0x3087000f, 0x24660008, 0x42202, +0x30c300ff, 0x3087000f, 0x14e00005, 0x30890003, +0x24680004, 0x42102, 0x310300ff, 0x30890003, +0x15200005, 0x388b0001, 0x246a0002, 0x42082, +0x314300ff, 0x388b0001, 0x31640001, 0x10800002, +0x246c0001, 0x318300ff, 0x3e00008, 0x601021, +0x308bffff, 0xb3942, 0x30e600ff, 0x3c090800, +0x25295998, 0x64080, 0x1096021, 0x8d870000, +0x3164001f, 0x240a0001, 0x8a1804, 0x30a500ff, +0xe32025, 0x14a00002, 0x31027, 0xe22024, +0x240f0001, 0xcf7004, 0x1096821, 0xe2827, +0x14800005, 0xada40000, 0x8f86000c, 0xa61024, +0x3e00008, 0xaf82000c, 0x8f88000c, 0x1c81025, +0x3e00008, 0xaf82000c, 0x3c06001f, 0x3c036000, +0x3084ffff, 0x34c5ff80, 0x24020020, 0xac602008, +0xac60200c, 0xac602010, 0xac652014, 0xac642018, +0xac622000, 0x0, 0x0, 0x3e00008, +0x0, 0x27bdffe8, 0x2402ffff, 0xafbf0010, +0xaf82000c, 0x2021, 0x3c060800, 0x24c65998, +0x2405ffff, 0x24890001, 0x44080, 0x3124ffff, +0x1061821, 0x2c870020, 0x14e0fffa, 0xac650000, +0xe000825, 0x2021, 0x24020001, 0x3c046000, +0x24050020, 0xac822018, 0xac852000, 0x0, +0x0, 0x0, 0x244a0001, 0x3142ffff, +0x2c460400, 0x14c0fff7, 0x8fbf0010, 0x3e00008, +0x27bd0018, 0x8f830008, 0x2c620400, 0x3e00008, +0x38420001, 0x8f830008, 0x24620001, 0x3e00008, +0xaf820008, 0x8f830008, 0x2462ffff, 0x3e00008, +0xaf820008, 0x27bdffe0, 0xafb10014, 0xafbf0018, +0xafb00010, 0x8f6b0030, 0x3c066000, 0x808821, +0xaccb2008, 0x8f6a002c, 0x3c028000, 0x24030008, +0xacca200c, 0x9769003a, 0x97680038, 0x92c00, +0x3107ffff, 0xa72025, 0xacc42010, 0xacc22014, +0xacc32000, 0x0, 0x0, 0x0, +0x3c036000, 0x8c6d2000, 0x31ac0008, 0x1580fff9, +0x0, 0x8c6e2014, 0x5c00020, 0x0, +0xe0007e9, 0x8f84000c, 0x24080, 0x3c090800, +0x25295998, 0x1093821, 0x8ce40000, 0xe0007e9, +0x28140, 0x2022021, 0x3090ffff, 0x2002021, +0xe000807, 0x2821, 0x3c0c8000, 0x22c5825, +0x3210ffff, 0x3c116000, 0x240a0020, 0xae2b2014, +0xae302018, 0xae2a2000, 0x0, 0x0, +0x0, 0x2001021, 0x8fbf0018, 0x8fb10014, +0x8fb00010, 0x3e00008, 0x27bd0020, 0x8c662014, +0x3c02001f, 0x3443ff80, 0x3c1fffe8, 0xc3c024, +0x37f90800, 0x3198021, 0x1079c2, 0x3c0c8000, +0x22c5825, 0x31f0ffff, 0x3c116000, 0x240a0020, +0xae2b2014, 0xae302018, 0xae2a2000, 0x0, +0x0, 0x0, 0x2001021, 0x8fbf0018, +0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, +0x27bdffe8, 0xafb00010, 0x3402ffff, 0x3090ffff, +0xafbf0014, 0x12020006, 0x2002021, 0xe000825, +0x0, 0x2002021, 0xe000807, 0x24050001, +0x8f840008, 0x8fbf0014, 0x8fb00010, 0x2483ffff, +0x27bd0018, 0x3e00008, 0xaf830008, 0x439c2, +0x30e6003f, 0x43b42, 0x71840, 0x24021000, +0x2cc40020, 0x24c8ffe0, 0xaf42002c, 0x24630001, +0x14800003, 0x30a900ff, 0x71840, 0x310600ff, +0x36080, 0x24080001, 0x19a5821, 0x3c0a000e, +0xc82804, 0x16a3821, 0x11200005, 0x53027, +0x8ce90000, 0x1253025, 0x3e00008, 0xace60000, +0x8cee0000, 0x1c66824, 0x3e00008, 0xaced0000, +0x27bdffe8, 0xafbf0014, 0xafb00010, 0x3c046000, +0x8c850808, 0x3403f000, 0x30a2f000, 0x50430006, +0x24020001, 0x8c870808, 0x3404e000, 0x30e6f000, +0x10c4001e, 0x24020002, 0xaf820040, 0x3c106000, +0x3c0a0200, 0xae0a0814, 0x24091000, 0x3c08000e, +0x8e034400, 0x3482021, 0xaf49002c, 0x24050120, +0xe000ccf, 0x3021, 0x8f830040, 0x10600004, +0x3c021691, 0x240b0001, 0x106b000e, 0x3c023d6c, +0x344f0090, 0xae0f4408, 0x8fbf0014, 0x8fb00010, +0x3c0c6000, 0x240e1000, 0x3c0d0200, 0x27bd0018, +0xad8e4420, 0x3e00008, 0xad8d0810, 0xa0008f6, +0xaf800040, 0x3c0218da, 0x344f0090, 0xae0f4408, +0x8fbf0014, 0x8fb00010, 0x3c0c6000, 0x240e1000, +0x3c0d0200, 0x27bd0018, 0xad8e4420, 0x3e00008, +0xad8d0810, 0xa0008ca, 0x24050001, 0xa0008ca, +0x2821, 0x3c080800, 0x25085da4, 0x2404ffff, +0x1001821, 0x2402001e, 0x2442ffff, 0xac640000, +0x441fffd, 0x24630004, 0x3c070800, 0x24e75e20, +0x8ce5fffc, 0x2404001c, 0x24060001, 0x308a001f, +0x1464804, 0x24840001, 0x91027, 0x2c830020, +0x1460fffa, 0xa22824, 0xace5fffc, 0x3c056666, +0x34a4616e, 0x3c060800, 0x24c65ee0, 0xaf840058, +0xaf88009c, 0x2404ffff, 0xc01821, 0x2402001f, +0x2442ffff, 0xac640000, 0x441fffd, 0x24630004, +0x3c076666, 0x3c050800, 0x24a55ea0, 0xaf860048, +0x34e6616e, 0xaf860098, 0x2404ffff, 0xa01821, +0x2402000f, 0x2442ffff, 0xac640000, 0x441fffd, +0x24630004, 0x3c0b6666, 0x3c060800, 0x24c65e20, +0x3568616e, 0xaf8500a4, 0xaf880070, 0x2404ffff, +0xc01821, 0x2402001f, 0x2442ffff, 0xac640000, +0x441fffd, 0x24630004, 0x3c0d6666, 0x3c0a0800, +0x254a5f60, 0x35ac616e, 0xaf860090, 0xaf8c005c, +0x2404ffff, 0x1401821, 0x24020003, 0x2442ffff, +0xac640000, 0x441fffd, 0x24630004, 0x3c090800, +0x25295f70, 0x8d27fffc, 0x24040006, 0x24050001, +0x3099001f, 0x325c004, 0x24840001, 0x187827, +0x2c8e0020, 0x15c0fffa, 0xef3824, 0xad27fffc, +0x3c096666, 0x24030400, 0x240403dc, 0x24050200, +0x24060066, 0x3522616e, 0x3c080800, 0x25085aa4, +0xaf820074, 0xaf830044, 0xaf83006c, 0xaf830050, +0xaf830084, 0xaf8a008c, 0xaf840064, 0xaf85004c, +0xaf860054, 0xaf840078, 0xaf850060, 0xaf860080, +0x1001821, 0x24020002, 0x2442ffff, 0xac600000, +0x441fffd, 0x24630004, 0x24040003, 0x2403000c, +0x3c0a0800, 0x254a5ab0, 0xaf8a0068, 0xa00099d, +0x2405ffff, 0x41880, 0x24840001, 0x685821, +0x2c8700c0, 0x14e0fffb, 0xad650000, 0x3c0e6666, +0x35cd616e, 0x240c17a0, 0x24081800, 0xaf8d0088, +0xaf8c0094, 0x3e00008, 0xaf88007c, 0x2484007f, +0x421c2, 0x4021, 0x3021, 0x3821, +0x2821, 0xa0009b4, 0xaf8400a0, 0x10600006, +0x24e70001, 0xc43021, 0x24a50001, 0x2cc20bf5, +0x1440fffa, 0x2ca30066, 0x3c090800, 0x25295f60, +0x1201821, 0x24020003, 0x2442ffff, 0xac600000, +0x441fffd, 0x24630004, 0x10e0001a, 0x24e3ffff, +0x32942, 0x10a0000a, 0x2021, 0x2406ffff, +0x3c030800, 0x24635f60, 0x24840001, 0x85502b, +0xac660000, 0x25080001, 0x1540fffb, 0x24630004, +0x30e2001f, 0x10400008, 0x86880, 0x240c0001, +0x4c3804, 0x85880, 0x1692821, 0x24e6ffff, +0x3e00008, 0xaca60000, 0x1a94021, 0x2409ffff, +0xad090000, 0x3e00008, 0x0, 0xaf440028, +0x3c04000c, 0x3442021, 0x52882, 0xa000ccf, +0x3021, 0x42180, 0x3c036000, 0xac641008, +0x0, 0x52980, 0xac65100c, 0x0, +0x3e00008, 0x8c62100c, 0x27bdffe8, 0x802821, +0x24040038, 0xafbf0014, 0xe0009e4, 0xafb00010, +0x24040e00, 0xaf440028, 0x3c10000c, 0x3502021, +0x24050010, 0xe000ccf, 0x3021, 0x3501021, +0xac400000, 0xac400004, 0x24040038, 0x8fbf0014, +0x8fb00010, 0x24053fff, 0x27bd0018, 0xa0009e4, +0x8c430000, 0x42180, 0x3c036000, 0xac641008, +0x0, 0x8c62100c, 0x3e00008, 0x21182, +0x27bdffc8, 0xafb40020, 0x8f940068, 0xafbe0030, +0xafb7002c, 0xafb60028, 0xb821, 0x80b021, +0x241e00c0, 0xafbf0034, 0xafb50024, 0xafb3001c, +0xafb20018, 0xafb10014, 0xafb00010, 0xa000a21, +0xafa5003c, 0x50400001, 0x8f940068, 0x27deffff, +0x13c00028, 0x26940004, 0x8e920000, 0x3c030800, +0x24635da0, 0x1240fff7, 0x283102b, 0x3c040800, +0x24845aa4, 0x2841023, 0x2a8c0, 0x9821, +0xa000a30, 0x24110001, 0x118840, 0x12200026, +0x0, 0x2b38021, 0x2512824, 0x2002021, +0x10a0fff9, 0x26730001, 0xe0009ed, 0x0, +0x166840, 0x32ec0001, 0x1ac2021, 0xe0009e4, +0x2002821, 0x8f890094, 0x26f70001, 0x8fa6003c, +0x3aeb0001, 0x316a0001, 0x2528ffff, 0x113827, +0x2cab021, 0xaf880094, 0x16e6ffe7, 0x2479024, +0xae920000, 0x2e01021, 0x8fbf0034, 0x8fbe0030, +0x8fb7002c, 0x8fb60028, 0x8fb50024, 0x8fb40020, +0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x3e00008, 0x27bd0038, 0x3c0e0800, 0x25ce5da0, +0x28e102b, 0xa000a1c, 0xae920000, 0x27bdffd8, +0xafb10014, 0xafb00010, 0xafbf0020, 0xafb3001c, +0xafb20018, 0xa08821, 0x10a0001f, 0x48040, +0x3c130800, 0x26735aa4, 0xa000a69, 0x24120001, +0x12200019, 0x26100001, 0xe000a04, 0x2002021, +0x23142, 0x2444ffa0, 0x61880, 0x3045001f, +0x2c8217a1, 0x731821, 0x2631ffff, 0x1040fff4, +0xb23004, 0x8c690000, 0x2002021, 0x24053fff, +0x1264024, 0x1500ffee, 0x1263825, 0xe0009e4, +0xac670000, 0x8f8a0094, 0x26100001, 0x25470001, +0x1620ffe9, 0xaf870094, 0x8fbf0020, 0x8fb3001c, +0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, +0x27bd0028, 0x8f85009c, 0x805821, 0x4021, +0x4821, 0x240a001f, 0x3c0c0800, 0x258c5e1c, +0x3c0d0800, 0x25ad5da4, 0x8ca60000, 0x50c00014, +0x4021, 0xad1023, 0x238c0, 0x24030001, +0xa000aa2, 0x2021, 0x15000003, 0xe41021, +0x24482024, 0x4821, 0x25290001, 0x512b0013, +0x2506dfdc, 0x10600006, 0x24840001, 0xc37024, +0x15c0fff5, 0x31840, 0xa000aa0, 0x4021, +0x10ac0026, 0x24a30004, 0x602821, 0x254affff, +0x1540ffe5, 0xaf85009c, 0x512b0004, 0x2506dfdc, +0x4021, 0x3e00008, 0x1001021, 0x66142, +0x30c5001f, 0xc5080, 0x3c070800, 0x24e75da4, +0x24040001, 0x1473021, 0x1120000f, 0xa42004, +0x3c050800, 0x24a55e20, 0x14800005, 0x2529ffff, +0x24c60004, 0x10c50011, 0x0, 0x24040001, +0x8ccf0000, 0x4c027, 0x42040, 0x1f86824, +0x1520fff5, 0xaccd0000, 0x8f990078, 0x1001021, +0x32b4823, 0x3e00008, 0xaf890078, 0x3c050800, +0x24a55da4, 0xa000aaa, 0x4021, 0x3c060800, +0x24c65da4, 0xa000ac3, 0x24040001, 0x308800ff, +0x24020002, 0x1102000a, 0x24030003, 0x1103005c, +0x8f8900a4, 0x24040004, 0x1104005f, 0x24050005, +0x11050067, 0x1821, 0x3e00008, 0x601021, +0x8f890048, 0x3c0c0800, 0x258c5ee0, 0x3c040800, +0x24845f60, 0x24030020, 0x1060000f, 0x5821, +0x240d0002, 0x240e0003, 0x3c0f0800, 0x25ef5ee0, +0x8d270000, 0x14e0000b, 0x30f9ffff, 0x25290004, +0x124c02b, 0x53000001, 0x1804821, 0x2463ffff, +0x5460fff8, 0x8d270000, 0x1601821, 0x3e00008, +0x601021, 0x13200032, 0x3c0500ff, 0x30e200ff, +0x403021, 0x10400042, 0x5021, 0x24050001, +0x2021, 0x5c840, 0xa6c024, 0x17000003, +0x332500ff, 0x14a0fffb, 0x24840001, 0x12cc023, +0x1828c0, 0xaa6021, 0x8c5021, 0x3144001f, +0x240c0001, 0x8c1804, 0x31027, 0xe23024, +0x110d0041, 0xad260000, 0x110e004c, 0xa1840, +0x110d0036, 0x8f87006c, 0x510e0056, 0x8f8c0060, +0x240d0004, 0x110d005a, 0x8f8e0084, 0x240e0005, +0x150effda, 0x1601821, 0x240b1430, 0x11400006, +0x1821, 0x8f8400a0, 0x24630001, 0x6a402b, +0x1500fffd, 0x1645821, 0x8f8a0080, 0xaf89008c, +0x1601821, 0x2549ffff, 0xa000afa, 0xaf890080, +0xe52024, 0x73602, 0x1080ffd0, 0x240a0018, +0x75402, 0x314600ff, 0xa000b02, 0x240a0010, +0x3c0c0800, 0x258c5ea0, 0x3c040800, 0x24845ee0, +0xa000ae9, 0x24030010, 0x3c0c0800, 0x258c5e20, +0x3c040800, 0x24845ea0, 0xa000ae8, 0x8f890090, +0x71a02, 0x306600ff, 0xa000b02, 0x240a0008, +0x8f89008c, 0x3c0c0800, 0x258c5f60, 0x3c040800, +0x24845f70, 0xa000ae9, 0x24030004, 0xa4080, +0x250b0030, 0x24e6ffff, 0x1601821, 0xaf890048, +0xa000afa, 0xaf86006c, 0xac982, 0x197880, +0x3c070800, 0x24e75ea0, 0x1e72021, 0xa1842, +0x8c8f0000, 0x3079001f, 0x32c3804, 0x7c027, +0x1f86024, 0xa000b17, 0xac8c0000, 0x33142, +0x62880, 0xaf2821, 0x3062001f, 0x8cb80000, +0x24630001, 0x4cc804, 0x32142, 0x193827, +0x41080, 0x3073024, 0x4f2021, 0xa000b5b, +0xaca60000, 0xa68c0, 0x25ab0032, 0x258affff, +0x1601821, 0xaf8900a4, 0xa000afa, 0xaf8a0060, +0x254b1030, 0xaf890090, 0x1601821, 0x25c9ffff, +0xa000afa, 0xaf890084, 0x30860007, 0x2cc20006, +0x10400014, 0x0, 0x64080, 0x3c030800, +0x246357d0, 0x1033821, 0x8ce40000, 0x800008, +0x0, 0x24090003, 0x10a9000e, 0x0, +0x240a0005, 0x10aa000b, 0x0, 0x240b0001, +0x10ab0008, 0x0, 0x8f8c00a0, 0x10ac0005, +0x0, 0x3e00008, 0x1021, 0xa000a88, +0xa02021, 0xa000ad6, 0xc02021, 0x27bdffe8, +0x308400ff, 0x24030002, 0x1083000b, 0xafbf0010, +0x24060003, 0x1086003a, 0x24080004, 0x10880068, +0x240e0005, 0x108e007f, 0x2caf1430, 0x8fbf0010, +0x3e00008, 0x27bd0018, 0x2ca20030, 0x1440fffc, +0x8fbf0010, 0x24a5ffd0, 0x531c2, 0x66880, +0x3c070800, 0x24e75ee0, 0x1a73021, 0x8cc90000, +0x52882, 0x30ac001f, 0x240b0001, 0x18b5004, +0x8f840048, 0x12a4025, 0xacc80000, 0x8c830000, +0x50600001, 0xaf860048, 0x8f98006c, 0x30ae0001, +0x24a6ffff, 0x270f0001, 0x15c00002, 0xaf8f006c, +0x24a60001, 0x64142, 0x82080, 0x871821, +0x8c790000, 0x30c2001f, 0x24060001, 0x46f804, +0x33f3824, 0x10e0ffda, 0x8fbf0010, 0x5c182, +0x187080, 0x3c0f0800, 0x25ef5ea0, 0x1cf4821, +0x8d2b0000, 0x56842, 0x31a5001f, 0xa66004, +0x16c5025, 0x27bd0018, 0x3e00008, 0xad2a0000, +0x2ca70030, 0x14e0ffca, 0x8fbf0010, 0x30b90007, +0x1723ffc7, 0x24a8ffce, 0x86a02, 0xd6080, +0x3c0b0800, 0x256b5ea0, 0x18b3021, 0x8cc40000, +0x828c2, 0x30aa001f, 0x24080001, 0x1484804, +0x8f8200a4, 0x891825, 0xacc30000, 0x8c5f0000, +0x53e00001, 0xaf8600a4, 0x57040, 0xe7942, +0xf2880, 0x3c040800, 0x24845ee0, 0xa41821, +0x8c6b0000, 0x25df0001, 0x31cd001f, 0x1f5142, +0x1a86004, 0x16c4825, 0xa1080, 0xac690000, +0x442821, 0x8ca60000, 0x8f980060, 0x33f9001f, +0x8fbf0010, 0x3283804, 0xc77825, 0x270e0001, +0x27bd0018, 0xacaf0000, 0x3e00008, 0xaf8e0060, +0x24a5efd0, 0x2cb80400, 0x1300ff99, 0x8fbf0010, +0x53142, 0x65880, 0x3c0a0800, 0x254a5e20, +0x16a3021, 0x8cc40000, 0x30a3001f, 0x24090001, +0x691004, 0x8f990090, 0x82f825, 0xacdf0000, +0x8f270000, 0x50e00001, 0xaf860090, 0x8f8d0084, +0x8fbf0010, 0x27bd0018, 0x25ac0001, 0x3e00008, +0xaf8c0084, 0x15e0ff82, 0x8fbf0010, 0x8f8600a0, +0x61040, 0x46f821, 0x1f2100, 0x3e4c821, +0x193840, 0x24f81430, 0xb8402b, 0x1100ff78, +0x8fbf0010, 0x24a4ebd0, 0xe000203, 0xc02821, +0x27942, 0xf7080, 0x3c0d0800, 0x25ad5f60, +0x1cd2021, 0x8c8b0000, 0x304c001f, 0x24060001, +0x1861804, 0x8f89008c, 0x1635025, 0xac8a0000, +0x8d250000, 0x50a00001, 0xaf84008c, 0x8f980080, +0x8fbf0010, 0x27bd0018, 0x27080001, 0x3e00008, +0xaf880080, 0x30a50007, 0x24030003, 0x10a30010, +0x28a20004, 0x14400008, 0x24070002, 0x24030004, +0x10a30015, 0x24080005, 0x10a8000f, 0x8f8500a0, +0x3e00008, 0x0, 0x14a7fffd, 0x802821, +0x14c3fffb, 0x24040002, 0xa000b9a, 0x0, +0x24090005, 0x802821, 0x10c9fffb, 0x24040003, +0x3e00008, 0x0, 0x14c5fff1, 0x802821, +0xa000b9a, 0x24040005, 0x240a0001, 0x802821, +0x10cafff1, 0x24040004, 0x3e00008, 0x0, +0x27bdffe0, 0xafb00010, 0x581c2, 0x2603ffd0, +0x24c5003f, 0x2c6223d0, 0x24c6007f, 0xafb20018, +0xafb10014, 0xafbf001c, 0x309100ff, 0x691c2, +0x52982, 0x2002021, 0x10400008, 0x2403ffff, +0xe000a5a, 0x0, 0x2002021, 0x2202821, +0xe000c48, 0x2403021, 0x1821, 0x8fbf001c, +0x8fb20018, 0x8fb10014, 0x8fb00010, 0x601021, +0x3e00008, 0x27bd0020, 0x27bdffd8, 0x24a2007f, +0xafb3001c, 0xafb20018, 0x299c2, 0x309200ff, +0x24a3003f, 0x2402021, 0x2602821, 0xafb10014, +0xafb00010, 0xafbf0020, 0xe000b7d, 0x38982, +0x408021, 0x402021, 0x2202821, 0x14400009, +0x1821, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, +0x8fb10014, 0x8fb00010, 0x601021, 0x3e00008, +0x27bd0028, 0xe000a0b, 0x0, 0x402821, +0x2002021, 0x1051fff3, 0x1019c0, 0xe000a5a, +0x0, 0x2002021, 0x2402821, 0xe000c48, +0x2603021, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, +0x8fb10014, 0x8fb00010, 0x1821, 0x601021, +0x3e00008, 0x27bd0028, 0x3084ffff, 0x30a5ffff, +0x10800007, 0x1821, 0x30820001, 0x10400002, +0x42042, 0x651821, 0x1480fffb, 0x52840, +0x3e00008, 0x601021, 0x10c00007, 0x0, +0x8ca20000, 0x24c6ffff, 0x24a50004, 0xac820000, +0x14c0fffb, 0x24840004, 0x3e00008, 0x0, +0x10a00008, 0x24a3ffff, 0xac860000, 0x0, +0x0, 0x2402ffff, 0x2463ffff, 0x1462fffa, +0x24840004, 0x3e00008, 0x0, 0x30a5ffff, +0x8f4201b8, 0x440fffe, 0x3c076015, 0xa73025, +0x3c031000, 0xaf440180, 0xaf400184, 0xaf460188, +0x3e00008, 0xaf4301b8, 0x8f8500d0, 0x2c864000, +0x801821, 0x8ca70084, 0x87102b, 0x14400010, +0x0, 0x8ca80084, 0x2d064000, 0x50c0000f, +0x24034000, 0x8caa0084, 0x8a482b, 0x51200001, +0x8ca30084, 0x35a42, 0xb2080, 0x3c050800, +0x24a55820, 0x851821, 0x3e00008, 0x8c620000, +0x14c0fff4, 0x0, 0x24034000, 0x35a42, +0xb2080, 0x3c050800, 0x24a55820, 0x851821, +0x3e00008, 0x8c620000, 0x8f8300d0, 0x906600d0, +0x24c50001, 0xa06500d0, 0x8f8500d0, 0x906400d0, +0x90a200d2, 0x10440017, 0x0, 0x936c0078, +0x8f8b00bc, 0x318a00ff, 0xa16a000c, 0x25490001, +0x938700c4, 0x312200ff, 0x3048007f, 0x1107000b, +0x26827, 0xa3620078, 0x8f4e0178, 0x5c0fffe, +0x8f9900b0, 0x24180002, 0x3c0f1000, 0xaf590140, +0xa3580144, 0x3e00008, 0xaf4f0178, 0xa000d18, +0x31a20080, 0xa0a000d0, 0xa000d0e, 0x0, +0x8f8700d0, 0x27bdffc8, 0xafbf0030, 0xafb7002c, +0xafb60028, 0xafb50024, 0xafb40020, 0xafb3001c, +0xafb20018, 0xafb10014, 0xafb00010, 0x94e300e0, +0x94e200e2, 0x104300d7, 0x2405ffff, 0x3c047fff, +0x3497ffff, 0x2415ff80, 0xa000dff, 0x3c16000e, +0x108a00d1, 0x8fbf0030, 0x8f9100b0, 0x3c180800, +0x8f18005c, 0x1230c0, 0x129140, 0x3117021, +0x1d57824, 0xaf4f002c, 0x94ec00e2, 0x31cd007f, +0x1ba5821, 0x318a7fff, 0x1764821, 0xa8040, +0x2091021, 0x94530000, 0x3c080800, 0x8d080058, +0x246c021, 0x32733fff, 0x131980, 0x1032021, +0x2242821, 0x30bf007f, 0x3fac821, 0xb5a024, +0xaf54002c, 0x336a021, 0x8e870010, 0x8e8f0030, +0x3785821, 0x256d0088, 0xef7023, 0x240c0002, +0xae8e0010, 0xaf8d00ac, 0xa16c0088, 0x976a003c, +0x8e840030, 0x8f9100ac, 0xe000ce5, 0x3150ffff, +0x24b80, 0x2094025, 0x3c024200, 0x1022025, +0xae240004, 0x8e830004, 0x8f8d00ac, 0x8e860000, +0x240e0008, 0xada3001c, 0xada60018, 0xada0000c, +0xada00010, 0x929f000a, 0x33f900ff, 0xa5b90014, +0x96850008, 0x3c1f000c, 0xa5a50016, 0x9298000a, +0x331100ff, 0xa5b10020, 0x96900008, 0x24180005, +0xa5b00022, 0xada00024, 0x928f000b, 0x2410c000, +0x31e700ff, 0xa5a70002, 0xa1ae0001, 0x8e8c0030, +0x8f8b00ac, 0x8f8400b0, 0xad6c0008, 0x3c0a0800, +0x8d4a0054, 0x1444821, 0x1354024, 0xaf480028, +0x3c020800, 0x8c420054, 0x443021, 0x30c3007f, +0x7ac821, 0x33f2821, 0x2458821, 0xaf9100bc, +0xaf8500c0, 0xa2380000, 0x8f8a00bc, 0x2403ffbf, +0x2418ffdf, 0x954f0002, 0x1f03824, 0xf37025, +0xa54e0002, 0x914d0002, 0x31ac003f, 0x358b0040, +0xa14b0002, 0x8f8600bc, 0x8f8900d0, 0xacc00004, +0x8d28007c, 0x3c098000, 0xacc80008, 0x90c4000d, +0x3082007f, 0xa0c2000d, 0x8f8500bc, 0x90bf000d, +0x3e3c824, 0xa0b9000d, 0x8f9100bc, 0x9233000d, +0x2789024, 0xa232000d, 0x8e900034, 0x8f8b00bc, +0xad700010, 0x8e87002c, 0x8e8f0030, 0xef7023, +0xad6e0014, 0x916d0018, 0x31ac007f, 0xa16c0018, +0x8f9f00bc, 0x8e8a0030, 0x8fe80018, 0x1572024, +0x1093024, 0xc41025, 0xafe20018, 0x9283000a, +0xa3e3001c, 0x96990008, 0x8f8500bc, 0x8f9800d0, +0xa4b9001e, 0x8e900030, 0x8e840030, 0xe000203, +0x8f050084, 0x8f8500d0, 0x29140, 0x29900, +0x90af00bc, 0x2538821, 0x403021, 0x31e70002, +0x10e00003, 0x2118021, 0x29080, 0x2128021, +0x90b900bc, 0x33270004, 0x10e00002, 0x6f880, +0x21f8021, 0x8e980030, 0x8f8b00bc, 0x24068000, +0x330f0003, 0xf7023, 0x31cd0003, 0x20d6021, +0xad6c0004, 0x94a400e2, 0x94aa00e2, 0x94b000e2, +0x31497fff, 0x25220001, 0x30537fff, 0x2061824, +0x734025, 0xa4a800e2, 0x94a400e2, 0x3c140800, +0x8e940060, 0x30917fff, 0x12340022, 0x0, +0xe000d05, 0x0, 0x8f8700d0, 0x2821, +0x94f300e0, 0x94f000e2, 0x1213000f, 0x8fbf0030, +0x90e900d0, 0x90e800d1, 0x313200ff, 0x310400ff, +0x244302b, 0x14c0ff36, 0x264a0001, 0x90ee00d2, +0x264b0001, 0x31cd00ff, 0x8d6021, 0x158bff33, +0x8f9100b0, 0x8fbf0030, 0x8fb7002c, 0x8fb60028, +0x8fb50024, 0x8fb40020, 0x8fb3001c, 0x8fb20018, +0x8fb10014, 0x8fb00010, 0xa01021, 0x3e00008, +0x27bd0038, 0x94a300e2, 0x664024, 0xa4a800e2, +0x90a400e2, 0x90b900e2, 0x309100ff, 0x11a1c2, +0x14f827, 0x1f39c0, 0x3332007f, 0x2473025, +0xa000df7, 0xa0a600e2, 0x3084ffff, 0x30a5ffff, +0xaf440018, 0xaf45001c, 0x3e00008, 0x8f420014, +0x27bdffb8, 0xafb00020, 0x8f9000d0, 0x3084ffff, +0xafa40010, 0xafbf0044, 0xafbe0040, 0xafb7003c, +0xafb60038, 0xafb50034, 0xafb40030, 0xafb3002c, +0xafb20028, 0xafb10024, 0xa7a00018, 0x920600d1, +0x920500d0, 0x30c400ff, 0x30a300ff, 0x64102b, +0x10400122, 0xafa00014, 0x920900d0, 0x8fb50010, +0x312800ff, 0x883823, 0x24f4ffff, 0x14882b, +0x15982b, 0x2339024, 0x52400126, 0x8fb40014, +0x961e0012, 0x961f0010, 0x8fb70010, 0x3dfc823, +0x171400, 0x19c400, 0x22403, 0x181403, +0x2e2b02a, 0x52c00001, 0x402021, 0x284282b, +0x10a00002, 0x801821, 0x2801821, 0x33c00, +0x71c03, 0x3064ffff, 0x2c860009, 0x14c00002, +0x60b821, 0x24170008, 0x8e0a0008, 0x176980, +0x8e09000c, 0x31abffff, 0x3c0c0010, 0x16c4025, +0x27520400, 0xaf4a0038, 0xaf9200b8, 0xaf49003c, +0xaf480030, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x8f4f0000, 0x31ee0020, 0x11c0fffd, +0x17982a, 0x2711024, 0xa000e92, 0xb021, +0x55e00101, 0x92580001, 0x31130080, 0x126001cf, +0x1202021, 0x96550012, 0x32a5ffff, 0xe000cda, +0xa7b50018, 0x8f9000d0, 0x291a023, 0x26c80001, +0x8f9100b8, 0x8b400, 0x16b403, 0x262c0040, +0x2d7782a, 0x14882b, 0x240b0001, 0x1809021, +0x1f11024, 0xaf8c00b8, 0xafab0014, 0x104001bc, +0x8f8900b0, 0x3c0c0800, 0x8d8c0054, 0x240bff80, +0x921e00d0, 0x1895021, 0x14b2824, 0x921900d0, +0xaf450028, 0x8e470010, 0x3c080800, 0x8d080058, +0x3c180800, 0x8f180054, 0x30e33fff, 0x32180, +0x1043021, 0x1265821, 0x2402ff80, 0x162f824, +0x920c00d0, 0xaf5f002c, 0x92480000, 0x33d100ff, +0x333500ff, 0x3099821, 0x117140, 0x1578c0, +0x326d007f, 0x1cf3821, 0x1ba2821, 0x318300ff, +0x3164007f, 0x3c0a000c, 0xaa8821, 0x367f021, +0x33140, 0x9a1021, 0x3108003f, 0x3c1f000e, +0xd1c021, 0x5f9821, 0x27d90088, 0x2d150008, +0xaf9100c0, 0xaf9900ac, 0xaf9800bc, 0xaf9300b4, +0x12a0018a, 0x8821, 0x240e0001, 0x10e4004, +0x310d005d, 0x11a0ffb2, 0x310f0002, 0x8e4a0028, +0x3c030080, 0x3c04ffef, 0xae6a0000, 0x8e450024, +0xa260000a, 0x3488ffff, 0xae650004, 0x9247002c, +0x3c1fff9f, 0x37feffff, 0xa267000c, 0x8e62000c, +0x3c180040, 0xa267000b, 0x433025, 0xc8c824, +0x33e8824, 0x238a825, 0xae75000c, 0x8e490004, +0xae600018, 0x3c0f00ff, 0xae690014, 0x8e4d002c, +0x35eeffff, 0x8f8b00b0, 0x1ae6024, 0xae6c0010, +0x8e470008, 0xa6600008, 0x96450012, 0xae670020, +0x8e42000c, 0x30b03fff, 0x105180, 0xae620024, +0x8e5e0014, 0x14b1821, 0x30a40001, 0xae7e0028, +0x8e590018, 0x331c2, 0x44380, 0xae79002c, +0x8e51001c, 0xc8f821, 0xa67f001c, 0xae710030, +0x96580002, 0x8e550020, 0xa678001e, 0xae750034, +0x92490033, 0x31300004, 0x56000005, 0x92500000, +0x8f8c00d0, 0x8d8b007c, 0xae6b0030, 0x92500000, +0x8f8f00bc, 0xa1f00000, 0x924e0033, 0x31cd0002, +0x51a00007, 0x925e0001, 0x8f8900bc, 0x2418ff80, +0x91310000, 0x311a825, 0xa1350000, 0x925e0001, +0x8f9900bc, 0x2409ffbf, 0x240bffdf, 0xa33e0001, +0x8f9500bc, 0x92b8000d, 0x3311007f, 0xa2b1000d, +0x8f8e00bc, 0x91d0000d, 0x2097824, 0xa1cf000d, +0x8f8800bc, 0x8e6d0014, 0x910a000d, 0x2dac0001, +0xc2940, 0x14b3824, 0xe51825, 0xa103000d, +0x96420012, 0x8f8800bc, 0x8f8700d0, 0xa5020002, +0x8e450004, 0x90ff00bc, 0x30a40003, 0x43023, +0x30de0003, 0xbe1021, 0x33f90002, 0x17200002, +0x24440034, 0x24440030, 0x90e200bc, 0xa23024, +0x30df0004, 0x17e00002, 0x24830004, 0x801821, +0x8f8f00ac, 0x24090002, 0xad030004, 0xa1e90000, +0x924e003f, 0x8f8d00ac, 0xa1ae0001, 0x8f9500ac, +0x924c003f, 0x8e440004, 0xa6ac0002, 0x976b003c, +0xe000ce5, 0x3170ffff, 0x25380, 0x20a3825, +0x3c054200, 0xe51825, 0xaea30004, 0x8f8600ac, +0x8e480038, 0xacc80018, 0x8e440034, 0xacc4001c, +0xacc0000c, 0xacc00010, 0xa4c00014, 0xa4c00016, +0xa4c00020, 0xa4c00022, 0xacc00024, 0x8e640014, +0x50800001, 0x24040001, 0xacc40008, 0xe000d05, +0x24110001, 0xa000e85, 0x8f9000d0, 0x920f00d2, +0x920e00d0, 0x8fb50010, 0x31eb00ff, 0x31cd00ff, +0x8d6023, 0x16c5021, 0x2554ffff, 0x14882b, +0x15982b, 0x2339024, 0x1640fedd, 0x0, +0x8fb40014, 0x8fbf0044, 0x8fbe0040, 0x3a820001, +0x8fb7003c, 0x8fb60038, 0x8fb50034, 0x8fb40030, +0x8fb3002c, 0x8fb20028, 0x8fb10024, 0x8fb00020, +0x3e00008, 0x27bd0048, 0x33110020, 0x122000ee, +0x24150001, 0x921e00bc, 0x241f0001, 0xa821, +0x33d90001, 0x1320000d, 0xafbf001c, 0x8e440014, +0x8e080084, 0x88102b, 0x14400002, 0x803021, +0x8e060084, 0x8e030064, 0xc3a82b, 0x16a00002, +0xc02021, 0x8e040064, 0x80a821, 0x8e470014, +0x8e050064, 0xe5302b, 0x14c00002, 0xe02021, +0x8e040064, 0x95f023, 0x13c00004, 0x8fac001c, +0x240a0002, 0xafaa001c, 0x8fac001c, 0x28c582b, +0x156000a8, 0x1821, 0x8e4f0038, 0x8e6d000c, +0x3c0e0080, 0xae6f0000, 0x8e4a0034, 0x3c10ff9f, +0x1ae5825, 0xae6a0004, 0x9246003f, 0x360cffff, +0x16c3824, 0x3c050020, 0x3c03ffef, 0xa266000b, +0xe51025, 0x3468ffff, 0x8f8700b8, 0x48f824, +0x3c040008, 0x3e4c825, 0xae79000c, 0x8cf80014, +0xae600018, 0x2be7821, 0xae780014, 0x8cf10018, +0xae71001c, 0x8ce90008, 0xae690024, 0x8cee000c, +0xae6f002c, 0xae600028, 0xae6e0020, 0xa6600038, +0xa660003a, 0x8ced0014, 0x1b58023, 0x21e9023, +0x12400011, 0xae720010, 0x90ea003d, 0x8e650004, +0x8e640000, 0xa3100, 0xa6c821, 0x1021, +0x326402b, 0x82f821, 0x3e8c021, 0xae790004, +0xae780000, 0x90f1003d, 0xa271000a, 0x8f8900b8, +0x95320006, 0xa6720008, 0x8f9800ac, 0x24190002, +0x2a02021, 0xa3190000, 0x9769003c, 0x8f9200ac, +0xe000ce5, 0x3131ffff, 0x27b80, 0x8f8500b8, +0x22f6825, 0x3c0e4200, 0x1ae8025, 0xae500004, +0x8f8400ac, 0x8cac0038, 0xac8c0018, 0x8cab0034, +0xac8b001c, 0xac80000c, 0xac800010, 0xa4800014, +0xa4800016, 0xa4800020, 0xa4800022, 0xac800024, +0x90a7003f, 0xa4870002, 0x12a00134, 0x24030001, +0x53c00002, 0x90a2003d, 0x90a2003e, 0x24480001, +0xa0880001, 0x8f9f00ac, 0xaff50008, 0x8f8300d0, +0x24070034, 0x906600bc, 0x30c50002, 0x50a00001, +0x24070030, 0x8f9200b8, 0x8f8a00bc, 0x906d00bc, +0x924b0000, 0x2412c000, 0x32a50003, 0xa14b0000, +0x8f8600b8, 0x8f8800bc, 0x24020004, 0x90c40001, +0x451823, 0x30790003, 0xa1040001, 0x8f8a00bc, +0x8f9f00b8, 0xf53821, 0x95580002, 0x97e90012, +0xf93821, 0x3128824, 0x312f3fff, 0x22f7025, +0xa54e0002, 0x91500002, 0x31a80004, 0x320c003f, +0x358b0040, 0xa14b0002, 0x12a00002, 0x8f8500bc, +0xe83821, 0x8f8e00d0, 0xaca70004, 0x240bffbf, +0x8dcd007c, 0x2ea40001, 0x2403ffdf, 0xacad0008, +0x90b0000d, 0x44140, 0x320c007f, 0xa0ac000d, +0x8f8600bc, 0x90ca000d, 0x14b1024, 0xa0c2000d, +0x8f8700bc, 0x90e5000d, 0xa3f824, 0x3e8c825, +0xa0f9000d, 0x8f9100b8, 0x8f8d00bc, 0x8e380020, +0xadb80010, 0x8e290024, 0xada90014, 0x8e2f0028, +0xadaf0018, 0x8e2e002c, 0xe000d05, 0xadae001c, +0x8fb0001c, 0x240c0002, 0x120c00ed, 0x8f9000d0, +0x8fa3001c, 0x608821, 0x14600002, 0x60a821, +0xa021, 0x56a0fe39, 0x291a023, 0x14882b, +0x8fae0010, 0x96070010, 0x3c0a0020, 0x1d6f023, +0x2c7c021, 0x33d2ffff, 0xa6180010, 0xafb20010, +0xaf4a0030, 0x0, 0x96170010, 0x96130012, +0x1277008e, 0x164180, 0x8e16000c, 0x8e0f0008, +0x817c3, 0x2c82821, 0xa8582b, 0x1e2a821, +0x2ab1821, 0xae05000c, 0xae030008, 0x8fb30010, +0x13b82b, 0x2378024, 0x1200ff05, 0x8f9000d0, +0xa000e4b, 0x0, 0x8e480038, 0xa6600008, +0x240f0003, 0xae680000, 0x8e4c0034, 0xa260000a, +0x8f9000b8, 0xae6c0004, 0x3c050080, 0x920b003f, +0xa26f000c, 0x8e62000c, 0x3c11ff9f, 0xa26b000b, +0x456825, 0x3623ffff, 0x3c04ffef, 0x8f8c00b8, +0x1a33024, 0x349fffff, 0xdfc824, 0xae79000c, +0x8d890014, 0x959e0012, 0x8f9800b0, 0xae690010, +0x8d8e0014, 0xae600018, 0xae600020, 0xae6e0014, +0xae600024, 0x8d870018, 0x33ce3fff, 0xe5180, +0xae670028, 0x8d880008, 0x1589021, 0x33d00001, +0xae680030, 0x8d91000c, 0x8f8d00ac, 0x1259c2, +0x107b80, 0x16f2821, 0x24020002, 0xa665001c, +0xa6600036, 0xae71002c, 0xa1a20000, 0x9763003c, +0x8f9800ac, 0x3c044200, 0x307fffff, 0x3e43025, +0xaf060004, 0x8f9900b8, 0x24070001, 0x240bc000, +0x8f330038, 0x24060034, 0xaf130018, 0x8f290034, +0xaf09001c, 0xaf00000c, 0xaf000010, 0xa7000014, +0xa7000016, 0xa7000020, 0xa7000022, 0xaf000024, +0xa7150002, 0xa3070001, 0x8f8a00ac, 0x8f9e00b8, +0x8f8c00bc, 0xad550008, 0x93c80000, 0xa1880000, +0x8f9200b8, 0x8f8f00bc, 0x92500001, 0xa1f00001, +0x8f8400bc, 0x94910002, 0x22b2824, 0xae1025, +0xa4820002, 0x908d0002, 0x31a3003f, 0xa0830002, +0x8f8300d0, 0x8f8400bc, 0x907f00bc, 0x33f30002, +0x52600001, 0x24060030, 0xac860004, 0x8c65007c, +0x240dffbf, 0x2a08821, 0xac850008, 0x9082000d, +0x3043007f, 0xa083000d, 0x8f8600bc, 0x90c4000d, +0x8df824, 0xa0df000d, 0x8f8e00bc, 0x91d9000d, +0x37290020, 0xa1c9000d, 0x8f9e00b8, 0x8f9300bc, +0x8fc70020, 0xae670010, 0x8fd80024, 0xae780014, +0x8fca0028, 0xae6a0018, 0x8fd2002c, 0xe000d05, +0xae72001c, 0xa00104c, 0x8f9000d0, 0x96020014, +0x8e040004, 0x3043ffff, 0x368c0, 0x8df821, +0xaf5f003c, 0x8e190004, 0x8f46003c, 0x3264823, +0x1920003c, 0x0, 0x8e050000, 0x24a20001, +0x3c0b0010, 0x35750008, 0xaf420038, 0xaf550030, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x8f4c0000, 0x318f0020, 0x11e0fffd, 0x0, +0x8f530400, 0x3c080020, 0xae130008, 0x8f570404, +0xae17000c, 0xaf480030, 0x0, 0x3c060800, +0x8cc60044, 0x24160001, 0x10d600bb, 0x0, +0x96190012, 0x3c050800, 0x8ca50040, 0xb94821, +0xa6090012, 0x960e0014, 0x25c70001, 0xa6070014, +0x96180014, 0x3304ffff, 0x5486ff49, 0x8fb30010, +0xa6000014, 0xe000e25, 0x30a5ffff, 0x3c040800, +0x8c840024, 0x961f0012, 0x446823, 0x3ed3023, +0xa6060012, 0xa001067, 0x8fb30010, 0xa0830001, +0x8f8200ac, 0x24040001, 0xac440008, 0xa000fff, +0x8f8300d0, 0x8e020000, 0xa0010f8, 0x3c0b0010, +0x8f9f00c0, 0x8fb8001c, 0x920f00d0, 0x920b00d0, +0x920d00d0, 0x31f100ff, 0x316e00ff, 0xe28c0, +0x111140, 0x451821, 0x31a600ff, 0x3635021, +0x6c940, 0x33f3821, 0x25490088, 0xaf8900ac, +0xaf8700bc, 0xa1580088, 0x9768003c, 0x3c02021, +0x8f9100ac, 0xe000ce5, 0x3110ffff, 0x26380, +0x20c7825, 0x3c044200, 0x8f8c00b8, 0x1e45825, +0xae2b0004, 0x8d910038, 0x8f8b00ac, 0x6821, +0xd1100, 0xad710018, 0x8d8e0034, 0x3c087fff, +0x3504ffff, 0xad6e001c, 0x9183003e, 0x8d65001c, +0x8d790018, 0x33100, 0x38702, 0xa6c021, +0x50f825, 0x306482b, 0x33f3821, 0xe95021, +0xad78001c, 0xad6a0018, 0xad60000c, 0xad600010, +0x918f003e, 0x24050005, 0x3c45024, 0xa56f0014, +0x95910004, 0x3c02021, 0xa5710016, 0x918e003e, +0xa56e0020, 0x958d0004, 0xa56d0022, 0xad600024, +0x9190003f, 0xa5700002, 0x9182003d, 0x24430001, +0xa1630001, 0x8f8600ac, 0x8f9f00bc, 0xacde0008, +0xa3e50000, 0x8f9000bc, 0x8f9900b8, 0x2405ffbf, +0x96070002, 0x97380012, 0x2477824, 0x33093fff, +0x1e98825, 0xa6110002, 0x92120002, 0x2418ffdf, +0x324e003f, 0x35cd0040, 0xa20d0002, 0x8f8600bc, +0x8f8c00d0, 0x2412ffff, 0xacc00004, 0x8d8b007c, +0x3c0c8000, 0xaccb0008, 0x90c2000d, 0x3043007f, +0xa0c3000d, 0x8f8700bc, 0x90ff000d, 0x3e5c824, +0xa0f9000d, 0x8f9100bc, 0x9229000d, 0x1387824, +0xa22f000d, 0x8f9000bc, 0xae120010, 0xae150014, +0x920e0018, 0x2415ff80, 0x2ae6825, 0xa20d0018, +0x8f8500bc, 0x8f8300b8, 0x8cab0018, 0x16c1024, +0x4a3025, 0xaca60018, 0x9068003e, 0xa0a8001c, +0x8f9f00b8, 0x8f8700bc, 0x8f9800d0, 0x97f90004, +0xa4f9001e, 0xe000203, 0x8f050084, 0x8f8600d0, +0x27940, 0x24900, 0x90d200bc, 0x1e98821, +0x402821, 0x32550002, 0x12a00003, 0x3d12021, +0x2a880, 0x952021, 0x90cc00bc, 0x31920004, +0x12400003, 0x33c90003, 0x54080, 0x882021, +0x24190004, 0x8f9e00bc, 0x3293823, 0x30f80003, +0x985021, 0xafca0004, 0xe000d05, 0xa6650038, +0xa001047, 0x8f9000d0, 0x960a0012, 0x3c1e0800, +0x8fde0024, 0x3ca9021, 0xa6120012, 0xa001067, +0x8fb30010, 0x27bdffe0, 0x3c180800, 0x8f180050, +0xafb00010, 0xafbf0018, 0xafb10014, 0xaf8400b0, +0x93710074, 0x3047821, 0x2410ff80, 0x31ee007f, +0x3225007f, 0x1f05824, 0x1da6821, 0x3c0c000a, +0xa38500c4, 0x1ac2821, 0xaf4b0024, 0x94a90010, +0x97680006, 0x90a60062, 0x803821, 0x24020030, +0x1092023, 0x30c300f0, 0xaf8500d0, 0x10620019, +0x3090ffff, 0x90ae0062, 0x240dfff0, 0x240a0050, +0x1ae6024, 0x318b00ff, 0x116a002f, 0x0, +0x16000007, 0x241f0c00, 0xaf5f0024, 0x8fb10014, +0x8fbf0018, 0x8fb00010, 0x3e00008, 0x27bd0020, +0xe000e2b, 0x2002021, 0x241f0c00, 0xaf5f0024, +0x8fb10014, 0x8fbf0018, 0x8fb00010, 0x3e00008, +0x27bd0020, 0x94a200e0, 0x94a400e2, 0x90bf0113, +0x821826, 0x3079ffff, 0x33e700c0, 0x14e00009, +0x2f310001, 0x16000038, 0x0, 0x5620ffe6, +0x241f0c00, 0xe000d27, 0x0, 0xa0011f9, +0x241f0c00, 0x1620ffde, 0x0, 0xe000d27, +0x0, 0x1440ffdc, 0x241f0c00, 0x16000022, +0x8f8300d0, 0x90690113, 0x3122003f, 0xa0620113, +0xa0011f9, 0x241f0c00, 0x94af00d4, 0x8f8600d4, +0xe02821, 0x24040005, 0xe000c6b, 0x31f0ffff, +0x14400005, 0x24030003, 0x979100e6, 0x1821, +0x2625ffff, 0xa78500e6, 0x8f5801b8, 0x700fffe, +0x3c196013, 0xaf400180, 0x241f0c00, 0xaf500184, +0x793825, 0x3c101000, 0xaf470188, 0x8fb10014, +0xaf5001b8, 0xaf5f0024, 0x8fb00010, 0x8fbf0018, +0x3e00008, 0x27bd0020, 0xe000e2b, 0x2002021, +0x5040ffb5, 0x241f0c00, 0x8f8300d0, 0x90690113, +0xa001222, 0x3122003f, 0xe000e2b, 0x2002021, +0x1440ffad, 0x241f0c00, 0x12200007, 0x8f8300d0, +0x90680113, 0x3106003f, 0x34c20040, 0xa0620113, +0xa0011f9, 0x241f0c00, 0xe000d27, 0x0, +0x5040ffa1, 0x241f0c00, 0x8f8300d0, 0x90680113, +0x3106003f, 0xa001252, 0x34c20040, 0xaf9b00c8, +0x3e00008, 0xaf8000ec, 0x3089ffff, 0x94042, +0x2d020041, 0x92980, 0x14400002, 0x95040, +0x24080040, 0x87940, 0x8c0c0, 0x1f85821, +0x256701a8, 0xef7021, 0x25cc007f, 0x240dff80, +0x18d1824, 0x653021, 0xca2821, 0x25640088, +0x240a0088, 0x3c010800, 0xac2a004c, 0x3c010800, +0xac240050, 0xaf8500d4, 0x3c010800, 0xac290060, +0x3c010800, 0xac280064, 0x3c010800, 0xac270054, +0x3c010800, 0xac230058, 0x3c010800, 0xac26005c, +0x3e00008, 0x0, 0x308300ff, 0x30c6ffff, +0x30e400ff, 0x8f4201b8, 0x440fffe, 0x34c00, +0x1243825, 0x3c086000, 0xe82025, 0x3c031000, +0xaf450180, 0xaf460184, 0xaf440188, 0x3e00008, +0xaf4301b8, 0x8f86001c, 0x3c096012, 0x35270010, +0x8ccb0004, 0x3c0c600e, 0x35850010, 0x316a0006, +0x2d480001, 0xace800c4, 0x8cc40004, 0xaca43180, +0x8cc20008, 0x94c30002, 0xaca23184, 0x3e00008, +0xa78300e4, 0x3c030800, 0x8c630050, 0x8f8400e8, +0x8f86001c, 0x2402ff80, 0x64c021, 0x302c824, +0xaf590028, 0x8ccd0004, 0x3305007f, 0xba7821, +0x3c0e000c, 0x1ee2821, 0xacad0058, 0x8cc80008, +0xaf8500d0, 0x3c076012, 0xaca8005c, 0x8ccc0010, +0x34e80010, 0xacac000c, 0x8ccb000c, 0xacab0008, +0x94aa0014, 0x3c020800, 0x8c420044, 0x25490001, +0xa4a90014, 0x94a40014, 0x3083ffff, 0x10620017, +0x8f8400d0, 0x3c0a0800, 0x8d4a0040, 0xa4aa0012, +0x8cce0018, 0xac8e0024, 0x8ccd0014, 0xac8d0020, +0x8cc70018, 0xac87002c, 0x8ccc0014, 0x24060001, +0xac8c0028, 0x8d0b00bc, 0x5166001a, 0x8d0200b4, +0x8d0200b8, 0xa482003a, 0x948f003a, 0xa48f003c, +0x948800d4, 0x3e00008, 0x3102ffff, 0x3c090800, +0x8d290024, 0xa4a00014, 0x8f8400d0, 0xa4a90012, +0x8cce0018, 0xac8e0024, 0x8ccd0014, 0xac8d0020, +0x8cc70018, 0xac87002c, 0x8ccc0014, 0x24060001, +0xac8c0028, 0x8d0b00bc, 0x5566ffea, 0x8d0200b8, +0x8d0200b4, 0xa482003a, 0x948f003a, 0xa48f003c, +0x948800d4, 0x3e00008, 0x3102ffff, 0x8f86001c, +0x3c0c0800, 0x8d8c0050, 0x240bff80, 0x8ccd0008, +0x3c03000c, 0xd51c0, 0x18a4021, 0x10b4824, +0xaf8a00e8, 0xaf490028, 0x90c70007, 0x3105007f, +0xba1021, 0x432821, 0x30e40004, 0x1080002f, +0xaf8500d0, 0x90cf0007, 0x31ee0008, 0x11c0003c, +0x0, 0x8cd9000c, 0x8cc40014, 0x324c02b, +0x13000026, 0x0, 0x8cc2000c, 0xaca20064, +0x8ccd0018, 0x2402fff8, 0xacad0068, 0x8ccc0010, +0xacac0080, 0x8ccb000c, 0xacab0084, 0x8cca001c, +0xacaa007c, 0x90a900bc, 0x1224024, 0xa0a800bc, +0x90c30007, 0x30670008, 0x10e00004, 0x8f8500d0, +0x90af00bc, 0x35ee0001, 0xa0ae00bc, 0x90d90007, +0x33380001, 0x1300000f, 0x8f8400d0, 0x24070020, +0x908200bc, 0x34490002, 0xa08900bc, 0x8f8400d0, +0x90880062, 0x310300f0, 0x14670006, 0x240a0034, +0xac8a00c0, 0xa001334, 0x0, 0xa00130e, +0x8cc20014, 0x90cb0007, 0x31660002, 0x10c00005, +0x0, 0x908d00bc, 0x35ac0004, 0xa08c00bc, +0x8f8400d0, 0x90980113, 0x330f003f, 0xa08f0113, +0x8f8e00d0, 0x95c500d4, 0x3e00008, 0x30a2ffff, +0xaca00064, 0xa00130f, 0x0, 0x27bdffd8, +0xafb00010, 0x8f90001c, 0xafbf0024, 0xafb40020, +0xafb20018, 0xafb10014, 0xafb3001c, 0x9613000e, +0x3c07600a, 0x3c146006, 0x3264ffff, 0x36930010, +0xe001261, 0x34f40410, 0x8f8400d4, 0x3c11600e, +0xe0009aa, 0x36310010, 0x920e0015, 0x3c070800, +0x8ce70060, 0x3c126012, 0x31cd000f, 0xa38d00f0, +0x8e0e0004, 0x8e0d0008, 0x96080012, 0x961f0010, +0x9619001a, 0x9618001e, 0x960f001c, 0x310cffff, +0x33ebffff, 0x332affff, 0x3309ffff, 0x31e6ffff, +0x3c010800, 0xac2b0040, 0x3c010800, 0xac2c0024, +0x3c010800, 0xac2a0044, 0xae293178, 0xae26317c, +0x92020015, 0x96030016, 0x36520010, 0x304400ff, +0x3065ffff, 0x3c060800, 0x8cc60064, 0xae243188, +0xae4500b4, 0x92080014, 0x96190018, 0x241f0001, +0x11fc004, 0x332fffff, 0x3c050800, 0x8ca50058, +0xae5800b8, 0xae4f00bc, 0x920c0014, 0xaf8e00d8, +0xaf8d00dc, 0x318b00ff, 0xae4b00c0, 0x920a0015, +0xae670048, 0xae66004c, 0x314900ff, 0xae4900c8, +0xae65007c, 0x3c030800, 0x8c630050, 0x3c040800, +0x8c84004c, 0x3c080800, 0x8d080054, 0x3c020800, +0x8c42005c, 0x8fbf0024, 0xae630080, 0x8fb00010, +0xae830074, 0x8fb3001c, 0xae22319c, 0xae4200dc, +0xae2731a0, 0xae2631a4, 0xae24318c, 0xae233190, +0xae283194, 0xae253198, 0xae870050, 0xae860054, +0xae850070, 0x8fb10014, 0xae4700e0, 0xae4600e4, +0xae4400cc, 0xae4300d0, 0xae4800d4, 0xae4500d8, +0x8fb40020, 0x8fb20018, 0x3e00008, 0x27bd0028, +0x27bdffe0, 0xafb10014, 0xafbf0018, 0x24110001, +0xe000854, 0xafb00010, 0x10510005, 0x978400e6, +0x978300cc, 0x83102b, 0x14400008, 0x8f8500d4, +0x24070002, 0x8fbf0018, 0x8fb10014, 0x8fb00010, +0xe01021, 0x3e00008, 0x27bd0020, 0xe000c89, +0x24040005, 0xaf8200e8, 0x1040fff6, 0x24070002, +0xe000858, 0x8f90001c, 0x979f00e6, 0x8f9900e8, +0x8f8d00c8, 0x27ef0001, 0x240e0050, 0xaf590020, +0xa78f00e6, 0xa1ae0000, 0x3c0c0800, 0x8d8c0064, +0x8f8600c8, 0x240a8000, 0xc5e00, 0xaccb0074, +0xa4c00006, 0x94c9000a, 0x241fff80, 0x3c0d000c, +0x12ac024, 0xa4d8000a, 0x90c8000a, 0x24182000, +0x11f1825, 0xa0c3000a, 0x8f8700c8, 0xa0e00078, +0x8f8500c8, 0x3821, 0xa0a00083, 0x3c020800, +0x8c420050, 0x8f8400e8, 0x447821, 0x1ffc824, +0xaf590028, 0x960b0002, 0x31ee007f, 0x1da6021, +0x18d3021, 0xa4cb00d4, 0x960a0002, 0xaf8600d0, +0x3c0e0004, 0x25492401, 0xa4c900e6, 0x8e080004, +0xacc80004, 0x8e030008, 0xacc30000, 0xa4c00010, +0xa4c00014, 0xa0c000d0, 0x8f8500d0, 0x2403ffbf, +0xa0a000d1, 0x3c040800, 0x8c840064, 0x8f8200d0, +0xa04400d2, 0x8e1f000c, 0x8f8a00d0, 0x978f00e4, +0xad5f001c, 0x8e190010, 0x24100030, 0xad590018, +0xa5400030, 0xa5510054, 0xa5510056, 0xa54f0016, +0xad4e0068, 0xad580080, 0xad580084, 0x914d0062, +0x31ac000f, 0x358b0010, 0xa14b0062, 0x8f8600d0, +0x90c90063, 0x3128007f, 0xa0c80063, 0x8f8400d0, +0x2406ffff, 0x90850063, 0xa31024, 0xa0820063, +0x8f9100d0, 0xe01021, 0x923f00bc, 0x37f90001, +0xa23900bc, 0x8f8a00d0, 0x938f00f0, 0xad580064, +0xad5000c0, 0x914e00d3, 0xf6900, 0x31cc000f, +0x18d5825, 0xa14b00d3, 0x8f8500d0, 0x8f8900dc, +0xaca900e8, 0x8f8800d8, 0x8fbf0018, 0x8fb10014, +0x8fb00010, 0x27bd0020, 0xaca800ec, 0xa4a600d6, +0xa4a000e0, 0xa4a000e2, 0x3e00008, 0x0, +0x27bdffe0, 0xafb00010, 0x8f90001c, 0xafb10014, +0xafbf0018, 0x8e190004, 0x3c180800, 0x8f180050, +0x240fff80, 0x1989c0, 0x2387021, 0x31cd007f, +0x1cf6024, 0x1ba5021, 0x3c0b000c, 0xaf4c0028, +0x14b4021, 0x950900d4, 0x950400d6, 0x8e070004, +0x3131ffff, 0xaf8800d0, 0xe000922, 0x721c0, +0x8e060004, 0x8f8300c8, 0x629c0, 0xaf450020, +0x9064003e, 0x30820040, 0x14400006, 0x8f8400d0, +0x341fffff, 0x948300d6, 0x3062ffff, 0x145f0004, +0x0, 0x948400d6, 0xe0008b7, 0x3084ffff, +0x8e050004, 0x2203021, 0x8fbf0018, 0x8fb10014, +0x8fb00010, 0x24040022, 0x3821, 0x529c0, +0xa001285, 0x27bd0020, 0x27bdffe0, 0xafb10014, +0x3091ffff, 0xafb00010, 0xafbf0018, 0x1220001d, +0x8021, 0x8f86001c, 0x8cc50000, 0x24030006, +0x53f02, 0x51402, 0x30e40007, 0x14830015, +0x304500ff, 0x2ca80006, 0x1100004d, 0x55880, +0x3c0c0800, 0x258c57e8, 0x16c5021, 0x8d490000, +0x1200008, 0x0, 0x8f8e00ec, 0x240d0001, +0x11cd0059, 0x0, 0x260b0001, 0x3170ffff, +0x24ca0020, 0x211202b, 0x1403021, 0x1480ffe6, +0xaf8a001c, 0x2001021, 0x8fbf0018, 0x8fb10014, +0x8fb00010, 0x3e00008, 0x27bd0020, 0x938700ce, +0x14e00038, 0x24040014, 0xe001346, 0x0, +0x8f86001c, 0x24020001, 0xa00148d, 0xaf8200ec, +0x8f8900ec, 0x24080002, 0x1128003b, 0x24040013, +0x2821, 0x3021, 0x24070001, 0xe001285, +0x0, 0xa00148d, 0x8f86001c, 0x8f8700ec, +0x24050002, 0x14e5fff6, 0x24040012, 0xe0012f2, +0x0, 0x8f8500e8, 0x403021, 0x24040012, +0xe001285, 0x3821, 0xa00148d, 0x8f86001c, +0x8f8300ec, 0x241f0003, 0x147fffd0, 0x260b0001, +0xe0012a4, 0x0, 0x8f8500e8, 0x403021, +0x24020002, 0x24040010, 0x3821, 0xaf8200ec, +0xe001285, 0x0, 0xa00148d, 0x8f86001c, +0x8f8f00ec, 0x24060002, 0x11e6000b, 0x0, +0x24040010, 0x2821, 0x3021, 0xa0014aa, +0x24070001, 0x2821, 0xe001285, 0x3021, +0xa00148d, 0x8f86001c, 0xe0013b3, 0x0, +0x14400012, 0x8f99001c, 0x8f86001c, 0x24020003, +0xa00148d, 0xaf8200ec, 0xe00143f, 0x0, +0xa00148d, 0x8f86001c, 0xe001294, 0x0, +0x24020002, 0x24040014, 0x2821, 0x3021, +0x3821, 0xa0014c7, 0xaf8200ec, 0x403821, +0x24040010, 0x97380002, 0x2821, 0xe001285, +0x3306ffff, 0xa00148d, 0x8f86001c, 0x8f8400c8, +0x3c077fff, 0x34e6ffff, 0x8c850074, 0x24020001, +0xa61824, 0xac830074, 0x3e00008, 0xa0820005, +0x10a00036, 0x2ca20080, 0x274a0400, 0x3c0b0005, +0x24090080, 0x10400007, 0x24080080, 0x30a6000f, +0xc54021, 0x2d030081, 0x14600002, 0xa04821, +0x24080080, 0xaf4b0030, 0x0, 0x0, +0x0, 0x11000009, 0x3821, 0x1403021, +0x8c8d0000, 0x24e70004, 0xe8602b, 0xaccd0000, +0x24840004, 0x1580fffa, 0x24c60004, 0x0, +0x0, 0x0, 0x3c0e0006, 0x10e3825, +0xaf470030, 0x0, 0x0, 0x0, +0x8f4f0000, 0x31e80010, 0x1100fffd, 0x0, +0x8f42003c, 0x8f43003c, 0x49c821, 0x323c02b, +0x13000004, 0x0, 0x8f4c0038, 0x25860001, +0xaf460038, 0x8f47003c, 0xa92823, 0xe96821, +0xaf4d003c, 0x14a0ffce, 0x2ca20080, 0x3e00008, +0x0, 0x27bdffd0, 0x3c020002, 0xafb10014, +0x3c11000c, 0xaf450038, 0xafb3001c, 0xaf46003c, +0x809821, 0xaf420030, 0x24050088, 0xaf440028, +0x3512021, 0xafbf0028, 0xafb50024, 0xafb40020, +0xafb20018, 0xe0014ff, 0xafb00010, 0x3c1f0800, +0x8fff004c, 0x3c180800, 0x8f180064, 0x2410ff80, +0x3f3a821, 0x32b9007f, 0x2b07824, 0x18a0c0, +0x33a7021, 0x189140, 0x1d12021, 0xaf4f0028, +0xe0014ff, 0x2542821, 0x3c0d0800, 0x8dad0050, +0x24050120, 0x1b35821, 0x316c007f, 0x1705024, +0x19a4821, 0x1312021, 0xe0014ff, 0xaf4a0028, +0x3c080800, 0x8d080054, 0x3c050800, 0x8ca50064, +0x1133821, 0x30e6007f, 0xf01824, 0xda2021, +0x912021, 0xaf430028, 0xe0014ff, 0x52940, +0x3c020800, 0x8c420058, 0x3c100800, 0x8e100060, +0x1200001c, 0x538821, 0x2415ff80, 0xa001582, +0x3c14000c, 0x3226007f, 0x2351824, 0xda2021, +0x2402821, 0xaf430028, 0x942021, 0xe0014ff, +0x2610ffc0, 0x1200000f, 0x2328821, 0x2e050041, +0x10a0fff4, 0x24121000, 0x3226007f, 0x109180, +0x2351824, 0xda2021, 0x2402821, 0xaf430028, +0x942021, 0xe0014ff, 0x8021, 0x1600fff3, +0x2328821, 0x3c0b0800, 0x8d6b005c, 0x240aff80, +0x24050002, 0x1734021, 0x10a4824, 0xaf490028, +0x3c040800, 0x94840062, 0x3110007f, 0x21a8821, +0x3c07000c, 0xe000cb9, 0x2279821, 0x402821, +0x2602021, 0x8fbf0028, 0x8fb50024, 0x8fb40020, +0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0xa0014ff, 0x27bd0030, 0x8f83001c, 0x8c620004, +0x10400003, 0x0, 0x3e00008, 0x0, +0x8c640010, 0x8c650008, 0xa001538, 0x8c66000c, +0x0 }; +u32 bce_CP_b06FwData[(0x84/4) + 1] = { +0x0, +0x1b, 0xf, 0xa, 0x8, +0x6, 0x5, 0x5, 0x4, +0x4, 0x3, 0x3, 0x3, +0x3, 0x3, 0x2, 0x2, +0x2, 0x2, 0x2, 0x2, +0x2, 0x2, 0x2, 0x2, +0x2, 0x2, 0x2, 0x2, +0x2, 0x1, 0x1, 0x1, +0x0 }; +u32 bce_CP_b06FwRodata[(0x134/4) + 1] = { +0x8000f30, 0x8000d88, 0x8000fc4, +0x800106c, 0x8000f58, 0x8000f98, 0x80011a4, +0x8000da4, 0x80011c8, 0x8000df4, 0x8001498, +0x8001440, 0x8000da4, 0x8000da4, 0x8000da4, +0x8001254, 0x8001254, 0x8000da4, 0x8000da4, +0x80016e0, 0x8000da4, 0x8000da4, 0x8000da4, +0x8000da4, 0x80013d4, 0x8000da4, 0x8000da4, +0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, +0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, +0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, +0x8000fb8, 0x8000da4, 0x8000da4, 0x8001690, +0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, +0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, +0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, +0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, +0x8000da4, 0x80015bc, 0x8000da4, 0x8000da4, +0x8001348, 0x80012b8, 0x8002e50, 0x8002e58, +0x8002e20, 0x8002e2c, 0x8002e38, 0x8002e44, +0x800532c, 0x80052ec, 0x80052b8, 0x800528c, +0x8005268, 0x8005224, 0x0 }; +u32 bce_CP_b06FwBss[(0x5d8/4) + 1] = { 0x0 }; +u32 bce_CP_b06FwSbss[(0xf1/4) + 1] = { 0x0 }; +u32 bce_CP_b06FwSdata[(0x0/4) + 1] = { 0x0 }; + + +u32 bce_rv2p_proc1[] = { + 0x00000010, 0xb1800002, + 0x0000001f, 0x01030100, + 0x00000008, 0xac000001, + 0x00000000, 0x05000000, + 0x0000000c, 0x2f800001, + 0x00000000, 0x2b000000, + 0x00000000, 0x2b800000, + 0x00000010, 0x203f0063, + 0x00000010, 0x213f0003, + 0x00000010, 0x20bf0032, + 0x00000018, 0x8000fffd, + 0x00000010, 0xb1b8b00d, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x03d80000, + 0x00000000, 0x2c380000, + 0x00000010, 0x91d40000, + 0x00000008, 0x06005555, + 0x00000018, 0x80000075, + 0x00000018, 0x8000010b, + 0x00000008, 0x02000002, + 0x0000000f, 0x42e0001c, + 0x00000010, 0x91840a11, + 0x00000010, 0x2c62000b, + 0x00000018, 0x8000001e, + 0x00000008, 0x02000002, + 0x0000000f, 0x42e0001c, + 0x00000010, 0x91840a18, + 0x00000008, 0x2c8000b1, + 0x00000008, 0x2d000009, + 0x00000010, 0x91d40000, + 0x00000008, 0x2d800107, + 0x00000018, 0x8000006f, + 0x00000018, 0x80000015, + 0x00000008, 0xb1000001, + 0x00000008, 0x2c8000b0, + 0x00000008, 0x2d000008, + 0x00000008, 0x2d800001, + 0x00000018, 0x80000069, + 0x0000000b, 0x2fdf0002, + 0x0000000c, 0x1f800002, + 0x00000000, 0x2c070000, + 0x00000010, 0x91de0000, + 0x00000000, 0x05000000, + 0x00000018, 0x8000ffdc, + 0x0000000b, 0x2fdf0002, + 0x0000000c, 0x1f800000, + 0x00000000, 0x2c070000, + 0x00000010, 0x91de0000, + 0x00000000, 0x05000000, + 0x00000018, 0x8000ffd6, + 0x0000000c, 0x1f800002, + 0x00000000, 0x05000000, + 0x00000018, 0x8000ffd3, + 0x0000000c, 0x29800002, + 0x0000000c, 0x1f800002, + 0x00000000, 0x2adf0000, + 0x00000008, 0x2a000005, + 0x00000008, 0x05005555, + 0x00000018, 0x8000ffcd, + 0x00000008, 0x0224003c, + 0x00000018, 0x00040000, + 0x00000018, 0x8000001c, + 0x00000018, 0x8000001e, + 0x00000018, 0x80000052, + 0x00000018, 0x8000009e, + 0x00000018, 0x8000009d, + 0x00000018, 0x80000000, + 0x00000018, 0x80000000, + 0x00000018, 0x80000000, + 0x00000018, 0x80000000, + 0x00000018, 0x80000000, + 0x00000018, 0x80000000, + 0x00000018, 0x80000000, + 0x00000018, 0x80000000, + 0x00000018, 0x800000df, + 0x00000018, 0x80000000, + 0x00000018, 0x80000000, + 0x00000018, 0x80000015, + 0x00000018, 0x8000001b, + 0x00000018, 0x80000000, + 0x00000018, 0x800000b4, + 0x00000018, 0x8000002e, + 0x00000018, 0x800000df, + 0x00000018, 0x8000010a, + 0x00000018, 0x800000d5, + 0x00000018, 0x8000012e, + 0x00000018, 0x8000003b, + 0x00000018, 0x80000000, + 0x00000018, 0x80000071, + 0x0000000c, 0x1f800001, + 0x00000000, 0x05000000, + 0x00000018, 0x8000ffac, + 0x00000010, 0x91d40000, + 0x0000000c, 0x29800001, + 0x0000000c, 0x1f800001, + 0x00000008, 0x2a000002, + 0x00000000, 0x05000000, + 0x00000018, 0x8000ffa6, + 0x00000010, 0x91d40000, + 0x0000000c, 0x29800001, + 0x0000000c, 0x1f800001, + 0x00000000, 0x29420000, + 0x00000008, 0x2a000002, + 0x00000000, 0x05000000, + 0x00000018, 0x8000ff9f, + 0x00000018, 0x8000ff9e, + 0x00000010, 0xb1bcb00a, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x03d80000, + 0x00000000, 0x2c3c0000, + 0x00000010, 0x91d40000, + 0x00000008, 0x06005555, + 0x00000018, 0x80000016, + 0x00000018, 0x800000ac, + 0x00000010, 0x2c6201ba, + 0x00000018, 0x80000005, + 0x00000008, 0x2c8000b1, + 0x00000008, 0x2d000009, + 0x00000010, 0x91d40000, + 0x00000008, 0x2d800107, + 0x0000000c, 0x29800000, + 0x0000000c, 0x1f800000, + 0x00000010, 0x91de0000, + 0x00000000, 0x2adf0000, + 0x00000008, 0x2a000006, + 0x00000008, 0x05005555, + 0x00000018, 0x8000ff89, + 0x00000010, 0x91d40000, + 0x0000000c, 0x29800001, + 0x0000000c, 0x1f800001, + 0x00000008, 0x2a00000b, + 0x00000000, 0x05000000, + 0x00000018, 0x8000ff83, + 0x00000018, 0x00020000, + 0x00000000, 0x06820000, + 0x00000010, 0xb18a0006, + 0x00000000, 0x860c1400, + 0x00000010, 0xb18c0004, + 0x00000000, 0x05000000, + 0x00000008, 0x2a000001, + 0x00000010, 0x91d40000, + 0x00000018, 0x000d0000, + 0x00000000, 0x05020000, + 0x00000010, 0x91de0000, + 0x00000018, 0x000a0000, + 0x00000010, 0xb1a0b013, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x2c200000, + 0x00000008, 0x2c800000, + 0x00000008, 0x2d000000, + 0x00000010, 0x91d40000, + 0x00000008, 0x06005555, + 0x00000018, 0x8000ffee, + 0x00000008, 0x2d80011c, + 0x00000010, 0x001f0000, + 0x00000010, 0x91de0000, + 0x0000000f, 0x47600008, + 0x0000000f, 0x060e0001, + 0x00000000, 0x0f580000, + 0x00000000, 0x0a640000, + 0x00000000, 0x0ae50000, + 0x00000009, 0x0b66ffff, + 0x00000000, 0x0d610000, + 0x00000018, 0x80000013, + 0x0000000f, 0x47600008, + 0x0000000b, 0x2fdf0002, + 0x00000008, 0x2c800000, + 0x00000008, 0x2d000000, + 0x00000010, 0x91d40000, + 0x00000008, 0x2d80011c, + 0x0000000f, 0x060e0001, + 0x00000010, 0x001f0000, + 0x00000000, 0x0f580000, + 0x00000010, 0x91de0000, + 0x00000000, 0x0a640000, + 0x00000000, 0x0ae50000, + 0x00000009, 0x0b66ffff, + 0x00000000, 0x0d610000, + 0x00000000, 0x02620000, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x31040000, + 0x00000000, 0x309a0000, + 0x00000000, 0x0c961800, + 0x00000009, 0x0c99ffff, + 0x00000004, 0xcc993400, + 0x00000010, 0xb1963202, + 0x00000008, 0x0f800000, + 0x0000000c, 0x29800001, + 0x00000010, 0x00220002, + 0x0000000c, 0x29520001, + 0x0000000c, 0x29520000, + 0x00000008, 0x0200000e, + 0x00000008, 0x0280001a, + 0x00000010, 0xb1c40a02, + 0x00000008, 0x02000003, + 0x00000008, 0x22000001, + 0x0000000c, 0x1f800001, + 0x00000000, 0x2adf0000, + 0x00000000, 0x2a000800, + 0x00000008, 0x05005555, + 0x00000018, 0x8000ff3f, + 0x0000000b, 0x2fdf0002, + 0x00000010, 0x91d40000, + 0x00000008, 0x2a000001, + 0x00000000, 0x2c200000, + 0x00000008, 0x2c800000, + 0x00000008, 0x2d000000, + 0x00000008, 0x2d80011c, + 0x00000010, 0x91d40000, + 0x00000010, 0x91de0000, + 0x00000008, 0x2c800006, + 0x00000008, 0x2d000006, + 0x00000000, 0x30800000, + 0x00000000, 0x31000000, + 0x00000008, 0x2d800006, + 0x0000000c, 0x29800001, + 0x0000000c, 0x1f800001, + 0x00000010, 0x91de0000, + 0x00000000, 0x2adf0000, + 0x00000008, 0x2a000010, + 0x00000000, 0x05000000, + 0x00000018, 0x8000ff2a, + 0x00000010, 0x91a0b009, + 0x00000008, 0x2c8000b1, + 0x00000008, 0x2d000009, + 0x00000010, 0x91d40000, + 0x00000008, 0x2d800107, + 0x00000018, 0x8000ffab, + 0x00000018, 0x80000010, + 0x00000008, 0xac000001, + 0x00000018, 0x8000000b, + 0x00000000, 0x0380b000, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x2c004000, + 0x00000010, 0x91d40000, + 0x00000008, 0x06005555, + 0x00000018, 0x8000ff9a, + 0x00000018, 0x80000030, + 0x00000018, 0x80000006, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x2c000e00, + 0x00000008, 0x2a000007, + 0x00000008, 0x05005555, + 0x00000018, 0x8000ff14, + 0x00000000, 0x06820000, + 0x0000000c, 0x29800001, + 0x0000000c, 0x1f800001, + 0x00000010, 0x0ce70007, + 0x00000009, 0x0562ffff, + 0x00000010, 0xba6c1405, + 0x00000000, 0x2adf0000, + 0x00000000, 0x21000000, + 0x00000008, 0x2a000005, + 0x00000010, 0x91d40000, + 0x00000008, 0x2c8000b0, + 0x00000008, 0x2d000008, + 0x0000000c, 0x31620018, + 0x00000008, 0x2d800001, + 0x00000018, 0x8000ff8c, + 0x00000018, 0x000d0000, + 0x00000010, 0xb1a0b00e, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x03d80000, + 0x00000000, 0x2c200000, + 0x00000010, 0x91d40000, + 0x00000018, 0x80000014, + 0x00000010, 0x2c620002, + 0x00000018, 0x8000000b, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x2c070000, + 0x0000000c, 0x1f800001, + 0x00000010, 0x91de0000, + 0x00000000, 0x05000000, + 0x00000018, 0x8000fef6, + 0x00000008, 0x2c8000b1, + 0x00000008, 0x2d000009, + 0x00000010, 0x91d40000, + 0x00000008, 0x2d800107, + 0x0000000c, 0x29800001, + 0x0000000c, 0x1f800001, + 0x00000010, 0x91de0000, + 0x00000000, 0x2adf0000, + 0x00000008, 0x2a00000a, + 0x00000000, 0x05000000, + 0x00000018, 0x8000feeb, + 0x00000000, 0x05020000, + 0x00000008, 0x2c8000b0, + 0x00000008, 0x2d000008, + 0x00000008, 0x2d800150, + 0x00000000, 0x00000000, + 0x00000010, 0x205f0000, + 0x00000008, 0x2c800000, + 0x00000008, 0x2d000000, + 0x00000008, 0x2d800108, + 0x00000000, 0x00000000, + 0x00000010, 0x91de0000, + 0x00000018, 0x000a0000, + 0x00000010, 0x91d40000, + 0x00000008, 0x0600aaaa, + 0x00000018, 0x8000ff5b, + 0x0000000c, 0x29800001, + 0x0000000c, 0x1f800001, + 0x00000008, 0x2a000009, + 0x00000008, 0x0500aaaa, + 0x00000018, 0x8000fed7, + 0x00000010, 0x91d40000, + 0x00000008, 0x06005555, + 0x00000018, 0x8000ff53, + 0x00000010, 0x91a03c02, + 0x00000010, 0xb1e66207, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x2c310000, + 0x00000009, 0x2cb1007f, + 0x00000008, 0x2cd90000, + 0x00000008, 0x2d000000, + 0x00000008, 0x2d80010d, + 0x00000010, 0xb1a80006, + 0x00000010, 0x205f0000, + 0x00000000, 0x2c200000, + 0x00000000, 0x2ca70000, + 0x00000008, 0x2d000010, + 0x00000008, 0x2d800108, + 0x00000018, 0x8000ff4c, + 0x00000010, 0xb1a60010, + 0x00000010, 0x001f0000, + 0x0000000f, 0x0f300007, + 0x00000000, 0x0a600000, + 0x00000000, 0x0ae10000, + 0x0000000f, 0x4b620008, + 0x00000009, 0x0b1600ff, + 0x00000000, 0x0d620000, + 0x00000009, 0x0d1a00ff, + 0x00000010, 0x07300003, + 0x0000000c, 0x0d1a0008, + 0x0000000c, 0x0b160008, + 0x0000000f, 0x4ce30018, + 0x00000000, 0x0c992c00, + 0x00000004, 0xcc993400, + 0x00000008, 0x0f800000, + 0x0000000c, 0x29800001, + 0x00000000, 0x33310000, + 0x00000008, 0x22000016, + 0x00000000, 0x2adf0000, + 0x00000008, 0x2a00000c, + 0x00000010, 0x009f0000, + 0x00000000, 0x0f200000, + 0x0000000c, 0x1f800001, + 0x00000008, 0x05005555, + 0x00000018, 0x8000feab, + 0x00000010, 0x91d40000, + 0x00000008, 0x0600aaaa, + 0x00000018, 0x8000ff27, + 0x0000000f, 0x47220008, + 0x00000009, 0x070e000f, + 0x00000008, 0x070e0008, + 0x00000008, 0x02800001, + 0x00000007, 0x02851c00, + 0x00000008, 0x82850001, + 0x00000000, 0x02854c00, + 0x00000007, 0x42851c00, + 0x00000003, 0xc3aa5200, + 0x00000000, 0x03b10e00, + 0x00000007, 0x4b071c00, + 0x0000000f, 0x0f300007, + 0x0000000f, 0x0a960003, + 0x00000000, 0x0a955c00, + 0x00000000, 0x4a005a00, + 0x00000000, 0x0c960a00, + 0x00000009, 0x0c99ffff, + 0x00000008, 0x0d00ffff, + 0x00000010, 0xb1963202, + 0x00000008, 0x0f800005, + 0x00000010, 0xb1a80008, + 0x00000010, 0x205f0000, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x2c200000, + 0x00000000, 0x2ca70000, + 0x00000008, 0x2d000010, + 0x00000008, 0x2d800108, + 0x00000018, 0x8000ff13, + 0x0000000c, 0x29800001, + 0x00000010, 0x001f0000, + 0x0000000c, 0x1f800001, + 0x00000000, 0x2adf0000, + 0x00000008, 0x2a00000d, + 0x00000008, 0x0500aaaa, + 0x00000018, 0x8000fe85, + 0x00000010, 0x91d40000, + 0x00000008, 0x06005555, + 0x00000018, 0x8000ff01, + 0x0000000c, 0x29800001, + 0x0000000c, 0x1f800001, + 0x00000008, 0x2a000007, + 0x00000008, 0x05005555, + 0x00000018, 0x8000fe7d, + 0x00000008, 0x03050004, + 0x00000006, 0x83040c00, + 0x00000008, 0x02850200, + 0x00000000, 0x86050c00, + 0x00000001, 0x860c0e00, + 0x00000008, 0x02040004, + 0x00000000, 0x02041800, + 0x00000000, 0x83871800, + 0x00000018, 0x00020000, +}; + + +u32 bce_rv2p_proc2[] = { + 0x00000010, 0xb1800004, + 0x0000001f, 0x01030100, + 0x00000008, 0x050000ff, + 0x00000018, 0x00020000, + 0x00000000, 0x2a000000, + 0x00000010, 0xb1d40000, + 0x0000000c, 0x29800001, + 0x00000008, 0x02540008, + 0x00000018, 0x00040000, + 0x00000018, 0x80000010, + 0x00000018, 0x80000011, + 0x00000018, 0x8000003a, + 0x00000018, 0x80000104, + 0x00000018, 0x80000103, + 0x00000018, 0x80000102, + 0x00000018, 0x80000102, + 0x00000018, 0x80000000, + 0x00000018, 0x80000114, + 0x00000018, 0x800000fe, + 0x00000018, 0x8000000c, + 0x00000018, 0x80000118, + 0x00000018, 0x8000016a, + 0x00000018, 0x80000067, + 0x00000018, 0x800000da, + 0x00000018, 0x800000e7, + 0x00000000, 0x2a000000, + 0x00000018, 0x8000ffeb, + 0x00000000, 0x2a000000, + 0x0000000c, 0x29800000, + 0x00000010, 0x20530000, + 0x00000018, 0x8000ffe7, + 0x00000000, 0x2a000000, + 0x00000018, 0x8000ffe5, + 0x00000018, 0x00020000, + 0x00000000, 0x05020000, + 0x00000010, 0x91963421, + 0x00000010, 0x205f0000, + 0x00000000, 0x2c1e0000, + 0x00000008, 0x2c800006, + 0x00000008, 0x2d000006, + 0x00000008, 0x2d800102, + 0x00000000, 0x00000000, + 0x00000010, 0x91de0000, + 0x00000000, 0x0d610000, + 0x00000018, 0x000a0000, + 0x00000000, 0x05020000, + 0x00000010, 0x91963416, + 0x00000010, 0x205f0000, + 0x00000000, 0x09d80000, + 0x00000000, 0x2c1e0000, + 0x00000008, 0x2c8000b2, + 0x00000008, 0x2d00000a, + 0x00000008, 0x2d800102, + 0x00000000, 0x00000000, + 0x00000010, 0x91de0000, + 0x00000000, 0x0d620000, + 0x00000000, 0x2c130000, + 0x00000018, 0x000a0000, + 0x00000000, 0x05020000, + 0x00000010, 0x91963409, + 0x00000010, 0x205f0000, + 0x00000000, 0x2c1e0000, + 0x00000008, 0x2c800006, + 0x00000008, 0x2d00006a, + 0x00000008, 0x2d800102, + 0x00000000, 0x00000000, + 0x00000010, 0x91de0000, + 0x00000000, 0x0d7a0000, + 0x00000018, 0x000a0000, + 0x00000010, 0x91de0000, + 0x00000010, 0x001f0000, + 0x00000000, 0x2f80aa00, + 0x00000000, 0x2a000000, + 0x00000000, 0x0d610000, + 0x00000000, 0x03620000, + 0x00000000, 0x2c400000, + 0x00000000, 0x02638c00, + 0x00000000, 0x26460000, + 0x00000008, 0x02040012, + 0x00000010, 0xb9060827, + 0x00000000, 0x0f580000, + 0x00000000, 0x0a640000, + 0x00000000, 0x0ae50000, + 0x00000009, 0x0b66ffff, + 0x00000000, 0x0c000000, + 0x00000000, 0x0b800000, + 0x00000008, 0x0cc60012, + 0x00000018, 0x8000ffcb, + 0x00000008, 0x0f800003, + 0x00000000, 0x00000000, + 0x00000010, 0x009f0000, + 0x00000008, 0x27110012, + 0x00000000, 0x66900000, + 0x00000008, 0xa31b0012, + 0x00000010, 0xb1980003, + 0x00000010, 0x001f0000, + 0x00000008, 0x0f800004, + 0x00000008, 0x22000003, + 0x00000008, 0x2c80000c, + 0x00000008, 0x2d00000c, + 0x00000010, 0x009f0000, + 0x00000000, 0x25960000, + 0x0000000c, 0x29800000, + 0x00000000, 0x06660000, + 0x00000000, 0x86611800, + 0x00000009, 0x0260000f, + 0x0000000f, 0x02040002, + 0x00000010, 0xb60c0803, + 0x0000000c, 0x1fbf0000, + 0x0000000c, 0x33660010, + 0x00000000, 0x32140000, + 0x00000000, 0x32950000, + 0x00000005, 0x73662c00, + 0x00000000, 0x31e32e00, + 0x00000008, 0x2d800010, + 0x00000010, 0x20530000, + 0x00000010, 0x91de0000, + 0x00000018, 0x8000ff90, + 0x00000000, 0x23000000, + 0x00000009, 0x25e6ffff, + 0x00000008, 0x2200000b, + 0x0000000c, 0x69520000, + 0x0000000c, 0x29800000, + 0x00000010, 0x20530000, + 0x00000018, 0x8000ff89, + 0x00000010, 0x91de0000, + 0x00000010, 0x001f0000, + 0x00000000, 0x2f80aa00, + 0x00000000, 0x2a000000, + 0x00000000, 0x2c400000, + 0x00000008, 0x2c800040, + 0x00000008, 0x2d000020, + 0x00000008, 0x2d80011c, + 0x00000000, 0x00000000, + 0x00000010, 0x91de0000, + 0x0000000f, 0x42ea0010, + 0x00000010, 0x004f0004, + 0x00000010, 0xb7469200, + 0x00000008, 0x02490012, + 0x00000010, 0xb5840a00, + 0x00000000, 0x0d610000, + 0x00000010, 0xba66345a, + 0x00000000, 0x03620000, + 0x00000010, 0xb8630c58, + 0x00000008, 0x83050012, + 0x00000010, 0x004f0002, + 0x00000000, 0x03490000, + 0x00000001, 0x83068c00, + 0x00000000, 0x83c60c00, + 0x00000010, 0xb1870010, + 0x00000000, 0x0b6e0000, + 0x00000018, 0x8000ff6b, + 0x00000001, 0x06691400, + 0x00000010, 0x918c0002, + 0x00000008, 0xb4e90001, + 0x00000010, 0xb1e92c4c, + 0x00000000, 0x86692c00, + 0x00000000, 0x02000000, + 0x00000009, 0x02eaffff, + 0x00000010, 0x000c0002, + 0x00000000, 0x02040a00, + 0x0000000f, 0x460c0001, + 0x0000000f, 0x02850001, + 0x00000010, 0x918c01fc, + 0x00000010, 0xb7040e43, + 0x00000000, 0x2c400000, + 0x00000000, 0x0f400000, + 0x00000000, 0x0d610000, + 0x00000000, 0x0a640000, + 0x00000000, 0x0ae50000, + 0x00000009, 0x0b66ffff, + 0x00000000, 0x0c000000, + 0x00000000, 0x0b800000, + 0x00000008, 0x0c860012, + 0x00000008, 0x0f800003, + 0x0000000c, 0x29520000, + 0x00000010, 0x009f0000, + 0x00000008, 0x27110012, + 0x00000000, 0x66900000, + 0x00000000, 0x26460000, + 0x00000000, 0x23060000, + 0x00000010, 0xb1980005, + 0x00000010, 0x001f0000, + 0x00000008, 0x0f800004, + 0x00000000, 0x00000000, + 0x00000010, 0x001f0000, + 0x00000000, 0x32140000, + 0x00000000, 0x32950000, + 0x00000000, 0x31e32e00, + 0x00000005, 0x73662c00, + 0x00000000, 0x25960000, + 0x00000010, 0xb1870016, + 0x0000000c, 0x29800000, + 0x0000000f, 0x0f6b0007, + 0x00000000, 0x0d690000, + 0x00000000, 0x0a6c0000, + 0x00000000, 0x0aed0000, + 0x00000000, 0x0b6e0000, + 0x00000000, 0x0b800000, + 0x00000000, 0x0c870000, + 0x00000008, 0x0f800003, + 0x00000010, 0x20530000, + 0x0000000c, 0x69520001, + 0x00000010, 0x001f0000, + 0x00000000, 0x22c58c00, + 0x00000000, 0x231b0000, + 0x00000000, 0x27110000, + 0x00000000, 0x26900000, + 0x00000010, 0xb8170e03, + 0x0000000c, 0x29800000, + 0x00000018, 0x8000fff6, + 0x00000010, 0xb1980002, + 0x00000008, 0x0f800004, + 0x00000008, 0x2200001a, + 0x00000008, 0x2c80000c, + 0x00000008, 0x2d00000c, + 0x00000008, 0x2d800010, + 0x00000010, 0x001f0000, + 0x00000000, 0x0d6e0000, + 0x00000003, 0xe7cf3400, + 0x0000000c, 0x29800000, + 0x00000010, 0x91de0000, + 0x00000010, 0xb1870007, + 0x00000000, 0x36140000, + 0x00000000, 0x36950000, + 0x00000000, 0x37160000, + 0x00000008, 0x2c800050, + 0x00000008, 0x2d000030, + 0x00000008, 0x2d80000c, + 0x00000010, 0x20530000, + 0x00000018, 0x8000ff1f, + 0x00000000, 0x26460000, + 0x00000000, 0x23000000, + 0x00000009, 0x25e6ffff, + 0x00000000, 0x0b6e0000, + 0x00000003, 0xe7cf2c00, + 0x00000008, 0x2200001b, + 0x0000000c, 0x69520000, + 0x0000000c, 0x29800000, + 0x00000010, 0x20530000, + 0x00000018, 0x8000ff15, + 0x00000000, 0x2fd50000, + 0x00000000, 0x2a000000, + 0x00000010, 0x003f000b, + 0x00000000, 0x06660000, + 0x00000000, 0x86611800, + 0x00000009, 0x026000f0, + 0x00000010, 0xb70c0807, + 0x0000000c, 0x73660010, + 0x00000008, 0x2c800018, + 0x00000008, 0x2d000018, + 0x00000008, 0x2d800002, + 0x0000000c, 0x5fbf0000, + 0x00000010, 0x91de0000, + 0x00000018, 0x8000ff07, + 0x00000000, 0x2fd50000, + 0x00000000, 0x2a000000, + 0x00000000, 0x2c400000, + 0x0000000c, 0x29800000, + 0x00000010, 0x91de0000, + 0x00000008, 0x2c80001a, + 0x00000008, 0x2d00001a, + 0x00000000, 0x33000000, + 0x00000008, 0x2d800002, + 0x00000000, 0x31800000, + 0x00000010, 0x91de0000, + 0x00000008, 0x2c80000c, + 0x00000008, 0x2d00000c, + 0x00000008, 0x2d800004, + 0x00000010, 0x20530000, + 0x00000010, 0x91de0000, + 0x00000018, 0x8000fef6, + 0x00000018, 0x8000fef5, + 0x00000000, 0x2a000000, + 0x00000010, 0x001f0000, + 0x00000000, 0x0f008000, + 0x00000008, 0x0f800007, + 0x00000018, 0x80000014, + 0x00000000, 0x05020000, + 0x00000008, 0x22000009, + 0x00000000, 0x286d0000, + 0x00000000, 0x29000000, + 0x0000000f, 0x65680010, + 0x00000003, 0xf66c9400, + 0x00000010, 0xb972a004, + 0x0000000c, 0x73e70019, + 0x0000000c, 0x21420004, + 0x00000000, 0x3bf60000, + 0x0000000c, 0x29800000, + 0x00000010, 0x20530000, + 0x00000008, 0x22000008, + 0x0000000c, 0x61420004, + 0x00000018, 0x000a0000, + 0x00000000, 0x2a000000, + 0x00000010, 0x001f0000, + 0x0000000f, 0x0f470007, + 0x00000008, 0x0f800008, + 0x0000000c, 0x29800000, + 0x00000010, 0x20530000, + 0x00000018, 0x8000feda, + 0x00000010, 0x91de0000, + 0x00000000, 0x2fd50000, + 0x00000010, 0x001f0000, + 0x00000000, 0x33510000, + 0x00000000, 0x2a000000, + 0x00000010, 0xb1c60023, + 0x0000000f, 0x0f500007, + 0x00000000, 0x0a600000, + 0x00000000, 0x0ae10000, + 0x0000000f, 0x4b620008, + 0x00000009, 0x0b1600ff, + 0x0000000f, 0x4c620010, + 0x00000000, 0x0d620000, + 0x00000009, 0x0d1a00ff, + 0x00000010, 0x07500003, + 0x0000000c, 0x0d1a0008, + 0x0000000c, 0x0b160008, + 0x00000000, 0x0cc60000, + 0x00000000, 0x0b800000, + 0x00000000, 0x06980000, + 0x00000008, 0x0f800003, + 0x00000010, 0x06c20004, + 0x0000000c, 0x29000002, + 0x00000010, 0x26420002, + 0x0000000c, 0x29520003, + 0x00000008, 0x22000001, + 0x00000010, 0x009f0000, + 0x00000000, 0x231b0000, + 0x00000000, 0x27111a00, + 0x00000000, 0x66900000, + 0x0000000c, 0x29520000, + 0x00000010, 0xb1973209, + 0x0000000c, 0x29800000, + 0x00000000, 0x06980000, + 0x00000010, 0x20530000, + 0x0000000c, 0x29520003, + 0x00000000, 0x22c58c00, + 0x00000010, 0x001f0000, + 0x00000008, 0x0f800003, + 0x00000018, 0x8000fff3, + 0x00000010, 0xb1c80013, + 0x00000010, 0xb1c60003, + 0x0000000c, 0x29800000, + 0x00000010, 0x20530000, + 0x0000000c, 0x29520000, + 0x0000000c, 0x29520003, + 0x00000010, 0x06c20002, + 0x0000000c, 0x29520002, + 0x00000000, 0x22c58c00, + 0x00000000, 0x27650000, + 0x00000000, 0x26e40000, + 0x00000008, 0x22000016, + 0x00000010, 0xb1c60003, + 0x00000000, 0x23480000, + 0x00000010, 0xb1800005, + 0x00000000, 0x23480000, + 0x0000000c, 0x29800000, + 0x0000000f, 0x0f500007, + 0x00000018, 0x80000012, + 0x00000008, 0x22000016, + 0x0000000c, 0x29800000, + 0x00000000, 0x30140000, + 0x00000000, 0x30950000, + 0x00000010, 0x07500003, + 0x00000009, 0x0b1600ff, + 0x00000009, 0x0d1a00ff, + 0x0000000f, 0x31160008, + 0x00000000, 0x31623400, + 0x00000003, 0xf1623000, + 0x00000010, 0x205f0000, + 0x00000000, 0x2c510000, + 0x00000009, 0x2cd1007f, + 0x00000008, 0x2cd90000, + 0x00000008, 0x2d000000, + 0x00000008, 0x2d80000c, + 0x00000000, 0x00000000, + 0x00000010, 0x91de0000, + 0x00000010, 0x05c20003, + 0x00000000, 0x33000000, + 0x00000008, 0x0f800007, + 0x00000010, 0x20530000, + 0x00000010, 0x009f0000, + 0x00000018, 0x8000fe87, + 0x00000000, 0x2fd50000, + 0x00000000, 0x2a000000, + 0x0000000f, 0x0f500007, + 0x00000010, 0xb1c6002d, + 0x0000000f, 0x47420008, + 0x00000009, 0x070e000f, + 0x00000008, 0x070e0008, + 0x00000010, 0x001f0000, + 0x00000008, 0x09000001, + 0x00000007, 0x09121c00, + 0x00000003, 0xcbca9200, + 0x00000000, 0x0b97a200, + 0x00000007, 0x42171c00, + 0x00000000, 0x0b040000, + 0x0000000f, 0x0a840003, + 0x00000000, 0x0a959c00, + 0x00000000, 0x4a009a00, + 0x00000008, 0x82120001, + 0x00000001, 0x0c170800, + 0x00000000, 0x0c978c00, + 0x00000000, 0x02180000, + 0x00000008, 0x0d00ffff, + 0x00000008, 0x0f800006, + 0x0000000c, 0x29000000, + 0x00000010, 0x06c20004, + 0x0000000c, 0x29520002, + 0x00000010, 0x26420002, + 0x0000000c, 0x29520003, + 0x00000008, 0x22000001, + 0x00000010, 0x009f0000, + 0x00000010, 0xb197320c, + 0x00000000, 0x231b0000, + 0x00000000, 0x27110800, + 0x00000000, 0x66900000, + 0x0000000c, 0x29800000, + 0x00000000, 0x02180000, + 0x00000010, 0x20530000, + 0x0000000c, 0x29520003, + 0x00000000, 0x22c53600, + 0x00000010, 0x001f0000, + 0x00000008, 0x0f800006, + 0x00000018, 0x8000fff4, + 0x00000000, 0x231b0000, + 0x00000000, 0x27110800, + 0x00000000, 0x66900000, + 0x00000010, 0xb1c8000b, + 0x0000000c, 0x29800000, + 0x00000010, 0x20530000, + 0x0000000c, 0x29520000, + 0x0000000c, 0x29520003, + 0x00000010, 0x06c20002, + 0x0000000c, 0x29520002, + 0x00000000, 0x22c58c00, + 0x00000000, 0x27650000, + 0x00000000, 0x26e40000, + 0x00000000, 0x23480000, + 0x00000008, 0x22000017, + 0x0000000c, 0x29800000, + 0x00000010, 0x001f0000, + 0x00000010, 0x20530000, + 0x00000018, 0x8000fe4a, +}; + + +int bce_TXP_b09FwReleaseMajor = 0x1; +int bce_TXP_b09FwReleaseMinor = 0x0; +int bce_TXP_b09FwReleaseFix = 0x0; +u32 bce_TXP_b09FwStartAddr = 0x08000098; +u32 bce_TXP_b09FwTextAddr = 0x08000000; +int bce_TXP_b09FwTextLen = 0x3afc; +u32 bce_TXP_b09FwDataAddr = 0x00000000; +int bce_TXP_b09FwDataLen = 0x0; +u32 bce_TXP_b09FwRodataAddr = 0x08003afc; +int bce_TXP_b09FwRodataLen = 0x30; +u32 bce_TXP_b09FwBssAddr = 0x08003bcc; +int bce_TXP_b09FwBssLen = 0x24c; +u32 bce_TXP_b09FwSbssAddr = 0x08003b60; +int bce_TXP_b09FwSbssLen = 0x6c; +u32 bce_TXP_b09FwSDataAddr = 0x00000000; +int bce_TXP_b09FwSDataLen = 0x0; +u32 bce_TXP_b09FwText[(0x3afc/4) + 1] = { +0xa000026, +0x0, 0x0, 0xd, 0x74787034, +0x2e362e31, 0x36000000, 0x4061000, 0xa, +0x136, 0xea60, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x1d, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x10000003, 0x0, +0xd, 0xd, 0x3c020800, 0x24423b60, +0x3c030800, 0x24633e18, 0xac400000, 0x43202b, +0x1480fffd, 0x24420004, 0x3c1d0800, 0x37bd7ffc, +0x3a0f021, 0x3c100800, 0x26100098, 0x3c1c0800, +0x279c3b60, 0xe0004ae, 0x0, 0xd, +0x3c058000, 0x8f830030, 0x34a80070, 0x8d070000, +0x833025, 0x3c029000, 0xc22025, 0xaca40020, +0xaf870024, 0x3c048000, 0x8c890020, 0x520fffe, +0x0, 0x34840070, 0x8c850000, 0x3c180800, +0x8f18007c, 0x3c0d0800, 0x8dad0078, 0xa7c823, +0x3195021, 0x7021, 0x159602b, 0x1ae5821, +0x16c3821, 0x3c010800, 0xac2a007c, 0x3c010800, +0xac270078, 0x3e00008, 0x0, 0xa00003d, +0x24040001, 0x8f850030, 0x3c048000, 0x34830001, +0xa31025, 0x3e00008, 0xac820020, 0x3e00008, +0x1021, 0x3084ffff, 0x30a5ffff, 0x10800007, +0x1821, 0x30820001, 0x10400002, 0x42042, +0x651821, 0x1480fffb, 0x52840, 0x3e00008, +0x601021, 0x10c00007, 0x0, 0x8ca20000, +0x24c6ffff, 0x24a50004, 0xac820000, 0x14c0fffb, +0x24840004, 0x3e00008, 0x0, 0x10a00008, +0x24a3ffff, 0xac860000, 0x0, 0x0, +0x2402ffff, 0x2463ffff, 0x1462fffa, 0x24840004, +0x3e00008, 0x0, 0x90aa0031, 0x8fab0010, +0x8cac0040, 0x3c0300ff, 0x8d680004, 0xad6c0020, +0x8cad0044, 0xe06021, 0x3462ffff, 0xad6d0024, +0x8ca70048, 0x3c09ff00, 0x109c024, 0xad670028, +0x8cae004c, 0x182c824, 0x3197825, 0xad6f0004, +0xad6e002c, 0x8cad0038, 0x314a00ff, 0xad6d001c, +0x94a90032, 0x3128ffff, 0xad680010, 0x90a70030, +0xa5600002, 0xa1600004, 0xa1670000, 0x90a30032, +0x306200ff, 0x21982, 0x10600005, 0x24050001, +0x1065000e, 0x0, 0x3e00008, 0xa16a0001, +0x8cd80028, 0x354a0080, 0xad780018, 0x8ccf0014, +0xad6f0014, 0x8cce0030, 0xad6e0008, 0x8cc4002c, +0xa16a0001, 0x3e00008, 0xad64000c, 0x8ccd001c, +0xad6d0018, 0x8cc90014, 0xad690014, 0x8cc80024, +0xad680008, 0x8cc70020, 0xad67000c, 0x8cc20014, +0x8c830070, 0x43c82b, 0x13200007, 0x0, +0x8cc20014, 0x144cffe4, 0x0, 0x354a0080, +0x3e00008, 0xa16a0001, 0x8c820070, 0xa0000c6, +0x0, 0x90890030, 0x27bdfff8, 0x8fa8001c, +0xa3a90000, 0x8fa30000, 0x3c0dff80, 0x35a2ffff, +0x8cac002c, 0x625824, 0xafab0000, 0xa1000004, +0xc05821, 0xa7a00002, 0x8d060004, 0xa04821, +0x167c821, 0x8fa50000, 0x805021, 0x3c18ff7f, +0x32c2026, 0x3c0e00ff, 0x2c8c0001, 0x370fffff, +0x35cdffff, 0x3c02ff00, 0xafc824, 0xedc024, +0xc27824, 0xc1dc0, 0x3236825, 0x1f87025, +0xad0d0000, 0xad0e0004, 0x8d240024, 0xafad0000, +0xad040008, 0x8d2c0020, 0x2404ffff, 0xad0c000c, +0x95470032, 0x30e6ffff, 0xad060010, 0x91450048, +0x30a200ff, 0x219c2, 0x50600001, 0x8d240034, +0xad040014, 0x8d470038, 0x8faa0018, 0x27bd0008, +0xad0b0028, 0xad0a0024, 0xad07001c, 0xad00002c, +0xad000018, 0x3e00008, 0xad000020, 0x27bdffe0, +0xafb20018, 0xafb10014, 0xafb00010, 0xafbf001c, +0x90980030, 0xc08821, 0x3c0d00ff, 0x330f007f, +0xa0cf0000, 0x908e0031, 0x35acffff, 0x3c0aff00, +0xa0ce0001, 0x94a6001e, 0xa2200004, 0x8cab0014, +0x8e290004, 0xa08021, 0x16c2824, 0x12a4024, +0x809021, 0x1052025, 0xa6260002, 0xae240004, +0x26050020, 0x26240008, 0xe000072, 0x24060002, +0x92470030, 0x26050028, 0x26240014, 0x71e00, +0x31603, 0x24060004, 0x4400003, 0x2403ffff, +0x96590032, 0x3323ffff, 0xe000072, 0xae230010, +0x26240024, 0x8fbf001c, 0x8fb20018, 0x8fb10014, +0x8fb00010, 0x24050003, 0x3021, 0xa00007c, +0x27bd0020, 0x27bdffd8, 0xafb1001c, 0xafb00018, +0xafbf0020, 0x90a90030, 0x24020001, 0xe05021, +0x3123003f, 0xa04021, 0x8fb00040, 0x808821, +0xc04821, 0x10620014, 0x8fa70038, 0x240b0005, +0xa02021, 0xc02821, 0x106b0013, 0x2003021, +0xe000108, 0x0, 0x9225007c, 0x30a40002, +0x10800003, 0x26030030, 0xae000030, 0x26030034, +0x8fbf0020, 0x8fb1001c, 0x8fb00018, 0x601021, +0x3e00008, 0x27bd0028, 0xe000087, 0xafb00010, +0xa00014f, 0x0, 0x8fa3003c, 0x1002021, +0x1202821, 0x1403021, 0xafa30010, 0xe0000ce, +0xafb00014, 0xa00014f, 0x0, 0x8f820050, +0x24430001, 0x304200ff, 0xaf830050, 0x3e00008, +0x0, 0x3c058000, 0x8ca30e10, 0x8f840044, +0xac830020, 0x8ca20e18, 0x3e00008, 0xac820024, +0x3c058000, 0x8ca30e14, 0x8f840044, 0xac830020, +0x8ca20e1c, 0x3e00008, 0xac820024, 0x93820038, +0x1040001b, 0x2483000f, 0x2404fff0, 0x643824, +0x10e00019, 0x978b002c, 0x9784004c, 0x9389002e, +0x3c0a601c, 0xa000190, 0x1644023, 0x1037021, +0x642823, 0x11260002, 0x31c2ffff, 0x30a2ffff, +0x47302b, 0x50c0000e, 0xe44821, 0x8d4d000c, +0x31a3ffff, 0x36400, 0xc2c03, 0x4a1fff3, +0x3021, 0x30637fff, 0xa000188, 0x24060001, +0x3e00008, 0x0, 0x9784004c, 0xe44821, +0x3123ffff, 0x3168ffff, 0x68382b, 0x54e0fff8, +0xa783004c, 0x938a002e, 0x11400005, 0x240f0001, +0x6bc023, 0xa380002e, 0x3e00008, 0xa798004c, +0x6bc023, 0xa38f002e, 0x3e00008, 0xa798004c, +0x3e00008, 0x0, 0x27bdffe8, 0xafb00010, +0x3084ffff, 0x3c108000, 0x93a8002b, 0xafbf0014, +0xa6040144, 0x960a0e16, 0x30c600ff, 0x8fa90030, +0xa60a0146, 0xae050148, 0xa2060152, 0xa608015a, +0xae070160, 0x8fa3002c, 0xa6090158, 0x1202021, +0xe00017c, 0xae030154, 0x3c021000, 0xae020178, +0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, +0x3c038000, 0x34620070, 0x8c490000, 0x8f87003c, +0x24840007, 0x27bdfff8, 0x3084fff8, 0xaf890024, +0x3c088000, 0x950e008a, 0x31cdffff, 0xafad0000, +0x8fac0000, 0x1875823, 0x256affff, 0x31461fff, +0xc4282b, 0x14a0fff7, 0x350d0070, 0x8dac0000, +0x3c050800, 0x8ca50084, 0x3c0a0800, 0x8d4a0080, +0x1895823, 0x1021, 0xabc021, 0x7c882, +0x1422021, 0x30b302b, 0x193880, 0x35094000, +0x867821, 0xe91021, 0x27bd0008, 0x3c010800, +0xac380084, 0x3c010800, 0xac2f0080, 0x3e00008, +0x0, 0x8f82003c, 0x24860007, 0x30c5fff8, +0xa21821, 0x30641fff, 0x3e00008, 0xaf84003c, +0x3c0320ff, 0x27bdffe8, 0x3c076000, 0x3c088000, +0x24050010, 0x3464fffd, 0xace53008, 0xafbf0010, +0xad040e00, 0x0, 0x0, 0x0, +0x0, 0x0, 0x3c0200ff, 0x345ffffd, +0xad1f0e00, 0x3c0b6004, 0x8d785000, 0x2419ff7f, +0x3c0e0002, 0x3197824, 0x35ec380c, 0x35cd0109, +0xaced4c18, 0x24060009, 0xad6c5000, 0x8cea0438, +0xad060008, 0xad000014, 0x8ce94c1c, 0x3145ffff, +0x3c065709, 0x91e02, 0x38a42f71, 0x3062000f, +0x34c80010, 0xaf820048, 0x10400007, 0x2485c0b3, +0x8ceb4c1c, 0x3c0d001f, 0x35acfc00, 0x16c5024, +0xa49c2, 0xaf890034, 0x8cf90808, 0x241ff000, +0x33fc024, 0x3087026, 0x3067826, 0x2de80001, +0x2dc60001, 0x1063825, 0x50e00009, 0xa3800038, +0x3c09601c, 0x8d240008, 0x24030001, 0xa3830038, +0x30827c00, 0xa780004c, 0xa380002e, 0xa782002c, +0xaf800050, 0x14a00003, 0xaf80003c, 0x3c056000, +0xaca0442c, 0xe000559, 0x0, 0x8fbf0010, +0xa000e99, 0x27bd0018, 0x27bdffc8, 0xafb3002c, +0xafb20028, 0xafbf0030, 0xafb10024, 0xafb00020, +0x93620008, 0x809821, 0xa09021, 0x14400035, +0x24040010, 0xe0001c9, 0x0, 0xe000168, +0x408021, 0x2c400, 0x3c193200, 0x3198825, +0xae110000, 0x936f0009, 0x976e0012, 0x936a000a, +0x31ec00ff, 0x31cdffff, 0x18d5821, 0xb4400, +0x314900ff, 0x1093825, 0xae070004, 0x8f850050, +0x97840040, 0x403021, 0x30832000, 0x1460004d, +0xae050008, 0xae00000c, 0x3c058000, 0x97840040, +0x662004f, 0x8e03000c, 0x30900008, 0x16000002, +0x26480006, 0x26480002, 0x94a40e14, 0x8ca50e1c, +0x8f670004, 0x936a0002, 0x3084ffff, 0x314900ff, +0xafa90010, 0x8f720014, 0xafa80018, 0xe0001af, +0xafb20014, 0x8fbf0030, 0x8fb3002c, 0x8fb20028, +0x8fb10024, 0x8fb00020, 0x24040010, 0xa0001f2, +0x27bd0038, 0x93650009, 0x97710012, 0x936c000b, +0x30ad00ff, 0x1b13021, 0x318b00ff, 0xcb8021, +0x2602000a, 0x3050ffff, 0xe0001c9, 0x2002021, +0xe000168, 0x408821, 0x93680009, 0x97640012, +0x2fc00, 0x310900ff, 0x308affff, 0x12a3821, +0x24e30002, 0x3e3c025, 0x3c194100, 0x3197825, +0xae2f0000, 0x8f6e000c, 0x3c0d8000, 0x95ac0e14, +0x1d32825, 0xae250004, 0x8da50e1c, 0x8f670004, +0x936b0002, 0x3184ffff, 0x316600ff, 0xafa60010, +0x8f680014, 0x403021, 0xafb20018, 0xe0001af, +0xafa80014, 0x2002021, 0x8fbf0030, 0x8fb3002c, +0x8fb20028, 0x8fb10024, 0x8fb00020, 0xa0001f2, +0x27bd0038, 0x97620012, 0x3c058000, 0x97840040, +0x305fffff, 0x661ffb4, 0xae1f000c, 0x8e03000c, +0x3c078000, 0x679825, 0xa00026b, 0xae13000c, +0x27bdffd8, 0xafb40020, 0xafbf0024, 0xafb3001c, +0xafb20018, 0xafb10014, 0xafb00010, 0x93620008, +0x14400094, 0x80a021, 0xaf60000c, 0x97850040, +0x30a44000, 0x1080009e, 0x24030016, 0x24104007, +0xa363000a, 0xaf700014, 0x938f0042, 0x8f6c0014, +0x31ee0001, 0xe6a40, 0x18d5825, 0xaf6b0014, +0x978a0040, 0x8f680014, 0x31490010, 0x1093825, +0xaf670014, 0x97860040, 0x30c30008, 0x1060009f, +0x0, 0x8f660014, 0x3c031000, 0x3c048000, +0xc32825, 0xaf650014, 0x94820e0a, 0x3c1f8100, +0x2413000e, 0x3059ffff, 0x33fc025, 0xaf780004, +0xa3730002, 0x9372000a, 0x3406fffc, 0x26510004, +0xa371000a, 0x97880040, 0x31072000, 0x10e00091, +0x0, 0x3c0b8000, 0x97890040, 0x95680e0c, +0x97840040, 0x91842, 0x3107c000, 0x30650003, +0x71303, 0x309f1000, 0xa2c025, 0x1fca03, +0x3199825, 0x1390c0, 0xa7720012, 0x97910040, +0x936f000a, 0x118182, 0x320e003c, 0x1cf6821, +0x25ac003c, 0xa36c0009, 0x956a0e0c, 0x31493fff, +0xa7690010, 0x976d0012, 0x936c0009, 0x18d5821, +0x256a0002, 0x31490007, 0x94023, 0x31030007, +0xa363000b, 0x93670009, 0x97640012, 0x97650010, +0x30e200ff, 0x8f900028, 0x97980040, 0x44f821, +0x3e5c821, 0x3269821, 0x33120040, 0x12400005, +0x3266ffff, 0xd0702b, 0x3c118000, 0x11c00016, +0x9021, 0x206782b, 0x15e0002d, 0x2021, +0x3c108000, 0x8e120e14, 0x3c058000, 0xae120e10, +0x8e110e1c, 0xae110e18, 0xae060e00, 0x8cb80000, +0x33130008, 0x1260fffd, 0x0, 0x94b90e08, +0xc08021, 0x8821, 0xa7990040, 0x8ca60e04, +0x24120001, 0xaf860028, 0x977f0010, 0x33f3ffff, +0x8e890000, 0x1302023, 0x10800058, 0xae840000, +0x2202021, 0xe000243, 0x2002821, 0x8e8c0000, +0x15800005, 0x0, 0x8f6d0014, 0x240effbf, +0x1aea024, 0xaf740014, 0x8f78000c, 0x3138821, +0xaf71000c, 0x936f0008, 0x15e00003, 0x0, +0x16400040, 0x0, 0xa3720008, 0x2002021, +0x8fbf0024, 0x8fb40020, 0x8fb3001c, 0x8fb20018, +0x8fb10014, 0x8fb00010, 0x801021, 0x3e00008, +0x27bd0028, 0x8f900028, 0x97820040, 0x3c118000, +0x2009821, 0x30450040, 0x14a0ffd9, 0x9021, +0x97680010, 0x8f870028, 0x3103ffff, 0x1467ffec, +0x2021, 0x8821, 0xa000339, 0x24120001, +0x2403000e, 0x24104007, 0xa363000a, 0xaf700014, +0x938f0042, 0x8f6c0014, 0x31ee0001, 0xe6a40, +0x18d5825, 0xaf6b0014, 0x978a0040, 0x8f680014, +0x31490010, 0x1093825, 0xaf670014, 0x97860040, +0x30c30008, 0x1460ff63, 0x0, 0xaf600004, +0xa3600002, 0x97880040, 0x31072000, 0x14e0ff71, +0x3021, 0xa7600012, 0x97910040, 0x936f000a, +0x3c0b8000, 0x32301f00, 0x107183, 0x1cf6821, +0x25ac0028, 0xa36c0009, 0x956a0e0c, 0xa00030a, +0xa76a0010, 0x8f660014, 0x3c1fefff, 0x37f9fffe, +0xd99824, 0xa00034f, 0xaf730014, 0x8f6b0014, +0x356a0040, 0xe00016e, 0xaf6a0014, 0xa00033e, +0x2202021, 0x8f850044, 0x8f8a0030, 0x27bdffc0, +0x3c048000, 0xafb70034, 0xafb40028, 0xafb1001c, +0xafbf0038, 0xafb60030, 0xafb5002c, 0xafb30024, +0xafb20020, 0xafb00018, 0x8c870104, 0x8ca90024, +0xac8a0080, 0x8ca80020, 0xe98823, 0xb821, +0xac880e10, 0x8ca60024, 0xa021, 0xac860e18, +0x8c820e10, 0xac820e14, 0x8c830e18, 0xac830e1c, +0x12200033, 0x3c168000, 0x936b0008, 0x11600054, +0x0, 0x976e0010, 0x31cdffff, 0x22d602b, +0x1580004f, 0x0, 0x97700010, 0x320fffff, +0xaecf0e00, 0x3c058000, 0x8cb30000, 0x32720008, +0x1240fffd, 0x0, 0x94b50e08, 0x8ca50e04, +0x32b0ffff, 0x32140001, 0x12800044, 0x0, +0xd, 0x3219a040, 0x24180040, 0x13380045, +0x3214a000, 0x1280003f, 0x0, 0x93730008, +0x12600009, 0x27a40010, 0x97620010, 0x305fffff, +0xbfc82b, 0x53200005, 0xafb10010, 0x32080040, +0x11000034, 0x0, 0xafb10010, 0xa7900040, +0xaf850028, 0xe0002bd, 0x0, 0x40a021, +0x104000be, 0x8fb10010, 0x1620ffcf, 0x0, +0x2e960001, 0x2d78825, 0x12200017, 0x8fbf0038, +0x8f850030, 0x24170f00, 0x10b70071, 0x3c048000, +0x8c8f0178, 0x5e0fffe, 0x24180f00, 0x50b8008f, +0x3c048000, 0x8c990e14, 0x24140240, 0x3c051000, +0xac990144, 0x8c930e1c, 0xac930148, 0xa0800152, +0xa480015a, 0xac800160, 0xa4800158, 0xac940154, +0xac850178, 0x8fbf0038, 0x8fb70034, 0x8fb60030, +0x8fb5002c, 0x8fb40028, 0x8fb30024, 0x8fb20020, +0x8fb1001c, 0x8fb00018, 0x3e00008, 0x27bd0040, +0xaed10e00, 0xa0003c3, 0x3c058000, 0x14a0ffbe, +0x3219a040, 0xe000175, 0xa021, 0xa0003ea, +0x2e960001, 0x3c038000, 0x8c7f0178, 0x7e0fffe, +0x24020800, 0x8f84003c, 0xac620178, 0x3c038000, +0x946b008a, 0x316affff, 0x1443823, 0x24e9ffff, +0x31281fff, 0x2d060008, 0x14c0fff9, 0x346c4000, +0xa0a021, 0xe000168, 0x8c9021, 0x8f830030, +0x24040f00, 0x40a821, 0x2348823, 0x3c068000, +0x10640005, 0x24050001, 0x938e0042, 0x31c50001, +0x56a40, 0x35a50001, 0x15fc00, 0x3c020100, +0x3e2c825, 0xae590000, 0x8f930050, 0x32180036, +0x320f0008, 0xae530004, 0x11e00041, 0xb89825, +0x94c30e0a, 0x8f84003c, 0x3c0b8100, 0x306affff, +0x24920008, 0x32481fff, 0x14b4825, 0x3c071000, +0x26920006, 0x2410000e, 0xacc90160, 0x2679825, +0xa4d0015a, 0xaf88003c, 0xa4d20158, 0x16200008, +0x3c108000, 0x8f8e0030, 0x24050f00, 0x51c50002, +0x24170001, 0x36730040, 0xe00016e, 0x3c108000, +0x8e180e14, 0x2402021, 0xae180144, 0x8e0f0e1c, +0xae0f0148, 0xa2150152, 0xae130154, 0xe00017c, +0x3c151000, 0xae150178, 0xa0003e7, 0x0, +0x12800005, 0x3c078000, 0x94f20e08, 0x32490040, +0x11200042, 0x0, 0x8c8a0178, 0x540fffe, +0x0, 0x94950e10, 0x3c100500, 0x24032000, +0x32aeffff, 0x1d06825, 0xac8d014c, 0x8c8c0e14, +0x3c0b1000, 0xac8c0144, 0x8c860e1c, 0xac860148, +0xa0800152, 0xa480015a, 0xac800160, 0xa4800158, +0xac830154, 0xac8b0178, 0xa0003f1, 0x3c048000, +0x8f8d003c, 0x26920002, 0xa4d20158, 0x25ac0008, +0x31861fff, 0xa00044c, 0xaf86003c, 0xac80014c, +0x12800019, 0x0, 0x8c9f0e10, 0xac9f0144, +0x8c830e18, 0x3c088000, 0x24110040, 0xac830148, +0x8fbf0038, 0xa1000152, 0x8fb70034, 0xa500015a, +0x8fb60030, 0xad000160, 0x8fb5002c, 0xa5000158, +0x8fb40028, 0xad110154, 0x8fb30024, 0x8fb20020, +0x8fb1001c, 0x8fb00018, 0x3c041000, 0x27bd0040, +0x3e00008, 0xad040178, 0x8c820e14, 0xac820144, +0x8c830e1c, 0xa00048b, 0x3c088000, 0xe000175, +0x2e960001, 0xa0003eb, 0x2d78825, 0x0, +0xd, 0x0, 0x2400033a, 0xa000467, +0x3c048000, 0x27bdffd8, 0xafb10014, 0x3c118000, +0xafb00010, 0xafb40020, 0xafb3001c, 0xafb20018, +0xafbf0024, 0x3c130800, 0x26733c34, 0xe0001f9, +0x36300070, 0x3c140800, 0x26943cb4, 0x2009021, +0x8e080000, 0x8e240000, 0x38830001, 0x30620001, +0x10400016, 0x3c0a8000, 0x2404821, 0x8d270000, +0x3c1f0800, 0x8fff006c, 0x3c0f0800, 0x8def0068, +0xe81023, 0x3e26021, 0xc021, 0x182702b, +0x1f86821, 0x1ae4021, 0x3c010800, 0xac2c006c, +0x3c010800, 0xac280068, 0x8d4b0000, 0x39660001, +0x30c50001, 0x14a0ffed, 0xe04021, 0x8e1f0000, +0x3c180800, 0x8f18006c, 0x3c0d0800, 0x8dad0068, +0x3e8c823, 0x3193821, 0x7021, 0xf9602b, +0x1ae4021, 0x10c5821, 0x3c010800, 0xac27006c, +0x3c010800, 0xac2b0068, 0x8e280100, 0x2406ff80, +0x3c04800a, 0x25050240, 0xa64824, 0xae280020, +0xae290024, 0x8e090000, 0x30a3007f, 0x645021, +0x3c078000, 0xaf8a0044, 0xaf880030, 0xaf890024, +0x8ce20178, 0x440fffe, 0x0, 0x8e1f0000, +0x3c180800, 0x8f180074, 0x3c0d0800, 0x8dad0070, +0x3e9c823, 0x3195821, 0x7021, 0x179302b, +0x1ae6021, 0x1864821, 0x24050800, 0x3c010800, +0xac2b0074, 0x3c010800, 0xac290070, 0xace50178, +0x90e40108, 0xa3840042, 0x93830042, 0x306a0001, +0x1140000f, 0x240e0d00, 0x2502f800, 0x2c470301, +0x10e0001c, 0x819c2, 0x2464fff0, 0x45042, +0xa4140, 0xe00039a, 0x113d821, 0x3c0a4000, +0x3c088000, 0xad0a0138, 0xa0004bd, 0x0, +0x110e0026, 0x240f0f00, 0x110f002a, 0x3c028008, +0x34470080, 0x90ff0000, 0x24180050, 0x33f900ff, +0x1738fff3, 0x3c0a4000, 0xe0009a3, 0x0, +0x3c0a4000, 0x3c088000, 0xad0a0138, 0xa0004bd, +0x0, 0x8f840034, 0x64282b, 0x14a0000b, +0x8f860048, 0x866021, 0x258bffff, 0x163482b, +0x15200006, 0x646823, 0xd1940, 0xe00039a, +0x74d821, 0xa000519, 0x3c0a4000, 0x0, +0xd, 0x0, 0x240003ad, 0xe00039a, +0x0, 0xa000519, 0x3c0a4000, 0x3c1b0800, +0x277b3db4, 0xe00039a, 0x0, 0xa000519, +0x3c0a4000, 0x3c1b0800, 0x277b3dd4, 0xe00039a, +0x0, 0xa000519, 0x3c0a4000, 0x8f820050, +0x24430001, 0x304200ff, 0xaf830050, 0x3e00008, +0x0, 0x411c0, 0x3e00008, 0x24420240, +0x3c040800, 0x24843bcc, 0x2405001a, 0xa00007c, +0x3021, 0x27bdffe0, 0xafbf001c, 0xafb20018, +0xafb10014, 0xafb00010, 0x3c108000, 0x920b0109, +0x2412ff80, 0xe000556, 0x3164007f, 0x8f910030, +0x515021, 0x1524024, 0xae080024, 0x92030109, +0xe000556, 0x3064007f, 0x24060080, 0x240700c0, +0x24040040, 0xae000810, 0xae040814, 0xae060818, +0xae07081c, 0x920c0109, 0x51f821, 0x33f8007f, +0x3c19800a, 0x3191021, 0x3184007f, 0xe000556, +0xaf820044, 0x8e110100, 0x3c0c0080, 0x35850001, +0x2227821, 0x1f24824, 0xae090804, 0x8e0e0100, +0x35980002, 0x36090900, 0x1c26821, 0x31ab0078, +0x1655025, 0xae0a0820, 0x8e050100, 0x8e080100, +0x36050980, 0x1021821, 0x24640040, 0x923024, +0xae060808, 0x8e070100, 0xe2f821, 0x27f90040, +0x33320078, 0x2588825, 0xae110824, 0x8e040100, +0x952f000c, 0x8fbf001c, 0x8fb20018, 0x31eeffff, +0xe69c0, 0xae0d0800, 0xae0c0828, 0x952b000c, +0x8fb10014, 0x316affff, 0xa41c0, 0xae08002c, +0x8ca30050, 0x8fb00010, 0x8ca2003c, 0x8d240004, +0x8ca6001c, 0x8ca70038, 0x27bd0020, 0xaf830068, +0xaf820058, 0xaf840054, 0xaf860060, 0x3e00008, +0xaf870064, 0x3c0a0800, 0x914a3bf1, 0x3c090800, +0x95293bea, 0x3c051100, 0xa3c00, 0x25280002, +0xe83025, 0xc51825, 0x24820008, 0xac830000, +0x3e00008, 0xac800004, 0x3c088000, 0x35070900, +0x90e60011, 0x24020028, 0x805021, 0x30c300ff, +0xa06021, 0x10620002, 0x340b86dd, 0x240b0800, +0x3c078000, 0x34e20a9a, 0x94590000, 0x34ef0a9c, +0x34ed0aa0, 0x3338ffff, 0xad580000, 0x8dee0000, +0x34e80a80, 0x24040001, 0xad4e0004, 0x8da90000, +0xad490008, 0x91050019, 0x30a30003, 0x10640043, +0x28660002, 0x14c000b0, 0x24040002, 0x1064008b, +0x24050003, 0x10650096, 0x34e60aa4, 0x3c090800, +0x95293be0, 0x24020800, 0x5162004d, 0x3c0e8000, +0x3c0e8000, 0x35c50900, 0x90a60012, 0x90b90019, +0x35cb0980, 0x8d680028, 0x30c700ff, 0x77880, +0x3138ffff, 0x332300ff, 0x1f81021, 0x32500, +0x887025, 0x25c00, 0x3c0d6000, 0x1cd3025, +0x356906ff, 0xad490004, 0xad460000, 0x8ca7002c, +0x25490028, 0xad470008, 0x8cb90030, 0xad59000c, +0x8cb80034, 0xad580010, 0x8caf0038, 0xad4f0014, +0x8ca3001c, 0xad430018, 0x8ca80020, 0x3c038000, +0x3462093c, 0xad48001c, 0x8ca40024, 0x346f0900, +0xad440020, 0x8cad0028, 0xad4d0024, 0x8c590000, +0xad2c0004, 0x25220014, 0xad390000, 0x8c78010c, +0xad380008, 0x91e80012, 0x3c040800, 0x90843bf0, +0xad200010, 0x82f00, 0x46c00, 0xad6025, +0x358affff, 0x3e00008, 0xad2a000c, 0x3c090800, +0x95293be0, 0x3c0f0800, 0x95ef3bea, 0x34f90aa4, +0x3c0e0800, 0x95ce3bdc, 0x97280000, 0x3138ffff, +0x1f86821, 0x1ae3823, 0x82c00, 0x24e3fff2, +0xa32025, 0x24020800, 0xad44000c, 0xad400010, +0xad4b0014, 0x1562ffb6, 0x254a0018, 0x3c0e8000, +0x35cd0900, 0x91a20011, 0x91a70019, 0x3c050800, +0x94a53be6, 0x304600ff, 0x35cb0a80, 0x956e002a, +0x6c882, 0x30f800ff, 0x9787005c, 0x191e00, +0x187c00, 0x3128ffff, 0xa82021, 0x6f4825, +0x1241025, 0x1c73021, 0x3c0b4000, 0x4bc825, +0x6c400, 0xad590000, 0xad580004, 0x91af0018, +0x3c030006, 0x24e90001, 0xf4600, 0x1037025, +0xad4e0008, 0x8da5002c, 0x3c038000, 0x3462093c, +0xad45000c, 0x8dab001c, 0x31247fff, 0x25490014, +0xad4b0010, 0x8c590000, 0xad2c0004, 0x346f0900, +0xad390000, 0x8c78010c, 0xa784005c, 0x25220014, +0xad380008, 0x91e80012, 0x3c040800, 0x90843bf0, +0xad200010, 0x82f00, 0x46c00, 0xad6025, +0x358affff, 0x3e00008, 0xad2a000c, 0x34e20aa4, +0x94460000, 0x95190028, 0x3c090800, 0x95293be0, +0x6c400, 0x197c00, 0x370e8100, 0x1eb6825, +0xad4e000c, 0xad4d0010, 0xa0005e2, 0x254a0014, +0x3c090800, 0x95293be0, 0x3c180800, 0x97183bea, +0x3c0f0800, 0x95ef3bdc, 0x94ce0000, 0x3139ffff, +0x950d0028, 0x3194021, 0x10f3823, 0xe2400, +0xd2c00, 0x24e3ffee, 0xa33025, 0x34828100, +0xad42000c, 0xad460010, 0xad400014, 0xad4b0018, +0xa0005e2, 0x254a001c, 0x1460ff54, 0x34e90aa4, +0x95280000, 0x3c090800, 0x95293be0, 0x83c00, +0xeb1825, 0xad43000c, 0xa0005e2, 0x254a0010, +0x3e00008, 0x240207d0, 0x27bdffe0, 0xafb20018, +0xafb10014, 0xafb00010, 0xafbf001c, 0xe00005c, +0x808821, 0x8f880058, 0x8f870054, 0x3c058008, +0x34b20080, 0x1112821, 0x3c108000, 0x24020080, +0x240300c0, 0xa72023, 0xae020818, 0x3c068008, +0xae03081c, 0x18800004, 0xaf850058, 0xacc50004, +0x8cc90004, 0xaf890054, 0x12200009, 0x36040980, +0xe000695, 0x0, 0x924c0027, 0x8e0b0074, +0x1825004, 0x14b3021, 0xae46000c, 0x36040980, +0x8c8e001c, 0x8f8f0060, 0x1cf6823, 0x19a00004, +0x8fbf001c, 0x8c90001c, 0xaf900060, 0x8fbf001c, +0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa00005e, +0x27bd0020, 0x8f860068, 0x8f830058, 0x8f820054, +0x3c058008, 0x34a40080, 0xac860050, 0xac83003c, +0x3e00008, 0xaca20004, 0x3c038000, 0x34670070, +0x8ce30000, 0x308700ff, 0x3c040800, 0x8c840054, +0x27bdfff8, 0x30aa00ff, 0x24820001, 0x3c010800, +0xac220054, 0x30c800ff, 0xaf830024, 0x3c098000, +0x8d250178, 0x4a0fffe, 0x352b0070, 0x8d650000, +0xa3a70003, 0x3c180800, 0x8f180074, 0x8fb90000, +0x3c0d0800, 0x8dad0070, 0xa33823, 0x3c047fff, +0xe07821, 0x3482ffff, 0x3073821, 0x7021, +0x3225824, 0x1ae3021, 0xef602b, 0x847c0, +0xcc1821, 0x1682825, 0xafa50000, 0x3c010800, +0xac270074, 0x3c010800, 0xac230070, 0x9124010a, +0xa3a00002, 0x3c0280ff, 0xa3a40001, 0x8fb80000, +0x314f007f, 0x3459ffff, 0x3196824, 0xf7600, +0x3c0b0020, 0x1ae6025, 0x356a2000, 0x2408ff80, +0x3c061000, 0x27bd0008, 0xad2c014c, 0xad2a0154, +0xa5200158, 0xa1280152, 0x3e00008, 0xad260178, +0x3c038000, 0x34620070, 0x8c480000, 0x308a00ff, +0x30a900ff, 0xaf880024, 0x3c048000, 0x8c850178, +0x4a0fffe, 0x34870070, 0x8ceb0000, 0x3c050800, +0x8ca50074, 0x3c190800, 0x8f390070, 0x1682023, +0xa47021, 0x1021, 0x1c4c02b, 0x3227821, +0x3c078000, 0x1f86821, 0x3c010800, 0xac2e0074, +0x34e60a00, 0x3c010800, 0xac2d0070, 0x8ccc0020, +0x9582b, 0x34e80980, 0xacec0144, 0x8cc90024, +0xb1540, 0xace90148, 0xa0ea0150, 0x9104004c, +0xa0e4016d, 0x3e00008, 0xa4e00158, 0x27bdffe8, +0x308400ff, 0xafbf0010, 0xe00070d, 0x30a500ff, +0x8f830058, 0x8fbf0010, 0x3c058000, 0x34460040, +0x2404ff90, 0x3c021000, 0x27bd0018, 0xaca3014c, +0xa0a40152, 0xaca60154, 0x3e00008, 0xaca20178, +0x27bdffe0, 0x3c088008, 0xafbf001c, 0xafb20018, +0xafb10014, 0xafb00010, 0x35100080, 0x8e060018, +0x3c078000, 0x309200ff, 0xc72025, 0xae040018, +0xe00005c, 0x30b100ff, 0x92030005, 0x34620008, +0xe00005e, 0xa2020005, 0x2402021, 0xe000734, +0x2202821, 0x2402021, 0x8fbf001c, 0x8fb20018, +0x8fb10014, 0x8fb00010, 0x24050005, 0x24060001, +0xa0006cf, 0x27bd0020, 0x3c088000, 0x27bdffe8, +0xafb00010, 0x35050980, 0xafbf0014, 0x90a70009, +0x24020006, 0x35060900, 0x30e300ff, 0x24100004, +0x10620072, 0x24080002, 0x94ae005c, 0x3c0d0204, +0x31ccffff, 0x18d5825, 0xac8b0000, 0x90aa0008, +0x31490020, 0x11200008, 0x0, 0x90bf004e, +0x3c190103, 0x37380300, 0x33ef00ff, 0x1f82825, +0x24100008, 0xac850004, 0x90cc0011, 0x90c90011, +0x318a00ff, 0xa5882, 0x312700ff, 0x256a0005, +0xa1080, 0x38e30028, 0x14600029, 0x824823, +0x90cf0012, 0x3c198000, 0x37220900, 0x31e500ff, +0x57080, 0x1d06821, 0xd3400, 0x34c406ff, +0xad240004, 0x904c0011, 0x90580012, 0x373f0980, +0x8fe40034, 0x8f2f010c, 0x105882, 0x330500ff, +0xab7021, 0x83400, 0x8f1823, 0xe6f00, +0x1a61025, 0x319f00fc, 0x3067ffff, 0x3e9c021, +0x47c825, 0x14b7821, 0xf2880, 0xaf19000c, +0xe00005c, 0x1258021, 0x3c0a8008, 0x24090004, +0x35480080, 0xe00005e, 0xa1090009, 0x2001021, +0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, +0x90ce0011, 0x90cd0019, 0x3c070800, 0x94e73be6, +0x31c600ff, 0x62082, 0x31ac00ff, 0x45e00, +0xc1c00, 0x1631025, 0x47c825, 0x3c1f4000, +0x33fc025, 0x3c198000, 0xad380000, 0x37220900, +0x904c0011, 0x90580012, 0x373f0980, 0x8fe40034, +0x8f2f010c, 0x105882, 0x330500ff, 0xab7021, +0x83400, 0x8f1823, 0xe6f00, 0x1a61025, +0x319f00fc, 0x3067ffff, 0x3e9c021, 0x47c825, +0x14b7821, 0xf2880, 0xaf19000c, 0xe00005c, +0x1258021, 0x3c0a8008, 0x24090004, 0x35480080, +0xe00005e, 0xa1090009, 0x2001021, 0x8fbf0014, +0x8fb00010, 0x3e00008, 0x27bd0018, 0xa00076f, +0x24080012, 0x27bdffd8, 0xafb40020, 0xafb3001c, +0xafb20018, 0xafb10014, 0xafbf0024, 0xafb00010, +0x3c068000, 0x90c3010b, 0x309200ff, 0x30b300ff, +0x30620030, 0xa021, 0x10400070, 0x8821, +0x34c40980, 0x90880008, 0x83e00, 0x72e03, +0x4a00097, 0x24040004, 0x8f880058, 0x3c010800, +0xa0243bf0, 0x3c0c8000, 0xad800048, 0x3c038000, +0x906e010b, 0x31c50020, 0x10a00007, 0x3c028000, +0x34790980, 0x93380008, 0x188600, 0x107e03, +0x5e2009c, 0x3c028008, 0x34500900, 0x34470a80, +0x904d010b, 0x94eb002c, 0x92030011, 0x921f0012, +0x90e50018, 0x307800ff, 0x33f900ff, 0x197880, +0x1f87021, 0x1d15021, 0x30b100ff, 0x1514821, +0x2524000a, 0x31ac0040, 0x3091ffff, 0xc302b, +0x2202021, 0xa78b005c, 0x3c010800, 0xa42a3be6, +0x3c010800, 0xa4293be8, 0x3c010800, 0xa4293bea, +0x3c010800, 0xa4203be0, 0x3c010800, 0xa4203bdc, +0xe0001c9, 0x1068023, 0xe0005b2, 0x402021, +0x402021, 0xe0005bf, 0x2002821, 0x1680005c, +0x0, 0xe0001f2, 0x2202021, 0x3c080800, +0x91083bf0, 0x31140003, 0x12800016, 0x3c1f8008, +0x8f840058, 0x3c0c8008, 0x35860080, 0x248b0001, +0xaccb003c, 0x3c058008, 0x8caa0004, 0x1602021, +0x14b4823, 0x19200002, 0xaf8b0058, 0x8ca40004, +0xe000695, 0xaca40004, 0x3c0f8000, 0x8dee0074, +0x3c058008, 0x34ad0080, 0x4e8821, 0xadb1000c, +0x3c1f8008, 0x37f90080, 0x2402021, 0x2602821, +0xa320006b, 0xe00070d, 0x3c128000, 0x8f980058, +0x34500006, 0xae58014c, 0xe000550, 0x3c131000, +0xa2420152, 0x8fbf0024, 0xae500154, 0x8fb40020, +0xae530178, 0x8fb10014, 0x8fb3001c, 0x8fb20018, +0x8fb00010, 0x3e00008, 0x27bd0028, 0x34c30980, +0x906f0008, 0xf7600, 0xe6e03, 0x5a00033, +0x34c20900, 0x9059001b, 0x241f0010, 0x3c010800, +0xa03f3bf0, 0x33380002, 0x1300ff90, 0x8f880058, +0x8f830064, 0x1468ff8e, 0x3c038000, 0xe00005c, +0x0, 0x3c098008, 0x35250080, 0x90a40009, +0x24070016, 0x308800ff, 0x1107000d, 0x0, +0x90a60009, 0x3c0c0800, 0x918c3bf0, 0x240a0008, +0x30c400ff, 0x358b0001, 0x3c010800, 0xa02b3bf0, +0x108a002f, 0x240d000a, 0x108d0028, 0x2402000c, +0xe00005e, 0x0, 0xa0007fc, 0x8f880058, +0xe000763, 0x402021, 0xa00082e, 0x0, +0x3c0b8008, 0x356a0080, 0x8d480054, 0x8cc9010c, +0x1120ff66, 0xaf880058, 0x24060014, 0x3c010800, +0xa0263bf0, 0xa0007fb, 0x3c0c8000, 0x90710008, +0x24140002, 0x3c010800, 0xa0343bf0, 0x32300020, +0x1200000b, 0x24140001, 0x8f880058, 0xa0007fc, +0x24110008, 0x345f0080, 0x8fe70038, 0xac470004, +0x8c430004, 0xafe3003c, 0xa000807, 0x3c028000, +0x8f880058, 0xa0007fc, 0x24110004, 0xa0a20009, +0xe00005e, 0x0, 0xa0007fc, 0x8f880058, +0x24020014, 0xa0008ad, 0xa0a20009, 0x27bdffe8, +0xafbf0014, 0xafb00010, 0x3c108000, 0x92020109, +0x24050001, 0xe00070d, 0x304400ff, 0x3c1f8008, +0x93f8000e, 0x37e30080, 0x93f9000f, 0x906e0026, +0x93e9000a, 0x332f00ff, 0x186600, 0xf6c00, +0x31cb00ff, 0x18d5025, 0xb3200, 0x1463825, +0x312800ff, 0x34456000, 0xe82025, 0x2402ff81, +0x3c031000, 0xae04014c, 0x8fbf0014, 0xae050154, +0xa2020152, 0xae030178, 0x8fb00010, 0x3e00008, +0x27bd0018, 0x27bdffe8, 0x308400ff, 0xafbf0010, +0xe00070d, 0x30a500ff, 0x34460040, 0x3c048000, +0x2405ff92, 0xac860154, 0xa0850152, 0x8f830058, +0x8fbf0010, 0x3c021000, 0x27bd0018, 0xac83014c, +0x3e00008, 0xac820178, 0x27bdffd8, 0xafb20018, +0xafb10014, 0xafb00010, 0xafbf0020, 0xafb3001c, +0x3c078000, 0x90e20109, 0x308600ff, 0x30b000ff, +0x618c2, 0x32040002, 0x30710001, 0x14800007, +0x305200ff, 0x3c098008, 0x35330080, 0x92680005, +0x31050008, 0x10a0000c, 0x30ca0010, 0x2402021, +0xe000745, 0x2202821, 0x24020001, 0x8fbf0020, +0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x3e00008, 0x27bd0028, 0x15400030, 0x34e50a00, +0x8cb90024, 0x8cb80008, 0x13380047, 0x4021, +0x3c0e8008, 0x35d30080, 0x926d0068, 0x240b0002, +0x31ac00ff, 0x118b0080, 0x3c068000, 0x927f004c, +0x90c40109, 0x509f0004, 0x3213007c, 0x11000067, +0x0, 0x3213007c, 0x1660005a, 0x2402021, +0x16200008, 0x320c0001, 0x3c078000, 0x34eb0a00, +0x8d650024, 0x8ce80104, 0x14a8ffdc, 0x1021, +0x320c0001, 0x1180000d, 0x2402021, 0x3c108000, +0x8e0e010c, 0x8f8d0068, 0x11cd0008, 0x0, +0xe0007e2, 0x2202821, 0x8e0f010c, 0x3c188008, +0x37100080, 0xae0f0050, 0x2402021, 0xe000734, +0x2202821, 0xa000900, 0x24020001, 0x3c070800, +0x8ce70064, 0x24e60001, 0x3c010800, 0xac260064, +0x1600000d, 0x0, 0x2202821, 0xe000734, +0x2402021, 0x926f0068, 0x240d0002, 0x31ee00ff, +0x11cd0022, 0x2402021, 0xe0008b4, 0x0, +0xa000900, 0x24020001, 0xe00003d, 0x24040001, +0x926c0025, 0x20c5825, 0xe00005e, 0xa26b0025, +0xa000940, 0x2202821, 0x8e630018, 0x8ce40104, +0x8cbf0024, 0x31602, 0x149fffb5, 0x3045007f, +0x9269004c, 0x26440001, 0x3093007f, 0x12650040, +0x312300ff, 0x1464ffaf, 0x3c0e8008, 0x26480001, +0x3111007f, 0x310200ff, 0x1225000b, 0x24080001, +0x409021, 0xa00090d, 0x24110001, 0x24050004, +0xe0006cf, 0x24060001, 0xe0008b4, 0x0, +0xa000900, 0x24020001, 0x2407ff80, 0x2472824, +0xa79026, 0x324200ff, 0x409021, 0xa00090d, +0x24110001, 0xe0007e2, 0x2202821, 0x32060030, +0x10c0ffa3, 0x32100082, 0x2402021, 0xe000745, +0x2202821, 0xa000900, 0x24020001, 0x8e630018, +0x2402021, 0x2202821, 0x661025, 0xe0008d6, +0xae620018, 0x9264004c, 0x24050003, 0x24060001, +0xe0006cf, 0x308400ff, 0xe00003d, 0x24040001, +0x926a0025, 0x20a4825, 0xe00005e, 0xa2690025, +0xa000900, 0x24020001, 0x8e780018, 0x3c198000, +0x2402021, 0x3197825, 0x2202821, 0xe000734, +0xae6f0018, 0x9264004c, 0xa000988, 0x24050004, +0x32460080, 0x38ca0080, 0x146aff6e, 0x3c0e8008, +0xa000961, 0x26480001, 0x27bdffc0, 0xafb00018, +0x3c108000, 0xafbf0038, 0xafb70034, 0xafb60030, +0xafb5002c, 0xafb40028, 0xafb30024, 0xafb20020, +0xe00055e, 0xafb1001c, 0x92040108, 0x9205010b, +0x308400ff, 0xe0008e7, 0x30a500ff, 0x144000d6, +0x8fbf0038, 0x3c098008, 0x35280080, 0xa100006b, +0x36070980, 0x90e60000, 0x24020050, 0x3c170800, +0x26f73df4, 0x30c300ff, 0x3c140800, 0x26943e04, +0x10620003, 0x3c108000, 0xb821, 0xa021, +0x241f0010, 0x36110a00, 0x36130980, 0x8e160104, +0x8f8d0058, 0x8e380024, 0x36190a80, 0x8e720020, +0x3c010800, 0xa03f3bf0, 0x972c002c, 0x8ef50000, +0x932b0018, 0x24d7023, 0x2d87823, 0x3c010800, +0xac2f3bcc, 0x3c010800, 0xac2e3bd0, 0x3c010800, +0xac2d3bf4, 0xa78c005c, 0x2a0f809, 0x317200ff, +0x304a0002, 0x154000da, 0x30450001, 0x10a000b4, +0x0, 0x36050900, 0x8e2b0024, 0x90bf0011, +0x90b90012, 0x90b60011, 0x33ef00ff, 0x333800ff, +0x32cd00ff, 0x187080, 0x1cf8021, 0x24d6021, +0x212a821, 0x258a0010, 0x3c010800, 0xa4353be8, +0x3c010800, 0xac2b3bf8, 0x3c010800, 0xa42a3be4, +0x3c010800, 0xa4303be6, 0x260b021, 0x3c158000, +0x8f920058, 0x8f840060, 0x8ed30020, 0x24110006, +0x923023, 0x2722823, 0x3c010800, 0xac313bec, +0x4c000af, 0x9821, 0x4a000ad, 0xc5102b, +0x104000af, 0x0, 0x3c010800, 0xac263bd0, +0x8e900000, 0x200f809, 0x0, 0x30430002, +0x1460006f, 0x408821, 0x30460001, 0x54c00011, +0x8e920004, 0x3c080800, 0x8d083bd4, 0x3c09c000, +0x3c048000, 0x1093825, 0xaea70e00, 0x8c8b0000, +0x316a0008, 0x1140fffd, 0x0, 0x948d0e08, +0x24130001, 0xa78d0040, 0x8c8c0e04, 0xaf8c0028, +0x8e920004, 0x240f809, 0x0, 0x2228825, +0x322e0002, 0x15c000a5, 0x0, 0x3c180800, +0x97183bdc, 0x3c120800, 0x96523be8, 0x3c190800, +0x97393bde, 0x3c070800, 0x8ce73bd4, 0x3124021, +0x3c0b0800, 0x8d6b3bf8, 0x3c0e0800, 0x95ce3bf2, +0x3c128000, 0x1197821, 0x8e46010c, 0xf86821, +0x25ec0002, 0x1ae4821, 0x1675021, 0xaf860068, +0x3c010800, 0xac2a3bf8, 0x3c010800, 0xa4293be0, +0x3c010800, 0xa4283bea, 0xe0001c9, 0x3184ffff, +0xe000550, 0x408021, 0x3c010800, 0xa0223bf1, +0x8e820008, 0x40f809, 0x2002021, 0x8f850058, +0xe0005bf, 0x402021, 0x8e90000c, 0x200f809, +0x402021, 0x3c030800, 0x94633bea, 0x3c020800, +0x94423bde, 0x622021, 0x24850002, 0xe0001f2, +0x30a4ffff, 0x3c190800, 0x8f393bcc, 0x3c1f0800, +0x8fff3bd4, 0x33fc023, 0x3c010800, 0xac383bcc, +0x17000006, 0x0, 0x3c050800, 0x8ca53bec, +0x34bf0040, 0x3c010800, 0xac3f3bec, 0x12600042, +0x8f820044, 0x8e430e10, 0x8f930044, 0xae630020, +0x8e440e18, 0xae640024, 0x3c040800, 0x94843be0, +0xe000697, 0x0, 0x8f860058, 0x8e8a0010, +0x3c010800, 0xac263bf4, 0x140f809, 0x0, +0x3c090800, 0x8d293bcc, 0x1520ff7e, 0x8f920058, +0x9796005c, 0x3c14800e, 0x32350010, 0xe0006c6, +0xa696002c, 0x56a00045, 0x8eeb0004, 0x32270040, +0x54e0001e, 0x8ef10008, 0x8eec000c, 0x180f809, +0x0, 0x8fbf0038, 0x8fb70034, 0x8fb60030, +0x8fb5002c, 0x8fb40028, 0x8fb30024, 0x8fb20020, +0x8fb1001c, 0x8fb00018, 0x3e00008, 0x27bd0040, +0x92090109, 0x8f880030, 0x93e00, 0xe83025, +0xae060080, 0x8e230020, 0x8e240024, 0xafa30010, +0xae030e14, 0x8fa20010, 0xae020e10, 0xae040e1c, +0xae040e18, 0xa0009e3, 0x36050900, 0x220f809, +0x0, 0x8eec000c, 0x180f809, 0x0, +0xa000a8b, 0x8fbf0038, 0x24080001, 0x24100001, +0xa4400020, 0xa4480022, 0xa000a6f, 0xac500024, +0x3c010800, 0xac203bd0, 0xa000a0a, 0x8e900000, +0x3c010800, 0xac253bd0, 0xa000a0a, 0x8e900000, +0x92110109, 0x2821, 0xe000734, 0x322400ff, +0x8fbf0038, 0x8fb70034, 0x8fb60030, 0x8fb5002c, +0x8fb40028, 0x8fb30024, 0x8fb20020, 0x8fb1001c, +0x8fb00018, 0x3e00008, 0x27bd0040, 0x160f809, +0x0, 0xa000a85, 0x32270040, 0x5260ffb1, +0x9796005c, 0x8eb60e14, 0x8f940044, 0xae960020, +0x8eaf0e1c, 0xae8f0024, 0xa000a7e, 0x9796005c, +0x8f820000, 0x42180, 0x3e00008, 0x821021, +0x3c078008, 0x34e20080, 0x90430069, 0x804021, +0x10600009, 0x3c040100, 0x3c070800, 0x8ce73bf4, +0x8f83001c, 0xe32023, 0x4800008, 0x93890008, +0x14e30003, 0x1002021, 0x3e00008, 0x801021, +0x3c040100, 0x3e00008, 0x801021, 0x1120000b, +0x673823, 0x3c0d8000, 0x35ac0980, 0x918b007c, +0x316a0002, 0x11400020, 0x24090034, 0xe9702b, +0x15c0fff1, 0x1002021, 0xe93823, 0x2403fffc, +0xa3c824, 0xe3c024, 0xf9782b, 0x15e0ffea, +0x3082021, 0x30c40003, 0x41023, 0x14c00014, +0x30490003, 0x3021, 0xa97821, 0x1e67021, +0xee682b, 0x11a0ffe0, 0x3c040100, 0x2d380001, +0x6c82b, 0x1054821, 0x3193824, 0x14e0ffda, +0x2524fffc, 0x2402fffc, 0xa21824, 0x682021, +0x3e00008, 0x801021, 0xa000af4, 0x24090030, +0x3c0c8000, 0x35860980, 0x90cb007c, 0x316a0004, +0x1540ffe9, 0x24060004, 0xa000b03, 0x3021, +0x3c030800, 0x8c63005c, 0x8f820004, 0x27bdffe8, +0xafbf0014, 0x10620005, 0xafb00010, 0x329c0, +0x24a40280, 0xaf840000, 0xaf830004, 0x3c108000, +0x36030a00, 0x94650032, 0xe000ad5, 0x30a43fff, +0x8e040100, 0x3c180080, 0x370f0003, 0x82c821, +0x2402ff80, 0x3226024, 0x3329007f, 0xcf940, +0x3e94025, 0x332e0078, 0x3c0d1000, 0x10d5025, +0x1cf5825, 0xae0c0028, 0x36080980, 0xae0c080c, +0xae0b082c, 0xae0a0830, 0x91030069, 0x3c06800c, +0x1263821, 0x10600006, 0xaf870020, 0x8d09003c, +0x8d06006c, 0x1263823, 0x18e0007f, 0x0, +0x3c0c8008, 0x358b0080, 0x3c0a8000, 0xa1600069, +0x35500980, 0x8e020038, 0x3c068000, 0x34c50a00, +0x90ad003c, 0x31a80020, 0x11000019, 0xaf82001c, +0x240e0001, 0x3c198000, 0x37300a00, 0xa38e0008, +0xaf800010, 0x8e040024, 0x8f850010, 0x24180008, +0xaf80000c, 0xaf800014, 0x3c010800, 0xa4383bde, +0x3c010800, 0xa4203bf2, 0xe000ad9, 0x3021, +0x920f003c, 0x8fbf0014, 0x8fb00010, 0xf7142, +0xaf820018, 0x27bd0018, 0x3e00008, 0x31c20001, +0x90b90032, 0x240f0001, 0x333800ff, 0x182182, +0x108f003f, 0x241f0002, 0x109f0062, 0x34c20ac0, +0x3c038000, 0x34640a00, 0x8c990024, 0x1720001d, +0x34660900, 0x90830030, 0x241f0005, 0x3062003f, +0x105f004c, 0x24050001, 0x8f86000c, 0xa3850008, +0xaf860014, 0xaf860010, 0x3c198000, 0x37300a00, +0x8e040024, 0x8f850010, 0x24180008, 0x3c010800, +0xa4383bde, 0x3c010800, 0xa4203bf2, 0xe000ad9, +0x0, 0x920f003c, 0x8fbf0014, 0x8fb00010, +0xf7142, 0xaf820018, 0x27bd0018, 0x3e00008, +0x31c20001, 0x8c880008, 0x8c8d0024, 0x8ccb0064, +0x3c198000, 0x37300a00, 0xaf8b0010, 0xa3800008, +0x8e040024, 0x8f86000c, 0x8f850010, 0x10d6023, +0x24180008, 0xaf8c0014, 0x3c010800, 0xa4383bde, +0x3c010800, 0xa4203bf2, 0xe000ad9, 0x0, +0x920f003c, 0x8fbf0014, 0x8fb00010, 0xf7142, +0xaf820018, 0x27bd0018, 0x3e00008, 0x31c20001, +0x90a70030, 0x30e3003f, 0x50640028, 0x34c50ac0, +0x8caa0024, 0x15400022, 0x34c80900, 0x8cab0048, +0x3c0c7fff, 0x3585ffff, 0x1651024, 0x3c188000, +0xaf82000c, 0x37050900, 0x8f8e000c, 0x8caf0060, +0x1cf682b, 0x15a00002, 0x1c02021, 0x8ca40060, +0xa000b75, 0xaf84000c, 0x8d02006c, 0xa000b50, +0x3c068000, 0x8c890048, 0x8f86000c, 0x3c0a7fff, +0x3550ffff, 0x1303824, 0x3c048008, 0x24050001, +0xaf870014, 0xac80006c, 0xa3850008, 0xa000b83, +0xaf860010, 0x8c440014, 0xa000b75, 0xaf84000c, +0x8d020068, 0xa000bbd, 0x3c188000, 0x34c40980, +0x8c860070, 0x8cb00014, 0xd0482b, 0x11200004, +0x0, 0x8c820070, 0xa000bbd, 0x3c188000, +0x8ca20014, 0xa000bbd, 0x3c188000, 0x8f850010, +0x27bdffe0, 0xafbf0018, 0xafb10014, 0x14a00008, +0xafb00010, 0x3c048000, 0x34870a00, 0x90e60030, +0x24020005, 0x30c3003f, 0x106200b7, 0x34840900, +0x8f91000c, 0xa08021, 0x3c048000, 0x348e0a00, +0x8dcd0004, 0x3c060800, 0x8cc63bd0, 0x31a73fff, +0xe6602b, 0x55800001, 0xe03021, 0x938f0008, +0x11e00076, 0xd0102b, 0x34990980, 0x9338007c, +0x33040002, 0x10800077, 0x24030034, 0xc3f82b, +0x17e000d6, 0xc33023, 0xd0102b, 0x3c010800, +0xa4233bdc, 0x1440006d, 0x2001821, 0x3c040800, +0x8c843bcc, 0x64282b, 0x54a00001, 0x602021, +0x3c058000, 0x34a90a00, 0x9128003c, 0x3c010800, +0xac243bd4, 0x31030020, 0x14600002, 0x4821, +0x8ca90e18, 0x8f880018, 0x128502b, 0x1140005f, +0x0, 0x3c050800, 0x8ca53bd4, 0xa96021, +0x10c582b, 0x1160005c, 0xb0682b, 0x1093823, +0xe02821, 0x3c010800, 0xac273bd4, 0x12000003, +0x2402fffc, 0x10b0008c, 0x322a0003, 0xa2f824, +0x3c010800, 0xa4203bf2, 0x3c010800, 0xac3f3bd4, +0x3e02821, 0x8f840010, 0x12040006, 0x3c038008, +0x8c6a006c, 0x2002021, 0xaf91000c, 0x25500001, +0xac70006c, 0x8f8b0014, 0x858823, 0xaf910010, +0x1652023, 0xaf840014, 0x12200002, 0x24070018, +0x24070010, 0x3c0e8008, 0x35c60080, 0x90cd0068, +0x240c0001, 0x3c010800, 0xa0273bf0, 0x31a700ff, +0x10ec0047, 0x0, 0x14800018, 0x2821, +0x3c0b8000, 0x91650109, 0x35710980, 0x8e230018, +0x30a500ff, 0x35602, 0x24a30001, 0x3146007f, +0x3070007f, 0x1206007e, 0x240cff80, 0x3c0f8008, +0x35e90080, 0xa123004c, 0x3c080800, 0x8d083bec, +0x240e0002, 0x3c010800, 0xa02e3c31, 0x350d0008, +0x3c010800, 0xac2d3bec, 0x24050010, 0x3c1f8000, +0x37e40a00, 0x9099003c, 0x33380020, 0x13000005, +0xa02021, 0x24020001, 0x3c010800, 0xac223bd4, +0x34a40001, 0x8fbf0018, 0x8fb10014, 0x8fb00010, +0x801021, 0x3e00008, 0x27bd0020, 0x3c010800, +0xa4203bdc, 0x1040ff95, 0x2001821, 0xa000c10, +0xc01821, 0xa000c08, 0x24030030, 0x3c050800, +0x8ca53bd4, 0xb0682b, 0x11a0ffa8, 0x0, +0x3c040800, 0x94843bdc, 0x857821, 0x1e7702b, +0x11c00007, 0x2ca20004, 0x3c1f6000, 0x8ff95404, +0x3338003f, 0x1700ffe3, 0x24040042, 0x2ca20004, +0x1040ff9a, 0x24040042, 0xa000c73, 0x8fbf0018, +0x1528ffb9, 0x0, 0x8cc20018, 0x3c188000, +0x24190002, 0x58f825, 0xacdf0018, 0x37040a00, +0xa0d90068, 0x9089003c, 0x240f0004, 0xa01021, +0x31280020, 0x3c010800, 0xa02f3c31, 0x11000002, +0x24050010, 0x24020001, 0x3c010800, 0xac223bcc, +0xa000c69, 0x3c1f8000, 0x8f880014, 0x8c890060, +0x109282b, 0x14a00002, 0x1008821, 0x8c910060, +0x3c0b8000, 0x8d640e18, 0x240a0001, 0x2202821, +0x2203021, 0xa38a0008, 0xe000ad9, 0x2208021, +0xa000bf7, 0xaf820018, 0xa1823, 0x12200007, +0x30640003, 0x3c0d8000, 0x35a70980, 0x90ec007c, +0x318b0004, 0x15600019, 0x248e0004, 0x3c010800, +0xa4243bf2, 0x3c180800, 0x97183bf2, 0x3052021, +0xc4782b, 0x11e0ff6c, 0x8f840010, 0x2ca60005, +0x14c0ffa4, 0x24040042, 0x30b90003, 0x17200002, +0xb91823, 0x24a3fffc, 0x3c010800, 0xac233bd4, +0x3c010800, 0xa4203bf2, 0xa000c36, 0x602821, +0xac3824, 0xa000c5c, 0xec1826, 0x3c010800, +0xa42e3bf2, 0xa000cc6, 0x0, 0x3c010800, +0xac203bd4, 0xa000c72, 0x24040042, 0x8f830014, +0x3c0b8000, 0x356a0a00, 0x14600006, 0x1021, +0x91460030, 0x24050005, 0x30c400ff, 0x10850003, +0x0, 0x3e00008, 0x0, 0x91490048, +0x312800ff, 0x839c2, 0x14e0fffa, 0x3c048008, +0x3c060800, 0x94c63bdc, 0x3c030800, 0x8c633bf4, +0x3c050800, 0x8ca53bd4, 0x3c180800, 0x97183bf2, +0x66c821, 0x8c8e0004, 0x3257821, 0x1f86821, +0x1ae6023, 0x1980001d, 0x0, 0x9158004c, +0x8f8d0020, 0x956e0e10, 0x330f00ff, 0x8da90004, +0x1cf3023, 0x8daa0000, 0x30cfffff, 0xf6100, +0x12c2821, 0x3821, 0x1472021, 0xac182b, +0x83c821, 0xada50004, 0xadb90000, 0x91b8000a, +0x1f87021, 0xa1ae000a, 0x956c0e12, 0x8f8a0020, +0xa54c0008, 0x95490038, 0x25280001, 0xa5480038, +0x9147000d, 0x34eb0008, 0xa14b000d, 0x3e00008, +0x0, 0x27bdffd8, 0xafb00018, 0x938f0008, +0x8fb00014, 0x3c087fff, 0x8f870010, 0x3c0c8000, +0x3518ffff, 0xafbf0020, 0xafb1001c, 0x35990a00, +0x2181824, 0x932a003c, 0xf5fc0, 0x3c02bfff, +0x2cf00001, 0x3449ffff, 0x6bf825, 0x3c080800, +0x8d083bf4, 0x8f99001c, 0x3c180800, 0x97183bea, +0x3e95824, 0x107f80, 0x3c07efff, 0x3c05f0ff, +0x16f1825, 0x3c118000, 0x31490020, 0x34e2ffff, +0x34adffff, 0x362e0980, 0x27a50010, 0x24060002, +0x1194023, 0x270a0002, 0x621824, 0x808021, +0x15200002, 0x5821, 0x8d8b0e1c, 0xa7aa0012, +0x500003a, 0x24070000, 0x30ef00ff, 0xf3f00, +0x674025, 0x3c028008, 0xafa80014, 0x344b0080, +0x916a0068, 0x3c0f0800, 0x91ef3bf1, 0x3c09dfff, +0x353fffff, 0xa602b, 0x3c020800, 0x94423be4, +0xa3af0011, 0x11fc024, 0xccf40, 0x3191825, +0x8fa70010, 0xafa30014, 0x3c1f0800, 0x93ff3bf3, +0xa7a20016, 0x8fa80014, 0xed4824, 0x3c0b0100, +0x3c0a0fff, 0x12bc825, 0x33f80003, 0x354cffff, +0x10d7824, 0x3c027000, 0x32c3824, 0x181e00, +0xe24825, 0x1e35825, 0xafab0014, 0xafa90010, +0x91df007c, 0xa3bf0015, 0xe000072, 0x0, +0x362d0a00, 0x91a6003c, 0x30c40020, 0x10800006, +0x26020008, 0x3c110800, 0x96313be0, 0x262effff, +0x3c010800, 0xa42e3be0, 0x8fbf0020, 0x8fb1001c, +0x8fb00018, 0x3e00008, 0x27bd0028, 0x8f8a0018, +0x16a602b, 0x5580ffc4, 0x24070001, 0xa000d50, +0x30ef00ff, 0x93830008, 0x3c028000, 0x27bdffd8, +0x34480a00, 0x805021, 0xafbf0020, 0x34460ac0, +0x1002821, 0x1060000e, 0x34440980, 0x91070030, +0x240b0005, 0x8f89000c, 0x30ec003f, 0x118b000b, +0x3821, 0xafa90010, 0x3c0b8008, 0x8d69006c, +0xafaa0018, 0xe00013a, 0xafa90014, 0xa3800008, +0x8fbf0020, 0x3e00008, 0x27bd0028, 0x8d1f0048, +0x3c180800, 0x8f183bd4, 0x8f990014, 0x3c027fff, +0x8d080044, 0x3443ffff, 0xafa90010, 0x3c0b8008, +0x8d69006c, 0x3e37024, 0x3197821, 0x1cf6823, +0x1a83821, 0xafaa0018, 0xe00013a, 0xafa90014, +0xa000da5, 0xa3800008, 0x3c058000, 0x34a60a00, +0x90c7003c, 0x3c060800, 0x94c63bf2, 0x3c020800, +0x8c423bec, 0x30e30020, 0x62400, 0x10600031, +0x444825, 0x3c088008, 0x35050080, 0x90a30068, +0x6821, 0x240c0001, 0x5021, 0x240b0001, +0x3c188000, 0x370f0070, 0x8de80000, 0x3c078000, +0xaf880024, 0x8cf90178, 0x720fffe, 0x34e50070, +0x8ca20000, 0x3c030800, 0x8c630074, 0x3c0f0800, +0x8def0070, 0x482023, 0x642821, 0xc021, +0xa4302b, 0x1f87021, 0x1c64021, 0x3c010800, +0xac250074, 0x3c010800, 0xac280070, 0xacec0148, +0x3c020800, 0x8c423bf4, 0xa4ea0144, 0xa4eb0146, +0xace2014c, 0x3c040800, 0x90843bf1, 0x3c038008, +0xa0e40152, 0xace90154, 0xa4ed0158, 0x346d0080, +0x91ac004c, 0x3c091000, 0xa0ec016d, 0x3e00008, +0xace90178, 0x8cac0e1c, 0x3c0b0800, 0x8d6b3bd4, +0x94aa0e16, 0x94ae0e14, 0x1666821, 0x314bffff, +0xa000dcd, 0x31caffff, 0x3c048000, 0x34830a00, +0x9065003c, 0x30a20020, 0x1040002b, 0x0, +0x5821, 0x5021, 0x4821, 0x3c088000, +0x35040070, 0x8c880000, 0x3c078000, 0xaf880024, +0x8cec0178, 0x580fffe, 0x34ee0070, 0x8dcd0000, +0x3c050800, 0x8ca50074, 0x3c040800, 0x8c840070, +0x1a86023, 0xacc021, 0x1021, 0x30c302b, +0x82c821, 0x3267821, 0x3c010800, 0xac380074, +0x3c010800, 0xac2f0070, 0xaceb0148, 0x3c0e0800, +0x8dce3bf4, 0x240dff91, 0x240b0040, 0xa4e90144, +0xa4ea0146, 0xacee014c, 0xa0ed0152, 0xaceb0154, +0xa4e00158, 0x90ea0109, 0x3c091000, 0xa0ea016d, +0x3e00008, 0xace90178, 0x8c8b0e18, 0x94870e12, +0x94860e10, 0x30eaffff, 0xa000e08, 0x30c9ffff, +0x3c048000, 0x34830a00, 0x9065003c, 0x30a20020, +0x10400039, 0x27bdfff8, 0x240c0001, 0x5021, +0x240b0001, 0x3c088000, 0x35040070, 0x8c890000, +0x3c088000, 0xaf890024, 0x8d0d0178, 0x5a0fffe, +0x350e0070, 0x8dc70000, 0x3c050800, 0x8ca50074, +0x3c040800, 0x8c840070, 0xe96823, 0xadc021, +0x1021, 0x30d302b, 0x82c821, 0x3267821, +0x3c010800, 0xac380074, 0x3c010800, 0xac2f0070, +0x91090109, 0x3c0e0800, 0x91ce3c31, 0x3c0380ff, +0xa3a90003, 0x8fad0000, 0x31c7007f, 0x3462ffff, +0x1a82025, 0xafa40000, 0x9106010a, 0xa3a00002, +0x7ce00, 0xa3a60001, 0x8fa50000, 0x240e3000, +0x3c091000, 0xa2c024, 0x3197825, 0xad0f014c, +0x27bd0008, 0xad0e0154, 0xa5000158, 0xad0c0148, +0xa50a0144, 0x240aff80, 0xa50b0146, 0xa10a0152, +0x3e00008, 0xad090178, 0x8c8c0e18, 0x94870e12, +0x94860e10, 0x30ebffff, 0xa000e3e, 0x30caffff, +0x27bdffe8, 0xafb00010, 0x3c108000, 0xafbf0014, +0x36180a00, 0x970f0032, 0xe000ad5, 0x31e43fff, +0x8e0e0100, 0x240dff80, 0x3c042000, 0x1c25821, +0x16d6024, 0xc4940, 0x316a007f, 0x12a4025, +0x1043825, 0x3c048008, 0xae070830, 0x34860080, +0x90c50068, 0x24030002, 0x30a200ff, 0x10430004, +0x8f9f000c, 0x8f990010, 0xac9f0068, 0xac990064, +0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, +0x3c0a0800, 0x254a37fc, 0x3c090800, 0x252938d4, +0x3c080800, 0x25082c74, 0x3c070800, 0x24e739e4, +0x3c060800, 0x24c63638, 0x3c050800, 0x24a53390, +0x3c040800, 0x24842fa0, 0x3c030800, 0x246336ec, +0x3c020800, 0x24423488, 0x3c010800, 0xac2a3dfc, +0x3c010800, 0xac293df8, 0x3c010800, 0xac283df4, +0x3c010800, 0xac273e00, 0x3c010800, 0xac263e10, +0x3c010800, 0xac253e08, 0x3c010800, 0xac243e04, +0x3c010800, 0xac233e14, 0x3c010800, 0xac223e0c, +0x3e00008, 0x0, 0x0 }; +u32 bce_TXP_b09FwData[(0x0/4) + 1] = { 0x0 }; +u32 bce_TXP_b09FwRodata[(0x30/4) + 1] = { +0x80000940, 0x80000900, 0x80080100, +0x80080080, 0x80080000, 0x800e0000, 0x80080080, +0x80080000, 0x80000a80, 0x80000a00, 0x80000980, +0x80000900, 0x0 }; +u32 bce_TXP_b09FwBss[(0x24c/4) + 1] = { 0x0 }; +u32 bce_TXP_b09FwSbss[(0x6c/4) + 1] = { 0x0 }; +u32 bce_TXP_b09FwSdata[(0x0/4) + 1] = { 0x0 }; + +
+int bce_TPAT_b09FwReleaseMajor = 0x1; +int bce_TPAT_b09FwReleaseMinor = 0x0; +int bce_TPAT_b09FwReleaseFix = 0x0; +u32 bce_TPAT_b09FwStartAddr = 0x08000488; +u32 bce_TPAT_b09FwTextAddr = 0x08000400; +int bce_TPAT_b09FwTextLen = 0x13a4; +u32 bce_TPAT_b09FwDataAddr = 0x00000000; +int bce_TPAT_b09FwDataLen = 0x0; +u32 bce_TPAT_b09FwRodataAddr = 0x080017a4; +int bce_TPAT_b09FwRodataLen = 0x4; +u32 bce_TPAT_b09FwBssAddr = 0x08001800; +int bce_TPAT_b09FwBssLen = 0x12b4; +u32 bce_TPAT_b09FwSbssAddr = 0x080017c0; +int bce_TPAT_b09FwSbssLen = 0x40; +u32 bce_TPAT_b09FwSDataAddr = 0x00000000; +int bce_TPAT_b09FwSDataLen = 0x0; +u32 bce_TPAT_b09FwText[(0x13a4/4) + 1] = { +0xa000122, +0x0, 0x0, 0xd, 0x74706134, +0x2e362e31, 0x36000000, 0x4061001, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x10000003, 0x0, +0xd, 0xd, 0x3c020800, 0x244217c0, +0x3c030800, 0x24632ab4, 0xac400000, 0x43202b, +0x1480fffd, 0x24420004, 0x3c1d0800, 0x37bd2ffc, +0x3a0f021, 0x3c100800, 0x26100488, 0x3c1c0800, +0x279c17c0, 0xe00025e, 0x0, 0xd, +0x2402ff80, 0x27bdffe0, 0x821024, 0xafb00010, +0xaf420020, 0xafbf0018, 0xafb10014, 0x93650004, +0x3084007f, 0x3441821, 0x3c020008, 0x621821, +0x30a50020, 0x3608021, 0x3c080111, 0x277b0008, +0x14a00002, 0x2466005c, 0x24660058, 0x92020004, +0x97430104, 0x92040004, 0x3047000f, 0x3063ffff, +0x30840040, 0x672823, 0x10800009, 0x4821, +0x92020005, 0x30420004, 0x10400005, 0x0, +0x10a00003, 0x0, 0x24a5fffc, 0x24090004, +0x92020005, 0x30420004, 0x10400012, 0x0, +0x10a00010, 0x0, 0x96020002, 0xa72021, +0x1044025, 0x2442fffe, 0xa7421016, 0x92030004, +0x2402ff80, 0x431024, 0x304200ff, 0x10400003, +0x3c020400, 0xa000172, 0x1024025, 0x8cc20000, +0xaf421018, 0x8f420178, 0x440fffe, 0x2402000a, +0xa7420140, 0x96020002, 0x24040009, 0x30420007, +0x21023, 0x30420007, 0xa7420142, 0x96020002, +0x2442fffe, 0xa7420144, 0xa7400146, 0x97420104, +0xa7420148, 0x8f420108, 0x30420020, 0x50400001, +0x24040001, 0x92020004, 0x30420010, 0x14400002, +0x34830010, 0x801821, 0xa743014a, 0x0, +0x0, 0x0, 0x0, 0xaf481000, +0x0, 0x0, 0x0, 0x0, +0x8f421000, 0x441fffe, 0x3102ffff, 0x10400007, +0x0, 0x92020004, 0x30420040, 0x14400003, +0x0, 0x8f421018, 0xacc20000, 0x96020006, +0x3042ffff, 0x24420002, 0x21043, 0x21040, +0x3628821, 0x96220000, 0x1120000d, 0x3044ffff, +0xa71021, 0x8f83003c, 0x8f45101c, 0x21082, +0x21080, 0x431021, 0xac450000, 0x30a6ffff, +0xe0005b7, 0x52c02, 0x402021, 0xa6220000, +0x92030004, 0x2402ff80, 0x431024, 0x304200ff, +0x1040001f, 0x0, 0x92020005, 0x30420002, +0x1040001b, 0x0, 0x9742100c, 0x2442fffe, +0xa7421016, 0x0, 0x3c020400, 0x34420030, +0xaf421000, 0x0, 0x0, 0x0, +0x0, 0x8f421000, 0x441fffe, 0x0, +0x9742100c, 0x8f45101c, 0x3042ffff, 0x24420030, +0x21082, 0x21080, 0x5b1021, 0xac450000, +0x30a6ffff, 0xe0005b7, 0x52c02, 0xa6220000, +0x96040002, 0x24840008, 0xe0001e7, 0x3084ffff, +0x97440104, 0xe0001f5, 0x3084ffff, 0x8fbf0018, +0x8fb10014, 0x8fb00010, 0x3c021000, 0x27bd0020, +0x3e00008, 0xaf420178, 0x3084ffff, 0x30820007, +0x8f850024, 0x10400002, 0x24830007, 0x3064fff8, +0xa41021, 0x30421fff, 0x3421821, 0x247b4000, +0xaf850028, 0xaf820024, 0x3e00008, 0xaf420084, +0x3084ffff, 0x3082000f, 0x8f85002c, 0x8f860034, +0x10400002, 0x2483000f, 0x3064fff0, 0xa41021, +0x46182b, 0xaf850030, 0x462023, 0x14600002, +0xaf82002c, 0xaf84002c, 0x8f82002c, 0x34048000, +0x3421821, 0x641821, 0xaf83003c, 0x3e00008, +0xaf420080, 0x8f820014, 0x10400008, 0x8f820004, +0x8f82ffe4, 0x14400005, 0x8f820004, 0x3c02ffbf, +0x3442ffff, 0x822024, 0x8f820004, 0x30430006, +0x24020002, 0x1062000f, 0x3c020101, 0x2c620003, +0x50400005, 0x24020004, 0x1060000f, 0x3c020001, +0xa00022e, 0x0, 0x10620005, 0x24020006, +0x1462000c, 0x3c020111, 0xa000227, 0x821025, +0x3c020011, 0x821025, 0xaf421000, 0x24020001, +0xa00022e, 0xaf82000c, 0x821025, 0xaf421000, +0xaf80000c, 0x0, 0x0, 0x0, +0x3e00008, 0x0, 0x8f82000c, 0x10400004, +0x0, 0x8f421000, 0x441fffe, 0x0, +0x3e00008, 0x0, 0x8f820010, 0x229c2, +0x24a3fff0, 0x31842, 0x2444f800, 0x31140, +0x431021, 0x21080, 0x431021, 0x21080, +0x3c030800, 0x24631800, 0x2c840301, 0x14800013, +0x433021, 0x8f840018, 0xa4102b, 0x1440000f, +0x3021, 0xa41023, 0x21940, 0x621821, +0x31880, 0x621821, 0x8f82001c, 0x821021, +0x2442ffff, 0x45102b, 0x14400004, 0x31880, +0x3c020800, 0x24421a14, 0x623021, 0x3e00008, +0xc01021, 0x27bdffe0, 0xafbf0018, 0xafb10014, +0xafb00010, 0x3c046008, 0x8c825000, 0x2403ff7f, +0x3c066000, 0x431024, 0x3442380c, 0xac825000, +0x8cc24c1c, 0x3c1a8000, 0x21602, 0x3042000f, +0x10400007, 0xaf82001c, 0x8cc34c1c, 0x3c02001f, +0x3442fc00, 0x621824, 0x319c2, 0xaf830018, +0x8f420008, 0x275b4000, 0x34420001, 0xaf420008, +0xaf800024, 0x3c02601c, 0xaf400080, 0xaf400084, +0x8c450008, 0x8cc30808, 0x34028000, 0x3422021, +0x2402fff0, 0x621824, 0x3c020080, 0x3c010800, +0xac220420, 0x3c025709, 0xaf84003c, 0x14620004, +0xaf850034, 0x24020001, 0xa00028e, 0xaf820014, +0xaf800014, 0x3c028000, 0x34440070, 0x8c830000, +0x8f420000, 0x38420001, 0x30420001, 0x10400018, +0xaf830038, 0x804021, 0x603021, 0x8d070000, +0x3c050800, 0x8ca5045c, 0x3c040800, 0x8c840458, +0xe63023, 0x1021, 0xa62821, 0xa6302b, +0x822021, 0x862021, 0x3c010800, 0xac25045c, +0x3c010800, 0xac240458, 0x8f420000, 0x38420001, +0x30420001, 0x1440ffed, 0xe03021, 0xaf870038, +0x3c028000, 0x34420070, 0x8c470000, 0x8f860038, +0x3c050800, 0x8ca5045c, 0x3c040800, 0x8c840458, +0xe63823, 0x1021, 0xa72821, 0x822021, +0x8f820014, 0xa7302b, 0x862021, 0x3c010800, +0xac25045c, 0x3c010800, 0xac240458, 0x10400016, +0x0, 0x97420104, 0x10400005, 0x8f830000, +0x14600007, 0x2462ffff, 0xa0002d0, 0x2c62000a, +0x2c620010, 0x50400004, 0x8f830000, 0x24620001, +0xaf820000, 0x8f830000, 0x2c62000a, 0x14400003, +0x2c620007, 0xa0002d7, 0xaf80ffe4, 0x10400002, +0x24020001, 0xaf82ffe4, 0x8f430108, 0x8f440100, +0x30622000, 0xaf830004, 0x10400008, 0xaf840010, +0x3c020800, 0x8c42042c, 0x24420001, 0x3c010800, +0xac22042c, 0xa0005b3, 0x3c024000, 0x30650200, +0x14a00003, 0x24020f00, 0x14820260, 0x24020d00, +0x97420104, 0x104002c8, 0x3c024000, 0x30624000, +0x144000ad, 0x8f82003c, 0x8c440008, 0x8f420178, +0x440fffe, 0x24020800, 0xaf420178, 0x24020008, +0xa7420140, 0xa7400142, 0x97420104, 0x8f840004, +0x3051ffff, 0x30820001, 0x10400007, 0x2208021, +0x2623fffe, 0x24020002, 0x3070ffff, 0xa7420146, +0xa000304, 0xa7430148, 0xa7400146, 0x3c020800, +0x8c42043c, 0x1440000d, 0x8f830010, 0x30820020, +0x14400002, 0x24030009, 0x24030001, 0x602021, +0x8f830010, 0x24020900, 0x50620001, 0x34840004, +0xa744014a, 0xa00031f, 0x0, 0x24020f00, +0x14620005, 0x30820020, 0x14400006, 0x2403000d, +0xa00031e, 0x24030005, 0x14400002, 0x24030009, +0x24030001, 0xa743014a, 0x3c020800, 0x8c420420, +0x3c040048, 0xe00020a, 0x442025, 0xe000233, +0x0, 0x8f82000c, 0x1040003e, 0x0, +0x8f421000, 0x3c030020, 0x431024, 0x10400039, +0x8f820004, 0x30420002, 0x10400036, 0x0, +0x97421014, 0x14400033, 0x0, 0x97421008, +0x8f88003c, 0x3042ffff, 0x24420006, 0x21882, +0x33880, 0xe83021, 0x30430001, 0x8cc40000, +0x10600004, 0x30420003, 0xd, 0xa000360, +0xe81021, 0x54400010, 0x3084ffff, 0x3c05ffff, +0x852024, 0x851826, 0x3182b, 0x4102b, +0x431024, 0x10400005, 0x0, 0x0, +0xd, 0x0, 0x240001cb, 0x8cc20000, +0xa00035f, 0x452025, 0x3883ffff, 0x3182b, +0x4102b, 0x431024, 0x10400005, 0x0, +0x0, 0xd, 0x0, 0x240001d4, +0x8cc20000, 0x3444ffff, 0xe81021, 0xac440000, +0x3c020800, 0x8c420430, 0x24420001, 0x3c010800, +0xac220430, 0x8f620000, 0x8f84003c, 0xaf820008, +0x8c830000, 0x3402ffff, 0x1462000f, 0x1021, +0x3c050800, 0x8ca50454, 0x3c040800, 0x8c840450, +0xb02821, 0xb0302b, 0x822021, 0x862021, +0x3c010800, 0xac250454, 0x3c010800, 0xac240450, +0xa0005a9, 0x24040008, 0x8c820000, 0x30420100, +0x1040000f, 0x1021, 0x3c050800, 0x8ca5044c, +0x3c040800, 0x8c840448, 0xb02821, 0xb0302b, +0x822021, 0x862021, 0x3c010800, 0xac25044c, +0x3c010800, 0xac240448, 0xa0005a9, 0x24040008, +0x3c050800, 0x8ca50444, 0x3c040800, 0x8c840440, +0xb02821, 0xb0302b, 0x822021, 0x862021, +0x3c010800, 0xac250444, 0x3c010800, 0xac240440, +0xa0005a9, 0x24040008, 0x8f620008, 0x8f620000, +0x21602, 0x304300f0, 0x24020030, 0x10620005, +0x24020040, 0x106200e0, 0x8f820020, 0xa0005b1, +0x24420001, 0x14a00005, 0x0, 0x0, +0xd, 0x0, 0x240001fe, 0x8f420178, +0x440fffe, 0x0, 0xe00023b, 0x0, +0x14400005, 0x408021, 0x0, 0xd, +0x0, 0x24000205, 0x8e020000, 0x10400005, +0x0, 0x0, 0xd, 0x0, +0x24000208, 0x8f62000c, 0x4430003, 0x24020001, +0xa000457, 0xae000000, 0xae020000, 0x8f82003c, +0x8c480008, 0xa2000007, 0x8f65000c, 0x8f640004, +0x30a3ffff, 0x42402, 0x852023, 0x308200ff, +0x431021, 0x24420005, 0x23083, 0x2cc20081, +0xa605000a, 0x14400005, 0xa2040004, 0x0, +0xd, 0x0, 0x24000220, 0x8f85003c, +0xe0005d5, 0x26040014, 0x8f620004, 0x8f430108, +0xa6020008, 0x3c021000, 0x621824, 0x10600008, +0x0, 0x97420104, 0x92030007, 0x2442ffec, +0x34630002, 0x3045ffff, 0xa0003ec, 0xa2030007, +0x97420104, 0x2442fff0, 0x3045ffff, 0x96060008, +0x2cc20013, 0x54400005, 0x92030007, 0x92020007, +0x34420001, 0xa2020007, 0x92030007, 0x24020001, +0x10620005, 0x24020003, 0x1062000b, 0x8f82003c, +0xa000409, 0x30c6ffff, 0x8f82003c, 0x3c04ffff, +0x8c43000c, 0x641824, 0x651825, 0xac43000c, +0xa000409, 0x30c6ffff, 0x3c04ffff, 0x8c430010, +0x641824, 0x651825, 0xac430010, 0x30c6ffff, +0x24c20002, 0x21083, 0xa2020005, 0x8f83003c, +0x304200ff, 0x21080, 0x432821, 0x8ca80000, +0x8ca20000, 0x24030004, 0x21702, 0x14430012, +0x0, 0x97420104, 0x3c03ffff, 0x1031824, +0x3042ffff, 0x461023, 0x2442fffe, 0x624025, +0xaca80000, 0x92030005, 0x306200ff, 0x21080, +0x501021, 0x90420014, 0x3042000f, 0x431021, +0xa00043e, 0xa2020006, 0x8ca40004, 0x97420104, +0x9603000a, 0x3088ffff, 0x3042ffff, 0x461023, +0x2442ffd6, 0x21400, 0x1024025, 0xaca80004, +0x92020007, 0x92040005, 0x24630028, 0x31883, +0x641821, 0x34420004, 0xa2030006, 0xa2020007, +0x8f820004, 0x2403fffb, 0x34420002, 0x431024, +0xaf820004, 0x92030006, 0x8f87003c, 0x31880, +0x701021, 0x8c440020, 0x3c02fff6, 0x3442ffff, +0x824024, 0x671821, 0xae04000c, 0xac68000c, +0x92050006, 0x3c03ff7f, 0x8e02000c, 0x52880, +0xb02021, 0x3463ffff, 0x1033024, 0x94880026, +0xa72821, 0x431024, 0xae02000c, 0xac860020, +0xac880024, 0xaca80010, 0x24020010, 0xa7420140, +0x24020002, 0xa7400142, 0xa7400144, 0xa7420146, +0x97420104, 0x3c040008, 0x2442fffe, 0xa7420148, +0x24020001, 0xe00020a, 0xa742014a, 0x9603000a, +0x92020004, 0x431021, 0x24420002, 0x30420007, +0x21023, 0x30420007, 0xe000233, 0xae020010, +0x8f620000, 0x3c030800, 0x8c630444, 0x24040010, +0xaf820008, 0x97420104, 0x3042ffff, 0x2442fffe, +0x403821, 0x237c3, 0x3c020800, 0x8c420440, +0x671821, 0x67282b, 0x461021, 0x451021, +0x3c010800, 0xac230444, 0x3c010800, 0xac220440, +0xa00053e, 0x0, 0x14a00005, 0x0, +0x0, 0xd, 0x0, 0x2400029e, +0x8f420178, 0x440fffe, 0x0, 0xe00023b, +0x0, 0x14400005, 0x408021, 0x0, +0xd, 0x0, 0x240002a5, 0x8e020000, +0x54400006, 0x92020007, 0x0, 0xd, +0x0, 0x240002a8, 0x92020007, 0x30420004, +0x10400005, 0x8f820004, 0x2403fffb, 0x34420002, +0x431024, 0xaf820004, 0x8f620004, 0x4430008, +0x92020007, 0x92020006, 0x8e03000c, 0xae000000, +0x21080, 0x501021, 0xac430020, 0x92020007, +0x30420004, 0x54400009, 0x9602000a, 0x92020005, +0x3c030001, 0x21080, 0x501021, 0x8c460018, +0xc33021, 0xac460018, 0x9602000a, 0x92060004, +0x27710008, 0x2202021, 0xc23021, 0x24c60005, +0x26050014, 0xe0005d5, 0x63082, 0x92040006, +0x8f650004, 0x3c027fff, 0x42080, 0x912021, +0x8c830004, 0x3442ffff, 0xa22824, 0x651821, +0xac830004, 0x92020007, 0x92040005, 0x92030004, +0x30420004, 0x10400014, 0x96070008, 0x308400ff, +0x42080, 0x912021, 0x8c860004, 0x97420104, +0x9605000a, 0x306300ff, 0x3042ffff, 0x431021, +0x451021, 0x30e3ffff, 0x431023, 0x2442ffd8, +0x30c6ffff, 0x21400, 0xc23025, 0xac860004, +0xa0004f2, 0x92030007, 0x308500ff, 0x52880, +0xb12821, 0x8ca40000, 0x97420104, 0x306300ff, +0x3042ffff, 0x431021, 0x471023, 0x3c03ffff, +0x832024, 0x3042ffff, 0x822025, 0xaca40000, +0x92030007, 0x24020001, 0x10620006, 0x0, +0x24020003, 0x10620011, 0x0, 0xa000515, +0x8e030010, 0x97420104, 0x92030004, 0x9605000a, +0x8e24000c, 0x431021, 0x451021, 0x2442fff2, +0x3c03ffff, 0x832024, 0x3042ffff, 0x822025, +0xae24000c, 0xa000515, 0x8e030010, 0x97420104, +0x92030004, 0x9605000a, 0x8e240010, 0x431021, +0x451021, 0x2442ffee, 0x3c03ffff, 0x832024, +0x3042ffff, 0x822025, 0xae240010, 0x8e030010, +0x2402000a, 0xa7420140, 0xa7430142, 0x9603000a, +0x92020004, 0x3c040040, 0x431021, 0xa7420144, +0xa7400146, 0x97420104, 0xa7420148, 0x24020001, +0xe00020a, 0xa742014a, 0xe000233, 0x0, +0x8f620000, 0x92030004, 0x2021, 0xaf820008, +0x97420104, 0x9606000a, 0x3042ffff, 0x621821, +0x602821, 0x3c030800, 0x8c630444, 0x3c020800, +0x8c420440, 0x651821, 0x441021, 0x65382b, +0x471021, 0x3c010800, 0xac230444, 0x3c010800, +0xac220440, 0x92040004, 0x862021, 0x2484000a, +0x3084ffff, 0xe0001e7, 0x0, 0x97440104, +0x3084ffff, 0xe0001f5, 0x0, 0x3c021000, +0xaf420178, 0xa0005b0, 0x8f820020, 0x14820027, +0x30620006, 0x97420104, 0x10400067, 0x3c024000, +0x30624000, 0x10400005, 0x0, 0x0, +0xd, 0x0, 0x24000396, 0x8f420178, +0x440fffe, 0x24020800, 0xaf420178, 0x24020008, +0xa7420140, 0xa7400142, 0x8f820004, 0x97430104, +0x30420001, 0x10400007, 0x3070ffff, 0x2603fffe, +0x24020002, 0xa7420146, 0xa7430148, 0xa000568, +0x2402000d, 0xa7400146, 0x2402000d, 0xa742014a, +0x8f620000, 0x24040008, 0xaf820008, 0xe0001e7, +0x0, 0xa000542, 0x2002021, 0x10400042, +0x3c024000, 0x93620000, 0x304300f0, 0x24020010, +0x10620005, 0x24020070, 0x10620035, 0x0, +0xa0005b0, 0x8f820020, 0x8f620000, 0x97430104, +0x3050ffff, 0x3071ffff, 0x8f420178, 0x440fffe, +0x32020007, 0x21023, 0x30420007, 0x2403000a, +0x2604fffe, 0xa7430140, 0xa7420142, 0xa7440144, +0xa7400146, 0xa7510148, 0x8f420108, 0x30420020, +0x14400002, 0x24030009, 0x24030001, 0xa743014a, +0xe00020a, 0x3c040040, 0xe000233, 0x0, +0x3c070800, 0x8ce70444, 0x2111021, 0x2442fffe, +0x3c060800, 0x8cc60440, 0x401821, 0xe33821, +0x1021, 0x8f650000, 0xe3402b, 0xc23021, +0x26040008, 0xc83021, 0x3084ffff, 0xaf850008, +0x3c010800, 0xac270444, 0x3c010800, 0xac260440, +0xe0001e7, 0x0, 0xa000542, 0x2202021, +0xe000139, 0x0, 0x8f820020, 0x24420001, +0xaf820020, 0x3c024000, 0xaf420138, 0x0, +0xa00028f, 0x3c028000, 0x3084ffff, 0x30c6ffff, +0x52c00, 0xa62825, 0x3882ffff, 0x451021, +0x45282b, 0x451021, 0x21c02, 0x3042ffff, +0x431021, 0x21c02, 0x3042ffff, 0x431021, +0x3842ffff, 0x3e00008, 0x3042ffff, 0x3084ffff, +0x30a5ffff, 0x1821, 0x10800007, 0x0, +0x30820001, 0x10400002, 0x42042, 0x651821, +0xa0005cb, 0x52840, 0x3e00008, 0x601021, +0x10c00006, 0x24c6ffff, 0x8ca20000, 0x24a50004, +0xac820000, 0xa0005d5, 0x24840004, 0x3e00008, +0x0, 0x10a00008, 0x24a3ffff, 0xac860000, +0x0, 0x0, 0x2402ffff, 0x2463ffff, +0x1462fffa, 0x24840004, 0x3e00008, 0x0, +0x0 }; +u32 bce_TPAT_b09FwData[(0x0/4) + 1] = { 0x0 }; +u32 bce_TPAT_b09FwRodata[(0x4/4) + 1] = { +0x1, +0x0 }; +u32 bce_TPAT_b09FwBss[(0x12b4/4) + 1] = { 0x0 }; +u32 bce_TPAT_b09FwSbss[(0x40/4) + 1] = { 0x0 }; +u32 bce_TPAT_b09FwSdata[(0x0/4) + 1] = { 0x0 }; + +
+int bce_COM_b09FwReleaseMajor = 0x1; +int bce_COM_b09FwReleaseMinor = 0x0; +int bce_COM_b09FwReleaseFix = 0x0; +u32 bce_COM_b09FwStartAddr = 0x080000f8; +u32 bce_COM_b09FwTextAddr = 0x08000000; +int bce_COM_b09FwTextLen = 0x4ac8; +u32 bce_COM_b09FwDataAddr = 0x00000000; +int bce_COM_b09FwDataLen = 0x0; +u32 bce_COM_b09FwRodataAddr = 0x08004ac8; +int bce_COM_b09FwRodataLen = 0x30; +u32 bce_COM_b09FwBssAddr = 0x08004b58; +int bce_COM_b09FwBssLen = 0xc0; +u32 bce_COM_b09FwSbssAddr = 0x08004b20; +int bce_COM_b09FwSbssLen = 0x38; +u32 bce_COM_b09FwSDataAddr = 0x00000000; +int bce_COM_b09FwSDataLen = 0x0; +u32 bce_COM_b09FwText[(0x4ac8/4) + 1] = { +0xa00003e, +0x0, 0x0, 0xd, 0x636f6d34, +0x2e362e31, 0x36000000, 0x4061002, 0x0, +0x3, 0x14, 0x32, 0x3, +0x0, 0x0, 0x0, 0x0, +0x0, 0x10, 0x136, 0xea60, +0x1, 0x0, 0x0, 0x0, +0x8, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x2, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x10, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x10000003, 0x0, +0xd, 0xd, 0x3c020800, 0x24424b20, +0x3c030800, 0x24634c18, 0xac400000, 0x43202b, +0x1480fffd, 0x24420004, 0x3c1d0800, 0x37bd9ffc, +0x3a0f021, 0x3c100800, 0x261000f8, 0x3c1c0800, +0x279c4b20, 0xe000273, 0x0, 0xd, +0x27bdffe8, 0x3c028000, 0xafb00010, 0xafbf0014, +0x34500100, 0x92020009, 0x1040001a, 0x24030001, +0x3c020800, 0x8c420020, 0x10400016, 0x1821, +0xe000d71, 0x0, 0x96030008, 0x3c060800, +0x94c64bfe, 0x8e040018, 0x8f82002c, 0x9605000c, +0x31c00, 0x661825, 0xac440000, 0xac450004, +0x24040001, 0xac400008, 0xac40000c, 0xac400010, +0xac400014, 0xac400018, 0xe000d98, 0xac43001c, +0x1821, 0x8fbf0014, 0x8fb00010, 0x601021, +0x3e00008, 0x27bd0018, 0x27bdffe8, 0xafbf0010, +0x3c028000, 0x94420108, 0x30437000, 0x24022000, +0x1062000a, 0x28642001, 0x54800012, 0x8fbf0010, +0x24024000, 0x10620008, 0x24026000, 0x1062000a, +0x8fbf0010, 0xa000097, 0x1021, 0x8fbf0010, +0xa000055, 0x27bd0018, 0xe000433, 0x0, +0xa000096, 0x8fbf0010, 0xe000c81, 0x0, +0x8fbf0010, 0x1021, 0x3e00008, 0x27bd0018, +0x3c020800, 0x8c420020, 0x27bdffe8, 0x10400028, +0xafbf0010, 0xe000d71, 0x0, 0x3c058000, +0x94a20108, 0x94a3010c, 0x8f86002c, 0x3042003e, +0x3063ffff, 0x21400, 0x431025, 0xacc20000, +0x8ca20100, 0x3c070800, 0x94e74bfe, 0x8fbf0010, +0xacc20004, 0x94a30116, 0x94a4010e, 0x3c022000, +0x31c00, 0x3084ffff, 0x641825, 0xacc30008, +0xe23825, 0x94a20110, 0x94a30112, 0x24040001, +0x21400, 0x3063ffff, 0x431025, 0xacc2000c, +0x94a20114, 0x27bd0018, 0x3042ffff, 0xacc20010, +0xacc00014, 0xacc00018, 0xa000d98, 0xacc7001c, +0x8fbf0010, 0x3e00008, 0x27bd0018, 0x3c068000, +0x8cc202b8, 0x24030001, 0x4410008, 0x802821, +0x3c020800, 0x8c420060, 0x24420001, 0x3c010800, +0xac220060, 0x3e00008, 0x601021, 0x8c830020, +0x94820016, 0xacc30280, 0x2442fffc, 0xa4c20284, +0x3c020800, 0x8c42005c, 0x8c840004, 0x94a3000e, +0x24420001, 0x3c010800, 0xac22005c, 0x3c021000, +0xa4c30286, 0xacc40288, 0x1821, 0xacc202b8, +0x3e00008, 0x601021, 0x3c020800, 0x8c420020, +0x27bdffe8, 0x1040002b, 0xafbf0010, 0xe000d71, +0x0, 0x3c058000, 0x94a20108, 0x94a3010c, +0x8f86002c, 0x3042003e, 0x3063ffff, 0x21400, +0x431025, 0xacc20000, 0x8ca20100, 0x3c070800, +0x94e74bfe, 0x8fbf0010, 0xacc20004, 0x94a30116, +0x94a4010e, 0x3c022000, 0x31c00, 0x3084ffff, +0x641825, 0xacc30008, 0xe23825, 0x94a20110, +0x94a30112, 0x24040001, 0x21400, 0x3063ffff, +0x431025, 0xacc2000c, 0x94a20114, 0x27bd0018, +0x3042ffff, 0xacc20010, 0x8ca20118, 0xacc20014, +0x90a2010b, 0x304200ff, 0xacc20018, 0xa000d98, +0xacc7001c, 0x8fbf0010, 0x3e00008, 0x27bd0018, +0x27bdffe0, 0xafb00010, 0x3c108000, 0xafb20018, +0xafbf001c, 0xafb10014, 0x36120100, 0x9243000b, +0x2402001a, 0x96510008, 0x1462005b, 0x2821, +0x32220001, 0x10400018, 0x0, 0x8e420000, +0x22340, 0x3c02003f, 0x3442ffff, 0x44102b, +0x10400004, 0x3c030040, 0x96420014, 0xa00013b, +0x832021, 0x8e030100, 0x24020100, 0x54620006, +0x96420014, 0x3c028008, 0x94420004, 0x3042000f, +0x22500, 0x96420014, 0x821025, 0xae020080, +0xa00016f, 0x0, 0x3c020800, 0x8c420020, +0x10400028, 0x0, 0xe000d71, 0x0, +0x96020108, 0x9603010c, 0x8f85002c, 0x3042003e, +0x3063ffff, 0x21400, 0x431025, 0xaca20000, +0x8e020100, 0x3c060800, 0x94c64bfe, 0xaca20004, +0x96030116, 0x9604010e, 0x3c022000, 0x31c00, +0x3084ffff, 0x641825, 0xaca30008, 0xc23025, +0x96020110, 0x96030112, 0x24040001, 0x21400, +0x3063ffff, 0x431025, 0xaca2000c, 0x96020114, +0x3042ffff, 0xaca20010, 0x8e020118, 0xaca20014, +0x9202010b, 0x304200ff, 0xaca20018, 0xe000d98, +0xaca6001c, 0x3c020800, 0x8c420040, 0x24420001, +0x3c010800, 0xac220040, 0x3c030800, 0x8c630044, +0x32220002, 0x32240004, 0x24630001, 0x3c010800, +0xac230044, 0x10800008, 0x2282b, 0x2402021, +0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0xa0000c8, 0x27bd0020, 0x8fbf001c, 0x8fb20018, +0x8fb10014, 0x8fb00010, 0xa01021, 0x3e00008, +0x27bd0020, 0x27bdffe0, 0x3c058000, 0xafb10014, +0xafbf0018, 0xafb00010, 0x34b10100, 0x9223000b, +0x24020003, 0x14620043, 0x96300008, 0x32020001, +0x10400016, 0x3c02003f, 0x8e230000, 0x3442ffff, +0x32340, 0x44102b, 0x50400005, 0x24020100, +0x96220014, 0x3c030040, 0xa0001a4, 0x832021, +0x54620006, 0x96220014, 0x3c028008, 0x94420004, +0x3042000f, 0x22500, 0x96220014, 0x821025, +0xaca20080, 0xa0001af, 0x0, 0xe000099, +0x0, 0x3c020800, 0x8c420040, 0x24420001, +0x3c010800, 0xac220040, 0x3c020800, 0x8c420044, +0x32030004, 0x24420001, 0x3c010800, 0xac220044, +0x10600007, 0x32020002, 0x2202021, 0x8fbf0018, +0x8fb10014, 0x8fb00010, 0xa0000c8, 0x27bd0020, +0x10400015, 0x8fbf0018, 0x3c048000, 0x8c830104, +0x3c026020, 0xac430014, 0x8c420004, 0x240301fe, +0x304203ff, 0x1443000c, 0x8fbf0018, 0x8c820100, +0x219c2, 0x2462fffc, 0x2c420008, 0x10400003, +0x24040002, 0x2462fffd, 0x442004, 0x3c026000, +0xac446914, 0x8fbf0018, 0x8fb10014, 0x8fb00010, +0x1021, 0x3e00008, 0x27bd0020, 0x3c048000, +0x8c830100, 0x24020100, 0x50620003, 0x3c028008, +0xd, 0x3c028008, 0x94430004, 0x1021, +0x3063000f, 0x31d00, 0x3e00008, 0xac830080, +0x3c028008, 0x34420080, 0x90420000, 0x3e00008, +0xaf800000, 0x3e00008, 0x1021, 0x27bdffe8, +0x3c028000, 0xafbf0014, 0xafb00010, 0x8c430100, +0xac430020, 0x8c430104, 0xac4300a8, 0x9050010b, +0xe0001e5, 0x321000ff, 0x3c020800, 0x24424b58, +0x101880, 0x2e10001d, 0x16000005, 0x621021, +0xe0001ea, 0x401821, 0xa000205, 0x0, +0x8c420000, 0x40f809, 0x0, 0x401821, +0x3c020800, 0x8c420034, 0x10600005, 0x24440001, +0x3c028000, 0x8c430104, 0x3c026020, 0xac430014, +0x8fbf0014, 0x8fb00010, 0x3c034000, 0x3c028000, +0x27bd0018, 0xac430138, 0x3c010800, 0xac240034, +0x3e00008, 0x0, 0x27bdffe8, 0xafbf0014, +0xafb00010, 0x3c108000, 0x8e020140, 0xe0001e5, +0xae020020, 0xe000399, 0x0, 0x3c040800, +0x24840038, 0x8c820000, 0x3c034000, 0xae030178, +0x8fbf0014, 0x8fb00010, 0x24420001, 0x27bd0018, +0x3e00008, 0xac820000, 0x27bdffe8, 0xafb00010, +0xafbf0014, 0x3c108000, 0x8e020180, 0xe0001e5, +0xae020020, 0x8e030180, 0x24020f00, 0x54620008, +0x3c028008, 0x8e020188, 0x3c0300e0, 0x3042ffff, +0x431025, 0xae020080, 0xa00024a, 0x3c028000, +0x34420080, 0x90420000, 0x24030050, 0x304200ff, +0x14430008, 0x3c028000, 0xe000379, 0x0, +0x14400004, 0x3c028000, 0xe000967, 0x0, +0x3c028000, 0x3c034000, 0xac4301b8, 0x3c020800, +0x8c42003c, 0x8fbf0014, 0x8fb00010, 0x24420001, +0x3c010800, 0xac22003c, 0x3e00008, 0x27bd0018, +0x3e00008, 0x1021, 0x3c058000, 0x34a40100, +0x94820008, 0x30430002, 0x30420004, 0x10400003, +0x0, 0xa0000c8, 0x0, 0x10600005, +0x24040001, 0x3c020800, 0x8c420084, 0xa00026f, +0x24420001, 0x8ca30104, 0x8f82000c, 0x10430008, +0x2021, 0x8ca30104, 0x3c020800, 0x8c420084, +0xaf83000c, 0x24420001, 0x3c010800, 0xac220084, +0x3e00008, 0x801021, 0x27bdffe8, 0x3c036010, +0xafbf0014, 0xafb00010, 0x8c655000, 0x2402ff7f, +0x3c048000, 0xa22824, 0x34a5380c, 0x24020037, +0xac655000, 0xac820008, 0x24020c80, 0xac820024, +0x3c060800, 0x24c607a8, 0x3c020800, 0x24424b58, +0x2405001c, 0x24a5ffff, 0xac460000, 0x4a1fffd, +0x24420004, 0x3c020800, 0x244201ec, 0x3c010800, +0xac224b60, 0x3c020800, 0x24420618, 0x3c010800, +0xac224b64, 0x3c020800, 0x24420d10, 0x3c010800, +0xac224ba0, 0x3c020800, 0x24420464, 0x3c030800, +0x24630954, 0x3c040800, 0x2484095c, 0x3c050800, +0x24a52c94, 0x3c010800, 0xac224bc0, 0x3c020800, +0x24420760, 0x3c010800, 0xac264ba8, 0x3c010800, +0xac254bb4, 0x3c010800, 0xac234bbc, 0x3c010800, +0xac244bc4, 0x3c010800, 0xac224bc8, 0x3c010800, +0xac234b5c, 0x3c010800, 0xac204b68, 0x3c010800, +0xac204b6c, 0x3c010800, 0xac204b70, 0x3c010800, +0xac204b74, 0x3c010800, 0xac204b78, 0x3c010800, +0xac204b7c, 0x3c010800, 0xac204b80, 0x3c010800, +0xac244b84, 0x3c010800, 0xac204b88, 0x3c010800, +0xac204b8c, 0x3c010800, 0xac204b90, 0x3c010800, +0xac204b94, 0x3c010800, 0xac204b98, 0x3c010800, +0xac264b9c, 0x3c010800, 0xac264ba4, 0x3c010800, +0xac204bac, 0x3c010800, 0xac254bb0, 0x3c010800, +0xac234bb8, 0xe00055a, 0x0, 0x3c028000, +0x34420070, 0x8c420000, 0xaf820010, 0x3c030800, +0x8c630020, 0x8f820004, 0x10430004, 0x3c058000, +0xe000d37, 0xaf830004, 0x3c058000, 0x34a90070, +0x8d280000, 0x8f840010, 0x3c070800, 0x8ce700bc, +0x3c060800, 0x8cc600b8, 0x1042023, 0x1021, +0xe43821, 0xc23021, 0xe4202b, 0xc43021, +0x3c010800, 0xac2700bc, 0x3c010800, 0xac2600b8, +0x8cb00000, 0x32020007, 0x1040ffe4, 0xaf880010, +0x8d260000, 0x3c050800, 0x8ca500bc, 0x3c040800, +0x8c8400b8, 0xc83023, 0xa62821, 0x1021, +0xa6302b, 0x822021, 0x862021, 0x32070001, +0x3c010800, 0xac2500bc, 0x3c010800, 0xac2400b8, +0x10e00004, 0x32020002, 0xe0001ec, 0x0, +0x32020002, 0x10400004, 0x32020004, 0xe000217, +0x0, 0x32020004, 0x5040ffc5, 0x3c028000, +0xe00022b, 0x0, 0xa0002d5, 0x3c028000, +0x3c029000, 0x34420001, 0x822025, 0x3c028000, +0xac440020, 0x3c038000, 0x8c620020, 0x440fffe, +0x0, 0x3e00008, 0x0, 0x3c028000, +0x34430001, 0x832025, 0x3e00008, 0xac440020, +0x27bdffe0, 0xafb10014, 0xafb00010, 0x808821, +0xafbf0018, 0xe000315, 0x30b000ff, 0x8f83ffac, +0x2202021, 0x90620025, 0x2028025, 0xa0700025, +0x8c700018, 0x3c028000, 0xe000320, 0x2028024, +0x1600000a, 0x8fbf0018, 0x3c038000, 0x8c6201f8, +0x440fffe, 0x24020002, 0xac7101c0, 0xa06201c4, +0x3c021000, 0xac6201f8, 0x8fbf0018, 0x8fb10014, +0x8fb00010, 0x3e00008, 0x27bd0020, 0x27bdffb8, +0xafbf0044, 0xafb00040, 0x3c078000, 0x8ce60104, +0x8f82ffa8, 0xafa60028, 0x8c450020, 0xafa5002c, +0x8c44003c, 0xafa40030, 0x8c430040, 0xafa30034, +0x8c42004c, 0xafa60010, 0xafa50014, 0xafa20020, +0xafa20038, 0x3c020800, 0x8c420020, 0xafa40018, +0xafa3001c, 0x8cf00100, 0x10400019, 0x8fbf0044, +0xe000d71, 0x0, 0x8f83002c, 0x3c050800, +0x94a54bfe, 0x3c024018, 0xac700000, 0xa22825, +0x8fa20010, 0x24040001, 0xac620004, 0x8fa20014, +0xac620008, 0x8fa20018, 0xac62000c, 0x8fa2001c, +0xac620010, 0x8fa20020, 0xac620014, 0x8fa20024, +0xac620018, 0xe000d98, 0xac65001c, 0x8fbf0044, +0x8fb00040, 0x1021, 0x3e00008, 0x27bd0048, +0x27bdffe8, 0xafbf0010, 0x3c038000, 0x94620184, +0x30420200, 0x10400005, 0x2021, 0xe000fe3, +0x0, 0xa00038f, 0x24040001, 0x8c620188, +0x440000a, 0x8fbf0010, 0x8c620188, 0x3c03ff00, +0x431024, 0x3c030400, 0x14430004, 0x24040001, +0x8f82ffac, 0x90420008, 0x8fbf0010, 0x801021, +0x3e00008, 0x27bd0018, 0x8f82ffb0, 0x24050001, +0xa040001a, 0x3c028000, 0xa000325, 0x8c440140, +0x27bdffe0, 0xafb10014, 0x8f91ffac, 0xafbf001c, +0xafb20018, 0xafb00010, 0x92220000, 0x24030020, +0x304200ff, 0x1043000c, 0x3c028000, 0x92220000, +0x24030030, 0x304200ff, 0x10430007, 0x3c028000, +0x92220000, 0x24030050, 0x304200ff, 0x14430081, +0x8fbf001c, 0x3c028000, 0x90420148, 0x304200ff, +0x2443ffff, 0x2c620005, 0x1040007a, 0x8fbf001c, +0x31080, 0x3c030800, 0x24634ad8, 0x431021, +0x8c420000, 0x400008, 0x0, 0x3c118000, +0x8e240140, 0xe000315, 0x8f92ffac, 0x8e50000c, +0x8e220144, 0x16020002, 0x24020001, 0xae42000c, +0xe000320, 0x8e240140, 0x8e220144, 0x14500006, +0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0xa000f51, 0x27bd0020, 0x8e42000c, 0xa000427, +0x0, 0x96220010, 0x3c048000, 0x8c830144, +0x3042ffff, 0x14620009, 0x0, 0x24020001, +0xa6220010, 0x8c820140, 0xac820200, 0x3c021000, +0xac820238, 0xa00042e, 0x8fbf001c, 0x96220010, +0xa000427, 0x0, 0x92220000, 0x24030020, +0x304200ff, 0x1443000b, 0x3c128000, 0x96220012, +0x3c038000, 0x8c630144, 0x3042ffff, 0x14620018, +0x0, 0x24020001, 0xa6220012, 0xa000400, +0x8fbf001c, 0x8e440140, 0xe000315, 0x0, +0x96220012, 0x8e430144, 0x3050ffff, 0x16030002, +0x24020001, 0xa6220012, 0xe000320, 0x8e440140, +0x8e420144, 0x16020006, 0x8fbf001c, 0x8fb20018, +0x8fb10014, 0x8fb00010, 0xa000393, 0x27bd0020, +0x96220012, 0xa000427, 0x0, 0x96220014, +0x3c038000, 0x8c630144, 0x3042ffff, 0x14620009, +0x0, 0x24020001, 0xa6220014, 0x8fbf001c, +0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa001268, +0x27bd0020, 0x96220014, 0xa000427, 0x0, +0x96220016, 0x3c038000, 0x8c630144, 0x3042ffff, +0x14620008, 0x24020001, 0xa6220016, 0x8fbf001c, +0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa000b0b, +0x27bd0020, 0x96220016, 0x14400006, 0x8fbf001c, +0x3c020800, 0x8c420070, 0x24420001, 0x3c010800, +0xac220070, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x3e00008, 0x27bd0020, 0x27bdffe0, 0x3c028000, +0xafb10014, 0xafbf001c, 0xafb20018, 0xafb00010, +0x34510100, 0x92230009, 0x8c500100, 0x2402001f, +0x106200aa, 0x28620020, 0x10400018, 0x24020038, +0x2862000a, 0x1040000c, 0x2402000b, 0x28620008, +0x1040002c, 0x0, 0x4600100, 0x28620002, +0x14400028, 0x24020006, 0x10620026, 0x8fbf001c, +0xa00054a, 0x8fb20018, 0x10620060, 0x2862000b, +0x144000f7, 0x8fbf001c, 0x2402000e, 0x10620077, +0x8fb20018, 0xa00054a, 0x0, 0x106200d3, +0x28620039, 0x1040000a, 0x24020080, 0x24020036, +0x106200e3, 0x28620037, 0x104000c5, 0x24020035, +0x106200d8, 0x8fbf001c, 0xa00054a, 0x8fb20018, +0x1062002d, 0x28620081, 0x10400006, 0x240200c8, +0x24020039, 0x106200c9, 0x8fbf001c, 0xa00054a, +0x8fb20018, 0x106200a2, 0x8fbf001c, 0xa00054a, +0x8fb20018, 0x3c020800, 0x8c420020, 0x104000d4, +0x8fbf001c, 0xe000d71, 0x0, 0x3c028000, +0x34420100, 0x8c440000, 0x8f83002c, 0x94470008, +0x3c050800, 0x94a54bfe, 0xac640000, 0x8c440004, +0x73c00, 0xe53825, 0xac640004, 0x8c440018, +0x9446000c, 0xac640008, 0x8c45001c, 0x63400, +0x24040001, 0xac65000c, 0x9042000a, 0xc23025, +0xac660010, 0xac600014, 0xac600018, 0xac67001c, +0xa00050c, 0x8fbf001c, 0x3c020800, 0x8c420020, +0x104000b3, 0x8fbf001c, 0xe000d71, 0x0, +0x96240008, 0x3c030800, 0x94634bfe, 0x9625000c, +0x42202, 0x9626000e, 0x8f82002c, 0x42600, +0x832025, 0x52c00, 0x3c030080, 0xa62825, +0x832025, 0xac400000, 0xac400004, 0xac400008, +0xac40000c, 0xac450010, 0xac400014, 0xac400018, +0xac44001c, 0xa00050b, 0x24040001, 0x9622000c, +0x14400017, 0x8f91ffac, 0x92220005, 0x30420010, +0x14400013, 0x0, 0xe000315, 0x2002021, +0x92220005, 0x2002021, 0x34420010, 0xe000320, +0xa2220005, 0x92220000, 0x24030020, 0x304200ff, +0x10430086, 0x2002021, 0x8fbf001c, 0x8fb20018, +0x8fb10014, 0x8fb00010, 0xa00104c, 0x27bd0020, +0xd, 0xa000549, 0x8fbf001c, 0x3c020800, +0x8c420020, 0x1040007a, 0x8fbf001c, 0xe000d71, +0x0, 0x8e220004, 0x8f83002c, 0x9624000c, +0x3c050800, 0x94a54bfe, 0xac620000, 0x3c028008, +0x9442002c, 0x42400, 0x3042ffff, 0x822025, +0x3c02400e, 0xa22825, 0xac640004, 0xac600008, +0xac60000c, 0xac600010, 0xac600014, 0xac600018, +0xac65001c, 0xa00050b, 0x24040001, 0xe000315, +0x2002021, 0x8f92ffb0, 0x2002021, 0xe000320, +0xa640000c, 0x2002021, 0xe000325, 0x24050001, +0x3c020800, 0x8c420020, 0x10400055, 0x8fbf001c, +0xe000d71, 0x0, 0x9622000c, 0x8f83002c, +0x8f84ffac, 0x21400, 0xac700000, 0xac620004, +0xac600008, 0x8c820038, 0x3c050800, 0x94a54bfe, +0xac62000c, 0x8c86003c, 0x3c02401f, 0xa22825, +0xac660010, 0x8e420004, 0x24040001, 0xac620014, +0xac600018, 0xac65001c, 0x8fbf001c, 0x8fb20018, +0x8fb10014, 0x8fb00010, 0xa000d98, 0x27bd0020, +0x8f82ffac, 0x24030020, 0x90420000, 0x304200ff, +0x10430033, 0x8fbf001c, 0xe000f37, 0x0, +0x1040002f, 0x8fbf001c, 0x3c038000, 0x8c6201f8, +0x440fffe, 0x24020002, 0xac7001c0, 0xa06201c4, +0x3c021000, 0xac6201f8, 0xa000549, 0x8fbf001c, +0x2002021, 0x8fbf001c, 0x8fb20018, 0x8fb10014, +0x8fb00010, 0xa000e80, 0x27bd0020, 0x9625000c, +0x2002021, 0x8fbf001c, 0x8fb20018, 0x8fb10014, +0x8fb00010, 0xa000ea5, 0x27bd0020, 0x2002021, +0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa000ed0, +0x27bd0020, 0x9225000d, 0x2002021, 0x8fb20018, +0x8fb10014, 0x8fb00010, 0xa000f21, 0x27bd0020, +0x2002021, 0x8fbf001c, 0x8fb20018, 0x8fb10014, +0x8fb00010, 0xa000ef8, 0x27bd0020, 0x8fbf001c, +0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, +0x27bd0020, 0x3c038000, 0x8c620278, 0x440fffe, +0x24020002, 0xac640240, 0xa0620244, 0x3c021000, +0x3e00008, 0xac620278, 0x411c0, 0x3e00008, +0x24420240, 0xa3800018, 0x3e00008, 0xa3800019, +0x3c038000, 0x8c620278, 0x440fffe, 0x8f82001c, +0xac620240, 0x24020002, 0xa0620244, 0x3c021000, +0x3e00008, 0xac620278, 0x3e00008, 0x0, +0x90830030, 0x24020005, 0x804021, 0x3063003f, +0x4821, 0x14620005, 0x5021, 0x9082004c, +0x9483004e, 0x304900ff, 0x306affff, 0xad00000c, +0xad000010, 0xad000024, 0x95020014, 0x8d05001c, +0x8d040018, 0x3042ffff, 0x491023, 0x21100, +0x237c3, 0x403821, 0x862023, 0xa2102b, +0x822023, 0xa72823, 0xad05001c, 0xad040018, +0xa5090014, 0xa5090020, 0xa50a0016, 0x3e00008, +0xa50a0022, 0x3e00008, 0x0, 0x27bdffd8, +0xafb20018, 0x3c128008, 0xafb40020, 0xafb3001c, +0xafb10014, 0xafbf0024, 0xafb00010, 0x36510100, +0x9222000c, 0x3c140800, 0x929400f7, 0x304300ff, +0x24020001, 0x10620031, 0x809821, 0x24020002, +0x14620034, 0x36500080, 0xe001242, 0x0, +0x9204004c, 0xe000557, 0x3084007f, 0x2621021, +0x2403ff80, 0x431824, 0x3c048000, 0xac830094, +0x92450008, 0x9204004c, 0x3042007f, 0x3c038006, +0x14850007, 0x438021, 0x2402ffff, 0xa2220011, +0x2402ffff, 0xa6220012, 0xa0005ba, 0x2402ffff, +0x96020020, 0xa2220011, 0x96020022, 0xa6220012, +0x8e020024, 0x3c048008, 0xae220014, 0x34850080, +0x90a2004c, 0x34830100, 0xa0620010, 0x8ca2003c, +0xac620018, 0x8c820068, 0xac6200e4, 0x8c820064, +0xac6200e0, 0x8c82006c, 0xac6200e8, 0x24020001, +0xa0a20068, 0xa0005d6, 0x3c048008, 0xe00125b, +0x0, 0x36420080, 0xa0400068, 0xa0005d6, +0x3c048008, 0xa2000068, 0xa2000069, 0xa000612, +0x3c028008, 0x34830080, 0x8c620038, 0x34850100, +0xac62006c, 0x24020001, 0xa0620069, 0x90a200c5, +0x90830008, 0x305100ff, 0x3072007f, 0x1232001b, +0x3c088008, 0xe000557, 0x2202021, 0x2621021, +0x2403ff80, 0x431824, 0x3c048000, 0xac830094, +0x3042007f, 0x3c038006, 0x438021, 0x8e02000c, +0x1040000d, 0x2002021, 0xe000569, 0x0, +0x26220001, 0x305100ff, 0x9203003c, 0x2341026, +0x2102b, 0x21023, 0x3063007f, 0x2228824, +0xa0005e0, 0xa203003c, 0x3c088008, 0x35040100, +0x8c8200d0, 0x35070080, 0xace2003c, 0x8c8200d0, +0xad020000, 0x90e5004c, 0x908600c5, 0x90e3004c, +0x908400c5, 0x2402ff80, 0xa22824, 0x3063007f, +0x308400ff, 0xa62825, 0x64182a, 0x10600002, +0x30a500ff, 0x38a50080, 0xa0e5004c, 0xa1050009, +0x3c028008, 0x9043000e, 0x34440080, 0x3c058000, +0xa043000a, 0x8c830018, 0x3c027fff, 0x3442ffff, +0x621824, 0xac830018, 0x8ca201f8, 0x440fffe, +0x0, 0xacb301c0, 0x8fbf0024, 0x8fb40020, +0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x24020002, 0xa0a201c4, 0x27bd0028, 0x3c021000, +0x3e00008, 0xaca201f8, 0x90a20000, 0x27bdffe0, +0xafb20018, 0x24420001, 0xa0a20000, 0x3c030800, +0x8c6300f4, 0x304200ff, 0xafb10014, 0xafbf001c, +0xafb00010, 0xa08821, 0x14430002, 0x809021, +0xa0a00000, 0xe000557, 0x92240000, 0x8f90001c, +0x2403ff80, 0x2021021, 0x431024, 0x3c038000, +0xac620024, 0xe000557, 0x92240000, 0x2028021, +0x3210007f, 0x3c02800a, 0x2028021, 0xae500000, +0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x3e00008, 0x27bd0020, 0x94820006, 0x90830005, +0x8c85000c, 0x8c860010, 0x8c870018, 0x8c88001c, +0x8c840020, 0x3c010800, 0xa4224bd2, 0x3c010800, +0xa0234bd1, 0x3c010800, 0xac254bd8, 0x3c010800, +0xac264bdc, 0x3c010800, 0xac274be4, 0x3c010800, +0xac284be8, 0x3c010800, 0xac244bec, 0x3e00008, +0x0, 0x3c028008, 0x34420100, 0x8c440034, +0x3c038000, 0x34650400, 0xac640038, 0x8c420038, +0xaf850030, 0xac62003c, 0x3c020005, 0xac620030, +0x0, 0x0, 0x3e00008, 0x0, +0x3c020006, 0x308400ff, 0x822025, 0x3c028000, +0xac440030, 0x0, 0x0, 0x0, +0x3c038000, 0x8c620000, 0x30420010, 0x1040fffd, +0x34620400, 0x3e00008, 0xaf820030, 0x94c20000, +0x3c080800, 0x950800ca, 0x30e7ffff, 0x804821, +0x1021021, 0xa4c20000, 0x94c20000, 0x3042ffff, +0xe2102b, 0x54400001, 0xa4c70000, 0x94a20000, +0x3c030800, 0x8c6300cc, 0x24420001, 0xa4a20000, +0x94a20000, 0x3042ffff, 0x14430007, 0x3c028008, +0x107102b, 0xa4a00000, 0x54400001, 0x1003821, +0xa4c70000, 0x3c028008, 0x34460100, 0x8cc30028, +0x94a20000, 0x3c048000, 0x3042fffe, 0x210c0, +0x621021, 0xac82003c, 0x8c82003c, 0x621823, +0x18600004, 0x0, 0x8cc20024, 0xa0006af, +0x24420001, 0x8cc20024, 0xac820038, 0x3c020050, +0x34420010, 0x3c038000, 0xac620030, 0x0, +0x0, 0x0, 0x8c620000, 0x30420020, +0x1040fffd, 0x0, 0x94a20000, 0x3c048000, +0x30420001, 0x210c0, 0x441021, 0x8c430400, +0xad230000, 0x8c420404, 0xad220004, 0x3c020020, +0x3e00008, 0xac820030, 0x27bdffe0, 0xafb20018, +0xafb10014, 0xafb00010, 0xafbf001c, 0x94c20000, +0xc08021, 0x3c120800, 0x965200c6, 0x24420001, +0xa6020000, 0x96030000, 0x94e20000, 0xe03021, +0x14430005, 0x8fb10030, 0xe000684, 0x2403821, +0xa0006e6, 0x0, 0x8c830004, 0x8c820004, +0x24420040, 0x4610007, 0xac820004, 0x8c820004, +0x4400004, 0x0, 0x8c820000, 0x24420001, +0xac820000, 0x96020000, 0x3042ffff, 0x50520001, +0xa6000000, 0x96220000, 0x24420001, 0xa6220000, +0x3c028008, 0x34420100, 0x96230000, 0x9442003c, +0x14430004, 0x8fbf001c, 0x24020001, 0xa6220000, +0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x3e00008, 0x27bd0020, 0x27bdffe0, 0x3c028008, +0xafbf0018, 0x34420100, 0x8c480034, 0x3c038000, +0x34690400, 0xac680038, 0x8c420038, 0x30e700ff, +0xaf890030, 0xac62003c, 0x3c020005, 0xac620030, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x8c82000c, 0x8c82000c, +0x97830016, 0xad220000, 0x8c820010, 0x604021, +0xad220004, 0x8c820018, 0xad220008, 0x8c82001c, +0xad22000c, 0x8ca20014, 0xad220010, 0x8c820020, +0xad220014, 0x90820005, 0x304200ff, 0x21200, +0xad220018, 0x8ca20018, 0xad22001c, 0x8ca2000c, +0xad220020, 0x8ca20010, 0xad220024, 0x8ca2001c, +0xad220028, 0x8ca20020, 0xad22002c, 0x3402ffff, +0xad260030, 0xad200034, 0x50620001, 0x3408ffff, +0xad280038, 0x50e00011, 0x3c028008, 0x3c048008, +0x34840100, 0x94820050, 0x3042ffff, 0xad22003c, +0x94830044, 0x94850044, 0x24020001, 0x3063ffff, +0x318c2, 0x641821, 0x90640054, 0x30a50007, +0xa21004, 0xa000751, 0x441025, 0x34420100, +0xad20003c, 0x94430044, 0x94440044, 0x3063ffff, +0x318c2, 0x621821, 0x30840007, 0x90650054, +0x24020001, 0x821004, 0x21027, 0x451024, +0xa0620054, 0x0, 0x0, 0x0, +0x3c020006, 0x34420040, 0x3c038000, 0xac620030, +0x0, 0x0, 0x0, 0x8c620000, +0x30420010, 0x1040fffd, 0x3c068008, 0x34c20150, +0x34630400, 0x34c7014a, 0x34c40134, 0x34c50140, +0x34c60144, 0xafa20010, 0xe0006c7, 0xaf830030, +0x8fbf0018, 0x3e00008, 0x27bd0020, 0x8f830014, +0x3c050800, 0x8ca500e8, 0x8f82001c, 0x30633fff, +0x31980, 0x451021, 0x431021, 0x2403ff80, +0x431824, 0x3c058000, 0xaca30028, 0x3042007f, +0x3c03800c, 0x433021, 0x90c2000d, 0x3821, +0x34420010, 0xa0c2000d, 0x8f890014, 0x3c028008, +0x34420100, 0x94430044, 0x91382, 0x30480003, +0x24020001, 0xa4c3000e, 0x1102000b, 0x29020002, +0x10400005, 0x24020002, 0x1100000c, 0x24030001, +0xa000798, 0x1821, 0x11020006, 0x0, +0xa000798, 0x1821, 0x8cc2002c, 0xa000798, +0x24430001, 0x8cc20014, 0x24430001, 0x8cc20018, +0x43102b, 0x14400003, 0x3c038008, 0xa0007a2, +0x24070001, 0x34630100, 0x9462004c, 0x24420001, +0xa462004c, 0x91382, 0x30430003, 0x2c620002, +0x10400009, 0x802821, 0x14600004, 0x0, +0x94c20034, 0xa0007b2, 0x3046ffff, 0x8cc60038, +0xa0007b2, 0x802821, 0x3021, 0x3c040800, +0x24844bcc, 0xa0006fb, 0x0, 0x27bdff90, +0xafb60068, 0xafb50064, 0xafb40060, 0xafb3005c, +0xafb20058, 0xafb10054, 0xafbf006c, 0xafb00050, +0x8c900000, 0x80b021, 0x3c020800, 0x8c4200e8, +0x96040032, 0x8f83001c, 0x2414ff80, 0x30843fff, +0x621821, 0x42180, 0x641821, 0x741024, +0x3c138000, 0xa09021, 0x90a50000, 0xae620028, +0x92040032, 0x3c02800c, 0x3063007f, 0x628821, +0x308400c0, 0x24020040, 0x1482002d, 0xa821, +0x8e350038, 0x8e220018, 0x14400002, 0x24020001, +0xae220018, 0x9202003c, 0x30420020, 0x1440000f, +0x0, 0xe000557, 0xa02021, 0x8f83001c, +0x621821, 0x30640078, 0x3c020080, 0x822025, +0x741824, 0xae630800, 0xae640810, 0x8e220018, +0x8e030008, 0x431021, 0xae220018, 0x8e22002c, +0x8e230018, 0x24420001, 0x62182b, 0x1060003d, +0x0, 0x92420000, 0x24420001, 0xa2420000, +0x3c030800, 0x8c6300f4, 0x304200ff, 0x50430001, +0xa2400000, 0xe000557, 0x92440000, 0x8f90001c, +0x2021021, 0x541024, 0xa0008b8, 0xae620024, +0x92030032, 0x2402ffc0, 0x431024, 0x304200ff, +0x14400005, 0x24020001, 0xae220018, 0x96220034, +0xa00082e, 0x3055ffff, 0x8e220014, 0x24420001, +0xae220018, 0x92020030, 0x21600, 0x21603, +0x441001c, 0x0, 0x96020032, 0x27a40010, +0x802821, 0xa7a20016, 0x96020032, 0x3021, +0x24070001, 0x3042ffff, 0xaf820014, 0xe0006fb, +0xafa0001c, 0x96020032, 0x8f83001c, 0x3c040800, +0x8c8400e8, 0x30423fff, 0x21180, 0x641821, +0x621821, 0x741024, 0xae62002c, 0x3063007f, +0x3c02800e, 0x621821, 0x9062000d, 0x3042007f, +0xa062000d, 0x9222000d, 0x30420010, 0x50400078, +0x92420000, 0x3c028008, 0x34440100, 0x9482004c, +0x8ec30000, 0x3c130800, 0x967300c6, 0x2442ffff, +0xa482004c, 0x94620032, 0x9623000e, 0x3054ffff, +0x3070ffff, 0x3c030800, 0x8c6300d0, 0x701807, +0xa7a30038, 0x9482003e, 0x3063ffff, 0x3042ffff, +0x14620007, 0x0, 0x8c820030, 0x3c038000, +0x24420030, 0xac62003c, 0xa000856, 0x8c82002c, +0x94820040, 0x3042ffff, 0x54620009, 0x27a40040, +0x8c820038, 0x3c038000, 0x24420030, 0xac62003c, +0x8c820034, 0xac620038, 0xa000865, 0x3c038000, +0x27a50038, 0x27a60048, 0x2603821, 0xe000684, +0xa7a00048, 0x8fa30040, 0x3c028000, 0x24630030, +0xac430038, 0x8fa30044, 0xac43003c, 0x3c038000, +0x3c020005, 0xac620030, 0x3c028008, 0x34440100, +0x94820042, 0x34630400, 0x3042ffff, 0x202102b, +0x14400007, 0xaf830030, 0x9482004e, 0x94830042, +0x2021021, 0x431023, 0xa00087b, 0x3043ffff, +0x9483004e, 0x94820042, 0x2631821, 0x501023, +0x621823, 0x3063ffff, 0x3c028008, 0x34440100, +0x9482003c, 0x3042ffff, 0x14430003, 0x0, +0xa00088b, 0x24030001, 0x9482003c, 0x3042ffff, +0x62102b, 0x14400005, 0x8f820030, 0x9482003c, +0x621023, 0x3043ffff, 0x8f820030, 0xac550000, +0xac400004, 0xac540008, 0xac43000c, 0x3c020006, +0x34420010, 0x3c038000, 0xac620030, 0x0, +0x0, 0x0, 0x8c620000, 0x30420010, +0x1040fffd, 0x3c048008, 0x34840100, 0x1018c2, +0x641821, 0x90650054, 0x32020007, 0x24060001, +0x461004, 0x451025, 0xa0620054, 0x94830042, +0x9622000e, 0x50430001, 0xa3860018, 0x92420000, +0x24420001, 0xa2420000, 0x3c030800, 0x8c6300f4, +0x304200ff, 0x50430001, 0xa2400000, 0xe000557, +0x92440000, 0x8f90001c, 0x2403ff80, 0x2021021, +0x431024, 0x3c038000, 0xac620024, 0xe000557, +0x92440000, 0x2028021, 0x3210007f, 0x3c02800a, +0x2028021, 0xaed00000, 0x8fbf006c, 0x8fb60068, +0x8fb50064, 0x8fb40060, 0x8fb3005c, 0x8fb20058, +0x8fb10054, 0x8fb00050, 0x3e00008, 0x27bd0070, +0x27bdffd8, 0xafb3001c, 0xafb20018, 0xafb10014, +0xafb00010, 0xafbf0020, 0x809821, 0xe08021, +0x30b1ffff, 0xe000d71, 0x30d200ff, 0x0, +0x0, 0x0, 0x8f82002c, 0xac510000, +0xac520004, 0xac530008, 0xac40000c, 0xac400010, +0xac400014, 0xac400018, 0x3c030800, 0x94634bfe, +0x2038025, 0xac50001c, 0x0, 0x0, +0x0, 0x24040001, 0x8fbf0020, 0x8fb3001c, +0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa000d98, +0x27bd0028, 0x30a5ffff, 0x30c600ff, 0x24030c80, +0x3c028000, 0xac430024, 0x0, 0x0, +0x0, 0x0, 0x0, 0xa0008c9, +0x0, 0x3c028008, 0x34430100, 0x9462000e, +0x3c080800, 0x950800c6, 0x3046ffff, 0x14c00004, +0x3402ffff, 0x946500da, 0xa00091f, 0x8f84001c, +0x10c20027, 0x0, 0x9462004e, 0x9464003c, +0x3045ffff, 0xa61023, 0xa6182b, 0x3087ffff, +0x10600004, 0x3044ffff, 0xc51023, 0xe21023, +0x3044ffff, 0x88102b, 0x1040000e, 0xe81023, +0x3c028008, 0x34440100, 0x24030001, 0x34420080, +0xa4430016, 0x2402ffff, 0xa482000e, 0x948500da, +0x8f84001c, 0x3021, 0x30a5ffff, 0xa0008ee, +0x3c076020, 0x44102a, 0x10400009, 0x3c028008, +0x34430080, 0x94620016, 0x30420001, 0x10400004, +0x3c028000, 0x9442007e, 0x24420014, 0xa4620016, +0x3e00008, 0x0, 0x27bdffe0, 0x3c028008, +0xafbf001c, 0xafb00018, 0x34420100, 0x94430042, +0x9442004c, 0x10400019, 0x3068ffff, 0x93830018, +0x24020001, 0x14620029, 0x8fbf001c, 0x3c068008, +0x34d00100, 0x810c2, 0x501021, 0x90420054, +0x31030007, 0x34c70148, 0x304200ff, 0x621007, +0x30420001, 0x34c9014e, 0x34c4012c, 0x34c5013e, +0x10400016, 0x34c60142, 0xe0006c7, 0xafa90010, +0x96020042, 0xa00093c, 0x3048ffff, 0x3c028008, +0x34440100, 0x94830044, 0x94820042, 0x1043000f, +0x8fbf001c, 0x94820044, 0xa4820042, 0x94820050, +0xa482004e, 0x8c820038, 0xac820030, 0x94820040, +0xa482003e, 0x9482004a, 0xa4820048, 0x8fbf001c, +0x8fb00018, 0xa0008fa, 0x27bd0020, 0x8fb00018, +0x3e00008, 0x27bd0020, 0x27bdffa0, 0xafb1004c, +0x3c118000, 0xafbf0058, 0xafb30054, 0xafb20050, +0xafb00048, 0x36260188, 0x90c20003, 0x3044007f, +0xa3a40010, 0x8e320180, 0x90c20000, 0x3043007f, +0x24020003, 0x1062003b, 0xaf92001c, 0x28620004, +0x10400006, 0x24020004, 0x24020002, 0x10620009, +0x8fbf0058, 0xa000b03, 0x8fb30054, 0x1062004b, +0x24020005, 0x1062014c, 0x8fbf0058, 0xa000b03, +0x8fb30054, 0x411c0, 0x2421021, 0x2404ff80, +0x24420240, 0x441024, 0x26430040, 0xae220024, +0x3063007f, 0x3c02800a, 0x621821, 0x9062003c, +0xafa3003c, 0x441025, 0xa062003c, 0x8fa3003c, +0x9062003c, 0x30420040, 0x1040016a, 0x8fbf0058, +0x3c108008, 0xa3800018, 0x36100100, 0x8e0200d0, +0x8c630034, 0x27a4003c, 0x27a50010, 0x431021, +0xe0007b4, 0xae0200d0, 0x93a20010, 0x3c038000, +0xa20200c5, 0x8c620278, 0x440fffe, 0x8f82001c, +0xac620240, 0x24020002, 0xa0620244, 0x3c021000, +0xac620278, 0xe00092f, 0x0, 0xa000b02, +0x8fbf0058, 0x3c058008, 0x90c30001, 0x90a2000b, +0x1443014c, 0x8fbf0058, 0x34a40080, 0x8c820018, +0x9082004c, 0x90a20008, 0x8c830018, 0x3c027fff, +0x3442ffff, 0x621824, 0x3c020800, 0x8c4200b4, +0xac830018, 0x3c038000, 0x24420001, 0x3c010800, +0xac2200b4, 0x8c6201f8, 0x440fffe, 0x8f82001c, +0xac6201c0, 0xa000aca, 0x24020002, 0x3c108008, +0x90c30001, 0x9202000b, 0x14430132, 0x8fbf0058, +0x36050110, 0x27a40018, 0xe000e20, 0x24060003, +0x27a40028, 0x360501e0, 0xe000e20, 0x24060003, +0x8fa20028, 0x36030100, 0xae020064, 0x8fa2002c, +0xae020068, 0x8fa20030, 0xae02006c, 0x93a40018, +0x906300c5, 0x2402ff80, 0x821024, 0x431025, +0x305000ff, 0x3084007f, 0x3202007f, 0x82102a, +0x54400001, 0x3a100080, 0xe000557, 0x0, +0x2421021, 0x2403ff80, 0x431024, 0xae220094, +0x93a40018, 0x3c130800, 0x927300f7, 0xe000557, +0x3084007f, 0x2421021, 0x3042007f, 0x3c038006, +0x434021, 0x8fa3001c, 0x2402ffff, 0x10620034, +0xafa80040, 0x93a20019, 0x95030014, 0x304400ff, +0x3063ffff, 0x64182b, 0x10600010, 0x0, +0x95040014, 0x8d07001c, 0x8d060018, 0x3084ffff, +0x442023, 0x42100, 0xe43821, 0x1021, +0xe4202b, 0xc23021, 0xc43021, 0xad07001c, +0xad060018, 0xa000a23, 0x93a20019, 0x95040014, +0x8d07001c, 0x8d060018, 0x3084ffff, 0x822023, +0x42100, 0x1021, 0x801821, 0xc23023, +0xe4202b, 0xc43023, 0xe33823, 0xad07001c, +0xad060018, 0x93a20019, 0x8fa30040, 0xa4620014, +0x97a2001a, 0xa4620016, 0x8fa2001c, 0xac620010, +0x8fa2001c, 0xac62000c, 0x93a20019, 0xa4620020, +0x97a2001a, 0xa4620022, 0x8fa2001c, 0xac620024, +0x3c048008, 0x34830080, 0x8c620038, 0x8fa20020, +0x2008821, 0xac62003c, 0x8fa20020, 0xac820000, +0x93a20018, 0xa062004c, 0x93a20018, 0xa0820009, +0xa0600068, 0x93a20018, 0x10510052, 0x93a40018, +0x3230007f, 0xe000557, 0x2002021, 0x2421021, +0x2407ff80, 0x3046007f, 0x3c038000, 0x471024, +0xac620094, 0x3c028006, 0xc23021, 0x90c2003c, +0xafa60040, 0x2021, 0x471025, 0xa0c2003c, +0x8fa80040, 0x95020002, 0x95030014, 0x8d07001c, +0x3042ffff, 0x3063ffff, 0x8d060018, 0x431023, +0x21100, 0xe23821, 0xe2102b, 0xc43021, +0xc23021, 0xad07001c, 0xad060018, 0x95020002, +0xa5020014, 0xa5000016, 0x8d020008, 0xad020010, +0x8d020008, 0xad02000c, 0x95020002, 0xa5020020, +0xa5000022, 0x8d020008, 0xad020024, 0x9102003c, +0x30420040, 0x1040001a, 0x26220001, 0xa3b00038, +0x3c108008, 0xa3800018, 0x36100100, 0x8e0200d0, +0x8d030034, 0x27a40040, 0x27a50038, 0x431021, +0xe0007b4, 0xae0200d0, 0x93a20038, 0x3c038000, +0xa20200c5, 0x8c620278, 0x440fffe, 0x8f82001c, +0xac620240, 0x24020002, 0xa0620244, 0x3c021000, +0xac620278, 0xe00092f, 0x0, 0x26220001, +0x3043007f, 0x14730004, 0x402021, 0x2403ff80, +0x2231024, 0x432026, 0x93a20018, 0xa000a3f, +0x309100ff, 0x8fa3001c, 0x2402ffff, 0x1062000a, +0x309000ff, 0x24820001, 0x24830001, 0x3042007f, +0x14530005, 0x307000ff, 0x2403ff80, 0x831024, +0x431026, 0x305000ff, 0x3c028008, 0x90420008, +0x2008821, 0x305000ff, 0x12300019, 0x3222007f, +0x211c0, 0x2421021, 0x24420240, 0x2403ff80, +0x431824, 0x3c048000, 0xac830094, 0x3042007f, +0x3c038006, 0x431021, 0x8c43000c, 0x402021, +0x1060000b, 0xafa20040, 0xe000569, 0x0, +0x26230001, 0x2405ff80, 0x3062007f, 0x14530002, +0x2252024, 0x851826, 0xa000aa3, 0x307100ff, +0x3c048008, 0x34840080, 0x8c830018, 0x3c027fff, +0x3442ffff, 0x621824, 0xac830018, 0x3c038000, +0x8c6201f8, 0x440fffe, 0x0, 0xac7201c0, +0x24020002, 0xa06201c4, 0x3c021000, 0xac6201f8, +0xa000b02, 0x8fbf0058, 0x3c048008, 0x90c30001, +0x9082000b, 0x1443002f, 0x8fbf0058, 0x34900080, +0x92020008, 0x30420040, 0x10400020, 0x0, +0x92020008, 0x21600, 0x21603, 0x4410005, +0x2402021, 0xe000ea5, 0x24050093, 0xa000b02, +0x8fbf0058, 0x92020009, 0x24030018, 0x304200ff, +0x1443000d, 0x2402021, 0x24050039, 0xe000e3d, +0x3021, 0xe000315, 0x8f84001c, 0x8f82ffac, +0x24030012, 0xa0430009, 0xe000320, 0x8f84001c, +0xa000b02, 0x8fbf0058, 0x24050036, 0xe000e3d, +0x3021, 0xa000b02, 0x8fbf0058, 0xe000315, +0x2402021, 0x92020005, 0x8f84001c, 0x34420020, +0xe000320, 0xa2020005, 0xe00104c, 0x8f84001c, +0x8fbf0058, 0x8fb30054, 0x8fb20050, 0x8fb1004c, +0x8fb00048, 0x24030c80, 0x3c028000, 0x27bd0060, +0x3e00008, 0xac430024, 0x27bdffe8, 0x3c028008, +0xafb00010, 0xafbf0014, 0x34450100, 0x3c108000, +0x8e020140, 0x94a3000e, 0x3021, 0x402021, +0xaf82001c, 0x3063ffff, 0x3402ffff, 0x10620006, +0x3c076020, 0x2402ffff, 0xa4a2000e, 0x94a500da, +0xe0008ee, 0x30a5ffff, 0x24020c80, 0xae020024, +0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, +0x27bdffc0, 0x3c098000, 0x3c058008, 0xafb70034, +0xafb20020, 0xafbf0038, 0xafb60030, 0xafb5002c, +0xafb40028, 0xafb30024, 0xafb1001c, 0xafb00018, +0x35320100, 0x34a80100, 0x8d270100, 0x8e420014, +0x8d0300d4, 0xb821, 0xa3800018, 0x431023, +0x18400055, 0xaf87001c, 0x8e420014, 0x2403ff80, +0x24e40040, 0xad0200d4, 0x90a60008, 0x910500c5, +0x3084007f, 0x30d3007f, 0x30a200ff, 0x211c0, +0xe21021, 0x24420240, 0xa3a50010, 0x431024, +0x8d1400d0, 0x8d1500d4, 0xad220024, 0x93a30010, +0x3c02800a, 0x822021, 0xafa40014, 0x10730033, +0xb021, 0x8fa30014, 0x27a40014, 0x27a50010, +0x8c620034, 0x2828021, 0x2b01023, 0x440002b, +0x2411ff80, 0x9062003c, 0x2221024, 0x304200ff, +0x1440001b, 0x200a021, 0x9062003c, 0x34420040, +0xa062003c, 0x93a20010, 0x24420001, 0x304300ff, +0xa3a20010, 0x3c020800, 0x8c4200f4, 0x50620001, +0xa3a00010, 0xe000557, 0x93a40010, 0x8f90001c, +0x3c038000, 0x2021021, 0x511024, 0xac620024, +0xe000557, 0x93a40010, 0x2028021, 0x3210007f, +0x3c02800a, 0x2028021, 0xa000b81, 0xafb00014, +0xe0007b4, 0x0, 0x3c028008, 0x34420100, +0xac5000d0, 0x93a30010, 0x24160001, 0xa04300c5, +0x93a20010, 0x1453ffd0, 0x8fa30014, 0x24020001, +0x16c20009, 0x3c038000, 0x8c620278, 0x440fffe, +0x8f82001c, 0xac620240, 0x24020002, 0xa0620244, +0x3c021000, 0xac620278, 0x9242000b, 0x24030002, +0x304200ff, 0x14430072, 0x0, 0x96420008, +0x304300ff, 0x24020082, 0x14620040, 0x24020084, +0x3c028000, 0x34490100, 0x8d22000c, 0x95230006, +0x21602, 0x3063ffff, 0x3044003f, 0x24020027, +0x1082000f, 0xaf830014, 0x28820028, 0x10400008, +0x24020031, 0x24020021, 0x10820009, 0x24020025, +0x10820007, 0x93820019, 0xa000bc0, 0x0, +0x10820007, 0x93820019, 0xa000bc0, 0x0, +0xe00076c, 0x1202021, 0xa000c40, 0x0, +0x3c038000, 0x8c620278, 0x440fffe, 0x8f82001c, +0xac620240, 0x24020002, 0xa0620244, 0x3c021000, +0xac620278, 0xa000c40, 0x0, 0x95230006, +0x91240005, 0x8d25000c, 0x8d260010, 0x8d270018, +0x8d28001c, 0x8d290020, 0x24420001, 0x3c010800, +0xa4234bd2, 0x3c010800, 0xa0244bd1, 0x3c010800, +0xac254bd8, 0x3c010800, 0xac264bdc, 0x3c010800, +0xac274be4, 0x3c010800, 0xac284be8, 0x3c010800, +0xac294bec, 0xa000c40, 0xa3820019, 0x1462000a, +0x24020081, 0x3c028008, 0x34420100, 0x944500da, +0x92460005, 0x8f84001c, 0x30a5ffff, 0x30c600ff, +0xa000c01, 0x3c076021, 0x1462005c, 0x0, +0x9242000a, 0x304300ff, 0x30620020, 0x10400007, +0x30620040, 0x3c028008, 0x34420100, 0x944500da, +0x8f84001c, 0xa000bff, 0x24060040, 0x10400007, +0x31600, 0x3c028008, 0x34420100, 0x944500da, +0x8f84001c, 0xa000bff, 0x24060041, 0x21603, +0x4410046, 0x3c028008, 0x34420100, 0x944500da, +0x8f84001c, 0x24060042, 0x30a5ffff, 0x3c076019, +0xe0008ee, 0x0, 0xa000c40, 0x0, +0x9242000b, 0x24040016, 0x304200ff, 0x10440006, +0x3c068000, 0x9242000b, 0x24030017, 0x304200ff, +0x14430032, 0x0, 0x34c50100, 0x90a2000b, +0x304200ff, 0x1444000b, 0x8021, 0x8ca20020, +0x8ca40020, 0x2403ff80, 0x431024, 0x21140, +0x3084007f, 0x441025, 0x3c032000, 0x431025, +0xacc20830, 0x94a20008, 0x21400, 0x21403, +0x4420001, 0x24100001, 0x94a20008, 0x30420080, +0x5040001a, 0x200b821, 0x94a20008, 0x30422000, +0x50400016, 0x200b821, 0x8ca30018, 0x3c021c2d, +0x344219ed, 0x10620011, 0x200b821, 0x3c020800, +0x8c4200d4, 0x10400005, 0x3c028008, 0x24030004, +0x34420100, 0xa04300ec, 0x3c028008, 0x34420100, +0x944500da, 0x8f84001c, 0x24060006, 0x30a5ffff, +0xe0008ee, 0x3c076021, 0x200b821, 0xe00092f, +0x0, 0x9242000a, 0x30420008, 0x10400004, +0x3c028000, 0xe00121f, 0x0, 0x3c028000, +0x24030c80, 0xac430024, 0x8fbf0038, 0x2e01021, +0x8fb60030, 0x8fb70034, 0x8fb5002c, 0x8fb40028, +0x8fb30024, 0x8fb20020, 0x8fb1001c, 0x8fb00018, +0x3e00008, 0x27bd0040, 0x2402ff80, 0x822024, +0x3c029000, 0x34420007, 0x822025, 0x3c028000, +0xac440020, 0x3c038000, 0x8c620020, 0x440fffe, +0x0, 0x3e00008, 0x0, 0x3c038000, +0x2402ff80, 0x822024, 0x34620007, 0x822025, +0xac640020, 0x8c620020, 0x440fffe, 0x0, +0x3e00008, 0x0, 0x3c028008, 0x24030005, +0x34420100, 0xa04300ec, 0x3c028000, 0x8c420100, +0x3c038000, 0xaf82001c, 0x8c620278, 0x440fffe, +0x8f82001c, 0xac620240, 0x24020002, 0xa0620244, +0x3c021000, 0xac620278, 0x3e00008, 0x0, +0x27bdffe8, 0x3c068000, 0xafbf0010, 0x34c50100, +0x94a20008, 0x304400ff, 0x38830082, 0x38820084, +0x2c630001, 0x2c420001, 0x621825, 0x10600030, +0x24020083, 0x93820019, 0x50400039, 0x8fbf0010, +0x3c020800, 0x90424bd8, 0x8cc40100, 0x3c070800, +0x94e74bd2, 0x3046003f, 0x38c30032, 0x38c2003f, +0x2c630001, 0x2c420001, 0x621825, 0xaf84001c, +0xaf870014, 0xa3800019, 0x14600006, 0xa02021, +0x24020020, 0x14c20011, 0x3402ffff, 0x14e2000f, +0x0, 0x24020020, 0x14c20005, 0x0, +0x8ca30014, 0x2402ffff, 0x1062000a, 0x0, +0x3c040800, 0x24844bcc, 0x3021, 0xe0006fb, +0x24070001, 0xa000cb6, 0x0, 0xe00076c, +0x0, 0xe00092f, 0x0, 0x24030c80, +0x3c028000, 0xac430024, 0xa000cef, 0x8fbf0010, +0x14820006, 0x2482ff80, 0x8cc30104, 0x3c026020, +0xac430014, 0xa000cef, 0x8fbf0010, 0x304200ff, +0x2c420002, 0x10400004, 0x24020022, 0x8fbf0010, +0xa000b25, 0x27bd0018, 0x14820003, 0x8fbf0010, +0xa000c6f, 0x27bd0018, 0x3c020800, 0x8c420020, +0x1040001d, 0x24020018, 0x90a30009, 0x14620003, +0x24020016, 0xa000cdb, 0x24030008, 0x14620007, +0x24020017, 0x24030012, 0x3c028008, 0x34420080, +0xa0430009, 0xa000ce8, 0x94a70008, 0x54620007, +0x94a70008, 0x8f82ffac, 0x2404fffe, 0x90430005, +0x641824, 0xa0430005, 0x94a70008, 0x90a6001b, +0x8ca40000, 0x94a50006, 0x8fbf0010, 0x73c00, +0xa0008c9, 0x27bd0018, 0x3e00008, 0x27bd0018, +0x3c050800, 0x94a54c0a, 0x3c030800, 0x8c634c14, +0x3c048000, 0x30a2ffff, 0x230c0, 0x2402fff0, +0xc21024, 0x621821, 0xac83003c, 0x3c020800, +0x8c424c10, 0x3c038000, 0xac820038, 0x3c020050, +0x34420010, 0xac620030, 0x0, 0x0, +0x0, 0x8c620000, 0x30420020, 0x1040fffd, +0x30c20008, 0x10400009, 0x3c028000, 0x8c620408, +0x8c63040c, 0x3c010800, 0xac224c00, 0x3c010800, +0xac234c04, 0xa000d1b, 0x3c030020, 0x8c430400, +0x8c420404, 0x3c010800, 0xac234c00, 0x3c010800, +0xac224c04, 0x3c030020, 0x3c028000, 0xac430030, +0x3c078000, 0x8ce20030, 0x431024, 0x1440fffd, +0x0, 0x3c030800, 0x94634c08, 0x3c020800, +0x94424c0c, 0x3c060800, 0x94c64c0e, 0x24a50001, +0x621821, 0x30a4ffff, 0x3c020040, 0xace20030, +0x3c010800, 0xa4234c08, 0x3c010800, 0xa4254c0a, +0x14860003, 0x0, 0x3c010800, 0xa4204c0a, +0x3e00008, 0x0, 0x27bdffe8, 0x3c040800, +0x24844bf0, 0x3c05800a, 0xafbf0010, 0xe000e20, +0x2406000a, 0x3c020800, 0x94424bf2, 0x3c030800, +0x94634c0e, 0x3042000f, 0x24420003, 0x431804, +0x24027fff, 0x43102b, 0x10400002, 0xaf830028, +0xd, 0xe000cf1, 0x0, 0x3c020800, +0x94424bf4, 0x3c030800, 0x94634bfa, 0x8fbf0010, +0x3042000f, 0x21500, 0x621825, 0x27bd0018, +0x3c028000, 0x3e00008, 0xac4300a0, 0x3c02800a, +0x94430006, 0x3c020800, 0x94424bfa, 0x3c010800, +0xa4234bf6, 0x431023, 0x8f830028, 0x3042ffff, +0x43102b, 0x3e00008, 0x38420001, 0x27bdffe8, +0xafbf0010, 0x3c02800a, 0x94420006, 0x3c010800, +0xa4224bf6, 0xe000d58, 0x0, 0x5440fffa, +0x3c02800a, 0x8fbf0010, 0x3e00008, 0x27bd0018, +0x27bdffe8, 0xafbf0010, 0xe000d58, 0x0, +0x10400003, 0x0, 0xe000d64, 0x0, +0x3c020800, 0x8c424c00, 0x3c038000, 0x8fbf0010, +0xac620038, 0x3c020800, 0x8c424c04, 0x34640400, +0x27bd0018, 0xac62003c, 0x3c020005, 0xac620030, +0xaf84002c, 0x3e00008, 0xaf800024, 0x8f820024, +0x3c030006, 0x21140, 0x431025, 0x3c038000, +0xac620030, 0x0, 0x0, 0x0, +0x8c620000, 0x30420010, 0x1040fffd, 0x34620400, +0xaf82002c, 0x3e00008, 0xaf800024, 0x3c060800, +0x8cc64c04, 0x8f850024, 0x8f83002c, 0x3c020800, +0x94424bfa, 0x27bdffe0, 0x24a50001, 0x24630020, +0x24420001, 0x24c70020, 0xafb10014, 0xafb00010, +0xafbf0018, 0xaf850024, 0xaf83002c, 0x3c010800, +0xa4224bfa, 0x309000ff, 0x3c010800, 0xac274c04, +0x4c10008, 0x8821, 0x4e00006, 0x0, +0x3c020800, 0x8c424c00, 0x24420001, 0x3c010800, +0xac224c00, 0x3c040800, 0x94844c08, 0x3c020800, +0x94424bfa, 0x2e030001, 0x441026, 0x2c440001, +0x831824, 0x10600004, 0x10102b, 0x24020001, +0xaf820020, 0x10102b, 0x821025, 0x14400006, +0x8f820020, 0x14400004, 0x8f830024, 0x24020010, +0x1462000f, 0x0, 0xe000d88, 0x24110001, +0x3c030800, 0x94634bfa, 0x3c020800, 0x94424c08, +0x14620003, 0x0, 0xe000cf1, 0x0, +0x16000003, 0x0, 0xe000d71, 0x0, +0x3c030800, 0x94634bfe, 0x3c020800, 0x94424bfc, +0x24630001, 0x3064ffff, 0x3c010800, 0xa4234bfe, +0x14820003, 0x0, 0x3c010800, 0xa4204bfe, +0x1200000b, 0x0, 0x3c020800, 0x94424bf4, +0x3c030800, 0x94634bfa, 0x21500, 0x621825, +0x3c028000, 0xac4300a0, 0xa000df7, 0xaf800020, +0xe000d58, 0x0, 0x10400004, 0x2201021, +0xe000d64, 0x0, 0x2201021, 0x8fbf0018, +0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, +0x3e00008, 0x0, 0x8f820034, 0x3c030006, +0x21140, 0x431025, 0x3c038000, 0xac620030, +0x0, 0x0, 0x0, 0x8c620000, +0x30420010, 0x1040fffd, 0x34620400, 0xaf820030, +0x3e00008, 0xaf800034, 0x3e00008, 0x1021, +0x3e00008, 0x0, 0x3084ffff, 0x30a5ffff, +0x1821, 0x10800007, 0x0, 0x30820001, +0x10400002, 0x42042, 0x651821, 0xa000e16, +0x52840, 0x3e00008, 0x601021, 0x10c00006, +0x24c6ffff, 0x8ca20000, 0x24a50004, 0xac820000, +0xa000e20, 0x24840004, 0x3e00008, 0x0, +0x10a00008, 0x24a3ffff, 0xac860000, 0x0, +0x0, 0x2402ffff, 0x2463ffff, 0x1462fffa, +0x24840004, 0x3e00008, 0x0, 0x3c028008, +0x34420080, 0x24030001, 0xac43000c, 0xa4430010, +0xa4430012, 0xa4430014, 0x3e00008, 0xa4430016, +0x27bdffd8, 0x24820080, 0x2407ff80, 0x3043007f, +0xafb00010, 0x808021, 0x472024, 0x3c020800, +0x8c420020, 0x3c08800e, 0xafb3001c, 0xafb20018, +0xafb10014, 0xafbf0020, 0x3c098000, 0x681821, +0x30b100ff, 0x30d200ff, 0x10400029, 0x9821, +0x26020100, 0xad24002c, 0x472824, 0x3042007f, +0x482021, 0x90620000, 0x24030050, 0x304200ff, +0x14430004, 0x0, 0xad25002c, 0x948200da, +0x3053ffff, 0xe000d71, 0x0, 0x3c030800, +0x94634bfe, 0x8f82002c, 0x112c00, 0xa32825, +0x122400, 0x3c034000, 0x34840001, 0xa32825, +0xac500000, 0x8fbf0020, 0xac400004, 0x8fb20018, +0xac530008, 0x8fb10014, 0xac40000c, 0x8fb3001c, +0xac440010, 0x8fb00010, 0xac400014, 0x24040001, +0xac400018, 0x27bd0028, 0xa000d98, 0xac45001c, +0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, +0x8fb00010, 0x3e00008, 0x27bd0028, 0x3c068000, +0x34c20100, 0x9043000f, 0x24020010, 0x1062000e, +0x28650011, 0x10a00007, 0x24020012, 0x24020008, +0x2405003a, 0x10620006, 0x3021, 0x3e00008, +0x0, 0x24050035, 0x1462fffc, 0x3021, +0xa000e3d, 0x0, 0x8cc20074, 0x8f83ffac, +0x24420fa0, 0x3e00008, 0xac62000c, 0x27bdffe8, +0xafbf0010, 0xe000325, 0x24050001, 0x3c048008, +0x8fbf0010, 0x24020001, 0x34830080, 0xa4620012, +0x27bd0018, 0x24020001, 0x3e00008, 0xa080001a, +0x27bdffe0, 0xafb20018, 0xafb10014, 0xafb00010, +0xafbf001c, 0x30b2ffff, 0xe000315, 0x808821, +0x3c028008, 0x34500080, 0x92020009, 0x24030004, +0x304200ff, 0x1443000c, 0x3c028008, 0x12400008, +0x2402000a, 0xe000e34, 0x0, 0x92020005, +0x2403fffe, 0x431024, 0xa2020005, 0x24020012, +0xa2020009, 0x3c028008, 0x34420080, 0x2202021, +0xe000320, 0xa0400027, 0x16400003, 0x2202021, +0xe000e98, 0x0, 0x2202021, 0x324600ff, +0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x24050038, 0xa000e3d, 0x27bd0020, 0x27bdffe0, +0xafbf001c, 0xafb20018, 0xafb10014, 0xafb00010, +0xe000315, 0x808021, 0xe000e34, 0x0, +0x3c028008, 0x34450080, 0x90a20009, 0x24120018, +0x305100ff, 0x12320003, 0x2002021, 0x24020012, +0xa0a20009, 0x90a20005, 0x2403fffe, 0x431024, +0xe000320, 0xa0a20005, 0x2002021, 0x24050020, +0x16320007, 0x3021, 0x8fbf001c, 0x8fb20018, +0x8fb10014, 0x8fb00010, 0xa000325, 0x27bd0020, +0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x24050039, 0xa000e3d, 0x27bd0020, 0x27bdffe8, +0x3c028000, 0xafb00010, 0xafbf0014, 0x34420100, +0x9442000c, 0x24050036, 0x808021, 0x14400012, +0x304600ff, 0xe000315, 0x0, 0x3c028008, +0x34420080, 0x24030012, 0xa0430009, 0x90430005, +0x34630010, 0xe000e34, 0xa0430005, 0xe000320, +0x2002021, 0x2002021, 0xe000325, 0x24050020, +0xa000f15, 0x0, 0xe000e3d, 0x0, +0xe000315, 0x2002021, 0x3c028008, 0x9043001b, +0x2405ff9f, 0x2002021, 0x651824, 0x8fbf0014, +0x8fb00010, 0xa043001b, 0xa000320, 0x27bd0018, +0x27bdffe0, 0xafbf0018, 0xafb10014, 0xafb00010, +0x30b100ff, 0xe000315, 0x808021, 0x3c028008, +0x24030012, 0x34420080, 0xe000e34, 0xa0430009, +0xe000320, 0x2002021, 0x2002021, 0x2203021, +0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x24050035, +0xa000e3d, 0x27bd0020, 0x3c048008, 0x9083000e, +0x9082000a, 0x1443000b, 0x2821, 0x8f82ffac, +0x24030050, 0x24050001, 0x90420000, 0x304200ff, +0x14430004, 0x0, 0x9082000e, 0x24420001, +0xa082000e, 0x3e00008, 0xa01021, 0x3c038000, +0x8c6201f8, 0x440fffe, 0x24020002, 0xac6401c0, +0xa06201c4, 0x3c021000, 0x3e00008, 0xac6201f8, +0x27bdffe0, 0xafb20018, 0x3c128008, 0xafb10014, +0xafbf001c, 0xafb00010, 0x36510080, 0x92220009, +0x2403000a, 0x304200ff, 0x1443003a, 0x0, +0x8e430004, 0x8e220038, 0x5062007e, 0x8fbf001c, +0x92220000, 0x24030050, 0x304200ff, 0x14430025, +0x3c028000, 0x8c420140, 0x8e430004, 0x36420100, +0x2202821, 0xac43001c, 0x9622005c, 0x8e230038, +0x3042ffff, 0x21040, 0x621821, 0xae23001c, +0x8e430004, 0x8e240038, 0x9622005c, 0x641823, +0x3042ffff, 0x31843, 0x21040, 0x43102a, +0x10400006, 0x0, 0x8e420004, 0x8e230038, +0x431023, 0xa000f83, 0x22043, 0x9622005c, +0x3042ffff, 0x22040, 0x3c028008, 0x34430100, +0x34420080, 0xaca4002c, 0xa0400024, 0x24020001, +0xa062000c, 0xe000f37, 0x0, 0x10400051, +0x8fbf001c, 0x3c028000, 0x8c440140, 0x8fbf001c, +0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa000f48, +0x27bd0020, 0x92220009, 0x24030010, 0x304200ff, +0x14430004, 0x3c028000, 0x8c440140, 0xa000fc5, +0x2821, 0x92220009, 0x24030016, 0x304200ff, +0x14430006, 0x24020014, 0xa2220009, 0x3c028000, +0x8c440140, 0xa000fd8, 0x8fbf001c, 0x8e220038, +0x8e23003c, 0x431023, 0x4410032, 0x8fbf001c, +0x92220027, 0x24420001, 0xa2220027, 0x92220027, +0x3c030800, 0x8c630048, 0x304200ff, 0x14430016, +0x3c108000, 0x92220009, 0x24030004, 0x304200ff, +0x14430009, 0x3c028000, 0x8c440140, 0x8fbf001c, +0x8fb20018, 0x8fb10014, 0x8fb00010, 0x24050093, +0xa000ea5, 0x27bd0020, 0x8c440140, 0x24050093, +0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0xa000f21, 0x27bd0020, 0x8e040140, 0xe000315, +0x0, 0x8e420004, 0x2442ffff, 0xae420004, +0x8e22003c, 0x2442ffff, 0xae22003c, 0xe000320, +0x8e040140, 0x8e040140, 0x8fbf001c, 0x8fb20018, +0x8fb10014, 0x8fb00010, 0x24050004, 0xa000325, +0x27bd0020, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x3e00008, 0x27bd0020, 0x3c068000, 0x8cc20188, +0x3c038008, 0x34650080, 0x9063000e, 0x21402, +0x304400ff, 0x306300ff, 0x1464000e, 0x3c028008, +0x90a20026, 0x304200ff, 0x10440009, 0x8f82ffac, +0xa0a40026, 0x24030050, 0x90420000, 0x304200ff, +0x14430006, 0x0, 0xa00058c, 0x8cc40180, +0x3c028008, 0x34420080, 0xa0440026, 0x3e00008, +0x0, 0x27bdffe0, 0x30e700ff, 0xafb20018, +0xafbf001c, 0xafb10014, 0xafb00010, 0x809021, +0x14e00006, 0x30c600ff, 0x0, 0xd, +0x0, 0xa001037, 0x24000117, 0x3c038008, +0x9062000e, 0x304200ff, 0x14460023, 0x34620080, +0x90420026, 0x304200ff, 0x1446001f, 0x0, +0x9062000f, 0x304200ff, 0x1446001b, 0x0, +0x9062000a, 0x304200ff, 0x14460003, 0x8f90ffac, +0xd, 0x8f90ffac, 0x8f82ffb0, 0x3c118000, +0xae05003c, 0xac450000, 0xa066000a, 0xe000315, +0x8e240100, 0xa2000024, 0xe000320, 0x8e240100, +0x3c038000, 0x8c6201f8, 0x440fffe, 0x24020002, +0xac7201c0, 0xa06201c4, 0x3c021000, 0xac6201f8, +0xa001038, 0x8fbf001c, 0x0, 0xd, +0x0, 0x24000140, 0x8fbf001c, 0x8fb20018, +0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, +0x8f83ffac, 0x3c028000, 0x8c440100, 0x34420100, +0x8c65003c, 0x9046001b, 0xa000ffe, 0x24070001, +0x3c028008, 0x9043000e, 0x9042000a, 0x431026, +0x304200ff, 0x3e00008, 0x2102b, 0x27bdffe0, +0x3c028008, 0xafb10014, 0xafb00010, 0xafbf0018, +0x34500080, 0x92020005, 0x24030030, 0x30420030, +0x14430084, 0x808821, 0x3c020800, 0x8c420020, +0x10400081, 0x8fbf0018, 0xe000d71, 0x0, +0x8f86002c, 0xacd10000, 0x92020008, 0x92030009, +0x304200ff, 0x21200, 0x306300ff, 0x431025, +0xacc20004, 0x9202004d, 0x21600, 0x21603, +0x4410005, 0x0, 0x3c030800, 0x8c630048, +0xa001076, 0x3c108008, 0x92020008, 0x30420040, +0x14400003, 0x1821, 0x92020027, 0x304300ff, +0x3c108008, 0x36110080, 0x9222004d, 0x31e00, +0x3c050800, 0x94a54bfe, 0x304200ff, 0x21400, +0x621825, 0xacc30008, 0x8e230030, 0x3c02c00b, +0xa22825, 0xacc3000c, 0x8e220034, 0x2021, +0xacc20010, 0x8e220038, 0xacc20014, 0x8e22003c, +0xacc20018, 0xe000d98, 0xacc5001c, 0x8e020004, +0x8f84002c, 0x3c058000, 0xac820000, 0x8e220020, +0xac820004, 0x8e22001c, 0xac820008, 0x8e220058, +0x8ca30074, 0x431021, 0xac82000c, 0x8e22002c, +0xac820010, 0x8e220040, 0x8e230044, 0x21400, +0x431025, 0xac820014, 0x9222004d, 0x24030080, +0x304200ff, 0x14430003, 0x0, 0xa0010b8, +0xac800018, 0x8e23000c, 0x24020001, 0x1062000e, +0x2402ffff, 0x92220008, 0x30420040, 0x1440000a, +0x2402ffff, 0x8e23000c, 0x8ca20074, 0x621823, +0x3c020800, 0x621024, 0x14400002, 0x2821, +0x602821, 0x51043, 0xac820018, 0x3c020800, +0x94424bfe, 0x3c03c00c, 0x2021, 0x431025, +0x8f83002c, 0xe000d98, 0xac62001c, 0x3c048008, +0x34820100, 0x8c420000, 0x8f83002c, 0x34840080, +0x3c060800, 0x94c64bfe, 0xac620000, 0xac600004, +0x8c850048, 0x3c02400d, 0xc23025, 0xac650008, +0xac60000c, 0xac600010, 0x90820005, 0x8fbf0018, +0x8fb10014, 0x21600, 0xac620014, 0x8fb00010, +0xac600018, 0x24040001, 0xac66001c, 0xa000d98, +0x27bd0020, 0x8fbf0018, 0x8fb10014, 0x8fb00010, +0x3e00008, 0x27bd0020, 0x3c028000, 0x9443007c, +0x3c028008, 0x34460100, 0x308400ff, 0x3065ffff, +0x24020005, 0x24a34650, 0xa0c4000c, 0x5482000c, +0x3065ffff, 0x90c2000d, 0x2c420007, 0x10400007, +0x24a30a00, 0x90c3000d, 0x24020014, 0x621004, +0xa21021, 0xa0010f5, 0x3045ffff, 0x3065ffff, +0x3c028008, 0x34420080, 0x3e00008, 0xa4450014, +0x3c038008, 0x34680080, 0xad050038, 0x34670100, +0x8ce2001c, 0x308400ff, 0xa21023, 0x18400003, +0x30c600ff, 0x24a2fffc, 0xace2001c, 0x30820001, +0x50400008, 0x3c038008, 0x8d02003c, 0xa21023, +0x4410012, 0x24040005, 0x8c620004, 0x10a2000f, +0x3c038008, 0x8c620004, 0x14a20018, 0x0, +0x3c020800, 0x8c4200d8, 0x30420020, 0x10400009, +0x3c028008, 0x34620080, 0x90630008, 0x9042004c, +0x14430004, 0x3c028008, 0x24040004, 0xa0010df, +0x0, 0x34430080, 0x34420100, 0xa040000c, +0x24020001, 0xa4620014, 0x10c00004, 0x3c028000, +0x8c440100, 0xa000f48, 0x0, 0x3e00008, +0x0, 0x27bdffe8, 0xa61823, 0xafbf0010, +0x1860004e, 0x308800ff, 0x3c028008, 0x34470080, +0xa0e00024, 0x34440100, 0xa0e00027, 0x8c82001c, +0xa21023, 0x440002b, 0x0, 0x8ce2003c, +0x94e3005c, 0x8ce4002c, 0x453023, 0x3063ffff, +0xc31821, 0x83202b, 0x10800004, 0xe01821, +0x8ce2002c, 0xa001148, 0xa21021, 0x94e2005c, +0x3042ffff, 0xc21021, 0xa21021, 0xac62001c, +0x3c028008, 0x34470080, 0x94e2005c, 0x8ce3001c, +0x3042ffff, 0x21040, 0xa21021, 0x43102b, +0x10400003, 0x0, 0xa001159, 0x8ce2001c, +0x94e2005c, 0x3042ffff, 0x21040, 0xa21021, +0xace2001c, 0x3c028008, 0x34420100, 0x8fbf0010, +0x1002021, 0x24060001, 0xa040000c, 0xa0010f9, +0x27bd0018, 0x8ce2001c, 0x461023, 0x43102b, +0x54400001, 0xace5001c, 0x94e2005c, 0x3042ffff, +0x62102b, 0x14400007, 0x24020002, 0x94e2005c, +0x8ce3001c, 0x3042ffff, 0x621821, 0xace3001c, +0x24020002, 0xace50038, 0xe000f37, 0xa082000c, +0x10400018, 0x8fbf0010, 0x3c028000, 0x8c440100, +0x8fbf0010, 0xa000f48, 0x27bd0018, 0x31020010, +0x10400010, 0x8fbf0010, 0x3c028008, 0x34450080, +0x8ca3001c, 0x94a2005c, 0x661823, 0x3042ffff, +0x621821, 0x3c023fff, 0x3444ffff, 0x83102b, +0x54400001, 0x801821, 0xc31021, 0xaca2001c, +0x8fbf0010, 0x3e00008, 0x27bd0018, 0x27bdffe8, +0xc04021, 0xa63023, 0xafbf0010, 0x18c00026, +0x308a00ff, 0x3c028008, 0x34490080, 0x8d24001c, +0x8d23002c, 0x882023, 0x64182b, 0x1060000f, +0x34470100, 0x8ce20020, 0x461021, 0xace20020, +0x8ce20020, 0x44102b, 0x1440000b, 0x3c023fff, +0x8ce20020, 0x441023, 0xace20020, 0x9522005c, +0x3042ffff, 0xa0011ae, 0x822021, 0xace00020, +0x862021, 0x3c023fff, 0x3443ffff, 0x64102b, +0x54400001, 0x602021, 0x3c028008, 0x34420080, +0x851821, 0xac43001c, 0xa0400024, 0xa0400027, +0xa0011fd, 0x8fbf0010, 0x31420010, 0x10400040, +0x8fbf0010, 0x3c068008, 0x34c40080, 0x8c82003c, +0x481023, 0x5840003b, 0x1402021, 0x90820024, +0x24420001, 0xa0820024, 0x90820024, 0x3c030800, +0x8c630024, 0x304200ff, 0x43102b, 0x54400034, +0x8fbf0010, 0x34c20100, 0x8c42001c, 0xa21023, +0x1840002f, 0x8fbf0010, 0x8cc30004, 0x9482005c, +0x681823, 0x3042ffff, 0x31843, 0x21040, +0x43102a, 0x10400005, 0x0, 0x8cc20004, +0x481023, 0xa0011e3, 0x21043, 0x9482005c, +0x3042ffff, 0x21040, 0x3c068008, 0xac82002c, +0x34c50080, 0x94a2005c, 0x8ca4002c, 0x94a3005c, +0x3042ffff, 0x21040, 0x822021, 0x3063ffff, +0x832021, 0x1041021, 0xaca2001c, 0x8cc20004, +0x34c60100, 0xacc2001c, 0x24020002, 0xe000f37, +0xa0c2000c, 0x1040000a, 0x8fbf0010, 0x3c028000, +0x8c440100, 0x8fbf0010, 0xa000f48, 0x27bd0018, +0x1402021, 0x24060001, 0xa0010f9, 0x27bd0018, +0x3e00008, 0x27bd0018, 0x3c098008, 0x352a0080, +0x8d42003c, 0x308300ff, 0x352b0100, 0x461023, +0x30e700ff, 0x18400006, 0x602021, 0x24020001, +0xa160000c, 0xa160000d, 0xa001190, 0xa5420014, +0x24020005, 0x35290100, 0x3021, 0x14e20008, +0xa1400027, 0x9122000d, 0x2c420006, 0x10400004, +0x0, 0x9122000d, 0x24420001, 0xa122000d, +0xa0010f9, 0x0, 0x3c038008, 0x3c028000, +0x34420100, 0x34640080, 0x34630100, 0x9045000a, +0x8c480014, 0x8c890038, 0x9062000c, 0x30aa00ff, +0x1281823, 0x304700ff, 0x1c60000e, 0x2ce40006, +0x24020001, 0xe21004, 0x1080000a, 0x30430003, +0x1402021, 0x1002821, 0x1203021, 0x14600007, +0x304b000c, 0x15600007, 0x30420030, 0x14400007, +0x0, 0x3e00008, 0x0, 0xa001190, +0x0, 0xa00112a, 0x0, 0xa001203, +0x0, 0x3c038008, 0x34640100, 0x24020003, +0xa082000c, 0x8c620004, 0x3e00008, 0xac82001c, +0x3c058008, 0x34a30080, 0x90620027, 0x34a50100, +0x24060043, 0x24420001, 0xa0620027, 0x90630027, +0x3c020800, 0x8c420048, 0x306300ff, 0x14620004, +0x3c076021, 0x94a500da, 0xa0008ee, 0x30a5ffff, +0x3e00008, 0x0, 0x27bdffe8, 0xafbf0010, +0x3c028000, 0xe001249, 0x8c440180, 0x3c028008, +0x34430100, 0xa060000c, 0x8c420004, 0x8fbf0010, +0x27bd0018, 0x3e00008, 0xac62001c, 0x27bdffe0, +0x3c028008, 0xafbf0018, 0xafb10014, 0xafb00010, +0x34450080, 0x34460100, 0x3c088000, 0x8d090140, +0x90c3000c, 0x8ca4003c, 0x8ca20038, 0x14820038, +0x306700ff, 0x9502007c, 0x90a30027, 0x14600009, +0x3045ffff, 0x24020005, 0x54e20008, 0x3c048008, +0x90c2000d, 0x24420001, 0xa0c2000d, 0xa001284, +0x3c048008, 0xa0c0000d, 0x3c048008, 0x34820100, +0x9042000c, 0x24030005, 0x304200ff, 0x1443000a, +0x24a205dc, 0x34830080, 0x90620027, 0x2c420007, +0x50400005, 0x24a20a00, 0x90630027, 0x24020014, +0x621004, 0xa21021, 0x3c108008, 0x36100080, +0x3045ffff, 0x1202021, 0xe001249, 0xa6050014, +0x9602005c, 0x8e030038, 0x3c118000, 0x3042ffff, +0x21040, 0x621821, 0xae03001c, 0xe000315, +0x8e240140, 0x92020025, 0x34420040, 0xa2020025, +0xe000320, 0x8e240140, 0x8e240140, 0x8fbf0018, +0x8fb10014, 0x8fb00010, 0xa000f48, 0x27bd0020, +0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x3e00008, +0x27bd0020, 0x0 }; +u32 bce_COM_b09FwData[(0x0/4) + 1] = { 0x0 }; +u32 bce_COM_b09FwRodata[(0x30/4) + 1] = { +0x80080100, 0x80080080, 0x80080000, +0x80080240, 0x8000ef0, 0x8000f48, 0x8000f8c, +0x8001020, 0x8001064, 0x80080100, 0x80080080, +0x80080000, 0x0 }; +u32 bce_COM_b09FwBss[(0xc0/4) + 1] = { 0x0 }; +u32 bce_COM_b09FwSbss[(0x38/4) + 1] = { 0x0 }; +u32 bce_COM_b09FwSdata[(0x0/4) + 1] = { 0x0 }; + + +int bce_RXP_b09FwReleaseMajor = 0x1; +int bce_RXP_b09FwReleaseMinor = 0x0; +int bce_RXP_b09FwReleaseFix = 0x0; +u32 bce_RXP_b09FwStartAddr = 0x080031d8; +u32 bce_RXP_b09FwTextAddr = 0x08000000; +int bce_RXP_b09FwTextLen = 0x7908; +u32 bce_RXP_b09FwDataAddr = 0x00000000; +int bce_RXP_b09FwDataLen = 0x0; +u32 bce_RXP_b09FwRodataAddr = 0x08007908; +int bce_RXP_b09FwRodataLen = 0x124; +u32 bce_RXP_b09FwBssAddr = 0x08007ab8; +int bce_RXP_b09FwBssLen = 0x20; +u32 bce_RXP_b09FwSbssAddr = 0x08007a60; +int bce_RXP_b09FwSbssLen = 0x58; +u32 bce_RXP_b09FwSDataAddr = 0x00000000; +int bce_RXP_b09FwSDataLen = 0x0; +u32 bce_RXP_b09FwText[(0x7908/4) + 1] = { +0xa000c76, +0x0, 0x0, 0xd, 0x72787034, +0x2e362e31, 0x36000000, 0x4061003, 0x0, +0x1, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x10000003, 0x0, +0xd, 0xd, 0x3c020800, 0x24427a60, +0x3c030800, 0x24637ad8, 0xac400000, 0x43202b, +0x1480fffd, 0x24420004, 0x3c1d0800, 0x37bd9ffc, +0x3a0f021, 0x3c100800, 0x261031d8, 0x3c1c0800, +0x279c7a60, 0xe001253, 0x0, 0xd, +0x3c028000, 0x30a5ffff, 0x30c600ff, 0x34430180, +0x3c088000, 0x8d0901b8, 0x520fffe, 0x0, +0xac640000, 0x24040002, 0xa4650008, 0xa066000a, +0xa064000b, 0xac670018, 0x3c031000, 0x3e00008, +0xad0301b8, 0x3c056000, 0x8ca24ff8, 0x440fffe, +0x0, 0xaca44fc0, 0x3c031000, 0x3c040200, +0xaca44fc4, 0x3e00008, 0xaca34ff8, 0x27bdffe8, +0xafbf0014, 0xafb00010, 0xe0012a5, 0x808021, +0x3c048008, 0x34850080, 0x90a60005, 0x2403fffe, +0x2002021, 0xc31024, 0x8fbf0014, 0x8fb00010, +0xa0a20005, 0xa0012af, 0x27bd0018, 0x27bdffe8, +0xafb00010, 0xafbf0014, 0xe000ed6, 0x808021, +0x3c068008, 0x34c50080, 0x90a40000, 0x24020050, +0x308300ff, 0x10620007, 0x3c098000, 0x2002021, +0x8fbf0014, 0x8fb00010, 0xad200180, 0xa000fc5, +0x27bd0018, 0x24080100, 0x3c078000, 0x2002021, +0x8fbf0014, 0x8fb00010, 0xace80180, 0xa000fc5, +0x27bd0018, 0x27bdff88, 0x3c088008, 0xafbe0070, +0xafb60068, 0xafb40060, 0xafb00050, 0xafbf0074, +0xafb7006c, 0xafb50064, 0xafb3005c, 0xafb20058, +0xafb10054, 0x35050080, 0x3c078000, 0x8cf10128, +0x90a40009, 0xace00084, 0x90a60005, 0x309000ff, +0xa021, 0x61827, 0x30620001, 0xb021, +0x14400067, 0xf021, 0x90a90000, 0x24050020, +0x312400ff, 0x10850016, 0x240a0050, 0x108a008d, +0x0, 0x3c0c0800, 0x8d8c00dc, 0x258b0001, +0x3c010800, 0xac2b00dc, 0xe00139b, 0x0, +0x8fbf0074, 0x8fbe0070, 0x8fb7006c, 0x8fb60068, +0x8fb50064, 0x8fb40060, 0x8fb3005c, 0x8fb20058, +0x8fb10054, 0x8fb00050, 0x3e00008, 0x27bd0078, +0xd, 0x3c158000, 0xafa00030, 0x96a20116, +0x8eb90104, 0x3c1f0020, 0x36b20c00, 0x33fc024, +0x18b82b, 0x173140, 0xafa60030, 0x8eae0104, +0x3053ffff, 0x3c0f0040, 0x2723821, 0x1cf6824, +0x90f2000d, 0x11a00048, 0x34c40040, 0x32430020, +0x14600002, 0x34860080, 0x803021, 0x14c00094, +0xafa60030, 0x3c098008, 0x35250080, 0x90a80008, +0x31060040, 0x50c00006, 0x3c088008, 0x240a0004, +0x120a00a3, 0x240b0012, 0x120b0029, 0x3c088008, +0x35150100, 0x3c178000, 0x96f3011a, 0x94ee000e, +0x92af0008, 0x324c0004, 0x3275ffff, 0x1ee6804, +0xafad003c, 0x8cf30004, 0x11800031, 0x8cf70008, +0x35030080, 0x90780008, 0x33070040, 0x14e00028, +0x0, 0x8c720050, 0x2728823, 0x6200006, +0x3c068000, 0x8c7f0034, 0x27fc823, 0x7220084, +0x8e820008, 0x3c068000, 0xacc00044, 0x24020001, +0x8fbf0074, 0x8fbe0070, 0x8fb7006c, 0x8fb60068, +0x8fb50064, 0x8fb40060, 0x8fb3005c, 0x8fb20058, +0x8fb10054, 0x8fb00050, 0x3e00008, 0x27bd0078, +0xe000cb8, 0x2021, 0x8fbf0074, 0x8fbe0070, +0x8fb7006c, 0x8fb60068, 0x8fb50064, 0x8fb40060, +0x8fb3005c, 0x8fb20058, 0x8fb10054, 0x8fb00050, +0x3e00008, 0x27bd0078, 0xa000d18, 0xc02021, +0xe00146c, 0x2602021, 0x1440ffdf, 0x3c068000, +0x3c038008, 0x34630080, 0x8c640034, 0x2641023, +0x4400018, 0x0, 0x3c140800, 0x8e943100, +0x26900001, 0x3c010800, 0xac303100, 0xe0012a5, +0x2202021, 0x3c048008, 0x349f0080, 0x93fe0025, +0x2202021, 0x37c90004, 0xa3e90025, 0xe0012af, +0x0, 0xe000c9e, 0x2202021, 0xa000d45, +0x24020001, 0x3c140800, 0x26947ac8, 0xa000d07, +0x3c158000, 0x8c680030, 0x2683023, 0x18c00008, +0x240b000c, 0x3c090800, 0x8d293100, 0x325200fc, +0xa821, 0x25250001, 0x3c010800, 0xac253100, +0xafab0030, 0x8c6a0030, 0x1534023, 0x190000e0, +0x2a8602a, 0x1580ffdd, 0x0, 0x12a8002a, +0x2a87823, 0x2689821, 0x31f5ffff, 0x32470002, +0x10e00034, 0x32590010, 0x3c138008, 0x36700080, +0x921e0008, 0x33d60040, 0x52c000d3, 0x8e820008, +0x2202021, 0xe0012a5, 0x24120018, 0xa2120009, +0x92170005, 0x2418fffe, 0x2202021, 0x2f8a824, +0xe0012af, 0xa2150005, 0x24040039, 0x2821, +0xe001447, 0x24060018, 0xa000d45, 0x24020001, +0x9296000c, 0x3c048008, 0x349e0080, 0x8fc70038, +0x16a300, 0x36900081, 0x30c600ff, 0x2202021, +0xe000c8d, 0x3205f081, 0x3c068000, 0xacc00044, +0xa000d45, 0x24020001, 0x3a4e0001, 0x31cd0001, +0x15a0ffae, 0x2689821, 0xa000d97, 0x0, +0x40f809, 0x24040016, 0xa000d45, 0x24020001, +0x2202021, 0xe001529, 0xe02821, 0xa000cfa, +0x8fbf0074, 0x1320ff73, 0x3c048008, 0x34890080, +0x8d230038, 0x8c820004, 0x2e2f823, 0x1fe0ff6e, +0x3c068000, 0x2e33023, 0x4c20001, 0x60b821, +0xafa80018, 0x3c198000, 0xafb30010, 0xafb50014, +0x97260120, 0x8d2a0030, 0x9524005c, 0x8fb8003c, +0x8fad0030, 0x3087ffff, 0x30dfffff, 0x3e87021, +0x372f4000, 0x307282b, 0x8e820004, 0x1cf6021, +0x1a55825, 0xafa90048, 0xafac0020, 0xafaa0028, +0xafab0030, 0xafaa0024, 0xafa0002c, 0xafb70034, +0x40f809, 0x27a40010, 0x8fa80030, 0x31030002, +0x10600002, 0x8fa90048, 0x325200fe, 0x91230008, +0x30690040, 0x51200013, 0x8fa40024, 0x3c028008, +0x8c480004, 0x111700a4, 0x240a0014, 0x32580001, +0x5300000c, 0x8fa40024, 0x2419000c, 0x121900c0, +0x2a1f000d, 0x13e000ba, 0x2406000e, 0x2404000a, +0x52040001, 0x24160008, 0x8fa90024, 0x25240001, +0xafa40024, 0x3c188008, 0x37050080, 0x8fa70014, +0x8caf0030, 0x340cffff, 0x877021, 0xacae0030, +0xafaf0038, 0x90ad004e, 0x8cab0030, 0x8fa8003c, +0x1ac1004, 0x1625021, 0xacaa0034, 0x8fa60030, +0x2e82021, 0x30c30008, 0x1060000b, 0xafa40040, +0x8cb90020, 0x1324008f, 0x30c600ff, 0x9289000c, +0x8fa70034, 0x98300, 0x36040080, 0x3085f080, +0xe000c8d, 0x2202021, 0x3c0a8008, 0x35500080, +0x8e030030, 0x8fa80038, 0x683023, 0x18c00065, +0x262f0080, 0x3c0e0800, 0x8dce3198, 0x2407ff80, +0x1e76824, 0x31ec007f, 0x3c068000, 0x3c028004, +0x31cb0010, 0xaccd0090, 0x1160003b, 0x1822821, +0x90b8006b, 0x57000039, 0x3c048008, 0x241f0001, +0xa0bf006b, 0x94c5007a, 0x24b9000a, 0xa6190012, +0x3c0a8008, 0x35450080, 0x90a80008, 0x31100040, +0x16000004, 0x3c038008, 0x324b0001, 0x1560006b, +0x0, 0x34640080, 0x8c8c0020, 0x8fb20040, +0x11920009, 0x34630100, 0x8c6d0000, 0x26d1023, +0x18400012, 0x8fb80040, 0x241e0001, 0xac980020, +0xac730000, 0xac770004, 0x16c0002d, 0x0, +0x17c00027, 0x0, 0x12a00005, 0x1821, +0x8fa50030, 0x30b50004, 0x52a0fe95, 0x601021, +0x24030001, 0xa000cf9, 0x601021, 0x8c6e0000, +0x15d3fff1, 0x0, 0x8c670004, 0x2e77823, +0x5e1ffe9, 0x8fb80040, 0xa000e5b, 0x0, +0xa000d98, 0x4021, 0x40f809, 0x24040017, +0xa000d45, 0x24020001, 0x3c048008, 0x34900080, +0x241e0001, 0x2202021, 0xe0012a5, 0xa61e0012, +0x92090025, 0x2202021, 0x241e0001, 0x35220001, +0xe0012af, 0xa2020025, 0xa000e46, 0x3c0a8008, +0xe000c9e, 0x2202021, 0xa000e5f, 0x0, +0xe0012a5, 0x2202021, 0x3c198008, 0x37370080, +0x2202021, 0xe0012af, 0xa2f60009, 0x2c03021, +0x24040037, 0xe001447, 0x2821, 0xa000e5d, +0x0, 0x8fa60018, 0x58c0ffae, 0x3c0a8008, +0xe0012a5, 0x2202021, 0x92030025, 0x2202021, +0x241e0001, 0x34620004, 0xe0012af, 0xa2020025, +0xa000e46, 0x3c0a8008, 0x120a0030, 0x2a0b0015, +0x11600024, 0x240d0016, 0x240c000c, 0x560cff58, +0x32580001, 0x3c058008, 0x90af001b, 0x2407ffbd, +0x2416000e, 0x1e77024, 0xa0ae001b, 0xa000e01, +0x32580001, 0x3c1f8000, 0x97e5011a, 0x50a0ff6f, +0x34c60010, 0xa000e25, 0x9289000c, 0x8cb30030, +0x8e960008, 0x24040018, 0x26740001, 0x2c0f809, +0xacb40030, 0x8fb10030, 0xa000cf9, 0x32220004, +0x1606ff4a, 0x8fa90024, 0xa000e0c, 0x24160010, +0x2410000e, 0x52d0ff44, 0x24160010, 0xa000e0b, +0x24160016, 0x560dff36, 0x32580001, 0x3c058008, +0x90af001b, 0x2407ffbd, 0x24160010, 0x1e77024, +0xa0ae001b, 0xa000e01, 0x32580001, 0xa000e00, +0x24160012, 0x3c038000, 0x8c6201b8, 0x440fffe, +0x24040800, 0xac6401b8, 0x3e00008, 0x0, +0x3c058008, 0x94a20048, 0x3084ffff, 0x10400019, +0x24840012, 0x94a90048, 0x3c038000, 0x3128ffff, +0x104382a, 0x10e00013, 0x34660180, 0x946d0120, +0x8f8c0004, 0x240b001a, 0x31aaffff, 0x31834000, +0xa0cb000b, 0x10600010, 0x2544fffe, 0x94af0048, +0x31eeffff, 0x1c4282b, 0x14a0000c, 0x8f98000c, +0xa4c40014, 0x8f86000c, 0x34c20001, 0x3e00008, +0xaf82000c, 0x3c078000, 0x24040003, 0x34e20180, +0x3e00008, 0xa044000b, 0x8f98000c, 0x2419fffe, +0x3191024, 0x3e00008, 0xaf82000c, 0x27bdffd8, +0xafb40020, 0xafb3001c, 0xafb20018, 0xafb10014, +0xafbf0024, 0xafb00010, 0x801821, 0x30b3ffff, +0x30d2ffff, 0x30f4ffff, 0x3c118000, 0x8e2201b8, +0x440fffe, 0x36300180, 0xae030000, 0x2402021, +0xe000edd, 0xae230020, 0x8f86000c, 0x8f850004, +0x8f830000, 0x30c48000, 0xa613000c, 0xa612000e, +0xa6050010, 0xae030028, 0xa6140008, 0x1080000e, +0x3c0f8000, 0x962c0116, 0x318bfffc, 0x256a0004, +0x1514821, 0x8d284000, 0x3107ffff, 0x14e00007, +0x2414bfff, 0x3c0effff, 0x35cd7fff, 0xcd3024, +0xaf86000c, 0x3c0f8000, 0x2414bfff, 0x35f10180, +0xd49824, 0xa6330026, 0x8df20104, 0xae32002c, +0x3c061000, 0xade601b8, 0x8fbf0024, 0x8fb40020, +0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x3e00008, 0x27bd0028, 0x27bdffd8, 0xafb10014, +0x3c118000, 0x804021, 0xafb40020, 0xafb00010, +0x30d4ffff, 0x36300180, 0x2802021, 0xae080000, +0xae280020, 0xafb3001c, 0xafb20018, 0x30f3ffff, +0xafbf0024, 0xe000edd, 0x30b2ffff, 0x8f85000c, +0x8f830004, 0x2406bfff, 0xa62024, 0xa612000c, +0xa614000e, 0xa6130008, 0xa6040026, 0xa6030010, +0x3c021000, 0xae2201b8, 0x8fbf0024, 0x8fb40020, +0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x3e00008, 0x27bd0028, 0x3c028000, 0x34450180, +0x3c048000, 0x8c8301b8, 0x460fffe, 0x24072000, +0x24060002, 0xa4a70008, 0xa0a6000b, 0xa4a00010, +0x3c051000, 0xac8501b8, 0x3e00008, 0x0, +0x3c058000, 0x34a40070, 0x8c8a0000, 0x90a60112, +0x8f840004, 0x27bdfff0, 0x30c300ff, 0x31882, +0x30820100, 0x3821, 0x10400039, 0x24660003, +0x30874000, 0x50e00039, 0x30882000, 0x61080, +0x45c821, 0x8f2f4000, 0x24780004, 0x187080, +0xafaf0000, 0x1c56821, 0x8dac4000, 0xafac0004, +0x94ab0116, 0x3169fffc, 0x1254021, 0x8d054000, +0xafa50008, 0x8fa90008, 0x3021, 0x2821, +0x3c070800, 0x24e70100, 0xa000f9e, 0x24080008, +0x90420000, 0x24a50001, 0x2cad000c, 0x62c821, +0x19c080, 0x3077821, 0x8dee0000, 0x11a00006, +0xce3026, 0x3a51021, 0x14a8fff5, 0x51a00, +0x5520fff4, 0x90420000, 0x3c048000, 0x34870070, +0x3c050800, 0x8ca53104, 0x8ce30000, 0x2ca80020, +0x11000009, 0x6a3823, 0x55880, 0x3c0c0800, +0x258c3108, 0x16c4821, 0x24aa0001, 0xad270000, +0x3c010800, 0xac2a3104, 0xaf860000, 0x24070001, +0xe01021, 0x3e00008, 0x27bd0010, 0x1100fffc, +0x3821, 0x66080, 0x1855821, 0x8d644000, +0x24690004, 0x93880, 0xafa40000, 0xe51821, +0x8c664000, 0xafa00008, 0xa000f8e, 0xafa60004, +0x3c020800, 0x8c420038, 0x27bdffd8, 0xafb40020, +0xafb20018, 0xafbf0024, 0xafb3001c, 0xafb10014, +0xafb00010, 0x3c140800, 0x26940038, 0x14400002, +0x2452ffff, 0x9021, 0x8f850004, 0x30a34000, +0x1060000f, 0x30a98000, 0x3c060020, 0xa62024, +0x1080000b, 0x8f87000c, 0x2408bfff, 0xa82824, +0x34e31000, 0xaf850004, 0x30af2000, 0x15e0000a, +0x3c110004, 0x2413ffbf, 0xa000fef, 0x731024, +0x15200062, 0x3c0b0020, 0x30af2000, 0x11e0fff9, +0x8f83000c, 0x3c110004, 0xb18024, 0x1200fff6, +0x2413ffbf, 0x34620040, 0x30b80100, 0x1300000f, +0xaf82000c, 0x3c1f0020, 0xbfc824, 0x13200005, +0x3c0a8000, 0x3c030004, 0xa31024, 0x104000c8, +0x0, 0x9549011e, 0x9548011c, 0x3126ffff, +0x83c00, 0xc72025, 0xaf840000, 0x3c0d8000, +0x95ac010c, 0x30ab1000, 0x11600008, 0x3186ffff, +0x30ae0020, 0x15c00006, 0x24110005, 0x3c101000, +0xb07824, 0x15e00073, 0x3c1f0c00, 0x24110001, +0x30a20100, 0x54400009, 0x3c0c0001, 0x8f830014, +0x54600006, 0x3c0c0001, 0x8f87000c, 0x30e44000, +0x1080009a, 0x3c0a1f01, 0x3c0c0001, 0xac3024, +0x14c0006c, 0x3c108000, 0x8f84000c, 0x30934000, +0x12600006, 0x3c031000, 0x3c190f00, 0xb9c024, +0x1300008b, 0x3c1f8000, 0x3c031000, 0xa31024, +0x1040002c, 0x3c068000, 0x3c070800, 0x8ce70030, +0x14e00073, 0x30884000, 0x30a60100, 0x10c00098, +0x3c0e0f00, 0xae6824, 0x3c0c0200, 0x11ac0094, +0x8f930000, 0x2728024, 0x2147821, 0x91f40004, +0x26920004, 0x1221c0, 0x3c0e8000, 0x95c6010e, +0x36270002, 0x24d40004, 0x3286ffff, 0x24050002, +0xe000f04, 0x0, 0x8fbf0024, 0x8fb40020, +0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x1021, 0x3e00008, 0x27bd0028, 0xab5024, +0x1140ff9e, 0x30af2000, 0x8f8c000c, 0x3c0effff, +0x35cd7fff, 0xad2824, 0x35838000, 0xa000fdf, +0xaf850004, 0x8cd04000, 0x320f0100, 0x11e0003c, +0x30b80100, 0x3c100800, 0x8e100024, 0x13000014, +0x32330004, 0x3c020f00, 0xa2f824, 0x3c190200, +0x13f9000f, 0x8f830000, 0x94c9010e, 0x2203821, +0x725824, 0x1745021, 0x91480004, 0x25240004, +0x3086ffff, 0x25140004, 0x1421c0, 0x24050002, +0xe000f04, 0x2412fffe, 0x2128024, 0x3231fffb, +0x24070001, 0x1207006f, 0x32060001, 0x14c00090, +0x3c0e8000, 0x320f0004, 0x11e00004, 0x8f980004, +0x33100800, 0x16000078, 0x3c1f8000, 0x5660ffc7, +0x8fbf0024, 0xe000f63, 0x0, 0xa001040, +0x8fbf0024, 0x3c190bff, 0xbfc024, 0x3733ffff, +0x278882b, 0x5220ff8a, 0x24110001, 0xa00100d, +0x24110005, 0x3c0e0800, 0x8dce00d8, 0x960f010e, +0x24040080, 0x25cd0001, 0x31e6ffff, 0x24050002, +0x3c010800, 0xac2d00d8, 0xa00103d, 0x24070003, +0x3c120800, 0x8e520024, 0x32420001, 0x1040ffab, +0x8fbf0024, 0x94c6010e, 0x36270002, 0x2021, +0x24d40004, 0x3286ffff, 0xa00103d, 0x24050002, +0x1100ff8e, 0x30a60100, 0x3c0b0f00, 0xab5024, +0x3c090100, 0x12a202b, 0x1480ff88, 0x0, +0x3c058000, 0x94a6010e, 0x36270002, 0x24040080, +0x24d40004, 0x3286ffff, 0xa00103d, 0x24050002, +0x97e30116, 0xa001024, 0x3c031000, 0xaa4824, +0x3c081000, 0x1528ff65, 0x3c0c0001, 0x30cb0200, +0x1560ff63, 0xac3024, 0x3c148000, 0x9692010e, +0x36270002, 0x2021, 0x26450004, 0x30a6ffff, +0xe000f3f, 0x24050002, 0xa001040, 0x8fbf0024, +0xe000f71, 0x0, 0xa001000, 0x8f850004, +0x0, 0x3c060800, 0x8cc600d0, 0x51602, +0x3050000f, 0x38df0001, 0x2ff90001, 0x2e03000c, +0x323c024, 0x1700ff68, 0x1021c0, 0x2608fffc, +0x2d070004, 0x14e00007, 0x3c0e8000, 0x38ca0002, +0x2d490001, 0x1232024, 0x5080000e, 0x53242, +0x3c0e8000, 0x95c6010e, 0x2021, 0xa00103a, +0x36270002, 0x32330004, 0x52600001, 0x36310002, +0x3c0c8000, 0x9586010e, 0x2203821, 0xa001099, +0x2021, 0x10182b, 0xc35824, 0x1560000f, +0x3c058000, 0x1021c0, 0x3c0e8000, 0x95c6010e, +0xa00103a, 0x36270002, 0x97f9010e, 0x2203821, +0x24040100, 0x27310004, 0x3226ffff, 0xe000f04, +0x24050002, 0xa001078, 0x0, 0x94ad010e, +0x2021, 0x24050002, 0x25ac0004, 0x3186ffff, +0xe000f04, 0x3227fffb, 0xa0010eb, 0x1021c0, +0x95c5010e, 0x2203821, 0x2021, 0x24ad0004, +0x31a6ffff, 0xe000f04, 0x24050002, 0xa001072, +0x3231fffb, 0x3c058000, 0x8ca70148, 0x24030004, +0x34a60180, 0x72402, 0x308200ff, 0x10430010, +0x3c048000, 0x8c8901b8, 0x520fffe, 0x0, +0x8c8f0148, 0x240d0002, 0x3c0a1000, 0xf7402, +0xa4ce0008, 0xa0cd000b, 0x8c8c0148, 0xa4cc0010, +0x8c8b0144, 0xaccb0024, 0x3e00008, 0xac8a01b8, +0x8ca40140, 0x3c038000, 0xc02821, 0x8c6601b8, +0x4c0fffe, 0x2408001c, 0xaca40000, 0xa0a8000b, +0x3c051000, 0xac6501b8, 0x3e00008, 0x0, +0x27bdffe8, 0xafb00010, 0xafbf0014, 0x3c10600c, +0x8e0d5000, 0x240eff7f, 0x24060003, 0x1ae6024, +0x3588380c, 0x3c058000, 0xae085000, 0xaca60008, +0x3c010800, 0xac200020, 0xe001555, 0x0, +0x3c086016, 0x8d0a0000, 0x3c0bffff, 0x3c090010, +0x35238051, 0x3c046000, 0x14b3824, 0x3c025353, +0xae03537c, 0x34842020, 0x3c050800, 0x24a57908, +0x2406000a, 0x10e20009, 0x35037c00, 0x8c7f007c, +0x8c790078, 0x8fb00010, 0xaf9f0010, 0x8fbf0014, +0x27bd0018, 0xa0013b1, 0xaf990008, 0x8d0f0004, +0x3c186000, 0x8fb00010, 0x1f81821, 0x8c7f007c, +0x8c790078, 0xaf9f0010, 0x8fbf0014, 0x27bd0018, +0xa0013b1, 0xaf990008, 0x3c048000, 0x8c834000, +0x3402ffff, 0x1062003a, 0x0, 0x8c874000, +0x30e50100, 0x10a00021, 0x0, 0x9487010e, +0x3c020800, 0x8c4200ec, 0x9485010e, 0x3c0d0800, +0x8dad31cc, 0x30e3ffff, 0x3c180800, 0x8f1800e8, +0x3c090800, 0x8d2931c8, 0x436021, 0x30abffff, +0x183782b, 0xc821, 0x1ab1821, 0x5021, +0x3197021, 0x6b302b, 0x12a4021, 0x1cf2021, +0x1061021, 0x3c010800, 0xac2c00ec, 0x3c010800, +0xac2400e8, 0x3c010800, 0xac2331cc, 0x3c010800, +0xac2231c8, 0x3e00008, 0x0, 0x8c884000, +0x8f8c0008, 0x110c0032, 0x3c0d8000, 0x95ab010e, +0x3c0a0800, 0x8d4a00e4, 0x3c080800, 0x8d0800e0, +0x3169ffff, 0x1492821, 0x3021, 0xa9602b, +0x1063821, 0xec1021, 0x3c010800, 0xac2500e4, +0x3c010800, 0xac2200e0, 0x3e00008, 0x0, +0x9483010e, 0x9482010e, 0x3c190800, 0x8f3900f4, +0x3c090800, 0x8d2931cc, 0x3c0e0800, 0x8dce00f0, +0x3c080800, 0x8d0831c8, 0x3078ffff, 0x304bffff, +0x3382821, 0x12b1821, 0x7821, 0x5021, +0xb8682b, 0x1cf6021, 0x6b302b, 0x10a3821, +0x18d2021, 0xe61021, 0x3c010800, 0xac2500f4, +0x3c010800, 0xac2400f0, 0x3c010800, 0xac2331cc, +0x3c010800, 0xac2231c8, 0x3e00008, 0x0, +0x8c894004, 0x8f860010, 0x1526ffcc, 0x3c0d8000, +0x9483010e, 0x3c190800, 0x8f3931bc, 0x3c0e0800, +0x8dce31b8, 0x3078ffff, 0x3385821, 0x7821, +0x178202b, 0x1cf6821, 0x1a45021, 0x3c010800, +0xac2b31bc, 0x3c010800, 0xac2a31b8, 0x3e00008, +0x0, 0x27bdffe8, 0x3c058000, 0xafbf0014, +0xafb00010, 0x8cb00128, 0xacb00020, 0x8ca30104, +0x8ca40100, 0xaf830004, 0xe000ed6, 0xaf84000c, +0xe00115f, 0x0, 0x3c020800, 0x8c4200c0, +0x10400026, 0x8f840004, 0x3c070800, 0x8ce700c4, +0x24e60001, 0x3c010800, 0xac2600c4, 0x3c028000, +0x8c440124, 0x3c1f6020, 0xafe40014, 0x0, +0x3c068000, 0x3c034000, 0xacc30138, 0x0, +0x12000013, 0x8fbf0014, 0x260f0140, 0x26190080, +0x2404ff80, 0x1e4c024, 0x324f824, 0x1f6940, +0x332e007f, 0x185940, 0x31ec007f, 0x3c0a2000, +0x35480002, 0x1ae3825, 0x16c4825, 0x1288025, +0xe82825, 0xacc50830, 0xacd00830, 0x8fbf0014, +0x8fb00010, 0x3e00008, 0x27bd0018, 0x3c090010, +0x894024, 0x1100000f, 0x8f83000c, 0x240dbfff, +0x6d6024, 0x11800007, 0x240f87ff, 0x6f7024, +0x15c00013, 0x3c190060, 0x99c024, 0x13000010, +0x0, 0xe000cd2, 0x0, 0xa001221, +0x0, 0x3c0b0800, 0x8d6b0020, 0x256a0001, +0x3c010800, 0xac2a0020, 0xe000fc5, 0x2021, +0x1040ffcc, 0x3c068000, 0xa0011e9, 0x3c028000, +0xe00128e, 0x0, 0xa001221, 0x0, +0x27bdffe8, 0x3c028000, 0xafbf0010, 0x8c460140, +0x3c037000, 0x3c054000, 0xac460020, 0x8c440148, +0x832024, 0x10850013, 0xa4102b, 0x1040000b, +0x3c072000, 0x3c086000, 0x10880017, 0x0, +0x3c0a4000, 0x3c098000, 0xad2a0178, 0x0, +0x8fbf0010, 0x3e00008, 0x27bd0018, 0x5487fff9, +0x3c0a4000, 0xe00110a, 0x0, 0xa00123a, +0x3c0a4000, 0xe0012b4, 0x0, 0x3c0a4000, +0x3c098000, 0xad2a0178, 0x0, 0x8fbf0010, +0x3e00008, 0x27bd0018, 0xe001d6f, 0x0, +0xa00123a, 0x3c0a4000, 0x27bdffe0, 0xafb20018, +0x3c128000, 0xafb10014, 0xafbf001c, 0xafb00010, +0xe00112d, 0x36510070, 0x8e260000, 0xaf860018, +0x8e280000, 0x3c0b0800, 0x8d6b00fc, 0x3c070800, +0x8ce700f8, 0x1066023, 0x16c2821, 0x4821, +0xac302b, 0xe91821, 0x662021, 0x3c010800, +0xac2500fc, 0x3c010800, 0xac2400f8, 0x8e500000, +0x32020003, 0x1040ffee, 0x1003021, 0x8e260000, +0x3c050800, 0x8ca500fc, 0x3c1f0800, 0x8fff00f8, +0xc81823, 0xa37821, 0x1021, 0x1e3c82b, +0x3e2c021, 0x3197021, 0x320d0001, 0x3c010800, +0xac2f00fc, 0xaf880018, 0x3c010800, 0xac2e00f8, +0x15a00008, 0x0, 0x32080002, 0x1100ffd6, +0x0, 0xe001229, 0x0, 0xa00125b, +0x0, 0xe0011d2, 0x0, 0xa001284, +0x32080002, 0x3c038000, 0x8c640100, 0x3082003e, +0x14400008, 0x0, 0xac600048, 0x8c660100, +0x30c507c0, 0x10a00005, 0x0, 0xac60004c, +0xac600050, 0x3e00008, 0x24020001, 0xac600054, +0xac600040, 0x8c680100, 0x31073800, 0x10e0fff9, +0x0, 0x24020001, 0x3e00008, 0xac600044, +0x3c039000, 0x34620001, 0x822025, 0x3c038000, +0xac640020, 0x8c650020, 0x4a0fffe, 0x0, +0x3e00008, 0x0, 0x3c028000, 0x34430001, +0x832025, 0x3e00008, 0xac440020, 0x27bdffd8, +0xafb10014, 0x3c048000, 0xafbf0020, 0xafb3001c, +0xafb20018, 0xafb00010, 0x8c920140, 0x8c900148, +0x2402000e, 0x108c02, 0x322300ff, 0x10620059, +0x2042824, 0x2866000f, 0x10c00013, 0x286a0037, +0x24070006, 0x1067008e, 0x28680007, 0x5100002d, +0x24040009, 0x10600078, 0x3c068000, 0x24090001, +0x106900b0, 0x0, 0xd, 0x8fbf0020, +0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x3e00008, 0x27bd0028, 0x11400059, 0x240d0038, +0x286b0035, 0x11600005, 0x3c058000, 0x240c001f, +0x146cfff1, 0x0, 0x3c058000, 0x8cb801b8, +0x700fffe, 0x34b90180, 0xaf320000, 0x241f0001, +0x24120002, 0x3c021000, 0xaf200004, 0xa7310008, +0xa33f000a, 0xa332000b, 0xa7300010, 0xaf200024, +0xaf200028, 0xaca201b8, 0x8fbf0020, 0x8fb3001c, +0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, +0x27bd0028, 0x10640023, 0x2405000b, 0x1465ffd6, +0x3218ffff, 0x17000020, 0x3c058000, 0x8f93fed4, +0x927f0005, 0x33f90004, 0x1720ffcf, 0x0, +0xe0012a5, 0x2402021, 0x92690005, 0x2402021, +0x35280004, 0xe0012af, 0xa2680005, 0x92670005, +0x30e20004, 0x14400002, 0x0, 0xd, +0x926b0000, 0x24060020, 0x316a00ff, 0x1546000a, +0x3c058000, 0x8ca401b8, 0x480fffe, 0x34ad0180, +0x240e0005, 0x3c0c1000, 0xadb20000, 0xa1ae000b, +0xacac01b8, 0x3c058000, 0x8ca301b8, 0x460fffe, +0x34af0180, 0x24130002, 0xade00000, 0xadf20004, +0xa5f10008, 0xa1f3000a, 0xa1f3000b, 0xa5f00010, +0xade00024, 0x8cb10144, 0x3c101000, 0xadf10028, +0xacb001b8, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, +0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0028, +0x106dffad, 0x240e0080, 0x146eff9b, 0x0, +0x3c058000, 0x8ca301b8, 0x460fffe, 0x34af0180, +0x24120002, 0xa1f2000b, 0xa5f10008, 0xa5f00010, +0x8cb30144, 0x3c021000, 0xa5f30012, 0xaca201b8, +0xa0012f0, 0x8fbf0020, 0x8cc301b8, 0x460fffe, +0x34d30180, 0xae720000, 0xae600004, 0x24120001, +0xa6710008, 0x24110002, 0xa272000a, 0xa271000b, +0xa6700010, 0x8cd00144, 0x3c0f1000, 0xae700024, +0xae600028, 0xaccf01b8, 0xa00132b, 0x8fbf0020, +0x3c038000, 0x8c6601b8, 0x4c0fffe, 0x34620180, +0x3c060800, 0x90c67ab8, 0xac520000, 0x10c00003, +0x3821, 0x3c070800, 0x8ce77ac0, 0x3c058000, +0x34aa0180, 0x24040002, 0x34cc0001, 0xac470004, +0xa5510008, 0xa14c000a, 0xa144000b, 0xa5500010, +0x8cab0144, 0x2021, 0x1402821, 0xad4b0024, +0x10c00003, 0x8fbf0020, 0x3c040800, 0x8c847abc, +0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x3c0e1000, 0x3c0d8000, 0x27bd0028, 0xaca40028, +0xadae01b8, 0x3c010800, 0xa0207ab8, 0x3e00008, +0x0, 0x10a0000b, 0x3c068000, 0x8c980144, +0x24190002, 0x3c010800, 0xa0397ab8, 0x3c010800, +0xac327ac0, 0x3c010800, 0xac387abc, 0xa00132b, +0x8fbf0020, 0x8cdf01b8, 0x7e0fffe, 0x34c70180, +0x24090002, 0xace00000, 0xacf20004, 0xa4f10008, +0xa0e9000a, 0xa0e9000b, 0xa4f00010, 0xace00024, +0x8cc80144, 0x3c021000, 0xace80028, 0xacc201b8, +0xa00132b, 0x8fbf0020, 0x27bdffe8, 0xafbf0010, +0xe000ed6, 0x0, 0x3c028000, 0x8fbf0010, +0x2021, 0xac400180, 0xa000fc5, 0x27bd0018, +0x3084ffff, 0x30a5ffff, 0x10800007, 0x1821, +0x30820001, 0x10400002, 0x42042, 0x651821, +0x1480fffb, 0x52840, 0x3e00008, 0x601021, +0x10c00007, 0x0, 0x8ca20000, 0x24c6ffff, +0x24a50004, 0xac820000, 0x14c0fffb, 0x24840004, +0x3e00008, 0x0, 0x10a00008, 0x24a3ffff, +0xac860000, 0x0, 0x0, 0x2402ffff, +0x2463ffff, 0x1462fffa, 0x24840004, 0x3e00008, +0x0, 0x27bdffe0, 0xafb20018, 0xafb10014, +0xafb00010, 0xafbf001c, 0x9486000c, 0xa09021, +0x24900014, 0x61b02, 0x31080, 0x448821, +0x3021, 0xa02021, 0xe0013bb, 0x24050005, +0x211202b, 0x10800012, 0x1021, 0x92030000, +0x2c650009, 0x50a00009, 0x92020001, 0x34880, +0x3c0a0800, 0x254a793c, 0x12a4021, 0x8d070000, +0xe00008, 0x0, 0x92020001, 0x2028021, +0x211202b, 0x5480fff2, 0x92030000, 0x1021, +0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x3e00008, 0x27bd0020, 0xa0013d5, 0x26100001, +0x920c0001, 0x240b000c, 0x158b0040, 0x2307023, +0x2dcd000a, 0x15a0003d, 0x26080006, 0x8e430000, +0x26020002, 0x34640100, 0xae440000, 0x921f0002, +0x90590001, 0x904e0002, 0x904b0003, 0x1f7e00, +0x19c400, 0x1f86025, 0xe6a00, 0x18d5025, +0x14b4825, 0xae490004, 0x92070006, 0x91050001, +0x91040002, 0x91190003, 0x71e00, 0x53400, +0x66f825, 0x41200, 0x3e2c025, 0x3197825, +0x2610000a, 0xa0013d5, 0xae4f0008, 0x921f0001, +0x26040002, 0x24100002, 0x57f00001, 0x2202021, +0xa0013d5, 0x808021, 0x920e0001, 0x240d0003, +0x15cdffcb, 0x24020001, 0x8e590000, 0x92180002, +0x26100003, 0x372f0008, 0xa2580010, 0xa0013d5, +0xae4f0000, 0x92050001, 0x24060004, 0x14a6ffc0, +0x24020001, 0x920c0002, 0x920b0003, 0x8e490000, +0xc5200, 0x14b4025, 0x35270004, 0x26100004, +0xae48000c, 0xa0013d5, 0xae470000, 0xa0013e9, +0x24020001, 0x27bdffe8, 0xafbf0014, 0xafb00010, +0xe0012a5, 0x808021, 0x3c048008, 0x34830080, +0x90650025, 0x2002021, 0x34a20020, 0xe0012af, +0xa0620025, 0x2002021, 0x8fbf0014, 0x8fb00010, +0xa000c9e, 0x27bd0018, 0x3c038000, 0x27bdfff8, +0x34620180, 0xafa20000, 0x308c00ff, 0x30ad00ff, +0x30ce00ff, 0x3c0b8000, 0x8d6401b8, 0x480fffe, +0x0, 0x8fa90000, 0x8d680128, 0x8faa0000, +0x8fa70000, 0x8fa40000, 0x24050001, 0x24020002, +0xa085000a, 0x8fa30000, 0x35994000, 0x3c051000, +0xa062000b, 0x8fb80000, 0x8fac0000, 0x8fa60000, +0x8faf0000, 0x27bd0008, 0xad280000, 0xad400004, +0xad800024, 0xacc00028, 0xa4f90008, 0xa70d0010, +0xa5ee0012, 0x3e00008, 0xad6501b8, 0x3c068008, +0x27bdffe8, 0x34c50080, 0xafbf0010, 0x90a70009, +0x24020012, 0x30e300ff, 0x1062000b, 0x803021, +0x8ca80050, 0x882023, 0x4800008, 0x8fbf0010, +0x8caa0034, 0x24040039, 0x2821, 0xca4823, +0x5200005, 0x24060012, 0x8fbf0010, 0x24020001, +0x3e00008, 0x27bd0018, 0xe001447, 0x0, +0x8fbf0010, 0x24020001, 0x3e00008, 0x27bd0018, +0x27bdffc8, 0xafb1002c, 0xa08821, 0xafb20030, +0x27a50010, 0x809021, 0x2202021, 0xafbf0034, +0xe0013c6, 0xafb00028, 0x14400081, 0x3c0c8008, +0x918b0011, 0x918a0012, 0x35860080, 0x8cc80054, +0x316500ff, 0x314900ff, 0xa92821, 0xa8382b, +0x14e0004f, 0x8fa30010, 0x94df005c, 0x30660004, +0x10c00056, 0x33e4ffff, 0x8fa2001c, 0x82102b, +0x54400005, 0x2c830080, 0x30670004, 0x14e0007e, +0x24040218, 0x2c830080, 0x10600002, 0x808021, +0x24100080, 0xe0012a5, 0x2402021, 0x3c038008, +0x34660080, 0x24070001, 0xacc7000c, 0x90c20008, +0x106040, 0x34670100, 0x305f007f, 0xa0df0008, +0x8e390004, 0x27380001, 0xacd80030, 0xa4d0005c, +0x8cce003c, 0x962f000e, 0x1cf6821, 0xaccd0020, +0x8ccb003c, 0x16c5021, 0xacca001c, 0x8e290004, +0xace90000, 0x8e250008, 0xace50004, 0x8fa80010, +0x31040008, 0x5480002f, 0x93a60020, 0xa0c0004e, +0x90c5004e, 0x2408ffdf, 0x3c188008, 0xa0e50008, +0x90c40008, 0x370c0080, 0x24090050, 0x888024, +0xa0d00008, 0x8e390008, 0xad990038, 0x8f0e0014, +0x8d8f0030, 0x1cf6821, 0xad8d0034, 0x918b0000, +0x316a00ff, 0x11490029, 0x26480100, 0xe0012af, +0x2402021, 0x24040038, 0x2821, 0xe001447, +0x2406000a, 0x8fbf0034, 0x8fb20030, 0x8fb1002c, +0x8fb00028, 0x24020001, 0x3e00008, 0x27bd0038, +0x94d8005c, 0x8cd00054, 0x330effff, 0x2057823, +0x1cf682b, 0x15a0ffac, 0x8fa30010, 0x8cd90054, +0x30660004, 0x14c0ffac, 0x3252023, 0xa0014a5, +0x2c820218, 0x3c188008, 0x370c0080, 0xa0e60008, +0x8e390008, 0x24090050, 0xad990038, 0x8f0e0014, +0x8d8f0030, 0x1cf6821, 0xad8d0034, 0x918b0000, +0x316a00ff, 0x1549ffd9, 0x26480100, 0x2406ff80, +0x1062824, 0x3c048000, 0xac850028, 0x8e270008, +0x3103007f, 0x3c10800c, 0x70f821, 0xafe700d0, +0x8e220008, 0xaf9f0024, 0xa0014e0, 0xafe200d4, +0x8e230008, 0x3c048008, 0x34820080, 0xac430054, +0x2402021, 0xe001436, 0xac400030, 0x24040038, +0x2405008d, 0xe001447, 0x24060012, 0x8fbf0034, +0x8fb20030, 0x8fb1002c, 0x8fb00028, 0x24020001, +0x3e00008, 0x27bd0038, 0xa0014aa, 0x8fa4001c, +0x27bdffe8, 0xafbf0010, 0x90a6000d, 0x30c70010, +0x10e0000c, 0x804021, 0x3c028008, 0x8c440004, +0x8ca30008, 0x10640008, 0x30c90004, 0x30c50004, +0x10a0001c, 0x8fbf0010, 0x24020001, 0x3e00008, +0x27bd0018, 0x30c90004, 0x11200010, 0x30cb0012, +0x10e0fff9, 0x8fbf0010, 0x3c088008, 0x8ca70008, +0x8d060004, 0x14e6fff5, 0x24020001, 0x24040038, +0x2405008d, 0xe001447, 0x24060012, 0x8fbf0010, +0x24020001, 0x3e00008, 0x27bd0018, 0x240a0012, +0x156affe9, 0x8fbf0010, 0x1002021, 0xa001489, +0x27bd0018, 0x2021, 0xa000cb8, 0x27bd0018, +0x3c050800, 0x24a55598, 0x3c040800, 0x24847358, +0x3c020800, 0x244255a0, 0x24030006, 0x3c010800, +0xac257ac8, 0x3c010800, 0xac247acc, 0x3c010800, +0xac227ad0, 0x3c010800, 0xa0237ad4, 0x3e00008, +0x0, 0x3e00008, 0x24020001, 0x3c028000, +0x308800ff, 0x34470180, 0x3c068000, 0x8cc301b8, +0x460fffe, 0x0, 0x8cc50128, 0x2418ff80, +0x3c0d800a, 0x24af0100, 0x1f87024, 0x31ec007f, +0xacce0024, 0x18d2021, 0xace50000, 0x948b00da, +0x35096000, 0x24080002, 0x316affff, 0xacea0004, +0x24020001, 0xa4e90008, 0xa0e8000b, 0xace00024, +0x3c071000, 0xacc701b8, 0xaf840024, 0x3e00008, +0xaf850054, 0x8c990004, 0x8f8d0024, 0x2409ffbf, +0x325c023, 0xac980004, 0x91af00c4, 0x2403ffef, +0x31ee007f, 0xa1ae00c4, 0x8c8c0020, 0x938b0030, +0x8f860024, 0x358a0002, 0xaf8b0048, 0xa7800044, +0xac8a0020, 0xa4c000ac, 0x90c800c4, 0x1093824, +0xa0c700c4, 0x8f840024, 0xac8000dc, 0x908500c4, +0xa31024, 0x3e00008, 0xa08200c4, 0x3c028000, +0x34450180, 0x3c048000, 0x8c8301b8, 0x460fffe, +0x8f890054, 0x24076083, 0x24060002, 0xaca90000, +0x8c880124, 0xaca80004, 0xa4a70008, 0xa0a6000b, +0x3c051000, 0x3e00008, 0xac8501b8, 0x93880030, +0x8f890048, 0x8f820024, 0x30c600ff, 0x1093823, +0x30e900ff, 0x1221821, 0x30a500ff, 0x24680078, +0x10c00002, 0x1243821, 0x803821, 0x30e40003, +0x14800003, 0x30aa0003, 0x1140000d, 0x312b0003, +0x10a00009, 0x1021, 0x90ed0000, 0x244e0001, +0x31c200ff, 0x45602b, 0xa10d0000, 0x24e70001, +0x1580fff9, 0x25080001, 0x3e00008, 0x0, +0x1560fff3, 0x0, 0x10a0fffb, 0x1021, +0x8cf80000, 0x24590004, 0x332200ff, 0x45782b, +0xad180000, 0x24e70004, 0x15e0fff9, 0x25080004, +0x3e00008, 0x0, 0x93850030, 0x93880040, +0x8f870048, 0x43200, 0x3103007f, 0xe5102b, +0x30c47f00, 0x1040000f, 0x642825, 0x8f840024, +0x3c098000, 0x8c8a00dc, 0xad2a00a4, 0x3c038000, +0xa35825, 0xac6b00a0, 0x8c6c00a0, 0x580fffe, +0x0, 0x8c6d00ac, 0xac8d00dc, 0x3e00008, +0x8c6200a8, 0xa0015e8, 0x8f840024, 0x93880041, +0x3c028000, 0x805021, 0x310300fe, 0xa3830041, +0x30abffff, 0x30cc00ff, 0x30e7ffff, 0x34480180, +0x3c098000, 0x8d2401b8, 0x480fffe, 0x8f8d0054, +0x24180016, 0xad0d0000, 0x8d220124, 0x8f8d0024, +0xad020004, 0x8d590020, 0xa5070008, 0x240201b4, +0xa119000a, 0xa118000b, 0x952f0120, 0x8d4e0008, +0x8d470004, 0x97830044, 0x8d590024, 0x1cf3021, +0xc72821, 0xa32023, 0x2418ffff, 0xa504000c, +0xa50b000e, 0xa5020010, 0xa50c0012, 0xad190018, +0xad180024, 0x95af00d8, 0x3c0b1000, 0x2407fff7, +0x31eeffff, 0xad0e0028, 0x8dac0074, 0xad0c002c, +0xad2b01b8, 0x8d460020, 0xc72824, 0x3e00008, +0xad450020, 0x8f880024, 0x805821, 0x30e7ffff, +0x910900c6, 0x3c028000, 0x30a5ffff, 0x312400ff, +0x41a00, 0x675025, 0x30c600ff, 0x34470180, +0x3c098000, 0x8d2c01b8, 0x580fffe, 0x8f820054, +0x240f0017, 0xace20000, 0x8d390124, 0xacf90004, +0x8d780020, 0xa4ea0008, 0x241901b4, 0xa0f8000a, +0xa0ef000b, 0x95230120, 0x8d6e0008, 0x8d6d0004, +0x97840044, 0x1c35021, 0x14d6021, 0x1841023, +0xa4e2000c, 0xa4e5000e, 0xa4f90010, 0xa4e60012, +0xace00014, 0x8d780024, 0x240dffff, 0xacf80018, +0x8d0f006c, 0xacef001c, 0x8d0e0068, 0x3c0f1000, +0xacee0020, 0xaced0024, 0x950a00ae, 0x240dfff7, +0x3146ffff, 0xace60028, 0x950c0070, 0x95040072, +0x31837fff, 0x3ca00, 0x3082ffff, 0x322c021, +0xacf8002c, 0xad2f01b8, 0x950e0072, 0x8d6a0020, +0xae3021, 0x14d2824, 0xa5060072, 0x3e00008, +0xad650020, 0x3c028000, 0x34460180, 0x3c058000, +0x8ca301b8, 0x460fffe, 0x24090018, 0xacc40000, +0xa0c9000b, 0x8f880024, 0x3c041000, 0x950700ae, +0xa4c70010, 0xacc00030, 0x3e00008, 0xaca401b8, +0x3c028000, 0x34450180, 0x3c048000, 0x8c8301b8, +0x460fffe, 0x8f8a002c, 0x24060019, 0x9549001c, +0x3128ffff, 0x839c0, 0xaca70000, 0xa0a6000b, +0x3c051000, 0x3e00008, 0xac8501b8, 0x8f870034, +0x804021, 0x30c400ff, 0x3c068000, 0x8cc201b8, +0x440fffe, 0x8f890054, 0x93830050, 0x34996000, +0xaca90000, 0xa0a30005, 0x8ce20010, 0x240f0002, +0x2403fff7, 0xa4a20006, 0xa4b90008, 0x8d180020, +0xa0b8000a, 0xa0af000b, 0x8cee0000, 0xacae0010, +0x8ced0004, 0xacad0014, 0x8cec001c, 0xacac0024, +0x8ceb0020, 0xacab0028, 0x8cea002c, 0x3c071000, +0xacaa002c, 0x8d090024, 0xaca90018, 0xacc701b8, +0x8d050020, 0xa32024, 0x3e00008, 0xad040020, +0x93850050, 0x24030001, 0x27bdffe8, 0xa33004, +0x2ca20020, 0xafb00010, 0xafbf0014, 0xc01821, +0x10400013, 0x2410fffe, 0x3c070800, 0x8ce73190, +0xe61024, 0x3c088000, 0x35050180, 0x14400005, +0x24060084, 0x8f890024, 0x240a0004, 0x2410ffff, +0xa12a00ec, 0xe001684, 0x0, 0x2001021, +0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, +0x3c060800, 0x8cc63194, 0xa0016b6, 0xc31024, +0x8f87002c, 0x27bdffe0, 0xafb20018, 0xafb10014, +0xafb00010, 0xafbf001c, 0x30d000ff, 0x90e6000d, +0xa08821, 0x809021, 0x30c5007f, 0xa0e5000d, +0x8f850024, 0x8e230018, 0x8ca200c0, 0x1062002e, +0x240a000e, 0xe0016a9, 0xa38a0050, 0x2409ffff, +0x10490022, 0x2404ffff, 0x52000020, 0x2021, +0x8e260000, 0x3c0c0010, 0xcc5824, 0x15600039, +0x3c0e0008, 0xce6824, 0x55a0003f, 0x2402021, +0x3c180002, 0xd88024, 0x1200001f, 0x3c0a0004, +0x8f87002c, 0x8ce20014, 0x8ce30010, 0x8ce50014, +0x43f823, 0x3e5c82b, 0x13200005, 0x2402021, +0x8e24002c, 0x8cf10010, 0x10910031, 0x2402021, +0x24020012, 0xa3820050, 0xe0016a9, 0x2412ffff, +0x10520002, 0x2404ffff, 0x2021, 0x8fbf001c, +0x8fb20018, 0x8fb10014, 0x8fb00010, 0x801021, +0x3e00008, 0x27bd0020, 0x90a800c4, 0x35040020, +0xa0016df, 0xa0a400c4, 0xca4824, 0x1520000b, +0x8f8b002c, 0x8f8d002c, 0x8dac0010, 0x1580000b, +0x2402021, 0x8e2e002c, 0x51c0ffec, 0x2021, +0x2402021, 0xa0016fa, 0x24020017, 0x8d660010, +0x50c0ffe6, 0x2021, 0x2402021, 0xa0016fa, +0x24020011, 0x2402021, 0x24020015, 0xe0016a9, +0xa3820050, 0x240fffff, 0x104fffdc, 0x2404ffff, +0xa0016e9, 0x8e260000, 0xa001720, 0x24020014, +0x3c080004, 0xc83824, 0x50e0ffd4, 0x2021, +0x2402021, 0xa0016fa, 0x24020013, 0x8f860024, +0x27bdffe0, 0xafb10014, 0xafbf0018, 0xafb00010, +0x90c300c4, 0x30a500ff, 0x30620020, 0x10400008, +0x808821, 0x8ccb00c0, 0x2409ffdf, 0x256a0001, +0xacca00c0, 0x90c800c4, 0x1093824, 0xa0c700c4, +0x14a00040, 0x3c0c8000, 0x8f840024, 0x908700c4, +0x2418ffbf, 0x2406ffef, 0x30e3007f, 0xa08300c4, +0x979f0044, 0x8f820048, 0x8f8d0024, 0x3e2c823, +0xa7990044, 0xa5a000ac, 0x91af00c4, 0x1f87024, +0xa1ae00c4, 0x8f8c0024, 0xa18000c7, 0x8f8a0024, +0xa5400072, 0xad4000dc, 0x914500c4, 0xa65824, +0xa14b00c4, 0x8f900020, 0x8f840048, 0x97860044, +0x2042821, 0x10c0000f, 0xaf850020, 0xa3800040, +0x3c078000, 0x8e2c0008, 0x94ed0120, 0x8e2b0004, +0x18d5021, 0x14b8021, 0x2062023, 0x3086ffff, +0x30c8000f, 0x39090001, 0x31310001, 0x16200009, +0xa3880040, 0x93860030, 0x8fbf0018, 0x8fb10014, +0x8fb00010, 0x27bd0020, 0xaf85004c, 0x3e00008, +0xaf860048, 0xc87023, 0x8fbf0018, 0x93860030, +0x8fb10014, 0x8fb00010, 0x34ef0c00, 0x10f2821, +0x27bd0020, 0xacee0084, 0xaf85004c, 0x3e00008, +0xaf860048, 0x35900180, 0x2002821, 0xe001684, +0x24060082, 0x8f840024, 0x908600c4, 0x30c50040, +0x50a0ffba, 0xa3800050, 0x8f850034, 0x3c068000, +0x8ccd01b8, 0x5a0fffe, 0x8f890054, 0x24086082, +0x24070002, 0xae090000, 0xa6080008, 0xa207000b, +0x8ca30008, 0x3c0e1000, 0xae030010, 0x8ca2000c, +0xae020014, 0x8cbf0014, 0xae1f0018, 0x8cb90018, +0xae190024, 0x8cb80024, 0xae180028, 0x8caf0028, +0xae0f002c, 0xacce01b8, 0xa001744, 0xa3800050, +0x8f8a0024, 0x27bdffe0, 0xafb10014, 0xafb00010, +0x8f880048, 0xafbf0018, 0x93890028, 0x954200ac, +0x30d100ff, 0x109182b, 0x808021, 0x30ac00ff, +0x3047ffff, 0x5821, 0x14600003, 0x310600ff, +0x1203021, 0x1095823, 0x97830044, 0x68202b, +0x1480001b, 0x0, 0x10680043, 0x240a0001, +0x118a0048, 0x34e70880, 0x3165ffff, 0xe001626, +0x2002021, 0xe001666, 0x8f840054, 0x8f840024, +0x948d0070, 0x25ac0001, 0xa48c0070, 0x948b0070, +0x3c060800, 0x8cc63188, 0x31677fff, 0x10e6004f, +0x0, 0x2002021, 0x2202821, 0x8fbf0018, +0x8fb10014, 0x8fb00010, 0xa001730, 0x27bd0020, +0x914400c4, 0x2406ff80, 0x868825, 0xa15100c4, +0x97840044, 0x3088ffff, 0x1100001c, 0x93890028, +0x8f8e0024, 0x2419efff, 0x8bf823, 0x95d800ac, +0x168682b, 0x33e900ff, 0x3197824, 0xa5cf00ac, +0x51a0002a, 0x1005821, 0x8e050020, 0x2408fffb, +0x24030001, 0xa81024, 0xae020020, 0x11830025, +0x34e78000, 0x2002021, 0x3165ffff, 0xe001626, +0x1203021, 0x978b0044, 0x8f870048, 0xa7800044, +0xeb8023, 0xaf900048, 0x93890028, 0x8f8c0024, +0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x27bd0020, +0x3e00008, 0xa18900c7, 0x8e080020, 0x2409fffb, +0x34e78000, 0x1092824, 0xae050020, 0x158affba, +0x34e70880, 0x2002021, 0xe0015f4, 0x3165ffff, +0x2002021, 0x2202821, 0x8fbf0018, 0x8fb10014, +0x8fb00010, 0xa001730, 0x27bd0020, 0xa0017e7, +0x4821, 0x2002021, 0x3165ffff, 0xe0015f4, +0x1203021, 0x978b0044, 0x8f870048, 0xa7800044, +0xeb8023, 0xa0017f7, 0xaf900048, 0x94890070, +0x240a8000, 0x12a4024, 0xa4880070, 0x90850070, +0x90990070, 0x30a200ff, 0x219c2, 0x3f827, +0x1fc1c0, 0x332f007f, 0x1f87025, 0xa08e0070, +0xa0017cf, 0x2002021, 0x8f880024, 0x24030001, +0x910a0078, 0x910500c7, 0x25090078, 0x3147003f, +0x24e6ffe0, 0xc31804, 0x2cc20020, 0x30670019, +0xa3850028, 0x1040001a, 0xaf890034, 0x3c0a8000, +0x354b0002, 0x24050001, 0x24060001, 0x14e00016, +0x6b1024, 0x2821, 0x1440000f, 0x30630020, +0x1060000f, 0x24050001, 0x8d060074, 0x8d190074, +0x2403ff80, 0xc31024, 0x27940, 0x3338007f, +0x1f86825, 0x3c0e1000, 0x1ae6025, 0xad4c0830, +0x91280001, 0x31060001, 0xa0017a5, 0x0, +0x3e00008, 0x0, 0x8d0f0074, 0x8d0d0074, +0x2418ff80, 0x1f87024, 0xe4140, 0x31ac007f, +0x10c5025, 0x3c0b1000, 0x14b3825, 0x3c098000, +0xa0017a5, 0xad270830, 0x27bdffd8, 0xafb00010, +0x8f900034, 0xafb40020, 0xafb10014, 0xafbf0024, +0xafb3001c, 0xafb20018, 0x8e050010, 0x3c020800, +0x8c4231b0, 0x8f860038, 0x30a73fff, 0xe2182b, +0x8cd20014, 0x808821, 0x8cd30020, 0x10600007, +0xa021, 0x90cb000d, 0x240aff80, 0x14b4824, +0x312800ff, 0x1500000c, 0x56382, 0x2202021, +0x2411000d, 0xa3910050, 0x8fbf0024, 0x8fb40020, +0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0xa0016a9, 0x27bd0028, 0x31850003, 0x54a0fff4, +0x2202021, 0x94cf001c, 0x8f8e0024, 0x8e070028, +0xa5cf00d8, 0x8ccd0010, 0x24d3023, 0x10e6005c, +0x2402001f, 0xe0016a9, 0xa3820050, 0x241fffff, +0x105f004e, 0x2404ffff, 0x8f83003c, 0x8f88002c, +0x2639821, 0x8d090010, 0x1231023, 0x8f83001c, +0xad020010, 0xad130020, 0x8c670074, 0xf3202b, +0x14800062, 0x2202021, 0x8f860038, 0x8e0c0024, +0x8cc50024, 0x11850007, 0x2202021, 0x240e001c, +0xe0016a9, 0xa38e0050, 0x240dffff, 0x104d0037, +0x2404ffff, 0x8f84002c, 0x8c980024, 0x270f0001, +0xac8f0024, 0x12720044, 0x8f99001c, 0x8f320074, +0x12530041, 0x3c0a0080, 0x8e090000, 0x12a1024, +0x1440003a, 0x0, 0x8e040014, 0x2412ffff, +0x10920006, 0x240b001b, 0x2202021, 0xe0016a9, +0xa38b0050, 0x10520021, 0x2404ffff, 0x8e030000, +0x3c0c0001, 0x6c2824, 0x10a00013, 0x3c060080, +0x66a024, 0x16800009, 0x2002821, 0x2202021, +0x240e001a, 0xe0016a9, 0xa38e0050, 0x240dffff, +0x104d0012, 0x2404ffff, 0x2002821, 0x2202021, +0xe0016c9, 0x24060001, 0x2410ffff, 0x2404ffff, +0x1050000a, 0x24140001, 0x8f8f002c, 0x2202021, +0x2803021, 0x95f20034, 0x24050001, 0x26580001, +0xe0017a5, 0xa5f80034, 0x2021, 0x8fbf0024, +0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, +0x8fb00010, 0x801021, 0x3e00008, 0x27bd0028, +0x8f83003c, 0xe3c821, 0x259c02b, 0x1300ffa8, +0x8f88002c, 0xa00188e, 0x24020018, 0xac800020, +0xa0018b8, 0x8e040014, 0x8e1f0000, 0x3c070080, +0x3e79824, 0x1660fff9, 0x2408001a, 0x2202021, +0xe0016a9, 0xa3880050, 0x2403ffff, 0x1443ffba, +0x2404ffff, 0xa0018e1, 0x8fbf0024, 0x240b001d, +0xe0016a9, 0xa38b0050, 0x240affff, 0x144aff9a, +0x2404ffff, 0xa0018e1, 0x8fbf0024, 0x8f850024, +0x27bdffd8, 0xafb3001c, 0xafb20018, 0xafb10014, +0xafb00010, 0xafbf0020, 0x90a700c4, 0x8f900034, +0x2412ffff, 0x34e20040, 0x92060000, 0xa0a200c4, +0x8e030010, 0x809821, 0x10720006, 0x30d1003f, +0x2408000d, 0xe0016a9, 0xa3880050, 0x10520026, +0x2406ffff, 0x8f8a0024, 0x8e090018, 0x8d4400c0, +0x11240007, 0x240c000e, 0x2602021, 0xe0016a9, +0xa38c0050, 0x240bffff, 0x104b001b, 0x2406ffff, +0x24040020, 0x12240004, 0x8f8d0024, 0x91af00c4, +0x35ee0020, 0xa1ae00c4, 0x8f85003c, 0x10a0001a, +0x0, 0x1224004b, 0x8f980024, 0x8f92fed4, +0x2406fffd, 0x97100070, 0x9651000a, 0x1230000b, +0x8fbf0020, 0x3c1f0800, 0x8fff318c, 0x3e5c82b, +0x1720001e, 0x2602021, 0x2821, 0xe0017a5, +0x24060001, 0x3021, 0x8fbf0020, 0x8fb3001c, +0x8fb20018, 0x8fb10014, 0x8fb00010, 0xc01021, +0x3e00008, 0x27bd0028, 0x5224002a, 0x8e030014, +0x8f840024, 0x94890070, 0x25280001, 0xa4880070, +0x94870070, 0x3c050800, 0x8ca53188, 0x30e27fff, +0x1045000e, 0x0, 0x2602021, 0xe001730, +0x24050001, 0xa001943, 0x3021, 0x2402002d, +0xa3820050, 0xe0016a9, 0x2413ffff, 0x1453ffe1, +0x2406ffff, 0xa001944, 0x8fbf0020, 0x94980070, +0x24198000, 0x24050001, 0x3199024, 0xa4920070, +0x90910070, 0x908d0070, 0x323000ff, 0x1079c2, +0xf7027, 0xe61c0, 0x31ab007f, 0x16c5025, +0xa08a0070, 0xe001730, 0x2602021, 0xa001943, +0x3021, 0x2406ffff, 0x1466ffd6, 0x8f840024, +0x2602021, 0xe001730, 0x24050001, 0xa001943, +0x3021, 0x2602021, 0xa00195d, 0x2402000a, +0x8f880024, 0x27bdffe8, 0xafb00010, 0xafbf0014, +0x910a00c4, 0x8f870034, 0x808021, 0x35490040, +0x8ce60010, 0xa10900c4, 0x3c020800, 0x8c4231b0, +0x30c53fff, 0xa2182b, 0x10600007, 0x8f850038, +0x240dff80, 0x90ae000d, 0x1ae6024, 0x318b00ff, +0x15600008, 0x6c382, 0x2002021, 0x2403000d, +0x8fbf0014, 0x8fb00010, 0x27bd0018, 0xa0016a9, +0xa3830050, 0x33060003, 0x240f0002, 0x54cffff7, +0x2002021, 0x94a2001c, 0x8f850024, 0x24190023, +0xa4a200d8, 0x8ce80000, 0x81e02, 0x307f003f, +0x13f90035, 0x3c0a0083, 0x8ce80018, 0x8ca600c0, +0x11060008, 0x0, 0x2405000e, 0xe0016a9, +0xa3850050, 0x2407ffff, 0x10470018, 0x2404ffff, +0x8f850024, 0x90a900c4, 0x35240020, 0xa0a400c4, +0x8f8c002c, 0x918e000d, 0x31cd007f, 0xa18d000d, +0x8f83003c, 0x1060001c, 0x2002021, 0x8f840038, +0x8c980010, 0x303782b, 0x11e0000d, 0x24190018, +0x2002021, 0xa3990050, 0xe0016a9, 0x2410ffff, +0x10500002, 0x2404ffff, 0x2021, 0x8fbf0014, +0x8fb00010, 0x801021, 0x3e00008, 0x27bd0018, +0x8c860010, 0x8f9f002c, 0x2002021, 0xc31023, +0xafe20010, 0x24050001, 0xe0017a5, 0x24060001, +0xa0019cc, 0x2021, 0xe001730, 0x24050001, +0xa0019cc, 0x2021, 0x10a5824, 0x156affd9, +0x8f8c002c, 0xa0a600ec, 0xa0019b9, 0xa3860042, +0x27bdffd8, 0xafb00010, 0x8f900034, 0xafb20018, +0xafbf0020, 0xafb3001c, 0xafb10014, 0x8e110010, +0x3c030800, 0x8c6331b0, 0x32253fff, 0xa3102b, +0x10400008, 0x809021, 0x8f860038, 0x2409ff80, +0x90ca000d, 0x12a4024, 0x310700ff, 0x14e0000b, +0x116b82, 0x2402021, 0x2412000d, 0xa3920050, +0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, +0x8fb00010, 0xa0016a9, 0x27bd0028, 0x31ac0003, +0x240b0001, 0x558bfff4, 0x2402021, 0x90cf000d, +0x31ee0008, 0x11c00060, 0x8f93003c, 0x16600009, +0x24020027, 0x8e19000c, 0x8cd80020, 0x17380005, +0x24020020, 0x8e020008, 0x8cdf0024, 0x105f0040, +0x24020020, 0xe0016a9, 0xa3820050, 0x2406ffff, +0x10460033, 0x2404ffff, 0x8f99002c, 0x240afff7, +0x3c13800e, 0x9329000d, 0x2404ff80, 0x3c0d8000, +0x12af824, 0xa33f000d, 0x8f99001c, 0x3c080800, +0x8d0831ac, 0x8f830054, 0x97270078, 0x8f9f002c, +0x1031021, 0x30e57fff, 0x53040, 0x467821, +0x31f8007f, 0x3136021, 0x1e47024, 0xadae002c, +0xa5910000, 0x8feb0028, 0x256a0001, 0xafea0028, +0x8fe3002c, 0x8e09002c, 0x694021, 0xafe8002c, +0x8e07002c, 0xafe70030, 0x8e050014, 0xafe50034, +0x97e6003a, 0x24c20001, 0xa7e2003a, 0x97330078, +0x3c100800, 0x8e1031b0, 0x26630001, 0x30717fff, +0x12300027, 0x603021, 0x8f8f001c, 0x2402021, +0x24050001, 0xe001730, 0xa5e60078, 0x2021, +0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, +0x8fb00010, 0x801021, 0x3e00008, 0x27bd0028, +0x8e050014, 0x2413ffff, 0x10b3001d, 0x8f830024, +0x8e080018, 0x8c6700c0, 0x15070009, 0x2402000e, +0x8e0a0024, 0x8cc90028, 0x15490005, 0x24020021, +0x8e070028, 0x8ccb002c, 0x10eb0013, 0x2402001f, +0xe0016a9, 0xa3820050, 0x1453ffb3, 0x2404ffff, +0xa001a4e, 0x8fbf0020, 0xa001a16, 0x24020024, +0x240e8000, 0x6e6824, 0x31acffff, 0xc5bc2, +0x317100ff, 0x118027, 0xa001a47, 0x1033c0, +0xa001a65, 0x24020025, 0x8e05002c, 0x10a0ffec, +0x24020023, 0x8f8e001c, 0x8dcd0074, 0x1a5602b, +0x1580ffe7, 0x24020026, 0x8ccf0014, 0xa7c021, +0x1f8202b, 0x1080ff99, 0x8f99002c, 0x2402021, +0xa001a65, 0x24020022, 0x27bdffe0, 0xafb00010, +0x8f900034, 0xafb10014, 0xafbf0018, 0x8e050010, +0x3c030800, 0x8c6331b0, 0x808821, 0x30a43fff, +0x83102b, 0x10400007, 0x8f860038, 0x2409ff80, +0x90ca000d, 0x12a4024, 0x310700ff, 0x14e00009, +0x8f8b003c, 0x2410000d, 0x2202021, 0xa3900050, +0x8fbf0018, 0x8fb10014, 0x8fb00010, 0xa0016a9, +0x27bd0020, 0x11600008, 0x5c382, 0x8f8f0024, +0x8f8efed4, 0x2407fffd, 0x95ec0070, 0x95cd000a, +0x11ac0038, 0x8fbf0018, 0x33050003, 0x14a00010, +0x0, 0x92190002, 0x13200041, 0x0, +0x8e060024, 0x50c0000f, 0x92040003, 0x2202021, +0x2402000f, 0xe0016a9, 0xa3820050, 0x2408ffff, +0x14480007, 0x2407ffff, 0xa001ae2, 0x8fbf0018, +0x90c3000d, 0x30640008, 0x10800037, 0x2202021, +0x92040003, 0x24070002, 0x308900ff, 0x15270005, +0x308f00ff, 0x8f8a003c, 0x11400031, 0x240c002c, +0x308f00ff, 0x39e50010, 0x2cad0001, 0x2dee0001, +0x2002821, 0x1cd3025, 0xe0016c9, 0x2202021, +0x2410ffff, 0x1050000e, 0x2407ffff, 0x8f83003c, +0x10600017, 0x2202021, 0x3c190800, 0x8f39318c, +0x323c02b, 0x5700000c, 0x2411002d, 0x2202021, +0x2821, 0xe0017a5, 0x24060001, 0x3821, +0x8fbf0018, 0x8fb10014, 0x8fb00010, 0xe01021, +0x3e00008, 0x27bd0020, 0xe0016a9, 0xa3910050, +0x1450fff6, 0x2407ffff, 0xa001ae2, 0x8fbf0018, +0xe001730, 0x24050001, 0xa001ae1, 0x3821, +0x8cdf0024, 0x8e020024, 0x545fffc1, 0x2202021, +0xa001ac2, 0x92040003, 0xa001ab6, 0x24020010, +0x2202021, 0xe0016a9, 0xa38c0050, 0x240bffff, +0x104bffe3, 0x2407ffff, 0xa001ac9, 0x92040003, +0x30a500ff, 0x24060001, 0x24a90001, 0xc9102b, +0x1040000c, 0x4021, 0x240a0001, 0xa61823, +0x308b0001, 0x24c60001, 0x6a3804, 0x42042, +0x11600002, 0xc9182b, 0x1074025, 0x1460fff8, +0xa61823, 0x3e00008, 0x1001021, 0x27bdffd8, +0xafb00018, 0x8f900034, 0xafb1001c, 0xafbf0020, +0x2403ffff, 0x2411002f, 0xafa30010, 0x92060000, +0x24050008, 0x26100001, 0x662026, 0xe001b01, +0x308400ff, 0x21e00, 0x3c021edc, 0x34466f41, +0xa001b29, 0x1021, 0x10a00009, 0x801821, +0x24450001, 0x30a2ffff, 0x2c450008, 0x461fffa, +0x32040, 0x862026, 0x14a0fff9, 0x801821, +0xe001b01, 0x24050020, 0x8fa30010, 0x2629ffff, +0x313100ff, 0x34202, 0x240700ff, 0x1627ffe2, +0x1021826, 0x35027, 0xafaa0014, 0xafaa0010, +0x3021, 0x27a80010, 0x27a70014, 0xe67823, +0x91ed0003, 0x24ce0001, 0xc86021, 0x31c600ff, +0x2ccb0004, 0x1560fff9, 0xa18d0000, 0x8fa20010, +0x8fbf0020, 0x8fb1001c, 0x8fb00018, 0x3e00008, +0x27bd0028, 0x93830030, 0x27bdffe0, 0x24020034, +0xafb10014, 0xafb00010, 0xafbf001c, 0xafb20018, +0x808821, 0x10620062, 0xa08021, 0x92040004, +0x14800045, 0x8f880024, 0xa3800028, 0x8e050004, +0x8d0600c8, 0x3c0700ff, 0x34e3ffff, 0xa32824, +0xc5102b, 0x1440004d, 0xaf85003c, 0x978a0044, +0x8f870048, 0x1471023, 0x10a00032, 0xa7820044, +0x8f98001c, 0x304cffff, 0x9312007c, 0x127882, +0x31f10001, 0x117080, 0x1c56821, 0x18d582b, +0x11600061, 0x8f860024, 0x8f890020, 0x8f84004c, +0x1089005e, 0x3c023f01, 0x8e1f0000, 0x3c102500, +0x3e2c824, 0x1730007a, 0x8f840034, 0x8f870034, +0x8f860024, 0x8ce30000, 0xacc30078, 0x8ce50010, +0xacc50088, 0x8f870048, 0x8f85003c, 0x938d0028, +0x30ae0003, 0xe4023, 0x310a0003, 0x14d4021, +0xa3880028, 0x94cb00ac, 0x1276021, 0xaf8c0020, +0x35691000, 0xa4c900ac, 0x16200051, 0x1452021, +0xaf840048, 0x2021, 0x8fbf001c, 0x8fb20018, +0x8fb10014, 0x8fb00010, 0x801021, 0x3e00008, +0x27bd0020, 0x8f840020, 0xaf800048, 0x873021, +0xa001b92, 0xaf860020, 0x241f000c, 0xa39f0050, +0xe0016a9, 0x2202021, 0x2419ffff, 0x1059ffee, +0x2404ffff, 0x8f880024, 0xa3800028, 0x8e050004, +0x8d0600c8, 0x3c0700ff, 0x34e3ffff, 0xa32824, +0xc5102b, 0x1040ffb5, 0xaf85003c, 0x2202021, +0x24090019, 0xa3890050, 0xe0016a9, 0x2411ffff, +0x1051ffdd, 0x2404ffff, 0xa001b64, 0x8f85003c, +0x8f840024, 0x8f870034, 0x8cf20030, 0x908600c4, +0x30c50010, 0x14a00010, 0x8f830048, 0x2c680005, +0x15000028, 0x0, 0x908a00c4, 0x246bfffc, +0x31490010, 0x15200008, 0x316400ff, 0x8f8d004c, +0x8f8c0020, 0x11ac0004, 0x388f0001, 0x31ee0001, +0x15c0002f, 0x0, 0xe001b14, 0x0, +0xa001beb, 0x0, 0x8f890020, 0x938d0028, +0x30ae0003, 0xe4023, 0x310a0003, 0x14d4021, +0xa3880028, 0x94cb00ac, 0x1276021, 0xaf8c0020, +0x35691000, 0xa4c900ac, 0x1220ffb1, 0x1452021, +0x25180004, 0xa3980028, 0x94cf00ac, 0x24920004, +0xaf920048, 0x35f12000, 0xa4d100ac, 0xa001b93, +0x2021, 0x8c8200dc, 0x1242ff6c, 0x2202021, +0x24180005, 0xa3980050, 0xe0016a9, 0x2412ffff, +0x1452ff66, 0x2404ffff, 0xa001b94, 0x8fbf001c, +0x30e500ff, 0xe0015b0, 0x3021, 0x8f860024, +0x8f870048, 0x8f890020, 0xa001b84, 0x8f85003c, +0xe0015db, 0x0, 0xa001beb, 0x0, +0x93830042, 0x27bdffe0, 0x24020002, 0xafb20018, +0xafb10014, 0xafbf001c, 0x808821, 0xafb00010, +0x9021, 0x10620055, 0x2404fffd, 0x97830044, +0x8f850048, 0x3066ffff, 0xc5202b, 0x1480005b, +0x93870030, 0x3c088000, 0x95040120, 0x10e50052, +0x8f8a0020, 0x8f84004c, 0x30a500ff, 0xe0015b0, +0x24060001, 0x8f9f0054, 0x3c058000, 0x3c194080, +0x27ed0178, 0x31b00078, 0x240eff80, 0x2195825, +0x34af0900, 0x31b80007, 0x1ae6024, 0xacac0800, +0x30f8021, 0xacab0810, 0x2202021, 0x2002821, +0xe001b4e, 0xaf900034, 0x2403ffff, 0x10430033, +0x2404ffff, 0x8e0c0010, 0x3c070800, 0x8ce731b0, +0x92060000, 0x31843fff, 0x87102b, 0x10400023, +0x30cd003f, 0x8f980054, 0x47180, 0x3c040800, +0x8c8431a8, 0x2409ff80, 0x93900041, 0x984021, +0x10e2021, 0x897024, 0xe5140, 0x3c098000, +0x3099007f, 0x3c0f0080, 0x8f880024, 0x35250940, +0x35e20001, 0x1593825, 0x308b0078, 0x30860007, +0x3c031000, 0x3c1f800c, 0xc5c021, 0x1625825, +0xe35025, 0x33f7821, 0x36050001, 0xad2e0804, +0xaf980038, 0xad2b0814, 0xaf8f002c, 0xad2e0028, +0xad040074, 0xad2a0830, 0xa3850041, 0x93830042, +0x24100003, 0x50700027, 0x25a3ffe0, 0x240c0001, +0x106c001c, 0x24060023, 0x2402021, 0x8fbf001c, +0x8fb20018, 0x8fb10014, 0x8fb00010, 0x801021, +0x3e00008, 0x27bd0020, 0x31490003, 0x5520ffae, +0x8f84004c, 0xa001c27, 0x8f90004c, 0x8f84004c, +0x306500ff, 0xe0015b0, 0x24060001, 0x938b0030, +0x24050034, 0x11650018, 0x97830044, 0x8f850048, +0x3062ffff, 0xa25823, 0xaf8b0048, 0xa001c5f, +0xa7800044, 0x11a60037, 0x0, 0x2202021, +0x2411000b, 0xe0016a9, 0xa3910050, 0xa001c5f, +0x409021, 0x2c720020, 0x1240fff8, 0x3f880, +0x3c070800, 0x24e77960, 0x3e7c821, 0x8f2d0000, +0x1a00008, 0x0, 0x8f850048, 0x2ca20005, +0x5440001d, 0xa7800044, 0x978a0044, 0x3148ffff, +0xa84823, 0x2d2f0005, 0x11e00003, 0x314400ff, +0x24aefffc, 0x31c400ff, 0x8f90004c, 0x8f980020, +0x12180004, 0x38990001, 0x332d0001, 0x15a00029, +0x0, 0x8f910024, 0x922500c4, 0x34a30010, +0xa22300c4, 0x97830044, 0x8f850048, 0x8f840024, +0x3062ffff, 0xa25823, 0xac8000dc, 0xa7800044, +0xa001c5f, 0xaf8b0048, 0x3062ffff, 0xa25823, +0xa001c5f, 0xaf8b0048, 0x2403ffff, 0x11830005, +0x0, 0xe001981, 0x2202021, 0xa001c5f, +0x409021, 0xe001908, 0x2202021, 0xa001c5f, +0x409021, 0xe0019e5, 0x2202021, 0xa001c5f, +0x409021, 0xe00185f, 0x2202021, 0xa001c5f, +0x409021, 0xe001a87, 0x2202021, 0xa001c5f, +0x409021, 0xe0015db, 0x0, 0x97830044, +0x8f850048, 0x306cffff, 0xac3823, 0x2cff0005, +0x53e0ffa8, 0x3062ffff, 0x8f860024, 0xa7800044, +0xacc200dc, 0x3062ffff, 0xa25823, 0xa001c5f, +0xaf8b0048, 0x27bdffd0, 0xafb20018, 0xafb00010, +0xafbf0028, 0xafb50024, 0xafb40020, 0xafb3001c, +0xafb10014, 0x3c0c8000, 0x8d880128, 0x240fff80, +0x3c07800a, 0x25100100, 0x250b0080, 0x20f6824, +0x3205007f, 0x16f7024, 0xad8e0090, 0xa72821, +0xad8d0024, 0x90a700ec, 0x3169007f, 0x3c0a8004, +0x12a1821, 0xa3870042, 0x9066007c, 0x809021, +0xaf83001c, 0x30c20002, 0xaf880054, 0xaf850024, +0xa01821, 0x14400002, 0x24040034, 0x24040030, +0xa3840030, 0x8c6600cc, 0x30f100ff, 0x24040004, +0xaf860048, 0x12240004, 0xa3800050, 0x8e530004, +0x1660001d, 0x3c088000, 0x93870041, 0x30f20001, +0x1240000f, 0x8fbf0028, 0x8cb80074, 0x8ca40074, +0x2419ff80, 0x3198824, 0x117140, 0x308f007f, +0x1cf6025, 0x3c0d2000, 0x18d5825, 0x30f500fe, +0x3c0a8000, 0xad4b0830, 0xa3950041, 0x8fbf0028, +0x8fb50024, 0x8fb40020, 0x8fb3001c, 0x8fb20018, +0x8fb10014, 0x8fb00010, 0x24020001, 0x27bd0030, +0x3e00008, 0xaca600cc, 0x8e590008, 0x951f0120, +0x8e460010, 0x33fc021, 0x3307ffff, 0x30f5000f, +0x32b40001, 0xaf860020, 0x1680003b, 0xa3950040, +0x35060c00, 0x2a61021, 0xf51823, 0xad030084, +0xaf82004c, 0x8e490004, 0x3128ffff, 0x1100002b, +0xa7890044, 0x2410ff80, 0x3c158000, 0x3c142000, +0xa001d4d, 0x2413fffe, 0x90ae00c4, 0x20e6824, +0x31ac00ff, 0x1580002a, 0x2402021, 0x93840041, +0x97860044, 0x308f0001, 0x11e0000b, 0x2642824, +0x8f890024, 0x8d230074, 0x8d280074, 0xa3850041, +0x701024, 0x2c940, 0x311f007f, 0x33fc025, +0x3148825, 0xaeb10830, 0x10c00010, 0x8f850024, +0x90a700c4, 0x2075824, 0x316a00ff, 0x1540ffe6, +0x2402021, 0xe001c01, 0x97910044, 0x1040ffe8, +0x93840041, 0x2405fffd, 0x54450005, 0x8e430020, +0x2202821, 0xe001586, 0x2402021, 0x8e430020, +0x30700004, 0x1600000a, 0x2414fffb, 0x8f850024, +0xa001d03, 0x8f860048, 0xa001d2e, 0xaf86004c, +0xe00182b, 0x0, 0xa001d3d, 0x93840041, +0x749824, 0xe0015a0, 0xae530020, 0x8f850024, +0xa001d03, 0x8f860048, 0x27bdffd8, 0xafb3001c, +0xafb10014, 0xafbf0020, 0xafb20018, 0xafb00010, +0x3c028000, 0x8c520140, 0x8c4b0148, 0x3c048000, +0xb8c02, 0x322300ff, 0x317300ff, 0x8c8501b8, +0x4a0fffe, 0x34900180, 0xae120000, 0x8c870144, +0x2464fff0, 0x24060002, 0x2c830013, 0xae070004, +0xa6110008, 0xa206000b, 0xae130024, 0x1060004f, +0x8fbf0020, 0x44880, 0x3c0a0800, 0x254a79e0, +0x12a4021, 0x8d040000, 0x800008, 0x0, +0x3c100800, 0x8e1031a8, 0x31733fff, 0x138980, +0x2122821, 0x240cff80, 0xb12021, 0x264d0100, +0x26470080, 0x3c0f8000, 0x3c038004, 0x31a8007f, +0x30e9007f, 0x308a007f, 0x3c0e800a, 0x3c02800c, +0x8cc024, 0x1ac3024, 0xecc824, 0x1239821, +0x1428021, 0xade60024, 0x10ef821, 0xadf90090, +0xadf80028, 0xaf90002c, 0xaf9f0024, 0xaf93001c, +0xe001675, 0x1608021, 0x3c038000, 0x8c6b01b8, +0x560fffe, 0x8f87002c, 0x8f860024, 0x34650180, +0x90f9000d, 0xacb20000, 0x24c20078, 0x19c600, +0x187e03, 0xf9027, 0x1227c2, 0xa4b00006, +0x10800070, 0x240e6082, 0xa4ae0008, 0xa0a00005, +0x240f0002, 0xa0af000b, 0x4c400, 0x8f8b001c, +0x3c192700, 0x3199025, 0xacb20010, 0xaca00014, +0xaca00024, 0xaca00028, 0xaca0002c, 0x8d730038, +0x2411ff80, 0xacb30018, 0x90f0000d, 0x2302824, +0x30a400ff, 0x10800005, 0x8fbf0020, 0x90ec000d, +0x319f007f, 0xa0ff000d, 0x8fbf0020, 0x8fb3001c, +0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3c0a1000, +0x3c0d8000, 0x27bd0028, 0x3e00008, 0xadaa01b8, +0x265f0100, 0x2405ff80, 0x33f8007f, 0x3c068000, +0x3e57824, 0x3c19800a, 0x3192021, 0xaccf0024, +0x908e00c4, 0xae6824, 0x31ac00ff, 0x1180ffea, +0xaf840024, 0x248e0078, 0x95cd0012, 0x3c0c0800, +0x8d8c31a8, 0x3c03800c, 0x31ab3fff, 0x1924821, +0xb5180, 0x12a4021, 0x3104007f, 0x1051024, +0x833821, 0xacc20028, 0xe001675, 0xaf87002c, +0x3c038000, 0x8c6501b8, 0x4a0fffe, 0x0, +0xae120000, 0x8c720144, 0xae120004, 0xa6110008, +0x24110002, 0xa211000b, 0xae130024, 0xa001dd8, +0x8fbf0020, 0x3c126000, 0x8e452c08, 0x3c03f003, +0x3462ffff, 0xa2f824, 0xae5f2c08, 0x8e582c08, +0x3c1901b0, 0x3199825, 0xae532c08, 0xa001dd8, +0x8fbf0020, 0x264d0100, 0x31af007f, 0x3c10800a, +0x240eff80, 0x1f02821, 0x1ae6024, 0x3c0b8000, +0xad6c0024, 0x1660ffb8, 0xaf850024, 0x24110003, +0xa0b100ec, 0xa001dd8, 0x8fbf0020, 0x26480100, +0x310a007f, 0x3c0b800a, 0x2409ff80, 0x14b3021, +0x1092024, 0x3c078000, 0xace40024, 0xa001dd7, +0xaf860024, 0x944d0012, 0x321f3fff, 0x31ac3fff, +0x159fff8d, 0x240e6082, 0x90c300c4, 0x2409ff80, +0x1231024, 0x304a00ff, 0x1140ff87, 0x0, +0x24070004, 0xa0c700ec, 0x8f87002c, 0x24086084, +0x2406000d, 0xa4a80008, 0xa0a60005, 0xa001dc2, +0x240f0002, 0x0 }; +u32 bce_RXP_b09FwData[(0x0/4) + 1] = { 0x0 }; +u32 bce_RXP_b09FwRodata[(0x124/4) + 1] = { +0x5f865437, 0xe4ac62cc, 0x50103a45, +0x36621985, 0xbf14c0e8, 0x1bc27a1e, 0x84f4b556, +0x94ea6fe, 0x7dda01e7, 0xc04d7481, 0x80080100, +0x80080080, 0x80080000, 0x8004fbc, 0x8004fbc, +0x8005098, 0x800506c, 0x8005050, 0x8004f8c, +0x8004f8c, 0x8004f8c, 0x8004fc4, 0x80072bc, +0x8007308, 0x80072c8, 0x80071f0, 0x80072c8, +0x80072f8, 0x80072c8, 0x80071f0, 0x80071f0, +0x80071f0, 0x80071f0, 0x80071f0, 0x80071f0, +0x80071f0, 0x80071f0, 0x80071f0, 0x80071f0, +0x80072e8, 0x80072d8, 0x80071f0, 0x80071f0, +0x80071f0, 0x80071f0, 0x80071f0, 0x80071f0, +0x80071f0, 0x80071f0, 0x80071f0, 0x80071f0, +0x80071f0, 0x80071f0, 0x80072d8, 0x8007890, +0x800775c, 0x8007858, 0x800775c, 0x8007828, +0x8007644, 0x800775c, 0x800775c, 0x800775c, +0x800775c, 0x800775c, 0x800775c, 0x800775c, +0x800775c, 0x800775c, 0x800775c, 0x800775c, +0x800775c, 0x8007784, 0x0 }; +u32 bce_RXP_b09FwBss[(0x20/4) + 1] = { 0x0 }; +u32 bce_RXP_b09FwSbss[(0x58/4) + 1] = { 0x0 }; +u32 bce_RXP_b09FwSdata[(0x0/4) + 1] = { 0x0 }; + + +int bce_CP_b09FwReleaseMajor = 0x1; +int bce_CP_b09FwReleaseMinor = 0x0; +int bce_CP_b09FwReleaseFix = 0x0; +u32 bce_CP_b09FwStartAddr = 0x08000080; +u32 bce_CP_b09FwTextAddr = 0x08000000; +int bce_CP_b09FwTextLen = 0x5418; +u32 bce_CP_b09FwDataAddr = 0x080055a0; +int bce_CP_b09FwDataLen = 0x84; +u32 bce_CP_b09FwRodataAddr = 0x08005418; +int bce_CP_b09FwRodataLen = 0x16c; +u32 bce_CP_b09FwBssAddr = 0x080056b8; +int bce_CP_b09FwBssLen = 0x19c; +u32 bce_CP_b09FwSbssAddr = 0x08005624; +int bce_CP_b09FwSbssLen = 0x91; +u32 bce_CP_b09FwSDataAddr = 0x00000000; +int bce_CP_b09FwSDataLen = 0x0; +u32 bce_CP_b09FwText[(0x5418/4) + 1] = { +0xa000020, +0x0, 0x0, 0xd, 0x6370342e, +0x362e3136, 0x0, 0x4061004, 0x0, +0x0, 0x0, 0x0, 0x0, +0x38003c00, 0x0, 0x0, 0x0, +0x0, 0x20, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x21003800, 0x1, 0x2b, 0x0, +0x10000003, 0x0, 0xd, 0xd, +0x3c020800, 0x24425624, 0x3c030800, 0x24635854, +0xac400000, 0x43202b, 0x1480fffd, 0x24420004, +0x3c1d0800, 0x37bd9ffc, 0x3a0f021, 0x3c100800, +0x26100080, 0x3c1c0800, 0x279c5624, 0xe000286, +0x0, 0xd, 0xa01821, 0x801021, +0x802821, 0x3c046000, 0x3c076000, 0x24060008, +0x10600006, 0x34842078, 0x8c420000, 0xace22008, +0x8c630000, 0x3e00008, 0xace3200c, 0xa000e38, +0x0, 0x24030040, 0x3c026000, 0x3e00008, +0xac432000, 0x3c076000, 0x8f860000, 0x8ce52074, +0x861021, 0xa2182b, 0x14600007, 0x2821, +0x8f8afdfc, 0x24050001, 0xa1440013, 0x8f890000, +0x1244021, 0xaf880000, 0x3e00008, 0xa01021, +0x8f84fdfc, 0x8f850000, 0x90860013, 0x30c300ff, +0xa31023, 0xaf820000, 0x3e00008, 0xa0800013, +0x8f84fdfc, 0x27bdffe8, 0xafb00010, 0xafbf0014, +0x90890011, 0x90870011, 0x24020028, 0x312800ff, +0x39060028, 0x30e300ff, 0x2485002c, 0x2cd00001, +0x10620016, 0x2484001c, 0xe000037, 0x0, +0x8f8ffdfc, 0x3c056000, 0x24020204, 0x95ee003e, +0x95ed003c, 0xe5c00, 0x31acffff, 0x16c5025, +0xacaa2010, 0x52000001, 0x24020004, 0xaca22000, +0x0, 0x0, 0x0, 0x8fbf0014, +0x8fb00010, 0x3e00008, 0x27bd0018, 0xa00006f, +0x2821, 0x8f85fdfc, 0x27bdffd8, 0xafbf0020, +0xafb3001c, 0xafb20018, 0xafb10014, 0xafb00010, +0x809821, 0x90a40011, 0x24b0001c, 0x24b1002c, +0x308300ff, 0x38620028, 0xe000059, 0x2c520001, +0xe000061, 0x0, 0x2002021, 0x12400002, +0x2202821, 0x2821, 0xe000037, 0x0, +0x8f8dfdfc, 0x3c088000, 0x3c056000, 0x95ac003e, +0x95ab003c, 0x2683025, 0xc4c00, 0x316affff, +0x12a3825, 0xaca72010, 0x24020202, 0xaca62014, +0x52400001, 0x24020002, 0x8fbf0020, 0x8fb3001c, +0x8fb20018, 0x8fb10014, 0x8fb00010, 0x27bd0028, +0x3e00008, 0xaca22000, 0x27bdffe0, 0xafb20018, +0xafb10014, 0xafb00010, 0xafbf001c, 0x3c116000, +0x8e232074, 0x8f820000, 0x30d0ffff, 0x30f2ffff, +0x1062000c, 0x2406008f, 0xe000037, 0x0, +0x3c06801f, 0x104400, 0x34c5ff00, 0x1123825, +0x24040002, 0xae272010, 0x3021, 0xae252014, +0xae242000, 0x8fbf001c, 0x8fb20018, 0x8fb10014, +0x8fb00010, 0xc01021, 0x3e00008, 0x27bd0020, +0x27bdffe0, 0xafb00010, 0x30d0ffff, 0xafbf0018, +0xafb10014, 0xe000037, 0x30f1ffff, 0x102400, +0x918025, 0x3c036000, 0xac702010, 0x8fbf0018, +0x8fb10014, 0x8fb00010, 0x24020004, 0xac622000, +0x27bd0020, 0x3e00008, 0x1021, 0x27bdffe8, +0x3c0c6018, 0xafbf0010, 0x8d985000, 0x2419ff7f, +0x3c088000, 0x3197824, 0x35ee380c, 0x340d8071, +0x240a0031, 0x24090c00, 0xad8e5000, 0x3c0b800a, +0xad8d53bc, 0xad0a0008, 0xad090024, 0xe0004a9, +0xaf8b002c, 0xe000467, 0x0, 0xe000046, +0x0, 0x3c076000, 0x8ce50808, 0x2406fff0, +0x3c035709, 0xa62024, 0x3462f000, 0x10820043, +0x241f0001, 0xe000bca, 0xaf800038, 0x3c066016, +0x3c086014, 0x8cc70000, 0x8d0500a0, 0x3c03ffff, +0xe32024, 0x3c025353, 0x52fc2, 0x10820044, +0x34c87c00, 0x950201f2, 0xa7800050, 0x10400003, +0xa7800060, 0x384c1e1e, 0xa78c0050, 0x950201f8, +0x10400004, 0x8f8e0038, 0x384d1e1e, 0xa78d0060, +0x8f8e0038, 0x11c00004, 0x97870060, 0x240f0020, +0xa78f0050, 0x97870060, 0x30e4ffff, 0x2c980081, +0x17000003, 0x97860050, 0x24070080, 0x24040080, +0x2cd90401, 0x53200001, 0x24060400, 0x3c036000, +0x8c650438, 0x241f103c, 0x30a2ffff, 0x505f002a, +0xa3800062, 0x5480000c, 0xa3800062, 0x24020050, +0xa3820062, 0x93880062, 0x1100000a, 0x8fbf0010, +0x27bd0018, 0xa7800060, 0xa7800050, 0xa7800058, +0x3e00008, 0xa7800076, 0x93880062, 0x1500fff8, +0x8fbf0010, 0x27bd0018, 0xa7870060, 0xa7860050, +0xa7800058, 0x3e00008, 0xa7800076, 0xaf9f0038, +0xe000bca, 0x0, 0x3c066016, 0x3c086014, +0x8cc70000, 0x8d0500a0, 0x3c03ffff, 0xe32024, +0x3c025353, 0x52fc2, 0x1482ffbe, 0x34c87c00, +0x55880, 0x1665021, 0x8d490004, 0x3c066000, +0xa00010e, 0x1264021, 0x8d0a003c, 0x31490001, +0x11200009, 0x0, 0x1080ffd5, 0x24020050, +0x8d0b00c8, 0x31640001, 0x1480ffd3, 0x93880062, +0xa000131, 0x24020051, 0x1480ffcf, 0x93880062, +0xa000131, 0x24020050, 0x3083ffff, 0x8f88002c, +0x8f870028, 0x32140, 0x3c058000, 0x3c020050, +0x824825, 0x3c066000, 0x3c0a0100, 0x34ac0400, +0x8ccd08e0, 0x1aa5824, 0x11600005, 0x0, +0x8ccf08e0, 0x24e70001, 0x1ea7025, 0xacce08e0, +0x8d190010, 0x1805821, 0xacb90038, 0x8d180014, +0xacb8003c, 0xaca90030, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x3c038000, 0x8c640000, +0x30820020, 0x1040fffd, 0x3c0f6000, 0x8ded08e0, +0x3c0e0100, 0x1ae1824, 0x1460ffe1, 0x0, +0xaf870028, 0x3e00008, 0xaf8b003c, 0x8f85002c, +0x240bfff0, 0x3c068000, 0x94a7001a, 0x8ca90024, +0x30ecffff, 0xc38c0, 0xeb5024, 0x12a4021, +0xacc8003c, 0x8ca40024, 0x8cc3003c, 0x831023, +0x18400033, 0x0, 0x8cad0020, 0x25a20001, +0x3c0f0050, 0xacc20038, 0x35ee0010, 0x3c068000, +0xacce0030, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x0, 0x3c048000, 0x8c990000, 0x33380020, +0x1300fffd, 0x30e20008, 0x10400017, 0x3c098000, +0x8c880408, 0xaca80010, 0x8c83040c, 0xaca30014, +0x3c190020, 0x3c188000, 0xaf190030, 0x94ae0018, +0x94af001c, 0x1cf3021, 0xa4a60018, 0x94ad001a, +0x25a70001, 0xa4a7001a, 0x94ab001a, 0x94ac001e, +0x118b0003, 0x0, 0x3e00008, 0x0, +0x3e00008, 0xa4a0001a, 0x8d2a0400, 0xacaa0010, +0x8d240404, 0xaca40014, 0xa0001be, 0x3c190020, +0x8ca20020, 0xa0001a6, 0x3c0f0050, 0xa000194, +0x0, 0x3c030800, 0x8c630020, 0x8f820034, +0x27bdffe8, 0x10620008, 0xafbf0010, 0xe0001d8, +0xaf830034, 0x3c030800, 0x8c630020, 0x24040001, +0x10640004, 0x8f8c002c, 0x8fbf0010, 0x3e00008, +0x27bd0018, 0x8fbf0010, 0x3c058000, 0xa580000a, +0x958b000a, 0x958a0004, 0x27bd0018, 0x3167ffff, +0x3149000f, 0x94500, 0xe83025, 0x3e00008, +0xaca60080, 0x3c020800, 0x8c420020, 0x27bdffc8, +0xafbf0034, 0xafbe0030, 0xafb7002c, 0xafb60028, +0xafb50024, 0xafb40020, 0xafb3001c, 0xafb20018, +0xafb10014, 0x10400053, 0xafb00010, 0x8f84002c, +0x94860006, 0x9483000a, 0xc32823, 0x30b6ffff, +0x12c0004d, 0x8fbf0034, 0x94890018, 0x948a000a, +0x12a4023, 0x3102ffff, 0x2c2382b, 0x14e00002, +0x2c02021, 0x402021, 0x2c8c0005, 0x15800002, +0x80a021, 0x24140004, 0xe000167, 0x2802021, +0x8f87002c, 0x2809821, 0xaf800030, 0x94ed000a, +0x2808821, 0x12800051, 0x31b2ffff, 0x3c177000, +0x3c154000, 0x3c1e6000, 0x8f8f003c, 0x8dee0000, +0x1d71824, 0x50750053, 0x2202021, 0x2a3802b, +0x16000038, 0x3c182000, 0x1078004a, 0x0, +0x24100001, 0x8f830030, 0x1460003c, 0x2915823, +0x230f823, 0x250c821, 0x33f1ffff, 0x1620ffee, +0x3332ffff, 0x8f87002c, 0x3c120020, 0x3c118000, +0xae320030, 0x94ea000a, 0x3c178000, 0x26a4821, +0xa4e9000a, 0x94e3000a, 0x94e80004, 0x3065ffff, +0x3106000f, 0x61500, 0xa2f025, 0xaefe0080, +0x94f4000a, 0x94f50018, 0x12b4003a, 0x13c940, +0x8cf80014, 0x8cee0010, 0x3195821, 0x7821, +0x179682b, 0x1cf6021, 0x18d2021, 0xaceb0014, +0xace40010, 0x2d33823, 0x30f6ffff, 0x16c0ffb6, +0x8f84002c, 0x8fbf0034, 0x8fbe0030, 0x8fb7002c, +0x8fb60028, 0x8fb50024, 0x8fb40020, 0x8fb3001c, +0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, +0x27bd0038, 0x107e001b, 0x0, 0x1477ffc9, +0x24100001, 0xe0014fc, 0x0, 0x8f830030, +0x1060ffc8, 0x230f823, 0x2915823, 0x8f87002c, +0x1702021, 0xa000271, 0x3093ffff, 0x8f830030, +0x1460ffc8, 0x3c120020, 0x3c118000, 0xa00023a, +0xae320030, 0xe0003ea, 0x2202021, 0xa00022e, +0x408021, 0xe0007e2, 0x2402821, 0xa00022e, +0x408021, 0xe000d99, 0x2202021, 0xa00022e, +0x408021, 0xe000194, 0x0, 0xa000253, +0x2d33823, 0x27bdffd0, 0xafb50024, 0xafb40020, +0xafb3001c, 0xafb20018, 0xafb10014, 0xafb00010, +0xafbf0028, 0xe0000e4, 0x3c148000, 0x3c028008, +0x3c032000, 0x3c010800, 0xac200070, 0x34550080, +0x34720003, 0x24130001, 0x36900070, 0x2411ff80, +0xa0002a1, 0x8e060000, 0x3c198000, 0x8f380000, +0x3b0f0001, 0x31e20001, 0x10400025, 0x8f860084, +0x8e070000, 0x3c0d0800, 0x8dad003c, 0x3c0a0800, +0x8d4a0038, 0xe67023, 0x1ae4021, 0x5821, +0x10e302b, 0x14b4821, 0x1262021, 0x3c010800, +0xac28003c, 0xaf870084, 0x3c010800, 0xac240038, +0xe0001da, 0x0, 0x3c050800, 0x8ca50070, +0x10a0ffe5, 0xa02021, 0x3c050800, 0x8ca50068, +0x3c060800, 0x8cc6006c, 0xe00149f, 0x0, +0x3c010800, 0xac200070, 0x3c198000, 0x8f380000, +0x3b0f0001, 0x31e20001, 0x1440ffdd, 0x8f860084, +0x8e0c0000, 0x8f8d0084, 0x3c070800, 0x8ce7003c, +0x3c060800, 0x8cc60038, 0x18d5823, 0xeb2821, +0xab202b, 0xc24821, 0x1241021, 0x3c010800, +0xac25003c, 0x3c088000, 0x3c010800, 0xac220038, +0x8d030100, 0x241f0c00, 0x107f0026, 0x0, +0x8d180100, 0x240e0020, 0xad180020, 0x92af0000, +0x31e300ff, 0x106e0023, 0x24190050, 0x10790026, +0x0, 0x3c048000, 0x8c880100, 0x15000003, +0x0, 0x56600014, 0x3c044000, 0x8c990100, +0x8c8f0100, 0x9821, 0x331c024, 0x186940, +0x31ee007f, 0x1ae6025, 0x1925825, 0xac8b0830, +0x8c870100, 0x8c890100, 0x24ea0100, 0x1513024, +0x62940, 0x3123007f, 0xa31025, 0x52f825, +0xac9f0830, 0x3c044000, 0xae840138, 0xa000299, +0x0, 0xe0001f6, 0x0, 0xa0002e3, +0x3c048000, 0x8d040100, 0xe00079b, 0x0, +0xa0002e3, 0x3c048000, 0x8d040100, 0xe0013b7, +0x0, 0xa0002e3, 0x3c048000, 0xa4102b, +0x24030001, 0x10400009, 0x3021, 0x52840, +0xa4102b, 0x4a00003, 0x31840, 0x5440fffc, +0x52840, 0x5060000a, 0x4182b, 0x85382b, +0x54e00004, 0x31842, 0xc33025, 0x852023, +0x31842, 0x1460fff9, 0x52842, 0x4182b, +0x3e00008, 0xc31021, 0x3084ffff, 0x30c600ff, +0x3c078000, 0x8ce201b8, 0x440fffe, 0x64c00, +0x1243025, 0x3c082000, 0xc82025, 0x3c031000, +0xace00180, 0xace50184, 0xace40188, 0x3e00008, +0xace301b8, 0x3c066000, 0x8cc5201c, 0x2402fff0, +0x30830200, 0x30860100, 0x1060000e, 0xa22824, +0x34a50001, 0x30873000, 0x10e00005, 0x30830c00, +0x34a50004, 0x3c046000, 0x3e00008, 0xac85201c, +0x1060fffd, 0x3c046000, 0x34a50008, 0x3e00008, +0xac85201c, 0x54c0fff3, 0x34a50002, 0xa00033b, +0x30873000, 0x27bdffe8, 0xafb00010, 0xafbf0014, +0x3c076000, 0x24060002, 0x10800011, 0xa08021, +0x8f83003c, 0xe000332, 0x8c640018, 0x8f82003c, +0x2021, 0x24060001, 0x8c45000c, 0xe000323, +0x0, 0x16000002, 0x24020003, 0x1021, +0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, +0x8ce8201c, 0x2409fff0, 0x1092824, 0xace5201c, +0x8f87003c, 0xa000358, 0x8ce5000c, 0x3c02600e, +0x804021, 0x34460100, 0x24090018, 0x0, +0x0, 0x0, 0x3c0a0050, 0x3c038000, +0x35470200, 0xac680038, 0x34640400, 0xac65003c, +0xac670030, 0x8c6c0000, 0x318b0020, 0x1160fffd, +0x2407ffff, 0x2403007f, 0x8c8d0000, 0x2463ffff, +0x24840004, 0xaccd0000, 0x1467fffb, 0x24c60004, +0x0, 0x0, 0x0, 0x24a40200, +0x85282b, 0x3c030020, 0x3c0e8000, 0x2529ffff, +0x1054021, 0xadc30030, 0x1520ffe0, 0x802821, +0x3e00008, 0x0, 0x8f82003c, 0x27bdffd8, +0xafb3001c, 0xafbf0020, 0xafb20018, 0xafb10014, +0xafb00010, 0x94460002, 0x809821, 0x8c520018, +0x2cc30081, 0x8c480004, 0x8c470008, 0x8c51000c, +0x8c490010, 0x10600007, 0x8c4a0014, 0x2cc40004, +0x14800013, 0x30eb0007, 0x30c50003, 0x10a00010, +0x0, 0x2410008b, 0x2002021, 0x2202821, +0xe000323, 0x24060003, 0x16600002, 0x24020003, +0x1021, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, +0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0028, +0x1560fff1, 0x2410008b, 0x3c0c8000, 0x3c030020, +0x241f0001, 0xad830030, 0xaf9f0030, 0x0, +0x0, 0x0, 0x2419fff0, 0x24d8000f, +0x3197824, 0x3c1000d0, 0xad880038, 0x1f07025, +0x24cd0003, 0x3c08600e, 0xad87003c, 0x35850400, +0xad8e0030, 0xd3882, 0x3504003c, 0x3c038000, +0x8c6b0000, 0x31620020, 0x1040fffd, 0x0, +0x10e00008, 0x24e3ffff, 0x2407ffff, 0x8ca80000, +0x2463ffff, 0x24a50004, 0xac880000, 0x1467fffb, +0x24840004, 0x3c04600e, 0xac860038, 0x0, +0x0, 0x0, 0x3c070020, 0x3c068000, +0x1202021, 0x1402821, 0xacc70030, 0xe000368, +0x8021, 0xe000332, 0x2402021, 0xa0003a8, +0x2002021, 0x27bdffd8, 0xafb20018, 0x3092ffff, +0xafb10014, 0xafbf0020, 0xafb3001c, 0xafb00010, +0x1240002d, 0x8821, 0xa0003fe, 0x24130003, +0x50b30042, 0x8ce5000c, 0xd, 0x26390001, +0x3331ffff, 0x24f80020, 0x232382b, 0x10e00022, +0xaf98003c, 0x8f820030, 0x1440001f, 0x8f87003c, +0x3c067000, 0x3c032000, 0x8ce40000, 0x862824, +0x14a30019, 0x8f850044, 0x44402, 0x3c098000, +0x898024, 0x14a0ffea, 0x310600ff, 0x240a0002, +0x10ca0030, 0x28cb0003, 0x11600017, 0x0, +0x24040001, 0x14c4ffe6, 0x26390001, 0x2002821, +0xe00034a, 0x24040001, 0x8f87003c, 0xaf820044, +0x26390001, 0x3331ffff, 0x24f80020, 0x232382b, +0x14e0ffe0, 0xaf98003c, 0x2201021, 0x8fbf0020, +0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x3e00008, 0x27bd0028, 0x10d3001b, 0x240c0004, +0x14ccffcf, 0x26390001, 0x308dffff, 0xd19c0, +0x3c048000, 0x8c8e01b8, 0x5c0fffe, 0x3c0f1000, +0x3c102004, 0xac830180, 0xac800184, 0xac900188, +0xac8f01b8, 0xa0003f9, 0x26390001, 0xe000323, +0x24040084, 0x1600ffbd, 0x8f87003c, 0xa0003f8, +0xaf800044, 0x2002821, 0xe00034a, 0x2021, +0xa000418, 0x8f87003c, 0xe00038f, 0x2002021, +0x8f87003c, 0xa000419, 0xaf820044, 0x449c2, +0x3127003f, 0x44342, 0x3c028000, 0x82040, +0x24031680, 0x2ce60020, 0xac43002c, 0x24eaffe0, +0x24820001, 0x14c00003, 0x30a900ff, 0x801021, +0x314700ff, 0x26080, 0x3c0d8000, 0x240a0001, +0x18d2021, 0x3c0b000e, 0xea2804, 0x8b3021, +0x11200005, 0x53827, 0x8cce0000, 0x1c53825, +0x3e00008, 0xacc70000, 0x8cd80000, 0x3077824, +0x3e00008, 0xaccf0000, 0x27bdffe0, 0xafb10014, +0xafb00010, 0xafbf0018, 0x3c076000, 0x8ce40808, +0x3402f000, 0x3c116000, 0x3083f000, 0x240501c0, +0x3c04800e, 0x3021, 0x10620006, 0x24100001, +0x8cea0808, 0x3149f000, 0x3928e000, 0x8382b, +0x78040, 0x3c0d0200, 0xae2d0814, 0x240c1680, +0x3c0b8000, 0x8e274400, 0xe000e42, 0xad6c002c, +0x12000004, 0x3c021691, 0x24050001, 0x12050010, +0x3c023d6c, 0x345800e0, 0xae384408, 0x3c110800, +0x8e31007c, 0x8fbf0018, 0x3c066000, 0x118540, +0x360f1680, 0x8fb10014, 0x8fb00010, 0x3c0e0200, +0x27bd0020, 0xaccf4420, 0x3e00008, 0xacce0810, +0x3c0218da, 0x345800e0, 0xae384408, 0x3c110800, +0x8e31007c, 0x8fbf0018, 0x3c066000, 0x118540, +0x360f1680, 0x8fb10014, 0x8fb00010, 0x3c0e0200, +0x27bd0020, 0xaccf4420, 0x3e00008, 0xacce0810, +0xa000448, 0x24050001, 0xa000448, 0x2821, +0x24020400, 0xa782000c, 0xa7800004, 0x2021, +0x3c060800, 0x24c656b8, 0x2405ffff, 0x24890001, +0x44080, 0x3124ffff, 0x1061821, 0x2c870020, +0x14e0fffa, 0xac650000, 0x24040400, 0xa784000e, +0xa7800006, 0x2021, 0x3c060800, 0x24c65738, +0x2405ffff, 0x248d0001, 0x46080, 0x31a4ffff, +0x1865821, 0x2c8a0020, 0x1540fffa, 0xad650000, +0xa7800010, 0xa7800008, 0xa780000a, 0x2021, +0x3c060800, 0x24c657b8, 0x2405ffff, 0x24990001, +0x4c080, 0x3324ffff, 0x3067821, 0x2c8e0004, +0x15c0fffa, 0xade50000, 0x3c056000, 0x8ca73d00, +0x2403e08f, 0xe31024, 0x34460140, 0x3e00008, +0xaca63d00, 0x2487007f, 0x731c2, 0x24c5ffff, +0x518c2, 0x24640001, 0x3082ffff, 0x238c0, +0xa7840018, 0x3c010800, 0xac270030, 0xaf800014, +0x2821, 0x2021, 0x3021, 0x24890001, +0xa72821, 0x3124ffff, 0x2ca81701, 0x11000003, +0x2c830080, 0x1460fff9, 0x24c60001, 0xc02821, +0xaf860014, 0x10c0001d, 0xa7860012, 0x24caffff, +0xa1142, 0x3c080800, 0x250857b8, 0x1040000a, +0x2021, 0x403021, 0x2407ffff, 0x248e0001, +0x46880, 0x31c4ffff, 0x1a86021, 0x86582b, +0x1560fffa, 0xad870000, 0x30a2001f, 0x50400008, +0x43080, 0x24030001, 0x43c804, 0x41080, +0x487821, 0x2738ffff, 0x3e00008, 0xadf80000, +0xc82021, 0x2405ffff, 0xac850000, 0x3e00008, +0x0, 0x30a5ffff, 0x30c6ffff, 0x30a8001f, +0x806021, 0x30e700ff, 0x52942, 0x5021, +0x10c0001d, 0x24090001, 0x240b0001, 0x25180001, +0x10b2004, 0x330800ff, 0x1267826, 0x390e0020, +0x2ded0001, 0x2dc20001, 0x1a21825, 0x1060000d, +0x1445025, 0x5c880, 0x32c4021, 0x1001821, +0x10e0000f, 0xa2027, 0x8d040000, 0x8a1825, +0xad030000, 0x24ad0001, 0x4021, 0x5021, +0x31a5ffff, 0x252e0001, 0x31c9ffff, 0xc9102b, +0x1040ffe7, 0x25180001, 0x3e00008, 0x0, +0x8d0a0000, 0x1444024, 0xa00052e, 0xac680000, +0x27bdffe8, 0x30a5ffff, 0x30c6ffff, 0xafb00010, +0xafbf0014, 0x30e7ffff, 0x5021, 0x3410ffff, +0x6021, 0x24af001f, 0xc04821, 0x24180001, +0x24190020, 0x5e00016, 0x1e01021, 0x2f943, +0x19f682a, 0x9702b, 0x1ae4024, 0x11000017, +0xc1880, 0x641021, 0x10e00005, 0x8c4b0000, +0xf84004, 0x83823, 0x1675824, 0x3821, +0x15400041, 0x4021, 0x55600016, 0x3169ffff, +0x258b0001, 0x316cffff, 0x5e1ffec, 0x1e01021, +0x24a2003e, 0x2f943, 0x19f682a, 0x9702b, +0x1ae4024, 0x1500ffeb, 0xc1880, 0x15460005, +0x3402ffff, 0x2002821, 0xe000512, 0x3821, +0x2001021, 0x8fbf0014, 0x8fb00010, 0x3e00008, +0x27bd0018, 0x15200003, 0x1601821, 0xb1c02, +0x24080010, 0x306a00ff, 0x15400005, 0x306e000f, +0x250d0008, 0x31a02, 0x31a800ff, 0x306e000f, +0x15c00005, 0x307f0003, 0x25100004, 0x31902, +0x320800ff, 0x307f0003, 0x17e00005, 0x38690001, +0x25020002, 0x31882, 0x304800ff, 0x38690001, +0x31230001, 0x10600004, 0x310300ff, 0x250a0001, +0x314800ff, 0x310300ff, 0xc6940, 0x1a34021, +0x240a0001, 0x10caffd5, 0x3110ffff, 0x246e0001, +0x31c800ff, 0x1119ffc6, 0x38c90001, 0x2d1f0020, +0x53e0001c, 0x258b0001, 0x240d0001, 0xa0005a5, +0x240e0020, 0x51460017, 0x258b0001, 0x25090001, +0x312800ff, 0x2d090020, 0x51200012, 0x258b0001, +0x25430001, 0x10d5004, 0x14b1024, 0x25090001, +0x1440fff4, 0x306affff, 0x3127ffff, 0x10ee000c, +0x2582ffff, 0x304cffff, 0x5021, 0x3410ffff, +0x312800ff, 0x2d090020, 0x5520fff2, 0x25430001, +0x258b0001, 0x1464826, 0xa00055f, 0x316cffff, +0x3821, 0x5021, 0xa0005b1, 0x3410ffff, +0x27bdffd8, 0xafb00010, 0x30f0ffff, 0xafb10014, +0x103942, 0x3211ffe0, 0x71080, 0xafb3001c, +0xb12823, 0x30d3ffff, 0xafb20018, 0x30a5ffff, +0x809021, 0x2603021, 0x442021, 0xafbf0020, +0xe00053d, 0x3207001f, 0x2228821, 0x3403ffff, +0x2402021, 0x2002821, 0x2603021, 0x3821, +0x10430009, 0x3231ffff, 0x2201021, 0x8fbf0020, +0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x3e00008, 0x27bd0028, 0xe00053d, 0x0, +0x408821, 0x2201021, 0x8fbf0020, 0x8fb3001c, +0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, +0x27bd0028, 0x42400, 0x3c036000, 0xac603d08, +0x10a00002, 0x34821006, 0x34821016, 0x3e00008, +0xac623d04, 0x27bdffe0, 0xafb00010, 0x309000ff, +0x2e020006, 0xafbf0018, 0x10400008, 0xafb10014, +0x103080, 0x3c030800, 0x24635424, 0xc32821, +0x8ca40000, 0x800008, 0x0, 0x2021, +0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x801021, +0x3e00008, 0x27bd0020, 0x97910012, 0x16200051, +0x2021, 0x3c020800, 0x90420033, 0xa000618, +0x0, 0x978d000e, 0x15a00031, 0x2021, +0xa000618, 0x24020008, 0x9787000c, 0x14e0001a, +0x1821, 0x602021, 0x24020001, 0x1080ffe9, +0x8fbf0018, 0x429c2, 0x453021, 0xa6582b, +0x1160ffe4, 0x3c088000, 0x3c072000, 0x569c0, +0x1a76025, 0xad0c0020, 0x3c038008, 0x2402001f, +0x2442ffff, 0xac600000, 0x441fffd, 0x24630004, +0x24a50001, 0xa6702b, 0x15c0fff5, 0x569c0, +0xa000602, 0x8fbf0018, 0x97870004, 0x3c040800, +0x248456b8, 0x24050400, 0xe0005bd, 0x24060001, +0x978b000c, 0x24440001, 0x308affff, 0x2569ffff, +0x2d480400, 0x402821, 0x15000040, 0xa789000c, +0x24ac3800, 0xc19c0, 0xa000616, 0xa7800004, +0x97870006, 0x3c040800, 0x24845738, 0x24050400, +0xe0005bd, 0x24060001, 0x9799000e, 0x24440001, +0x3098ffff, 0x272fffff, 0x2f0e0400, 0x408821, +0x15c0002c, 0xa78f000e, 0xa7800006, 0x3a020003, +0x26240100, 0x3084ffff, 0xe0005ea, 0x2c450001, +0x11f8c0, 0x27f00100, 0x1021c0, 0xa000618, +0x24020008, 0x97850016, 0x9787000a, 0x3c040800, +0x248457b8, 0xe0005bd, 0x24060001, 0x97870012, +0x8f890014, 0x24450001, 0x30a8ffff, 0x24e3ffff, +0x109302b, 0x408021, 0x14c00018, 0xa7830012, +0xa780000a, 0x97850018, 0xe000e2c, 0x2002021, +0x244a0500, 0x3144ffff, 0xe0005ea, 0x24050001, +0x3c050800, 0x94a50032, 0xe000e2c, 0x2002021, +0x24452100, 0x3c020800, 0x90420033, 0xa000618, +0x521c0, 0xa000650, 0xa7840006, 0x24ac3800, +0xc19c0, 0xa000616, 0xa7840004, 0xa00066a, +0xa785000a, 0x308400ff, 0x27bdffe8, 0x2c820006, +0xafbf0014, 0xafb00010, 0x10400015, 0xa03821, +0x44080, 0x3c030800, 0x2463543c, 0x1032821, +0x8ca40000, 0x800008, 0x0, 0x24cc007f, +0x751c2, 0xc59c2, 0x3170ffff, 0x2547c400, +0x30e5ffff, 0x27840004, 0x2003021, 0xe000512, +0x24070001, 0x97860010, 0x2062021, 0xa7840010, +0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, +0x3c050800, 0x8ca50030, 0x779c2, 0xe00030c, +0x25e4df00, 0x3045ffff, 0x3c040800, 0x248457b8, +0x24060001, 0xe000512, 0x24070001, 0x978e0012, +0x8fbf0014, 0x8fb00010, 0x25cd0001, 0x27bd0018, +0x3e00008, 0xa78d0012, 0x7c9c2, 0x2738ff00, +0x1878c2, 0x31f0ffff, 0x3c040800, 0x24845738, +0x2002821, 0x24060001, 0xe000512, 0x24070001, +0x978d000e, 0x260e0100, 0xe8400, 0x25ac0001, +0x3c0b6000, 0xa78c000e, 0xad603d08, 0x36040006, +0x3021, 0x3c076000, 0x8ce23d04, 0x305f0006, +0x17e0fffd, 0x24c90001, 0x61b00, 0x312600ff, +0x644025, 0x2cc50004, 0xace83d04, 0x14a0fff6, +0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, +0x751c2, 0x2549c800, 0x24060001, 0x24070001, +0x3c040800, 0x248456b8, 0xe000512, 0x3125ffff, +0x9787000c, 0x8fbf0014, 0x8fb00010, 0x24e60001, +0x27bd0018, 0x3e00008, 0xa786000c, 0x3084ffff, +0x30a5ffff, 0x3c068000, 0x8cc201b8, 0x440fffe, +0x3c084080, 0x883825, 0x3c031000, 0xacc00180, +0xacc50184, 0xacc70188, 0x3e00008, 0xacc301b8, +0x3084ffff, 0x3c068000, 0x8cc201b8, 0x440fffe, +0x3c084038, 0x8ca70000, 0x882825, 0x3c031000, +0xacc70180, 0xacc50188, 0x3e00008, 0xacc301b8, +0x8f83005c, 0x8f860054, 0x1066000b, 0x804021, +0x3c070800, 0x24e757c8, 0x328c0, 0xa71021, +0x8c440000, 0x24630001, 0x10880005, 0x3063000f, +0x5466fffa, 0x328c0, 0x3e00008, 0x1021, +0x3c070800, 0x24e757cc, 0xa73021, 0x3e00008, +0x8cc20000, 0x3c039000, 0x34620001, 0x822025, +0x3c038000, 0xac640020, 0x8c650020, 0x4a0fffe, +0x0, 0x3e00008, 0x0, 0x3c028000, +0x34430001, 0x832025, 0x3e00008, 0xac440020, +0x27bdffe0, 0xafb10014, 0x3091ffff, 0xafb00010, +0xafbf0018, 0x12200012, 0xa08021, 0x8ca50000, +0x14a00011, 0x24040002, 0x3c068000, 0x8cc201b8, +0x440fffe, 0x3c074000, 0x2272025, 0x8fbf0018, +0x8fb10014, 0x8fb00010, 0x3c031000, 0x27bd0020, +0xacc50180, 0xacc40188, 0x3e00008, 0xacc301b8, +0xa00072b, 0x8ca50000, 0xe000682, 0x24060200, +0x2821, 0xa00072b, 0xae000000, 0x3087ffff, +0x3c068000, 0x8cc201b8, 0x440fffe, 0x3c0a4006, +0x8ca90000, 0xea4025, 0xacc90180, 0x8ca40004, +0x3c031000, 0xacc40184, 0xacc80188, 0x3e00008, +0xacc301b8, 0x8f83fdf8, 0x27bdffe8, 0xafbf0014, +0xafb00010, 0x90670008, 0x801021, 0x802821, +0x30e60040, 0x2021, 0x10c00008, 0x8c500000, +0xe000086, 0x2002021, 0x2002021, 0x8fbf0014, +0x8fb00010, 0xa0004a5, 0x27bd0018, 0xe000740, +0x0, 0xe000086, 0x2002021, 0x2002021, +0x8fbf0014, 0x8fb00010, 0xa0004a5, 0x27bd0018, +0x27bdffe0, 0xafb00010, 0x8f90fdf8, 0xafbf001c, +0xafb20018, 0xafb10014, 0x92060001, 0x808821, +0xe000712, 0x30d20004, 0x92040005, 0x1129c2, +0xa6050000, 0x34830040, 0xa2030005, 0xe00071c, +0x2202021, 0xe0004a7, 0x2202021, 0x24020001, +0xae02000c, 0x2202821, 0xa6020010, 0x24040002, +0xa6020012, 0x24060200, 0xa6020014, 0xe000682, +0xa6020016, 0x1640000f, 0x8fbf001c, 0x978c0058, +0x3c0b0800, 0x8d6b0078, 0x2588ffff, 0x3109ffff, +0x256a0001, 0x12a382b, 0x10e00006, 0xa7880058, +0x3c0f6006, 0x240e0016, 0x35ed0010, 0xadae0050, +0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x3e00008, 0x27bd0020, 0x27bdffe0, 0xafbf0018, +0xafb10014, 0xafb00010, 0xe000712, 0x808821, +0x8f85fdf8, 0x2202021, 0x90a30005, 0xe00071c, +0x307000ff, 0x2402003e, 0x12020005, 0x8fbf0018, +0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, +0x3c058000, 0x8ca40178, 0x480fffe, 0x24070007, +0x3c061000, 0xacb10140, 0x2202021, 0xa0a70144, +0x8fbf0018, 0x8fb10014, 0x8fb00010, 0xaca60178, +0xa000769, 0x27bd0020, 0x27bdffe0, 0xafb00010, +0xafbf0018, 0xafb10014, 0x3c108000, 0x8e110020, +0x0, 0xe0004a7, 0xae040020, 0xae110020, +0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x3e00008, +0x27bd0020, 0x3084ffff, 0x3c068000, 0x8cc201b8, +0x440fffe, 0x3c084035, 0x883825, 0x3c031000, +0xacc50180, 0xacc00184, 0xacc70188, 0x3e00008, +0xacc301b8, 0x3084ffff, 0x3c068000, 0x8cc201b8, +0x440fffe, 0x3c084036, 0x883825, 0x3c031000, +0xacc50180, 0xacc00184, 0xacc70188, 0x3e00008, +0xacc301b8, 0x27bdffd0, 0xafb50024, 0x3095ffff, +0xafb60028, 0xafb40020, 0xafbf002c, 0xafb3001c, +0xafb20018, 0xafb10014, 0xafb00010, 0x30b6ffff, +0x12a00027, 0xa021, 0x8f92003c, 0x8e430000, +0x3c068000, 0x24020040, 0x33e02, 0x32c02, +0x30e4007f, 0x669824, 0x1482001d, 0x30a500ff, +0x8f83004c, 0x2c68000a, 0x51000010, 0x8f860030, +0x35880, 0x3c0c0800, 0x258c5458, 0x16c5021, +0x8d490000, 0x1200008, 0x0, 0x2d44821, +0x3125ffff, 0xe0006e4, 0x24040084, 0x16600002, +0x8f92003c, 0xaf80004c, 0x8f860030, 0x26580020, +0x268f0001, 0x3009021, 0x31f4ffff, 0x14c00004, +0xaf98003c, 0x295282b, 0x14a0ffdc, 0x0, +0x2801021, 0x8fbf002c, 0x8fb60028, 0x8fb50024, +0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, +0x8fb00010, 0x3e00008, 0x27bd0030, 0x24070034, +0x14a70146, 0x0, 0x9247000e, 0x8f99fdfc, +0x8f90fdf8, 0x24181600, 0xa3270019, 0x924a000d, +0x3c088000, 0x3c07800c, 0xa32a0018, 0x96440012, +0x3c0f6000, 0x3c117fff, 0xa604005c, 0x965f0010, +0x3622ffff, 0x240a0005, 0x33e5ffff, 0xae050054, +0x8e46001c, 0xad180028, 0x8ce90000, 0x8dee4448, +0x1266826, 0x1cd3021, 0xae060038, 0x8e030038, +0x24cb0001, 0x3c0e7f00, 0xae03003c, 0x8e0c003c, +0xaf2c0004, 0xae0b0020, 0x8e130020, 0xae13001c, +0xa320001b, 0xae02002c, 0xa32a0012, 0x8e440014, +0x24130050, 0xae040034, 0x8e1f0034, 0xaf3f0014, +0x8e450018, 0xae050048, 0x9258000c, 0xa218004e, +0x920f0008, 0x35e90020, 0xa2090008, 0x8e0d0018, +0x1ae1824, 0x346c4000, 0xae0c0018, 0x920b0000, +0x317200ff, 0x125302ad, 0x2413ff80, 0x3c040800, +0x24845848, 0xe00074e, 0x0, 0x24030004, +0x24080001, 0x3c050800, 0x8ca55848, 0x3c048000, +0xa2030025, 0xa2080005, 0x8c900178, 0x600fffe, +0x8f92003c, 0x240e0002, 0x3c0d1000, 0xac850140, +0xa08e0144, 0xac8d0178, 0xa00080b, 0xaf80004c, +0x2cad0037, 0x11a0ff99, 0x8f860030, 0x58080, +0x3c110800, 0x26315480, 0x2117821, 0x8dee0000, +0x1c00008, 0x0, 0x24100004, 0x14b0008e, +0x3c078000, 0x3c0c0800, 0x8d8c5848, 0x8f86fdf8, +0xacec0020, 0x8e4b0008, 0x8f98fdfc, 0x24090050, +0xaccb0030, 0x8e430008, 0xacc30050, 0x8e42000c, +0xacc20034, 0x8e4a0010, 0xacca0038, 0x8e440010, +0xacc40054, 0x8e5f0014, 0xacdf003c, 0x8e590018, +0xaf190004, 0x8e4f001c, 0xaccf0020, 0x90d10000, +0x322500ff, 0x10a9027d, 0x0, 0x8cd10034, +0x8ccf0030, 0x22f3023, 0x4c000f3, 0x2404008c, +0x126000f0, 0x24020003, 0xa00080b, 0xaf82004c, +0x24180005, 0x14b80068, 0x3c0b8000, 0x3c0c0800, +0x8d8c5848, 0x8f86fdf8, 0xad6c0020, 0x8e430004, +0x8f9ffdfc, 0x24072000, 0xacc3001c, 0x92420008, +0x24120008, 0xa3e20019, 0x8f8a003c, 0x91440009, +0xa3e40018, 0x8f85003c, 0x90b9000a, 0x332400ff, +0x10920010, 0x28880009, 0x150000bc, 0x240d0002, +0x24090020, 0x1089000b, 0x34078000, 0x28910021, +0x16200008, 0x24074000, 0x240f0040, 0x108f0005, +0x3c070001, 0x24180080, 0x10980002, 0x3c070002, +0x24074000, 0x8cc40018, 0x3c0aff00, 0x8af824, +0x3e7c825, 0xacd90018, 0x90b2000b, 0xa0d20027, +0x8f83003c, 0x9465000c, 0x10a00231, 0x0, +0x9467000c, 0x3c1f8000, 0xa4c7005c, 0x9062000e, +0x2403ffbf, 0x24070004, 0xa0c20008, 0x8f8a003c, +0x9144000f, 0xa0c40009, 0x8f88003c, 0x8d120010, +0x8ff90074, 0x2592823, 0xacc50058, 0x8d180014, +0xacd8002c, 0x950f0018, 0x31f1ffff, 0xacd10040, +0x9509001a, 0x3130ffff, 0xacd00044, 0x8d0e001c, +0xacce0048, 0x950d0002, 0xa4cd0078, 0x910c000e, +0xa0cc0008, 0x90cb0008, 0x1631024, 0x126001d7, +0xa0c20008, 0x8f92003c, 0xa00080b, 0xaf87004c, +0x24060006, 0x14a60014, 0x3c0e8000, 0x3c100800, +0x8e105848, 0x8f8cfdf4, 0xadd00020, 0x8e4d0018, +0x8f86fdf8, 0x8f8bfdfc, 0xad8d0000, 0x8cc80038, +0x24040005, 0xad880004, 0x8cc3003c, 0x12600081, +0xad630000, 0xa00080b, 0xaf84004c, 0x24090007, +0x10a9004b, 0x24040006, 0x3c050800, 0x24a55848, +0xe000721, 0x24040081, 0x8f92003c, 0x13102b, +0xa00080b, 0xaf82004c, 0x241f0023, 0x14bffff6, +0x3c0c8000, 0x3c030800, 0x8c635848, 0x8f8bfdfc, +0xad830020, 0x8f91fdf8, 0x8e460004, 0x25640020, +0x26450014, 0xae260028, 0x24060003, 0xe000e38, +0x25700030, 0x8f87003c, 0x2002021, 0x24060003, +0xe000e38, 0x24e50008, 0x3c040800, 0x24845848, +0xe00074e, 0x0, 0x92220000, 0x24040050, +0x304a00ff, 0x5544ffe1, 0x8f92003c, 0xe000e23, +0x0, 0xa000910, 0x8f92003c, 0x24080033, +0x14a80032, 0x3c028000, 0x3c110800, 0x8e315848, +0x8f89fdfc, 0xac510020, 0x8e4a0008, 0x240f0028, +0x8f8dfdf8, 0xad2a0030, 0x8e44000c, 0x24060009, +0xad240034, 0x8e5f0010, 0xad3f0038, 0x8e590014, +0xad390020, 0x8e450018, 0xad250024, 0x8e58001c, +0xad380028, 0xa12f0011, 0x8e4e0004, 0x12600031, +0xadae0028, 0x8f92003c, 0xa00080b, 0xaf86004c, +0x24110022, 0x14b1ffb8, 0x0, 0x24040007, +0x3c180800, 0x8f185848, 0x3c0f8000, 0xadf80020, +0x5660feb1, 0xaf84004c, 0x3c040800, 0x24845848, +0xe00074e, 0x24130050, 0x8f99fdf8, 0x93320000, +0x324500ff, 0x10b3016c, 0x0, 0x8f92003c, +0x2021, 0xa00080b, 0xaf84004c, 0x3c050800, +0x24a55848, 0xe0006f1, 0x24040081, 0xa000910, +0x8f92003c, 0x2d49821, 0x3265ffff, 0xe0006e4, +0x24040084, 0xa00080b, 0x8f92003c, 0x108dff51, +0x24070400, 0x28870003, 0x10e001aa, 0x24100004, +0x240e0001, 0x548eff4b, 0x24074000, 0xa0008c6, +0x24070100, 0x3c050800, 0x24a55848, 0xe000740, +0x24040082, 0x8f92003c, 0x3021, 0xa00080b, +0xaf86004c, 0x3c040800, 0x24845848, 0x8cc20038, +0xe00074e, 0x8cc3003c, 0x8f92003c, 0xa000966, +0x2021, 0x24040082, 0x3c050800, 0x24a55848, +0xe000740, 0x0, 0x8f92003c, 0x1021, +0xa00080b, 0xaf82004c, 0x8e500004, 0x8f91fdf8, +0x3c0a8000, 0xad500020, 0x92220005, 0x2002821, +0x30460002, 0x14c00187, 0x2404008a, 0x8f92fdfc, +0x2002821, 0x2404008d, 0x924b001b, 0x31630020, +0x14600180, 0x0, 0x922d0009, 0x240c0012, +0x31a800ff, 0x110c017b, 0x24040081, 0xe000712, +0x2002021, 0x9245001b, 0x240e0004, 0x2002021, +0x34a90042, 0xa249001b, 0xe00071c, 0xa22e0025, +0x3c048000, 0x8c910178, 0x620fffe, 0x24180002, +0xac900140, 0xa0980144, 0x8f92003c, 0x3c0f1000, +0xac8f0178, 0xa000911, 0x13102b, 0x8e500004, +0x8f91fdf8, 0x3c1f8000, 0xaff00020, 0x92390005, +0x2002821, 0x33270002, 0x14e0001a, 0x2404008a, +0x92260009, 0x24120012, 0x30c400ff, 0x10920111, +0x0, 0x92230009, 0x240a0004, 0x306200ff, +0x104a010c, 0x0, 0xe000712, 0x2002021, +0x8f88fdfc, 0x240cfffe, 0x2002021, 0x910e001b, +0x35cd0020, 0xa10d001b, 0xa2320009, 0x922b0005, +0x16c9024, 0xe00071c, 0xa2320005, 0x2002821, +0x2021, 0xe0007d6, 0x0, 0xa000910, +0x8f92003c, 0x8e510004, 0x3c028000, 0x3c100800, +0x26105848, 0xac510020, 0x3c010800, 0xac315848, +0x92460003, 0x30c40004, 0x10800169, 0x8f84fdf8, +0x24020006, 0xa0820009, 0x924d001b, 0x2408ffc0, +0x31ac003f, 0x1885825, 0xa08b0008, 0x92430003, +0x306a0001, 0x15400160, 0x0, 0x8e420008, +0xae020008, 0x3c020800, 0x8c425850, 0x1040015f, +0x8f8efdfc, 0x281c2, 0x8f85fdf8, 0xa5d0000c, +0x8e5f000c, 0x240f0001, 0x24090014, 0xaddf002c, +0x8e590010, 0xadd9001c, 0x96470016, 0xa5c7003c, +0x96580014, 0xa5d8003e, 0xacaf000c, 0xa4af0010, +0xa4af0012, 0xa4af0014, 0xa4af0016, 0x12600163, +0xa1c90011, 0x92440003, 0x30920002, 0x2e530001, +0x8f92003c, 0x26620008, 0xa00080b, 0xaf82004c, +0x8e460004, 0x3c058000, 0x3c048008, 0xaca60020, +0x8e470008, 0x90890000, 0x24110050, 0x312200ff, +0x105100bc, 0x24050088, 0x3c048000, 0x8c8f01b8, +0x5e0fffe, 0x13802b, 0x3c184009, 0xb81025, +0xaf90004c, 0x3c101000, 0xac860180, 0xac870184, +0xac820188, 0xac9001b8, 0xa00080c, 0x8f860030, +0x8e450004, 0x3c068000, 0x3c098008, 0xacc50020, +0x913f0000, 0x24040050, 0x33f900ff, 0x132400b4, +0x24060088, 0x3c048000, 0x8c8a01b8, 0x540fffe, +0x3c0e400e, 0xce6825, 0x3c081000, 0xac850180, +0xac800184, 0xac8d0188, 0xac8801b8, 0x912b0000, +0x240cff80, 0x24040004, 0x16c1825, 0x24060030, +0xe000682, 0xa1230000, 0xa000910, 0x8f92003c, +0x8e500004, 0x8f91fdfc, 0x3c0f8000, 0xadf00020, +0x9225001b, 0x30a90010, 0x1120007c, 0x24030081, +0x3c048000, 0x8c8701b8, 0x4e0fffe, 0x3c1f401f, +0xac900180, 0x7f1025, 0x13c82b, 0x3c101000, +0xac800184, 0xaf99004c, 0xac820188, 0xac9001b8, +0xa00080c, 0x8f860030, 0x8e44001c, 0xe0006fd, +0x0, 0x104000fc, 0x403821, 0x8f92003c, +0x24060089, 0x3c058000, 0x8cae01b8, 0x5c0fffe, +0x0, 0xaca70180, 0x8e50001c, 0x3c114001, +0x13782b, 0xd13825, 0x3c131000, 0xacb00184, +0xaf8f004c, 0xaca70188, 0xacb301b8, 0xa00080c, +0x8f860030, 0x96590002, 0x3c100800, 0x26105848, +0x33380004, 0x130000a7, 0x3c046000, 0x8e5f001c, +0x3c068000, 0xacdf0020, 0x3c010800, 0xac3f5848, +0x964f0002, 0x31e70001, 0x14e000e7, 0x0, +0x8e420004, 0xae020008, 0x3c100800, 0x8e105850, +0x120000dd, 0x3c068000, 0x8f85fdf8, 0x24100001, +0x8cbf0018, 0x8f91fdfc, 0x8f89fdf4, 0x3e6c825, +0xacb90018, 0xa0a00005, 0xacb0000c, 0x3c180800, +0x8f185850, 0x8f87003c, 0xa4b00010, 0x1879c2, +0xa4b00012, 0xa4b00014, 0xa4b00016, 0xa62f000c, +0x8cee0008, 0x8f8d003c, 0x8f8c003c, 0xae2e002c, +0x8da8000c, 0x24070002, 0xae28001c, 0x918b0010, +0xa22b0011, 0x8f83003c, 0x906a0011, 0xa12a0008, +0x8f82003c, 0x90440012, 0xa0a4004e, 0x8f92003c, +0x92460013, 0xa2260012, 0x8f92003c, 0x965f0014, +0xa63f003c, 0x96590016, 0xa639003e, 0x8e580018, +0xae380014, 0x5660fd4c, 0xaf87004c, 0x3c050800, +0x24a55848, 0xe000721, 0x2021, 0x8f92003c, +0x3821, 0xa00080b, 0xaf87004c, 0x3c050800, +0x24a55848, 0xe000740, 0x24040082, 0x8f92003c, +0xa0008f3, 0x3821, 0xe000e23, 0x0, +0x8f92003c, 0xa000966, 0x2021, 0xe000712, +0x2002021, 0x9232001b, 0x2002021, 0x36580010, +0xe00071c, 0xa238001b, 0x8f92003c, 0xa000a59, +0x1821, 0xe0007d6, 0x24040081, 0xa000910, +0x8f92003c, 0x9243000c, 0x306a0001, 0x11400003, +0x0, 0x964b000e, 0xa48b002c, 0x9248000c, +0x310c0002, 0x1180ff3c, 0x2821, 0x964e0012, +0x8e4d0014, 0xa48e001a, 0xa000a27, 0xac8d001c, +0x8f83005c, 0x8f870054, 0x1067ff4a, 0x3021, +0x3c080800, 0x250857cc, 0x320c0, 0x883021, +0x8cd10000, 0x122500c8, 0x24620001, 0x3043000f, +0x1467fffa, 0x320c0, 0xa000a3e, 0x3021, +0x3c050800, 0x24a55848, 0xe000740, 0x2404008b, +0x8f92003c, 0xa0008f3, 0x13382b, 0x3c0c0800, +0x8d8c5848, 0x24d9fffe, 0x25910100, 0x322b007f, +0x1679021, 0x2331024, 0xad020028, 0xae4600d0, +0xae4000d4, 0xa00085c, 0xae59001c, 0xacc00054, +0x3c090800, 0x8d295848, 0x3c05800c, 0x34a80100, +0xace90028, 0x8e500014, 0xad1000d0, 0x8e4e0014, +0xad0e00d4, 0x8e4d0010, 0x25a7fffe, 0xa000898, +0xad07001c, 0x5490fda3, 0x24074000, 0xa0008c6, +0x24071000, 0xe0007ca, 0x0, 0xa000910, +0x8f92003c, 0x8c83442c, 0x3c05dead, 0x34b2beef, +0x3c010800, 0xac205848, 0x1072004f, 0x0, +0x3c046c62, 0x34827970, 0x14620008, 0x24040002, +0x978a0058, 0x97830050, 0x2002821, 0x143482b, +0x11200019, 0x24040092, 0x24040002, 0xe0005f2, +0x24050200, 0x3c0b8000, 0xad620020, 0x3c010800, +0xac225848, 0x1040000d, 0x8f8e003c, 0x240c0028, +0x24040003, 0x91cd0010, 0x31a800ff, 0x550c0001, +0x24040001, 0xe00004a, 0x0, 0x10400004, +0x24040083, 0xa000a89, 0x8f92003c, 0x24040083, +0x3c050800, 0x24a55848, 0xe000721, 0x0, +0x8f92003c, 0x13382b, 0xa00080b, 0xaf87004c, +0xa0009f2, 0x24020012, 0x8e440008, 0xe0006fd, +0x0, 0xa0009fe, 0xae020008, 0x3c050800, +0x24a55848, 0xe0006f1, 0x24040087, 0x8f92003c, +0xa000a1b, 0x13102b, 0x24040004, 0xe0005f2, +0x24050030, 0x14400017, 0x403821, 0x8f92003c, +0xa000a6e, 0x24060083, 0x3c050800, 0x24a55848, +0xa000b53, 0x24040087, 0x8e440004, 0xe0006fd, +0x0, 0xa000a8f, 0xae020008, 0x3c050800, +0x24a55848, 0xe000740, 0x24040082, 0x8f92003c, +0xa000a1b, 0x1021, 0x8c83442c, 0xa000b32, +0x3c046c62, 0x8f92003c, 0x3c088008, 0x3c0c8000, +0x240b0050, 0x240a0001, 0xad820020, 0xa10b0000, +0xa10a0001, 0x92490004, 0xa1090018, 0x92440005, +0xa1040019, 0x92430006, 0x3c040800, 0x248457cc, +0xa103001a, 0x92420007, 0x3c030800, 0x246357c8, +0xa102001b, 0x92450008, 0xa105001c, 0x92460009, +0xa106001d, 0x925f000a, 0xa11f001e, 0x9259000b, +0xa119001f, 0x9258000c, 0xa1180020, 0x9251000d, +0xa1110021, 0x9250000e, 0xa1100022, 0x924f000f, +0xa10f0023, 0x924e0010, 0xa10e0024, 0x924d0011, +0xa10d0025, 0x964c0014, 0xa50c0028, 0x964b0016, +0x8f8a0054, 0x8f98005c, 0xa50b002a, 0x96490018, +0xa10c0, 0x25450001, 0xa509002c, 0x8e46001c, +0x44c821, 0x43f821, 0x30a5000f, 0xafe60000, +0xaf270000, 0x10b80003, 0xaf850054, 0xa000a6e, +0x3021, 0x24ad0001, 0x31a8000f, 0x3021, +0xa000a6e, 0xaf88005c, 0x3c070800, 0x24e757c8, +0x879021, 0xacc00000, 0x3021, 0xa000a3e, +0xae400000, 0x3c048201, 0x3c036000, 0x34820e02, +0xac603d68, 0xaf80007c, 0x3e00008, 0xac623d6c, +0x27bdffe8, 0xafb00010, 0x3090ffff, 0x101842, +0x2c620041, 0xafbf0014, 0x14400002, 0x24040080, +0x24030040, 0x3c010800, 0xac300060, 0x3c010800, +0xac230064, 0xe000e2c, 0x602821, 0x244802bf, +0x2409ff80, 0x1092824, 0x103980, 0x103040, +0x8fbf0014, 0x8fb00010, 0xa72021, 0x861821, +0xaf830064, 0x3c010800, 0xac250058, 0x3c010800, +0xac24005c, 0x3e00008, 0x27bd0018, 0x308300ff, +0x30c6ffff, 0x30e400ff, 0x3c088000, 0x8d0201b8, +0x440fffe, 0x35400, 0x1443825, 0x3c096000, +0xe92025, 0x3c031000, 0xad050180, 0xad060184, +0xad040188, 0x3e00008, 0xad0301b8, 0x8f86003c, +0x3c096012, 0x35270010, 0x8ccb0004, 0x3c0c600e, +0x35850010, 0x316a0006, 0x2d480001, 0xace800c4, +0x8cc40004, 0xaca43180, 0x8cc20008, 0x94c30002, +0xaca23184, 0x3e00008, 0xa7830074, 0x8f85003c, +0x8f87ff50, 0x8f86ff58, 0x8cae0004, 0x3c0f6012, +0x35e80010, 0xacee0068, 0x8cad0008, 0xaced006c, +0x8cac0010, 0xaccc004c, 0x8cab000c, 0xaccb0048, +0x94ca0054, 0x3c020800, 0x8c420044, 0x25490001, +0xa4c90054, 0x94c40054, 0x3083ffff, 0x10620017, +0x0, 0x3c020800, 0x8c420040, 0xa4c20052, +0x8ca30018, 0xace30030, 0x8ca20014, 0xace2002c, +0x8cb90018, 0xacf90038, 0x8cb80014, 0x24050001, +0xacf80034, 0x8d0600bc, 0x50c50019, 0x8d0200b4, +0x8d0200b8, 0xa4e20048, 0x94e40048, 0xa4e4004a, +0x94e800da, 0x3e00008, 0x3102ffff, 0x3c020800, +0x8c420024, 0xa4c00054, 0xa4c20052, 0x8ca30018, +0xace30030, 0x8ca20014, 0xace2002c, 0x8cb90018, +0xacf90038, 0x8cb80014, 0x24050001, 0xacf80034, +0x8d0600bc, 0x54c5ffeb, 0x8d0200b8, 0x8d0200b4, +0xa4e20048, 0x94e40048, 0xa4e4004a, 0x94e800da, +0x3e00008, 0x3102ffff, 0x8f86003c, 0x3c048000, +0x8cc90008, 0x8cc80008, 0x929c0, 0x839c0, +0xac870020, 0x90c30007, 0x30620004, 0x1040003a, +0xaf850078, 0x90cb0007, 0x316a0008, 0x11400039, +0x8f87ff54, 0x8ccd000c, 0x8cce0014, 0x1ae602b, +0x11800032, 0x0, 0x8cc2000c, 0xace20070, +0x8ccb0018, 0x8f85ff50, 0x8f88ff58, 0xaceb0074, +0x8cca0010, 0x2402fff8, 0xacaa00c8, 0x8cc9000c, +0xad090060, 0x8cc4001c, 0xaca400c0, 0x90e3007c, +0x62c824, 0xa0f9007c, 0x90d80007, 0x330f0008, +0x11e00004, 0x0, 0x90ed007c, 0x35ac0001, +0xa0ec007c, 0x90cf0007, 0x31ee0001, 0x11c00009, +0x0, 0x90e4007c, 0x24180002, 0x34820002, +0xa0e2007c, 0x90a300ec, 0x307900ff, 0x13380013, +0x24080034, 0x90c90007, 0x31260002, 0x10c00004, +0x0, 0x90eb007c, 0x356a0004, 0xa0ea007c, +0x90ed007d, 0x31ac003f, 0xa0ec007d, 0x94a700da, +0x3e00008, 0x30e2ffff, 0x8f87ff54, 0xa000c68, +0x8cc20014, 0xa000c69, 0xace00070, 0xa000c8a, +0xaca800cc, 0x8f8c003c, 0x27bdffd8, 0xafb3001c, +0xafb20018, 0xafb00010, 0xafbf0020, 0xafb10014, +0x918f0015, 0x3c13600e, 0x36730010, 0x31eb000f, +0xa38b0080, 0x8d8f0004, 0x8d8b0008, 0x959f0012, +0x95990010, 0x9584001a, 0x9598001e, 0x958e001c, +0x33edffff, 0x332affff, 0x3089ffff, 0x3308ffff, +0x31c7ffff, 0x3c010800, 0xac2d0024, 0x3c010800, +0xac290044, 0x3c010800, 0xac2a0040, 0xae683178, +0xae67317c, 0x91850015, 0x95910016, 0x3c126012, +0x36520010, 0x30a200ff, 0x3230ffff, 0xae623188, +0xae5000b4, 0x91830014, 0x959f0018, 0x24060001, +0x66c804, 0x33f8ffff, 0xae5900b8, 0xae5800bc, +0x918e0014, 0xaf8f0068, 0x3c086006, 0x31cd00ff, +0xae4d00c0, 0x918a0015, 0x9584000e, 0x3c07600a, +0x314900ff, 0xaf8b006c, 0x3084ffff, 0xae4900c8, +0x35110010, 0xe000bd1, 0x34f00410, 0x3c020800, +0x8c420060, 0x3c030800, 0x8c630064, 0x3c060800, +0x8cc60058, 0x3c050800, 0x8ca5005c, 0x8f840064, +0x8fbf0020, 0xae23004c, 0xae65319c, 0xae030054, +0xae4500dc, 0xae6231a0, 0xae6331a4, 0xae663198, +0xae220048, 0x8fb3001c, 0xae020050, 0x8fb10014, +0xae4200e0, 0xae4300e4, 0xae4600d8, 0x8fb00010, +0x8fb20018, 0xa0004da, 0x27bd0028, 0x97850076, +0x97830060, 0x27bdffe8, 0xafb00010, 0xa3102b, +0xafbf0014, 0x24040005, 0x8f90003c, 0x10400055, +0x24090002, 0xe0005f2, 0x8f850064, 0xaf820078, +0x24040003, 0x1040004f, 0x24090002, 0x3c068000, +0xe00004a, 0xacc20020, 0x24070001, 0x24082000, +0x1040004d, 0x24040005, 0x978e0076, 0x8f8aff54, +0x24090050, 0x25c50001, 0xa7850076, 0xa1490000, +0x3c0d0800, 0x8dad0064, 0x24038000, 0x8f84ff50, +0xd6600, 0xad4c0018, 0xa5400006, 0x954b000a, +0x8f85ff58, 0x2402ff80, 0x1633024, 0xa546000a, +0x915f000a, 0x4821, 0x3e2c825, 0xa159000a, +0xa0a00008, 0xa140004c, 0xa08000c5, 0x96180002, +0x97830074, 0x3c020004, 0xa49800da, 0x960f0002, +0x2418ffbf, 0x25ee2401, 0xa48e00ae, 0x8e0d0004, +0xacad0044, 0x8e0c0008, 0xacac0040, 0xa4a00050, +0xa4a00054, 0x8e0b000c, 0x240c0030, 0xac8b0028, +0x8e060010, 0xac860024, 0xa480003e, 0xa487004e, +0xa4870050, 0xa483003c, 0xad420074, 0xac8800c8, +0xaca80060, 0xa08700ec, 0x909f00c4, 0x33f9007f, +0xa09900c4, 0x909000c4, 0x2187824, 0xa08f00c4, +0x914e007c, 0x35cd0001, 0xa14d007c, 0x938b0080, +0xad480070, 0xac8c00cc, 0xa08b00c6, 0x8f88006c, +0x8f870068, 0xac8800b4, 0xac8700b8, 0xa5400078, +0xa540007a, 0x8fbf0014, 0x8fb00010, 0x1201021, +0x3e00008, 0x27bd0018, 0x8f850078, 0xe000682, +0x8f860064, 0xa000d56, 0x24090002, 0x27bdffe0, +0xafb00010, 0x8f90003c, 0xafb10014, 0xafbf0018, +0x8e090004, 0xe0004a7, 0x921c0, 0x8e080004, +0x8f84ff50, 0x8f82ff58, 0x839c0, 0x3c068000, +0xacc70020, 0x948500da, 0x90430013, 0x1460001c, +0x30b1ffff, 0x8f8cff54, 0x918b0008, 0x316a0040, +0x1540000b, 0x0, 0x8e0d0004, 0x2203021, +0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x24040022, +0x3821, 0xd29c0, 0xa000bf0, 0x27bd0020, +0xe000061, 0x0, 0x8e0d0004, 0x2203021, +0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x24040022, +0x3821, 0xd29c0, 0xa000bf0, 0x27bd0020, +0xe000059, 0x0, 0x8e0d0004, 0x2203021, +0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x24040022, +0x3821, 0xd29c0, 0xa000bf0, 0x27bd0020, +0x27bdffe0, 0xafb20018, 0x3092ffff, 0xafb00010, +0xafbf001c, 0xafb10014, 0x1240001e, 0x8021, +0x8f86003c, 0x8cc50000, 0x24030006, 0x53f02, +0x51402, 0x30e40007, 0x14830016, 0x304500ff, +0x2ca80006, 0x11000040, 0x55880, 0x3c0c0800, +0x258c555c, 0x16c5021, 0x8d490000, 0x1200008, +0x0, 0x8f8e007c, 0x240d0001, 0x11cd0050, +0x24020002, 0xaf82007c, 0x26090001, 0x3130ffff, +0x24c80020, 0x212202b, 0x1003021, 0x1480ffe5, +0xaf88003c, 0x2001021, 0x8fbf001c, 0x8fb20018, +0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, +0x93870062, 0x54e00034, 0x3021, 0xe000c9e, +0x0, 0x8f86003c, 0xa000db6, 0x24020001, +0x8f87007c, 0x24050002, 0x10e50031, 0x24040013, +0x2821, 0x3021, 0x24070001, 0xe000bf0, +0x0, 0xa000db7, 0x8f86003c, 0x8f83007c, +0x24020002, 0x1462fff6, 0x24040012, 0xe000c53, +0x0, 0x8f850078, 0x403021, 0x24040012, +0xe000bf0, 0x3821, 0xa000db7, 0x8f86003c, +0x8f83007c, 0x24110003, 0x10710029, 0x241f0002, +0x107fffce, 0x26090001, 0x24040010, 0x2821, +0x3021, 0xa000dd4, 0x24070001, 0x8f91007c, +0x24060002, 0x1626fff9, 0x24040010, 0xe000cf8, +0x0, 0x14400023, 0x8f98003c, 0x8f86003c, +0xa000db6, 0x24020003, 0x24040014, 0xe000bf0, +0x2821, 0x8f86003c, 0xa000db6, 0x24020002, +0xe000d60, 0x0, 0xa000db7, 0x8f86003c, +0xe000c00, 0x0, 0x24190002, 0x24040014, +0x2821, 0x3021, 0x3821, 0xaf99007c, +0xe000bf0, 0x0, 0xa000db7, 0x8f86003c, +0xe000c10, 0x0, 0x8f850078, 0x24190002, +0x403021, 0x24040010, 0x3821, 0xa000e0d, +0xaf99007c, 0x403821, 0x24040010, 0x970f0002, +0x2821, 0xe000bf0, 0x31e6ffff, 0x8f86003c, +0xa000db7, 0xaf91007c, 0x8f84ff54, 0x3c077fff, +0x34e6ffff, 0x8c850018, 0x24020001, 0xa61824, +0xac830018, 0x3e00008, 0xa0820005, 0x3084ffff, +0x30a5ffff, 0x10800007, 0x1821, 0x30820001, +0x10400002, 0x42042, 0x651821, 0x1480fffb, +0x52840, 0x3e00008, 0x601021, 0x10c00007, +0x0, 0x8ca20000, 0x24c6ffff, 0x24a50004, +0xac820000, 0x14c0fffb, 0x24840004, 0x3e00008, +0x0, 0x10a00008, 0x24a3ffff, 0xac860000, +0x0, 0x0, 0x2402ffff, 0x2463ffff, +0x1462fffa, 0x24840004, 0x3e00008, 0x0, +0x411c0, 0x3e00008, 0x24420240, 0x27bdffe8, +0xafb00010, 0x808021, 0xafbf0014, 0xe000e4d, +0xa02021, 0x504821, 0x240aff80, 0x8fbf0014, +0x8fb00010, 0x12a3024, 0x3127007f, 0x3c08800a, +0x3c042100, 0xe81021, 0xc42825, 0x3c038000, +0x27bd0018, 0xac650024, 0xaf820020, 0xac400000, +0xac650024, 0x3e00008, 0xac400040, 0x3c0d0800, +0x8dad0058, 0x56180, 0x240aff80, 0x1a45821, +0x16c4821, 0x12a3024, 0x3127007f, 0x3c08800c, +0x3c042100, 0xe81021, 0xc42825, 0x3c038000, +0xac650028, 0xaf82001c, 0x3e00008, 0xac400024, +0x30a5ffff, 0x3c068000, 0x8cc201b8, 0x440fffe, +0x3c086015, 0xa83825, 0x3c031000, 0xacc40180, +0xacc00184, 0xacc70188, 0x3e00008, 0xacc301b8, +0x3c0d0800, 0x8dad0058, 0x56180, 0x240aff80, +0x1a45821, 0x16c4021, 0x10a4824, 0x93140, +0x3107007f, 0xc72825, 0x3c042000, 0xa41825, +0x3c028000, 0xac430830, 0x3e00008, 0xaf80001c, +0x27bdffe8, 0xafb00010, 0x808021, 0xafbf0014, +0xe000e4d, 0xa02021, 0x504821, 0x240bff80, +0x12b5024, 0xa3940, 0x3128007f, 0x3c062000, +0x8fbf0014, 0x8fb00010, 0xe82825, 0x34c20001, +0xa21825, 0x3c048000, 0x27bd0018, 0xac830830, +0x3e00008, 0xaf800020, 0x3c058008, 0x8ca70060, +0x3c068008, 0x87102b, 0x14400011, 0x2c834000, +0x8ca80060, 0x2d034000, 0x1060000f, 0x24034000, +0x8cc90060, 0x89282b, 0x14a00002, 0x801821, +0x8cc30060, 0x35a42, 0xb3080, 0x3c0a0800, +0x254a55a0, 0xca2021, 0x3e00008, 0x8c820000, +0x1460fff3, 0x24034000, 0x35a42, 0xb3080, +0x3c0a0800, 0x254a55a0, 0xca2021, 0x3e00008, +0x8c820000, 0x3c058008, 0x90a60008, 0x93840090, +0x24c20001, 0x304200ff, 0x3043007f, 0x1064000c, +0x23827, 0xa0a20008, 0x3c048000, 0x8c850178, +0x4a0fffe, 0x8f8a0088, 0x24090002, 0x3c081000, +0xac8a0140, 0xa0890144, 0x3e00008, 0xac880178, +0xa000ed2, 0x30e20080, 0x27bdffc8, 0x3c058008, +0x34a40080, 0xafbf0034, 0xafbe0030, 0xafb7002c, +0xafb60028, 0xafb50024, 0xafb40020, 0xafb3001c, +0xafb20018, 0xafb10014, 0xafb00010, 0x94830078, +0x9482007a, 0x104300cd, 0x2405ffff, 0x3c1e8008, +0x80b821, 0xa000fae, 0x3c168000, 0x108a00c8, +0x8fbf0034, 0x8f840088, 0x3c0b0800, 0x8d6b005c, +0x240aff80, 0x3c07800e, 0x1644021, 0x10a4824, +0xaec9002c, 0x96e6007a, 0x3102007f, 0x471821, +0x30c57fff, 0x58040, 0x203a821, 0x96bf0000, +0x3c190800, 0x8f390058, 0x240fff80, 0x33f53fff, +0x3248821, 0x15c180, 0x2389021, 0x24f5824, +0x3c0c0100, 0x16c5025, 0x324e007f, 0x3c0d800c, +0x1cd9021, 0x2802821, 0xe000e50, 0xaeca0028, +0x8e480010, 0x8e490030, 0x8f860020, 0x24020002, +0x1093823, 0xae470010, 0xa0c20000, 0x96e3005c, +0x8e440030, 0x8f910020, 0xe000eab, 0x3070ffff, +0x22b80, 0x205c825, 0x3c1f4200, 0x33fc025, +0xae380004, 0x8e510004, 0x8f870020, 0x8e4f0000, +0x24080008, 0xacf1001c, 0xacef0018, 0xace0000c, +0xace00010, 0x9250000a, 0x24060005, 0x2405c000, +0x320e00ff, 0xa4ee0014, 0x964d0008, 0x2e09821, +0xa4ed0016, 0x924c000a, 0x3c0d8008, 0x318b00ff, +0xa4eb0020, 0x96440008, 0x35ac0100, 0xa4e40022, +0xace00024, 0x924a000b, 0x314900ff, 0xa4e90002, +0xa0e80001, 0x8e420030, 0x8f830020, 0x2408ffbf, +0xac620008, 0xa0660030, 0x8f8e0020, 0x2403ffdf, +0x95df0032, 0x3e5c824, 0x335c025, 0xa5d80032, +0x91d10032, 0x322f003f, 0x35f00040, 0xa1d00032, +0x8f890020, 0xad200034, 0x8d8b00c0, 0xad2b0038, +0x9124003c, 0x3c0b7fff, 0x308a007f, 0xa12a003c, +0x8f860020, 0x3564ffff, 0x90c7003c, 0xe81024, +0xa0c2003c, 0x8f990020, 0x9325003c, 0xa3f824, +0xa33f003c, 0x8e580034, 0x8f8c0020, 0xad980040, +0x8e4f002c, 0x8e510030, 0x1f18023, 0xad900044, +0x918e0048, 0x31cd007f, 0xa18d0048, 0x8f850020, +0x8e4a0030, 0x8ca90048, 0x1444024, 0x1363824, +0xe83025, 0xaca60048, 0x9242000a, 0xa0a2004c, +0x96430008, 0x8f9f0020, 0xa7e3004e, 0x8e500030, +0x8e440030, 0xe00030c, 0x8fc50060, 0x92f1007c, +0x2c140, 0x2c900, 0x3197821, 0x322e0002, +0x402821, 0x11c00003, 0x20f8021, 0x22080, +0x2048021, 0x926d007c, 0x31ac0004, 0x11800002, +0x57080, 0x20e8021, 0x8e440030, 0x8f870020, +0x24058000, 0x308b0003, 0xb5023, 0x31490003, +0x2094021, 0xace80034, 0x9664007a, 0x9662007a, +0x9670007a, 0x30467fff, 0x24c30001, 0x307f7fff, +0x205c824, 0x33fc025, 0xa678007a, 0x9671007a, +0x3c120800, 0x8e520060, 0x322f7fff, 0x11f20028, +0x0, 0x8f840088, 0xe000e85, 0x2a02821, +0x8f840088, 0xe000e95, 0x2802821, 0xe000eca, +0x0, 0x96f30078, 0x96f4007a, 0x1293000f, +0x2821, 0x3c098008, 0x35240100, 0x93c80008, +0x908700c5, 0x3114007f, 0x30e400ff, 0x284302b, +0x14c0ff3e, 0x268a0001, 0x938d0090, 0x268b0001, +0x8d6021, 0x158bff3c, 0x8f840088, 0x8fbf0034, +0x8fbe0030, 0x8fb7002c, 0x8fb60028, 0x8fb50024, +0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, +0x8fb00010, 0xa01021, 0x3e00008, 0x27bd0038, +0x967f007a, 0x3e5c824, 0xa679007a, 0x9278007a, +0x926e007a, 0x331100ff, 0x1179c2, 0xf9027, +0x1269c0, 0x31cc007f, 0x18d2825, 0xa265007a, +0xa000fa3, 0x8f840088, 0x3c038000, 0x3084ffff, +0x30a5ffff, 0xac640018, 0xac65001c, 0x3e00008, +0x8c620014, 0x27bdffa8, 0x3c068008, 0xafbf0054, +0xafbe0050, 0xafb7004c, 0xafb60048, 0xafb50044, +0xafb40040, 0xafb3003c, 0xafb20038, 0xafb10034, +0xafb00030, 0x34c80100, 0x910500c5, 0x90c70008, +0x3084ffff, 0x30a500ff, 0x30e2007f, 0x45182a, +0xafa40010, 0xa7a00018, 0x1060009c, 0xafa00014, +0x90ca0008, 0x3149007f, 0xa93023, 0x24d4ffff, +0x14882b, 0x8fb30010, 0x13902b, 0x2328024, +0x52000085, 0x8fb40014, 0x3c038008, 0x94790052, +0x947e0050, 0x8fb60010, 0x33ec023, 0x18bc00, +0x171403, 0x16fc00, 0x2c2a82a, 0x16a00002, +0x1f2c03, 0x402821, 0x143c00, 0x72403, +0xa4102a, 0x54400001, 0xa02021, 0x28850009, +0x14a00002, 0x80b021, 0x24160008, 0x3c0c8008, +0x8d860048, 0x165980, 0x8d88004c, 0x3c038000, +0x3169ffff, 0x3c0a0010, 0x12a2025, 0x34700400, +0xac660038, 0xaf90008c, 0xac68003c, 0xac640030, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x8c6e0000, 0x31cd0020, 0x11a0fffd, 0x16902a, +0x2517824, 0x11e00036, 0xb821, 0x3c158000, +0x3c118008, 0x92220008, 0x8ea40100, 0x8821, +0x305e007f, 0xe000e50, 0x3c02821, 0x8e1f0010, +0x8ea40100, 0x33f93fff, 0x3202821, 0xe000e68, +0xafb9001c, 0x92180000, 0x3302003f, 0x2c530008, +0x5260000d, 0x8021, 0x24050001, 0x451804, +0x3067005d, 0x14e000b1, 0x8f92008c, 0x30640002, +0x1480014d, 0x8f86008c, 0x30680080, 0x5500004a, +0x96180012, 0x8021, 0x8ea40100, 0xe000e85, +0x8fa5001c, 0x8ea40100, 0xe000e95, 0x3c02821, +0x1200004f, 0x3c078008, 0x26e40001, 0x8f8c008c, +0x4bc00, 0x291a023, 0x17bc03, 0x2f6302a, +0x14882b, 0x259f0040, 0x24120001, 0xd1f024, +0x3e08021, 0xaf9f008c, 0x17c0ffcd, 0xafb20014, +0x3c078008, 0x94e80050, 0x8fb30010, 0x3c058000, +0x2e81021, 0x3c0d0020, 0xa4e20050, 0xacad0030, +0x94f50050, 0x94f60052, 0x2775023, 0x3149ffff, +0x12d50041, 0xafa90010, 0x8cf6004c, 0x174980, +0x8cf70048, 0x2c9f821, 0x2021, 0x3e9302b, +0x2e46021, 0x1868021, 0xacff004c, 0xacf00048, +0x8fb30010, 0x13902b, 0x2328024, 0x1600ff7f, +0x3c038008, 0x8fb40014, 0x8fbf0054, 0x8fbe0050, +0x3a820001, 0x8fb7004c, 0x8fb60048, 0x8fb50044, +0x8fb40040, 0x8fb3003c, 0x8fb20038, 0x8fb10034, +0x8fb00030, 0x3e00008, 0x27bd0058, 0x90cf0008, +0x938c0090, 0x31ee007f, 0xae6823, 0x18d5821, +0xa000ff9, 0x2574ffff, 0x8f840088, 0x24100001, +0xa7b80018, 0xe000e79, 0x97a50018, 0x8ea40100, +0xe000e85, 0x8fa5001c, 0x8ea40100, 0xe000e95, +0x3c02821, 0x1600ffb5, 0x26e40001, 0x3c078008, +0x94e80050, 0x8fb30010, 0x3c058000, 0x2e81021, +0x3c0d0020, 0xa4e20050, 0xacad0030, 0x94f50050, +0x94f60052, 0x2775023, 0x3149ffff, 0x14882b, +0x16d5ffc1, 0xafa90010, 0x94fe0054, 0x8cf00044, +0x33d8fffe, 0x1878c0, 0x20f7021, 0xacae003c, +0x8cf90044, 0x8ca3003c, 0x3235823, 0x196002ea, +0x0, 0x8cf20040, 0x26420001, 0xaca20038, +0x3c050050, 0x34a70010, 0x3c038000, 0xac670030, +0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, +0x8c7f0000, 0x33e60020, 0x10c0fffd, 0x3c108008, +0x960d0054, 0x3c178000, 0x3c068008, 0x31b30001, +0x1350c0, 0x157b021, 0x8ec90400, 0x3c070800, +0x8ce70044, 0x3c040020, 0xacc90048, 0x8ed50404, +0x240c0001, 0xacd5004c, 0x10ec02d0, 0xaee40030, +0x96180052, 0x3c050800, 0x8ca50040, 0xb87821, +0xa60f0052, 0x960e0054, 0x25c30001, 0xa6030054, +0x96190054, 0x3324ffff, 0x5487ff0f, 0x8fb30010, +0x30a5ffff, 0xe000fd7, 0xa6000054, 0x3c050800, +0x8ca50024, 0x96120052, 0x453823, 0x247f023, +0xa61e0052, 0xa000ffb, 0x8fb30010, 0x8f93001c, +0x3c070080, 0x8e440028, 0x3c1fffef, 0x37f9ffff, +0xae640000, 0x8e420024, 0xa260000a, 0x3c0fff9f, +0xae620004, 0x9245002c, 0x35eeffff, 0x3c0c0040, +0xa265000c, 0x8e71000c, 0xa265000b, 0x3c0600ff, +0x227c025, 0x3196824, 0x1ae5824, 0x16c5025, +0xae6a000c, 0x8e490004, 0xae600018, 0x34d0ffff, +0xae690014, 0x8e48002c, 0x8f820088, 0xa6600008, +0x1102024, 0xae640010, 0x8e510008, 0x96470012, +0xae710020, 0x8e58000c, 0x30e33fff, 0x32980, +0xae780024, 0x8e4c0014, 0xa2f821, 0x30f90001, +0xae6c0028, 0x8e4b0018, 0x1f71c2, 0x197b80, +0xae6b002c, 0x8e49001c, 0x1cf6821, 0xa66d001c, +0xae690030, 0x964a0002, 0x8e460020, 0xa66a001e, +0xae660034, 0x92430033, 0x30700004, 0x56000006, +0x924b0000, 0x3c068008, 0x34d00100, 0x8e0800c0, +0xae680030, 0x924b0000, 0x8f8a0020, 0xa14b0030, +0x92490033, 0x31230002, 0x50600007, 0x92440001, +0x8f8c0020, 0x240fff80, 0x918e0030, 0x1cf6825, +0xa18d0030, 0x92440001, 0x8f820020, 0x2418ffbf, +0x240affdf, 0xa0440031, 0x8f990020, 0x3c088008, +0x35040080, 0x9331003c, 0x323f007f, 0xa33f003c, +0x8f8d0020, 0x91af003c, 0x1f87024, 0xa1ae003c, +0x8f870020, 0x8e6c0014, 0x90e3003c, 0x2d8b0001, +0xb4940, 0x6a3024, 0xc98025, 0xa0f0003c, +0x96450012, 0x8f870020, 0xa4e50032, 0x8e450004, +0x909f007c, 0x30a20003, 0x28823, 0x32390003, +0xb91021, 0x33f80002, 0x17000002, 0x24440034, +0x24440030, 0x3c038008, 0x34660080, 0x90c9007c, +0xa98024, 0x32080004, 0x15000002, 0x24830004, +0x801821, 0x8f840020, 0x24080002, 0xace30034, +0xa0880000, 0x9242003f, 0x8f9f0020, 0x3c188008, +0x370f0080, 0xa3e20001, 0x8f910020, 0x9259003f, +0x8e440004, 0xa6390002, 0x95ee005c, 0xe000eab, +0x31d0ffff, 0x26b80, 0x20d5825, 0x3c0c4200, +0x16c2825, 0xae250004, 0x8e4a0038, 0x8f850020, +0xacaa0018, 0x8e470034, 0xaca7001c, 0xaca0000c, +0xaca00010, 0xa4a00014, 0xa4a00016, 0xa4a00020, +0xa4a00022, 0xaca00024, 0x8e620014, 0x50400001, +0x24020001, 0xaca20008, 0xe000eca, 0x24110001, +0xa00104f, 0x24100001, 0x90d30001, 0x32720020, +0x1240018a, 0x24100001, 0x3c0a8008, 0x35470080, +0x90e3007c, 0x8f93001c, 0xafa00024, 0x30690001, +0x11200011, 0xafb00020, 0x3c058008, 0x8ccb0014, +0x8cac0060, 0x16c882b, 0x16200003, 0x1602821, +0x3c108008, 0x8e050060, 0x3c0f8008, 0x35e30080, +0x8c6e0070, 0xae682b, 0x15a00002, 0xa02021, +0x8c640070, 0xafa40024, 0x8f82ff5c, 0x8cc40014, +0x8c590070, 0x99c02b, 0x53000001, 0x8c440070, +0x8fa20024, 0x82f823, 0x13e00003, 0xafbf0028, +0x24040002, 0xafa40020, 0x8fb20020, 0x292402b, +0x1500015b, 0x1821, 0x8cc50038, 0x8e6b000c, +0x3c0c0080, 0xae650000, 0x8cc90034, 0x3c11ff9f, +0x16c5025, 0xae690004, 0x90c8003f, 0x3623ffff, +0x1431024, 0x3c120020, 0x3c04ffef, 0xa268000b, +0x523825, 0x349fffff, 0xffc024, 0x3c190008, +0x8f87008c, 0x3197825, 0xae6f000c, 0x8ced0014, +0xae600018, 0x8fb10024, 0xae6d0014, 0x8cf00018, +0x8fae0028, 0xae70001c, 0x8ce50008, 0x22e6021, +0xae650024, 0x8ceb000c, 0xa6600038, 0xa660003a, +0xae6c002c, 0xae600028, 0xae6b0020, 0x8cea0014, +0x8fa30028, 0x1514823, 0x1233023, 0x10c00011, +0xae660010, 0x90e9003d, 0x8e620004, 0x8e7f0000, +0x99100, 0x527821, 0x2021, 0x1f2c82b, +0x3e4c021, 0x3197021, 0xae6f0004, 0xae6e0000, +0x90ed003d, 0xa26d000a, 0x8f90008c, 0x96060006, +0xa6660008, 0x8f980020, 0x24190002, 0x3c0f8008, +0x8fa40024, 0x35ee0080, 0xa3190000, 0x95cd005c, +0x8f920020, 0xe000eab, 0x31b0ffff, 0x22b80, +0x2056025, 0x3c064200, 0x8f85008c, 0x1865825, +0xae4b0004, 0x8f840020, 0x8cb10038, 0xac910018, +0x8ca30034, 0xac83001c, 0xac80000c, 0xac800010, +0xa4800014, 0xa4800016, 0xa4800020, 0xa4800022, +0xac800024, 0x90aa003f, 0x8fa70024, 0xa48a0002, +0x10e0000c, 0x24090001, 0x8fbf0028, 0x53e00188, +0x90a2003d, 0x90a2003e, 0x24480001, 0xa0880001, +0x8f850020, 0x8fa40024, 0xaca40008, 0xa00122f, +0x3c118008, 0xa0890001, 0x8f850020, 0x24020001, +0xaca20008, 0x3c118008, 0x36230080, 0x906a007c, +0x31470002, 0x14e00002, 0x24060034, 0x24060030, +0x8f8d008c, 0x3c0f8008, 0x35ee0080, 0x91ac0000, +0x91c8007c, 0x8fb00024, 0xa0ac0030, 0x8f91008c, +0x8f820020, 0x8faa0024, 0x92270001, 0x32120003, +0x240b0004, 0xa0470031, 0x1721823, 0x8f84008c, +0x8f8b0020, 0x241fc000, 0x94980012, 0x95790032, +0x30690003, 0x330f3fff, 0x33f7024, 0x1cf6825, +0xa56d0032, 0x91650032, 0xca3021, 0xc93021, +0x30b0003f, 0x360c0040, 0xa16c0032, 0x8fb20024, +0x31070004, 0x12400002, 0x8f850020, 0xc73021, +0x3c048008, 0xaca60034, 0x34880100, 0x8d1900c0, +0x8fbf0024, 0x240dffbf, 0xacb90038, 0x90af003c, +0x2ff80001, 0x2412ffdf, 0x31ee007f, 0xa0ae003c, +0x8f8b0020, 0x188940, 0x9170003c, 0x20d6024, +0xa16c003c, 0x8f870020, 0x90e3003c, 0x725024, +0x1511025, 0xa0e2003c, 0x8f88008c, 0x8f990020, +0x8d090020, 0xaf290040, 0x8d060024, 0xaf260044, +0x8d040028, 0xaf240048, 0x8d1f002c, 0xaf3f004c, +0xe000eca, 0x0, 0x8fb80020, 0x24050002, +0x5705009f, 0x8fa30020, 0x3c1f8000, 0x3c128008, +0x8fe40100, 0x92580008, 0x8f92ff5c, 0xe000e50, +0x3305007f, 0x8f8e0020, 0x8faf0020, 0x8fa40028, +0xa1cf0000, 0x9659005c, 0x8f910020, 0xe000eab, +0x3330ffff, 0x25b80, 0x20b6825, 0x3c084200, +0x8f8b008c, 0x1a83025, 0xae260004, 0x8d700038, +0x8f860020, 0x2821, 0x51100, 0xacd00018, +0x8d6c0034, 0x3c047fff, 0x3488ffff, 0xaccc001c, +0x9171003e, 0x8cca001c, 0x8cdf0018, 0x113900, +0x111f02, 0x1477021, 0x434825, 0x1c7c02b, +0x3e97821, 0x1f8c821, 0xacce001c, 0xacd90018, +0xacc0000c, 0xacc00010, 0x916d003e, 0x8faa0028, +0x24070005, 0xa4cd0014, 0x95700004, 0x2418c000, +0x148c824, 0xa4d00016, 0x916c003e, 0x1402021, +0xa4cc0020, 0x95650004, 0xa4c50022, 0xacc00024, +0x9163003f, 0xa4c30002, 0x9171003d, 0x26220001, +0xa0c20001, 0x8f890020, 0x3c028008, 0x34460100, +0xad2a0008, 0xa1270030, 0x8f910020, 0x8f9f008c, +0x2402ff80, 0x962f0032, 0x97ee0012, 0x30f8024, +0x31cd3fff, 0x20d6025, 0xa62c0032, 0x92250032, +0x2418ffbf, 0x2410ffdf, 0x30ab003f, 0x35630040, +0xa2230032, 0x8f9f0020, 0x2403ffff, 0xafe00034, +0x8cca00c0, 0xafea0038, 0x93e7003c, 0x30e9007f, +0xa3e9003c, 0x8f8d0020, 0x3c098000, 0x91af003c, +0x1f87024, 0xa1ae003c, 0x8f8b0020, 0x916c003c, +0x1902824, 0xa165003c, 0x8f870020, 0xace30040, +0x8fb10024, 0x3c038008, 0xacf10044, 0x90ea0048, +0x1423025, 0xa0e60048, 0x8f900020, 0x8f8e008c, +0x8e1f0048, 0x3e9c024, 0x3197825, 0xae0f0048, +0x91cd003e, 0xa20d004c, 0x8f8c008c, 0x8f8b0020, +0x95850004, 0xa565004e, 0xe00030c, 0x8c650060, +0x924a007c, 0x402821, 0x8fa60028, 0x21140, +0x58900, 0x513821, 0x31490002, 0x11200003, +0xc71821, 0x52080, 0x641821, 0x3c028008, +0x344a0080, 0x9147007c, 0x30e90004, 0x11200003, +0x8fb90028, 0x56080, 0x6c1821, 0x240b0004, +0x8f910020, 0x33300003, 0x1704023, 0x310d0003, +0x6d3021, 0xae260034, 0x3c038008, 0xa6650038, +0x3c058000, 0x8ca40100, 0x90730008, 0xe000e95, +0x3265007f, 0xe000eca, 0x0, 0x8fa30020, +0x3782b, 0xf8023, 0x290a024, 0x608021, +0x608821, 0xa00104f, 0x10802b, 0x8f91001c, +0x8cd80038, 0x24190003, 0xa6200008, 0xae380000, +0x8ccf0034, 0xa220000a, 0x8f8e008c, 0xae2f0004, +0x3c050080, 0x91cb003f, 0xa239000c, 0x8e28000c, +0x3c0dff9f, 0xa22b000b, 0x1051025, 0x35a3ffff, +0x3c13ffef, 0x8f8e008c, 0x433824, 0x366affff, +0xea4824, 0xae29000c, 0x8dc40014, 0x95d80012, +0x8f860088, 0xae240010, 0x8dcc0014, 0xae200018, +0xae200020, 0xae2c0014, 0xae200024, 0x8ddf0018, +0x330c3fff, 0xc9180, 0xae3f0028, 0x8dcf0008, +0x246c821, 0x330b0001, 0xae2f0030, 0x8dc3000c, +0x8f930020, 0x1941c2, 0xb2b80, 0x1056821, +0x24020002, 0x3c0a8008, 0xa62d001c, 0xa6200034, +0xae23002c, 0x35470080, 0xa2620000, 0x94e9005c, +0x8f990020, 0x3c044200, 0x313fffff, 0x3e43025, +0xaf260004, 0x8f98008c, 0x240e0001, 0x2402c000, +0x8f120038, 0x24060034, 0xaf320018, 0x8f0f0034, +0x3c128008, 0x36580080, 0xaf2f001c, 0xaf20000c, +0xaf200010, 0xa7200014, 0xa7200016, 0xa7200020, +0xa7200022, 0xaf200024, 0xa7300002, 0xa32e0001, +0x8f8d0020, 0x8f8b008c, 0xadb00008, 0x91680000, +0xa1a80030, 0x8f91008c, 0x8f830020, 0x92250001, +0xa0650031, 0x8f9f0020, 0x97f30032, 0x2625024, +0x14c3825, 0xa7e70032, 0x93e90032, 0x3124003f, +0xa3e40032, 0x930f007c, 0x31ee0002, 0x15c00002, +0x8f840020, 0x24060030, 0x3c0e8008, 0xac860034, +0x35d10100, 0x8e3900c0, 0x2403ffbf, 0x2008821, +0xac990038, 0x908b003c, 0x10802b, 0x3165007f, +0xa085003c, 0x8f8d0020, 0x91a8003c, 0x1031024, +0xa1a2003c, 0x8f870020, 0x90f3003c, 0x366a0020, +0xa0ea003c, 0x8f9f008c, 0x8f920020, 0x8fe90020, +0xae490040, 0x8fe40024, 0xae440044, 0x8fec0028, +0xae4c0048, 0x8fe6002c, 0xe000eca, 0xae46004c, +0xa00104f, 0x0, 0xa0010c0, 0x8ce20040, +0x24480001, 0xa0880001, 0x8f850020, 0x8fa40024, +0xaca40008, 0xa00122f, 0x3c118008, 0x94cb0052, +0x3c080800, 0x8d080024, 0x10b1021, 0xa4c20052, +0xa000ffb, 0x8fb30010, 0x27bdffe0, 0x3c0d8008, +0xafb20018, 0xafb00010, 0xafbf001c, 0xafb10014, +0x35b20080, 0x8e4c0018, 0x35a80100, 0x964b0006, +0x95a70050, 0x910900ec, 0xc5602, 0x1672823, +0x3143007f, 0x312600ff, 0x24020003, 0xa3830090, +0xaf840088, 0x10c2001b, 0x30b0ffff, 0x910600ec, +0x24120005, 0x30c200ff, 0x10520033, 0x0, +0x16000009, 0x8fbf001c, 0x8fb20018, 0x8fb10014, +0x8fb00010, 0x240d0c00, 0x3c0c8000, 0x27bd0020, +0x3e00008, 0xad8d0024, 0xe000fde, 0x2002021, +0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x240d0c00, 0x3c0c8000, 0x27bd0020, 0x3e00008, +0xad8d0024, 0x96580078, 0x9651007a, 0x924e007d, +0x2387826, 0x31e8ffff, 0x31c400c0, 0x14800009, +0x2d110001, 0x16000037, 0x0, 0x5620ffe2, +0x8fbf001c, 0xe000edf, 0x0, 0xa0013d3, +0x8fbf001c, 0x1620ffda, 0x0, 0xe000edf, +0x0, 0x1440ffd8, 0x8fbf001c, 0x16000022, +0x0, 0x925f007d, 0x33e2003f, 0xa242007d, +0xa0013d3, 0x8fbf001c, 0x950900da, 0x8f860064, +0x802821, 0x24040005, 0xe000682, 0x3130ffff, +0x97830076, 0x3c048000, 0x2465ffff, 0xa7850076, +0x8c8a01b8, 0x540fffe, 0x0, 0xac800180, +0x8fbf001c, 0xac900184, 0x8fb20018, 0x8fb10014, +0x8fb00010, 0x3c076013, 0x3c0b1000, 0x240d0c00, +0x3c0c8000, 0x27bd0020, 0xac870188, 0xac8b01b8, +0x3e00008, 0xad8d0024, 0xe000fde, 0x2002021, +0x5040ffb1, 0x8fbf001c, 0x925f007d, 0xa001400, +0x33e2003f, 0xe000fde, 0x2002021, 0x1440ffaa, +0x8fbf001c, 0x12200007, 0x0, 0x9259007d, +0x3330003f, 0x36020040, 0xa242007d, 0xa0013d3, +0x8fbf001c, 0xe000edf, 0x0, 0x5040ff9e, +0x8fbf001c, 0x9259007d, 0x3330003f, 0xa00142f, +0x36020040, 0x411c0, 0x3e00008, 0x24420240, +0x3c050006, 0x851025, 0x3c038000, 0xac620030, +0x0, 0x0, 0x0, 0x3c058000, +0x8ca70000, 0x30e60010, 0x10c0fffd, 0x0, +0x8cab003c, 0x8caa003c, 0x1644821, 0x12a402b, +0x11000004, 0x3c068000, 0x8cad0038, 0x25ac0001, +0xacac0038, 0x8ccf003c, 0x1e47021, 0x3e00008, +0xacce003c, 0x27bdffd0, 0xafb20018, 0xafb00010, +0xafbf0028, 0xafb50024, 0xafb40020, 0xafb3001c, +0xafb10014, 0xa09021, 0x14a00012, 0x808021, +0x8f820024, 0x21880, 0x14600037, 0x24040010, +0xe00143d, 0x0, 0x8fbf0028, 0x8fb50024, +0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, +0x8fb00010, 0x1021, 0x27bd0030, 0x3e00008, +0xaf800024, 0x10a0001e, 0x8821, 0x3c138000, +0x24140020, 0xa00147c, 0x3c150005, 0x26310004, +0x232502b, 0x11400017, 0x2401021, 0x8f880024, +0x8e070000, 0x24040080, 0x84880, 0x1331821, +0x25060001, 0xac670400, 0x26100004, 0x14d4fff3, +0xaf860024, 0xe00143d, 0x0, 0xae750030, +0x0, 0x0, 0x0, 0x0, +0x26310004, 0x232502b, 0x1540ffec, 0xaf800024, +0x2401021, 0x8fbf0028, 0x8fb50024, 0x8fb40020, +0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, +0x3e00008, 0x27bd0030, 0x32023, 0x3085000f, +0xa001465, 0x652021, 0x27bdffd8, 0x3c038000, +0xa03821, 0xac670038, 0xafb10014, 0xac66003c, +0x808821, 0x3c060022, 0xac660030, 0xafb00010, +0xac710028, 0x3c10800c, 0x3c04800c, 0x24050070, +0xafbf0024, 0xafb40020, 0xafb3001c, 0xe001456, +0xafb20018, 0x26040080, 0xe001456, 0x24050080, +0x26040100, 0xe001456, 0x240500f0, 0x3c020800, +0x8c420064, 0x10400013, 0x8021, 0x3c148000, +0x2413ff80, 0x3c12800c, 0xe00143a, 0x2002021, +0x514821, 0x312a007f, 0x1334024, 0x1522021, +0x24050050, 0xae880028, 0xe001456, 0x26100001, +0x3c050800, 0x8ca50064, 0x205202b, 0x1480fff2, +0x0, 0x3c060800, 0x8cc60060, 0x10c00015, +0x8021, 0x3c148000, 0x2413ff80, 0x3c12800c, +0x3c190800, 0x8f390058, 0x10c180, 0x24050040, +0x3317821, 0x1f86821, 0x31ae007f, 0x1b36024, +0x1d22021, 0xae8c0028, 0xe001456, 0x26100001, +0x3c060800, 0x8cc60060, 0x206582b, 0x1560fff0, +0x0, 0x3c100800, 0x8e10005c, 0x2414ff80, +0x3c1f800c, 0x2119821, 0x2749024, 0x3262007f, +0x3c118000, 0x5f2021, 0xae320028, 0xe001456, +0x62840, 0x8fbf0024, 0x8fb40020, 0x8fb3001c, +0x8fb20018, 0x8fb10014, 0x8fb00010, 0x2021, +0x2821, 0xa001456, 0x27bd0028, 0x8f83003c, +0x8c620004, 0x10400003, 0x0, 0x3e00008, +0x0, 0x8c640010, 0x8c650008, 0xa00149f, +0x8c66000c, 0x0 }; +u32 bce_CP_b09FwData[(0x84/4) + 1] = { +0x0, +0x1b, 0xf, 0xa, 0x8, +0x6, 0x5, 0x5, 0x4, +0x4, 0x3, 0x3, 0x3, +0x3, 0x3, 0x2, 0x2, +0x2, 0x2, 0x2, 0x2, +0x2, 0x2, 0x2, 0x2, +0x2, 0x2, 0x2, 0x2, +0x2, 0x1, 0x1, 0x1, +0x0 }; +u32 bce_CP_b09FwRodata[(0x16c/4) + 1] = { +0x80080100, +0x80080080, 0x80080000, 0x8001800, 0x8001800, +0x8001838, 0x8001838, 0x800184c, 0x800181c, +0x8001a74, 0x8001a40, 0x8001acc, 0x8001acc, +0x8001b54, 0x8001a84, 0x80080240, 0x80021c4, +0x8002010, 0x80021ec, 0x8002284, 0x80023d4, +0x8002420, 0x8002544, 0x800244c, 0x80024d0, +0x8002080, 0x80029f8, 0x800299c, 0x800202c, +0x800202c, 0x800202c, 0x80025b8, 0x80025b8, +0x800202c, 0x800202c, 0x8002874, 0x800202c, +0x800202c, 0x800202c, 0x800202c, 0x80028d4, +0x800202c, 0x800202c, 0x800202c, 0x800202c, +0x800202c, 0x800202c, 0x800202c, 0x800202c, +0x800202c, 0x800202c, 0x800202c, 0x800202c, +0x800202c, 0x800202c, 0x8002440, 0x800202c, +0x800202c, 0x8002944, 0x800202c, 0x800202c, +0x800202c, 0x800202c, 0x800202c, 0x800202c, +0x800202c, 0x800202c, 0x800202c, 0x800202c, +0x800202c, 0x800202c, 0x800202c, 0x800202c, +0x800202c, 0x800202c, 0x800202c, 0x8002798, +0x800202c, 0x800202c, 0x8002700, 0x800265c, +0x80037c0, 0x8003794, 0x8003760, 0x8003734, +0x8003714, 0x80036c8, 0x80080100, 0x80080080, +0x80080000, 0x80080080, 0x0 }; +u32 bce_CP_b09FwBss[(0x19c/4) + 1] = { 0x0 }; +u32 bce_CP_b09FwSbss[(0x91/4) + 1] = { 0x0 }; +u32 bce_CP_b09FwSdata[(0x0/4) + 1] = { 0x0 }; + + +u32 bce_xi_rv2p_proc1[] = { + 0x00000010, 0xb1800002, + 0x0000001f, 0x05030100, + 0x00000008, 0xac000001, + 0x00000000, 0x05000000, + 0x0000000c, 0x2f800001, + 0x00000000, 0x2b000000, + 0x00000000, 0x2b800000, + 0x00000010, 0x203f006c, + 0x00000010, 0x213f0003, + 0x00000010, 0x20bf003b, + 0x00000018, 0x8000fffd, + 0x00000010, 0xb1b8b015, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x03d80000, + 0x00000000, 0x2c380000, + 0x00000008, 0x2c800000, + 0x00000008, 0x2d000000, + 0x00000010, 0x91d40000, + 0x00000008, 0x06005555, + 0x00000018, 0x8000007c, + 0x00000008, 0x2d80011c, + 0x00000008, 0x02000001, + 0x00000010, 0x91de0000, + 0x0000000f, 0x42e0001c, + 0x00000010, 0x91840a17, + 0x00000010, 0x08660016, + 0x0000000c, 0x29800002, + 0x0000000c, 0x1f800002, + 0x00000000, 0x2adf0000, + 0x00000008, 0x2a00000f, + 0x00000008, 0x05005555, + 0x00000018, 0x8000ffe8, + 0x00000008, 0x02000001, + 0x0000000f, 0x42e0001c, + 0x00000010, 0x91840a19, + 0x00000008, 0x2c800006, + 0x00000008, 0x2d000006, + 0x00000010, 0x91d40000, + 0x00000008, 0x2d800106, + 0x00000018, 0x80000070, + 0x00000010, 0x08660013, + 0x00000018, 0x8000fff1, + 0x00000008, 0xb1000001, + 0x00000008, 0x2c80010c, + 0x00000008, 0x2d000008, + 0x00000008, 0x2d800001, + 0x00000018, 0x80000069, + 0x0000000b, 0x2fdf0002, + 0x0000000c, 0x1f800002, + 0x00000000, 0x2c070000, + 0x00000010, 0x91de0000, + 0x00000000, 0x05000000, + 0x00000018, 0x8000ffd3, + 0x0000000b, 0x2fdf0002, + 0x0000000c, 0x1f800000, + 0x00000000, 0x2c070000, + 0x00000010, 0x91de0000, + 0x00000000, 0x05000000, + 0x00000018, 0x8000ffcd, + 0x0000000c, 0x1f800002, + 0x00000000, 0x05000000, + 0x00000018, 0x8000ffca, + 0x0000000c, 0x29800002, + 0x0000000c, 0x1f800002, + 0x00000000, 0x2adf0000, + 0x00000008, 0x2a000005, + 0x00000008, 0x05005555, + 0x00000018, 0x8000ffc4, + 0x00000008, 0x02240045, + 0x00000018, 0x00040000, + 0x00000018, 0x8000001c, + 0x00000018, 0x8000001e, + 0x00000018, 0x80000052, + 0x00000018, 0x8000009e, + 0x00000018, 0x8000009d, + 0x00000018, 0x80000000, + 0x00000018, 0x80000000, + 0x00000018, 0x80000000, + 0x00000018, 0x80000000, + 0x00000018, 0x80000000, + 0x00000018, 0x80000000, + 0x00000018, 0x80000000, + 0x00000018, 0x80000000, + 0x00000018, 0x800000e4, + 0x00000018, 0x80000000, + 0x00000018, 0x80000000, + 0x00000018, 0x80000015, + 0x00000018, 0x8000001b, + 0x00000018, 0x80000000, + 0x00000018, 0x800000b4, + 0x00000018, 0x8000002e, + 0x00000018, 0x800000e4, + 0x00000018, 0x8000010f, + 0x00000018, 0x800000da, + 0x00000018, 0x80000133, + 0x00000018, 0x8000003b, + 0x00000018, 0x80000000, + 0x00000018, 0x80000071, + 0x0000000c, 0x1f800001, + 0x00000000, 0x05000000, + 0x00000018, 0x8000ffa3, + 0x00000010, 0x91d40000, + 0x0000000c, 0x29800001, + 0x0000000c, 0x1f800001, + 0x00000008, 0x2a000002, + 0x00000000, 0x05000000, + 0x00000018, 0x8000ff9d, + 0x00000010, 0x91d40000, + 0x0000000c, 0x29800001, + 0x0000000c, 0x1f800001, + 0x00000000, 0x29420000, + 0x00000008, 0x2a000002, + 0x00000000, 0x05000000, + 0x00000018, 0x8000ff96, + 0x00000018, 0x8000ff95, + 0x00000010, 0xb1bcb00a, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x03d80000, + 0x00000000, 0x2c3c0000, + 0x00000010, 0x91d40000, + 0x00000008, 0x06005555, + 0x00000018, 0x80000016, + 0x00000018, 0x800000ac, + 0x00000010, 0x2c6201ba, + 0x00000018, 0x80000005, + 0x00000008, 0x2c80010d, + 0x00000008, 0x2d000009, + 0x00000010, 0x91d40000, + 0x00000008, 0x2d800107, + 0x0000000c, 0x29800000, + 0x0000000c, 0x1f800000, + 0x00000010, 0x91de0000, + 0x00000000, 0x2adf0000, + 0x00000008, 0x2a000006, + 0x00000008, 0x05005555, + 0x00000018, 0x8000ff80, + 0x00000010, 0x91d40000, + 0x0000000c, 0x29800001, + 0x0000000c, 0x1f800001, + 0x00000008, 0x2a00000b, + 0x00000000, 0x05000000, + 0x00000018, 0x8000ff7a, + 0x00000018, 0x00020000, + 0x00000000, 0x06820000, + 0x00000010, 0xb18a0006, + 0x00000000, 0x860c1400, + 0x00000010, 0xb18c0004, + 0x00000000, 0x05000000, + 0x00000008, 0x2a000001, + 0x00000010, 0x91d40000, + 0x00000018, 0x000d0000, + 0x00000000, 0x05020000, + 0x00000010, 0x91de0000, + 0x00000018, 0x000a0000, + 0x00000010, 0xb1a0b013, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x2c200000, + 0x00000008, 0x2c800000, + 0x00000008, 0x2d000000, + 0x00000010, 0x91d40000, + 0x00000008, 0x06005555, + 0x00000018, 0x8000ffee, + 0x00000008, 0x2d80011c, + 0x00000010, 0x001f0000, + 0x00000010, 0x91de0000, + 0x0000000f, 0x47600008, + 0x0000000f, 0x060e0001, + 0x00000000, 0x0f580000, + 0x00000000, 0x0a640000, + 0x00000000, 0x0ae50000, + 0x00000009, 0x0b66ffff, + 0x00000000, 0x0d610000, + 0x00000018, 0x80000013, + 0x0000000f, 0x47600008, + 0x0000000b, 0x2fdf0002, + 0x00000008, 0x2c800000, + 0x00000008, 0x2d000000, + 0x00000010, 0x91d40000, + 0x00000008, 0x2d80011c, + 0x0000000f, 0x060e0001, + 0x00000010, 0x001f0000, + 0x00000000, 0x0f580000, + 0x00000010, 0x91de0000, + 0x00000000, 0x0a640000, + 0x00000000, 0x0ae50000, + 0x00000009, 0x0b66ffff, + 0x00000000, 0x0d610000, + 0x00000000, 0x02620000, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x31040000, + 0x00000000, 0x309a0000, + 0x00000000, 0x0c961800, + 0x00000009, 0x0c99ffff, + 0x00000004, 0xcc993400, + 0x00000010, 0xb1963202, + 0x00000008, 0x0f800000, + 0x0000000c, 0x29800001, + 0x00000010, 0x00220002, + 0x0000000c, 0x29520001, + 0x0000000c, 0x29520000, + 0x00000008, 0x0200000e, + 0x00000008, 0x0280001a, + 0x00000010, 0xb1c40a02, + 0x00000008, 0x02000003, + 0x00000008, 0x22000001, + 0x0000000c, 0x1f800001, + 0x00000000, 0x2adf0000, + 0x00000000, 0x2a000800, + 0x00000008, 0x05005555, + 0x00000018, 0x8000ff36, + 0x0000000b, 0x2fdf0002, + 0x00000010, 0x91d40000, + 0x00000008, 0x2a000001, + 0x00000000, 0x2c200000, + 0x00000008, 0x2c800000, + 0x00000008, 0x2d000000, + 0x00000008, 0x2d80011c, + 0x00000010, 0x91d40000, + 0x00000010, 0x91de0000, + 0x00000008, 0x2c800006, + 0x00000008, 0x2d000006, + 0x00000000, 0x30800000, + 0x00000000, 0x31000000, + 0x00000008, 0x2d800006, + 0x0000000c, 0x29800001, + 0x0000000c, 0x1f800001, + 0x00000010, 0x91de0000, + 0x00000000, 0x2adf0000, + 0x00000008, 0x2a000010, + 0x00000000, 0x05000000, + 0x00000018, 0x8000ff21, + 0x00000010, 0x91a0b009, + 0x00000008, 0x2c80010d, + 0x00000008, 0x2d000009, + 0x00000010, 0x91d40000, + 0x00000008, 0x2d800107, + 0x00000018, 0x8000ffab, + 0x00000018, 0x80000010, + 0x00000008, 0xac000001, + 0x00000018, 0x8000000b, + 0x00000000, 0x0380b000, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x2c004000, + 0x00000010, 0x91d40000, + 0x00000008, 0x06005555, + 0x00000018, 0x8000ff9a, + 0x00000018, 0x80000030, + 0x00000018, 0x80000006, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x2c000e00, + 0x00000008, 0x2a000007, + 0x00000008, 0x05005555, + 0x00000018, 0x8000ff0b, + 0x00000000, 0x06820000, + 0x0000000c, 0x29800001, + 0x0000000c, 0x1f800001, + 0x00000010, 0x0ce70007, + 0x00000009, 0x0562ffff, + 0x00000010, 0xba6c1405, + 0x00000000, 0x2adf0000, + 0x00000000, 0x21000000, + 0x00000008, 0x2a000005, + 0x00000010, 0x91d40000, + 0x00000008, 0x2c80010c, + 0x00000008, 0x2d000008, + 0x0000000c, 0x31620018, + 0x00000008, 0x2d800001, + 0x00000018, 0x8000ff8c, + 0x00000018, 0x000d0000, + 0x00000010, 0xb1a0b00e, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x03d80000, + 0x00000000, 0x2c200000, + 0x00000010, 0x91d40000, + 0x00000018, 0x80000014, + 0x00000010, 0x2c620002, + 0x00000018, 0x8000000b, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x2c070000, + 0x0000000c, 0x1f800001, + 0x00000010, 0x91de0000, + 0x00000000, 0x05000000, + 0x00000018, 0x8000feed, + 0x00000008, 0x2c80010d, + 0x00000008, 0x2d000009, + 0x00000010, 0x91d40000, + 0x00000008, 0x2d800107, + 0x0000000c, 0x29800001, + 0x0000000c, 0x1f800001, + 0x00000010, 0x91de0000, + 0x00000000, 0x2adf0000, + 0x00000008, 0x2a00000a, + 0x00000000, 0x05000000, + 0x00000018, 0x8000fee2, + 0x00000000, 0x05020000, + 0x00000008, 0x2c80010c, + 0x00000008, 0x2d000008, + 0x00000008, 0x2d800134, + 0x00000000, 0x00000000, + 0x00000010, 0x205f0000, + 0x00000008, 0x2c800140, + 0x00000008, 0x2d00003c, + 0x00000008, 0x2d80011c, + 0x00000000, 0x00000000, + 0x00000010, 0x205f0000, + 0x00000008, 0x2c800080, + 0x00000008, 0x2d000000, + 0x00000008, 0x2d800108, + 0x00000000, 0x00000000, + 0x00000010, 0x91de0000, + 0x00000018, 0x000a0000, + 0x00000010, 0x91d40000, + 0x00000008, 0x0600aaaa, + 0x00000018, 0x8000ff56, + 0x0000000c, 0x29800001, + 0x0000000c, 0x1f800001, + 0x00000008, 0x2a000009, + 0x00000008, 0x0500aaaa, + 0x00000018, 0x8000fec9, + 0x00000010, 0x91d40000, + 0x00000008, 0x06005555, + 0x00000018, 0x8000ff4e, + 0x00000010, 0x91a03c02, + 0x00000010, 0xb1e66207, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x2c310000, + 0x00000009, 0x2cb1007f, + 0x00000008, 0x2cd90000, + 0x00000008, 0x2d000000, + 0x00000008, 0x2d80010d, + 0x00000010, 0xb1a80006, + 0x00000010, 0x205f0000, + 0x00000000, 0x2c200000, + 0x00000000, 0x2ca70000, + 0x00000008, 0x2d000010, + 0x00000008, 0x2d800108, + 0x00000018, 0x8000ff47, + 0x00000010, 0xb1a60010, + 0x00000010, 0x001f0000, + 0x0000000f, 0x0f300007, + 0x00000000, 0x0a600000, + 0x00000000, 0x0ae10000, + 0x0000000f, 0x4b620008, + 0x00000009, 0x0b1600ff, + 0x00000000, 0x0d620000, + 0x00000009, 0x0d1a00ff, + 0x00000010, 0x07300003, + 0x0000000c, 0x0d1a0008, + 0x0000000c, 0x0b160008, + 0x0000000f, 0x4ce30018, + 0x00000000, 0x0c992c00, + 0x00000004, 0xcc993400, + 0x00000008, 0x0f800000, + 0x0000000c, 0x29800001, + 0x00000000, 0x33310000, + 0x00000008, 0x22000016, + 0x00000000, 0x2adf0000, + 0x00000008, 0x2a00000c, + 0x00000010, 0x009f0000, + 0x00000000, 0x0f200000, + 0x0000000c, 0x1f800001, + 0x00000008, 0x05005555, + 0x00000018, 0x8000fe9d, + 0x00000010, 0x91d40000, + 0x00000008, 0x0600aaaa, + 0x00000018, 0x8000ff22, + 0x0000000f, 0x47220008, + 0x00000009, 0x070e000f, + 0x00000008, 0x070e0008, + 0x00000008, 0x02800001, + 0x00000007, 0x02851c00, + 0x00000008, 0x82850001, + 0x00000000, 0x02854c00, + 0x00000007, 0x42851c00, + 0x00000003, 0xc3aa5200, + 0x00000000, 0x03b10e00, + 0x00000007, 0x4b071c00, + 0x0000000f, 0x0f300007, + 0x0000000f, 0x0a960003, + 0x00000000, 0x0a955c00, + 0x00000000, 0x4a005a00, + 0x00000000, 0x0c960a00, + 0x00000009, 0x0c99ffff, + 0x00000008, 0x0d00ffff, + 0x00000010, 0xb1963202, + 0x00000008, 0x0f800005, + 0x00000010, 0xb1a80008, + 0x00000010, 0x205f0000, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x2c200000, + 0x00000000, 0x2ca70000, + 0x00000008, 0x2d000010, + 0x00000008, 0x2d800108, + 0x00000018, 0x8000ff0e, + 0x0000000c, 0x29800001, + 0x00000010, 0x001f0000, + 0x0000000c, 0x1f800001, + 0x00000000, 0x2adf0000, + 0x00000008, 0x2a00000d, + 0x00000008, 0x0500aaaa, + 0x00000018, 0x8000fe77, + 0x00000010, 0x91d40000, + 0x00000008, 0x06005555, + 0x00000018, 0x8000fefc, + 0x0000000c, 0x29800001, + 0x0000000c, 0x1f800001, + 0x00000008, 0x2a000007, + 0x00000008, 0x05005555, + 0x00000018, 0x8000fe6f, + 0x00000008, 0x03050004, + 0x00000006, 0x83040c00, + 0x00000008, 0x02850200, + 0x00000000, 0x86050c00, + 0x00000001, 0x860c0e00, + 0x00000008, 0x02040004, + 0x00000000, 0x02041800, + 0x00000000, 0x83871800, + 0x00000018, 0x00020000, +}; + + +u32 bce_xi_rv2p_proc2[] = { + 0x00000010, 0xb1800004, + 0x0000001f, 0x05030100, + 0x00000008, 0x050000ff, + 0x00000018, 0x00020000, + 0x00000000, 0x2a000000, + 0x00000010, 0xb1d40000, + 0x0000000c, 0x29800001, + 0x00000008, 0x02540009, + 0x00000009, 0x2952003f, + 0x00000018, 0x00040000, + 0x00000018, 0x80000010, + 0x00000018, 0x80000011, + 0x00000018, 0x8000003a, + 0x00000018, 0x8000010f, + 0x00000018, 0x8000010e, + 0x00000018, 0x8000010d, + 0x00000018, 0x8000010d, + 0x00000018, 0x80000000, + 0x00000018, 0x8000011f, + 0x00000018, 0x80000109, + 0x00000018, 0x8000000c, + 0x00000018, 0x80000123, + 0x00000018, 0x80000175, + 0x00000018, 0x80000067, + 0x00000018, 0x800000da, + 0x00000018, 0x800000e8, + 0x00000000, 0x2a000000, + 0x00000018, 0x8000ffea, + 0x00000000, 0x2a000000, + 0x0000000c, 0x29800000, + 0x00000010, 0x20530000, + 0x00000018, 0x8000ffe6, + 0x00000000, 0x2a000000, + 0x00000018, 0x8000ffe4, + 0x00000018, 0x00020000, + 0x00000000, 0x05020000, + 0x00000010, 0x91963421, + 0x00000010, 0x205f0000, + 0x00000000, 0x2c1e0000, + 0x00000008, 0x2c800006, + 0x00000008, 0x2d000006, + 0x00000008, 0x2d800102, + 0x00000000, 0x00000000, + 0x00000010, 0x91de0000, + 0x00000000, 0x0d610000, + 0x00000018, 0x000a0000, + 0x00000000, 0x05020000, + 0x00000010, 0x91963416, + 0x00000010, 0x205f0000, + 0x00000000, 0x09d80000, + 0x00000000, 0x2c1e0000, + 0x00000008, 0x2c80010e, + 0x00000008, 0x2d00000a, + 0x00000008, 0x2d800102, + 0x00000000, 0x00000000, + 0x00000010, 0x91de0000, + 0x00000000, 0x0d620000, + 0x00000000, 0x2c130000, + 0x00000018, 0x000a0000, + 0x00000000, 0x05020000, + 0x00000010, 0x91963409, + 0x00000010, 0x205f0000, + 0x00000000, 0x2c1e0000, + 0x00000008, 0x2c800006, + 0x00000008, 0x2d00006a, + 0x00000008, 0x2d800102, + 0x00000000, 0x00000000, + 0x00000010, 0x91de0000, + 0x00000000, 0x0d7a0000, + 0x00000018, 0x000a0000, + 0x00000010, 0x91de0000, + 0x00000010, 0x001f0000, + 0x00000000, 0x2f80aa00, + 0x00000000, 0x2a000000, + 0x00000000, 0x0d610000, + 0x00000000, 0x03620000, + 0x00000000, 0x2c400000, + 0x00000000, 0x02638c00, + 0x00000000, 0x26460000, + 0x00000008, 0x02040012, + 0x00000010, 0xb9060827, + 0x00000000, 0x0f580000, + 0x00000000, 0x0a640000, + 0x00000000, 0x0ae50000, + 0x00000009, 0x0b66ffff, + 0x00000000, 0x0c000000, + 0x00000000, 0x0b800000, + 0x00000008, 0x0cc60012, + 0x00000018, 0x8000ffcb, + 0x00000008, 0x0f800003, + 0x00000000, 0x00000000, + 0x00000010, 0x009f0000, + 0x00000008, 0x27110012, + 0x00000000, 0x66900000, + 0x00000008, 0xa31b0012, + 0x00000010, 0xb1980003, + 0x00000010, 0x001f0000, + 0x00000008, 0x0f800004, + 0x00000008, 0x22000003, + 0x00000008, 0x2c80000c, + 0x00000008, 0x2d00000c, + 0x00000010, 0x009f0000, + 0x00000000, 0x25960000, + 0x0000000c, 0x29800000, + 0x00000000, 0x06660000, + 0x00000000, 0x86611800, + 0x00000009, 0x0260000f, + 0x0000000f, 0x02040002, + 0x00000010, 0xb60c0803, + 0x0000000c, 0x1fbf0000, + 0x0000000c, 0x33660010, + 0x00000000, 0x32140000, + 0x00000000, 0x32950000, + 0x00000005, 0x73662c00, + 0x00000000, 0x31e32e00, + 0x00000008, 0x2d800010, + 0x00000010, 0x20530000, + 0x00000010, 0x91de0000, + 0x00000018, 0x8000ff8f, + 0x00000000, 0x23000000, + 0x00000009, 0x25e6ffff, + 0x00000008, 0x2200000b, + 0x0000000c, 0x69520000, + 0x0000000c, 0x29800000, + 0x00000010, 0x20530000, + 0x00000018, 0x8000ff88, + 0x00000010, 0x91de0000, + 0x00000010, 0x001f0000, + 0x00000000, 0x2f80aa00, + 0x00000000, 0x2a000000, + 0x00000000, 0x2c400000, + 0x00000008, 0x2c800040, + 0x00000008, 0x2d000020, + 0x00000008, 0x2d80011c, + 0x00000000, 0x00000000, + 0x00000010, 0x91de0000, + 0x0000000f, 0x42ea0010, + 0x00000010, 0x004f0004, + 0x00000010, 0xb7469200, + 0x00000008, 0x02490012, + 0x00000010, 0xb5840a00, + 0x00000000, 0x0d610000, + 0x00000010, 0xba66345a, + 0x00000000, 0x03620000, + 0x00000010, 0xb8630c58, + 0x00000008, 0x83050012, + 0x00000010, 0x004f0002, + 0x00000000, 0x03490000, + 0x00000001, 0x83068c00, + 0x00000000, 0x83c60c00, + 0x00000010, 0xb1870010, + 0x00000000, 0x0b6e0000, + 0x00000018, 0x8000ff6a, + 0x00000001, 0x06691400, + 0x00000010, 0x918c0002, + 0x00000008, 0xb4e90001, + 0x00000010, 0xb1e92c4c, + 0x00000000, 0x86692c00, + 0x00000000, 0x02000000, + 0x00000009, 0x02eaffff, + 0x00000010, 0x000c0002, + 0x00000000, 0x02040a00, + 0x0000000f, 0x460c0001, + 0x0000000f, 0x02850001, + 0x00000010, 0x918c01fc, + 0x00000010, 0xb7040e43, + 0x00000000, 0x2c400000, + 0x00000000, 0x0f400000, + 0x00000000, 0x0d610000, + 0x00000000, 0x0a640000, + 0x00000000, 0x0ae50000, + 0x00000009, 0x0b66ffff, + 0x00000000, 0x0c000000, + 0x00000000, 0x0b800000, + 0x00000008, 0x0c860012, + 0x00000008, 0x0f800003, + 0x0000000c, 0x29520000, + 0x00000010, 0x009f0000, + 0x00000008, 0x27110012, + 0x00000000, 0x66900000, + 0x00000000, 0x26460000, + 0x00000000, 0x23060000, + 0x00000010, 0xb1980005, + 0x00000010, 0x001f0000, + 0x00000008, 0x0f800004, + 0x00000000, 0x00000000, + 0x00000010, 0x001f0000, + 0x00000000, 0x32140000, + 0x00000000, 0x32950000, + 0x00000000, 0x31e32e00, + 0x00000005, 0x73662c00, + 0x00000000, 0x25960000, + 0x00000010, 0xb1870016, + 0x0000000c, 0x29800000, + 0x0000000f, 0x0f6b0007, + 0x00000000, 0x0d690000, + 0x00000000, 0x0a6c0000, + 0x00000000, 0x0aed0000, + 0x00000000, 0x0b6e0000, + 0x00000000, 0x0b800000, + 0x00000000, 0x0c870000, + 0x00000008, 0x0f800003, + 0x00000010, 0x20530000, + 0x0000000c, 0x69520001, + 0x00000010, 0x001f0000, + 0x00000000, 0x22c58c00, + 0x00000000, 0x231b0000, + 0x00000000, 0x27110000, + 0x00000000, 0x26900000, + 0x00000010, 0xb8170e03, + 0x0000000c, 0x29800000, + 0x00000018, 0x8000fff6, + 0x00000010, 0xb1980002, + 0x00000008, 0x0f800004, + 0x00000008, 0x2200001a, + 0x00000008, 0x2c80000c, + 0x00000008, 0x2d00000c, + 0x00000008, 0x2d800010, + 0x00000010, 0x001f0000, + 0x00000000, 0x0d6e0000, + 0x00000003, 0xe7cf3400, + 0x0000000c, 0x29800000, + 0x00000010, 0x91de0000, + 0x00000010, 0xb1870007, + 0x00000000, 0x36140000, + 0x00000000, 0x36950000, + 0x00000000, 0x37160000, + 0x00000008, 0x2c800050, + 0x00000008, 0x2d000030, + 0x00000008, 0x2d80000c, + 0x00000010, 0x20530000, + 0x00000018, 0x8000ff1e, + 0x00000000, 0x26460000, + 0x00000000, 0x23000000, + 0x00000009, 0x25e6ffff, + 0x00000000, 0x0b6e0000, + 0x00000003, 0xe7cf2c00, + 0x00000008, 0x2200001b, + 0x0000000c, 0x69520000, + 0x0000000c, 0x29800000, + 0x00000010, 0x20530000, + 0x00000018, 0x8000ff14, + 0x00000000, 0x2fd50000, + 0x00000000, 0x2a000000, + 0x00000010, 0x003f000c, + 0x00000000, 0x06660000, + 0x00000000, 0x86611800, + 0x00000009, 0x026000f0, + 0x00000010, 0xb70c0808, + 0x00000000, 0x2c400000, + 0x0000000c, 0x73660010, + 0x00000008, 0x2c800018, + 0x00000008, 0x2d000018, + 0x00000008, 0x2d800002, + 0x0000000c, 0x5fbf0000, + 0x00000010, 0x91de0000, + 0x00000018, 0x8000ff05, + 0x00000000, 0x2fd50000, + 0x00000000, 0x2a000000, + 0x00000000, 0x2c400000, + 0x0000000c, 0x73660010, + 0x00000008, 0x2c800018, + 0x00000008, 0x2d000018, + 0x00000008, 0x2d800002, + 0x0000000c, 0x5fbf0000, + 0x00000010, 0x91de0000, + 0x00000008, 0x2c800003, + 0x00000008, 0x2d000003, + 0x00000009, 0x3060fff0, + 0x00000008, 0x2d800001, + 0x0000000c, 0x29800000, + 0x00000010, 0x91de0000, + 0x00000008, 0x2c80001a, + 0x00000008, 0x2d00001a, + 0x00000000, 0x33000000, + 0x00000008, 0x2d800002, + 0x00000000, 0x31800000, + 0x00000010, 0x91de0000, + 0x00000008, 0x2c80000c, + 0x00000008, 0x2d00000c, + 0x00000008, 0x2d800004, + 0x00000010, 0x20530000, + 0x00000010, 0x91de0000, + 0x00000018, 0x8000feea, + 0x00000018, 0x8000fee9, + 0x00000000, 0x2a000000, + 0x00000010, 0x001f0000, + 0x00000000, 0x0f008000, + 0x00000008, 0x0f800007, + 0x00000018, 0x80000014, + 0x00000000, 0x05020000, + 0x00000008, 0x22000009, + 0x00000000, 0x286d0000, + 0x00000000, 0x29000000, + 0x0000000f, 0x65680010, + 0x00000003, 0xf66c9400, + 0x00000010, 0xb972a004, + 0x0000000c, 0x73e70019, + 0x0000000c, 0x21420004, + 0x00000000, 0x3bf60000, + 0x0000000c, 0x29800000, + 0x00000010, 0x20530000, + 0x00000008, 0x22000008, + 0x0000000c, 0x61420004, + 0x00000018, 0x000a0000, + 0x00000000, 0x2a000000, + 0x00000010, 0x001f0000, + 0x0000000f, 0x0f470007, + 0x00000008, 0x0f800008, + 0x0000000c, 0x29800000, + 0x00000010, 0x20530000, + 0x00000018, 0x8000fece, + 0x00000010, 0x91de0000, + 0x00000000, 0x2fd50000, + 0x00000010, 0x001f0000, + 0x00000000, 0x33510000, + 0x00000000, 0x2a000000, + 0x00000010, 0xb1c60023, + 0x0000000f, 0x0f500007, + 0x00000000, 0x0a600000, + 0x00000000, 0x0ae10000, + 0x0000000f, 0x4b620008, + 0x00000009, 0x0b1600ff, + 0x0000000f, 0x4c620010, + 0x00000000, 0x0d620000, + 0x00000009, 0x0d1a00ff, + 0x00000010, 0x07500003, + 0x0000000c, 0x0d1a0008, + 0x0000000c, 0x0b160008, + 0x00000000, 0x0cc60000, + 0x00000000, 0x0b800000, + 0x00000000, 0x06980000, + 0x00000008, 0x0f800003, + 0x00000010, 0x06c20004, + 0x0000000c, 0x29000002, + 0x00000010, 0x26420002, + 0x0000000c, 0x29520003, + 0x00000008, 0x22000001, + 0x00000010, 0x009f0000, + 0x00000000, 0x231b0000, + 0x00000000, 0x27111a00, + 0x00000000, 0x66900000, + 0x0000000c, 0x29520000, + 0x00000010, 0xb1973209, + 0x0000000c, 0x29800000, + 0x00000000, 0x06980000, + 0x00000010, 0x20530000, + 0x0000000c, 0x29520003, + 0x00000000, 0x22c58c00, + 0x00000010, 0x001f0000, + 0x00000008, 0x0f800003, + 0x00000018, 0x8000fff3, + 0x00000010, 0xb1c80013, + 0x00000010, 0xb1c60003, + 0x0000000c, 0x29800000, + 0x00000010, 0x20530000, + 0x0000000c, 0x29520000, + 0x0000000c, 0x29520003, + 0x00000010, 0x06c20002, + 0x0000000c, 0x29520002, + 0x00000000, 0x22c58c00, + 0x00000000, 0x27650000, + 0x00000000, 0x26e40000, + 0x00000008, 0x22000016, + 0x00000010, 0xb1c60003, + 0x00000000, 0x23480000, + 0x00000010, 0xb1800005, + 0x00000000, 0x23480000, + 0x0000000c, 0x29800000, + 0x0000000f, 0x0f500007, + 0x00000018, 0x80000012, + 0x00000008, 0x22000016, + 0x0000000c, 0x29800000, + 0x00000000, 0x30140000, + 0x00000000, 0x30950000, + 0x00000010, 0x07500003, + 0x00000009, 0x0b1600ff, + 0x00000009, 0x0d1a00ff, + 0x0000000f, 0x31160008, + 0x00000000, 0x31623400, + 0x00000003, 0xf1623000, + 0x00000010, 0x205f0000, + 0x00000000, 0x2c510000, + 0x00000009, 0x2cd1007f, + 0x00000008, 0x2cd90000, + 0x00000008, 0x2d000000, + 0x00000008, 0x2d80000c, + 0x00000000, 0x00000000, + 0x00000010, 0x91de0000, + 0x00000010, 0x05c20003, + 0x00000000, 0x33000000, + 0x00000008, 0x0f800007, + 0x00000010, 0x20530000, + 0x00000010, 0x009f0000, + 0x00000018, 0x8000fe7b, + 0x00000000, 0x2fd50000, + 0x00000000, 0x2a000000, + 0x0000000f, 0x0f500007, + 0x00000010, 0xb1c6002d, + 0x0000000f, 0x47420008, + 0x00000009, 0x070e000f, + 0x00000008, 0x070e0008, + 0x00000010, 0x001f0000, + 0x00000008, 0x09000001, + 0x00000007, 0x09121c00, + 0x00000003, 0xcbca9200, + 0x00000000, 0x0b97a200, + 0x00000007, 0x42171c00, + 0x00000000, 0x0b040000, + 0x0000000f, 0x0a840003, + 0x00000000, 0x0a959c00, + 0x00000000, 0x4a009a00, + 0x00000008, 0x82120001, + 0x00000001, 0x0c170800, + 0x00000000, 0x0c978c00, + 0x00000000, 0x02180000, + 0x00000008, 0x0d00ffff, + 0x00000008, 0x0f800006, + 0x0000000c, 0x29000000, + 0x00000010, 0x06c20004, + 0x0000000c, 0x29520002, + 0x00000010, 0x26420002, + 0x0000000c, 0x29520003, + 0x00000008, 0x22000001, + 0x00000010, 0x009f0000, + 0x00000010, 0xb197320c, + 0x00000000, 0x231b0000, + 0x00000000, 0x27110800, + 0x00000000, 0x66900000, + 0x0000000c, 0x29800000, + 0x00000000, 0x02180000, + 0x00000010, 0x20530000, + 0x0000000c, 0x29520003, + 0x00000000, 0x22c53600, + 0x00000010, 0x001f0000, + 0x00000008, 0x0f800006, + 0x00000018, 0x8000fff4, + 0x00000000, 0x231b0000, + 0x00000000, 0x27110800, + 0x00000000, 0x66900000, + 0x00000010, 0xb1c8000b, + 0x0000000c, 0x29800000, + 0x00000010, 0x20530000, + 0x0000000c, 0x29520000, + 0x0000000c, 0x29520003, + 0x00000010, 0x06c20002, + 0x0000000c, 0x29520002, + 0x00000000, 0x22c58c00, + 0x00000000, 0x27650000, + 0x00000000, 0x26e40000, + 0x00000000, 0x23480000, + 0x00000008, 0x22000017, + 0x0000000c, 0x29800000, + 0x00000010, 0x001f0000, + 0x00000010, 0x20530000, + 0x00000018, 0x8000fe3e, +}; +
+ +u32 bce_xi90_rv2p_proc1[] = { + 0x00000010, 0xb1800002, + 0x0000001f, 0x03030100, + 0x00000008, 0xac000001, + 0x00000000, 0x05000000, + 0x0000000c, 0x2f800001, + 0x00000000, 0x2b000000, + 0x00000000, 0x2b800000, + 0x00000010, 0x203f006c, + 0x00000010, 0x213f0003, + 0x00000010, 0x20bf003b, + 0x00000018, 0x8000fffd, + 0x00000010, 0xb1b8b015, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x03d80000, + 0x00000000, 0x2c380000, + 0x00000008, 0x2c800000, + 0x00000008, 0x2d000000, + 0x00000010, 0x91d40000, + 0x00000008, 0x06005555, + 0x00000018, 0x8000008f, + 0x00000008, 0x2d80011c, + 0x00000008, 0x02000001, + 0x00000010, 0x91de0000, + 0x0000000f, 0x42e0001c, + 0x00000010, 0x91840a17, + 0x00000010, 0x08660016, + 0x0000000c, 0x29800002, + 0x0000000c, 0x1f800002, + 0x00000000, 0x2adf0000, + 0x00000008, 0x2a00000f, + 0x00000008, 0x05005555, + 0x00000018, 0x8000ffe8, + 0x00000008, 0x02000001, + 0x0000000f, 0x42e0001c, + 0x00000010, 0x91840a19, + 0x00000008, 0x2c800006, + 0x00000008, 0x2d000006, + 0x00000010, 0x91d40000, + 0x00000008, 0x2d800106, + 0x00000018, 0x80000083, + 0x00000010, 0x08660013, + 0x00000018, 0x8000fff1, + 0x00000008, 0xb1000001, + 0x00000008, 0x2c80010c, + 0x00000008, 0x2d000008, + 0x00000008, 0x2d800001, + 0x00000018, 0x8000007c, + 0x0000000b, 0x2fdf0002, + 0x0000000c, 0x1f800002, + 0x00000000, 0x2c070000, + 0x00000010, 0x91de0000, + 0x00000000, 0x05000000, + 0x00000018, 0x8000ffd3, + 0x0000000b, 0x2fdf0002, + 0x0000000c, 0x1f800000, + 0x00000000, 0x2c070000, + 0x00000010, 0x91de0000, + 0x00000000, 0x05000000, + 0x00000018, 0x8000ffcd, + 0x0000000c, 0x1f800002, + 0x00000000, 0x05000000, + 0x00000018, 0x8000ffca, + 0x0000000c, 0x29800002, + 0x0000000c, 0x1f800002, + 0x00000000, 0x2adf0000, + 0x00000008, 0x2a000005, + 0x00000008, 0x05005555, + 0x00000018, 0x8000ffc4, + 0x00000008, 0x02240045, + 0x00000018, 0x00040000, + 0x00000018, 0x8000001c, + 0x00000018, 0x8000001e, + 0x00000018, 0x80000065, + 0x00000018, 0x800000ad, + 0x00000018, 0x800000ac, + 0x00000018, 0x80000000, + 0x00000018, 0x80000000, + 0x00000018, 0x80000000, + 0x00000018, 0x80000000, + 0x00000018, 0x80000000, + 0x00000018, 0x80000000, + 0x00000018, 0x80000000, + 0x00000018, 0x80000000, + 0x00000018, 0x800000f3, + 0x00000018, 0x80000000, + 0x00000018, 0x80000000, + 0x00000018, 0x80000015, + 0x00000018, 0x8000001b, + 0x00000018, 0x80000000, + 0x00000018, 0x800000c3, + 0x00000018, 0x8000002e, + 0x00000018, 0x800000f3, + 0x00000018, 0x8000011e, + 0x00000018, 0x800000e9, + 0x00000018, 0x80000142, + 0x00000018, 0x8000004e, + 0x00000018, 0x80000000, + 0x00000018, 0x80000080, + 0x0000000c, 0x1f800001, + 0x00000000, 0x05000000, + 0x00000018, 0x8000ffa3, + 0x00000010, 0x91d40000, + 0x0000000c, 0x29800001, + 0x0000000c, 0x1f800001, + 0x00000008, 0x2a000002, + 0x00000000, 0x05000000, + 0x00000018, 0x8000ff9d, + 0x00000010, 0x91d40000, + 0x0000000c, 0x29800001, + 0x0000000c, 0x1f800001, + 0x00000000, 0x29420000, + 0x00000008, 0x2a000002, + 0x00000000, 0x05000000, + 0x00000018, 0x8000ff96, + 0x00000018, 0x8000ff95, + 0x00000010, 0xb1bcb00a, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x03d80000, + 0x00000000, 0x2c3c0000, + 0x00000010, 0x91d40000, + 0x00000008, 0x06005555, + 0x00000018, 0x80000029, + 0x00000018, 0x800000bb, + 0x00000010, 0x2c6201ba, + 0x00000018, 0x80000005, + 0x00000008, 0x2c80010d, + 0x00000008, 0x2d000009, + 0x00000010, 0x91d40000, + 0x00000008, 0x2d800107, + 0x0000000c, 0x29800000, + 0x0000000c, 0x1f800000, + 0x00000010, 0x91de0000, + 0x00000000, 0x2adf0000, + 0x00000008, 0x2a000006, + 0x00000008, 0x05005555, + 0x00000018, 0x8000ff80, + 0x00000010, 0x91d40000, + 0x0000000c, 0x29800001, + 0x0000000c, 0x1f800001, + 0x00000008, 0x2a00000b, + 0x00000000, 0x05000000, + 0x00000018, 0x8000ff7a, + 0x00000000, 0x02020000, + 0x00000000, 0x029a0000, + 0x00000000, 0x060c2c00, + 0x00000004, 0xc60c3400, + 0x00000010, 0x001f0000, + 0x00000010, 0xb196180c, + 0x00000008, 0x06960004, + 0x00000009, 0x068dfffc, + 0x00000004, 0xcd051a00, + 0x00000004, 0xcc9a1800, + 0x00000010, 0x20d70000, + 0x0000000c, 0x2b560000, + 0x00000000, 0x00000000, + 0x00000000, 0x00000000, + 0x00000010, 0x20d70000, + 0x00000008, 0x0f800001, + 0x00000010, 0xb18001f4, + 0x00000010, 0x001f0000, + 0x0000000c, 0x6b560000, + 0x00000018, 0x00040000, + 0x00000000, 0x06820000, + 0x00000010, 0xb18a0006, + 0x00000000, 0x860c1400, + 0x00000010, 0xb18c0004, + 0x00000000, 0x05000000, + 0x00000008, 0x2a000001, + 0x00000010, 0x91d40000, + 0x00000018, 0x000d0000, + 0x00000000, 0x05020000, + 0x00000010, 0x91de0000, + 0x00000018, 0x000a0000, + 0x00000010, 0xb1a0b013, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x2c200000, + 0x00000008, 0x2c800000, + 0x00000008, 0x2d000000, + 0x00000010, 0x91d40000, + 0x00000008, 0x06005555, + 0x00000018, 0x8000ffee, + 0x00000008, 0x2d80011c, + 0x00000010, 0x001f0000, + 0x00000010, 0x91de0000, + 0x0000000f, 0x47600008, + 0x0000000f, 0x060e0001, + 0x00000000, 0x0f580000, + 0x00000000, 0x0a640000, + 0x00000000, 0x0ae50000, + 0x00000009, 0x0b66ffff, + 0x00000000, 0x0d610000, + 0x00000018, 0x80000013, + 0x0000000f, 0x47600008, + 0x0000000b, 0x2fdf0002, + 0x00000008, 0x2c800000, + 0x00000008, 0x2d000000, + 0x00000010, 0x91d40000, + 0x00000008, 0x2d80011c, + 0x0000000f, 0x060e0001, + 0x00000010, 0x001f0000, + 0x00000000, 0x0f580000, + 0x00000010, 0x91de0000, + 0x00000000, 0x0a640000, + 0x00000000, 0x0ae50000, + 0x00000009, 0x0b66ffff, + 0x00000000, 0x0d610000, + 0x00000000, 0x02620000, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x31040000, + 0x00000000, 0x309a0000, + 0x00000018, 0x8000ffbc, + 0x0000000c, 0x29800001, + 0x00000010, 0x00220002, + 0x0000000c, 0x29520001, + 0x0000000c, 0x29520000, + 0x00000008, 0x0200000e, + 0x00000008, 0x0280001a, + 0x00000010, 0xb1c40a02, + 0x00000008, 0x02000003, + 0x00000008, 0x22000001, + 0x0000000c, 0x1f800001, + 0x00000000, 0x2adf0000, + 0x00000000, 0x2a000800, + 0x00000008, 0x05005555, + 0x00000018, 0x8000ff27, + 0x0000000b, 0x2fdf0002, + 0x00000010, 0x91d40000, + 0x00000008, 0x2a000001, + 0x00000000, 0x2c200000, + 0x00000008, 0x2c800000, + 0x00000008, 0x2d000000, + 0x00000008, 0x2d80011c, + 0x00000010, 0x91d40000, + 0x00000010, 0x91de0000, + 0x00000008, 0x2c800006, + 0x00000008, 0x2d000006, + 0x00000000, 0x30800000, + 0x00000000, 0x31000000, + 0x00000008, 0x2d800006, + 0x0000000c, 0x29800001, + 0x0000000c, 0x1f800001, + 0x00000010, 0x91de0000, + 0x00000000, 0x2adf0000, + 0x00000008, 0x2a000010, + 0x00000000, 0x05000000, + 0x00000018, 0x8000ff12, + 0x00000010, 0x91a0b009, + 0x00000008, 0x2c80010d, + 0x00000008, 0x2d000009, + 0x00000010, 0x91d40000, + 0x00000008, 0x2d800107, + 0x00000018, 0x8000ffaf, + 0x00000018, 0x80000010, + 0x00000008, 0xac000001, + 0x00000018, 0x8000000b, + 0x00000000, 0x0380b000, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x2c004000, + 0x00000010, 0x91d40000, + 0x00000008, 0x06005555, + 0x00000018, 0x8000ff9e, + 0x00000018, 0x80000030, + 0x00000018, 0x80000006, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x2c000e00, + 0x00000008, 0x2a000007, + 0x00000008, 0x05005555, + 0x00000018, 0x8000fefc, + 0x00000000, 0x06820000, + 0x0000000c, 0x29800001, + 0x0000000c, 0x1f800001, + 0x00000010, 0x0ce70007, + 0x00000009, 0x0562ffff, + 0x00000010, 0xba6c1405, + 0x00000000, 0x2adf0000, + 0x00000000, 0x21000000, + 0x00000008, 0x2a000005, + 0x00000010, 0x91d40000, + 0x00000008, 0x2c80010c, + 0x00000008, 0x2d000008, + 0x0000000c, 0x31620018, + 0x00000008, 0x2d800001, + 0x00000018, 0x8000ff90, + 0x00000018, 0x000d0000, + 0x00000010, 0xb1a0b00e, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x03d80000, + 0x00000000, 0x2c200000, + 0x00000010, 0x91d40000, + 0x00000018, 0x80000014, + 0x00000010, 0x2c620002, + 0x00000018, 0x8000000b, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x2c070000, + 0x0000000c, 0x1f800001, + 0x00000010, 0x91de0000, + 0x00000000, 0x05000000, + 0x00000018, 0x8000fede, + 0x00000008, 0x2c80010d, + 0x00000008, 0x2d000009, + 0x00000010, 0x91d40000, + 0x00000008, 0x2d800107, + 0x0000000c, 0x29800001, + 0x0000000c, 0x1f800001, + 0x00000010, 0x91de0000, + 0x00000000, 0x2adf0000, + 0x00000008, 0x2a00000a, + 0x00000000, 0x05000000, + 0x00000018, 0x8000fed3, + 0x00000000, 0x05020000, + 0x00000008, 0x2c80010c, + 0x00000008, 0x2d000008, + 0x00000008, 0x2d800134, + 0x00000000, 0x00000000, + 0x00000010, 0x205f0000, + 0x00000008, 0x2c800140, + 0x00000008, 0x2d00003c, + 0x00000008, 0x2d80011c, + 0x00000000, 0x00000000, + 0x00000010, 0x205f0000, + 0x00000008, 0x2c800080, + 0x00000008, 0x2d000000, + 0x00000008, 0x2d800108, + 0x00000000, 0x00000000, + 0x00000010, 0x91de0000, + 0x00000018, 0x000a0000, + 0x00000010, 0x91d40000, + 0x00000008, 0x0600aaaa, + 0x00000018, 0x8000ff5a, + 0x0000000c, 0x29800001, + 0x0000000c, 0x1f800001, + 0x00000008, 0x2a000009, + 0x00000008, 0x0500aaaa, + 0x00000018, 0x8000feba, + 0x00000010, 0x91d40000, + 0x00000008, 0x06005555, + 0x00000018, 0x8000ff52, + 0x00000010, 0x91a03c02, + 0x00000010, 0xb1e66207, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x2c310000, + 0x00000009, 0x2cb1007f, + 0x00000008, 0x2cd90000, + 0x00000008, 0x2d000000, + 0x00000008, 0x2d80010d, + 0x00000010, 0xb1a80006, + 0x00000010, 0x205f0000, + 0x00000000, 0x2c200000, + 0x00000000, 0x2ca70000, + 0x00000008, 0x2d000010, + 0x00000008, 0x2d800108, + 0x00000018, 0x8000ff4b, + 0x00000010, 0xb1a60010, + 0x00000010, 0x001f0000, + 0x0000000f, 0x0f300007, + 0x00000000, 0x0a600000, + 0x00000000, 0x0ae10000, + 0x0000000f, 0x4b620008, + 0x00000009, 0x0b1600ff, + 0x00000000, 0x0d620000, + 0x00000009, 0x0d1a00ff, + 0x00000010, 0x07300003, + 0x0000000c, 0x0d1a0008, + 0x0000000c, 0x0b160008, + 0x0000000f, 0x4ce30018, + 0x00000000, 0x0c992c00, + 0x00000004, 0xcc993400, + 0x00000008, 0x0f800000, + 0x0000000c, 0x29800001, + 0x00000000, 0x33310000, + 0x00000008, 0x22000016, + 0x00000000, 0x2adf0000, + 0x00000008, 0x2a00000c, + 0x00000010, 0x009f0000, + 0x00000000, 0x0f200000, + 0x0000000c, 0x1f800001, + 0x00000008, 0x05005555, + 0x00000018, 0x8000fe8e, + 0x00000010, 0x91d40000, + 0x00000008, 0x0600aaaa, + 0x00000018, 0x8000ff26, + 0x0000000f, 0x47220008, + 0x00000009, 0x070e000f, + 0x00000008, 0x070e0008, + 0x00000008, 0x02800001, + 0x00000007, 0x02851c00, + 0x00000008, 0x82850001, + 0x00000000, 0x02854c00, + 0x00000007, 0x42851c00, + 0x00000003, 0xc3aa5200, + 0x00000000, 0x03b10e00, + 0x00000007, 0x4b071c00, + 0x0000000f, 0x0f300007, + 0x0000000f, 0x0a960003, + 0x00000000, 0x0a955c00, + 0x00000000, 0x4a005a00, + 0x00000000, 0x0c960a00, + 0x00000009, 0x0c99ffff, + 0x00000008, 0x0d00ffff, + 0x00000010, 0xb1963202, + 0x00000008, 0x0f800005, + 0x00000010, 0xb1a80008, + 0x00000010, 0x205f0000, + 0x0000000b, 0x2fdf0002, + 0x00000000, 0x2c200000, + 0x00000000, 0x2ca70000, + 0x00000008, 0x2d000010, + 0x00000008, 0x2d800108, + 0x00000018, 0x8000ff12, + 0x0000000c, 0x29800001, + 0x00000010, 0x001f0000, + 0x0000000c, 0x1f800001, + 0x00000000, 0x2adf0000, + 0x00000008, 0x2a00000d, + 0x00000008, 0x0500aaaa, + 0x00000018, 0x8000fe68, + 0x00000010, 0x91d40000, + 0x00000008, 0x06005555, + 0x00000018, 0x8000ff00, + 0x0000000c, 0x29800001, + 0x0000000c, 0x1f800001, + 0x00000008, 0x2a000007, + 0x00000008, 0x05005555, + 0x00000018, 0x8000fe60, + 0x00000008, 0x03050004, + 0x00000006, 0x83040c00, + 0x00000008, 0x02850200, + 0x00000000, 0x86050c00, + 0x00000001, 0x860c0e00, + 0x00000008, 0x02040004, + 0x00000000, 0x02041800, + 0x00000000, 0x83871800, + 0x00000018, 0x00020000, +}; + + +u32 bce_xi90_rv2p_proc2[] = { + 0x00000010, 0xb1800004, + 0x0000001f, 0x03030100, + 0x00000008, 0x050000ff, + 0x00000018, 0x00020000, + 0x00000000, 0x2a000000, + 0x00000010, 0xb1d40000, + 0x0000000c, 0x29800001, + 0x00000008, 0x02540009, + 0x00000009, 0x2952003f, + 0x00000018, 0x00040000, + 0x00000018, 0x80000010, + 0x00000018, 0x80000011, + 0x00000018, 0x8000004b, + 0x00000018, 0x8000013c, + 0x00000018, 0x8000013b, + 0x00000018, 0x8000013a, + 0x00000018, 0x8000013a, + 0x00000018, 0x80000000, + 0x00000018, 0x8000014d, + 0x00000018, 0x80000136, + 0x00000018, 0x8000000c, + 0x00000018, 0x80000152, + 0x00000018, 0x800001ac, + 0x00000018, 0x80000080, + 0x00000018, 0x80000107, + 0x00000018, 0x80000115, + 0x00000000, 0x2a000000, + 0x00000018, 0x8000ffea, + 0x00000000, 0x2a000000, + 0x0000000c, 0x29800000, + 0x00000010, 0x20530000, + 0x00000018, 0x8000ffe6, + 0x00000000, 0x2a000000, + 0x00000018, 0x8000ffe4, + 0x00000000, 0x03820000, + 0x00000018, 0x8000ffdf, + 0x00000001, 0x0c161400, + 0x00000000, 0x8c181400, + 0x00000010, 0x91980003, + 0x00000008, 0x0c960002, + 0x00000010, 0xb1800003, + 0x00000008, 0x0c960001, + 0x00000000, 0x0c000000, + 0x00000000, 0x0d190000, + 0x00000010, 0x20560000, + 0x0000000c, 0x2bd70001, + 0x00000008, 0x0f800001, + 0x00000000, 0x00000000, + 0x00000010, 0x001f0000, + 0x0000000c, 0x6bd70001, + 0x00000010, 0x011301f1, + 0x00000018, 0x00070000, + 0x00000000, 0x05020000, + 0x00000010, 0x91963421, + 0x00000010, 0x205f0000, + 0x00000000, 0x2c1e0000, + 0x00000008, 0x2c800006, + 0x00000008, 0x2d000006, + 0x00000008, 0x2d800102, + 0x00000000, 0x00000000, + 0x00000010, 0x91de0000, + 0x00000000, 0x0d610000, + 0x00000018, 0x000a0000, + 0x00000000, 0x05020000, + 0x00000010, 0x91963416, + 0x00000010, 0x205f0000, + 0x00000000, 0x09d80000, + 0x00000000, 0x2c1e0000, + 0x00000008, 0x2c80010e, + 0x00000008, 0x2d00000a, + 0x00000008, 0x2d800102, + 0x00000000, 0x00000000, + 0x00000010, 0x91de0000, + 0x00000000, 0x0d620000, + 0x00000000, 0x2c130000, + 0x00000018, 0x000a0000, + 0x00000000, 0x05020000, + 0x00000010, 0x91963409, + 0x00000010, 0x205f0000, + 0x00000000, 0x2c1e0000, + 0x00000008, 0x2c800006, + 0x00000008, 0x2d00006a, + 0x00000008, 0x2d800102, + 0x00000000, 0x00000000, + 0x00000010, 0x91de0000, + 0x00000000, 0x0d7a0000, + 0x00000018, 0x000a0000, + 0x00000010, 0x91de0000, + 0x00000010, 0x001f0000, + 0x0000000c, 0x6bd70001, + 0x00000000, 0x2f80aa00, + 0x00000000, 0x2a000000, + 0x00000000, 0x0d610000, + 0x00000000, 0x03620000, + 0x00000000, 0x2c400000, + 0x00000000, 0x02638c00, + 0x00000000, 0x26460000, + 0x00000008, 0x02040012, + 0x00000010, 0xb906082e, + 0x00000000, 0x0f580000, + 0x00000000, 0x0a640000, + 0x00000000, 0x0ae50000, + 0x00000009, 0x0b66ffff, + 0x00000000, 0x0c000000, + 0x00000000, 0x0b800000, + 0x00000008, 0x0cc60012, + 0x00000018, 0x8000ffca, + 0x00000010, 0x20560000, + 0x0000000c, 0x2bd70001, + 0x00000008, 0x0f800003, + 0x00000000, 0x00000000, + 0x00000010, 0x001f0000, + 0x0000000c, 0x6bd70001, + 0x00000008, 0x27110012, + 0x00000000, 0x66900000, + 0x00000008, 0xa31b0012, + 0x00000010, 0xb1980006, + 0x00000010, 0x001f0000, + 0x0000000c, 0x6bd70001, + 0x00000010, 0x20560000, + 0x0000000c, 0x2bd70001, + 0x00000008, 0x0f800004, + 0x00000008, 0x22000003, + 0x00000008, 0x2c80000c, + 0x00000008, 0x2d00000c, + 0x00000010, 0x001f0000, + 0x0000000c, 0x6bd70001, + 0x00000000, 0x25960000, + 0x0000000c, 0x29800000, + 0x00000000, 0x06660000, + 0x00000000, 0x86611800, + 0x00000009, 0x0260000f, + 0x0000000f, 0x02040002, + 0x00000010, 0xb60c0803, + 0x0000000c, 0x1fbf0000, + 0x0000000c, 0x33660010, + 0x00000000, 0x32140000, + 0x00000000, 0x32950000, + 0x00000005, 0x73662c00, + 0x00000000, 0x31e32e00, + 0x00000008, 0x2d800010, + 0x00000010, 0x20530000, + 0x00000010, 0x91de0000, + 0x00000018, 0x8000ff76, + 0x00000000, 0x23000000, + 0x00000009, 0x25e6ffff, + 0x00000008, 0x2200000b, + 0x0000000c, 0x69520000, + 0x0000000c, 0x29800000, + 0x00000010, 0x20530000, + 0x00000018, 0x8000ff6f, + 0x00000010, 0x91de0000, + 0x00000010, 0x001f0000, + 0x0000000c, 0x6bd70001, + 0x00000000, 0x2f80aa00, + 0x00000000, 0x2a000000, + 0x00000000, 0x2c400000, + 0x00000008, 0x2c800040, + 0x00000008, 0x2d000020, + 0x00000008, 0x2d80011c, + 0x00000000, 0x00000000, + 0x00000010, 0x91de0000, + 0x0000000f, 0x42ea0010, + 0x00000010, 0x004f0004, + 0x00000010, 0xb7469200, + 0x00000008, 0x02490012, + 0x00000010, 0xb5840a00, + 0x00000000, 0x0d610000, + 0x00000010, 0xba66346d, + 0x00000000, 0x03620000, + 0x00000010, 0xb8630c6b, + 0x00000008, 0x83050012, + 0x00000010, 0x004f0002, + 0x00000000, 0x03490000, + 0x00000001, 0x83068c00, + 0x00000000, 0x83c60c00, + 0x00000010, 0xb1870010, + 0x00000000, 0x0b6e0000, + 0x00000018, 0x8000ff50, + 0x00000001, 0x06691400, + 0x00000010, 0x918c0002, + 0x00000008, 0xb4e90001, + 0x00000010, 0xb1e92c5f, + 0x00000000, 0x86692c00, + 0x00000000, 0x02000000, + 0x00000009, 0x02eaffff, + 0x00000010, 0x000c0002, + 0x00000000, 0x02040a00, + 0x0000000f, 0x460c0001, + 0x0000000f, 0x02850001, + 0x00000010, 0x918c01fc, + 0x00000010, 0xb7040e56, + 0x00000000, 0x2c400000, + 0x00000000, 0x0f400000, + 0x00000000, 0x0d610000, + 0x00000000, 0x0a640000, + 0x00000000, 0x0ae50000, + 0x00000009, 0x0b66ffff, + 0x00000000, 0x0c000000, + 0x00000000, 0x0b800000, + 0x00000008, 0x0c860012, + 0x00000010, 0x20560000, + 0x0000000c, 0x2bd70001, + 0x00000008, 0x0f800003, + 0x0000000c, 0x29520000, + 0x00000010, 0x001f0000, + 0x0000000c, 0x6bd70001, + 0x00000008, 0x27110012, + 0x00000000, 0x66900000, + 0x00000000, 0x26460000, + 0x00000000, 0x23060000, + 0x00000010, 0xb1980009, + 0x00000010, 0x001f0000, + 0x0000000c, 0x6bd70001, + 0x00000010, 0x20560000, + 0x0000000c, 0x2bd70001, + 0x00000008, 0x0f800004, + 0x00000000, 0x00000000, + 0x00000010, 0x001f0000, + 0x0000000c, 0x6bd70001, + 0x00000000, 0x32140000, + 0x00000000, 0x32950000, + 0x00000000, 0x31e32e00, + 0x00000005, 0x73662c00, + 0x00000000, 0x25960000, + 0x00000010, 0xb1870021, + 0x0000000c, 0x29800000, + 0x0000000f, 0x0f6b0007, + 0x00000000, 0x0d690000, + 0x00000000, 0x0a6c0000, + 0x00000000, 0x0aed0000, + 0x00000000, 0x0b6e0000, + 0x00000000, 0x0b800000, + 0x00000000, 0x0c870000, + 0x00000018, 0x8000ff18, + 0x00000001, 0x0c161400, + 0x00000000, 0x8c181400, + 0x00000008, 0x0c960001, + 0x00000010, 0x91980002, + 0x00000008, 0x0c990001, + 0x00000000, 0x0d190000, + 0x00000000, 0x0c000000, + 0x00000010, 0x20560000, + 0x0000000c, 0x2bd70001, + 0x00000008, 0x0f800001, + 0x00000010, 0x20530000, + 0x0000000c, 0x69520001, + 0x00000010, 0x001f0000, + 0x0000000c, 0x6bd70001, + 0x00000000, 0x22c58c00, + 0x00000000, 0x23120000, + 0x00000000, 0x27110000, + 0x00000000, 0x26900000, + 0x00000010, 0xb8170e03, + 0x0000000c, 0x29800000, + 0x00000018, 0x8000ffeb, + 0x00000000, 0x82970e00, + 0x00000000, 0xa3120a00, + 0x00000008, 0x2200001a, + 0x00000008, 0x2c80000c, + 0x00000008, 0x2d00000c, + 0x00000008, 0x2d800010, + 0x00000010, 0x001f0000, + 0x0000000c, 0x6bd70001, + 0x00000000, 0x0d6e0000, + 0x00000003, 0xe7cf3400, + 0x0000000c, 0x29800000, + 0x00000010, 0x91de0000, + 0x00000010, 0xb1870007, + 0x00000000, 0x36140000, + 0x00000000, 0x36950000, + 0x00000000, 0x37160000, + 0x00000008, 0x2c800050, + 0x00000008, 0x2d000030, + 0x00000008, 0x2d80000c, + 0x00000010, 0x20530000, + 0x00000018, 0x8000fef1, + 0x00000000, 0x26460000, + 0x00000000, 0x23000000, + 0x00000009, 0x25e6ffff, + 0x00000000, 0x0b6e0000, + 0x00000003, 0xe7cf2c00, + 0x00000008, 0x2200001b, + 0x0000000c, 0x69520000, + 0x0000000c, 0x29800000, + 0x00000010, 0x20530000, + 0x00000018, 0x8000fee7, + 0x00000000, 0x2fd50000, + 0x00000000, 0x2a000000, + 0x00000010, 0x003f000c, + 0x00000000, 0x06660000, + 0x00000000, 0x86611800, + 0x00000009, 0x026000f0, + 0x00000010, 0xb70c0808, + 0x00000000, 0x2c400000, + 0x0000000c, 0x73660010, + 0x00000008, 0x2c800018, + 0x00000008, 0x2d000018, + 0x00000008, 0x2d800002, + 0x0000000c, 0x5fbf0000, + 0x00000010, 0x91de0000, + 0x00000018, 0x8000fed8, + 0x00000000, 0x2fd50000, + 0x00000000, 0x2a000000, + 0x00000000, 0x2c400000, + 0x0000000c, 0x73660010, + 0x00000008, 0x2c800018, + 0x00000008, 0x2d000018, + 0x00000008, 0x2d800002, + 0x0000000c, 0x5fbf0000, + 0x00000010, 0x91de0000, + 0x00000008, 0x2c800003, + 0x00000008, 0x2d000003, + 0x00000009, 0x3060fff0, + 0x00000008, 0x2d800001, + 0x0000000c, 0x29800000, + 0x00000010, 0x91de0000, + 0x00000008, 0x2c80001a, + 0x00000008, 0x2d00001a, + 0x00000000, 0x33000000, + 0x00000008, 0x2d800002, + 0x00000000, 0x31800000, + 0x00000010, 0x91de0000, + 0x00000008, 0x2c80000c, + 0x00000008, 0x2d00000c, + 0x00000008, 0x2d800004, + 0x00000010, 0x20530000, + 0x00000010, 0x91de0000, + 0x00000018, 0x8000febd, + 0x00000018, 0x8000febc, + 0x00000000, 0x2a000000, + 0x00000010, 0x001f0000, + 0x0000000c, 0x6bd70001, + 0x00000000, 0x0f008000, + 0x00000008, 0x0f800007, + 0x00000018, 0x80000015, + 0x00000000, 0x05020000, + 0x00000008, 0x22000009, + 0x00000000, 0x286d0000, + 0x00000000, 0x29000000, + 0x0000000f, 0x65680010, + 0x00000003, 0xf66c9400, + 0x00000010, 0xb972a004, + 0x0000000c, 0x73e70019, + 0x0000000c, 0x21420004, + 0x00000000, 0x3bf60000, + 0x0000000c, 0x29800000, + 0x00000010, 0x20530000, + 0x00000008, 0x22000008, + 0x0000000c, 0x61420004, + 0x00000018, 0x000a0000, + 0x00000000, 0x2a000000, + 0x00000010, 0x001f0000, + 0x0000000c, 0x6bd70001, + 0x0000000f, 0x0f470007, + 0x00000008, 0x0f800008, + 0x0000000c, 0x29800000, + 0x00000010, 0x20530000, + 0x00000018, 0x8000fe9f, + 0x00000010, 0x91de0000, + 0x00000000, 0x2fd50000, + 0x00000010, 0x001f0000, + 0x0000000c, 0x6bd70001, + 0x00000000, 0x33510000, + 0x00000000, 0x2a000000, + 0x00000010, 0xb1c60029, + 0x0000000f, 0x0f500007, + 0x00000000, 0x0a600000, + 0x00000000, 0x0ae10000, + 0x0000000f, 0x4b620008, + 0x00000009, 0x0b1600ff, + 0x0000000f, 0x4c620010, + 0x00000000, 0x0d620000, + 0x00000009, 0x0d1a00ff, + 0x00000010, 0x07500003, + 0x0000000c, 0x0d1a0008, + 0x0000000c, 0x0b160008, + 0x00000000, 0x0cc60000, + 0x00000000, 0x0b800000, + 0x00000000, 0x06980000, + 0x00000010, 0x20560000, + 0x0000000c, 0x2bd70001, + 0x00000008, 0x0f800003, + 0x00000010, 0x06c20004, + 0x0000000c, 0x29000002, + 0x00000010, 0x26420002, + 0x0000000c, 0x29520003, + 0x00000008, 0x22000001, + 0x00000010, 0x001f0000, + 0x0000000c, 0x6bd70001, + 0x00000000, 0x231b0000, + 0x00000000, 0x27111a00, + 0x00000000, 0x66900000, + 0x0000000c, 0x29520000, + 0x00000010, 0xb197320c, + 0x0000000c, 0x29800000, + 0x00000000, 0x06980000, + 0x00000010, 0x20530000, + 0x0000000c, 0x29520003, + 0x00000000, 0x22c58c00, + 0x00000010, 0x001f0000, + 0x0000000c, 0x6bd70001, + 0x00000010, 0x20560000, + 0x0000000c, 0x2bd70001, + 0x00000008, 0x0f800003, + 0x00000018, 0x8000ffef, + 0x00000010, 0xb1c80013, + 0x00000010, 0xb1c60003, + 0x0000000c, 0x29800000, + 0x00000010, 0x20530000, + 0x0000000c, 0x29520000, + 0x0000000c, 0x29520003, + 0x00000010, 0x06c20002, + 0x0000000c, 0x29520002, + 0x00000000, 0x22c58c00, + 0x00000000, 0x27650000, + 0x00000000, 0x26e40000, + 0x00000008, 0x22000016, + 0x00000010, 0xb1c60003, + 0x00000000, 0x23480000, + 0x00000010, 0xb1800005, + 0x00000000, 0x23480000, + 0x0000000c, 0x29800000, + 0x0000000f, 0x0f500007, + 0x00000018, 0x80000012, + 0x00000008, 0x22000016, + 0x0000000c, 0x29800000, + 0x00000000, 0x30140000, + 0x00000000, 0x30950000, + 0x00000010, 0x07500003, + 0x00000009, 0x0b1600ff, + 0x00000009, 0x0d1a00ff, + 0x0000000f, 0x31160008, + 0x00000000, 0x31623400, + 0x00000003, 0xf1623000, + 0x00000010, 0x205f0000, + 0x00000000, 0x2c510000, + 0x00000009, 0x2cd1007f, + 0x00000008, 0x2cd90000, + 0x00000008, 0x2d000000, + 0x00000008, 0x2d80000c, + 0x00000000, 0x00000000, + 0x00000010, 0x91de0000, + 0x00000010, 0x05c20003, + 0x00000000, 0x33000000, + 0x00000008, 0x0f800007, + 0x00000010, 0x20530000, + 0x00000010, 0x001f0000, + 0x0000000c, 0x6bd70001, + 0x00000018, 0x8000fe44, + 0x00000000, 0x2fd50000, + 0x00000000, 0x2a000000, + 0x0000000f, 0x0f500007, + 0x00000010, 0xb1c60030, + 0x0000000f, 0x47420008, + 0x00000009, 0x070e000f, + 0x00000008, 0x070e0008, + 0x00000010, 0x001f0000, + 0x0000000c, 0x6bd70001, + 0x00000008, 0x09000001, + 0x00000007, 0x09121c00, + 0x00000003, 0xcbca9200, + 0x00000000, 0x0b97a200, + 0x00000007, 0x42171c00, + 0x00000000, 0x0b040000, + 0x0000000f, 0x0a840003, + 0x00000000, 0x0a959c00, + 0x00000000, 0x4a009a00, + 0x00000008, 0x82120001, + 0x00000001, 0x0c170800, + 0x00000000, 0x0c978c00, + 0x00000000, 0x02180000, + 0x00000008, 0x0d00ffff, + 0x00000008, 0x0f800006, + 0x0000000c, 0x29000000, + 0x00000010, 0x06c20004, + 0x0000000c, 0x29520002, + 0x00000010, 0x26420002, + 0x0000000c, 0x29520003, + 0x00000008, 0x22000001, + 0x00000010, 0x001f0000, + 0x0000000c, 0x6bd70001, + 0x00000010, 0xb197320d, + 0x00000000, 0x231b0000, + 0x00000000, 0x27110800, + 0x00000000, 0x66900000, + 0x0000000c, 0x29800000, + 0x00000000, 0x02180000, + 0x00000010, 0x20530000, + 0x0000000c, 0x29520003, + 0x00000000, 0x22c53600, + 0x00000010, 0x001f0000, + 0x0000000c, 0x6bd70001, + 0x00000008, 0x0f800006, + 0x00000018, 0x8000fff2, + 0x00000000, 0x231b0000, + 0x00000000, 0x27110800, + 0x00000000, 0x66900000, + 0x00000010, 0xb1c8000b, + 0x0000000c, 0x29800000, + 0x00000010, 0x20530000, + 0x0000000c, 0x29520000, + 0x0000000c, 0x29520003, + 0x00000010, 0x06c20002, + 0x0000000c, 0x29520002, + 0x00000000, 0x22c58c00, + 0x00000000, 0x27650000, + 0x00000000, 0x26e40000, + 0x00000000, 0x23480000, + 0x00000008, 0x22000017, + 0x0000000c, 0x29800000, + 0x00000010, 0x001f0000, + 0x0000000c, 0x6bd70001, + 0x00000010, 0x20530000, + 0x00000018, 0x8000fe03, +}; + + +/* + * The RV2P block must be configured for the system + * page size, or more specifically, the number of + * usable rx_bd's per page, and should be called + * as follows prior to loading the RV2P firmware: + * + * BCE_RV2P_PROC2_CHG_MAX_BD_PAGE(USABLE_RX_BD_PER_PAGE) + * + * The default value is 0xFF. + */ +#define BCE_RV2P_PROC2_MAX_BD_PAGE_LOC 5 +#define BCE_RV2P_PROC2_CHG_MAX_BD_PAGE(value) { \ + bce_rv2p_proc2[BCE_RV2P_PROC2_MAX_BD_PAGE_LOC] = \ + (bce_rv2p_proc2[BCE_RV2P_PROC2_MAX_BD_PAGE_LOC] & ~0xFFFF) | (value); \ +} + + + diff --git a/freebsd/sys/dev/bce/if_bcereg.h b/freebsd/sys/dev/bce/if_bcereg.h new file mode 100644 index 00000000..4ed5fdda --- /dev/null +++ b/freebsd/sys/dev/bce/if_bcereg.h @@ -0,0 +1,6796 @@ +/*- + * Copyright (c) 2006-2010 Broadcom Corporation + * David Christensen <davidch@broadcom.com>. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * 3. Neither the name of Broadcom Corporation nor the name of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written consent. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _BCEREG_HH_DEFINED +#define _BCEREG_HH_DEFINED + +#ifdef HAVE_KERNEL_OPTION_HEADERS +#include <freebsd/local/opt_device_polling.h> +#endif + +#include <freebsd/sys/param.h> +#include <freebsd/sys/endian.h> +#include <freebsd/sys/systm.h> +#include <freebsd/sys/sockio.h> +#include <freebsd/sys/mbuf.h> +#include <freebsd/sys/malloc.h> +#include <freebsd/sys/kernel.h> +#include <freebsd/sys/module.h> +#include <freebsd/sys/socket.h> +#include <freebsd/sys/sysctl.h> +#include <freebsd/sys/queue.h> + +#include <freebsd/net/bpf.h> +#include <freebsd/net/ethernet.h> +#include <freebsd/net/if.h> +#include <freebsd/net/if_arp.h> +#include <freebsd/net/if_dl.h> +#include <freebsd/net/if_media.h> + +#include <freebsd/net/if_types.h> +#include <freebsd/net/if_vlan_var.h> + +#include <freebsd/netinet/in_systm.h> +#include <freebsd/netinet/in.h> +#include <freebsd/netinet/if_ether.h> +#include <freebsd/netinet/ip.h> +#include <freebsd/netinet/ip6.h> +#include <freebsd/netinet/tcp.h> +#include <freebsd/netinet/udp.h> + +#include <freebsd/machine/bus.h> +#include <freebsd/machine/resource.h> +#include <freebsd/sys/bus.h> +#include <freebsd/sys/rman.h> + +#include <freebsd/dev/mii/mii.h> +#include <freebsd/dev/mii/miivar.h> +#include <freebsd/local/miidevs.h> +#include <freebsd/dev/mii/brgphyreg.h> + +#include <freebsd/dev/pci/pcireg.h> +#include <freebsd/dev/pci/pcivar.h> + +#include <freebsd/local/miibus_if.h> + +/****************************************************************************/ +/* Conversion to FreeBSD type definitions. */ +/****************************************************************************/ +#define u64 uint64_t +#define u32 uint32_t +#define u16 uint16_t +#define u8 uint8_t + +#if BYTE_ORDER == BIG_ENDIAN +#define __BIG_ENDIAN 1 +#undef __LITTLE_ENDIAN +#else +#undef __BIG_ENDIAN +#define __LITTLE_ENDIAN 1 +#endif + +#define BCE_DWORD_PRINTFB \ + "\020" \ + "\40b31" \ + "\37b30" \ + "\36b29" \ + "\35b28" \ + "\34b27" \ + "\33b26" \ + "\32b25" \ + "\31b24" \ + "\30b23" \ + "\27b22" \ + "\26b21" \ + "\25b20" \ + "\24b19" \ + "\23b18" \ + "\22b17" \ + "\21b16" \ + "\20b15" \ + "\17b14" \ + "\16b13" \ + "\15b12" \ + "\14b11" \ + "\13b10" \ + "\12b9" \ + "\11b8" \ + "\10b7" \ + "\07b6" \ + "\06b5" \ + "\05b4" \ + "\04b3" \ + "\03b2" \ + "\02b1" \ + "\01b0" + +/* MII Control Register 0x0 */ +#define BCE_BMCR_PRINTFB \ + "\020" \ + "\20Reset" \ + "\17Loopback" \ + "\16Spd0" \ + "\15AnegEna" \ + "\14PwrDn" \ + "\13Isolate" \ + "\12RstrtAneg" \ + "\11FD" \ + "\10CollTst" \ + "\07Spd1" \ + "\06Rsrvd" \ + "\05Rsrvd" \ + "\04Rsrvd" \ + "\03Rsrvd" \ + "\02Rsrvd" \ + "\01Rsrvd" + +/* MII Status Register 0x1 */ +#define BCE_BMSR_PRINTFB \ + "\020" \ + "\20Cap100T4" \ + "\17Cap100XFD" \ + "\16Cap100XHD" \ + "\15Cap10FD" \ + "\14Cap10HD" \ + "\13Cap100T2FD" \ + "\12Cap100T2HD" \ + "\11ExtStsPrsnt" \ + "\10Rsrvd" \ + "\07PrmblSupp" \ + "\06AnegCmpl" \ + "\05RemFaultDet" \ + "\04AnegCap" \ + "\03LnkUp" \ + "\02JabberDet" \ + "\01ExtCapSupp" + +/* MII Autoneg Advertisement Register 0x4 */ +#define BCE_ANAR_PRINTFB \ + "\020" \ + "\20AdvNxtPg" \ + "\17Rsrvd" \ + "\16AdvRemFault" \ + "\15Rsrvd" \ + "\14AdvAsymPause" \ + "\13AdvPause" \ + "\12Adv100T4" \ + "\11Adv100FD" \ + "\10Adv100HD" \ + "\07Adv10FD" \ + "\06Adv10HD" \ + "\05Rsrvd" \ + "\04Rsrvd" \ + "\03Rsrvd" \ + "\02Rsrvd" \ + "\01Adv802.3" + +/* MII Autoneg Link Partner Ability Register 0x5 */ +#define BCE_ANLPAR_PRINTFB \ + "\020" \ + "\20CapNxtPg" \ + "\17Ack" \ + "\16CapRemFault" \ + "\15Rsrvd" \ + "\14CapAsymPause" \ + "\13CapPause" \ + "\12Cap100T4" \ + "\11Cap100FD" \ + "\10Cap100HD" \ + "\07Cap10FD" \ + "\06Cap10HD" \ + "\05Rsrvd" \ + "\04Rsrvd" \ + "\03Rsrvd" \ + "\02Rsrvd" \ + "\01Cap802.3" + +/* 1000Base-T Control Register 0x09 */ +#define BCE_1000CTL_PRINTFB \ + "\020" \ + "\20Test3" \ + "\17Test2" \ + "\16Test1" \ + "\15MasterSlave" \ + "\14ForceMaster" \ + "\13SwitchDev" \ + "\12Adv1000TFD" \ + "\11Adv1000THD" \ + "\10Rsrvd" \ + "\07Rsrvd" \ + "\06Rsrvd" \ + "\05Rsrvd" \ + "\04Rsrvd" \ + "\03Rsrvd" \ + "\02Rsrvd" \ + "\01Rsrvd" + +/* MII 1000Base-T Status Register 0x0a */ +#define BCE_1000STS_PRINTFB \ + "\020" \ + "\20MstrSlvFault" \ + "\17Master" \ + "\16LclRcvrOk" \ + "\15RemRcvrOk" \ + "\14Cap1000FD" \ + "\13Cpa1000HD" \ + "\12Rsrvd" \ + "\11Rsrvd" + +/* MII Extended Status Register 0x0f */ +#define BCE_EXTSTS_PRINTFB \ + "\020" \ + "\20b15" \ + "\17b14" \ + "\16b13" \ + "\15b12" \ + "\14Rsrvd" \ + "\13Rsrvd" \ + "\12Rsrvd" \ + "\11Rsrvd" \ + "\10Rsrvd" \ + "\07Rsrvd" \ + "\06Rsrvd" \ + "\05Rsrvd" \ + "\04Rsrvd" \ + "\03Rsrvd" \ + "\02Rsrvd" \ + "\01Rsrvd" + +/* MII Autoneg Link Partner Ability Register 0x19 */ +#define BCE_AUXSTS_PRINTFB \ + "\020" \ + "\20AnegCmpl" \ + "\17AnegCmplAck" \ + "\16AnegAckDet" \ + "\15AnegAblDet" \ + "\14AnegNextPgWait" \ + "\13HCD" \ + "\12HCD" \ + "\11HCD" \ + "\10PrlDetFault" \ + "\07RemFault" \ + "\06PgRcvd" \ + "\05LnkPrtnrAnegAbl" \ + "\04LnkPrtnrNPAbl" \ + "\03LnkUp" \ + "\02EnaPauseRcv" \ + "\01EnaPausXmit" + +/* + * Remove before release: + * + * #define BCE_DEBUG + * #define BCE_NVRAM_WRITE_SUPPORT + * #define BCE_JUMBO_HDRSPLIT + */ + +/****************************************************************************/ +/* Debugging macros and definitions. */ +/****************************************************************************/ + +#define BCE_CP_LOAD 0x00000001 +#define BCE_CP_SEND 0x00000002 +#define BCE_CP_RECV 0x00000004 +#define BCE_CP_INTR 0x00000008 +#define BCE_CP_UNLOAD 0x00000010 +#define BCE_CP_RESET 0x00000020 +#define BCE_CP_PHY 0x00000040 +#define BCE_CP_NVRAM 0x00000080 +#define BCE_CP_FIRMWARE 0x00000100 +#define BCE_CP_CTX 0x00000200 +#define BCE_CP_REG 0x00000400 +#define BCE_CP_MISC 0x00400000 +#define BCE_CP_SPECIAL 0x00800000 +#define BCE_CP_ALL 0x00FFFFFF + +#define BCE_CP_MASK 0x00FFFFFF + +#define BCE_LEVEL_FATAL 0x00000000 +#define BCE_LEVEL_WARN 0x01000000 +#define BCE_LEVEL_INFO 0x02000000 +#define BCE_LEVEL_VERBOSE 0x03000000 +#define BCE_LEVEL_EXTREME 0x04000000 +#define BCE_LEVEL_INSANE 0x05000000 + +#define BCE_LEVEL_MASK 0xFF000000 + +#define BCE_WARN_LOAD (BCE_CP_LOAD | BCE_LEVEL_WARN) +#define BCE_INFO_LOAD (BCE_CP_LOAD | BCE_LEVEL_INFO) +#define BCE_VERBOSE_LOAD (BCE_CP_LOAD | BCE_LEVEL_VERBOSE) +#define BCE_EXTREME_LOAD (BCE_CP_LOAD | BCE_LEVEL_EXTREME) +#define BCE_INSANE_LOAD (BCE_CP_LOAD | BCE_LEVEL_INSANE) + +#define BCE_WARN_SEND (BCE_CP_SEND | BCE_LEVEL_WARN) +#define BCE_INFO_SEND (BCE_CP_SEND | BCE_LEVEL_INFO) +#define BCE_VERBOSE_SEND (BCE_CP_SEND | BCE_LEVEL_VERBOSE) +#define BCE_EXTREME_SEND (BCE_CP_SEND | BCE_LEVEL_EXTREME) +#define BCE_INSANE_SEND (BCE_CP_SEND | BCE_LEVEL_INSANE) + +#define BCE_WARN_RECV (BCE_CP_RECV | BCE_LEVEL_WARN) +#define BCE_INFO_RECV (BCE_CP_RECV | BCE_LEVEL_INFO) +#define BCE_VERBOSE_RECV (BCE_CP_RECV | BCE_LEVEL_VERBOSE) +#define BCE_EXTREME_RECV (BCE_CP_RECV | BCE_LEVEL_EXTREME) +#define BCE_INSANE_RECV (BCE_CP_RECV | BCE_LEVEL_INSANE) + +#define BCE_WARN_INTR (BCE_CP_INTR | BCE_LEVEL_WARN) +#define BCE_INFO_INTR (BCE_CP_INTR | BCE_LEVEL_INFO) +#define BCE_VERBOSE_INTR (BCE_CP_INTR | BCE_LEVEL_VERBOSE) +#define BCE_EXTREME_INTR (BCE_CP_INTR | BCE_LEVEL_EXTREME) +#define BCE_INSANE_INTR (BCE_CP_INTR | BCE_LEVEL_INSANE) + +#define BCE_WARN_UNLOAD (BCE_CP_UNLOAD | BCE_LEVEL_WARN) +#define BCE_INFO_UNLOAD (BCE_CP_UNLOAD | BCE_LEVEL_INFO) +#define BCE_VERBOSE_UNLOAD (BCE_CP_UNLOAD | BCE_LEVEL_VERBOSE) +#define BCE_EXTREME_UNLOAD (BCE_CP_UNLOAD | BCE_LEVEL_EXTREME) +#define BCE_INSANE_UNLOAD (BCE_CP_UNLOAD | BCE_LEVEL_INSANE) + +#define BCE_WARN_RESET (BCE_CP_RESET | BCE_LEVEL_WARN) +#define BCE_INFO_RESET (BCE_CP_RESET | BCE_LEVEL_INFO) +#define BCE_VERBOSE_RESET (BCE_CP_RESET | BCE_LEVEL_VERBOSE) +#define BCE_EXTREME_RESET (BCE_CP_RESET | BCE_LEVEL_EXTREME) +#define BCE_INSANE_RESET (BCE_CP_RESET | BCE_LEVEL_INSANE) + +#define BCE_WARN_PHY (BCE_CP_PHY | BCE_LEVEL_WARN) +#define BCE_INFO_PHY (BCE_CP_PHY | BCE_LEVEL_INFO) +#define BCE_VERBOSE_PHY (BCE_CP_PHY | BCE_LEVEL_VERBOSE) +#define BCE_EXTREME_PHY (BCE_CP_PHY | BCE_LEVEL_EXTREME) +#define BCE_INSANE_PHY (BCE_CP_PHY | BCE_LEVEL_INSANE) + +#define BCE_WARN_NVRAM (BCE_CP_NVRAM | BCE_LEVEL_WARN) +#define BCE_INFO_NVRAM (BCE_CP_NVRAM | BCE_LEVEL_INFO) +#define BCE_VERBOSE_NVRAM (BCE_CP_NVRAM | BCE_LEVEL_VERBOSE) +#define BCE_EXTREME_NVRAM (BCE_CP_NVRAM | BCE_LEVEL_EXTREME) +#define BCE_INSANE_NVRAM (BCE_CP_NVRAM | BCE_LEVEL_INSANE) + +#define BCE_WARN_FIRMWARE (BCE_CP_FIRMWARE | BCE_LEVEL_WARN) +#define BCE_INFO_FIRMWARE (BCE_CP_FIRMWARE | BCE_LEVEL_INFO) +#define BCE_VERBOSE_FIRMWARE (BCE_CP_FIRMWARE | BCE_LEVEL_VERBOSE) +#define BCE_EXTREME_FIRMWARE (BCE_CP_FIRMWARE | BCE_LEVEL_EXTREME) +#define BCE_INSANE_FIRMWARE (BCE_CP_FIRMWARE | BCE_LEVEL_INSANE) + +#define BCE_WARN_CTX (BCE_CP_CTX | BCE_LEVEL_WARN) +#define BCE_INFO_CTX (BCE_CP_CTX | BCE_LEVEL_INFO) +#define BCE_VERBOSE_CTX (BCE_CP_CTX | BCE_LEVEL_VERBOSE) +#define BCE_EXTREME_CTX (BCE_CP_CTX | BCE_LEVEL_EXTREME) +#define BCE_INSANE_CTX (BCE_CP_CTX | BCE_LEVEL_INSANE) + +#define BCE_WARN_REG (BCE_CP_REG | BCE_LEVEL_WARN) +#define BCE_INFO_REG (BCE_CP_REG | BCE_LEVEL_INFO) +#define BCE_VERBOSE_REG (BCE_CP_REG | BCE_LEVEL_VERBOSE) +#define BCE_EXTREME_REG (BCE_CP_REG | BCE_LEVEL_EXTREME) +#define BCE_INSANE_REG (BCE_CP_REG | BCE_LEVEL_INSANE) + +#define BCE_WARN_MISC (BCE_CP_MISC | BCE_LEVEL_WARN) +#define BCE_INFO_MISC (BCE_CP_MISC | BCE_LEVEL_INFO) +#define BCE_VERBOSE_MISC (BCE_CP_MISC | BCE_LEVEL_VERBOSE) +#define BCE_EXTREME_MISC (BCE_CP_MISC | BCE_LEVEL_EXTREME) +#define BCE_INSANE_MISC (BCE_CP_MISC | BCE_LEVEL_INSANE) + +#define BCE_WARN_SPECIAL (BCE_CP_SPECIAL | BCE_LEVEL_WARN) +#define BCE_INFO_SPECIAL (BCE_CP_SPECIAL | BCE_LEVEL_INFO) +#define BCE_VERBOSE_SPECIAL (BCE_CP_SPECIAL | BCE_LEVEL_VERBOSE) +#define BCE_EXTREME_SPECIAL (BCE_CP_SPECIAL | BCE_LEVEL_EXTREME) +#define BCE_INSANE_SPECIAL (BCE_CP_SPECIAL | BCE_LEVEL_INSANE) + +#define BCE_FATAL (BCE_CP_ALL | BCE_LEVEL_FATAL) +#define BCE_WARN (BCE_CP_ALL | BCE_LEVEL_WARN) +#define BCE_INFO (BCE_CP_ALL | BCE_LEVEL_INFO) +#define BCE_VERBOSE (BCE_CP_ALL | BCE_LEVEL_VERBOSE) +#define BCE_EXTREME (BCE_CP_ALL | BCE_LEVEL_EXTREME) +#define BCE_INSANE (BCE_CP_ALL | BCE_LEVEL_INSANE) + +#define BCE_CODE_PATH(cp) ((cp & BCE_CP_MASK) & bce_debug) +#define BCE_MSG_LEVEL(lv) \ + ((lv & BCE_LEVEL_MASK) <= (bce_debug & BCE_LEVEL_MASK)) +#define BCE_LOG_MSG(m) (BCE_CODE_PATH(m) && BCE_MSG_LEVEL(m)) + +#ifdef BCE_DEBUG + +/* Print a message based on the logging level and code path. */ +#define DBPRINT(sc, level, format, args...) \ + if (BCE_LOG_MSG(level)) { \ + device_printf(sc->bce_dev, format, ## args); \ + } + +/* Runs a particular command when debugging is enabled. */ +#define DBRUN(args...) \ + do { \ + args; \ + } while (0) + +/* Runs a particular command based on the logging level and code path. */ +#define DBRUNMSG(msg, args...) \ + if (BCE_LOG_MSG(msg)) { \ + args; \ + } + +/* Runs a particular command based on the logging level. */ +#define DBRUNLV(level, args...) \ + if (BCE_MSG_LEVEL(level)) { \ + args; \ + } + +/* Runs a particular command based on the code path. */ +#define DBRUNCP(cp, args...) \ + if (BCE_CODE_PATH(cp)) { \ + args; \ + } + +/* Runs a particular command based on a condition. */ +#define DBRUNIF(cond, args...) \ + if (cond) { \ + args; \ + } + +/* Announces function entry. */ +#define DBENTER(cond) \ + DBPRINT(sc, (cond), "%s(enter)\n", __FUNCTION__) + +/* Announces function exit. */ +#define DBEXIT(cond) \ + DBPRINT(sc, (cond), "%s(exit)\n", __FUNCTION__) + +/* Temporarily override the debug level. */ +#define DBPUSH(cond) \ + u32 bce_debug_temp = bce_debug; \ + bce_debug |= cond; + +/* Restore the previously overriden debug level. */ +#define DBPOP() \ + bce_debug = bce_debug_temp; + +/* Needed for random() function which is only used in debugging. */ +#include <freebsd/sys/random.h> + +/* Returns FALSE in "defects" per 2^31 - 1 calls, otherwise returns TRUE. */ +#define DB_RANDOMFALSE(defects) (random() > defects) +#define DB_OR_RANDOMFALSE(defects) || (random() > defects) +#define DB_AND_RANDOMFALSE(defects) && (random() > ddfects) + +/* Returns TRUE in "defects" per 2^31 - 1 calls, otherwise returns FALSE. */ +#define DB_RANDOMTRUE(defects) (random() < defects) +#define DB_OR_RANDOMTRUE(defects) || (random() < defects) +#define DB_AND_RANDOMTRUE(defects) && (random() < defects) + +#define DB_PRINT_PHY_REG(reg, val) \ +switch(reg) { \ +case 0x00: DBPRINT(sc, BCE_INSANE_PHY, \ + "%s(): phy = %d, reg = 0x%04X (BMCR ), val = 0x%b\n", \ + __FUNCTION__, phy, (u16) reg & 0xffff, (u16) val & 0xffff, \ + BCE_BMCR_PRINTFB); break; \ +case 0x01: DBPRINT(sc, BCE_INSANE_PHY, \ + "%s(): phy = %d, reg = 0x%04X (BMSR ), val = 0x%b\n", \ + __FUNCTION__, phy, (u16) reg & 0xffff, (u16) val & 0xffff, \ + BCE_BMSR_PRINTFB); break; \ +case 0x04: DBPRINT(sc, BCE_INSANE_PHY, \ + "%s(): phy = %d, reg = 0x%04X (ANAR ), val = 0x%b\n", \ + __FUNCTION__, phy, (u16) reg & 0xffff, (u16) val & 0xffff, \ + BCE_ANAR_PRINTFB); break; \ +case 0x05: DBPRINT(sc, BCE_INSANE_PHY, \ + "%s(): phy = %d, reg = 0x%04X (ANLPAR ), val = 0x%b\n", \ + __FUNCTION__, phy, (u16) reg & 0xffff, (u16) val & 0xffff, \ + BCE_ANLPAR_PRINTFB); break; \ +case 0x09: DBPRINT(sc, BCE_INSANE_PHY, \ + "%s(): phy = %d, reg = 0x%04X (1000CTL), val = 0x%b\n", \ + __FUNCTION__, phy, (u16) reg & 0xffff, (u16) val & 0xffff, \ + BCE_1000CTL_PRINTFB); break; \ +case 0x0a: DBPRINT(sc, BCE_INSANE_PHY, \ + "%s(): phy = %d, reg = 0x%04X (1000STS), val = 0x%b\n", \ + __FUNCTION__, phy, (u16) reg & 0xffff, (u16) val & 0xffff, \ + BCE_1000STS_PRINTFB); break; \ +case 0x0f: DBPRINT(sc, BCE_INSANE_PHY, \ + "%s(): phy = %d, reg = 0x%04X (EXTSTS ), val = 0x%b\n", \ + __FUNCTION__, phy, (u16) reg & 0xffff, (u16) val & 0xffff, \ + BCE_EXTSTS_PRINTFB); break; \ +case 0x19: DBPRINT(sc, BCE_INSANE_PHY, \ + "%s(): phy = %d, reg = 0x%04X (AUXSTS ), val = 0x%b\n", \ + __FUNCTION__, phy, (u16) reg & 0xffff, (u16) val & 0xffff, \ + BCE_AUXSTS_PRINTFB); break; \ +default: DBPRINT(sc, BCE_INSANE_PHY, \ + "%s(): phy = %d, reg = 0x%04X, val = 0x%04X\n", \ + __FUNCTION__, phy, (u16) reg & 0xffff, (u16) val & 0xffff); \ + } + +#else + +#define DBPRINT(level, format, args...) +#define DBRUN(args...) +#define DBRUNMSG(msg, args...) +#define DBRUNLV(level, args...) +#define DBRUNCP(cp, args...) +#define DBRUNIF(cond, args...) +#define DBENTER(cond) +#define DBEXIT(cond) +#define DBPUSH(cond) +#define DBPOP() +#define DB_RANDOMFALSE(defects) +#define DB_OR_RANDOMFALSE(percent) +#define DB_AND_RANDOMFALSE(percent) +#define DB_RANDOMTRUE(defects) +#define DB_OR_RANDOMTRUE(percent) +#define DB_AND_RANDOMTRUE(percent) +#define DB_PRINT_PHY_REG(reg, val) + +#endif /* BCE_DEBUG */ + + +#if __FreeBSD_version < 800054 +#if defined(__i386__) || defined(__amd64__) +#define mb() __asm volatile("mfence" ::: "memory") +#define wmb() __asm volatile("sfence" ::: "memory") +#define rmb() __asm volatile("lfence" ::: "memory") +#else +#define mb() +#define rmb() +#define wmb() +#endif +#endif + +/****************************************************************************/ +/* Device identification definitions. */ +/****************************************************************************/ +#define BRCM_VENDORID 0x14E4 +#define BRCM_DEVICEID_BCM5706 0x164A +#define BRCM_DEVICEID_BCM5706S 0x16AA +#define BRCM_DEVICEID_BCM5708 0x164C +#define BRCM_DEVICEID_BCM5708S 0x16AC +#define BRCM_DEVICEID_BCM5709 0x1639 +#define BRCM_DEVICEID_BCM5709S 0x163A +#define BRCM_DEVICEID_BCM5716 0x163B + +#define HP_VENDORID 0x103C + +#define PCI_ANY_ID (u_int16_t) (~0U) + +/* chip num:16-31, rev:12-15, metal:4-11, bond_id:0-3 */ + +#define BCE_CHIP_NUM(sc) (((sc)->bce_chipid) & 0xffff0000) +#define BCE_CHIP_NUM_5706 0x57060000 +#define BCE_CHIP_NUM_5708 0x57080000 +#define BCE_CHIP_NUM_5709 0x57090000 +#define BCE_CHIP_NUM_5716 0x57160000 + +#define BCE_CHIP_REV(sc) (((sc)->bce_chipid) & 0x0000f000) +#define BCE_CHIP_REV_Ax 0x00000000 +#define BCE_CHIP_REV_Bx 0x00001000 +#define BCE_CHIP_REV_Cx 0x00002000 + +#define BCE_CHIP_METAL(sc) (((sc)->bce_chipid) & 0x00000ff0) +#define BCE_CHIP_BOND(bp) (((sc)->bce_chipid) & 0x0000000f) + +#define BCE_CHIP_ID(sc) (((sc)->bce_chipid) & 0xfffffff0) +#define BCE_CHIP_ID_5706_A0 0x57060000 +#define BCE_CHIP_ID_5706_A1 0x57060010 +#define BCE_CHIP_ID_5706_A2 0x57060020 +#define BCE_CHIP_ID_5706_A3 0x57060030 +#define BCE_CHIP_ID_5708_A0 0x57080000 +#define BCE_CHIP_ID_5708_B0 0x57081000 +#define BCE_CHIP_ID_5708_B1 0x57081010 +#define BCE_CHIP_ID_5708_B2 0x57081020 +#define BCE_CHIP_ID_5709_A0 0x57090000 +#define BCE_CHIP_ID_5709_A1 0x57090010 +#define BCE_CHIP_ID_5709_B0 0x57091000 +#define BCE_CHIP_ID_5709_B1 0x57091010 +#define BCE_CHIP_ID_5709_B2 0x57091020 +#define BCE_CHIP_ID_5709_C0 0x57092000 +#define BCE_CHIP_ID_5716_C0 0x57162000 + +#define BCE_CHIP_BOND_ID(sc) (((sc)->bce_chipid) & 0xf) + +/* A serdes chip will have the first bit of the bond id set. */ +#define BCE_CHIP_BOND_ID_SERDES_BIT 0x01 + + +/* shorthand one */ +#define BCE_ASICREV(x) ((x) >> 28) +#define BCE_ASICREV_BCM5700 0x06 + +/* chip revisions */ +#define BCE_CHIPREV(x) ((x) >> 24) +#define BCE_CHIPREV_5700_AX 0x70 +#define BCE_CHIPREV_5700_BX 0x71 +#define BCE_CHIPREV_5700_CX 0x72 +#define BCE_CHIPREV_5701_AX 0x00 + +struct bce_type { + u_int16_t bce_vid; + u_int16_t bce_did; + u_int16_t bce_svid; + u_int16_t bce_sdid; + char *bce_name; +}; + +/****************************************************************************/ +/* Byte order conversions. */ +/****************************************************************************/ +#if __FreeBSD_version >= 500000 +#define bce_htobe16(x) htobe16(x) +#define bce_htobe32(x) htobe32(x) +#define bce_htobe64(x) htobe64(x) +#define bce_htole16(x) htole16(x) +#define bce_htole32(x) htole32(x) +#define bce_htole64(x) htole64(x) + +#define bce_be16toh(x) be16toh(x) +#define bce_be32toh(x) be32toh(x) +#define bce_be64toh(x) be64toh(x) +#define bce_le16toh(x) le16toh(x) +#define bce_le32toh(x) le32toh(x) +#define bce_le64toh(x) le64toh(x) +#else +#define bce_htobe16(x) (x) +#define bce_htobe32(x) (x) +#define bce_htobe64(x) (x) +#define bce_htole16(x) (x) +#define bce_htole32(x) (x) +#define bce_htole64(x) (x) + +#define bce_be16toh(x) (x) +#define bce_be32toh(x) (x) +#define bce_be64toh(x) (x) +#define bce_le16toh(x) (x) +#define bce_le32toh(x) (x) +#define bce_le64toh(x) (x) +#endif + + +/****************************************************************************/ +/* NVRAM Access */ +/****************************************************************************/ + +/* Buffered flash (Atmel: AT45DB011B) specific information */ +#define SEEPROM_PAGE_BITS 2 +#define SEEPROM_PHY_PAGE_SIZE (1 << SEEPROM_PAGE_BITS) +#define SEEPROM_BYTE_ADDR_MASK (SEEPROM_PHY_PAGE_SIZE-1) +#define SEEPROM_PAGE_SIZE 4 +#define SEEPROM_TOTAL_SIZE 65536 + +#define BUFFERED_FLASH_PAGE_BITS 9 +#define BUFFERED_FLASH_PHY_PAGE_SIZE (1 << BUFFERED_FLASH_PAGE_BITS) +#define BUFFERED_FLASH_BYTE_ADDR_MASK (BUFFERED_FLASH_PHY_PAGE_SIZE-1) +#define BUFFERED_FLASH_PAGE_SIZE 264 +#define BUFFERED_FLASH_TOTAL_SIZE 0x21000 + +#define SAIFUN_FLASH_PAGE_BITS 8 +#define SAIFUN_FLASH_PHY_PAGE_SIZE (1 << SAIFUN_FLASH_PAGE_BITS) +#define SAIFUN_FLASH_BYTE_ADDR_MASK (SAIFUN_FLASH_PHY_PAGE_SIZE-1) +#define SAIFUN_FLASH_PAGE_SIZE 256 +#define SAIFUN_FLASH_BASE_TOTAL_SIZE 65536 + +#define ST_MICRO_FLASH_PAGE_BITS 8 +#define ST_MICRO_FLASH_PHY_PAGE_SIZE (1 << ST_MICRO_FLASH_PAGE_BITS) +#define ST_MICRO_FLASH_BYTE_ADDR_MASK (ST_MICRO_FLASH_PHY_PAGE_SIZE-1) +#define ST_MICRO_FLASH_PAGE_SIZE 256 +#define ST_MICRO_FLASH_BASE_TOTAL_SIZE 65536 + +#define BCM5709_FLASH_PAGE_BITS 8 +#define BCM5709_FLASH_PHY_PAGE_SIZE (1 << BCM5709_FLASH_PAGE_BITS) +#define BCM5709_FLASH_BYTE_ADDR_MASK (BCM5709_FLASH_PHY_PAGE_SIZE-1) +#define BCM5709_FLASH_PAGE_SIZE 256 + +#define NVRAM_TIMEOUT_COUNT 30000 +#define BCE_FLASHDESC_MAX 64 + +#define FLASH_STRAP_MASK (BCE_NVM_CFG1_FLASH_MODE | \ + BCE_NVM_CFG1_BUFFER_MODE | BCE_NVM_CFG1_PROTECT_MODE | \ + BCE_NVM_CFG1_FLASH_SIZE) + +#define FLASH_BACKUP_STRAP_MASK (0xf << 26) + +struct flash_spec { + u32 strapping; + u32 config1; + u32 config2; + u32 config3; + u32 write1; +#define BCE_NV_BUFFERED 0x00000001 +#define BCE_NV_TRANSLATE 0x00000002 +#define BCE_NV_WREN 0x00000004 + u32 flags; + u32 page_bits; + u32 page_size; + u32 addr_mask; + u32 total_size; + u8 *name; +}; + + +/****************************************************************************/ +/* Shared Memory layout */ +/* The BCE bootcode will initialize this data area with port configurtion */ +/* information which can be accessed by the driver. */ +/****************************************************************************/ + +/* + * This value (in milliseconds) determines the frequency of the driver + * issuing the PULSE message code. The firmware monitors this periodic + * pulse to determine when to switch to an OS-absent mode. + */ +#define DRV_PULSE_PERIOD_MS 250 + +/* + * This value (in milliseconds) determines how long the driver should + * wait for an acknowledgement from the firmware before timing out. Once + * the firmware has timed out, the driver will assume there is no firmware + * running and there won't be any firmware-driver synchronization during a + * driver reset. + */ +#define FW_ACK_TIME_OUT_MS 1000 + + +#define BCE_DRV_RESET_SIGNATURE 0x00000000 +#define BCE_DRV_RESET_SIGNATURE_MAGIC 0x4841564b /* HAVK */ + +#define BCE_DRV_MB 0x00000004 +#define BCE_DRV_MSG_CODE 0xff000000 +#define BCE_DRV_MSG_CODE_RESET 0x01000000 +#define BCE_DRV_MSG_CODE_UNLOAD 0x02000000 +#define BCE_DRV_MSG_CODE_SHUTDOWN 0x03000000 +#define BCE_DRV_MSG_CODE_SUSPEND_WOL 0x04000000 +#define BCE_DRV_MSG_CODE_FW_TIMEOUT 0x05000000 +#define BCE_DRV_MSG_CODE_PULSE 0x06000000 +#define BCE_DRV_MSG_CODE_DIAG 0x07000000 +#define BCE_DRV_MSG_CODE_SUSPEND_NO_WOL 0x09000000 +#define BCE_DRV_MSG_CODE_UNLOAD_LNK_DN 0x0b000000 +#define BCE_DRV_MSG_CODE_CMD_SET_LINK 0x10000000 + +#define BCE_DRV_MSG_DATA 0x00ff0000 +#define BCE_DRV_MSG_DATA_WAIT0 0x00010000 +#define BCE_DRV_MSG_DATA_WAIT1 0x00020000 +#define BCE_DRV_MSG_DATA_WAIT2 0x00030000 +#define BCE_DRV_MSG_DATA_WAIT3 0x00040000 + +#define BCE_DRV_MSG_SEQ 0x0000ffff + +#define BCE_FW_MB 0x00000008 +#define BCE_FW_MSG_ACK 0x0000ffff +#define BCE_FW_MSG_STATUS_MASK 0x00ff0000 +#define BCE_FW_MSG_STATUS_OK 0x00000000 +#define BCE_FW_MSG_STATUS_INVALID_ARGS 0x00010000 +#define BCE_FW_MSG_STATUS_DRV_PRSNT 0x00020000 +#define BCE_FW_MSG_STATUS_FAILURE 0x00ff0000 + +#define BCE_LINK_STATUS 0x0000000c +#define BCE_LINK_STATUS_INIT_VALUE 0xffffffff +#define BCE_LINK_STATUS_LINK_UP 0x1 +#define BCE_LINK_STATUS_LINK_DOWN 0x0 +#define BCE_LINK_STATUS_SPEED_MASK 0x1e +#define BCE_LINK_STATUS_AN_INCOMPLETE (0<<1) +#define BCE_LINK_STATUS_10HALF (1<<1) +#define BCE_LINK_STATUS_10FULL (2<<1) +#define BCE_LINK_STATUS_100HALF (3<<1) +#define BCE_LINK_STATUS_100BASE_T4 (4<<1) +#define BCE_LINK_STATUS_100FULL (5<<1) +#define BCE_LINK_STATUS_1000HALF (6<<1) +#define BCE_LINK_STATUS_1000FULL (7<<1) +#define BCE_LINK_STATUS_2500HALF (8<<1) +#define BCE_LINK_STATUS_2500FULL (9<<1) +#define BCE_LINK_STATUS_AN_ENABLED (1<<5) +#define BCE_LINK_STATUS_AN_COMPLETE (1<<6) +#define BCE_LINK_STATUS_PARALLEL_DET (1<<7) +#define BCE_LINK_STATUS_RESERVED (1<<8) +#define BCE_LINK_STATUS_PARTNER_AD_1000FULL (1<<9) +#define BCE_LINK_STATUS_PARTNER_AD_1000HALF (1<<10) +#define BCE_LINK_STATUS_PARTNER_AD_100BT4 (1<<11) +#define BCE_LINK_STATUS_PARTNER_AD_100FULL (1<<12) +#define BCE_LINK_STATUS_PARTNER_AD_100HALF (1<<13) +#define BCE_LINK_STATUS_PARTNER_AD_10FULL (1<<14) +#define BCE_LINK_STATUS_PARTNER_AD_10HALF (1<<15) +#define BCE_LINK_STATUS_TX_FC_ENABLED (1<<16) +#define BCE_LINK_STATUS_RX_FC_ENABLED (1<<17) +#define BCE_LINK_STATUS_PARTNER_SYM_PAUSE_CAP (1<<18) +#define BCE_LINK_STATUS_PARTNER_ASYM_PAUSE_CAP (1<<19) +#define BCE_LINK_STATUS_SERDES_LINK (1<<20) +#define BCE_LINK_STATUS_PARTNER_AD_2500FULL (1<<21) +#define BCE_LINK_STATUS_PARTNER_AD_2500HALF (1<<22) + +#define BCE_DRV_PULSE_MB 0x00000010 +#define BCE_DRV_PULSE_SEQ_MASK 0x00007fff + +#define BCE_MB_ARGS_0 0x00000014 +#define BCE_MB_ARGS_1 0x00000018 + +/* Indicate to the firmware not to go into the + * OS absent when it is not getting driver pulse. + * This is used for debugging. */ +#define BCE_DRV_MSG_DATA_PULSE_CODE_ALWAYS_ALIVE 0x00080000 + +#define BCE_DEV_INFO_SIGNATURE 0x00000020 +#define BCE_DEV_INFO_SIGNATURE_MAGIC 0x44564900 +#define BCE_DEV_INFO_SIGNATURE_MAGIC_MASK 0xffffff00 +#define BCE_DEV_INFO_FEATURE_CFG_VALID 0x01 +#define BCE_DEV_INFO_SECONDARY_PORT 0x80 +#define BCE_DEV_INFO_DRV_ALWAYS_ALIVE 0x40 + +#define BCE_SHARED_HW_CFG_PART_NUM 0x00000024 + +#define BCE_SHARED_HW_CFG_POWER_DISSIPATED 0x00000034 +#define BCE_SHARED_HW_CFG_POWER_STATE_D3_MASK 0xff000000 +#define BCE_SHARED_HW_CFG_POWER_STATE_D2_MASK 0xff0000 +#define BCE_SHARED_HW_CFG_POWER_STATE_D1_MASK 0xff00 +#define BCE_SHARED_HW_CFG_POWER_STATE_D0_MASK 0xff + +#define BCE_SHARED_HW_CFG_POWER_CONSUMED 0x00000038 +#define BCE_SHARED_HW_CFG_CONFIG 0x0000003c +#define BCE_SHARED_HW_CFG_DESIGN_NIC 0 +#define BCE_SHARED_HW_CFG_DESIGN_LOM 0x1 +#define BCE_SHARED_HW_CFG_PHY_COPPER 0 +#define BCE_SHARED_HW_CFG_PHY_FIBER 0x2 +#define BCE_SHARED_HW_CFG_PHY_2_5G 0x20 +#define BCE_SHARED_HW_CFG_PHY_BACKPLANE 0x40 +#define BCE_SHARED_HW_CFG_LED_MODE_SHIFT_BITS 8 +#define BCE_SHARED_HW_CFG_LED_MODE_MASK 0x300 +#define BCE_SHARED_HW_CFG_LED_MODE_MAC 0 +#define BCE_SHARED_HW_CFG_LED_MODE_GPHY1 0x100 +#define BCE_SHARED_HW_CFG_LED_MODE_GPHY2 0x200 + +#define BCE_SHARED_HW_CFG_CONFIG2 0x00000040 +#define BCE_SHARED_HW_CFG2_NVM_SIZE_MASK 0x00fff000 + +#define BCE_DEV_INFO_BC_REV 0x0000004c + +#define BCE_PORT_HW_CFG_MAC_UPPER 0x00000050 +#define BCE_PORT_HW_CFG_UPPERMAC_MASK 0xffff + +#define BCE_PORT_HW_CFG_MAC_LOWER 0x00000054 +#define BCE_PORT_HW_CFG_CONFIG 0x00000058 +#define BCE_PORT_HW_CFG_CFG_TXCTL3_MASK 0x0000ffff +#define BCE_PORT_HW_CFG_CFG_DFLT_LINK_MASK 0x001f0000 +#define BCE_PORT_HW_CFG_CFG_DFLT_LINK_AN 0x00000000 +#define BCE_PORT_HW_CFG_CFG_DFLT_LINK_1G 0x00030000 +#define BCE_PORT_HW_CFG_CFG_DFLT_LINK_2_5G 0x00040000 + +#define BCE_PORT_HW_CFG_IMD_MAC_A_UPPER 0x00000068 +#define BCE_PORT_HW_CFG_IMD_MAC_A_LOWER 0x0000006c +#define BCE_PORT_HW_CFG_IMD_MAC_B_UPPER 0x00000070 +#define BCE_PORT_HW_CFG_IMD_MAC_B_LOWER 0x00000074 +#define BCE_PORT_HW_CFG_ISCSI_MAC_UPPER 0x00000078 +#define BCE_PORT_HW_CFG_ISCSI_MAC_LOWER 0x0000007c + +#define BCE_DEV_INFO_PER_PORT_HW_CONFIG2 0x000000b4 + +#define BCE_DEV_INFO_FORMAT_REV 0x000000c4 +#define BCE_DEV_INFO_FORMAT_REV_MASK 0xff000000 +#define BCE_DEV_INFO_FORMAT_REV_ID ('A' << 24) + +#define BCE_SHARED_FEATURE 0x000000c8 +#define BCE_SHARED_FEATURE_MASK 0xffffffff + +#define BCE_PORT_FEATURE 0x000000d8 +#define BCE_PORT2_FEATURE 0x00000014c +#define BCE_PORT_FEATURE_WOL_ENABLED 0x01000000 +#define BCE_PORT_FEATURE_MBA_ENABLED 0x02000000 +#define BCE_PORT_FEATURE_ASF_ENABLED 0x04000000 +#define BCE_PORT_FEATURE_IMD_ENABLED 0x08000000 +#define BCE_PORT_FEATURE_BAR1_SIZE_MASK 0xf +#define BCE_PORT_FEATURE_BAR1_SIZE_DISABLED 0x0 +#define BCE_PORT_FEATURE_BAR1_SIZE_64K 0x1 +#define BCE_PORT_FEATURE_BAR1_SIZE_128K 0x2 +#define BCE_PORT_FEATURE_BAR1_SIZE_256K 0x3 +#define BCE_PORT_FEATURE_BAR1_SIZE_512K 0x4 +#define BCE_PORT_FEATURE_BAR1_SIZE_1M 0x5 +#define BCE_PORT_FEATURE_BAR1_SIZE_2M 0x6 +#define BCE_PORT_FEATURE_BAR1_SIZE_4M 0x7 +#define BCE_PORT_FEATURE_BAR1_SIZE_8M 0x8 +#define BCE_PORT_FEATURE_BAR1_SIZE_16M 0x9 +#define BCE_PORT_FEATURE_BAR1_SIZE_32M 0xa +#define BCE_PORT_FEATURE_BAR1_SIZE_64M 0xb +#define BCE_PORT_FEATURE_BAR1_SIZE_128M 0xc +#define BCE_PORT_FEATURE_BAR1_SIZE_256M 0xd +#define BCE_PORT_FEATURE_BAR1_SIZE_512M 0xe +#define BCE_PORT_FEATURE_BAR1_SIZE_1G 0xf + +#define BCE_PORT_FEATURE_WOL 0xdc +#define BCE_PORT2_FEATURE_WOL 0x150 +#define BCE_PORT_FEATURE_WOL_DEFAULT_SHIFT_BITS 4 +#define BCE_PORT_FEATURE_WOL_DEFAULT_MASK 0x30 +#define BCE_PORT_FEATURE_WOL_DEFAULT_DISABLE 0 +#define BCE_PORT_FEATURE_WOL_DEFAULT_MAGIC 0x10 +#define BCE_PORT_FEATURE_WOL_DEFAULT_ACPI 0x20 +#define BCE_PORT_FEATURE_WOL_DEFAULT_MAGIC_AND_ACPI 0x30 +#define BCE_PORT_FEATURE_WOL_LINK_SPEED_MASK 0xf +#define BCE_PORT_FEATURE_WOL_LINK_SPEED_AUTONEG 0 +#define BCE_PORT_FEATURE_WOL_LINK_SPEED_10HALF 1 +#define BCE_PORT_FEATURE_WOL_LINK_SPEED_10FULL 2 +#define BCE_PORT_FEATURE_WOL_LINK_SPEED_100HALF 3 +#define BCE_PORT_FEATURE_WOL_LINK_SPEED_100FULL 4 +#define BCE_PORT_FEATURE_WOL_LINK_SPEED_1000HALF 5 +#define BCE_PORT_FEATURE_WOL_LINK_SPEED_1000FULL 6 +#define BCE_PORT_FEATURE_WOL_AUTONEG_ADVERTISE_1000 0x40 +#define BCE_PORT_FEATURE_WOL_RESERVED_PAUSE_CAP 0x400 +#define BCE_PORT_FEATURE_WOL_RESERVED_ASYM_PAUSE_CAP 0x800 + +#define BCE_PORT_FEATURE_MBA 0xe0 +#define BCE_PORT2_FEATURE_MBA 0x154 +#define BCE_PORT_FEATURE_MBA_BOOT_AGENT_TYPE_SHIFT_BITS 0 +#define BCE_PORT_FEATURE_MBA_BOOT_AGENT_TYPE_MASK 0x3 +#define BCE_PORT_FEATURE_MBA_BOOT_AGENT_TYPE_PXE 0 +#define BCE_PORT_FEATURE_MBA_BOOT_AGENT_TYPE_RPL 1 +#define BCE_PORT_FEATURE_MBA_BOOT_AGENT_TYPE_BOOTP 2 +#define BCE_PORT_FEATURE_MBA_LINK_SPEED_SHIFT_BITS 2 +#define BCE_PORT_FEATURE_MBA_LINK_SPEED_MASK 0x3c +#define BCE_PORT_FEATURE_MBA_LINK_SPEED_AUTONEG 0 +#define BCE_PORT_FEATURE_MBA_LINK_SPEED_10HALF 0x4 +#define BCE_PORT_FEATURE_MBA_LINK_SPEED_10FULL 0x8 +#define BCE_PORT_FEATURE_MBA_LINK_SPEED_100HALF 0xc +#define BCE_PORT_FEATURE_MBA_LINK_SPEED_100FULL 0x10 +#define BCE_PORT_FEATURE_MBA_LINK_SPEED_1000HALF 0x14 +#define BCE_PORT_FEATURE_MBA_LINK_SPEED_1000FULL 0x18 +#define BCE_PORT_FEATURE_MBA_SETUP_PROMPT_ENABLE 0x40 +#define BCE_PORT_FEATURE_MBA_HOTKEY_CTRL_S 0 +#define BCE_PORT_FEATURE_MBA_HOTKEY_CTRL_B 0x80 +#define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_SHIFT_BITS 8 +#define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_MASK 0xff00 +#define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_DISABLED 0 +#define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_1K 0x100 +#define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_2K 0x200 +#define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_4K 0x300 +#define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_8K 0x400 +#define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_16K 0x500 +#define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_32K 0x600 +#define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_64K 0x700 +#define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_128K 0x800 +#define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_256K 0x900 +#define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_512K 0xa00 +#define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_1M 0xb00 +#define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_2M 0xc00 +#define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_4M 0xd00 +#define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_8M 0xe00 +#define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_16M 0xf00 +#define BCE_PORT_FEATURE_MBA_MSG_TIMEOUT_SHIFT_BITS 16 +#define BCE_PORT_FEATURE_MBA_MSG_TIMEOUT_MASK 0xf0000 +#define BCE_PORT_FEATURE_MBA_BIOS_BOOTSTRAP_SHIFT_BITS 20 +#define BCE_PORT_FEATURE_MBA_BIOS_BOOTSTRAP_MASK 0x300000 +#define BCE_PORT_FEATURE_MBA_BIOS_BOOTSTRAP_AUTO 0 +#define BCE_PORT_FEATURE_MBA_BIOS_BOOTSTRAP_BBS 0x100000 +#define BCE_PORT_FEATURE_MBA_BIOS_BOOTSTRAP_INT18H 0x200000 +#define BCE_PORT_FEATURE_MBA_BIOS_BOOTSTRAP_INT19H 0x300000 + +#define BCE_PORT_FEATURE_IMD 0xe4 +#define BCE_PORT2_FEATURE_IMD 0x158 +#define BCE_PORT_FEATURE_IMD_LINK_OVERRIDE_DEFAULT 0 +#define BCE_PORT_FEATURE_IMD_LINK_OVERRIDE_ENABLE 1 + +#define BCE_PORT_FEATURE_VLAN 0xe8 +#define BCE_PORT2_FEATURE_VLAN 0x15c +#define BCE_PORT_FEATURE_MBA_VLAN_TAG_MASK 0xffff +#define BCE_PORT_FEATURE_MBA_VLAN_ENABLE 0x10000 + +#define BCE_MFW_VER_PTR 0x00000014c + +#define BCE_BC_STATE_RESET_TYPE 0x000001c0 +#define BCE_BC_STATE_RESET_TYPE_SIG 0x00005254 +#define BCE_BC_STATE_RESET_TYPE_SIG_MASK 0x0000ffff + +#define BCE_BC_STATE_RESET_TYPE_NONE \ + (BCE_BC_STATE_RESET_TYPE_SIG | 0x00010000) +#define BCE_BC_STATE_RESET_TYPE_PCI \ + (BCE_BC_STATE_RESET_TYPE_SIG | 0x00020000) +#define BCE_BC_STATE_RESET_TYPE_VAUX \ + (BCE_BC_STATE_RESET_TYPE_SIG | 0x00030000) +#define BCE_BC_STATE_RESET_TYPE_DRV_MASK DRV_MSG_CODE +#define BCE_BC_STATE_RESET_TYPE_DRV_RESET \ + (BCE_BC_STATE_RESET_TYPE_SIG | DRV_MSG_CODE_RESET) +#define BCE_BC_STATE_RESET_TYPE_DRV_UNLOAD \ + (BCE_BC_STATE_RESET_TYPE_SIG | DRV_MSG_CODE_UNLOAD) +#define BCE_BC_STATE_RESET_TYPE_DRV_SHUTDOWN \ + (BCE_BC_STATE_RESET_TYPE_SIG | DRV_MSG_CODE_SHUTDOWN) +#define BCE_BC_STATE_RESET_TYPE_DRV_WOL \ + (BCE_BC_STATE_RESET_TYPE_SIG | DRV_MSG_CODE_WOL) +#define BCE_BC_STATE_RESET_TYPE_DRV_DIAG \ + (BCE_BC_STATE_RESET_TYPE_SIG | DRV_MSG_CODE_DIAG) +#define BCE_BC_STATE_RESET_TYPE_VALUE(msg) \ + (BCE_BC_STATE_RESET_TYPE_SIG | (msg)) + +#define BCE_BC_RESET_TYPE 0x000001c0 + +#define BCE_BC_STATE 0x000001c4 +#define BCE_BC_STATE_ERR_MASK 0x0000ff00 +#define BCE_BC_STATE_SIGN 0x42530000 +#define BCE_BC_STATE_SIGN_MASK 0xffff0000 +#define BCE_BC_STATE_BC1_START (BCE_BC_STATE_SIGN | 0x1) +#define BCE_BC_STATE_GET_NVM_CFG1 (BCE_BC_STATE_SIGN | 0x2) +#define BCE_BC_STATE_PROG_BAR (BCE_BC_STATE_SIGN | 0x3) +#define BCE_BC_STATE_INIT_VID (BCE_BC_STATE_SIGN | 0x4) +#define BCE_BC_STATE_GET_NVM_CFG2 (BCE_BC_STATE_SIGN | 0x5) +#define BCE_BC_STATE_APPLY_WKARND (BCE_BC_STATE_SIGN | 0x6) +#define BCE_BC_STATE_LOAD_BC2 (BCE_BC_STATE_SIGN | 0x7) +#define BCE_BC_STATE_GOING_BC2 (BCE_BC_STATE_SIGN | 0x8) +#define BCE_BC_STATE_GOING_DIAG (BCE_BC_STATE_SIGN | 0x9) +#define BCE_BC_STATE_RT_FINAL_INIT (BCE_BC_STATE_SIGN | 0x81) +#define BCE_BC_STATE_RT_WKARND (BCE_BC_STATE_SIGN | 0x82) +#define BCE_BC_STATE_RT_DRV_PULSE (BCE_BC_STATE_SIGN | 0x83) +#define BCE_BC_STATE_RT_FIOEVTS (BCE_BC_STATE_SIGN | 0x84) +#define BCE_BC_STATE_RT_DRV_CMD (BCE_BC_STATE_SIGN | 0x85) +#define BCE_BC_STATE_RT_LOW_POWER (BCE_BC_STATE_SIGN | 0x86) +#define BCE_BC_STATE_RT_SET_WOL (BCE_BC_STATE_SIGN | 0x87) +#define BCE_BC_STATE_RT_OTHER_FW (BCE_BC_STATE_SIGN | 0x88) +#define BCE_BC_STATE_RT_GOING_D3 (BCE_BC_STATE_SIGN | 0x89) +#define BCE_BC_STATE_ERR_BAD_VERSION (BCE_BC_STATE_SIGN | 0x0100) +#define BCE_BC_STATE_ERR_BAD_BC2_CRC (BCE_BC_STATE_SIGN | 0x0200) +#define BCE_BC_STATE_ERR_BC1_LOOP (BCE_BC_STATE_SIGN | 0x0300) +#define BCE_BC_STATE_ERR_UNKNOWN_CMD (BCE_BC_STATE_SIGN | 0x0400) +#define BCE_BC_STATE_ERR_DRV_DEAD (BCE_BC_STATE_SIGN | 0x0500) +#define BCE_BC_STATE_ERR_NO_RXP (BCE_BC_STATE_SIGN | 0x0600) +#define BCE_BC_STATE_ERR_TOO_MANY_RBUF (BCE_BC_STATE_SIGN | 0x0700) + +#define BCE_BC_STATE_CONDITION 0x000001c8 +#define BCE_CONDITION_INIT_POR 0x00000001 +#define BCE_CONDITION_INIT_VAUX_AVAIL 0x00000002 +#define BCE_CONDITION_INIT_PCI_AVAIL 0x00000004 +#define BCE_CONDITION_INIT_PCI_RESET 0x00000008 +#define BCE_CONDITION_INIT_HD_RESET 0x00000010 /* 5709/16 only */ +#define BCE_CONDITION_DRV_PRESENT 0x00000100 +#define BCE_CONDITION_LOW_POWER_LINK 0x00000200 +#define BCE_CONDITION_CORE_RST_OCCURRED 0x00000400 /* 5709/16 only */ +#define BCE_CONDITION_UNUSED 0x00000800 +#define BCE_CONDITION_BUSY_EXPROM 0x00001000 /* 5706/08 only */ + +#define BCE_CONDITION_MFW_RUN_UNKNOWN 0x00000000 +#define BCE_CONDITION_MFW_RUN_IPMI 0x00002000 +#define BCE_CONDITION_MFW_RUN_UMP 0x00004000 +#define BCE_CONDITION_MFW_RUN_NCSI 0x00006000 +#define BCE_CONDITION_MFW_RUN_NONE 0x0000e000 +#define BCE_CONDITION_MFW_RUN_MASK 0x0000e000 + +/* 5709/16 only */ +#define BCE_CONDITION_PM_STATE_MASK 0x00030000 +#define BCE_CONDITION_PM_STATE_FULL 0x00030000 +#define BCE_CONDITION_PM_STATE_PREP 0x00020000 +#define BCE_CONDITION_PM_STATE_UNPREP 0x00010000 +#define BCE_CONDITION_PM_RESERVED 0x00000000 + +/* 5709/16 only */ +#define BCE_CONDITION_RXMODE_KEEP_VLAN 0x00040000 +#define BCE_CONDITION_DRV_WOL_ENABLED 0x00080000 +#define BCE_CONDITION_PORT_DISABLED 0x00100000 +#define BCE_CONDITION_DRV_MAYBE_OUT 0x00200000 +#define BCE_CONDITION_DPFW_DEAD 0x00400000 + +#define BCE_BC_STATE_DEBUG_CMD 0x000001dc +#define BCE_BC_STATE_BC_DBG_CMD_SIGNATURE 0x42440000 +#define BCE_BC_STATE_BC_DBG_CMD_SIGNATURE_MASK 0xffff0000 +#define BCE_BC_STATE_BC_DBG_CMD_LOOP_CNT_MASK 0xffff +#define BCE_BC_STATE_BC_DBG_CMD_LOOP_INFINITE 0xffff + +#define HOST_VIEW_SHMEM_BASE 0x167c00 + +/* + * PCI registers defined in the PCI 2.2 spec. + */ +#define BCE_PCI_PCIX_CMD 0x42 + + +/****************************************************************************/ +/* Convenience definitions. */ +/****************************************************************************/ +#define BCE_PRINTF(fmt, args...) \ + device_printf(sc->bce_dev, fmt, ##args) + +#define BCE_LOCK_INIT(_sc, _name) \ + mtx_init(&(_sc)->bce_mtx, _name, MTX_NETWORK_LOCK, MTX_DEF) +#define BCE_LOCK(_sc) mtx_lock(&(_sc)->bce_mtx) +#define BCE_LOCK_ASSERT(_sc) mtx_assert(&(_sc)->bce_mtx, MA_OWNED) +#define BCE_UNLOCK(_sc) mtx_unlock(&(_sc)->bce_mtx) +#define BCE_LOCK_DESTROY(_sc) mtx_destroy(&(_sc)->bce_mtx) + +#ifdef BCE_DEBUG +#define REG_WR(sc, offset, val) bce_reg_wr(sc, offset, val) +#define REG_WR16(sc, offset, val) bce_reg_wr16(sc, offset, val) +#define REG_RD(sc, offset) bce_reg_rd(sc, offset) +#else +#define REG_WR(sc, offset, val) \ + bus_space_write_4(sc->bce_btag, sc->bce_bhandle, offset, val) +#define REG_WR16(sc, offset, val) \ + bus_space_write_2(sc->bce_btag, sc->bce_bhandle, offset, val) +#define REG_RD(sc, offset) \ + bus_space_read_4(sc->bce_btag, sc->bce_bhandle, offset) +#endif + +#define REG_RD_IND(sc, offset) bce_reg_rd_ind(sc, offset) +#define REG_WR_IND(sc, offset, val) bce_reg_wr_ind(sc, offset, val) +#define CTX_WR(sc, cid_addr, offset, val)bce_ctx_wr(sc, cid_addr, offset, val) +#define CTX_RD(sc, cid_addr, offset) bce_ctx_rd(sc, cid_addr, offset) + +#define BCE_SETBIT(sc, reg, x) \ + REG_WR(sc, reg, (REG_RD(sc, reg) | (x))) +#define BCE_CLRBIT(sc, reg, x) \ + REG_WR(sc, reg, (REG_RD(sc, reg) & ~(x))) +#define PCI_SETBIT(dev, reg, x, s) \ + pci_write_config(dev, reg, (pci_read_config(dev, reg, s) | (x)), s) +#define PCI_CLRBIT(dev, reg, x, s) \ + pci_write_config(dev, reg, (pci_read_config(dev, reg, s) & ~(x)), s) + +#define BCE_STATS(x) (u_long) stats->stat_ ## x ## _lo + +#if (BUS_SPACE_MAXADDR > 0xFFFFFFFF) +#define BCE_ADDR_LO(y) ((u64) (y) & 0xFFFFFFFF) +#define BCE_ADDR_HI(y) ((u64) (y) >> 32) +#else +#define BCE_ADDR_LO(y) ((u32)y) +#define BCE_ADDR_HI(y) (0) +#endif + + +/****************************************************************************/ +/* Do not modify any of the following data structures, they are generated */ +/* from RTL code. */ +/* */ +/* Begin machine generated definitions. */ +/****************************************************************************/ + +/* + * tx_bd definition + */ +struct tx_bd { + u32 tx_bd_haddr_hi; + u32 tx_bd_haddr_lo; + u32 tx_bd_mss_nbytes; + u16 tx_bd_flags; + u16 tx_bd_vlan_tag; + #define TX_BD_FLAGS_CONN_FAULT (1<<0) + #define TX_BD_FLAGS_TCP_UDP_CKSUM (1<<1) + #define TX_BD_FLAGS_IP_CKSUM (1<<2) + #define TX_BD_FLAGS_VLAN_TAG (1<<3) + #define TX_BD_FLAGS_COAL_NOW (1<<4) + #define TX_BD_FLAGS_DONT_GEN_CRC (1<<5) + #define TX_BD_FLAGS_END (1<<6) + #define TX_BD_FLAGS_START (1<<7) + #define TX_BD_FLAGS_SW_OPTION_WORD (0x1f<<8) + #define TX_BD_FLAGS_SW_FLAGS (1<<13) + #define TX_BD_FLAGS_SW_SNAP (1<<14) + #define TX_BD_FLAGS_SW_LSO (1<<15) + +}; + + +/* + * rx_bd definition + */ +struct rx_bd { + u32 rx_bd_haddr_hi; + u32 rx_bd_haddr_lo; + u32 rx_bd_len; + u32 rx_bd_flags; + #define RX_BD_FLAGS_NOPUSH (1<<0) + #define RX_BD_FLAGS_DUMMY (1<<1) + #define RX_BD_FLAGS_END (1<<2) + #define RX_BD_FLAGS_START (1<<3) + +}; + + +/* + * status_block definition + */ +struct status_block { + u32 status_attn_bits; + #define STATUS_ATTN_BITS_LINK_STATE (1L<<0) + #define STATUS_ATTN_BITS_TX_SCHEDULER_ABORT (1L<<1) + #define STATUS_ATTN_BITS_TX_BD_READ_ABORT (1L<<2) + #define STATUS_ATTN_BITS_TX_BD_CACHE_ABORT (1L<<3) + #define STATUS_ATTN_BITS_TX_PROCESSOR_ABORT (1L<<4) + #define STATUS_ATTN_BITS_TX_DMA_ABORT (1L<<5) + #define STATUS_ATTN_BITS_TX_PATCHUP_ABORT (1L<<6) + #define STATUS_ATTN_BITS_TX_ASSEMBLER_ABORT (1L<<7) + #define STATUS_ATTN_BITS_RX_PARSER_MAC_ABORT (1L<<8) + #define STATUS_ATTN_BITS_RX_PARSER_CATCHUP_ABORT (1L<<9) + #define STATUS_ATTN_BITS_RX_MBUF_ABORT (1L<<10) + #define STATUS_ATTN_BITS_RX_LOOKUP_ABORT (1L<<11) + #define STATUS_ATTN_BITS_RX_PROCESSOR_ABORT (1L<<12) + #define STATUS_ATTN_BITS_RX_V2P_ABORT (1L<<13) + #define STATUS_ATTN_BITS_RX_BD_CACHE_ABORT (1L<<14) + #define STATUS_ATTN_BITS_RX_DMA_ABORT (1L<<15) + #define STATUS_ATTN_BITS_COMPLETION_ABORT (1L<<16) + #define STATUS_ATTN_BITS_HOST_COALESCE_ABORT (1L<<17) + #define STATUS_ATTN_BITS_MAILBOX_QUEUE_ABORT (1L<<18) + #define STATUS_ATTN_BITS_CONTEXT_ABORT (1L<<19) + #define STATUS_ATTN_BITS_CMD_SCHEDULER_ABORT (1L<<20) + #define STATUS_ATTN_BITS_CMD_PROCESSOR_ABORT (1L<<21) + #define STATUS_ATTN_BITS_MGMT_PROCESSOR_ABORT (1L<<22) + #define STATUS_ATTN_BITS_MAC_ABORT (1L<<23) + #define STATUS_ATTN_BITS_TIMER_ABORT (1L<<24) + #define STATUS_ATTN_BITS_DMAE_ABORT (1L<<25) + #define STATUS_ATTN_BITS_FLSH_ABORT (1L<<26) + #define STATUS_ATTN_BITS_GRC_ABORT (1L<<27) + #define STATUS_ATTN_BITS_PARITY_ERROR (1L<<31) + + u32 status_attn_bits_ack; +#if defined(__BIG_ENDIAN) + u16 status_tx_quick_consumer_index0; + u16 status_tx_quick_consumer_index1; + u16 status_tx_quick_consumer_index2; + u16 status_tx_quick_consumer_index3; + u16 status_rx_quick_consumer_index0; + u16 status_rx_quick_consumer_index1; + u16 status_rx_quick_consumer_index2; + u16 status_rx_quick_consumer_index3; + u16 status_rx_quick_consumer_index4; + u16 status_rx_quick_consumer_index5; + u16 status_rx_quick_consumer_index6; + u16 status_rx_quick_consumer_index7; + u16 status_rx_quick_consumer_index8; + u16 status_rx_quick_consumer_index9; + u16 status_rx_quick_consumer_index10; + u16 status_rx_quick_consumer_index11; + u16 status_rx_quick_consumer_index12; + u16 status_rx_quick_consumer_index13; + u16 status_rx_quick_consumer_index14; + u16 status_rx_quick_consumer_index15; + u16 status_completion_producer_index; + u16 status_cmd_consumer_index; + u16 status_idx; + u16 status_unused; +#elif defined(__LITTLE_ENDIAN) + u16 status_tx_quick_consumer_index1; + u16 status_tx_quick_consumer_index0; + u16 status_tx_quick_consumer_index3; + u16 status_tx_quick_consumer_index2; + u16 status_rx_quick_consumer_index1; + u16 status_rx_quick_consumer_index0; + u16 status_rx_quick_consumer_index3; + u16 status_rx_quick_consumer_index2; + u16 status_rx_quick_consumer_index5; + u16 status_rx_quick_consumer_index4; + u16 status_rx_quick_consumer_index7; + u16 status_rx_quick_consumer_index6; + u16 status_rx_quick_consumer_index9; + u16 status_rx_quick_consumer_index8; + u16 status_rx_quick_consumer_index11; + u16 status_rx_quick_consumer_index10; + u16 status_rx_quick_consumer_index13; + u16 status_rx_quick_consumer_index12; + u16 status_rx_quick_consumer_index15; + u16 status_rx_quick_consumer_index14; + u16 status_cmd_consumer_index; + u16 status_completion_producer_index; + u16 status_unused; + u16 status_idx; +#endif +}; + + +/* + * statistics_block definition + */ +struct statistics_block { + u32 stat_IfHCInOctets_hi; + u32 stat_IfHCInOctets_lo; + u32 stat_IfHCInBadOctets_hi; + u32 stat_IfHCInBadOctets_lo; + u32 stat_IfHCOutOctets_hi; + u32 stat_IfHCOutOctets_lo; + u32 stat_IfHCOutBadOctets_hi; + u32 stat_IfHCOutBadOctets_lo; + u32 stat_IfHCInUcastPkts_hi; + u32 stat_IfHCInUcastPkts_lo; + u32 stat_IfHCInMulticastPkts_hi; + u32 stat_IfHCInMulticastPkts_lo; + u32 stat_IfHCInBroadcastPkts_hi; + u32 stat_IfHCInBroadcastPkts_lo; + u32 stat_IfHCOutUcastPkts_hi; + u32 stat_IfHCOutUcastPkts_lo; + u32 stat_IfHCOutMulticastPkts_hi; + u32 stat_IfHCOutMulticastPkts_lo; + u32 stat_IfHCOutBroadcastPkts_hi; + u32 stat_IfHCOutBroadcastPkts_lo; + u32 stat_emac_tx_stat_dot3statsinternalmactransmiterrors; + u32 stat_Dot3StatsCarrierSenseErrors; + u32 stat_Dot3StatsFCSErrors; + u32 stat_Dot3StatsAlignmentErrors; + u32 stat_Dot3StatsSingleCollisionFrames; + u32 stat_Dot3StatsMultipleCollisionFrames; + u32 stat_Dot3StatsDeferredTransmissions; + u32 stat_Dot3StatsExcessiveCollisions; + u32 stat_Dot3StatsLateCollisions; + u32 stat_EtherStatsCollisions; + u32 stat_EtherStatsFragments; + u32 stat_EtherStatsJabbers; + u32 stat_EtherStatsUndersizePkts; + u32 stat_EtherStatsOversizePkts; + u32 stat_EtherStatsPktsRx64Octets; + u32 stat_EtherStatsPktsRx65Octetsto127Octets; + u32 stat_EtherStatsPktsRx128Octetsto255Octets; + u32 stat_EtherStatsPktsRx256Octetsto511Octets; + u32 stat_EtherStatsPktsRx512Octetsto1023Octets; + u32 stat_EtherStatsPktsRx1024Octetsto1522Octets; + u32 stat_EtherStatsPktsRx1523Octetsto9022Octets; + u32 stat_EtherStatsPktsTx64Octets; + u32 stat_EtherStatsPktsTx65Octetsto127Octets; + u32 stat_EtherStatsPktsTx128Octetsto255Octets; + u32 stat_EtherStatsPktsTx256Octetsto511Octets; + u32 stat_EtherStatsPktsTx512Octetsto1023Octets; + u32 stat_EtherStatsPktsTx1024Octetsto1522Octets; + u32 stat_EtherStatsPktsTx1523Octetsto9022Octets; + u32 stat_XonPauseFramesReceived; + u32 stat_XoffPauseFramesReceived; + u32 stat_OutXonSent; + u32 stat_OutXoffSent; + u32 stat_FlowControlDone; + u32 stat_MacControlFramesReceived; + u32 stat_XoffStateEntered; + u32 stat_IfInFramesL2FilterDiscards; + u32 stat_IfInRuleCheckerDiscards; + u32 stat_IfInFTQDiscards; + u32 stat_IfInMBUFDiscards; + u32 stat_IfInRuleCheckerP4Hit; + u32 stat_CatchupInRuleCheckerDiscards; + u32 stat_CatchupInFTQDiscards; + u32 stat_CatchupInMBUFDiscards; + u32 stat_CatchupInRuleCheckerP4Hit; + u32 stat_GenStat00; + u32 stat_GenStat01; + u32 stat_GenStat02; + u32 stat_GenStat03; + u32 stat_GenStat04; + u32 stat_GenStat05; + u32 stat_GenStat06; + u32 stat_GenStat07; + u32 stat_GenStat08; + u32 stat_GenStat09; + u32 stat_GenStat10; + u32 stat_GenStat11; + u32 stat_GenStat12; + u32 stat_GenStat13; + u32 stat_GenStat14; + u32 stat_GenStat15; +}; + + +/* + * l2_fhdr definition + */ +struct l2_fhdr { + u32 l2_fhdr_status; + #define L2_FHDR_STATUS_RULE_CLASS (0x7<<0) + #define L2_FHDR_STATUS_RULE_P2 (1<<3) + #define L2_FHDR_STATUS_RULE_P3 (1<<4) + #define L2_FHDR_STATUS_RULE_P4 (1<<5) + #define L2_FHDR_STATUS_L2_VLAN_TAG (1<<6) + #define L2_FHDR_STATUS_L2_LLC_SNAP (1<<7) + #define L2_FHDR_STATUS_RSS_HASH (1<<8) + #define L2_FHDR_STATUS_IP_DATAGRAM (1<<13) + #define L2_FHDR_STATUS_TCP_SEGMENT (1<<14) + #define L2_FHDR_STATUS_UDP_DATAGRAM (1<<15) + + #define L2_FHDR_STATUS_SPLIT (1<<16) + #define L2_FHDR_ERRORS_BAD_CRC (1<<17) + #define L2_FHDR_ERRORS_PHY_DECODE (1<<18) + #define L2_FHDR_ERRORS_ALIGNMENT (1<<19) + #define L2_FHDR_ERRORS_TOO_SHORT (1<<20) + #define L2_FHDR_ERRORS_GIANT_FRAME (1<<21) + #define L2_FHDR_ERRORS_TCP_XSUM (1<<28) + #define L2_FHDR_ERRORS_UDP_XSUM (1<<31) + + u32 l2_fhdr_hash; +#if defined(__BIG_ENDIAN) + u16 l2_fhdr_pkt_len; + u16 l2_fhdr_vlan_tag; + u16 l2_fhdr_ip_xsum; + u16 l2_fhdr_tcp_udp_xsum; +#elif defined(__LITTLE_ENDIAN) + u16 l2_fhdr_vlan_tag; + u16 l2_fhdr_pkt_len; + u16 l2_fhdr_tcp_udp_xsum; + u16 l2_fhdr_ip_xsum; +#endif +}; + +#define BCE_L2FHDR_PRINTFB \ + "\20" \ + "\40UDP_XSUM_ERR" \ + "\37b30" \ + "\36b29" \ + "\35TCP_XSUM_ERR" \ + "\34b27" \ + "\33b26" \ + "\32b25" \ + "\31b24" \ + "\30b23" \ + "\27b22" \ + "\26GIANT_ERR" \ + "\25SHORT_ERR" \ + "\24ALIGN_ERR" \ + "\23PHY_ERR" \ + "\22CRC_ERR" \ + "\21SPLIT" \ + "\20UDP" \ + "\17TCP" \ + "\16IP" \ + "\15b12" \ + "\14b11" \ + "\13b10" \ + "\12b09" \ + "\11RSS" \ + "\10SNAP" \ + "\07VLAN" \ + "\06P4" \ + "\05P3" \ + "\04P2" + + +/* + * l2_tx_context definition (5706 and 5708) + */ +#define BCE_L2CTX_TX_TYPE 0x00000000 +#define BCE_L2CTX_TX_TYPE_SIZE_L2 ((0xc0/0x20)<<16) +#define BCE_L2CTX_TX_TYPE_TYPE (0xf<<28) +#define BCE_L2CTX_TX_TYPE_TYPE_EMPTY (0<<28) +#define BCE_L2CTX_TX_TYPE_TYPE_L2 (1<<28) + +#define BCE_L2CTX_TX_HOST_BIDX 0x00000088 +#define BCE_L2CTX_TX_EST_NBD 0x00000088 +#define BCE_L2CTX_TX_CMD_TYPE 0x00000088 +#define BCE_L2CTX_TX_CMD_TYPE_TYPE (0xf<<24) +#define BCE_L2CTX_TX_CMD_TYPE_TYPE_L2 (0<<24) +#define BCE_L2CTX_TX_CMD_TYPE_TYPE_TCP (1<<24) + +#define BCE_L2CTX_TX_HOST_BSEQ 0x00000090 +#define BCE_L2CTX_TX_TSCH_BSEQ 0x00000094 +#define BCE_L2CTX_TX_TBDR_BSEQ 0x00000098 +#define BCE_L2CTX_TX_TBDR_BOFF 0x0000009c +#define BCE_L2CTX_TX_TBDR_BIDX 0x0000009c +#define BCE_L2CTX_TX_TBDR_BHADDR_HI 0x000000a0 +#define BCE_L2CTX_TX_TBDR_BHADDR_LO 0x000000a4 +#define BCE_L2CTX_TX_TXP_BOFF 0x000000a8 +#define BCE_L2CTX_TX_TXP_BIDX 0x000000a8 +#define BCE_L2CTX_TX_TXP_BSEQ 0x000000ac + +/* + * l2_tx_context definition (5709 and 5716) + */ +#define BCE_L2CTX_TX_TYPE_XI 0x00000080 +#define BCE_L2CTX_TX_TYPE_SIZE_L2_XI ((0xc0/0x20)<<16) +#define BCE_L2CTX_TX_TYPE_TYPE_XI (0xf<<28) +#define BCE_L2CTX_TX_TYPE_TYPE_EMPTY_XI (0<<28) +#define BCE_L2CTX_TX_TYPE_TYPE_L2_XI (1<<28) + +#define BCE_L2CTX_TX_CMD_TYPE_XI 0x00000240 +#define BCE_L2CTX_TX_CMD_TYPE_TYPE_XI (0xf<<24) +#define BCE_L2CTX_TX_CMD_TYPE_TYPE_L2_XI (0<<24) +#define BCE_L2CTX_TX_CMD_TYPE_TYPE_TCP_XI (1<<24) + +#define BCE_L2CTX_TX_HOST_BIDX_XI 0x00000240 +#define BCE_L2CTX_TX_HOST_BSEQ_XI 0x00000248 +#define BCE_L2CTX_TX_TBDR_BHADDR_HI_XI 0x00000258 +#define BCE_L2CTX_TX_TBDR_BHADDR_LO_XI 0x0000025c + + +/* + * l2_rx_context definition (5706, 5708, 5709, and 5716) + */ +#define BCE_L2CTX_RX_WATER_MARK 0x00000000 +#define BCE_L2CTX_RX_LO_WATER_MARK_SHIFT 0 +#define BCE_L2CTX_RX_LO_WATER_MARK_DEFAULT 32 +#define BCE_L2CTX_RX_LO_WATER_MARK_SCALE 4 +#define BCE_L2CTX_RX_LO_WATER_MARK_DIS 0 +#define BCE_L2CTX_RX_HI_WATER_MARK_SHIFT 4 +#define BCE_L2CTX_RX_HI_WATER_MARK_SCALE 16 +#define BCE_L2CTX_RX_WATER_MARKS_MSK 0x000000ff + +#define BCE_L2CTX_RX_BD_PRE_READ 0x00000000 +#define BCE_L2CTX_RX_BD_PRE_READ_SHIFT 8 + +#define BCE_L2CTX_RX_CTX_SIZE 0x00000000 +#define BCE_L2CTX_RX_CTX_SIZE_SHIFT 16 +#define BCE_L2CTX_RX_CTX_TYPE_SIZE_L2 \ + ((0x20/20)<<BCE_L2CTX_RX_CTX_SIZE_SHIFT) + +#define BCE_L2CTX_RX_CTX_TYPE 0x00000000 +#define BCE_L2CTX_RX_CTX_TYPE_SHIFT 24 + +#define BCE_L2CTX_RX_CTX_TYPE_CTX_BD_CHN_TYPE (0xf<<28) +#define BCE_L2CTX_RX_CTX_TYPE_CTX_BD_CHN_TYPE_UNDEFINED (0<<28) +#define BCE_L2CTX_RX_CTX_TYPE_CTX_BD_CHN_TYPE_VALUE (1<<28) + +#define BCE_L2CTX_RX_HOST_BDIDX 0x00000004 +#define BCE_L2CTX_RX_HOST_BSEQ 0x00000008 +#define BCE_L2CTX_RX_NX_BSEQ 0x0000000c +#define BCE_L2CTX_RX_NX_BDHADDR_HI 0x00000010 +#define BCE_L2CTX_RX_NX_BDHADDR_LO 0x00000014 +#define BCE_L2CTX_RX_NX_BDIDX 0x00000018 + +#define BCE_L2CTX_RX_HOST_PG_BDIDX 0x00000044 +#define BCE_L2CTX_RX_PG_BUF_SIZE 0x00000048 +#define BCE_L2CTX_RX_RBDC_KEY 0x0000004c +#define BCE_L2CTX_RX_RBDC_JUMBO_KEY 0x3ffe +#define BCE_L2CTX_RX_NX_PG_BDHADDR_HI 0x00000050 +#define BCE_L2CTX_RX_NX_PG_BDHADDR_LO 0x00000054 +#define BCE_L2CTX_RX_NX_PG_BDIDX 0x00000058 + + +/* + * l2_mq definitions (5706, 5708, 5709, and 5716) + */ + +#define BCE_L2MQ_RX_HOST_BDIDX 0x00000004 +#define BCE_L2MQ_RX_HOST_BSEQ 0x00000008 +#define BCE_L2MQ_RX_HOST_PG_BDIDX 0x00000044 + +#define BCE_L2MQ_TX_HOST_BIDX 0x00000088 +#define BCE_L2MQ_TX_HOST_BSEQ 0x00000090 + +/* + * pci_config_l definition + * offset: 0000 + */ +#define BCE_PCICFG_MISC_CONFIG 0x00000068 +#define BCE_PCICFG_MISC_CONFIG_TARGET_BYTE_SWAP (1L<<2) +#define BCE_PCICFG_MISC_CONFIG_TARGET_MB_WORD_SWAP (1L<<3) +#define BCE_PCICFG_MISC_CONFIG_CLOCK_CTL_ENA (1L<<5) +#define BCE_PCICFG_MISC_CONFIG_TARGET_GRC_WORD_SWAP (1L<<6) +#define BCE_PCICFG_MISC_CONFIG_REG_WINDOW_ENA (1L<<7) +#define BCE_PCICFG_MISC_CONFIG_CORE_RST_REQ (1L<<8) +#define BCE_PCICFG_MISC_CONFIG_CORE_RST_BSY (1L<<9) +#define BCE_PCICFG_MISC_CONFIG_ASIC_METAL_REV (0xffL<<16) +#define BCE_PCICFG_MISC_CONFIG_ASIC_BASE_REV (0xfL<<24) +#define BCE_PCICFG_MISC_CONFIG_ASIC_ID (0xfL<<28) +#define BCE_PCICFG_MISC_CONFIG_ASIC_REV (0xffffL<<16) + +#define BCE_PCICFG_MISC_STATUS 0x0000006c +#define BCE_PCICFG_MISC_STATUS_INTA_VALUE (1L<<0) +#define BCE_PCICFG_MISC_STATUS_32BIT_DET (1L<<1) +#define BCE_PCICFG_MISC_STATUS_M66EN (1L<<2) +#define BCE_PCICFG_MISC_STATUS_PCIX_DET (1L<<3) +#define BCE_PCICFG_MISC_STATUS_PCIX_SPEED (0x3L<<4) +#define BCE_PCICFG_MISC_STATUS_PCIX_SPEED_66 (0L<<4) +#define BCE_PCICFG_MISC_STATUS_PCIX_SPEED_100 (1L<<4) +#define BCE_PCICFG_MISC_STATUS_PCIX_SPEED_133 (2L<<4) +#define BCE_PCICFG_MISC_STATUS_PCIX_SPEED_PCI_MODE (3L<<4) + +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS 0x00000070 +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET (0xfL<<0) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_32MHZ (0L<<0) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_38MHZ (1L<<0) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_48MHZ (2L<<0) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_55MHZ (3L<<0) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_66MHZ (4L<<0) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_80MHZ (5L<<0) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_95MHZ (6L<<0) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_133MHZ (7L<<0) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_LOW (0xfL<<0) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_CORE_CLK_DISABLE (1L<<6) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_CORE_CLK_ALT (1L<<7) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_CORE_CLK_ALT_SRC (0x7L<<8) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_CORE_CLK_ALT_SRC_UNDEF (0L<<8) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_CORE_CLK_ALT_SRC_12 (1L<<8) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_CORE_CLK_ALT_SRC_6 (2L<<8) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_CORE_CLK_ALT_SRC_62 (4L<<8) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PLAY_DEAD (1L<<11) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_CORE_CLK_PLL_SPEED (0xfL<<12) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_CORE_CLK_PLL_SPEED_100 (0L<<12) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_CORE_CLK_PLL_SPEED_80 (1L<<12) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_CORE_CLK_PLL_SPEED_50 (2L<<12) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_CORE_CLK_PLL_SPEED_40 (4L<<12) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_CORE_CLK_PLL_SPEED_25 (8L<<12) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_CORE_CLK_PLL_STOP (1L<<16) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_PLL_STOP (1L<<17) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_RESERVED_18 (1L<<18) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_USE_SPD_DET (1L<<19) +#define BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_RESERVED (0xfffL<<20) + +#define BCE_PCICFG_REG_WINDOW_ADDRESS 0x00000078 +#define BCE_PCICFG_REG_WINDOW 0x00000080 +#define BCE_PCICFG_INT_ACK_CMD 0x00000084 +#define BCE_PCICFG_INT_ACK_CMD_INDEX (0xffffL<<0) +#define BCE_PCICFG_INT_ACK_CMD_INDEX_VALID (1L<<16) +#define BCE_PCICFG_INT_ACK_CMD_USE_INT_HC_PARAM (1L<<17) +#define BCE_PCICFG_INT_ACK_CMD_MASK_INT (1L<<18) + +#define BCE_PCICFG_STATUS_BIT_SET_CMD 0x00000088 +#define BCE_PCICFG_STATUS_BIT_CLEAR_CMD 0x0000008c +#define BCE_PCICFG_MAILBOX_QUEUE_ADDR 0x00000090 +#define BCE_PCICFG_MAILBOX_QUEUE_DATA 0x00000094 + + +/* + * pci_reg definition + * offset: 0x400 + */ +#define BCE_PCI_GRC_WINDOW_ADDR 0x00000400 +#define BCE_PCI_GRC_WINDOW_ADDR_PCI_GRC_WINDOW_ADDR_VALUE (0x3ffffL<<8) + +#define BCE_PCI_CONFIG_1 0x00000404 +#define BCE_PCI_CONFIG_1_READ_BOUNDARY (0x7L<<8) +#define BCE_PCI_CONFIG_1_READ_BOUNDARY_OFF (0L<<8) +#define BCE_PCI_CONFIG_1_READ_BOUNDARY_16 (1L<<8) +#define BCE_PCI_CONFIG_1_READ_BOUNDARY_32 (2L<<8) +#define BCE_PCI_CONFIG_1_READ_BOUNDARY_64 (3L<<8) +#define BCE_PCI_CONFIG_1_READ_BOUNDARY_128 (4L<<8) +#define BCE_PCI_CONFIG_1_READ_BOUNDARY_256 (5L<<8) +#define BCE_PCI_CONFIG_1_READ_BOUNDARY_512 (6L<<8) +#define BCE_PCI_CONFIG_1_READ_BOUNDARY_1024 (7L<<8) +#define BCE_PCI_CONFIG_1_WRITE_BOUNDARY (0x7L<<11) +#define BCE_PCI_CONFIG_1_WRITE_BOUNDARY_OFF (0L<<11) +#define BCE_PCI_CONFIG_1_WRITE_BOUNDARY_16 (1L<<11) +#define BCE_PCI_CONFIG_1_WRITE_BOUNDARY_32 (2L<<11) +#define BCE_PCI_CONFIG_1_WRITE_BOUNDARY_64 (3L<<11) +#define BCE_PCI_CONFIG_1_WRITE_BOUNDARY_128 (4L<<11) +#define BCE_PCI_CONFIG_1_WRITE_BOUNDARY_256 (5L<<11) +#define BCE_PCI_CONFIG_1_WRITE_BOUNDARY_512 (6L<<11) +#define BCE_PCI_CONFIG_1_WRITE_BOUNDARY_1024 (7L<<11) + +#define BCE_PCI_CONFIG_2 0x00000408 +#define BCE_PCI_CONFIG_2_BAR1_SIZE (0xfL<<0) +#define BCE_PCI_CONFIG_2_BAR1_SIZE_DISABLED (0L<<0) +#define BCE_PCI_CONFIG_2_BAR1_SIZE_64K (1L<<0) +#define BCE_PCI_CONFIG_2_BAR1_SIZE_128K (2L<<0) +#define BCE_PCI_CONFIG_2_BAR1_SIZE_256K (3L<<0) +#define BCE_PCI_CONFIG_2_BAR1_SIZE_512K (4L<<0) +#define BCE_PCI_CONFIG_2_BAR1_SIZE_1M (5L<<0) +#define BCE_PCI_CONFIG_2_BAR1_SIZE_2M (6L<<0) +#define BCE_PCI_CONFIG_2_BAR1_SIZE_4M (7L<<0) +#define BCE_PCI_CONFIG_2_BAR1_SIZE_8M (8L<<0) +#define BCE_PCI_CONFIG_2_BAR1_SIZE_16M (9L<<0) +#define BCE_PCI_CONFIG_2_BAR1_SIZE_32M (10L<<0) +#define BCE_PCI_CONFIG_2_BAR1_SIZE_64M (11L<<0) +#define BCE_PCI_CONFIG_2_BAR1_SIZE_128M (12L<<0) +#define BCE_PCI_CONFIG_2_BAR1_SIZE_256M (13L<<0) +#define BCE_PCI_CONFIG_2_BAR1_SIZE_512M (14L<<0) +#define BCE_PCI_CONFIG_2_BAR1_SIZE_1G (15L<<0) +#define BCE_PCI_CONFIG_2_BAR1_64ENA (1L<<4) +#define BCE_PCI_CONFIG_2_EXP_ROM_RETRY (1L<<5) +#define BCE_PCI_CONFIG_2_CFG_CYCLE_RETRY (1L<<6) +#define BCE_PCI_CONFIG_2_FIRST_CFG_DONE (1L<<7) +#define BCE_PCI_CONFIG_2_EXP_ROM_SIZE (0xffL<<8) +#define BCE_PCI_CONFIG_2_EXP_ROM_SIZE_DISABLED (0L<<8) +#define BCE_PCI_CONFIG_2_EXP_ROM_SIZE_1K (1L<<8) +#define BCE_PCI_CONFIG_2_EXP_ROM_SIZE_2K (2L<<8) +#define BCE_PCI_CONFIG_2_EXP_ROM_SIZE_4K (3L<<8) +#define BCE_PCI_CONFIG_2_EXP_ROM_SIZE_8K (4L<<8) +#define BCE_PCI_CONFIG_2_EXP_ROM_SIZE_16K (5L<<8) +#define BCE_PCI_CONFIG_2_EXP_ROM_SIZE_32K (6L<<8) +#define BCE_PCI_CONFIG_2_EXP_ROM_SIZE_64K (7L<<8) +#define BCE_PCI_CONFIG_2_EXP_ROM_SIZE_128K (8L<<8) +#define BCE_PCI_CONFIG_2_EXP_ROM_SIZE_256K (9L<<8) +#define BCE_PCI_CONFIG_2_EXP_ROM_SIZE_512K (10L<<8) +#define BCE_PCI_CONFIG_2_EXP_ROM_SIZE_1M (11L<<8) +#define BCE_PCI_CONFIG_2_EXP_ROM_SIZE_2M (12L<<8) +#define BCE_PCI_CONFIG_2_EXP_ROM_SIZE_4M (13L<<8) +#define BCE_PCI_CONFIG_2_EXP_ROM_SIZE_8M (14L<<8) +#define BCE_PCI_CONFIG_2_EXP_ROM_SIZE_16M (15L<<8) +#define BCE_PCI_CONFIG_2_MAX_SPLIT_LIMIT (0x1fL<<16) +#define BCE_PCI_CONFIG_2_MAX_READ_LIMIT (0x3L<<21) +#define BCE_PCI_CONFIG_2_MAX_READ_LIMIT_512 (0L<<21) +#define BCE_PCI_CONFIG_2_MAX_READ_LIMIT_1K (1L<<21) +#define BCE_PCI_CONFIG_2_MAX_READ_LIMIT_2K (2L<<21) +#define BCE_PCI_CONFIG_2_MAX_READ_LIMIT_4K (3L<<21) +#define BCE_PCI_CONFIG_2_FORCE_32_BIT_MSTR (1L<<23) +#define BCE_PCI_CONFIG_2_FORCE_32_BIT_TGT (1L<<24) +#define BCE_PCI_CONFIG_2_KEEP_REQ_ASSERT (1L<<25) + +#define BCE_PCI_CONFIG_3 0x0000040c +#define BCE_PCI_CONFIG_3_STICKY_BYTE (0xffL<<0) +#define BCE_PCI_CONFIG_3_FORCE_PME (1L<<24) +#define BCE_PCI_CONFIG_3_PME_STATUS (1L<<25) +#define BCE_PCI_CONFIG_3_PME_ENABLE (1L<<26) +#define BCE_PCI_CONFIG_3_PM_STATE (0x3L<<27) +#define BCE_PCI_CONFIG_3_VAUX_PRESET (1L<<30) +#define BCE_PCI_CONFIG_3_PCI_POWER (1L<<31) + +#define BCE_PCI_PM_DATA_A 0x00000410 +#define BCE_PCI_PM_DATA_A_PM_DATA_0_PRG (0xffL<<0) +#define BCE_PCI_PM_DATA_A_PM_DATA_1_PRG (0xffL<<8) +#define BCE_PCI_PM_DATA_A_PM_DATA_2_PRG (0xffL<<16) +#define BCE_PCI_PM_DATA_A_PM_DATA_3_PRG (0xffL<<24) + +#define BCE_PCI_PM_DATA_B 0x00000414 +#define BCE_PCI_PM_DATA_B_PM_DATA_4_PRG (0xffL<<0) +#define BCE_PCI_PM_DATA_B_PM_DATA_5_PRG (0xffL<<8) +#define BCE_PCI_PM_DATA_B_PM_DATA_6_PRG (0xffL<<16) +#define BCE_PCI_PM_DATA_B_PM_DATA_7_PRG (0xffL<<24) + +#define BCE_PCI_SWAP_DIAG0 0x00000418 +#define BCE_PCI_SWAP_DIAG1 0x0000041c +#define BCE_PCI_EXP_ROM_ADDR 0x00000420 +#define BCE_PCI_EXP_ROM_ADDR_ADDRESS (0x3fffffL<<2) +#define BCE_PCI_EXP_ROM_ADDR_REQ (1L<<31) + +#define BCE_PCI_EXP_ROM_DATA 0x00000424 +#define BCE_PCI_VPD_INTF 0x00000428 +#define BCE_PCI_VPD_INTF_INTF_REQ (1L<<0) + +#define BCE_PCI_VPD_ADDR_FLAG 0x0000042c +#define BCE_PCI_VPD_ADDR_FLAG_ADDRESS (0x1fff<<2) +#define BCE_PCI_VPD_ADDR_FLAG_WR (1<<15) + +#define BCE_PCI_VPD_DATA 0x00000430 +#define BCE_PCI_ID_VAL1 0x00000434 +#define BCE_PCI_ID_VAL1_DEVICE_ID (0xffffL<<0) +#define BCE_PCI_ID_VAL1_VENDOR_ID (0xffffL<<16) + +#define BCE_PCI_ID_VAL2 0x00000438 +#define BCE_PCI_ID_VAL2_SUBSYSTEM_VENDOR_ID (0xffffL<<0) +#define BCE_PCI_ID_VAL2_SUBSYSTEM_ID (0xffffL<<16) + +#define BCE_PCI_ID_VAL3 0x0000043c +#define BCE_PCI_ID_VAL3_CLASS_CODE (0xffffffL<<0) +#define BCE_PCI_ID_VAL3_REVISION_ID (0xffL<<24) + +#define BCE_PCI_ID_VAL4 0x00000440 +#define BCE_PCI_ID_VAL4_CAP_ENA (0xfL<<0) +#define BCE_PCI_ID_VAL4_CAP_ENA_0 (0L<<0) +#define BCE_PCI_ID_VAL4_CAP_ENA_1 (1L<<0) +#define BCE_PCI_ID_VAL4_CAP_ENA_2 (2L<<0) +#define BCE_PCI_ID_VAL4_CAP_ENA_3 (3L<<0) +#define BCE_PCI_ID_VAL4_CAP_ENA_4 (4L<<0) +#define BCE_PCI_ID_VAL4_CAP_ENA_5 (5L<<0) +#define BCE_PCI_ID_VAL4_CAP_ENA_6 (6L<<0) +#define BCE_PCI_ID_VAL4_CAP_ENA_7 (7L<<0) +#define BCE_PCI_ID_VAL4_CAP_ENA_8 (8L<<0) +#define BCE_PCI_ID_VAL4_CAP_ENA_9 (9L<<0) +#define BCE_PCI_ID_VAL4_CAP_ENA_10 (10L<<0) +#define BCE_PCI_ID_VAL4_CAP_ENA_11 (11L<<0) +#define BCE_PCI_ID_VAL4_CAP_ENA_12 (12L<<0) +#define BCE_PCI_ID_VAL4_CAP_ENA_13 (13L<<0) +#define BCE_PCI_ID_VAL4_CAP_ENA_14 (14L<<0) +#define BCE_PCI_ID_VAL4_CAP_ENA_15 (15L<<0) +#define BCE_PCI_ID_VAL4_PM_SCALE_PRG (0x3L<<6) +#define BCE_PCI_ID_VAL4_PM_SCALE_PRG_0 (0L<<6) +#define BCE_PCI_ID_VAL4_PM_SCALE_PRG_1 (1L<<6) +#define BCE_PCI_ID_VAL4_PM_SCALE_PRG_2 (2L<<6) +#define BCE_PCI_ID_VAL4_PM_SCALE_PRG_3 (3L<<6) +#define BCE_PCI_ID_VAL4_MSI_LIMIT (0x7L<<9) +#define BCE_PCI_ID_VAL4_MSI_ADVERTIZE (0x7L<<12) +#define BCE_PCI_ID_VAL4_MSI_ENABLE (1L<<15) +#define BCE_PCI_ID_VAL4_MAX_64_ADVERTIZE (1L<<16) +#define BCE_PCI_ID_VAL4_MAX_133_ADVERTIZE (1L<<17) +#define BCE_PCI_ID_VAL4_MAX_MEM_READ_SIZE (0x3L<<21) +#define BCE_PCI_ID_VAL4_MAX_SPLIT_SIZE (0x7L<<23) +#define BCE_PCI_ID_VAL4_MAX_CUMULATIVE_SIZE (0x7L<<26) + +#define BCE_PCI_ID_VAL5 0x00000444 +#define BCE_PCI_ID_VAL5_D1_SUPPORT (1L<<0) +#define BCE_PCI_ID_VAL5_D2_SUPPORT (1L<<1) +#define BCE_PCI_ID_VAL5_PME_IN_D0 (1L<<2) +#define BCE_PCI_ID_VAL5_PME_IN_D1 (1L<<3) +#define BCE_PCI_ID_VAL5_PME_IN_D2 (1L<<4) +#define BCE_PCI_ID_VAL5_PME_IN_D3_HOT (1L<<5) + +#define BCE_PCI_PCIX_EXTENDED_STATUS 0x00000448 +#define BCE_PCI_PCIX_EXTENDED_STATUS_NO_SNOOP (1L<<8) +#define BCE_PCI_PCIX_EXTENDED_STATUS_LONG_BURST (1L<<9) +#define BCE_PCI_PCIX_EXTENDED_STATUS_SPLIT_COMP_MSG_CLASS (0xfL<<16) +#define BCE_PCI_PCIX_EXTENDED_STATUS_SPLIT_COMP_MSG_IDX (0xffL<<24) + +#define BCE_PCI_ID_VAL6 0x0000044c +#define BCE_PCI_ID_VAL6_MAX_LAT (0xffL<<0) +#define BCE_PCI_ID_VAL6_MIN_GNT (0xffL<<8) +#define BCE_PCI_ID_VAL6_BIST (0xffL<<16) + +#define BCE_PCI_MSI_DATA 0x00000450 +#define BCE_PCI_MSI_DATA_PCI_MSI_DATA (0xffffL<<0) + +#define BCE_PCI_MSI_ADDR_H 0x00000454 +#define BCE_PCI_MSI_ADDR_L 0x00000458 + + +/* + * misc_reg definition + * offset: 0x800 + */ +#define BCE_MISC_COMMAND 0x00000800 +#define BCE_MISC_COMMAND_ENABLE_ALL (1L<<0) +#define BCE_MISC_COMMAND_DISABLE_ALL (1L<<1) +#define BCE_MISC_COMMAND_SW_RESET (1L<<4) +#define BCE_MISC_COMMAND_POR_RESET (1L<<5) +#define BCE_MISC_COMMAND_HD_RESET (1L<<6) +#define BCE_MISC_COMMAND_CMN_SW_RESET (1L<<7) +#define BCE_MISC_COMMAND_PAR_ERROR (1L<<8) +#define BCE_MISC_COMMAND_CS16_ERR (1L<<9) +#define BCE_MISC_COMMAND_CS16_ERR_LOC (0xfL<<12) +#define BCE_MISC_COMMAND_PAR_ERR_RAM (0x7fL<<16) +#define BCE_MISC_COMMAND_POWERDOWN_EVENT (1L<<23) +#define BCE_MISC_COMMAND_SW_SHUTDOWN (1L<<24) +#define BCE_MISC_COMMAND_SHUTDOWN_EN (1L<<25) +#define BCE_MISC_COMMAND_DINTEG_ATTN_EN (1L<<26) +#define BCE_MISC_COMMAND_PCIE_LINK_IN_L23 (1L<<27) +#define BCE_MISC_COMMAND_PCIE_DIS (1L<<28) + +#define BCE_MISC_CFG 0x00000804 +#define BCE_MISC_CFG_GRC_TMOUT (1L<<0) +#define BCE_MISC_CFG_NVM_WR_EN (0x3L<<1) +#define BCE_MISC_CFG_NVM_WR_EN_PROTECT (0L<<1) +#define BCE_MISC_CFG_NVM_WR_EN_PCI (1L<<1) +#define BCE_MISC_CFG_NVM_WR_EN_ALLOW (2L<<1) +#define BCE_MISC_CFG_NVM_WR_EN_ALLOW2 (3L<<1) +#define BCE_MISC_CFG_BIST_EN (1L<<3) +#define BCE_MISC_CFG_CK25_OUT_ALT_SRC (1L<<4) +#define BCE_MISC_CFG_RESERVED5_TE (1L<<5) +#define BCE_MISC_CFG_RESERVED6_TE (1L<<6) +#define BCE_MISC_CFG_CLK_CTL_OVERRIDE (1L<<7) +#define BCE_MISC_CFG_LEDMODE (0x7L<<8) +#define BCE_MISC_CFG_LEDMODE_MAC (0L<<8) +#define BCE_MISC_CFG_LEDMODE_PHY1_TE (1L<<8) +#define BCE_MISC_CFG_LEDMODE_PHY2_TE (2L<<8) +#define BCE_MISC_CFG_LEDMODE_PHY3_TE (3L<<8) +#define BCE_MISC_CFG_LEDMODE_PHY4_TE (4L<<8) +#define BCE_MISC_CFG_LEDMODE_PHY5_TE (5L<<8) +#define BCE_MISC_CFG_LEDMODE_PHY6_TE (6L<<8) +#define BCE_MISC_CFG_LEDMODE_PHY7_TE (7L<<8) +#define BCE_MISC_CFG_MCP_GRC_TMOUT_TE (1L<<11) +#define BCE_MISC_CFG_DBU_GRC_TMOUT_TE (1L<<12) +#define BCE_MISC_CFG_LEDMODE_XI (0xfL<<8) +#define BCE_MISC_CFG_LEDMODE_MAC_XI (0L<<8) +#define BCE_MISC_CFG_LEDMODE_PHY1_XI (1L<<8) +#define BCE_MISC_CFG_LEDMODE_PHY2_XI (2L<<8) +#define BCE_MISC_CFG_LEDMODE_PHY3_XI (3L<<8) +#define BCE_MISC_CFG_LEDMODE_MAC2_XI (4L<<8) +#define BCE_MISC_CFG_LEDMODE_PHY4_XI (5L<<8) +#define BCE_MISC_CFG_LEDMODE_PHY5_XI (6L<<8) +#define BCE_MISC_CFG_LEDMODE_PHY6_XI (7L<<8) +#define BCE_MISC_CFG_LEDMODE_MAC3_XI (8L<<8) +#define BCE_MISC_CFG_LEDMODE_PHY7_XI (9L<<8) +#define BCE_MISC_CFG_LEDMODE_PHY8_XI (10L<<8) +#define BCE_MISC_CFG_LEDMODE_PHY9_XI (11L<<8) +#define BCE_MISC_CFG_LEDMODE_MAC4_XI (12L<<8) +#define BCE_MISC_CFG_LEDMODE_PHY10_XI (13L<<8) +#define BCE_MISC_CFG_LEDMODE_PHY11_XI (14L<<8) +#define BCE_MISC_CFG_LEDMODE_UNUSED_XI (15L<<8) +#define BCE_MISC_CFG_PORT_SELECT_XI (1L<<13) +#define BCE_MISC_CFG_PARITY_MODE_XI (1L<<14) + +#define BCE_MISC_ID 0x00000808 +#define BCE_MISC_ID_BOND_ID (0xfL<<0) +#define BCE_MISC_ID_BOND_ID_X (0L<<0) +#define BCE_MISC_ID_BOND_ID_C (3L<<0) +#define BCE_MISC_ID_BOND_ID_S (12L<<0) +#define BCE_MISC_ID_CHIP_METAL (0xffL<<4) +#define BCE_MISC_ID_CHIP_REV (0xfL<<12) +#define BCE_MISC_ID_CHIP_NUM (0xffffL<<16) + +#define BCE_MISC_ENABLE_STATUS_BITS 0x0000080c +#define BCE_MISC_ENABLE_STATUS_BITS_TX_SCHEDULER_ENABLE (1L<<0) +#define BCE_MISC_ENABLE_STATUS_BITS_TX_BD_READ_ENABLE (1L<<1) +#define BCE_MISC_ENABLE_STATUS_BITS_TX_BD_CACHE_ENABLE (1L<<2) +#define BCE_MISC_ENABLE_STATUS_BITS_TX_PROCESSOR_ENABLE (1L<<3) +#define BCE_MISC_ENABLE_STATUS_BITS_TX_DMA_ENABLE (1L<<4) +#define BCE_MISC_ENABLE_STATUS_BITS_TX_PATCHUP_ENABLE (1L<<5) +#define BCE_MISC_ENABLE_STATUS_BITS_TX_PAYLOAD_Q_ENABLE (1L<<6) +#define BCE_MISC_ENABLE_STATUS_BITS_TX_HEADER_Q_ENABLE (1L<<7) +#define BCE_MISC_ENABLE_STATUS_BITS_TX_ASSEMBLER_ENABLE (1L<<8) +#define BCE_MISC_ENABLE_STATUS_BITS_EMAC_ENABLE (1L<<9) +#define BCE_MISC_ENABLE_STATUS_BITS_RX_PARSER_MAC_ENABLE (1L<<10) +#define BCE_MISC_ENABLE_STATUS_BITS_RX_PARSER_CATCHUP_ENABLE (1L<<11) +#define BCE_MISC_ENABLE_STATUS_BITS_RX_MBUF_ENABLE (1L<<12) +#define BCE_MISC_ENABLE_STATUS_BITS_RX_LOOKUP_ENABLE (1L<<13) +#define BCE_MISC_ENABLE_STATUS_BITS_RX_PROCESSOR_ENABLE (1L<<14) +#define BCE_MISC_ENABLE_STATUS_BITS_RX_V2P_ENABLE (1L<<15) +#define BCE_MISC_ENABLE_STATUS_BITS_RX_BD_CACHE_ENABLE (1L<<16) +#define BCE_MISC_ENABLE_STATUS_BITS_RX_DMA_ENABLE (1L<<17) +#define BCE_MISC_ENABLE_STATUS_BITS_COMPLETION_ENABLE (1L<<18) +#define BCE_MISC_ENABLE_STATUS_BITS_HOST_COALESCE_ENABLE (1L<<19) +#define BCE_MISC_ENABLE_STATUS_BITS_MAILBOX_QUEUE_ENABLE (1L<<20) +#define BCE_MISC_ENABLE_STATUS_BITS_CONTEXT_ENABLE (1L<<21) +#define BCE_MISC_ENABLE_STATUS_BITS_CMD_SCHEDULER_ENABLE (1L<<22) +#define BCE_MISC_ENABLE_STATUS_BITS_CMD_PROCESSOR_ENABLE (1L<<23) +#define BCE_MISC_ENABLE_STATUS_BITS_MGMT_PROCESSOR_ENABLE (1L<<24) +#define BCE_MISC_ENABLE_STATUS_BITS_TIMER_ENABLE (1L<<25) +#define BCE_MISC_ENABLE_STATUS_BITS_DMA_ENGINE_ENABLE (1L<<26) +#define BCE_MISC_ENABLE_STATUS_BITS_UMP_ENABLE (1L<<27) +#define BCE_MISC_ENABLE_STATUS_BITS_RV2P_CMD_SCHEDULER_ENABLE (1L<<28) +#define BCE_MISC_ENABLE_STATUS_BITS_RSVD_FUTURE_ENABLE (0x7L<<29) + +#define BCE_MISC_ENABLE_SET_BITS 0x00000810 +#define BCE_MISC_ENABLE_SET_BITS_TX_SCHEDULER_ENABLE (1L<<0) +#define BCE_MISC_ENABLE_SET_BITS_TX_BD_READ_ENABLE (1L<<1) +#define BCE_MISC_ENABLE_SET_BITS_TX_BD_CACHE_ENABLE (1L<<2) +#define BCE_MISC_ENABLE_SET_BITS_TX_PROCESSOR_ENABLE (1L<<3) +#define BCE_MISC_ENABLE_SET_BITS_TX_DMA_ENABLE (1L<<4) +#define BCE_MISC_ENABLE_SET_BITS_TX_PATCHUP_ENABLE (1L<<5) +#define BCE_MISC_ENABLE_SET_BITS_TX_PAYLOAD_Q_ENABLE (1L<<6) +#define BCE_MISC_ENABLE_SET_BITS_TX_HEADER_Q_ENABLE (1L<<7) +#define BCE_MISC_ENABLE_SET_BITS_TX_ASSEMBLER_ENABLE (1L<<8) +#define BCE_MISC_ENABLE_SET_BITS_EMAC_ENABLE (1L<<9) +#define BCE_MISC_ENABLE_SET_BITS_RX_PARSER_MAC_ENABLE (1L<<10) +#define BCE_MISC_ENABLE_SET_BITS_RX_PARSER_CATCHUP_ENABLE (1L<<11) +#define BCE_MISC_ENABLE_SET_BITS_RX_MBUF_ENABLE (1L<<12) +#define BCE_MISC_ENABLE_SET_BITS_RX_LOOKUP_ENABLE (1L<<13) +#define BCE_MISC_ENABLE_SET_BITS_RX_PROCESSOR_ENABLE (1L<<14) +#define BCE_MISC_ENABLE_SET_BITS_RX_V2P_ENABLE (1L<<15) +#define BCE_MISC_ENABLE_SET_BITS_RX_BD_CACHE_ENABLE (1L<<16) +#define BCE_MISC_ENABLE_SET_BITS_RX_DMA_ENABLE (1L<<17) +#define BCE_MISC_ENABLE_SET_BITS_COMPLETION_ENABLE (1L<<18) +#define BCE_MISC_ENABLE_SET_BITS_HOST_COALESCE_ENABLE (1L<<19) +#define BCE_MISC_ENABLE_SET_BITS_MAILBOX_QUEUE_ENABLE (1L<<20) +#define BCE_MISC_ENABLE_SET_BITS_CONTEXT_ENABLE (1L<<21) +#define BCE_MISC_ENABLE_SET_BITS_CMD_SCHEDULER_ENABLE (1L<<22) +#define BCE_MISC_ENABLE_SET_BITS_CMD_PROCESSOR_ENABLE (1L<<23) +#define BCE_MISC_ENABLE_SET_BITS_MGMT_PROCESSOR_ENABLE (1L<<24) +#define BCE_MISC_ENABLE_SET_BITS_TIMER_ENABLE (1L<<25) +#define BCE_MISC_ENABLE_SET_BITS_DMA_ENGINE_ENABLE (1L<<26) +#define BCE_MISC_ENABLE_SET_BITS_UMP_ENABLE (1L<<27) +#define BCE_MISC_ENABLE_SET_BITS_RV2P_CMD_SCHEDULER_ENABLE (1L<<28) +#define BCE_MISC_ENABLE_SET_BITS_RSVD_FUTURE_ENABLE (0x7L<<29) + +#define BCE_MISC_ENABLE_DEFAULT 0x05ffffff +#define BCE_MISC_ENABLE_DEFAULT_XI 0x17ffffff + +#define BCE_MISC_ENABLE_CLR_BITS 0x00000814 +#define BCE_MISC_ENABLE_CLR_BITS_TX_SCHEDULER_ENABLE (1L<<0) +#define BCE_MISC_ENABLE_CLR_BITS_TX_BD_READ_ENABLE (1L<<1) +#define BCE_MISC_ENABLE_CLR_BITS_TX_BD_CACHE_ENABLE (1L<<2) +#define BCE_MISC_ENABLE_CLR_BITS_TX_PROCESSOR_ENABLE (1L<<3) +#define BCE_MISC_ENABLE_CLR_BITS_TX_DMA_ENABLE (1L<<4) +#define BCE_MISC_ENABLE_CLR_BITS_TX_PATCHUP_ENABLE (1L<<5) +#define BCE_MISC_ENABLE_CLR_BITS_TX_PAYLOAD_Q_ENABLE (1L<<6) +#define BCE_MISC_ENABLE_CLR_BITS_TX_HEADER_Q_ENABLE (1L<<7) +#define BCE_MISC_ENABLE_CLR_BITS_TX_ASSEMBLER_ENABLE (1L<<8) +#define BCE_MISC_ENABLE_CLR_BITS_EMAC_ENABLE (1L<<9) +#define BCE_MISC_ENABLE_CLR_BITS_RX_PARSER_MAC_ENABLE (1L<<10) +#define BCE_MISC_ENABLE_CLR_BITS_RX_PARSER_CATCHUP_ENABLE (1L<<11) +#define BCE_MISC_ENABLE_CLR_BITS_RX_MBUF_ENABLE (1L<<12) +#define BCE_MISC_ENABLE_CLR_BITS_RX_LOOKUP_ENABLE (1L<<13) +#define BCE_MISC_ENABLE_CLR_BITS_RX_PROCESSOR_ENABLE (1L<<14) +#define BCE_MISC_ENABLE_CLR_BITS_RX_V2P_ENABLE (1L<<15) +#define BCE_MISC_ENABLE_CLR_BITS_RX_BD_CACHE_ENABLE (1L<<16) +#define BCE_MISC_ENABLE_CLR_BITS_RX_DMA_ENABLE (1L<<17) +#define BCE_MISC_ENABLE_CLR_BITS_COMPLETION_ENABLE (1L<<18) +#define BCE_MISC_ENABLE_CLR_BITS_HOST_COALESCE_ENABLE (1L<<19) +#define BCE_MISC_ENABLE_CLR_BITS_MAILBOX_QUEUE_ENABLE (1L<<20) +#define BCE_MISC_ENABLE_CLR_BITS_CONTEXT_ENABLE (1L<<21) +#define BCE_MISC_ENABLE_CLR_BITS_CMD_SCHEDULER_ENABLE (1L<<22) +#define BCE_MISC_ENABLE_CLR_BITS_CMD_PROCESSOR_ENABLE (1L<<23) +#define BCE_MISC_ENABLE_CLR_BITS_MGMT_PROCESSOR_ENABLE (1L<<24) +#define BCE_MISC_ENABLE_CLR_BITS_TIMER_ENABLE (1L<<25) +#define BCE_MISC_ENABLE_CLR_BITS_DMA_ENGINE_ENABLE (1L<<26) +#define BCE_MISC_ENABLE_CLR_BITS_UMP_ENABLE (1L<<27) +#define BCE_MISC_ENABLE_CLR_BITS_RV2P_CMD_SCHEDULER_ENABLE (1L<<28) +#define BCE_MISC_ENABLE_CLR_BITS_RSVD_FUTURE_ENABLE (0x7L<<29) +
+#define BCE_MISC_ENABLE_CLR_DEFAULT 0x17ffffff + +#define BCE_MISC_CLOCK_CONTROL_BITS 0x00000818 +#define BCE_MISC_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET (0xfL<<0) +#define BCE_MISC_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_32MHZ (0L<<0) +#define BCE_MISC_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_38MHZ (1L<<0) +#define BCE_MISC_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_48MHZ (2L<<0) +#define BCE_MISC_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_55MHZ (3L<<0) +#define BCE_MISC_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_66MHZ (4L<<0) +#define BCE_MISC_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_80MHZ (5L<<0) +#define BCE_MISC_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_95MHZ (6L<<0) +#define BCE_MISC_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_133MHZ (7L<<0) +#define BCE_MISC_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_LOW (0xfL<<0) +#define BCE_MISC_CLOCK_CONTROL_BITS_CORE_CLK_DISABLE (1L<<6) +#define BCE_MISC_CLOCK_CONTROL_BITS_CORE_CLK_ALT (1L<<7) +#define BCE_MISC_CLOCK_CONTROL_BITS_CORE_CLK_ALT_SRC (0x7L<<8) +#define BCE_MISC_CLOCK_CONTROL_BITS_CORE_CLK_ALT_SRC_UNDEF (0L<<8) +#define BCE_MISC_CLOCK_CONTROL_BITS_CORE_CLK_ALT_SRC_12 (1L<<8) +#define BCE_MISC_CLOCK_CONTROL_BITS_CORE_CLK_ALT_SRC_6 (2L<<8) +#define BCE_MISC_CLOCK_CONTROL_BITS_CORE_CLK_ALT_SRC_62 (4L<<8) +#define BCE_MISC_CLOCK_CONTROL_BITS_RESERVED0_XI (0x7L<<8) +#define BCE_MISC_CLOCK_CONTROL_BITS_MIN_POWER (1L<<11) +#define BCE_MISC_CLOCK_CONTROL_BITS_CORE_CLK_PLL_SPEED (0xfL<<12) +#define BCE_MISC_CLOCK_CONTROL_BITS_CORE_CLK_PLL_SPEED_100 (0L<<12) +#define BCE_MISC_CLOCK_CONTROL_BITS_CORE_CLK_PLL_SPEED_80 (1L<<12) +#define BCE_MISC_CLOCK_CONTROL_BITS_CORE_CLK_PLL_SPEED_50 (2L<<12) +#define BCE_MISC_CLOCK_CONTROL_BITS_CORE_CLK_PLL_SPEED_40 (4L<<12) +#define BCE_MISC_CLOCK_CONTROL_BITS_CORE_CLK_PLL_SPEED_25 (8L<<12) +#define BCE_MISC_CLOCK_CONTROL_BITS_RESERVED1_XI (0xfL<<12) +#define BCE_MISC_CLOCK_CONTROL_BITS_CORE_CLK_PLL_STOP (1L<<16) +#define BCE_MISC_CLOCK_CONTROL_BITS_RESERVED_17_TE (1L<<17) +#define BCE_MISC_CLOCK_CONTROL_BITS_RESERVED_18_TE (1L<<18) +#define BCE_MISC_CLOCK_CONTROL_BITS_RESERVED_19_TE (1L<<19) +#define BCE_MISC_CLOCK_CONTROL_BITS_RESERVED_TE (0xfffL<<20) +#define BCE_MISC_CLOCK_CONTROL_BITS_CORE_CLK_ALT_MGMT_XI (1L<<17) +#define BCE_MISC_CLOCK_CONTROL_BITS_RESERVED2_XI (0x3fL<<18) +#define BCE_MISC_CLOCK_CONTROL_BITS_CORE_CLK_PLL_VCO_XI (0x7L<<24) +#define BCE_MISC_CLOCK_CONTROL_BITS_RESERVED3_XI (1L<<27) +#define BCE_MISC_CLOCK_CONTROL_BITS_CORE_CLK_PLL_SPEED_XI (0xfL<<28) + +#define BCE_MISC_SPIO 0x0000081c +#define BCE_MISC_SPIO_VALUE (0xffL<<0) +#define BCE_MISC_SPIO_SET (0xffL<<8) +#define BCE_MISC_SPIO_CLR (0xffL<<16) +#define BCE_MISC_SPIO_FLOAT (0xffL<<24) + +#define BCE_MISC_SPIO_INT 0x00000820 +#define BCE_MISC_SPIO_INT_INT_STATE_TE (0xfL<<0) +#define BCE_MISC_SPIO_INT_OLD_VALUE_TE (0xfL<<8) +#define BCE_MISC_SPIO_INT_OLD_SET_TE (0xfL<<16) +#define BCE_MISC_SPIO_INT_OLD_CLR_TE (0xfL<<24) +#define BCE_MISC_SPIO_INT_INT_STATE_XI (0xffL<<0) +#define BCE_MISC_SPIO_INT_OLD_VALUE_XI (0xffL<<8) +#define BCE_MISC_SPIO_INT_OLD_SET_XI (0xffL<<16) +#define BCE_MISC_SPIO_INT_OLD_CLR_XI (0xffL<<24) + +#define BCE_MISC_CONFIG_LFSR 0x00000824 +#define BCE_MISC_CONFIG_LFSR_DIV (0xffffL<<0) + +#define BCE_MISC_LFSR_MASK_BITS 0x00000828 +#define BCE_MISC_LFSR_MASK_BITS_TX_SCHEDULER_ENABLE (1L<<0) +#define BCE_MISC_LFSR_MASK_BITS_TX_BD_READ_ENABLE (1L<<1) +#define BCE_MISC_LFSR_MASK_BITS_TX_BD_CACHE_ENABLE (1L<<2) +#define BCE_MISC_LFSR_MASK_BITS_TX_PROCESSOR_ENABLE (1L<<3) +#define BCE_MISC_LFSR_MASK_BITS_TX_DMA_ENABLE (1L<<4) +#define BCE_MISC_LFSR_MASK_BITS_TX_PATCHUP_ENABLE (1L<<5) +#define BCE_MISC_LFSR_MASK_BITS_TX_PAYLOAD_Q_ENABLE (1L<<6) +#define BCE_MISC_LFSR_MASK_BITS_TX_HEADER_Q_ENABLE (1L<<7) +#define BCE_MISC_LFSR_MASK_BITS_TX_ASSEMBLER_ENABLE (1L<<8) +#define BCE_MISC_LFSR_MASK_BITS_EMAC_ENABLE (1L<<9) +#define BCE_MISC_LFSR_MASK_BITS_RX_PARSER_MAC_ENABLE (1L<<10) +#define BCE_MISC_LFSR_MASK_BITS_RX_PARSER_CATCHUP_ENABLE (1L<<11) +#define BCE_MISC_LFSR_MASK_BITS_RX_MBUF_ENABLE (1L<<12) +#define BCE_MISC_LFSR_MASK_BITS_RX_LOOKUP_ENABLE (1L<<13) +#define BCE_MISC_LFSR_MASK_BITS_RX_PROCESSOR_ENABLE (1L<<14) +#define BCE_MISC_LFSR_MASK_BITS_RX_V2P_ENABLE (1L<<15) +#define BCE_MISC_LFSR_MASK_BITS_RX_BD_CACHE_ENABLE (1L<<16) +#define BCE_MISC_LFSR_MASK_BITS_RX_DMA_ENABLE (1L<<17) +#define BCE_MISC_LFSR_MASK_BITS_COMPLETION_ENABLE (1L<<18) +#define BCE_MISC_LFSR_MASK_BITS_HOST_COALESCE_ENABLE (1L<<19) +#define BCE_MISC_LFSR_MASK_BITS_MAILBOX_QUEUE_ENABLE (1L<<20) +#define BCE_MISC_LFSR_MASK_BITS_CONTEXT_ENABLE (1L<<21) +#define BCE_MISC_LFSR_MASK_BITS_CMD_SCHEDULER_ENABLE (1L<<22) +#define BCE_MISC_LFSR_MASK_BITS_CMD_PROCESSOR_ENABLE (1L<<23) +#define BCE_MISC_LFSR_MASK_BITS_MGMT_PROCESSOR_ENABLE (1L<<24) +#define BCE_MISC_LFSR_MASK_BITS_TIMER_ENABLE (1L<<25) +#define BCE_MISC_LFSR_MASK_BITS_DMA_ENGINE_ENABLE (1L<<26) +#define BCE_MISC_LFSR_MASK_BITS_UMP_ENABLE (1L<<27) +#define BCE_MISC_LFSR_MASK_BITS_RV2P_CMD_SCHEDULER_ENABLE (1L<<28) +#define BCE_MISC_LFSR_MASK_BITS_RSVD_FUTURE_ENABLE (0x7L<<29) + +#define BCE_MISC_ARB_REQ0 0x0000082c +#define BCE_MISC_ARB_REQ1 0x00000830 +#define BCE_MISC_ARB_REQ2 0x00000834 +#define BCE_MISC_ARB_REQ3 0x00000838 +#define BCE_MISC_ARB_REQ4 0x0000083c +#define BCE_MISC_ARB_FREE0 0x00000840 +#define BCE_MISC_ARB_FREE1 0x00000844 +#define BCE_MISC_ARB_FREE2 0x00000848 +#define BCE_MISC_ARB_FREE3 0x0000084c +#define BCE_MISC_ARB_FREE4 0x00000850 +#define BCE_MISC_ARB_REQ_STATUS0 0x00000854 +#define BCE_MISC_ARB_REQ_STATUS1 0x00000858 +#define BCE_MISC_ARB_REQ_STATUS2 0x0000085c +#define BCE_MISC_ARB_REQ_STATUS3 0x00000860 +#define BCE_MISC_ARB_REQ_STATUS4 0x00000864 +#define BCE_MISC_ARB_GNT0 0x00000868 +#define BCE_MISC_ARB_GNT0_0 (0x7L<<0) +#define BCE_MISC_ARB_GNT0_1 (0x7L<<4) +#define BCE_MISC_ARB_GNT0_2 (0x7L<<8) +#define BCE_MISC_ARB_GNT0_3 (0x7L<<12) +#define BCE_MISC_ARB_GNT0_4 (0x7L<<16) +#define BCE_MISC_ARB_GNT0_5 (0x7L<<20) +#define BCE_MISC_ARB_GNT0_6 (0x7L<<24) +#define BCE_MISC_ARB_GNT0_7 (0x7L<<28) + +#define BCE_MISC_ARB_GNT1 0x0000086c +#define BCE_MISC_ARB_GNT1_8 (0x7L<<0) +#define BCE_MISC_ARB_GNT1_9 (0x7L<<4) +#define BCE_MISC_ARB_GNT1_10 (0x7L<<8) +#define BCE_MISC_ARB_GNT1_11 (0x7L<<12) +#define BCE_MISC_ARB_GNT1_12 (0x7L<<16) +#define BCE_MISC_ARB_GNT1_13 (0x7L<<20) +#define BCE_MISC_ARB_GNT1_14 (0x7L<<24) +#define BCE_MISC_ARB_GNT1_15 (0x7L<<28) + +#define BCE_MISC_ARB_GNT2 0x00000870 +#define BCE_MISC_ARB_GNT2_16 (0x7L<<0) +#define BCE_MISC_ARB_GNT2_17 (0x7L<<4) +#define BCE_MISC_ARB_GNT2_18 (0x7L<<8) +#define BCE_MISC_ARB_GNT2_19 (0x7L<<12) +#define BCE_MISC_ARB_GNT2_20 (0x7L<<16) +#define BCE_MISC_ARB_GNT2_21 (0x7L<<20) +#define BCE_MISC_ARB_GNT2_22 (0x7L<<24) +#define BCE_MISC_ARB_GNT2_23 (0x7L<<28) + +#define BCE_MISC_ARB_GNT3 0x00000874 +#define BCE_MISC_ARB_GNT3_24 (0x7L<<0) +#define BCE_MISC_ARB_GNT3_25 (0x7L<<4) +#define BCE_MISC_ARB_GNT3_26 (0x7L<<8) +#define BCE_MISC_ARB_GNT3_27 (0x7L<<12) +#define BCE_MISC_ARB_GNT3_28 (0x7L<<16) +#define BCE_MISC_ARB_GNT3_29 (0x7L<<20) +#define BCE_MISC_ARB_GNT3_30 (0x7L<<24) +#define BCE_MISC_ARB_GNT3_31 (0x7L<<28) + +#define BCE_MISC_RESERVED1 0x00000878 +#define BCE_MISC_RESERVED1_MISC_RESERVED1_VALUE (0x3fL<<0) + +#define BCE_MISC_RESERVED2 0x0000087c +#define BCE_MISC_RESERVED2_PCIE_DIS (1L<<0) +#define BCE_MISC_RESERVED2_LINK_IN_L23 (1L<<1) + +#define BCE_MISC_SM_ASF_CONTROL 0x00000880 +#define BCE_MISC_SM_ASF_CONTROL_ASF_RST (1L<<0) +#define BCE_MISC_SM_ASF_CONTROL_TSC_EN (1L<<1) +#define BCE_MISC_SM_ASF_CONTROL_WG_TO (1L<<2) +#define BCE_MISC_SM_ASF_CONTROL_HB_TO (1L<<3) +#define BCE_MISC_SM_ASF_CONTROL_PA_TO (1L<<4) +#define BCE_MISC_SM_ASF_CONTROL_PL_TO (1L<<5) +#define BCE_MISC_SM_ASF_CONTROL_RT_TO (1L<<6) +#define BCE_MISC_SM_ASF_CONTROL_SMB_EVENT (1L<<7) +#define BCE_MISC_SM_ASF_CONTROL_STRETCH_EN (1L<<8) +#define BCE_MISC_SM_ASF_CONTROL_STRETCH_PULSE (1L<<9) +#define BCE_MISC_SM_ASF_CONTROL_RES (0x3L<<10) +#define BCE_MISC_SM_ASF_CONTROL_SMB_EN (1L<<12) +#define BCE_MISC_SM_ASF_CONTROL_SMB_BB_EN (1L<<13) +#define BCE_MISC_SM_ASF_CONTROL_SMB_NO_ADDR_FILT (1L<<14) +#define BCE_MISC_SM_ASF_CONTROL_SMB_AUTOREAD (1L<<15) +#define BCE_MISC_SM_ASF_CONTROL_NIC_SMB_ADDR1 (0x7fL<<16) +#define BCE_MISC_SM_ASF_CONTROL_NIC_SMB_ADDR2 (0x7fL<<23) +#define BCE_MISC_SM_ASF_CONTROL_EN_NIC_SMB_ADDR_0 (1L<<30) +#define BCE_MISC_SM_ASF_CONTROL_SMB_EARLY_ATTN (1L<<31) + +#define BCE_MISC_SMB_IN 0x00000884 +#define BCE_MISC_SMB_IN_DAT_IN (0xffL<<0) +#define BCE_MISC_SMB_IN_RDY (1L<<8) +#define BCE_MISC_SMB_IN_DONE (1L<<9) +#define BCE_MISC_SMB_IN_FIRSTBYTE (1L<<10) +#define BCE_MISC_SMB_IN_STATUS (0x7L<<11) +#define BCE_MISC_SMB_IN_STATUS_OK (0x0L<<11) +#define BCE_MISC_SMB_IN_STATUS_PEC (0x1L<<11) +#define BCE_MISC_SMB_IN_STATUS_OFLOW (0x2L<<11) +#define BCE_MISC_SMB_IN_STATUS_STOP (0x3L<<11) +#define BCE_MISC_SMB_IN_STATUS_TIMEOUT (0x4L<<11) + +#define BCE_MISC_SMB_OUT 0x00000888 +#define BCE_MISC_SMB_OUT_DAT_OUT (0xffL<<0) +#define BCE_MISC_SMB_OUT_RDY (1L<<8) +#define BCE_MISC_SMB_OUT_START (1L<<9) +#define BCE_MISC_SMB_OUT_LAST (1L<<10) +#define BCE_MISC_SMB_OUT_ACC_TYPE (1L<<11) +#define BCE_MISC_SMB_OUT_ENB_PEC (1L<<12) +#define BCE_MISC_SMB_OUT_GET_RX_LEN (1L<<13) +#define BCE_MISC_SMB_OUT_SMB_READ_LEN (0x3fL<<14) +#define BCE_MISC_SMB_OUT_SMB_OUT_STATUS (0xfL<<20) +#define BCE_MISC_SMB_OUT_SMB_OUT_STATUS_OK (0L<<20) +#define BCE_MISC_SMB_OUT_SMB_OUT_STATUS_FIRST_NACK (1L<<20) +#define BCE_MISC_SMB_OUT_SMB_OUT_STATUS_UFLOW (2L<<20) +#define BCE_MISC_SMB_OUT_SMB_OUT_STATUS_STOP (3L<<20) +#define BCE_MISC_SMB_OUT_SMB_OUT_STATUS_TIMEOUT (4L<<20) +#define BCE_MISC_SMB_OUT_SMB_OUT_STATUS_FIRST_LOST (5L<<20) +#define BCE_MISC_SMB_OUT_SMB_OUT_STATUS_BADACK (6L<<20) +#define BCE_MISC_SMB_OUT_SMB_OUT_STATUS_SUB_NACK (9L<<20) +#define BCE_MISC_SMB_OUT_SMB_OUT_STATUS_SUB_LOST (0xdL<<20) +#define BCE_MISC_SMB_OUT_SMB_OUT_SLAVEMODE (1L<<24) +#define BCE_MISC_SMB_OUT_SMB_OUT_DAT_EN (1L<<25) +#define BCE_MISC_SMB_OUT_SMB_OUT_DAT_IN (1L<<26) +#define BCE_MISC_SMB_OUT_SMB_OUT_CLK_EN (1L<<27) +#define BCE_MISC_SMB_OUT_SMB_OUT_CLK_IN (1L<<28) + +#define BCE_MISC_SMB_WATCHDOG 0x0000088c +#define BCE_MISC_SMB_WATCHDOG_WATCHDOG (0xffffL<<0) + +#define BCE_MISC_SMB_HEARTBEAT 0x00000890 +#define BCE_MISC_SMB_HEARTBEAT_HEARTBEAT (0xffffL<<0) + +#define BCE_MISC_SMB_POLL_ASF 0x00000894 +#define BCE_MISC_SMB_POLL_ASF_POLL_ASF (0xffffL<<0) + +#define BCE_MISC_SMB_POLL_LEGACY 0x00000898 +#define BCE_MISC_SMB_POLL_LEGACY_POLL_LEGACY (0xffffL<<0) + +#define BCE_MISC_SMB_RETRAN 0x0000089c +#define BCE_MISC_SMB_RETRAN_RETRAN (0xffL<<0) + +#define BCE_MISC_SMB_TIMESTAMP 0x000008a0 +#define BCE_MISC_SMB_TIMESTAMP_TIMESTAMP (0xffffffffL<<0) + +#define BCE_MISC_PERR_ENA0 0x000008a4 +#define BCE_MISC_PERR_ENA0_COM_MISC_CTXC (1L<<0) +#define BCE_MISC_PERR_ENA0_COM_MISC_REGF (1L<<1) +#define BCE_MISC_PERR_ENA0_COM_MISC_SCPAD (1L<<2) +#define BCE_MISC_PERR_ENA0_CP_MISC_CTXC (1L<<3) +#define BCE_MISC_PERR_ENA0_CP_MISC_REGF (1L<<4) +#define BCE_MISC_PERR_ENA0_CP_MISC_SCPAD (1L<<5) +#define BCE_MISC_PERR_ENA0_CS_MISC_TMEM (1L<<6) +#define BCE_MISC_PERR_ENA0_CTX_MISC_ACCM0 (1L<<7) +#define BCE_MISC_PERR_ENA0_CTX_MISC_ACCM1 (1L<<8) +#define BCE_MISC_PERR_ENA0_CTX_MISC_ACCM2 (1L<<9) +#define BCE_MISC_PERR_ENA0_CTX_MISC_ACCM3 (1L<<10) +#define BCE_MISC_PERR_ENA0_CTX_MISC_ACCM4 (1L<<11) +#define BCE_MISC_PERR_ENA0_CTX_MISC_ACCM5 (1L<<12) +#define BCE_MISC_PERR_ENA0_CTX_MISC_PGTBL (1L<<13) +#define BCE_MISC_PERR_ENA0_DMAE_MISC_DR0 (1L<<14) +#define BCE_MISC_PERR_ENA0_DMAE_MISC_DR1 (1L<<15) +#define BCE_MISC_PERR_ENA0_DMAE_MISC_DR2 (1L<<16) +#define BCE_MISC_PERR_ENA0_DMAE_MISC_DR3 (1L<<17) +#define BCE_MISC_PERR_ENA0_DMAE_MISC_DR4 (1L<<18) +#define BCE_MISC_PERR_ENA0_DMAE_MISC_DW0 (1L<<19) +#define BCE_MISC_PERR_ENA0_DMAE_MISC_DW1 (1L<<20) +#define BCE_MISC_PERR_ENA0_DMAE_MISC_DW2 (1L<<21) +#define BCE_MISC_PERR_ENA0_HC_MISC_DMA (1L<<22) +#define BCE_MISC_PERR_ENA0_MCP_MISC_REGF (1L<<23) +#define BCE_MISC_PERR_ENA0_MCP_MISC_SCPAD (1L<<24) +#define BCE_MISC_PERR_ENA0_MQ_MISC_CTX (1L<<25) +#define BCE_MISC_PERR_ENA0_RBDC_MISC (1L<<26) +#define BCE_MISC_PERR_ENA0_RBUF_MISC_MB (1L<<27) +#define BCE_MISC_PERR_ENA0_RBUF_MISC_PTR (1L<<28) +#define BCE_MISC_PERR_ENA0_RDE_MISC_RPC (1L<<29) +#define BCE_MISC_PERR_ENA0_RDE_MISC_RPM (1L<<30) +#define BCE_MISC_PERR_ENA0_RV2P_MISC_CB0REGS (1L<<31) +#define BCE_MISC_PERR_ENA0_COM_DMAE_PERR_EN_XI (1L<<0) +#define BCE_MISC_PERR_ENA0_CP_DMAE_PERR_EN_XI (1L<<1) +#define BCE_MISC_PERR_ENA0_RPM_ACPIBEMEM_PERR_EN_XI (1L<<2) +#define BCE_MISC_PERR_ENA0_CTX_USAGE_CNT_PERR_EN_XI (1L<<3) +#define BCE_MISC_PERR_ENA0_CTX_PGTBL_PERR_EN_XI (1L<<4) +#define BCE_MISC_PERR_ENA0_CTX_CACHE_PERR_EN_XI (1L<<5) +#define BCE_MISC_PERR_ENA0_CTX_MIRROR_PERR_EN_XI (1L<<6) +#define BCE_MISC_PERR_ENA0_COM_CTXC_PERR_EN_XI (1L<<7) +#define BCE_MISC_PERR_ENA0_COM_SCPAD_PERR_EN_XI (1L<<8) +#define BCE_MISC_PERR_ENA0_CP_CTXC_PERR_EN_XI (1L<<9) +#define BCE_MISC_PERR_ENA0_CP_SCPAD_PERR_EN_XI (1L<<10) +#define BCE_MISC_PERR_ENA0_RXP_RBUFC_PERR_EN_XI (1L<<11) +#define BCE_MISC_PERR_ENA0_RXP_CTXC_PERR_EN_XI (1L<<12) +#define BCE_MISC_PERR_ENA0_RXP_SCPAD_PERR_EN_XI (1L<<13) +#define BCE_MISC_PERR_ENA0_TPAT_SCPAD_PERR_EN_XI (1L<<14) +#define BCE_MISC_PERR_ENA0_TXP_CTXC_PERR_EN_XI (1L<<15) +#define BCE_MISC_PERR_ENA0_TXP_SCPAD_PERR_EN_XI (1L<<16) +#define BCE_MISC_PERR_ENA0_CS_TMEM_PERR_EN_XI (1L<<17) +#define BCE_MISC_PERR_ENA0_MQ_CTX_PERR_EN_XI (1L<<18) +#define BCE_MISC_PERR_ENA0_RPM_DFIFOMEM_PERR_EN_XI (1L<<19) +#define BCE_MISC_PERR_ENA0_RPC_DFIFOMEM_PERR_EN_XI (1L<<20) +#define BCE_MISC_PERR_ENA0_RBUF_PTRMEM_PERR_EN_XI (1L<<21) +#define BCE_MISC_PERR_ENA0_RBUF_DATAMEM_PERR_EN_XI (1L<<22) +#define BCE_MISC_PERR_ENA0_RV2P_P2IRAM_PERR_EN_XI (1L<<23) +#define BCE_MISC_PERR_ENA0_RV2P_P1IRAM_PERR_EN_XI (1L<<24) +#define BCE_MISC_PERR_ENA0_RV2P_CB1REGS_PERR_EN_XI (1L<<25) +#define BCE_MISC_PERR_ENA0_RV2P_CB0REGS_PERR_EN_XI (1L<<26) +#define BCE_MISC_PERR_ENA0_TPBUF_PERR_EN_XI (1L<<27) +#define BCE_MISC_PERR_ENA0_THBUF_PERR_EN_XI (1L<<28) +#define BCE_MISC_PERR_ENA0_TDMA_PERR_EN_XI (1L<<29) +#define BCE_MISC_PERR_ENA0_TBDC_PERR_EN_XI (1L<<30) +#define BCE_MISC_PERR_ENA0_TSCH_LR_PERR_EN_XI (1L<<31) + +#define BCE_MISC_PERR_ENA1 0x000008a8 +#define BCE_MISC_PERR_ENA1_RV2P_MISC_CB1REGS (1L<<0) +#define BCE_MISC_PERR_ENA1_RV2P_MISC_P1IRAM (1L<<1) +#define BCE_MISC_PERR_ENA1_RV2P_MISC_P2IRAM (1L<<2) +#define BCE_MISC_PERR_ENA1_RXP_MISC_CTXC (1L<<3) +#define BCE_MISC_PERR_ENA1_RXP_MISC_REGF (1L<<4) +#define BCE_MISC_PERR_ENA1_RXP_MISC_SCPAD (1L<<5) +#define BCE_MISC_PERR_ENA1_RXP_MISC_RBUFC (1L<<6) +#define BCE_MISC_PERR_ENA1_TBDC_MISC (1L<<7) +#define BCE_MISC_PERR_ENA1_TDMA_MISC (1L<<8) +#define BCE_MISC_PERR_ENA1_THBUF_MISC_MB0 (1L<<9) +#define BCE_MISC_PERR_ENA1_THBUF_MISC_MB1 (1L<<10) +#define BCE_MISC_PERR_ENA1_TPAT_MISC_REGF (1L<<11) +#define BCE_MISC_PERR_ENA1_TPAT_MISC_SCPAD (1L<<12) +#define BCE_MISC_PERR_ENA1_TPBUF_MISC_MB (1L<<13) +#define BCE_MISC_PERR_ENA1_TSCH_MISC_LR (1L<<14) +#define BCE_MISC_PERR_ENA1_TXP_MISC_CTXC (1L<<15) +#define BCE_MISC_PERR_ENA1_TXP_MISC_REGF (1L<<16) +#define BCE_MISC_PERR_ENA1_TXP_MISC_SCPAD (1L<<17) +#define BCE_MISC_PERR_ENA1_UMP_MISC_FIORX (1L<<18) +#define BCE_MISC_PERR_ENA1_UMP_MISC_FIOTX (1L<<19) +#define BCE_MISC_PERR_ENA1_UMP_MISC_RX (1L<<20) +#define BCE_MISC_PERR_ENA1_UMP_MISC_TX (1L<<21) +#define BCE_MISC_PERR_ENA1_RDMAQ_MISC (1L<<22) +#define BCE_MISC_PERR_ENA1_CSQ_MISC (1L<<23) +#define BCE_MISC_PERR_ENA1_CPQ_MISC (1L<<24) +#define BCE_MISC_PERR_ENA1_MCPQ_MISC (1L<<25) +#define BCE_MISC_PERR_ENA1_RV2PMQ_MISC (1L<<26) +#define BCE_MISC_PERR_ENA1_RV2PPQ_MISC (1L<<27) +#define BCE_MISC_PERR_ENA1_RV2PTQ_MISC (1L<<28) +#define BCE_MISC_PERR_ENA1_RXPQ_MISC (1L<<29) +#define BCE_MISC_PERR_ENA1_RXPCQ_MISC (1L<<30) +#define BCE_MISC_PERR_ENA1_RLUPQ_MISC (1L<<31) +#define BCE_MISC_PERR_ENA1_RBDC_PERR_EN_XI (1L<<0) +#define BCE_MISC_PERR_ENA1_RDMA_DFIFO_PERR_EN_XI (1L<<2) +#define BCE_MISC_PERR_ENA1_HC_STATS_PERR_EN_XI (1L<<3) +#define BCE_MISC_PERR_ENA1_HC_MSIX_PERR_EN_XI (1L<<4) +#define BCE_MISC_PERR_ENA1_HC_PRODUCSTB_PERR_EN_XI (1L<<5) +#define BCE_MISC_PERR_ENA1_HC_CONSUMSTB_PERR_EN_XI (1L<<6) +#define BCE_MISC_PERR_ENA1_TPATQ_PERR_EN_XI (1L<<7) +#define BCE_MISC_PERR_ENA1_MCPQ_PERR_EN_XI (1L<<8) +#define BCE_MISC_PERR_ENA1_TDMAQ_PERR_EN_XI (1L<<9) +#define BCE_MISC_PERR_ENA1_TXPQ_PERR_EN_XI (1L<<10) +#define BCE_MISC_PERR_ENA1_COMTQ_PERR_EN_XI (1L<<11) +#define BCE_MISC_PERR_ENA1_COMQ_PERR_EN_XI (1L<<12) +#define BCE_MISC_PERR_ENA1_RLUPQ_PERR_EN_XI (1L<<13) +#define BCE_MISC_PERR_ENA1_RXPQ_PERR_EN_XI (1L<<14) +#define BCE_MISC_PERR_ENA1_RV2PPQ_PERR_EN_XI (1L<<15) +#define BCE_MISC_PERR_ENA1_RDMAQ_PERR_EN_XI (1L<<16) +#define BCE_MISC_PERR_ENA1_TASQ_PERR_EN_XI (1L<<17) +#define BCE_MISC_PERR_ENA1_TBDRQ_PERR_EN_XI (1L<<18) +#define BCE_MISC_PERR_ENA1_TSCHQ_PERR_EN_XI (1L<<19) +#define BCE_MISC_PERR_ENA1_COMXQ_PERR_EN_XI (1L<<20) +#define BCE_MISC_PERR_ENA1_RXPCQ_PERR_EN_XI (1L<<21) +#define BCE_MISC_PERR_ENA1_RV2PTQ_PERR_EN_XI (1L<<22) +#define BCE_MISC_PERR_ENA1_RV2PMQ_PERR_EN_XI (1L<<23) +#define BCE_MISC_PERR_ENA1_CPQ_PERR_EN_XI (1L<<24) +#define BCE_MISC_PERR_ENA1_CSQ_PERR_EN_XI (1L<<25) +#define BCE_MISC_PERR_ENA1_RLUP_CID_PERR_EN_XI (1L<<26) +#define BCE_MISC_PERR_ENA1_RV2PCS_TMEM_PERR_EN_XI (1L<<27) +#define BCE_MISC_PERR_ENA1_RV2PCSQ_PERR_EN_XI (1L<<28) +#define BCE_MISC_PERR_ENA1_MQ_IDX_PERR_EN_XI (1L<<29) + +#define BCE_MISC_PERR_ENA2 0x000008ac +#define BCE_MISC_PERR_ENA2_COMQ_MISC (1L<<0) +#define BCE_MISC_PERR_ENA2_COMXQ_MISC (1L<<1) +#define BCE_MISC_PERR_ENA2_COMTQ_MISC (1L<<2) +#define BCE_MISC_PERR_ENA2_TSCHQ_MISC (1L<<3) +#define BCE_MISC_PERR_ENA2_TBDRQ_MISC (1L<<4) +#define BCE_MISC_PERR_ENA2_TXPQ_MISC (1L<<5) +#define BCE_MISC_PERR_ENA2_TDMAQ_MISC (1L<<6) +#define BCE_MISC_PERR_ENA2_TPATQ_MISC (1L<<7) +#define BCE_MISC_PERR_ENA2_TASQ_MISC (1L<<8) +#define BCE_MISC_PERR_ENA2_TGT_FIFO_PERR_EN_XI (1L<<0) +#define BCE_MISC_PERR_ENA2_UMP_TX_PERR_EN_XI (1L<<1) +#define BCE_MISC_PERR_ENA2_UMP_RX_PERR_EN_XI (1L<<2) +#define BCE_MISC_PERR_ENA2_MCP_ROM_PERR_EN_XI (1L<<3) +#define BCE_MISC_PERR_ENA2_MCP_SCPAD_PERR_EN_XI (1L<<4) +#define BCE_MISC_PERR_ENA2_HB_MEM_PERR_EN_XI (1L<<5) +#define BCE_MISC_PERR_ENA2_PCIE_REPLAY_PERR_EN_XI (1L<<6) + +#define BCE_MISC_DEBUG_VECTOR_SEL 0x000008b0 +#define BCE_MISC_DEBUG_VECTOR_SEL_0 (0xfffL<<0) +#define BCE_MISC_DEBUG_VECTOR_SEL_1 (0xfffL<<12) +#define BCE_MISC_DEBUG_VECTOR_SEL_1_XI (0xfffL<<15) + +#define BCE_MISC_VREG_CONTROL 0x000008b4 +#define BCE_MISC_VREG_CONTROL_1_2 (0xfL<<0) +#define BCE_MISC_VREG_CONTROL_1_0_MAIN_XI (0xfL<<0) +#define BCE_MISC_VREG_CONTROL_1_0_MAIN_PLUS14_XI (0L<<0) +#define BCE_MISC_VREG_CONTROL_1_0_MAIN_PLUS12_XI (1L<<0) +#define BCE_MISC_VREG_CONTROL_1_0_MAIN_PLUS10_XI (2L<<0) +#define BCE_MISC_VREG_CONTROL_1_0_MAIN_PLUS8_XI (3L<<0) +#define BCE_MISC_VREG_CONTROL_1_0_MAIN_PLUS6_XI (4L<<0) +#define BCE_MISC_VREG_CONTROL_1_0_MAIN_PLUS4_XI (5L<<0) +#define BCE_MISC_VREG_CONTROL_1_0_MAIN_PLUS2_XI (6L<<0) +#define BCE_MISC_VREG_CONTROL_1_0_MAIN_NOM_XI (7L<<0) +#define BCE_MISC_VREG_CONTROL_1_0_MAIN_MINUS2_XI (8L<<0) +#define BCE_MISC_VREG_CONTROL_1_0_MAIN_MINUS4_XI (9L<<0) +#define BCE_MISC_VREG_CONTROL_1_0_MAIN_MINUS6_XI (10L<<0) +#define BCE_MISC_VREG_CONTROL_1_0_MAIN_MINUS8_XI (11L<<0) +#define BCE_MISC_VREG_CONTROL_1_0_MAIN_MINUS10_XI (12L<<0) +#define BCE_MISC_VREG_CONTROL_1_0_MAIN_MINUS12_XI (13L<<0) +#define BCE_MISC_VREG_CONTROL_1_0_MAIN_MINUS14_XI (14L<<0) +#define BCE_MISC_VREG_CONTROL_1_0_MAIN_MINUS16_XI (15L<<0) +#define BCE_MISC_VREG_CONTROL_2_5 (0xfL<<4) +#define BCE_MISC_VREG_CONTROL_2_5_PLUS14 (0L<<4) +#define BCE_MISC_VREG_CONTROL_2_5_PLUS12 (1L<<4) +#define BCE_MISC_VREG_CONTROL_2_5_PLUS10 (2L<<4) +#define BCE_MISC_VREG_CONTROL_2_5_PLUS8 (3L<<4) +#define BCE_MISC_VREG_CONTROL_2_5_PLUS6 (4L<<4) +#define BCE_MISC_VREG_CONTROL_2_5_PLUS4 (5L<<4) +#define BCE_MISC_VREG_CONTROL_2_5_PLUS2 (6L<<4) +#define BCE_MISC_VREG_CONTROL_2_5_NOM (7L<<4) +#define BCE_MISC_VREG_CONTROL_2_5_MINUS2 (8L<<4) +#define BCE_MISC_VREG_CONTROL_2_5_MINUS4 (9L<<4) +#define BCE_MISC_VREG_CONTROL_2_5_MINUS6 (10L<<4) +#define BCE_MISC_VREG_CONTROL_2_5_MINUS8 (11L<<4) +#define BCE_MISC_VREG_CONTROL_2_5_MINUS10 (12L<<4) +#define BCE_MISC_VREG_CONTROL_2_5_MINUS12 (13L<<4) +#define BCE_MISC_VREG_CONTROL_2_5_MINUS14 (14L<<4) +#define BCE_MISC_VREG_CONTROL_2_5_MINUS16 (15L<<4) +#define BCE_MISC_VREG_CONTROL_1_0_MGMT (0xfL<<8) +#define BCE_MISC_VREG_CONTROL_1_0_MGMT_PLUS14 (0L<<8) +#define BCE_MISC_VREG_CONTROL_1_0_MGMT_PLUS12 (1L<<8) +#define BCE_MISC_VREG_CONTROL_1_0_MGMT_PLUS10 (2L<<8) +#define BCE_MISC_VREG_CONTROL_1_0_MGMT_PLUS8 (3L<<8) +#define BCE_MISC_VREG_CONTROL_1_0_MGMT_PLUS6 (4L<<8) +#define BCE_MISC_VREG_CONTROL_1_0_MGMT_PLUS4 (5L<<8) +#define BCE_MISC_VREG_CONTROL_1_0_MGMT_PLUS2 (6L<<8) +#define BCE_MISC_VREG_CONTROL_1_0_MGMT_NOM (7L<<8) +#define BCE_MISC_VREG_CONTROL_1_0_MGMT_MINUS2 (8L<<8) +#define BCE_MISC_VREG_CONTROL_1_0_MGMT_MINUS4 (9L<<8) +#define BCE_MISC_VREG_CONTROL_1_0_MGMT_MINUS6 (10L<<8) +#define BCE_MISC_VREG_CONTROL_1_0_MGMT_MINUS8 (11L<<8) +#define BCE_MISC_VREG_CONTROL_1_0_MGMT_MINUS10 (12L<<8) +#define BCE_MISC_VREG_CONTROL_1_0_MGMT_MINUS12 (13L<<8) +#define BCE_MISC_VREG_CONTROL_1_0_MGMT_MINUS14 (14L<<8) +#define BCE_MISC_VREG_CONTROL_1_0_MGMT_MINUS16 (15L<<8) + +#define BCE_MISC_FINAL_CLK_CTL_VAL 0x000008b8 +#define BCE_MISC_FINAL_CLK_CTL_VAL_MISC_FINAL_CLK_CTL_VAL (0x3ffffffL<<6) + +#define BCE_MISC_GP_HW_CTL0 0x000008bc +#define BCE_MISC_GP_HW_CTL0_TX_DRIVE (1L<<0) +#define BCE_MISC_GP_HW_CTL0_RMII_MODE (1L<<1) +#define BCE_MISC_GP_HW_CTL0_RMII_CRSDV_SEL (1L<<2) +#define BCE_MISC_GP_HW_CTL0_RVMII_MODE (1L<<3) +#define BCE_MISC_GP_HW_CTL0_FLASH_SAMP_SCLK_NEGEDGE_TE (1L<<4) +#define BCE_MISC_GP_HW_CTL0_HIDDEN_REVISION_ID_TE (1L<<5) +#define BCE_MISC_GP_HW_CTL0_HC_CNTL_TMOUT_CTR_RST_TE (1L<<6) +#define BCE_MISC_GP_HW_CTL0_RESERVED1_XI (0x7L<<4) +#define BCE_MISC_GP_HW_CTL0_ENA_CORE_RST_ON_MAIN_PWR_GOING_AWAY (1L<<7) +#define BCE_MISC_GP_HW_CTL0_ENA_SEL_VAUX_B_IN_L2_TE (1L<<8) +#define BCE_MISC_GP_HW_CTL0_GRC_BNK_FREE_FIX_TE (1L<<9) +#define BCE_MISC_GP_HW_CTL0_LED_ACT_SEL_TE (1L<<10) +#define BCE_MISC_GP_HW_CTL0_RESERVED2_XI (0x7L<<8) +#define BCE_MISC_GP_HW_CTL0_UP1_DEF0 (1L<<11) +#define BCE_MISC_GP_HW_CTL0_FIBER_MODE_DIS_DEF (1L<<12) +#define BCE_MISC_GP_HW_CTL0_FORCE2500_DEF (1L<<13) +#define BCE_MISC_GP_HW_CTL0_AUTODETECT_DIS_DEF (1L<<14) +#define BCE_MISC_GP_HW_CTL0_PARALLEL_DETECT_DEF (1L<<15) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_DAI (0xfL<<16) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_DAI_3MA (0L<<16) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_DAI_2P5MA (1L<<16) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_DAI_2P0MA (3L<<16) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_DAI_1P5MA (5L<<16) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_DAI_1P0MA (7L<<16) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_DAI_PWRDN (15L<<16) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_PRE2DIS (1L<<20) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_PRE1DIS (1L<<21) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_CTAT (0x3L<<22) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_CTAT_M6P (0L<<22) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_CTAT_M0P (1L<<22) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_CTAT_P0P (2L<<22) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_CTAT_P6P (3L<<22) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_PTAT (0x3L<<24) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_PTAT_M6P (0L<<24) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_PTAT_M0P (1L<<24) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_PTAT_P0P (2L<<24) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_PTAT_P6P (3L<<24) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_IAMP_ADJ (0x3L<<26) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_IAMP_ADJ_240UA (0L<<26) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_IAMP_ADJ_160UA (1L<<26) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_IAMP_ADJ_400UA (2L<<26) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_IAMP_ADJ_320UA (3L<<26) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_ICBUF_ADJ (0x3L<<28) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_ICBUF_ADJ_240UA (0L<<28) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_ICBUF_ADJ_160UA (1L<<28) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_ICBUF_ADJ_400UA (2L<<28) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_ICBUF_ADJ_320UA (3L<<28) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_XTAL_ADJ (0x3L<<30) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_XTAL_ADJ_1P57 (0L<<30) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_XTAL_ADJ_1P45 (1L<<30) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_XTAL_ADJ_1P62 (2L<<30) +#define BCE_MISC_GP_HW_CTL0_OSCCTRL_XTAL_ADJ_1P66 (3L<<30) + +#define BCE_MISC_GP_HW_CTL1 0x000008c0 +#define BCE_MISC_GP_HW_CTL1_1_ATTN_BTN_PRSNT_TE (1L<<0) +#define BCE_MISC_GP_HW_CTL1_1_ATTN_IND_PRSNT_TE (1L<<1) +#define BCE_MISC_GP_HW_CTL1_1_PWR_IND_PRSNT_TE (1L<<2) +#define BCE_MISC_GP_HW_CTL1_0_PCIE_LOOPBACK_TE (1L<<3) +#define BCE_MISC_GP_HW_CTL1_RESERVED_SOFT_XI (0xffffL<<0) +#define BCE_MISC_GP_HW_CTL1_RESERVED_HARD_XI (0xffffL<<16) + +#define BCE_MISC_NEW_HW_CTL 0x000008c4 +#define BCE_MISC_NEW_HW_CTL_MAIN_POR_BYPASS (1L<<0) +#define BCE_MISC_NEW_HW_CTL_RINGOSC_ENABLE (1L<<1) +#define BCE_MISC_NEW_HW_CTL_RINGOSC_SEL0 (1L<<2) +#define BCE_MISC_NEW_HW_CTL_RINGOSC_SEL1 (1L<<3) +#define BCE_MISC_NEW_HW_CTL_RESERVED_SHARED (0xfffL<<4) +#define BCE_MISC_NEW_HW_CTL_RESERVED_SPLIT (0xffffL<<16) + +#define BCE_MISC_NEW_CORE_CTL 0x000008c8 +#define BCE_MISC_NEW_CORE_CTL_LINK_HOLDOFF_SUCCESS (1L<<0) +#define BCE_MISC_NEW_CORE_CTL_LINK_HOLDOFF_REQ (1L<<1) +#define BCE_MISC_NEW_CORE_CTL_DMA_ENABLE (1L<<16) +#define BCE_MISC_NEW_CORE_CTL_RESERVED_CMN (0x3fffL<<2) +#define BCE_MISC_NEW_CORE_CTL_RESERVED_TC (0xffffL<<16) + +#define BCE_MISC_ECO_HW_CTL 0x000008cc +#define BCE_MISC_ECO_HW_CTL_LARGE_GRC_TMOUT_EN (1L<<0) +#define BCE_MISC_ECO_HW_CTL_RESERVED_SOFT (0x7fffL<<1) +#define BCE_MISC_ECO_HW_CTL_RESERVED_HARD (0xffffL<<16) + +#define BCE_MISC_ECO_CORE_CTL 0x000008d0 +#define BCE_MISC_ECO_CORE_CTL_RESERVED_SOFT (0xffffL<<0) +#define BCE_MISC_ECO_CORE_CTL_RESERVED_HARD (0xffffL<<16) + +#define BCE_MISC_PPIO 0x000008d4 +#define BCE_MISC_PPIO_VALUE (0xfL<<0) +#define BCE_MISC_PPIO_SET (0xfL<<8) +#define BCE_MISC_PPIO_CLR (0xfL<<16) +#define BCE_MISC_PPIO_FLOAT (0xfL<<24) + +#define BCE_MISC_PPIO_INT 0x000008d8 +#define BCE_MISC_PPIO_INT_INT_STATE (0xfL<<0) +#define BCE_MISC_PPIO_INT_OLD_VALUE (0xfL<<8) +#define BCE_MISC_PPIO_INT_OLD_SET (0xfL<<16) +#define BCE_MISC_PPIO_INT_OLD_CLR (0xfL<<24) + +#define BCE_MISC_RESET_NUMS 0x000008dc +#define BCE_MISC_RESET_NUMS_NUM_HARD_RESETS (0x7L<<0) +#define BCE_MISC_RESET_NUMS_NUM_PCIE_RESETS (0x7L<<4) +#define BCE_MISC_RESET_NUMS_NUM_PERSTB_RESETS (0x7L<<8) +#define BCE_MISC_RESET_NUMS_NUM_CMN_RESETS (0x7L<<12) +#define BCE_MISC_RESET_NUMS_NUM_PORT_RESETS (0x7L<<16) + +#define BCE_MISC_CS16_ERR 0x000008e0 +#define BCE_MISC_CS16_ERR_ENA_PCI (1L<<0) +#define BCE_MISC_CS16_ERR_ENA_RDMA (1L<<1) +#define BCE_MISC_CS16_ERR_ENA_TDMA (1L<<2) +#define BCE_MISC_CS16_ERR_ENA_EMAC (1L<<3) +#define BCE_MISC_CS16_ERR_ENA_CTX (1L<<4) +#define BCE_MISC_CS16_ERR_ENA_TBDR (1L<<5) +#define BCE_MISC_CS16_ERR_ENA_RBDC (1L<<6) +#define BCE_MISC_CS16_ERR_ENA_COM (1L<<7) +#define BCE_MISC_CS16_ERR_ENA_CP (1L<<8) +#define BCE_MISC_CS16_ERR_STA_PCI (1L<<16) +#define BCE_MISC_CS16_ERR_STA_RDMA (1L<<17) +#define BCE_MISC_CS16_ERR_STA_TDMA (1L<<18) +#define BCE_MISC_CS16_ERR_STA_EMAC (1L<<19) +#define BCE_MISC_CS16_ERR_STA_CTX (1L<<20) +#define BCE_MISC_CS16_ERR_STA_TBDR (1L<<21) +#define BCE_MISC_CS16_ERR_STA_RBDC (1L<<22) +#define BCE_MISC_CS16_ERR_STA_COM (1L<<23) +#define BCE_MISC_CS16_ERR_STA_CP (1L<<24) + +#define BCE_MISC_SPIO_EVENT 0x000008e4 +#define BCE_MISC_SPIO_EVENT_ENABLE (0xffL<<0) + +#define BCE_MISC_PPIO_EVENT 0x000008e8 +#define BCE_MISC_PPIO_EVENT_ENABLE (0xfL<<0) + +#define BCE_MISC_DUAL_MEDIA_CTRL 0x000008ec +#define BCE_MISC_DUAL_MEDIA_CTRL_BOND_ID (0xffL<<0) +#define BCE_MISC_DUAL_MEDIA_CTRL_BOND_ID_X (0L<<0) +#define BCE_MISC_DUAL_MEDIA_CTRL_BOND_ID_C (3L<<0) +#define BCE_MISC_DUAL_MEDIA_CTRL_BOND_ID_S (12L<<0) +#define BCE_MISC_DUAL_MEDIA_CTRL_PHY_CTRL_STRAP (0x7L<<8) +#define BCE_MISC_DUAL_MEDIA_CTRL_PORT_SWAP_PIN (1L<<11) +#define BCE_MISC_DUAL_MEDIA_CTRL_SERDES1_SIGDET (1L<<12) +#define BCE_MISC_DUAL_MEDIA_CTRL_SERDES0_SIGDET (1L<<13) +#define BCE_MISC_DUAL_MEDIA_CTRL_PHY1_SIGDET (1L<<14) +#define BCE_MISC_DUAL_MEDIA_CTRL_PHY0_SIGDET (1L<<15) +#define BCE_MISC_DUAL_MEDIA_CTRL_LCPLL_RST (1L<<16) +#define BCE_MISC_DUAL_MEDIA_CTRL_SERDES1_RST (1L<<17) +#define BCE_MISC_DUAL_MEDIA_CTRL_SERDES0_RST (1L<<18) +#define BCE_MISC_DUAL_MEDIA_CTRL_PHY1_RST (1L<<19) +#define BCE_MISC_DUAL_MEDIA_CTRL_PHY0_RST (1L<<20) +#define BCE_MISC_DUAL_MEDIA_CTRL_PHY_CTRL (0x7L<<21) +#define BCE_MISC_DUAL_MEDIA_CTRL_PORT_SWAP (1L<<24) +#define BCE_MISC_DUAL_MEDIA_CTRL_STRAP_OVERRIDE (1L<<25) +#define BCE_MISC_DUAL_MEDIA_CTRL_PHY_SERDES_IDDQ (0xfL<<26) +#define BCE_MISC_DUAL_MEDIA_CTRL_PHY_SERDES_IDDQ_SER1_IDDQ (1L<<26) +#define BCE_MISC_DUAL_MEDIA_CTRL_PHY_SERDES_IDDQ_SER0_IDDQ (2L<<26) +#define BCE_MISC_DUAL_MEDIA_CTRL_PHY_SERDES_IDDQ_PHY1_IDDQ (4L<<26) +#define BCE_MISC_DUAL_MEDIA_CTRL_PHY_SERDES_IDDQ_PHY0_IDDQ (8L<<26) + +#define BCE_MISC_OTP_CMD1 0x000008f0 +#define BCE_MISC_OTP_CMD1_FMODE (0x7L<<0) +#define BCE_MISC_OTP_CMD1_FMODE_IDLE (0L<<0) +#define BCE_MISC_OTP_CMD1_FMODE_WRITE (1L<<0) +#define BCE_MISC_OTP_CMD1_FMODE_INIT (2L<<0) +#define BCE_MISC_OTP_CMD1_FMODE_SET (3L<<0) +#define BCE_MISC_OTP_CMD1_FMODE_RST (4L<<0) +#define BCE_MISC_OTP_CMD1_FMODE_VERIFY (5L<<0) +#define BCE_MISC_OTP_CMD1_FMODE_RESERVED0 (6L<<0) +#define BCE_MISC_OTP_CMD1_FMODE_RESERVED1 (7L<<0) +#define BCE_MISC_OTP_CMD1_USEPINS (1L<<8) +#define BCE_MISC_OTP_CMD1_PROGSEL (1L<<9) +#define BCE_MISC_OTP_CMD1_PROGSTART (1L<<10) +#define BCE_MISC_OTP_CMD1_PCOUNT (0x7L<<16) +#define BCE_MISC_OTP_CMD1_PBYP (1L<<19) +#define BCE_MISC_OTP_CMD1_VSEL (0xfL<<20) +#define BCE_MISC_OTP_CMD1_TM (0x7L<<27) +#define BCE_MISC_OTP_CMD1_SADBYP (1L<<30) +#define BCE_MISC_OTP_CMD1_DEBUG (1L<<31) + +#define BCE_MISC_OTP_CMD2 0x000008f4 +#define BCE_MISC_OTP_CMD2_OTP_ROM_ADDR (0x3ffL<<0) +#define BCE_MISC_OTP_CMD2_DOSEL (0x7fL<<16) +#define BCE_MISC_OTP_CMD2_DOSEL_0 (0L<<16) +#define BCE_MISC_OTP_CMD2_DOSEL_1 (1L<<16) +#define BCE_MISC_OTP_CMD2_DOSEL_127 (127L<<16) + +#define BCE_MISC_OTP_STATUS 0x000008f8 +#define BCE_MISC_OTP_STATUS_DATA (0xffL<<0) +#define BCE_MISC_OTP_STATUS_VALID (1L<<8) +#define BCE_MISC_OTP_STATUS_BUSY (1L<<9) +#define BCE_MISC_OTP_STATUS_BUSYSM (1L<<10) +#define BCE_MISC_OTP_STATUS_DONE (1L<<11) + +#define BCE_MISC_OTP_SHIFT1_CMD 0x000008fc +#define BCE_MISC_OTP_SHIFT1_CMD_RESET_MODE_N (1L<<0) +#define BCE_MISC_OTP_SHIFT1_CMD_SHIFT_DONE (1L<<1) +#define BCE_MISC_OTP_SHIFT1_CMD_SHIFT_START (1L<<2) +#define BCE_MISC_OTP_SHIFT1_CMD_LOAD_DATA (1L<<3) +#define BCE_MISC_OTP_SHIFT1_CMD_SHIFT_SELECT (0x1fL<<8) + +#define BCE_MISC_OTP_SHIFT1_DATA 0x00000900 +#define BCE_MISC_OTP_SHIFT2_CMD 0x00000904 +#define BCE_MISC_OTP_SHIFT2_CMD_RESET_MODE_N (1L<<0) +#define BCE_MISC_OTP_SHIFT2_CMD_SHIFT_DONE (1L<<1) +#define BCE_MISC_OTP_SHIFT2_CMD_SHIFT_START (1L<<2) +#define BCE_MISC_OTP_SHIFT2_CMD_LOAD_DATA (1L<<3) +#define BCE_MISC_OTP_SHIFT2_CMD_SHIFT_SELECT (0x1fL<<8) + +#define BCE_MISC_OTP_SHIFT2_DATA 0x00000908 +#define BCE_MISC_BIST_CS0 0x0000090c +#define BCE_MISC_BIST_CS0_MBIST_EN (1L<<0) +#define BCE_MISC_BIST_CS0_BIST_SETUP (0x3L<<1) +#define BCE_MISC_BIST_CS0_MBIST_ASYNC_RESET (1L<<3) +#define BCE_MISC_BIST_CS0_MBIST_DONE (1L<<8) +#define BCE_MISC_BIST_CS0_MBIST_GO (1L<<9) +#define BCE_MISC_BIST_CS0_BIST_OVERRIDE (1L<<31) + +#define BCE_MISC_BIST_MEMSTATUS0 0x00000910 +#define BCE_MISC_BIST_CS1 0x00000914 +#define BCE_MISC_BIST_CS1_MBIST_EN (1L<<0) +#define BCE_MISC_BIST_CS1_BIST_SETUP (0x3L<<1) +#define BCE_MISC_BIST_CS1_MBIST_ASYNC_RESET (1L<<3) +#define BCE_MISC_BIST_CS1_MBIST_DONE (1L<<8) +#define BCE_MISC_BIST_CS1_MBIST_GO (1L<<9) + +#define BCE_MISC_BIST_MEMSTATUS1 0x00000918 +#define BCE_MISC_BIST_CS2 0x0000091c +#define BCE_MISC_BIST_CS2_MBIST_EN (1L<<0) +#define BCE_MISC_BIST_CS2_BIST_SETUP (0x3L<<1) +#define BCE_MISC_BIST_CS2_MBIST_ASYNC_RESET (1L<<3) +#define BCE_MISC_BIST_CS2_MBIST_DONE (1L<<8) +#define BCE_MISC_BIST_CS2_MBIST_GO (1L<<9) + +#define BCE_MISC_BIST_MEMSTATUS2 0x00000920 +#define BCE_MISC_BIST_CS3 0x00000924 +#define BCE_MISC_BIST_CS3_MBIST_EN (1L<<0) +#define BCE_MISC_BIST_CS3_BIST_SETUP (0x3L<<1) +#define BCE_MISC_BIST_CS3_MBIST_ASYNC_RESET (1L<<3) +#define BCE_MISC_BIST_CS3_MBIST_DONE (1L<<8) +#define BCE_MISC_BIST_CS3_MBIST_GO (1L<<9) + +#define BCE_MISC_BIST_MEMSTATUS3 0x00000928 +#define BCE_MISC_BIST_CS4 0x0000092c +#define BCE_MISC_BIST_CS4_MBIST_EN (1L<<0) +#define BCE_MISC_BIST_CS4_BIST_SETUP (0x3L<<1) +#define BCE_MISC_BIST_CS4_MBIST_ASYNC_RESET (1L<<3) +#define BCE_MISC_BIST_CS4_MBIST_DONE (1L<<8) +#define BCE_MISC_BIST_CS4_MBIST_GO (1L<<9) + +#define BCE_MISC_BIST_MEMSTATUS4 0x00000930 +#define BCE_MISC_BIST_CS5 0x00000934 +#define BCE_MISC_BIST_CS5_MBIST_EN (1L<<0) +#define BCE_MISC_BIST_CS5_BIST_SETUP (0x3L<<1) +#define BCE_MISC_BIST_CS5_MBIST_ASYNC_RESET (1L<<3) +#define BCE_MISC_BIST_CS5_MBIST_DONE (1L<<8) +#define BCE_MISC_BIST_CS5_MBIST_GO (1L<<9) + +#define BCE_MISC_BIST_MEMSTATUS5 0x00000938 +#define BCE_MISC_MEM_TM0 0x0000093c +#define BCE_MISC_MEM_TM0_PCIE_REPLAY_TM (0xfL<<0) +#define BCE_MISC_MEM_TM0_MCP_SCPAD (0xfL<<8) +#define BCE_MISC_MEM_TM0_UMP_TM (0xffL<<16) +#define BCE_MISC_MEM_TM0_HB_MEM_TM (0xfL<<24) + +#define BCE_MISC_USPLL_CTRL 0x00000940 +#define BCE_MISC_USPLL_CTRL_PH_DET_DIS (1L<<0) +#define BCE_MISC_USPLL_CTRL_FREQ_DET_DIS (1L<<1) +#define BCE_MISC_USPLL_CTRL_LCPX (0x3fL<<2) +#define BCE_MISC_USPLL_CTRL_RX (0x3L<<8) +#define BCE_MISC_USPLL_CTRL_VC_EN (1L<<10) +#define BCE_MISC_USPLL_CTRL_VCO_MG (0x3L<<11) +#define BCE_MISC_USPLL_CTRL_KVCO_XF (0x7L<<13) +#define BCE_MISC_USPLL_CTRL_KVCO_XS (0x7L<<16) +#define BCE_MISC_USPLL_CTRL_TESTD_EN (1L<<19) +#define BCE_MISC_USPLL_CTRL_TESTD_SEL (0x7L<<20) +#define BCE_MISC_USPLL_CTRL_TESTA_EN (1L<<23) +#define BCE_MISC_USPLL_CTRL_TESTA_SEL (0x3L<<24) +#define BCE_MISC_USPLL_CTRL_ATTEN_FREF (1L<<26) +#define BCE_MISC_USPLL_CTRL_DIGITAL_RST (1L<<27) +#define BCE_MISC_USPLL_CTRL_ANALOG_RST (1L<<28) +#define BCE_MISC_USPLL_CTRL_LOCK (1L<<29) + +#define BCE_MISC_PERR_STATUS0 0x00000944 +#define BCE_MISC_PERR_STATUS0_COM_DMAE_PERR (1L<<0) +#define BCE_MISC_PERR_STATUS0_CP_DMAE_PERR (1L<<1) +#define BCE_MISC_PERR_STATUS0_RPM_ACPIBEMEM_PERR (1L<<2) +#define BCE_MISC_PERR_STATUS0_CTX_USAGE_CNT_PERR (1L<<3) +#define BCE_MISC_PERR_STATUS0_CTX_PGTBL_PERR (1L<<4) +#define BCE_MISC_PERR_STATUS0_CTX_CACHE_PERR (1L<<5) +#define BCE_MISC_PERR_STATUS0_CTX_MIRROR_PERR (1L<<6) +#define BCE_MISC_PERR_STATUS0_COM_CTXC_PERR (1L<<7) +#define BCE_MISC_PERR_STATUS0_COM_SCPAD_PERR (1L<<8) +#define BCE_MISC_PERR_STATUS0_CP_CTXC_PERR (1L<<9) +#define BCE_MISC_PERR_STATUS0_CP_SCPAD_PERR (1L<<10) +#define BCE_MISC_PERR_STATUS0_RXP_RBUFC_PERR (1L<<11) +#define BCE_MISC_PERR_STATUS0_RXP_CTXC_PERR (1L<<12) +#define BCE_MISC_PERR_STATUS0_RXP_SCPAD_PERR (1L<<13) +#define BCE_MISC_PERR_STATUS0_TPAT_SCPAD_PERR (1L<<14) +#define BCE_MISC_PERR_STATUS0_TXP_CTXC_PERR (1L<<15) +#define BCE_MISC_PERR_STATUS0_TXP_SCPAD_PERR (1L<<16) +#define BCE_MISC_PERR_STATUS0_CS_TMEM_PERR (1L<<17) +#define BCE_MISC_PERR_STATUS0_MQ_CTX_PERR (1L<<18) +#define BCE_MISC_PERR_STATUS0_RPM_DFIFOMEM_PERR (1L<<19) +#define BCE_MISC_PERR_STATUS0_RPC_DFIFOMEM_PERR (1L<<20) +#define BCE_MISC_PERR_STATUS0_RBUF_PTRMEM_PERR (1L<<21) +#define BCE_MISC_PERR_STATUS0_RBUF_DATAMEM_PERR (1L<<22) +#define BCE_MISC_PERR_STATUS0_RV2P_P2IRAM_PERR (1L<<23) +#define BCE_MISC_PERR_STATUS0_RV2P_P1IRAM_PERR (1L<<24) +#define BCE_MISC_PERR_STATUS0_RV2P_CB1REGS_PERR (1L<<25) +#define BCE_MISC_PERR_STATUS0_RV2P_CB0REGS_PERR (1L<<26) +#define BCE_MISC_PERR_STATUS0_TPBUF_PERR (1L<<27) +#define BCE_MISC_PERR_STATUS0_THBUF_PERR (1L<<28) +#define BCE_MISC_PERR_STATUS0_TDMA_PERR (1L<<29) +#define BCE_MISC_PERR_STATUS0_TBDC_PERR (1L<<30) +#define BCE_MISC_PERR_STATUS0_TSCH_LR_PERR (1L<<31) + +#define BCE_MISC_PERR_STATUS1 0x00000948 +#define BCE_MISC_PERR_STATUS1_RBDC_PERR (1L<<0) +#define BCE_MISC_PERR_STATUS1_RDMA_DFIFO_PERR (1L<<2) +#define BCE_MISC_PERR_STATUS1_HC_STATS_PERR (1L<<3) +#define BCE_MISC_PERR_STATUS1_HC_MSIX_PERR (1L<<4) +#define BCE_MISC_PERR_STATUS1_HC_PRODUCSTB_PERR (1L<<5) +#define BCE_MISC_PERR_STATUS1_HC_CONSUMSTB_PERR (1L<<6) +#define BCE_MISC_PERR_STATUS1_TPATQ_PERR (1L<<7) +#define BCE_MISC_PERR_STATUS1_MCPQ_PERR (1L<<8) +#define BCE_MISC_PERR_STATUS1_TDMAQ_PERR (1L<<9) +#define BCE_MISC_PERR_STATUS1_TXPQ_PERR (1L<<10) +#define BCE_MISC_PERR_STATUS1_COMTQ_PERR (1L<<11) +#define BCE_MISC_PERR_STATUS1_COMQ_PERR (1L<<12) +#define BCE_MISC_PERR_STATUS1_RLUPQ_PERR (1L<<13) +#define BCE_MISC_PERR_STATUS1_RXPQ_PERR (1L<<14) +#define BCE_MISC_PERR_STATUS1_RV2PPQ_PERR (1L<<15) +#define BCE_MISC_PERR_STATUS1_RDMAQ_PERR (1L<<16) +#define BCE_MISC_PERR_STATUS1_TASQ_PERR (1L<<17) +#define BCE_MISC_PERR_STATUS1_TBDRQ_PERR (1L<<18) +#define BCE_MISC_PERR_STATUS1_TSCHQ_PERR (1L<<19) +#define BCE_MISC_PERR_STATUS1_COMXQ_PERR (1L<<20) +#define BCE_MISC_PERR_STATUS1_RXPCQ_PERR (1L<<21) +#define BCE_MISC_PERR_STATUS1_RV2PTQ_PERR (1L<<22) +#define BCE_MISC_PERR_STATUS1_RV2PMQ_PERR (1L<<23) +#define BCE_MISC_PERR_STATUS1_CPQ_PERR (1L<<24) +#define BCE_MISC_PERR_STATUS1_CSQ_PERR (1L<<25) +#define BCE_MISC_PERR_STATUS1_RLUP_CID_PERR (1L<<26) +#define BCE_MISC_PERR_STATUS1_RV2PCS_TMEM_PERR (1L<<27) +#define BCE_MISC_PERR_STATUS1_RV2PCSQ_PERR (1L<<28) +#define BCE_MISC_PERR_STATUS1_MQ_IDX_PERR (1L<<29) + +#define BCE_MISC_PERR_STATUS2 0x0000094c +#define BCE_MISC_PERR_STATUS2_TGT_FIFO_PERR (1L<<0) +#define BCE_MISC_PERR_STATUS2_UMP_TX_PERR (1L<<1) +#define BCE_MISC_PERR_STATUS2_UMP_RX_PERR (1L<<2) +#define BCE_MISC_PERR_STATUS2_MCP_ROM_PERR (1L<<3) +#define BCE_MISC_PERR_STATUS2_MCP_SCPAD_PERR (1L<<4) +#define BCE_MISC_PERR_STATUS2_HB_MEM_PERR (1L<<5) +#define BCE_MISC_PERR_STATUS2_PCIE_REPLAY_PERR (1L<<6) + +#define BCE_MISC_LCPLL_CTRL0 0x00000950 +#define BCE_MISC_LCPLL_CTRL0_OAC (0x7L<<0) +#define BCE_MISC_LCPLL_CTRL0_OAC_NEGTWENTY (0L<<0) +#define BCE_MISC_LCPLL_CTRL0_OAC_ZERO (1L<<0) +#define BCE_MISC_LCPLL_CTRL0_OAC_TWENTY (3L<<0) +#define BCE_MISC_LCPLL_CTRL0_OAC_FORTY (7L<<0) +#define BCE_MISC_LCPLL_CTRL0_ICP_CTRL (0x7L<<3) +#define BCE_MISC_LCPLL_CTRL0_ICP_CTRL_360 (0L<<3) +#define BCE_MISC_LCPLL_CTRL0_ICP_CTRL_480 (1L<<3) +#define BCE_MISC_LCPLL_CTRL0_ICP_CTRL_600 (3L<<3) +#define BCE_MISC_LCPLL_CTRL0_ICP_CTRL_720 (7L<<3) +#define BCE_MISC_LCPLL_CTRL0_BIAS_CTRL (0x3L<<6) +#define BCE_MISC_LCPLL_CTRL0_PLL_OBSERVE (0x7L<<8) +#define BCE_MISC_LCPLL_CTRL0_VTH_CTRL (0x3L<<11) +#define BCE_MISC_LCPLL_CTRL0_VTH_CTRL_0 (0L<<11) +#define BCE_MISC_LCPLL_CTRL0_VTH_CTRL_1 (1L<<11) +#define BCE_MISC_LCPLL_CTRL0_VTH_CTRL_2 (2L<<11) +#define BCE_MISC_LCPLL_CTRL0_PLLSEQSTART (1L<<13) +#define BCE_MISC_LCPLL_CTRL0_RESERVED (1L<<14) +#define BCE_MISC_LCPLL_CTRL0_CAPRETRY_EN (1L<<15) +#define BCE_MISC_LCPLL_CTRL0_FREQMONITOR_EN (1L<<16) +#define BCE_MISC_LCPLL_CTRL0_FREQDETRESTART_EN (1L<<17) +#define BCE_MISC_LCPLL_CTRL0_FREQDETRETRY_EN (1L<<18) +#define BCE_MISC_LCPLL_CTRL0_PLLFORCEFDONE_EN (1L<<19) +#define BCE_MISC_LCPLL_CTRL0_PLLFORCEFDONE (1L<<20) +#define BCE_MISC_LCPLL_CTRL0_PLLFORCEFPASS (1L<<21) +#define BCE_MISC_LCPLL_CTRL0_PLLFORCECAPDONE_EN (1L<<22) +#define BCE_MISC_LCPLL_CTRL0_PLLFORCECAPDONE (1L<<23) +#define BCE_MISC_LCPLL_CTRL0_PLLFORCECAPPASS_EN (1L<<24) +#define BCE_MISC_LCPLL_CTRL0_PLLFORCECAPPASS (1L<<25) +#define BCE_MISC_LCPLL_CTRL0_CAPRESTART (1L<<26) +#define BCE_MISC_LCPLL_CTRL0_CAPSELECTM_EN (1L<<27) + +#define BCE_MISC_LCPLL_CTRL1 0x00000954 +#define BCE_MISC_LCPLL_CTRL1_CAPSELECTM (0x1fL<<0) +#define BCE_MISC_LCPLL_CTRL1_CAPFORCESLOWDOWN_EN (1L<<5) +#define BCE_MISC_LCPLL_CTRL1_CAPFORCESLOWDOWN (1L<<6) +#define BCE_MISC_LCPLL_CTRL1_SLOWDN_XOR (1L<<7) + +#define BCE_MISC_LCPLL_STATUS 0x00000958 +#define BCE_MISC_LCPLL_STATUS_FREQDONE_SM (1L<<0) +#define BCE_MISC_LCPLL_STATUS_FREQPASS_SM (1L<<1) +#define BCE_MISC_LCPLL_STATUS_PLLSEQDONE (1L<<2) +#define BCE_MISC_LCPLL_STATUS_PLLSEQPASS (1L<<3) +#define BCE_MISC_LCPLL_STATUS_PLLSTATE (0x7L<<4) +#define BCE_MISC_LCPLL_STATUS_CAPSTATE (0x7L<<7) +#define BCE_MISC_LCPLL_STATUS_CAPSELECT (0x1fL<<10) +#define BCE_MISC_LCPLL_STATUS_SLOWDN_INDICATOR (1L<<15) +#define BCE_MISC_LCPLL_STATUS_SLOWDN_INDICATOR_0 (0L<<15) +#define BCE_MISC_LCPLL_STATUS_SLOWDN_INDICATOR_1 (1L<<15) + +#define BCE_MISC_OSCFUNDS_CTRL 0x0000095c +#define BCE_MISC_OSCFUNDS_CTRL_FREQ_MON (1L<<5) +#define BCE_MISC_OSCFUNDS_CTRL_FREQ_MON_OFF (0L<<5) +#define BCE_MISC_OSCFUNDS_CTRL_FREQ_MON_ON (1L<<5) +#define BCE_MISC_OSCFUNDS_CTRL_XTAL_ADJCM (0x3L<<6) +#define BCE_MISC_OSCFUNDS_CTRL_XTAL_ADJCM_0 (0L<<6) +#define BCE_MISC_OSCFUNDS_CTRL_XTAL_ADJCM_1 (1L<<6) +#define BCE_MISC_OSCFUNDS_CTRL_XTAL_ADJCM_2 (2L<<6) +#define BCE_MISC_OSCFUNDS_CTRL_XTAL_ADJCM_3 (3L<<6) +#define BCE_MISC_OSCFUNDS_CTRL_ICBUF_ADJ (0x3L<<8) +#define BCE_MISC_OSCFUNDS_CTRL_ICBUF_ADJ_0 (0L<<8) +#define BCE_MISC_OSCFUNDS_CTRL_ICBUF_ADJ_1 (1L<<8) +#define BCE_MISC_OSCFUNDS_CTRL_ICBUF_ADJ_2 (2L<<8) +#define BCE_MISC_OSCFUNDS_CTRL_ICBUF_ADJ_3 (3L<<8) +#define BCE_MISC_OSCFUNDS_CTRL_IAMP_ADJ (0x3L<<10) +#define BCE_MISC_OSCFUNDS_CTRL_IAMP_ADJ_0 (0L<<10) +#define BCE_MISC_OSCFUNDS_CTRL_IAMP_ADJ_1 (1L<<10) +#define BCE_MISC_OSCFUNDS_CTRL_IAMP_ADJ_2 (2L<<10) +#define BCE_MISC_OSCFUNDS_CTRL_IAMP_ADJ_3 (3L<<10) + + +/* + * dma_reg definition + * offset: 0xc00 + */ +#define BCE_DMA_COMMAND 0x00000c00 +#define BCE_DMA_COMMAND_ENABLE (1L<<0) + +#define BCE_DMA_STATUS 0x00000c04 +#define BCE_DMA_STATUS_PAR_ERROR_STATE (1L<<0) +#define BCE_DMA_STATUS_READ_TRANSFERS_STAT (1L<<16) +#define BCE_DMA_STATUS_READ_DELAY_PCI_CLKS_STAT (1L<<17) +#define BCE_DMA_STATUS_BIG_READ_TRANSFERS_STAT (1L<<18) +#define BCE_DMA_STATUS_BIG_READ_DELAY_PCI_CLKS_STAT (1L<<19) +#define BCE_DMA_STATUS_BIG_READ_RETRY_AFTER_DATA_STAT (1L<<20) +#define BCE_DMA_STATUS_WRITE_TRANSFERS_STAT (1L<<21) +#define BCE_DMA_STATUS_WRITE_DELAY_PCI_CLKS_STAT (1L<<22) +#define BCE_DMA_STATUS_BIG_WRITE_TRANSFERS_STAT (1L<<23) +#define BCE_DMA_STATUS_BIG_WRITE_DELAY_PCI_CLKS_STAT (1L<<24) +#define BCE_DMA_STATUS_BIG_WRITE_RETRY_AFTER_DATA_STAT (1L<<25) + +#define BCE_DMA_CONFIG 0x00000c08 +#define BCE_DMA_CONFIG_DATA_BYTE_SWAP (1L<<0) +#define BCE_DMA_CONFIG_DATA_WORD_SWAP (1L<<1) +#define BCE_DMA_CONFIG_CNTL_BYTE_SWAP (1L<<4) +#define BCE_DMA_CONFIG_CNTL_WORD_SWAP (1L<<5) +#define BCE_DMA_CONFIG_ONE_DMA (1L<<6) +#define BCE_DMA_CONFIG_CNTL_TWO_DMA (1L<<7) +#define BCE_DMA_CONFIG_CNTL_FPGA_MODE (1L<<8) +#define BCE_DMA_CONFIG_CNTL_PING_PONG_DMA (1L<<10) +#define BCE_DMA_CONFIG_CNTL_PCI_COMP_DLY (1L<<11) +#define BCE_DMA_CONFIG_NO_RCHANS_IN_USE (0xfL<<12) +#define BCE_DMA_CONFIG_NO_WCHANS_IN_USE (0xfL<<16) +#define BCE_DMA_CONFIG_PCI_CLK_CMP_BITS (0x7L<<20) +#define BCE_DMA_CONFIG_PCI_FAST_CLK_CMP (1L<<23) +#define BCE_DMA_CONFIG_BIG_SIZE (0xfL<<24) +#define BCE_DMA_CONFIG_BIG_SIZE_NONE (0x0L<<24) +#define BCE_DMA_CONFIG_BIG_SIZE_64 (0x1L<<24) +#define BCE_DMA_CONFIG_BIG_SIZE_128 (0x2L<<24) +#define BCE_DMA_CONFIG_BIG_SIZE_256 (0x4L<<24) +#define BCE_DMA_CONFIG_BIG_SIZE_512 (0x8L<<24) + +#define BCE_DMA_BLACKOUT 0x00000c0c +#define BCE_DMA_BLACKOUT_RD_RETRY_BLACKOUT (0xffL<<0) +#define BCE_DMA_BLACKOUT_2ND_RD_RETRY_BLACKOUT (0xffL<<8) +#define BCE_DMA_BLACKOUT_WR_RETRY_BLACKOUT (0xffL<<16) + +#define BCE_DMA_RCHAN_STAT 0x00000c30 +#define BCE_DMA_RCHAN_STAT_COMP_CODE_0 (0x7L<<0) +#define BCE_DMA_RCHAN_STAT_PAR_ERR_0 (1L<<3) +#define BCE_DMA_RCHAN_STAT_COMP_CODE_1 (0x7L<<4) +#define BCE_DMA_RCHAN_STAT_PAR_ERR_1 (1L<<7) +#define BCE_DMA_RCHAN_STAT_COMP_CODE_2 (0x7L<<8) +#define BCE_DMA_RCHAN_STAT_PAR_ERR_2 (1L<<11) +#define BCE_DMA_RCHAN_STAT_COMP_CODE_3 (0x7L<<12) +#define BCE_DMA_RCHAN_STAT_PAR_ERR_3 (1L<<15) +#define BCE_DMA_RCHAN_STAT_COMP_CODE_4 (0x7L<<16) +#define BCE_DMA_RCHAN_STAT_PAR_ERR_4 (1L<<19) +#define BCE_DMA_RCHAN_STAT_COMP_CODE_5 (0x7L<<20) +#define BCE_DMA_RCHAN_STAT_PAR_ERR_5 (1L<<23) +#define BCE_DMA_RCHAN_STAT_COMP_CODE_6 (0x7L<<24) +#define BCE_DMA_RCHAN_STAT_PAR_ERR_6 (1L<<27) +#define BCE_DMA_RCHAN_STAT_COMP_CODE_7 (0x7L<<28) +#define BCE_DMA_RCHAN_STAT_PAR_ERR_7 (1L<<31) + +#define BCE_DMA_WCHAN_STAT 0x00000c34 +#define BCE_DMA_WCHAN_STAT_COMP_CODE_0 (0x7L<<0) +#define BCE_DMA_WCHAN_STAT_PAR_ERR_0 (1L<<3) +#define BCE_DMA_WCHAN_STAT_COMP_CODE_1 (0x7L<<4) +#define BCE_DMA_WCHAN_STAT_PAR_ERR_1 (1L<<7) +#define BCE_DMA_WCHAN_STAT_COMP_CODE_2 (0x7L<<8) +#define BCE_DMA_WCHAN_STAT_PAR_ERR_2 (1L<<11) +#define BCE_DMA_WCHAN_STAT_COMP_CODE_3 (0x7L<<12) +#define BCE_DMA_WCHAN_STAT_PAR_ERR_3 (1L<<15) +#define BCE_DMA_WCHAN_STAT_COMP_CODE_4 (0x7L<<16) +#define BCE_DMA_WCHAN_STAT_PAR_ERR_4 (1L<<19) +#define BCE_DMA_WCHAN_STAT_COMP_CODE_5 (0x7L<<20) +#define BCE_DMA_WCHAN_STAT_PAR_ERR_5 (1L<<23) +#define BCE_DMA_WCHAN_STAT_COMP_CODE_6 (0x7L<<24) +#define BCE_DMA_WCHAN_STAT_PAR_ERR_6 (1L<<27) +#define BCE_DMA_WCHAN_STAT_COMP_CODE_7 (0x7L<<28) +#define BCE_DMA_WCHAN_STAT_PAR_ERR_7 (1L<<31) + +#define BCE_DMA_RCHAN_ASSIGNMENT 0x00000c38 +#define BCE_DMA_RCHAN_ASSIGNMENT_0 (0xfL<<0) +#define BCE_DMA_RCHAN_ASSIGNMENT_1 (0xfL<<4) +#define BCE_DMA_RCHAN_ASSIGNMENT_2 (0xfL<<8) +#define BCE_DMA_RCHAN_ASSIGNMENT_3 (0xfL<<12) +#define BCE_DMA_RCHAN_ASSIGNMENT_4 (0xfL<<16) +#define BCE_DMA_RCHAN_ASSIGNMENT_5 (0xfL<<20) +#define BCE_DMA_RCHAN_ASSIGNMENT_6 (0xfL<<24) +#define BCE_DMA_RCHAN_ASSIGNMENT_7 (0xfL<<28) + +#define BCE_DMA_WCHAN_ASSIGNMENT 0x00000c3c +#define BCE_DMA_WCHAN_ASSIGNMENT_0 (0xfL<<0) +#define BCE_DMA_WCHAN_ASSIGNMENT_1 (0xfL<<4) +#define BCE_DMA_WCHAN_ASSIGNMENT_2 (0xfL<<8) +#define BCE_DMA_WCHAN_ASSIGNMENT_3 (0xfL<<12) +#define BCE_DMA_WCHAN_ASSIGNMENT_4 (0xfL<<16) +#define BCE_DMA_WCHAN_ASSIGNMENT_5 (0xfL<<20) +#define BCE_DMA_WCHAN_ASSIGNMENT_6 (0xfL<<24) +#define BCE_DMA_WCHAN_ASSIGNMENT_7 (0xfL<<28) + +#define BCE_DMA_RCHAN_STAT_00 0x00000c40 +#define BCE_DMA_RCHAN_STAT_00_RCHAN_STA_HOST_ADDR_LOW (0xffffffffL<<0) + +#define BCE_DMA_RCHAN_STAT_01 0x00000c44 +#define BCE_DMA_RCHAN_STAT_01_RCHAN_STA_HOST_ADDR_HIGH (0xffffffffL<<0) + +#define BCE_DMA_RCHAN_STAT_02 0x00000c48 +#define BCE_DMA_RCHAN_STAT_02_LENGTH (0xffffL<<0) +#define BCE_DMA_RCHAN_STAT_02_WORD_SWAP (1L<<16) +#define BCE_DMA_RCHAN_STAT_02_BYTE_SWAP (1L<<17) +#define BCE_DMA_RCHAN_STAT_02_PRIORITY_LVL (1L<<18) + +#define BCE_DMA_RCHAN_STAT_10 0x00000c4c +#define BCE_DMA_RCHAN_STAT_11 0x00000c50 +#define BCE_DMA_RCHAN_STAT_12 0x00000c54 +#define BCE_DMA_RCHAN_STAT_20 0x00000c58 +#define BCE_DMA_RCHAN_STAT_21 0x00000c5c +#define BCE_DMA_RCHAN_STAT_22 0x00000c60 +#define BCE_DMA_RCHAN_STAT_30 0x00000c64 +#define BCE_DMA_RCHAN_STAT_31 0x00000c68 +#define BCE_DMA_RCHAN_STAT_32 0x00000c6c +#define BCE_DMA_RCHAN_STAT_40 0x00000c70 +#define BCE_DMA_RCHAN_STAT_41 0x00000c74 +#define BCE_DMA_RCHAN_STAT_42 0x00000c78 +#define BCE_DMA_RCHAN_STAT_50 0x00000c7c +#define BCE_DMA_RCHAN_STAT_51 0x00000c80 +#define BCE_DMA_RCHAN_STAT_52 0x00000c84 +#define BCE_DMA_RCHAN_STAT_60 0x00000c88 +#define BCE_DMA_RCHAN_STAT_61 0x00000c8c +#define BCE_DMA_RCHAN_STAT_62 0x00000c90 +#define BCE_DMA_RCHAN_STAT_70 0x00000c94 +#define BCE_DMA_RCHAN_STAT_71 0x00000c98 +#define BCE_DMA_RCHAN_STAT_72 0x00000c9c +#define BCE_DMA_WCHAN_STAT_00 0x00000ca0 +#define BCE_DMA_WCHAN_STAT_00_WCHAN_STA_HOST_ADDR_LOW (0xffffffffL<<0) + +#define BCE_DMA_WCHAN_STAT_01 0x00000ca4 +#define BCE_DMA_WCHAN_STAT_01_WCHAN_STA_HOST_ADDR_HIGH (0xffffffffL<<0) + +#define BCE_DMA_WCHAN_STAT_02 0x00000ca8 +#define BCE_DMA_WCHAN_STAT_02_LENGTH (0xffffL<<0) +#define BCE_DMA_WCHAN_STAT_02_WORD_SWAP (1L<<16) +#define BCE_DMA_WCHAN_STAT_02_BYTE_SWAP (1L<<17) +#define BCE_DMA_WCHAN_STAT_02_PRIORITY_LVL (1L<<18) + +#define BCE_DMA_WCHAN_STAT_10 0x00000cac +#define BCE_DMA_WCHAN_STAT_11 0x00000cb0 +#define BCE_DMA_WCHAN_STAT_12 0x00000cb4 +#define BCE_DMA_WCHAN_STAT_20 0x00000cb8 +#define BCE_DMA_WCHAN_STAT_21 0x00000cbc +#define BCE_DMA_WCHAN_STAT_22 0x00000cc0 +#define BCE_DMA_WCHAN_STAT_30 0x00000cc4 +#define BCE_DMA_WCHAN_STAT_31 0x00000cc8 +#define BCE_DMA_WCHAN_STAT_32 0x00000ccc +#define BCE_DMA_WCHAN_STAT_40 0x00000cd0 +#define BCE_DMA_WCHAN_STAT_41 0x00000cd4 +#define BCE_DMA_WCHAN_STAT_42 0x00000cd8 +#define BCE_DMA_WCHAN_STAT_50 0x00000cdc +#define BCE_DMA_WCHAN_STAT_51 0x00000ce0 +#define BCE_DMA_WCHAN_STAT_52 0x00000ce4 +#define BCE_DMA_WCHAN_STAT_60 0x00000ce8 +#define BCE_DMA_WCHAN_STAT_61 0x00000cec +#define BCE_DMA_WCHAN_STAT_62 0x00000cf0 +#define BCE_DMA_WCHAN_STAT_70 0x00000cf4 +#define BCE_DMA_WCHAN_STAT_71 0x00000cf8 +#define BCE_DMA_WCHAN_STAT_72 0x00000cfc +#define BCE_DMA_ARB_STAT_00 0x00000d00 +#define BCE_DMA_ARB_STAT_00_MASTER (0xffffL<<0) +#define BCE_DMA_ARB_STAT_00_MASTER_ENC (0xffL<<16) +#define BCE_DMA_ARB_STAT_00_CUR_BINMSTR (0xffL<<24) + +#define BCE_DMA_ARB_STAT_01 0x00000d04 +#define BCE_DMA_ARB_STAT_01_LPR_RPTR (0xfL<<0) +#define BCE_DMA_ARB_STAT_01_LPR_WPTR (0xfL<<4) +#define BCE_DMA_ARB_STAT_01_LPB_RPTR (0xfL<<8) +#define BCE_DMA_ARB_STAT_01_LPB_WPTR (0xfL<<12) +#define BCE_DMA_ARB_STAT_01_HPR_RPTR (0xfL<<16) +#define BCE_DMA_ARB_STAT_01_HPR_WPTR (0xfL<<20) +#define BCE_DMA_ARB_STAT_01_HPB_RPTR (0xfL<<24) +#define BCE_DMA_ARB_STAT_01_HPB_WPTR (0xfL<<28) + +#define BCE_DMA_FUSE_CTRL0_CMD 0x00000f00 +#define BCE_DMA_FUSE_CTRL0_CMD_PWRUP_DONE (1L<<0) +#define BCE_DMA_FUSE_CTRL0_CMD_SHIFT_DONE (1L<<1) +#define BCE_DMA_FUSE_CTRL0_CMD_SHIFT (1L<<2) +#define BCE_DMA_FUSE_CTRL0_CMD_LOAD (1L<<3) +#define BCE_DMA_FUSE_CTRL0_CMD_SEL (0xfL<<8) + +#define BCE_DMA_FUSE_CTRL0_DATA 0x00000f04 +#define BCE_DMA_FUSE_CTRL1_CMD 0x00000f08 +#define BCE_DMA_FUSE_CTRL1_CMD_PWRUP_DONE (1L<<0) +#define BCE_DMA_FUSE_CTRL1_CMD_SHIFT_DONE (1L<<1) +#define BCE_DMA_FUSE_CTRL1_CMD_SHIFT (1L<<2) +#define BCE_DMA_FUSE_CTRL1_CMD_LOAD (1L<<3) +#define BCE_DMA_FUSE_CTRL1_CMD_SEL (0xfL<<8) + +#define BCE_DMA_FUSE_CTRL1_DATA 0x00000f0c +#define BCE_DMA_FUSE_CTRL2_CMD 0x00000f10 +#define BCE_DMA_FUSE_CTRL2_CMD_PWRUP_DONE (1L<<0) +#define BCE_DMA_FUSE_CTRL2_CMD_SHIFT_DONE (1L<<1) +#define BCE_DMA_FUSE_CTRL2_CMD_SHIFT (1L<<2) +#define BCE_DMA_FUSE_CTRL2_CMD_LOAD (1L<<3) +#define BCE_DMA_FUSE_CTRL2_CMD_SEL (0xfL<<8) + +#define BCE_DMA_FUSE_CTRL2_DATA 0x00000f14 + + +/* + * context_reg definition + * offset: 0x1000 + */ +#define BCE_CTX_COMMAND 0x00001000 +#define BCE_CTX_COMMAND_ENABLED (1L<<0) +#define BCE_CTX_COMMAND_DISABLE_USAGE_CNT (1L<<1) +#define BCE_CTX_COMMAND_DISABLE_PLRU (1L<<2) +#define BCE_CTX_COMMAND_DISABLE_COMBINE_READ (1L<<3) +#define BCE_CTX_COMMAND_FLUSH_AHEAD (0x1fL<<8) +#define BCE_CTX_COMMAND_MEM_INIT (1L<<13) +#define BCE_CTX_COMMAND_PAGE_SIZE (0xfL<<16) +#define BCE_CTX_COMMAND_PAGE_SIZE_256 (0L<<16) +#define BCE_CTX_COMMAND_PAGE_SIZE_512 (1L<<16) +#define BCE_CTX_COMMAND_PAGE_SIZE_1K (2L<<16) +#define BCE_CTX_COMMAND_PAGE_SIZE_2K (3L<<16) +#define BCE_CTX_COMMAND_PAGE_SIZE_4K (4L<<16) +#define BCE_CTX_COMMAND_PAGE_SIZE_8K (5L<<16) +#define BCE_CTX_COMMAND_PAGE_SIZE_16K (6L<<16) +#define BCE_CTX_COMMAND_PAGE_SIZE_32K (7L<<16) +#define BCE_CTX_COMMAND_PAGE_SIZE_64K (8L<<16) +#define BCE_CTX_COMMAND_PAGE_SIZE_128K (9L<<16) +#define BCE_CTX_COMMAND_PAGE_SIZE_256K (10L<<16) +#define BCE_CTX_COMMAND_PAGE_SIZE_512K (11L<<16) +#define BCE_CTX_COMMAND_PAGE_SIZE_1M (12L<<16) + +#define BCE_CTX_STATUS 0x00001004 +#define BCE_CTX_STATUS_LOCK_WAIT (1L<<0) +#define BCE_CTX_STATUS_READ_STAT (1L<<16) +#define BCE_CTX_STATUS_WRITE_STAT (1L<<17) +#define BCE_CTX_STATUS_ACC_STALL_STAT (1L<<18) +#define BCE_CTX_STATUS_LOCK_STALL_STAT (1L<<19) +#define BCE_CTX_STATUS_EXT_READ_STAT (1L<<20) +#define BCE_CTX_STATUS_EXT_WRITE_STAT (1L<<21) +#define BCE_CTX_STATUS_MISS_STAT (1L<<22) +#define BCE_CTX_STATUS_HIT_STAT (1L<<23) +#define BCE_CTX_STATUS_DEAD_LOCK (1L<<24) +#define BCE_CTX_STATUS_USAGE_CNT_ERR (1L<<25) +#define BCE_CTX_STATUS_INVALID_PAGE (1L<<26) + +#define BCE_CTX_VIRT_ADDR 0x00001008 +#define BCE_CTX_VIRT_ADDR_VIRT_ADDR (0x7fffL<<6) + +#define BCE_CTX_PAGE_TBL 0x0000100c +#define BCE_CTX_PAGE_TBL_PAGE_TBL (0x3fffL<<6) + +#define BCE_CTX_DATA_ADR 0x00001010 +#define BCE_CTX_DATA_ADR_DATA_ADR (0x7ffffL<<2) + +#define BCE_CTX_DATA 0x00001014 +#define BCE_CTX_LOCK 0x00001018 +#define BCE_CTX_LOCK_TYPE (0x7L<<0) +#define BCE_CTX_LOCK_TYPE_LOCK_TYPE_VOID (0x0L<<0) +#define BCE_CTX_LOCK_TYPE_LOCK_TYPE_PROTOCOL (0x1L<<0) +#define BCE_CTX_LOCK_TYPE_LOCK_TYPE_TX (0x2L<<0) +#define BCE_CTX_LOCK_TYPE_LOCK_TYPE_TIMER (0x4L<<0) +#define BCE_CTX_LOCK_TYPE_LOCK_TYPE_COMPLETE (0x7L<<0) +#define BCE_CTX_LOCK_TYPE_VOID_XI (0L<<0) +#define BCE_CTX_LOCK_TYPE_PROTOCOL_XI (1L<<0) +#define BCE_CTX_LOCK_TYPE_TX_XI (2L<<0) +#define BCE_CTX_LOCK_TYPE_TIMER_XI (4L<<0) +#define BCE_CTX_LOCK_TYPE_COMPLETE_XI (7L<<0) +#define BCE_CTX_LOCK_CID_VALUE (0x3fffL<<7) +#define BCE_CTX_LOCK_GRANTED (1L<<26) +#define BCE_CTX_LOCK_MODE (0x7L<<27) +#define BCE_CTX_LOCK_MODE_UNLOCK (0x0L<<27) +#define BCE_CTX_LOCK_MODE_IMMEDIATE (0x1L<<27) +#define BCE_CTX_LOCK_MODE_SURE (0x2L<<27) +#define BCE_CTX_LOCK_STATUS (1L<<30) +#define BCE_CTX_LOCK_REQ (1L<<31) + +#define BCE_CTX_CTX_CTRL 0x0000101c +#define BCE_CTX_CTX_CTRL_CTX_ADDR (0x7ffffL<<2) +#define BCE_CTX_CTX_CTRL_MOD_USAGE_CNT (0x3L<<21) +#define BCE_CTX_CTX_CTRL_NO_RAM_ACC (1L<<23) +#define BCE_CTX_CTX_CTRL_PREFETCH_SIZE (0x3L<<24) +#define BCE_CTX_CTX_CTRL_ATTR (1L<<26) +#define BCE_CTX_CTX_CTRL_WRITE_REQ (1L<<30) +#define BCE_CTX_CTX_CTRL_READ_REQ (1L<<31) + +#define BCE_CTX_CTX_DATA 0x00001020 +#define BCE_CTX_ACCESS_STATUS 0x00001040 +#define BCE_CTX_ACCESS_STATUS_MASTERENCODED (0xfL<<0) +#define BCE_CTX_ACCESS_STATUS_ACCESSMEMORYSM (0x3L<<10) +#define BCE_CTX_ACCESS_STATUS_PAGETABLEINITSM (0x3L<<12) +#define BCE_CTX_ACCESS_STATUS_ACCESSMEMORYINITSM (0x3L<<14) +#define BCE_CTX_ACCESS_STATUS_QUALIFIED_REQUEST (0x7ffL<<17) +#define BCE_CTX_ACCESS_STATUS_CAMMASTERENCODED_XI (0x1fL<<0) +#define BCE_CTX_ACCESS_STATUS_CACHEMASTERENCODED_XI (0x1fL<<5) +#define BCE_CTX_ACCESS_STATUS_REQUEST_XI (0x3fffffL<<10) + +#define BCE_CTX_DBG_LOCK_STATUS 0x00001044 +#define BCE_CTX_DBG_LOCK_STATUS_SM (0x3ffL<<0) +#define BCE_CTX_DBG_LOCK_STATUS_MATCH (0x3ffL<<22) + +#define BCE_CTX_CACHE_CTRL_STATUS 0x00001048 +#define BCE_CTX_CACHE_CTRL_STATUS_RFIFO_OVERFLOW (1L<<0) +#define BCE_CTX_CACHE_CTRL_STATUS_INVALID_READ_COMP (1L<<1) +#define BCE_CTX_CACHE_CTRL_STATUS_FLUSH_START (1L<<6) +#define BCE_CTX_CACHE_CTRL_STATUS_FREE_ENTRY_CNT (0x3fL<<7) +#define BCE_CTX_CACHE_CTRL_STATUS_CACHE_ENTRY_NEEDED (0x3fL<<13) +#define BCE_CTX_CACHE_CTRL_STATUS_RD_CHAN0_ACTIVE (1L<<19) +#define BCE_CTX_CACHE_CTRL_STATUS_RD_CHAN1_ACTIVE (1L<<20) +#define BCE_CTX_CACHE_CTRL_STATUS_RD_CHAN2_ACTIVE (1L<<21) +#define BCE_CTX_CACHE_CTRL_STATUS_RD_CHAN3_ACTIVE (1L<<22) +#define BCE_CTX_CACHE_CTRL_STATUS_RD_CHAN4_ACTIVE (1L<<23) +#define BCE_CTX_CACHE_CTRL_STATUS_RD_CHAN5_ACTIVE (1L<<24) +#define BCE_CTX_CACHE_CTRL_STATUS_RD_CHAN6_ACTIVE (1L<<25) +#define BCE_CTX_CACHE_CTRL_STATUS_RD_CHAN7_ACTIVE (1L<<26) +#define BCE_CTX_CACHE_CTRL_STATUS_RD_CHAN8_ACTIVE (1L<<27) +#define BCE_CTX_CACHE_CTRL_STATUS_RD_CHAN9_ACTIVE (1L<<28) +#define BCE_CTX_CACHE_CTRL_STATUS_RD_CHAN10_ACTIVE (1L<<29) + +#define BCE_CTX_CACHE_CTRL_SM_STATUS 0x0000104c +#define BCE_CTX_CACHE_CTRL_SM_STATUS_CS_DWC (0x7L<<0) +#define BCE_CTX_CACHE_CTRL_SM_STATUS_CS_WFIFOC (0x7L<<3) +#define BCE_CTX_CACHE_CTRL_SM_STATUS_CS_RTAGC (0x7L<<6) +#define BCE_CTX_CACHE_CTRL_SM_STATUS_CS_RFIFOC (0x7L<<9) +#define BCE_CTX_CACHE_CTRL_SM_STATUS_INVALID_BLK_ADDR (0x7fffL<<16) + +#define BCE_CTX_CACHE_STATUS 0x00001050 +#define BCE_CTX_CACHE_STATUS_HELD_ENTRIES (0x3ffL<<0) +#define BCE_CTX_CACHE_STATUS_MAX_HELD_ENTRIES (0x3ffL<<16) + +#define BCE_CTX_DMA_STATUS 0x00001054 +#define BCE_CTX_DMA_STATUS_RD_CHAN0_STATUS (0x3L<<0) +#define BCE_CTX_DMA_STATUS_RD_CHAN1_STATUS (0x3L<<2) +#define BCE_CTX_DMA_STATUS_RD_CHAN2_STATUS (0x3L<<4) +#define BCE_CTX_DMA_STATUS_RD_CHAN3_STATUS (0x3L<<6) +#define BCE_CTX_DMA_STATUS_RD_CHAN4_STATUS (0x3L<<8) +#define BCE_CTX_DMA_STATUS_RD_CHAN5_STATUS (0x3L<<10) +#define BCE_CTX_DMA_STATUS_RD_CHAN6_STATUS (0x3L<<12) +#define BCE_CTX_DMA_STATUS_RD_CHAN7_STATUS (0x3L<<14) +#define BCE_CTX_DMA_STATUS_RD_CHAN8_STATUS (0x3L<<16) +#define BCE_CTX_DMA_STATUS_RD_CHAN9_STATUS (0x3L<<18) +#define BCE_CTX_DMA_STATUS_RD_CHAN10_STATUS (0x3L<<20) + +#define BCE_CTX_REP_STATUS 0x00001058 +#define BCE_CTX_REP_STATUS_ERROR_ENTRY (0x3ffL<<0) +#define BCE_CTX_REP_STATUS_ERROR_CLIENT_ID (0x1fL<<10) +#define BCE_CTX_REP_STATUS_USAGE_CNT_MAX_ERR (1L<<16) +#define BCE_CTX_REP_STATUS_USAGE_CNT_MIN_ERR (1L<<17) +#define BCE_CTX_REP_STATUS_USAGE_CNT_MISS_ERR (1L<<18) + +#define BCE_CTX_CKSUM_ERROR_STATUS 0x0000105c +#define BCE_CTX_CKSUM_ERROR_STATUS_CALCULATED (0xffffL<<0) +#define BCE_CTX_CKSUM_ERROR_STATUS_EXPECTED (0xffffL<<16) + +#define BCE_CTX_CHNL_LOCK_STATUS_0 0x00001080 +#define BCE_CTX_CHNL_LOCK_STATUS_0_CID (0x3fffL<<0) +#define BCE_CTX_CHNL_LOCK_STATUS_0_TYPE (0x3L<<14) +#define BCE_CTX_CHNL_LOCK_STATUS_0_MODE (1L<<16) +#define BCE_CTX_CHNL_LOCK_STATUS_0_MODE_XI (1L<<14) +#define BCE_CTX_CHNL_LOCK_STATUS_0_TYPE_XI (0x7L<<15) + +#define BCE_CTX_CHNL_LOCK_STATUS_1 0x00001084 +#define BCE_CTX_CHNL_LOCK_STATUS_2 0x00001088 +#define BCE_CTX_CHNL_LOCK_STATUS_3 0x0000108c +#define BCE_CTX_CHNL_LOCK_STATUS_4 0x00001090 +#define BCE_CTX_CHNL_LOCK_STATUS_5 0x00001094 +#define BCE_CTX_CHNL_LOCK_STATUS_6 0x00001098 +#define BCE_CTX_CHNL_LOCK_STATUS_7 0x0000109c +#define BCE_CTX_CHNL_LOCK_STATUS_8 0x000010a0 +#define BCE_CTX_CHNL_LOCK_STATUS_9 0x000010a4 + +#define BCE_CTX_CACHE_DATA 0x000010c4 +#define BCE_CTX_HOST_PAGE_TBL_CTRL 0x000010c8 +#define BCE_CTX_HOST_PAGE_TBL_CTRL_PAGE_TBL_ADDR (0x1ffL<<0) +#define BCE_CTX_HOST_PAGE_TBL_CTRL_WRITE_REQ (1L<<30) +#define BCE_CTX_HOST_PAGE_TBL_CTRL_READ_REQ (1L<<31) + +#define BCE_CTX_HOST_PAGE_TBL_DATA0 0x000010cc +#define BCE_CTX_HOST_PAGE_TBL_DATA0_VALID (1L<<0) +#define BCE_CTX_HOST_PAGE_TBL_DATA0_VALUE (0xffffffL<<8) + +#define BCE_CTX_HOST_PAGE_TBL_DATA1 0x000010d0 +#define BCE_CTX_CAM_CTRL 0x000010d4 +#define BCE_CTX_CAM_CTRL_CAM_ADDR (0x3ffL<<0) +#define BCE_CTX_CAM_CTRL_RESET (1L<<27) +#define BCE_CTX_CAM_CTRL_INVALIDATE (1L<<28) +#define BCE_CTX_CAM_CTRL_SEARCH (1L<<29) +#define BCE_CTX_CAM_CTRL_WRITE_REQ (1L<<30) +#define BCE_CTX_CAM_CTRL_READ_REQ (1L<<31) + + +/* + * emac_reg definition + * offset: 0x1400 + */ +#define BCE_EMAC_MODE 0x00001400 +#define BCE_EMAC_MODE_RESET (1L<<0) +#define BCE_EMAC_MODE_HALF_DUPLEX (1L<<1) +#define BCE_EMAC_MODE_PORT (0x3L<<2) +#define BCE_EMAC_MODE_PORT_NONE (0L<<2) +#define BCE_EMAC_MODE_PORT_MII (1L<<2) +#define BCE_EMAC_MODE_PORT_GMII (2L<<2) +#define BCE_EMAC_MODE_PORT_MII_10 (3L<<2) +#define BCE_EMAC_MODE_MAC_LOOP (1L<<4) +#define BCE_EMAC_MODE_25G (1L<<5) +#define BCE_EMAC_MODE_TAGGED_MAC_CTL (1L<<7) +#define BCE_EMAC_MODE_TX_BURST (1L<<8) +#define BCE_EMAC_MODE_MAX_DEFER_DROP_ENA (1L<<9) +#define BCE_EMAC_MODE_EXT_LINK_POL (1L<<10) +#define BCE_EMAC_MODE_FORCE_LINK (1L<<11) +#define BCE_EMAC_MODE_MPKT (1L<<18) +#define BCE_EMAC_MODE_MPKT_RCVD (1L<<19) +#define BCE_EMAC_MODE_ACPI_RCVD (1L<<20) + +#define BCE_EMAC_STATUS 0x00001404 +#define BCE_EMAC_STATUS_LINK (1L<<11) +#define BCE_EMAC_STATUS_LINK_CHANGE (1L<<12) +#define BCE_EMAC_STATUS_MI_COMPLETE (1L<<22) +#define BCE_EMAC_STATUS_MI_INT (1L<<23) +#define BCE_EMAC_STATUS_AP_ERROR (1L<<24) +#define BCE_EMAC_STATUS_PARITY_ERROR_STATE (1L<<31) + +#define BCE_EMAC_ATTENTION_ENA 0x00001408 +#define BCE_EMAC_ATTENTION_ENA_LINK (1L<<11) +#define BCE_EMAC_ATTENTION_ENA_MI_COMPLETE (1L<<22) +#define BCE_EMAC_ATTENTION_ENA_MI_INT (1L<<23) +#define BCE_EMAC_ATTENTION_ENA_AP_ERROR (1L<<24) + +#define BCE_EMAC_LED 0x0000140c +#define BCE_EMAC_LED_OVERRIDE (1L<<0) +#define BCE_EMAC_LED_1000MB_OVERRIDE (1L<<1) +#define BCE_EMAC_LED_100MB_OVERRIDE (1L<<2) +#define BCE_EMAC_LED_10MB_OVERRIDE (1L<<3) +#define BCE_EMAC_LED_TRAFFIC_OVERRIDE (1L<<4) +#define BCE_EMAC_LED_BLNK_TRAFFIC (1L<<5) +#define BCE_EMAC_LED_TRAFFIC (1L<<6) +#define BCE_EMAC_LED_1000MB (1L<<7) +#define BCE_EMAC_LED_100MB (1L<<8) +#define BCE_EMAC_LED_10MB (1L<<9) +#define BCE_EMAC_LED_TRAFFIC_STAT (1L<<10) +#define BCE_EMAC_LED_BLNK_RATE (0xfffL<<19) +#define BCE_EMAC_LED_BLNK_RATE_ENA (1L<<31) + +#define BCE_EMAC_MAC_MATCH0 0x00001410 +#define BCE_EMAC_MAC_MATCH1 0x00001414 +#define BCE_EMAC_MAC_MATCH2 0x00001418 +#define BCE_EMAC_MAC_MATCH3 0x0000141c +#define BCE_EMAC_MAC_MATCH4 0x00001420 +#define BCE_EMAC_MAC_MATCH5 0x00001424 +#define BCE_EMAC_MAC_MATCH6 0x00001428 +#define BCE_EMAC_MAC_MATCH7 0x0000142c +#define BCE_EMAC_MAC_MATCH8 0x00001430 +#define BCE_EMAC_MAC_MATCH9 0x00001434 +#define BCE_EMAC_MAC_MATCH10 0x00001438 +#define BCE_EMAC_MAC_MATCH11 0x0000143c +#define BCE_EMAC_MAC_MATCH12 0x00001440 +#define BCE_EMAC_MAC_MATCH13 0x00001444 +#define BCE_EMAC_MAC_MATCH14 0x00001448 +#define BCE_EMAC_MAC_MATCH15 0x0000144c +#define BCE_EMAC_MAC_MATCH16 0x00001450 +#define BCE_EMAC_MAC_MATCH17 0x00001454 +#define BCE_EMAC_MAC_MATCH18 0x00001458 +#define BCE_EMAC_MAC_MATCH19 0x0000145c +#define BCE_EMAC_MAC_MATCH20 0x00001460 +#define BCE_EMAC_MAC_MATCH21 0x00001464 +#define BCE_EMAC_MAC_MATCH22 0x00001468 +#define BCE_EMAC_MAC_MATCH23 0x0000146c +#define BCE_EMAC_MAC_MATCH24 0x00001470 +#define BCE_EMAC_MAC_MATCH25 0x00001474 +#define BCE_EMAC_MAC_MATCH26 0x00001478 +#define BCE_EMAC_MAC_MATCH27 0x0000147c +#define BCE_EMAC_MAC_MATCH28 0x00001480 +#define BCE_EMAC_MAC_MATCH29 0x00001484 +#define BCE_EMAC_MAC_MATCH30 0x00001488 +#define BCE_EMAC_MAC_MATCH31 0x0000148c +#define BCE_EMAC_BACKOFF_SEED 0x00001498 +#define BCE_EMAC_BACKOFF_SEED_EMAC_BACKOFF_SEED (0x3ffL<<0) + +#define BCE_EMAC_RX_MTU_SIZE 0x0000149c +#define BCE_EMAC_RX_MTU_SIZE_MTU_SIZE (0xffffL<<0) +#define BCE_EMAC_RX_MTU_SIZE_JUMBO_ENA (1L<<31) + +#define BCE_EMAC_SERDES_CNTL 0x000014a4 +#define BCE_EMAC_SERDES_CNTL_RXR (0x7L<<0) +#define BCE_EMAC_SERDES_CNTL_RXG (0x3L<<3) +#define BCE_EMAC_SERDES_CNTL_RXCKSEL (1L<<6) +#define BCE_EMAC_SERDES_CNTL_TXBIAS (0x7L<<7) +#define BCE_EMAC_SERDES_CNTL_BGMAX (1L<<10) +#define BCE_EMAC_SERDES_CNTL_BGMIN (1L<<11) +#define BCE_EMAC_SERDES_CNTL_TXMODE (1L<<12) +#define BCE_EMAC_SERDES_CNTL_TXEDGE (1L<<13) +#define BCE_EMAC_SERDES_CNTL_SERDES_MODE (1L<<14) +#define BCE_EMAC_SERDES_CNTL_PLLTEST (1L<<15) +#define BCE_EMAC_SERDES_CNTL_CDET_EN (1L<<16) +#define BCE_EMAC_SERDES_CNTL_TBI_LBK (1L<<17) +#define BCE_EMAC_SERDES_CNTL_REMOTE_LBK (1L<<18) +#define BCE_EMAC_SERDES_CNTL_REV_PHASE (1L<<19) +#define BCE_EMAC_SERDES_CNTL_REGCTL12 (0x3L<<20) +#define BCE_EMAC_SERDES_CNTL_REGCTL25 (0x3L<<22) + +#define BCE_EMAC_SERDES_STATUS 0x000014a8 +#define BCE_EMAC_SERDES_STATUS_RX_STAT (0xffL<<0) +#define BCE_EMAC_SERDES_STATUS_COMMA_DET (1L<<8) + +#define BCE_EMAC_MDIO_COMM 0x000014ac +#define BCE_EMAC_MDIO_COMM_DATA (0xffffL<<0) +#define BCE_EMAC_MDIO_COMM_REG_ADDR (0x1fL<<16) +#define BCE_EMAC_MDIO_COMM_PHY_ADDR (0x1fL<<21) +#define BCE_EMAC_MDIO_COMM_COMMAND (0x3L<<26) +#define BCE_EMAC_MDIO_COMM_COMMAND_UNDEFINED_0 (0L<<26) +#define BCE_EMAC_MDIO_COMM_COMMAND_WRITE (1L<<26) +#define BCE_EMAC_MDIO_COMM_COMMAND_READ (2L<<26) +#define BCE_EMAC_MDIO_COMM_COMMAND_UNDEFINED_3 (3L<<26) +#define BCE_EMAC_MDIO_COMM_FAIL (1L<<28) +#define BCE_EMAC_MDIO_COMM_START_BUSY (1L<<29) +#define BCE_EMAC_MDIO_COMM_DISEXT (1L<<30) + +#define BCE_EMAC_MDIO_STATUS 0x000014b0 +#define BCE_EMAC_MDIO_STATUS_LINK (1L<<0) +#define BCE_EMAC_MDIO_STATUS_10MB (1L<<1) + +#define BCE_EMAC_MDIO_MODE 0x000014b4 +#define BCE_EMAC_MDIO_MODE_SHORT_PREAMBLE (1L<<1) +#define BCE_EMAC_MDIO_MODE_AUTO_POLL (1L<<4) +#define BCE_EMAC_MDIO_MODE_BIT_BANG (1L<<8) +#define BCE_EMAC_MDIO_MODE_MDIO (1L<<9) +#define BCE_EMAC_MDIO_MODE_MDIO_OE (1L<<10) +#define BCE_EMAC_MDIO_MODE_MDC (1L<<11) +#define BCE_EMAC_MDIO_MODE_MDINT (1L<<12) +#define BCE_EMAC_MDIO_MODE_CLOCK_CNT (0x1fL<<16) + +#define BCE_EMAC_MDIO_AUTO_STATUS 0x000014b8 +#define BCE_EMAC_MDIO_AUTO_STATUS_AUTO_ERR (1L<<0) + +#define BCE_EMAC_TX_MODE 0x000014bc +#define BCE_EMAC_TX_MODE_RESET (1L<<0) +#define BCE_EMAC_TX_MODE_EXT_PAUSE_EN (1L<<3) +#define BCE_EMAC_TX_MODE_FLOW_EN (1L<<4) +#define BCE_EMAC_TX_MODE_BIG_BACKOFF (1L<<5) +#define BCE_EMAC_TX_MODE_LONG_PAUSE (1L<<6) +#define BCE_EMAC_TX_MODE_LINK_AWARE (1L<<7) + +#define BCE_EMAC_TX_STATUS 0x000014c0 +#define BCE_EMAC_TX_STATUS_XOFFED (1L<<0) +#define BCE_EMAC_TX_STATUS_XOFF_SENT (1L<<1) +#define BCE_EMAC_TX_STATUS_XON_SENT (1L<<2) +#define BCE_EMAC_TX_STATUS_LINK_UP (1L<<3) +#define BCE_EMAC_TX_STATUS_UNDERRUN (1L<<4) + +#define BCE_EMAC_TX_LENGTHS 0x000014c4 +#define BCE_EMAC_TX_LENGTHS_SLOT (0xffL<<0) +#define BCE_EMAC_TX_LENGTHS_IPG (0xfL<<8) +#define BCE_EMAC_TX_LENGTHS_IPG_CRS (0x3L<<12) + +#define BCE_EMAC_RX_MODE 0x000014c8 +#define BCE_EMAC_RX_MODE_RESET (1L<<0) +#define BCE_EMAC_RX_MODE_FLOW_EN (1L<<2) +#define BCE_EMAC_RX_MODE_KEEP_MAC_CONTROL (1L<<3) +#define BCE_EMAC_RX_MODE_KEEP_PAUSE (1L<<4) +#define BCE_EMAC_RX_MODE_ACCEPT_OVERSIZE (1L<<5) +#define BCE_EMAC_RX_MODE_ACCEPT_RUNTS (1L<<6) +#define BCE_EMAC_RX_MODE_LLC_CHK (1L<<7) +#define BCE_EMAC_RX_MODE_PROMISCUOUS (1L<<8) +#define BCE_EMAC_RX_MODE_NO_CRC_CHK (1L<<9) +#define BCE_EMAC_RX_MODE_KEEP_VLAN_TAG (1L<<10) +#define BCE_EMAC_RX_MODE_FILT_BROADCAST (1L<<11) +#define BCE_EMAC_RX_MODE_SORT_MODE (1L<<12) + +#define BCE_EMAC_RX_STATUS 0x000014cc +#define BCE_EMAC_RX_STATUS_FFED (1L<<0) +#define BCE_EMAC_RX_STATUS_FF_RECEIVED (1L<<1) +#define BCE_EMAC_RX_STATUS_N_RECEIVED (1L<<2) + +#define BCE_EMAC_MULTICAST_HASH0 0x000014d0 +#define BCE_EMAC_MULTICAST_HASH1 0x000014d4 +#define BCE_EMAC_MULTICAST_HASH2 0x000014d8 +#define BCE_EMAC_MULTICAST_HASH3 0x000014dc +#define BCE_EMAC_MULTICAST_HASH4 0x000014e0 +#define BCE_EMAC_MULTICAST_HASH5 0x000014e4 +#define BCE_EMAC_MULTICAST_HASH6 0x000014e8 +#define BCE_EMAC_MULTICAST_HASH7 0x000014ec +#define BCE_EMAC_RX_STAT_IFHCINOCTETS 0x00001500 +#define BCE_EMAC_RX_STAT_IFHCINBADOCTETS 0x00001504 +#define BCE_EMAC_RX_STAT_ETHERSTATSFRAGMENTS 0x00001508 +#define BCE_EMAC_RX_STAT_IFHCINUCASTPKTS 0x0000150c +#define BCE_EMAC_RX_STAT_IFHCINMULTICASTPKTS 0x00001510 +#define BCE_EMAC_RX_STAT_IFHCINBROADCASTPKTS 0x00001514 +#define BCE_EMAC_RX_STAT_DOT3STATSFCSERRORS 0x00001518 +#define BCE_EMAC_RX_STAT_DOT3STATSALIGNMENTERRORS 0x0000151c +#define BCE_EMAC_RX_STAT_DOT3STATSCARRIERSENSEERRORS 0x00001520 +#define BCE_EMAC_RX_STAT_XONPAUSEFRAMESRECEIVED 0x00001524 +#define BCE_EMAC_RX_STAT_XOFFPAUSEFRAMESRECEIVED 0x00001528 +#define BCE_EMAC_RX_STAT_MACCONTROLFRAMESRECEIVED 0x0000152c +#define BCE_EMAC_RX_STAT_XOFFSTATEENTERED 0x00001530 +#define BCE_EMAC_RX_STAT_DOT3STATSFRAMESTOOLONG 0x00001534 +#define BCE_EMAC_RX_STAT_ETHERSTATSJABBERS 0x00001538 +#define BCE_EMAC_RX_STAT_ETHERSTATSUNDERSIZEPKTS 0x0000153c +#define BCE_EMAC_RX_STAT_ETHERSTATSPKTS64OCTETS 0x00001540 +#define BCE_EMAC_RX_STAT_ETHERSTATSPKTS65OCTETSTO127OCTETS 0x00001544 +#define BCE_EMAC_RX_STAT_ETHERSTATSPKTS128OCTETSTO255OCTETS 0x00001548 +#define BCE_EMAC_RX_STAT_ETHERSTATSPKTS256OCTETSTO511OCTETS 0x0000154c +#define BCE_EMAC_RX_STAT_ETHERSTATSPKTS512OCTETSTO1023OCTETS 0x00001550 +#define BCE_EMAC_RX_STAT_ETHERSTATSPKTS1024OCTETSTO1522OCTETS 0x00001554 +#define BCE_EMAC_RX_STAT_ETHERSTATSPKTS1523OCTETSTO9022OCTETS 0x00001558 +#define BCE_EMAC_RXMAC_DEBUG0 0x0000155c +#define BCE_EMAC_RXMAC_DEBUG1 0x00001560 +#define BCE_EMAC_RXMAC_DEBUG1_LENGTH_NE_BYTE_COUNT (1L<<0) +#define BCE_EMAC_RXMAC_DEBUG1_LENGTH_OUT_RANGE (1L<<1) +#define BCE_EMAC_RXMAC_DEBUG1_BAD_CRC (1L<<2) +#define BCE_EMAC_RXMAC_DEBUG1_RX_ERROR (1L<<3) +#define BCE_EMAC_RXMAC_DEBUG1_ALIGN_ERROR (1L<<4) +#define BCE_EMAC_RXMAC_DEBUG1_LAST_DATA (1L<<5) +#define BCE_EMAC_RXMAC_DEBUG1_ODD_BYTE_START (1L<<6) +#define BCE_EMAC_RXMAC_DEBUG1_BYTE_COUNT (0xffffL<<7) +#define BCE_EMAC_RXMAC_DEBUG1_SLOT_TIME (0xffL<<23) + +#define BCE_EMAC_RXMAC_DEBUG2 0x00001564 +#define BCE_EMAC_RXMAC_DEBUG2_SM_STATE (0x7L<<0) +#define BCE_EMAC_RXMAC_DEBUG2_SM_STATE_IDLE (0x0L<<0) +#define BCE_EMAC_RXMAC_DEBUG2_SM_STATE_SFD (0x1L<<0) +#define BCE_EMAC_RXMAC_DEBUG2_SM_STATE_DATA (0x2L<<0) +#define BCE_EMAC_RXMAC_DEBUG2_SM_STATE_SKEEP (0x3L<<0) +#define BCE_EMAC_RXMAC_DEBUG2_SM_STATE_EXT (0x4L<<0) +#define BCE_EMAC_RXMAC_DEBUG2_SM_STATE_DROP (0x5L<<0) +#define BCE_EMAC_RXMAC_DEBUG2_SM_STATE_SDROP (0x6L<<0) +#define BCE_EMAC_RXMAC_DEBUG2_SM_STATE_FC (0x7L<<0) +#define BCE_EMAC_RXMAC_DEBUG2_IDI_STATE (0xfL<<3) +#define BCE_EMAC_RXMAC_DEBUG2_IDI_STATE_IDLE (0x0L<<3) +#define BCE_EMAC_RXMAC_DEBUG2_IDI_STATE_DATA0 (0x1L<<3) +#define BCE_EMAC_RXMAC_DEBUG2_IDI_STATE_DATA1 (0x2L<<3) +#define BCE_EMAC_RXMAC_DEBUG2_IDI_STATE_DATA2 (0x3L<<3) +#define BCE_EMAC_RXMAC_DEBUG2_IDI_STATE_DATA3 (0x4L<<3) +#define BCE_EMAC_RXMAC_DEBUG2_IDI_STATE_ABORT (0x5L<<3) +#define BCE_EMAC_RXMAC_DEBUG2_IDI_STATE_WAIT (0x6L<<3) +#define BCE_EMAC_RXMAC_DEBUG2_IDI_STATE_STATUS (0x7L<<3) +#define BCE_EMAC_RXMAC_DEBUG2_IDI_STATE_LAST (0x8L<<3) +#define BCE_EMAC_RXMAC_DEBUG2_BYTE_IN (0xffL<<7) +#define BCE_EMAC_RXMAC_DEBUG2_FALSEC (1L<<15) +#define BCE_EMAC_RXMAC_DEBUG2_TAGGED (1L<<16) +#define BCE_EMAC_RXMAC_DEBUG2_PAUSE_STATE (1L<<18) +#define BCE_EMAC_RXMAC_DEBUG2_PAUSE_STATE_IDLE (0L<<18) +#define BCE_EMAC_RXMAC_DEBUG2_PAUSE_STATE_PAUSED (1L<<18) +#define BCE_EMAC_RXMAC_DEBUG2_SE_COUNTER (0xfL<<19) +#define BCE_EMAC_RXMAC_DEBUG2_QUANTA (0x1fL<<23) + +#define BCE_EMAC_RXMAC_DEBUG3 0x00001568 +#define BCE_EMAC_RXMAC_DEBUG3_PAUSE_CTR (0xffffL<<0) +#define BCE_EMAC_RXMAC_DEBUG3_TMP_PAUSE_CTR (0xffffL<<16) + +#define BCE_EMAC_RXMAC_DEBUG4 0x0000156c +#define BCE_EMAC_RXMAC_DEBUG4_TYPE_FIELD (0xffffL<<0) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE (0x3fL<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_IDLE (0x0L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_UMAC2 (0x1L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_UMAC3 (0x2L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_UNI (0x3L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_MMAC2 (0x7L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_MMAC3 (0x5L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_PSA1 (0x6L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_PSA2 (0x7L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_PSA3 (0x8L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_MC2 (0x9L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_MC3 (0xaL<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_MWAIT1 (0xeL<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_MWAIT2 (0xfL<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_MCHECK (0x10L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_MC (0x11L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_BC2 (0x12L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_BC3 (0x13L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_BSA1 (0x14L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_BSA2 (0x15L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_BSA3 (0x16L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_BTYPE (0x17L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_BC (0x18L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_PTYPE (0x19L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_CMD (0x1aL<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_MAC (0x1bL<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_LATCH (0x1cL<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_XOFF (0x1dL<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_XON (0x1eL<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_PAUSED (0x1fL<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_NPAUSED (0x20L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_TTYPE (0x21L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_TVAL (0x22L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_USA1 (0x23L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_USA2 (0x24L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_USA3 (0x25L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_UTYPE (0x26L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_UTTYPE (0x27L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_UTVAL (0x28L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_MTYPE (0x29L<<16) +#define BCE_EMAC_RXMAC_DEBUG4_FILT_STATE_DROP (0x2aL<<16) +#define BCE_EMAC_RXMAC_DEBUG4_DROP_PKT (1L<<22) +#define BCE_EMAC_RXMAC_DEBUG4_SLOT_FILLED (1L<<23) +#define BCE_EMAC_RXMAC_DEBUG4_FALSE_CARRIER (1L<<24) +#define BCE_EMAC_RXMAC_DEBUG4_LAST_DATA (1L<<25) +#define BCE_EMAC_RXMAC_DEBUG4_sfd_FOUND (1L<<26) +#define BCE_EMAC_RXMAC_DEBUG4_ADVANCE (1L<<27) +#define BCE_EMAC_RXMAC_DEBUG4_START (1L<<28) + +#define BCE_EMAC_RXMAC_DEBUG5 0x00001570 +#define BCE_EMAC_RXMAC_DEBUG5_PS_IDISM (0x7L<<0) +#define BCE_EMAC_RXMAC_DEBUG5_PS_IDISM_IDLE (0L<<0) +#define BCE_EMAC_RXMAC_DEBUG5_PS_IDISM_WAIT_EOF (1L<<0) +#define BCE_EMAC_RXMAC_DEBUG5_PS_IDISM_WAIT_STAT (2L<<0) +#define BCE_EMAC_RXMAC_DEBUG5_PS_IDISM_SET_EOF4FCRC (3L<<0) +#define BCE_EMAC_RXMAC_DEBUG5_PS_IDISM_SET_EOF4RDE (4L<<0) +#define BCE_EMAC_RXMAC_DEBUG5_PS_IDISM_SET_EOF4ALL (5L<<0) +#define BCE_EMAC_RXMAC_DEBUG5_PS_IDISM_1WD_WAIT_STAT (6L<<0) +#define BCE_EMAC_RXMAC_DEBUG5_CCODE_BUF1 (0x7L<<4) +#define BCE_EMAC_RXMAC_DEBUG5_CCODE_BUF1_VDW (0x0L<<4) +#define BCE_EMAC_RXMAC_DEBUG5_CCODE_BUF1_STAT (0x1L<<4) +#define BCE_EMAC_RXMAC_DEBUG5_CCODE_BUF1_AEOF (0x2L<<4) +#define BCE_EMAC_RXMAC_DEBUG5_CCODE_BUF1_NEOF (0x3L<<4) +#define BCE_EMAC_RXMAC_DEBUG5_CCODE_BUF1_SOF (0x4L<<4) +#define BCE_EMAC_RXMAC_DEBUG5_CCODE_BUF1_SAEOF (0x6L<<4) +#define BCE_EMAC_RXMAC_DEBUG5_CCODE_BUF1_SNEOF (0x7L<<4) +#define BCE_EMAC_RXMAC_DEBUG5_EOF_DETECTED (1L<<7) +#define BCE_EMAC_RXMAC_DEBUG5_CCODE_BUF0 (0x7L<<8) +#define BCE_EMAC_RXMAC_DEBUG5_RPM_IDI_FIFO_FULL (1L<<11) +#define BCE_EMAC_RXMAC_DEBUG5_LOAD_CCODE (1L<<12) +#define BCE_EMAC_RXMAC_DEBUG5_LOAD_DATA (1L<<13) +#define BCE_EMAC_RXMAC_DEBUG5_LOAD_STAT (1L<<14) +#define BCE_EMAC_RXMAC_DEBUG5_CLR_STAT (1L<<15) +#define BCE_EMAC_RXMAC_DEBUG5_IDI_RPM_CCODE (0x3L<<16) +#define BCE_EMAC_RXMAC_DEBUG5_IDI_RPM_ACCEPT (1L<<19) +#define BCE_EMAC_RXMAC_DEBUG5_FMLEN (0xfffL<<20) + +#define BCE_EMAC_RX_STAT_AC0 0x00001580 +#define BCE_EMAC_RX_STAT_AC1 0x00001584 +#define BCE_EMAC_RX_STAT_AC2 0x00001588 +#define BCE_EMAC_RX_STAT_AC3 0x0000158c +#define BCE_EMAC_RX_STAT_AC4 0x00001590 +#define BCE_EMAC_RX_STAT_AC5 0x00001594 +#define BCE_EMAC_RX_STAT_AC6 0x00001598 +#define BCE_EMAC_RX_STAT_AC7 0x0000159c +#define BCE_EMAC_RX_STAT_AC8 0x000015a0 +#define BCE_EMAC_RX_STAT_AC9 0x000015a4 +#define BCE_EMAC_RX_STAT_AC10 0x000015a8 +#define BCE_EMAC_RX_STAT_AC11 0x000015ac +#define BCE_EMAC_RX_STAT_AC12 0x000015b0 +#define BCE_EMAC_RX_STAT_AC13 0x000015b4 +#define BCE_EMAC_RX_STAT_AC14 0x000015b8 +#define BCE_EMAC_RX_STAT_AC15 0x000015bc +#define BCE_EMAC_RX_STAT_AC16 0x000015c0 +#define BCE_EMAC_RX_STAT_AC17 0x000015c4 +#define BCE_EMAC_RX_STAT_AC18 0x000015c8 +#define BCE_EMAC_RX_STAT_AC19 0x000015cc +#define BCE_EMAC_RX_STAT_AC20 0x000015d0 +#define BCE_EMAC_RX_STAT_AC21 0x000015d4 +#define BCE_EMAC_RX_STAT_AC22 0x000015d8 +#define BCE_EMAC_RXMAC_SUC_DBG_OVERRUNVEC 0x000015dc +#define BCE_EMAC_TX_STAT_IFHCOUTOCTETS 0x00001600 +#define BCE_EMAC_TX_STAT_IFHCOUTBADOCTETS 0x00001604 +#define BCE_EMAC_TX_STAT_ETHERSTATSCOLLISIONS 0x00001608 +#define BCE_EMAC_TX_STAT_OUTXONSENT 0x0000160c +#define BCE_EMAC_TX_STAT_OUTXOFFSENT 0x00001610 +#define BCE_EMAC_TX_STAT_FLOWCONTROLDONE 0x00001614 +#define BCE_EMAC_TX_STAT_DOT3STATSSINGLECOLLISIONFRAMES 0x00001618 +#define BCE_EMAC_TX_STAT_DOT3STATSMULTIPLECOLLISIONFRAMES 0x0000161c +#define BCE_EMAC_TX_STAT_DOT3STATSDEFERREDTRANSMISSIONS 0x00001620 +#define BCE_EMAC_TX_STAT_DOT3STATSEXCESSIVECOLLISIONS 0x00001624 +#define BCE_EMAC_TX_STAT_DOT3STATSLATECOLLISIONS 0x00001628 +#define BCE_EMAC_TX_STAT_IFHCOUTUCASTPKTS 0x0000162c +#define BCE_EMAC_TX_STAT_IFHCOUTMULTICASTPKTS 0x00001630 +#define BCE_EMAC_TX_STAT_IFHCOUTBROADCASTPKTS 0x00001634 +#define BCE_EMAC_TX_STAT_ETHERSTATSPKTS64OCTETS 0x00001638 +#define BCE_EMAC_TX_STAT_ETHERSTATSPKTS65OCTETSTO127OCTETS 0x0000163c +#define BCE_EMAC_TX_STAT_ETHERSTATSPKTS128OCTETSTO255OCTETS 0x00001640 +#define BCE_EMAC_TX_STAT_ETHERSTATSPKTS256OCTETSTO511OCTETS 0x00001644 +#define BCE_EMAC_TX_STAT_ETHERSTATSPKTS512OCTETSTO1023OCTETS 0x00001648 +#define BCE_EMAC_TX_STAT_ETHERSTATSPKTS1024OCTETSTO1522OCTETS 0x0000164c +#define BCE_EMAC_TX_STAT_ETHERSTATSPKTS1523OCTETSTO9022OCTETS 0x00001650 +#define BCE_EMAC_TX_STAT_DOT3STATSINTERNALMACTRANSMITERRORS 0x00001654 +#define BCE_EMAC_TXMAC_DEBUG0 0x00001658 +#define BCE_EMAC_TXMAC_DEBUG1 0x0000165c +#define BCE_EMAC_TXMAC_DEBUG1_ODI_STATE (0xfL<<0) +#define BCE_EMAC_TXMAC_DEBUG1_ODI_STATE_IDLE (0x0L<<0) +#define BCE_EMAC_TXMAC_DEBUG1_ODI_STATE_START0 (0x1L<<0) +#define BCE_EMAC_TXMAC_DEBUG1_ODI_STATE_DATA0 (0x4L<<0) +#define BCE_EMAC_TXMAC_DEBUG1_ODI_STATE_DATA1 (0x5L<<0) +#define BCE_EMAC_TXMAC_DEBUG1_ODI_STATE_DATA2 (0x6L<<0) +#define BCE_EMAC_TXMAC_DEBUG1_ODI_STATE_DATA3 (0x7L<<0) +#define BCE_EMAC_TXMAC_DEBUG1_ODI_STATE_WAIT0 (0x8L<<0) +#define BCE_EMAC_TXMAC_DEBUG1_ODI_STATE_WAIT1 (0x9L<<0) +#define BCE_EMAC_TXMAC_DEBUG1_CRS_ENABLE (1L<<4) +#define BCE_EMAC_TXMAC_DEBUG1_BAD_CRC (1L<<5) +#define BCE_EMAC_TXMAC_DEBUG1_SE_COUNTER (0xfL<<6) +#define BCE_EMAC_TXMAC_DEBUG1_SEND_PAUSE (1L<<10) +#define BCE_EMAC_TXMAC_DEBUG1_LATE_COLLISION (1L<<11) +#define BCE_EMAC_TXMAC_DEBUG1_MAX_DEFER (1L<<12) +#define BCE_EMAC_TXMAC_DEBUG1_DEFERRED (1L<<13) +#define BCE_EMAC_TXMAC_DEBUG1_ONE_BYTE (1L<<14) +#define BCE_EMAC_TXMAC_DEBUG1_IPG_TIME (0xfL<<15) +#define BCE_EMAC_TXMAC_DEBUG1_SLOT_TIME (0xffL<<19) + +#define BCE_EMAC_TXMAC_DEBUG2 0x00001660 +#define BCE_EMAC_TXMAC_DEBUG2_BACK_OFF (0x3ffL<<0) +#define BCE_EMAC_TXMAC_DEBUG2_BYTE_COUNT (0xffffL<<10) +#define BCE_EMAC_TXMAC_DEBUG2_COL_COUNT (0x1fL<<26) +#define BCE_EMAC_TXMAC_DEBUG2_COL_BIT (1L<<31) + +#define BCE_EMAC_TXMAC_DEBUG3 0x00001664 +#define BCE_EMAC_TXMAC_DEBUG3_SM_STATE (0xfL<<0) +#define BCE_EMAC_TXMAC_DEBUG3_SM_STATE_IDLE (0x0L<<0) +#define BCE_EMAC_TXMAC_DEBUG3_SM_STATE_PRE1 (0x1L<<0) +#define BCE_EMAC_TXMAC_DEBUG3_SM_STATE_PRE2 (0x2L<<0) +#define BCE_EMAC_TXMAC_DEBUG3_SM_STATE_SFD (0x3L<<0) +#define BCE_EMAC_TXMAC_DEBUG3_SM_STATE_DATA (0x4L<<0) +#define BCE_EMAC_TXMAC_DEBUG3_SM_STATE_CRC1 (0x5L<<0) +#define BCE_EMAC_TXMAC_DEBUG3_SM_STATE_CRC2 (0x6L<<0) +#define BCE_EMAC_TXMAC_DEBUG3_SM_STATE_EXT (0x7L<<0) +#define BCE_EMAC_TXMAC_DEBUG3_SM_STATE_STATB (0x8L<<0) +#define BCE_EMAC_TXMAC_DEBUG3_SM_STATE_STATG (0x9L<<0) +#define BCE_EMAC_TXMAC_DEBUG3_SM_STATE_JAM (0xaL<<0) +#define BCE_EMAC_TXMAC_DEBUG3_SM_STATE_EJAM (0xbL<<0) +#define BCE_EMAC_TXMAC_DEBUG3_SM_STATE_BJAM (0xcL<<0) +#define BCE_EMAC_TXMAC_DEBUG3_SM_STATE_SWAIT (0xdL<<0) +#define BCE_EMAC_TXMAC_DEBUG3_SM_STATE_BACKOFF (0xeL<<0) +#define BCE_EMAC_TXMAC_DEBUG3_FILT_STATE (0x7L<<4) +#define BCE_EMAC_TXMAC_DEBUG3_FILT_STATE_IDLE (0x0L<<4) +#define BCE_EMAC_TXMAC_DEBUG3_FILT_STATE_WAIT (0x1L<<4) +#define BCE_EMAC_TXMAC_DEBUG3_FILT_STATE_UNI (0x2L<<4) +#define BCE_EMAC_TXMAC_DEBUG3_FILT_STATE_MC (0x3L<<4) +#define BCE_EMAC_TXMAC_DEBUG3_FILT_STATE_BC2 (0x4L<<4) +#define BCE_EMAC_TXMAC_DEBUG3_FILT_STATE_BC3 (0x5L<<4) +#define BCE_EMAC_TXMAC_DEBUG3_FILT_STATE_BC (0x6L<<4) +#define BCE_EMAC_TXMAC_DEBUG3_CRS_DONE (1L<<7) +#define BCE_EMAC_TXMAC_DEBUG3_XOFF (1L<<8) +#define BCE_EMAC_TXMAC_DEBUG3_SE_COUNTER (0xfL<<9) +#define BCE_EMAC_TXMAC_DEBUG3_QUANTA_COUNTER (0x1fL<<13) + +#define BCE_EMAC_TXMAC_DEBUG4 0x00001668 +#define BCE_EMAC_TXMAC_DEBUG4_PAUSE_COUNTER (0xffffL<<0) +#define BCE_EMAC_TXMAC_DEBUG4_PAUSE_STATE (0xfL<<16) +#define BCE_EMAC_TXMAC_DEBUG4_PAUSE_STATE_IDLE (0x0L<<16) +#define BCE_EMAC_TXMAC_DEBUG4_PAUSE_STATE_MCA1 (0x2L<<16) +#define BCE_EMAC_TXMAC_DEBUG4_PAUSE_STATE_MCA2 (0x3L<<16) +#define BCE_EMAC_TXMAC_DEBUG4_PAUSE_STATE_MCA3 (0x6L<<16) +#define BCE_EMAC_TXMAC_DEBUG4_PAUSE_STATE_SRC1 (0x7L<<16) +#define BCE_EMAC_TXMAC_DEBUG4_PAUSE_STATE_SRC2 (0x5L<<16) +#define BCE_EMAC_TXMAC_DEBUG4_PAUSE_STATE_SRC3 (0x4L<<16) +#define BCE_EMAC_TXMAC_DEBUG4_PAUSE_STATE_TYPE (0xcL<<16) +#define BCE_EMAC_TXMAC_DEBUG4_PAUSE_STATE_CMD (0xeL<<16) +#define BCE_EMAC_TXMAC_DEBUG4_PAUSE_STATE_TIME (0xaL<<16) +#define BCE_EMAC_TXMAC_DEBUG4_PAUSE_STATE_CRC1 (0x8L<<16) +#define BCE_EMAC_TXMAC_DEBUG4_PAUSE_STATE_CRC2 (0x9L<<16) +#define BCE_EMAC_TXMAC_DEBUG4_PAUSE_STATE_WAIT (0xdL<<16) +#define BCE_EMAC_TXMAC_DEBUG4_STATS0_VALID (1L<<20) +#define BCE_EMAC_TXMAC_DEBUG4_APPEND_CRC (1L<<21) +#define BCE_EMAC_TXMAC_DEBUG4_SLOT_FILLED (1L<<22) +#define BCE_EMAC_TXMAC_DEBUG4_MAX_DEFER (1L<<23) +#define BCE_EMAC_TXMAC_DEBUG4_SEND_EXTEND (1L<<24) +#define BCE_EMAC_TXMAC_DEBUG4_SEND_PADDING (1L<<25) +#define BCE_EMAC_TXMAC_DEBUG4_EOF_LOC (1L<<26) +#define BCE_EMAC_TXMAC_DEBUG4_COLLIDING (1L<<27) +#define BCE_EMAC_TXMAC_DEBUG4_COL_IN (1L<<28) +#define BCE_EMAC_TXMAC_DEBUG4_BURSTING (1L<<29) +#define BCE_EMAC_TXMAC_DEBUG4_ADVANCE (1L<<30) +#define BCE_EMAC_TXMAC_DEBUG4_GO (1L<<31) + +#define BCE_EMAC_TX_STAT_AC0 0x00001680 +#define BCE_EMAC_TX_STAT_AC1 0x00001684 +#define BCE_EMAC_TX_STAT_AC2 0x00001688 +#define BCE_EMAC_TX_STAT_AC3 0x0000168c +#define BCE_EMAC_TX_STAT_AC4 0x00001690 +#define BCE_EMAC_TX_STAT_AC5 0x00001694 +#define BCE_EMAC_TX_STAT_AC6 0x00001698 +#define BCE_EMAC_TX_STAT_AC7 0x0000169c +#define BCE_EMAC_TX_STAT_AC8 0x000016a0 +#define BCE_EMAC_TX_STAT_AC9 0x000016a4 +#define BCE_EMAC_TX_STAT_AC10 0x000016a8 +#define BCE_EMAC_TX_STAT_AC11 0x000016ac +#define BCE_EMAC_TX_STAT_AC12 0x000016b0 +#define BCE_EMAC_TX_STAT_AC13 0x000016b4 +#define BCE_EMAC_TX_STAT_AC14 0x000016b8 +#define BCE_EMAC_TX_STAT_AC15 0x000016bc +#define BCE_EMAC_TX_STAT_AC16 0x000016c0 +#define BCE_EMAC_TX_STAT_AC17 0x000016c4 +#define BCE_EMAC_TX_STAT_AC18 0x000016c8 +#define BCE_EMAC_TX_STAT_AC19 0x000016cc +#define BCE_EMAC_TX_STAT_AC20 0x000016d0 +#define BCE_EMAC_TX_STAT_AC21 0x000016d4 +#define BCE_EMAC_TXMAC_SUC_DBG_OVERRUNVEC 0x000016d8 + + +/* + * rpm_reg definition + * offset: 0x1800 + */ +#define BCE_RPM_COMMAND 0x00001800 +#define BCE_RPM_COMMAND_ENABLED (1L<<0) +#define BCE_RPM_COMMAND_OVERRUN_ABORT (1L<<4) + +#define BCE_RPM_STATUS 0x00001804 +#define BCE_RPM_STATUS_MBUF_WAIT (1L<<0) +#define BCE_RPM_STATUS_FREE_WAIT (1L<<1) + +#define BCE_RPM_CONFIG 0x00001808 +#define BCE_RPM_CONFIG_NO_PSD_HDR_CKSUM (1L<<0) +#define BCE_RPM_CONFIG_ACPI_ENA (1L<<1) +#define BCE_RPM_CONFIG_ACPI_KEEP (1L<<2) +#define BCE_RPM_CONFIG_MP_KEEP (1L<<3) +#define BCE_RPM_CONFIG_SORT_VECT_VAL (0xfL<<4) +#define BCE_RPM_CONFIG_IGNORE_VLAN (1L<<31) + +#define BCE_RPM_MGMT_PKT_CTRL 0x0000180c +#define BCE_RPM_MGMT_PKT_CTRL_MGMT_DISCARD_EN (1L<<30) +#define BCE_RPM_MGMT_PKT_CTRL_MGMT_EN (1L<<31) + +#define BCE_RPM_VLAN_MATCH0 0x00001810 +#define BCE_RPM_VLAN_MATCH0_RPM_VLAN_MTCH0_VALUE (0xfffL<<0) + +#define BCE_RPM_VLAN_MATCH1 0x00001814 +#define BCE_RPM_VLAN_MATCH1_RPM_VLAN_MTCH1_VALUE (0xfffL<<0) + +#define BCE_RPM_VLAN_MATCH2 0x00001818 +#define BCE_RPM_VLAN_MATCH2_RPM_VLAN_MTCH2_VALUE (0xfffL<<0) + +#define BCE_RPM_VLAN_MATCH3 0x0000181c +#define BCE_RPM_VLAN_MATCH3_RPM_VLAN_MTCH3_VALUE (0xfffL<<0) + +#define BCE_RPM_SORT_USER0 0x00001820 +#define BCE_RPM_SORT_USER0_PM_EN (0xffffL<<0) +#define BCE_RPM_SORT_USER0_BC_EN (1L<<16) +#define BCE_RPM_SORT_USER0_MC_EN (1L<<17) +#define BCE_RPM_SORT_USER0_MC_HSH_EN (1L<<18) +#define BCE_RPM_SORT_USER0_PROM_EN (1L<<19) +#define BCE_RPM_SORT_USER0_VLAN_EN (0xfL<<20) +#define BCE_RPM_SORT_USER0_PROM_VLAN (1L<<24) +#define BCE_RPM_SORT_USER0_ENA (1L<<31) + +#define BCE_RPM_SORT_USER1 0x00001824 +#define BCE_RPM_SORT_USER1_PM_EN (0xffffL<<0) +#define BCE_RPM_SORT_USER1_BC_EN (1L<<16) +#define BCE_RPM_SORT_USER1_MC_EN (1L<<17) +#define BCE_RPM_SORT_USER1_MC_HSH_EN (1L<<18) +#define BCE_RPM_SORT_USER1_PROM_EN (1L<<19) +#define BCE_RPM_SORT_USER1_VLAN_EN (0xfL<<20) +#define BCE_RPM_SORT_USER1_PROM_VLAN (1L<<24) +#define BCE_RPM_SORT_USER1_ENA (1L<<31) + +#define BCE_RPM_SORT_USER2 0x00001828 +#define BCE_RPM_SORT_USER2_PM_EN (0xffffL<<0) +#define BCE_RPM_SORT_USER2_BC_EN (1L<<16) +#define BCE_RPM_SORT_USER2_MC_EN (1L<<17) +#define BCE_RPM_SORT_USER2_MC_HSH_EN (1L<<18) +#define BCE_RPM_SORT_USER2_PROM_EN (1L<<19) +#define BCE_RPM_SORT_USER2_VLAN_EN (0xfL<<20) +#define BCE_RPM_SORT_USER2_PROM_VLAN (1L<<24) +#define BCE_RPM_SORT_USER2_ENA (1L<<31) + +#define BCE_RPM_SORT_USER3 0x0000182c +#define BCE_RPM_SORT_USER3_PM_EN (0xffffL<<0) +#define BCE_RPM_SORT_USER3_BC_EN (1L<<16) +#define BCE_RPM_SORT_USER3_MC_EN (1L<<17) +#define BCE_RPM_SORT_USER3_MC_HSH_EN (1L<<18) +#define BCE_RPM_SORT_USER3_PROM_EN (1L<<19) +#define BCE_RPM_SORT_USER3_VLAN_EN (0xfL<<20) +#define BCE_RPM_SORT_USER3_PROM_VLAN (1L<<24) +#define BCE_RPM_SORT_USER3_ENA (1L<<31) + +#define BCE_RPM_STAT_L2_FILTER_DISCARDS 0x00001840 +#define BCE_RPM_STAT_RULE_CHECKER_DISCARDS 0x00001844 +#define BCE_RPM_STAT_IFINFTQDISCARDS 0x00001848 +#define BCE_RPM_STAT_IFINMBUFDISCARD 0x0000184c +#define BCE_RPM_STAT_RULE_CHECKER_P4_HIT 0x00001850 +#define BCE_RPM_STAT_AC0 0x00001880 +#define BCE_RPM_STAT_AC1 0x00001884 +#define BCE_RPM_STAT_AC2 0x00001888 +#define BCE_RPM_STAT_AC3 0x0000188c +#define BCE_RPM_STAT_AC4 0x00001890 +#define BCE_RPM_RC_CNTL_0 0x00001900 +#define BCE_RPM_RC_CNTL_0_OFFSET (0xffL<<0) +#define BCE_RPM_RC_CNTL_0_CLASS (0x7L<<8) +#define BCE_RPM_RC_CNTL_0_PRIORITY (1L<<11) +#define BCE_RPM_RC_CNTL_0_P4 (1L<<12) +#define BCE_RPM_RC_CNTL_0_HDR_TYPE (0x7L<<13) +#define BCE_RPM_RC_CNTL_0_HDR_TYPE_START (0L<<13) +#define BCE_RPM_RC_CNTL_0_HDR_TYPE_IP (1L<<13) +#define BCE_RPM_RC_CNTL_0_HDR_TYPE_TCP (2L<<13) +#define BCE_RPM_RC_CNTL_0_HDR_TYPE_UDP (3L<<13) +#define BCE_RPM_RC_CNTL_0_HDR_TYPE_DATA (4L<<13) +#define BCE_RPM_RC_CNTL_0_COMP (0x3L<<16) +#define BCE_RPM_RC_CNTL_0_COMP_EQUAL (0L<<16) +#define BCE_RPM_RC_CNTL_0_COMP_NEQUAL (1L<<16) +#define BCE_RPM_RC_CNTL_0_COMP_GREATER (2L<<16) +#define BCE_RPM_RC_CNTL_0_COMP_LESS (3L<<16) +#define BCE_RPM_RC_CNTL_0_SBIT (1L<<19) +#define BCE_RPM_RC_CNTL_0_CMDSEL (0xfL<<20) +#define BCE_RPM_RC_CNTL_0_MAP (1L<<24) +#define BCE_RPM_RC_CNTL_0_DISCARD (1L<<25) +#define BCE_RPM_RC_CNTL_0_MASK (1L<<26) +#define BCE_RPM_RC_CNTL_0_P1 (1L<<27) +#define BCE_RPM_RC_CNTL_0_P2 (1L<<28) +#define BCE_RPM_RC_CNTL_0_P3 (1L<<29) +#define BCE_RPM_RC_CNTL_0_NBIT (1L<<30) + +#define BCE_RPM_RC_VALUE_MASK_0 0x00001904 +#define BCE_RPM_RC_VALUE_MASK_0_VALUE (0xffffL<<0) +#define BCE_RPM_RC_VALUE_MASK_0_MASK (0xffffL<<16) + +#define BCE_RPM_RC_CNTL_1 0x00001908 +#define BCE_RPM_RC_CNTL_1_A (0x3ffffL<<0) +#define BCE_RPM_RC_CNTL_1_B (0xfffL<<19) + +#define BCE_RPM_RC_VALUE_MASK_1 0x0000190c +#define BCE_RPM_RC_CNTL_2 0x00001910 +#define BCE_RPM_RC_CNTL_2_A (0x3ffffL<<0) +#define BCE_RPM_RC_CNTL_2_B (0xfffL<<19) + +#define BCE_RPM_RC_VALUE_MASK_2 0x00001914 +#define BCE_RPM_RC_CNTL_3 0x00001918 +#define BCE_RPM_RC_CNTL_3_A (0x3ffffL<<0) +#define BCE_RPM_RC_CNTL_3_B (0xfffL<<19) + +#define BCE_RPM_RC_VALUE_MASK_3 0x0000191c +#define BCE_RPM_RC_CNTL_4 0x00001920 +#define BCE_RPM_RC_CNTL_4_A (0x3ffffL<<0) +#define BCE_RPM_RC_CNTL_4_B (0xfffL<<19) + +#define BCE_RPM_RC_VALUE_MASK_4 0x00001924 +#define BCE_RPM_RC_CNTL_5 0x00001928 +#define BCE_RPM_RC_CNTL_5_A (0x3ffffL<<0) +#define BCE_RPM_RC_CNTL_5_B (0xfffL<<19) + +#define BCE_RPM_RC_VALUE_MASK_5 0x0000192c +#define BCE_RPM_RC_CNTL_6 0x00001930 +#define BCE_RPM_RC_CNTL_6_A (0x3ffffL<<0) +#define BCE_RPM_RC_CNTL_6_B (0xfffL<<19) + +#define BCE_RPM_RC_VALUE_MASK_6 0x00001934 +#define BCE_RPM_RC_CNTL_7 0x00001938 +#define BCE_RPM_RC_CNTL_7_A (0x3ffffL<<0) +#define BCE_RPM_RC_CNTL_7_B (0xfffL<<19) + +#define BCE_RPM_RC_VALUE_MASK_7 0x0000193c +#define BCE_RPM_RC_CNTL_8 0x00001940 +#define BCE_RPM_RC_CNTL_8_A (0x3ffffL<<0) +#define BCE_RPM_RC_CNTL_8_B (0xfffL<<19) + +#define BCE_RPM_RC_VALUE_MASK_8 0x00001944 +#define BCE_RPM_RC_CNTL_9 0x00001948 +#define BCE_RPM_RC_CNTL_9_A (0x3ffffL<<0) +#define BCE_RPM_RC_CNTL_9_B (0xfffL<<19) + +#define BCE_RPM_RC_VALUE_MASK_9 0x0000194c +#define BCE_RPM_RC_CNTL_10 0x00001950 +#define BCE_RPM_RC_CNTL_10_A (0x3ffffL<<0) +#define BCE_RPM_RC_CNTL_10_B (0xfffL<<19) + +#define BCE_RPM_RC_VALUE_MASK_10 0x00001954 +#define BCE_RPM_RC_CNTL_11 0x00001958 +#define BCE_RPM_RC_CNTL_11_A (0x3ffffL<<0) +#define BCE_RPM_RC_CNTL_11_B (0xfffL<<19) + +#define BCE_RPM_RC_VALUE_MASK_11 0x0000195c +#define BCE_RPM_RC_CNTL_12 0x00001960 +#define BCE_RPM_RC_CNTL_12_A (0x3ffffL<<0) +#define BCE_RPM_RC_CNTL_12_B (0xfffL<<19) + +#define BCE_RPM_RC_VALUE_MASK_12 0x00001964 +#define BCE_RPM_RC_CNTL_13 0x00001968 +#define BCE_RPM_RC_CNTL_13_A (0x3ffffL<<0) +#define BCE_RPM_RC_CNTL_13_B (0xfffL<<19) + +#define BCE_RPM_RC_VALUE_MASK_13 0x0000196c +#define BCE_RPM_RC_CNTL_14 0x00001970 +#define BCE_RPM_RC_CNTL_14_A (0x3ffffL<<0) +#define BCE_RPM_RC_CNTL_14_B (0xfffL<<19) + +#define BCE_RPM_RC_VALUE_MASK_14 0x00001974 +#define BCE_RPM_RC_CNTL_15 0x00001978 +#define BCE_RPM_RC_CNTL_15_A (0x3ffffL<<0) +#define BCE_RPM_RC_CNTL_15_B (0xfffL<<19) + +#define BCE_RPM_RC_VALUE_MASK_15 0x0000197c +#define BCE_RPM_RC_CONFIG 0x00001980 +#define BCE_RPM_RC_CONFIG_RULE_ENABLE (0xffffL<<0) +#define BCE_RPM_RC_CONFIG_DEF_CLASS (0x7L<<24) + +#define BCE_RPM_DEBUG0 0x00001984 +#define BCE_RPM_DEBUG0_FM_BCNT (0xffffL<<0) +#define BCE_RPM_DEBUG0_T_DATA_OFST_VLD (1L<<16) +#define BCE_RPM_DEBUG0_T_UDP_OFST_VLD (1L<<17) +#define BCE_RPM_DEBUG0_T_TCP_OFST_VLD (1L<<18) +#define BCE_RPM_DEBUG0_T_IP_OFST_VLD (1L<<19) +#define BCE_RPM_DEBUG0_IP_MORE_FRGMT (1L<<20) +#define BCE_RPM_DEBUG0_T_IP_NO_TCP_UDP_HDR (1L<<21) +#define BCE_RPM_DEBUG0_LLC_SNAP (1L<<22) +#define BCE_RPM_DEBUG0_FM_STARTED (1L<<23) +#define BCE_RPM_DEBUG0_DONE (1L<<24) +#define BCE_RPM_DEBUG0_WAIT_4_DONE (1L<<25) +#define BCE_RPM_DEBUG0_USE_TPBUF_CKSUM (1L<<26) +#define BCE_RPM_DEBUG0_RX_NO_PSD_HDR_CKSUM (1L<<27) +#define BCE_RPM_DEBUG0_IGNORE_VLAN (1L<<28) +#define BCE_RPM_DEBUG0_RP_ENA_ACTIVE (1L<<31) + +#define BCE_RPM_DEBUG1 0x00001988 +#define BCE_RPM_DEBUG1_FSM_CUR_ST (0xffffL<<0) +#define BCE_RPM_DEBUG1_FSM_CUR_ST_IDLE (0L<<0) +#define BCE_RPM_DEBUG1_FSM_CUR_ST_ETYPE_B6_ALL (1L<<0) +#define BCE_RPM_DEBUG1_FSM_CUR_ST_ETYPE_B2_IPLLC (2L<<0) +#define BCE_RPM_DEBUG1_FSM_CUR_ST_ETYPE_B6_IP (4L<<0) +#define BCE_RPM_DEBUG1_FSM_CUR_ST_ETYPE_B2_IP (8L<<0) +#define BCE_RPM_DEBUG1_FSM_CUR_ST_IP_START (16L<<0) +#define BCE_RPM_DEBUG1_FSM_CUR_ST_IP (32L<<0) +#define BCE_RPM_DEBUG1_FSM_CUR_ST_TCP (64L<<0) +#define BCE_RPM_DEBUG1_FSM_CUR_ST_UDP (128L<<0) +#define BCE_RPM_DEBUG1_FSM_CUR_ST_AH (256L<<0) +#define BCE_RPM_DEBUG1_FSM_CUR_ST_ESP (512L<<0) +#define BCE_RPM_DEBUG1_FSM_CUR_ST_ESP_PAYLOAD (1024L<<0) +#define BCE_RPM_DEBUG1_FSM_CUR_ST_DATA (2048L<<0) +#define BCE_RPM_DEBUG1_FSM_CUR_ST_ADD_CARRY (0x2000L<<0) +#define BCE_RPM_DEBUG1_FSM_CUR_ST_ADD_CARRYOUT (0x4000L<<0) +#define BCE_RPM_DEBUG1_FSM_CUR_ST_LATCH_RESULT (0x8000L<<0) +#define BCE_RPM_DEBUG1_HDR_BCNT (0x7ffL<<16) +#define BCE_RPM_DEBUG1_UNKNOWN_ETYPE_D (1L<<28) +#define BCE_RPM_DEBUG1_VLAN_REMOVED_D2 (1L<<29) +#define BCE_RPM_DEBUG1_VLAN_REMOVED_D1 (1L<<30) +#define BCE_RPM_DEBUG1_EOF_0XTRA_WD (1L<<31) + +#define BCE_RPM_DEBUG2 0x0000198c +#define BCE_RPM_DEBUG2_CMD_HIT_VEC (0xffffL<<0) +#define BCE_RPM_DEBUG2_IP_BCNT (0xffL<<16) +#define BCE_RPM_DEBUG2_THIS_CMD_M4 (1L<<24) +#define BCE_RPM_DEBUG2_THIS_CMD_M3 (1L<<25) +#define BCE_RPM_DEBUG2_THIS_CMD_M2 (1L<<26) +#define BCE_RPM_DEBUG2_THIS_CMD_M1 (1L<<27) +#define BCE_RPM_DEBUG2_IPIPE_EMPTY (1L<<28) +#define BCE_RPM_DEBUG2_FM_DISCARD (1L<<29) +#define BCE_RPM_DEBUG2_LAST_RULE_IN_FM_D2 (1L<<30) +#define BCE_RPM_DEBUG2_LAST_RULE_IN_FM_D1 (1L<<31) + +#define BCE_RPM_DEBUG3 0x00001990 +#define BCE_RPM_DEBUG3_AVAIL_MBUF_PTR (0x1ffL<<0) +#define BCE_RPM_DEBUG3_RDE_RLUPQ_WR_REQ_INT (1L<<9) +#define BCE_RPM_DEBUG3_RDE_RBUF_WR_LAST_INT (1L<<10) +#define BCE_RPM_DEBUG3_RDE_RBUF_WR_REQ_INT (1L<<11) +#define BCE_RPM_DEBUG3_RDE_RBUF_FREE_REQ (1L<<12) +#define BCE_RPM_DEBUG3_RDE_RBUF_ALLOC_REQ (1L<<13) +#define BCE_RPM_DEBUG3_DFSM_MBUF_NOTAVAIL (1L<<14) +#define BCE_RPM_DEBUG3_RBUF_RDE_SOF_DROP (1L<<15) +#define BCE_RPM_DEBUG3_DFIFO_VLD_ENTRY_CT (0xfL<<16) +#define BCE_RPM_DEBUG3_RDE_SRC_FIFO_ALMFULL (1L<<21) +#define BCE_RPM_DEBUG3_DROP_NXT_VLD (1L<<22) +#define BCE_RPM_DEBUG3_DROP_NXT (1L<<23) +#define BCE_RPM_DEBUG3_FTQ_FSM (0x3L<<24) +#define BCE_RPM_DEBUG3_FTQ_FSM_IDLE (0x0L<<24) +#define BCE_RPM_DEBUG3_FTQ_FSM_WAIT_ACK (0x1L<<24) +#define BCE_RPM_DEBUG3_FTQ_FSM_WAIT_FREE (0x2L<<24) +#define BCE_RPM_DEBUG3_MBWRITE_FSM (0x3L<<26) +#define BCE_RPM_DEBUG3_MBWRITE_FSM_WAIT_SOF (0x0L<<26) +#define BCE_RPM_DEBUG3_MBWRITE_FSM_GET_MBUF (0x1L<<26) +#define BCE_RPM_DEBUG3_MBWRITE_FSM_DMA_DATA (0x2L<<26) +#define BCE_RPM_DEBUG3_MBWRITE_FSM_WAIT_DATA (0x3L<<26) +#define BCE_RPM_DEBUG3_MBWRITE_FSM_WAIT_EOF (0x4L<<26) +#define BCE_RPM_DEBUG3_MBWRITE_FSM_WAIT_MF_ACK (0x5L<<26) +#define BCE_RPM_DEBUG3_MBWRITE_FSM_WAIT_DROP_NXT_VLD (0x6L<<26) +#define BCE_RPM_DEBUG3_MBWRITE_FSM_DONE (0x7L<<26) +#define BCE_RPM_DEBUG3_MBFREE_FSM (1L<<29) +#define BCE_RPM_DEBUG3_MBFREE_FSM_IDLE (0L<<29) +#define BCE_RPM_DEBUG3_MBFREE_FSM_WAIT_ACK (1L<<29) +#define BCE_RPM_DEBUG3_MBALLOC_FSM (1L<<30) +#define BCE_RPM_DEBUG3_MBALLOC_FSM_ET_MBUF (0x0L<<30) +#define BCE_RPM_DEBUG3_MBALLOC_FSM_IVE_MBUF (0x1L<<30) +#define BCE_RPM_DEBUG3_CCODE_EOF_ERROR (1L<<31) + +#define BCE_RPM_DEBUG4 0x00001994 +#define BCE_RPM_DEBUG4_DFSM_MBUF_CLUSTER (0x1ffffffL<<0) +#define BCE_RPM_DEBUG4_DFIFO_CUR_CCODE (0x7L<<25) +#define BCE_RPM_DEBUG4_MBWRITE_FSM (0x7L<<28) +#define BCE_RPM_DEBUG4_DFIFO_EMPTY (1L<<31) + +#define BCE_RPM_DEBUG5 0x00001998 +#define BCE_RPM_DEBUG5_RDROP_WPTR (0x1fL<<0) +#define BCE_RPM_DEBUG5_RDROP_ACPI_RPTR (0x1fL<<5) +#define BCE_RPM_DEBUG5_RDROP_MC_RPTR (0x1fL<<10) +#define BCE_RPM_DEBUG5_RDROP_RC_RPTR (0x1fL<<15) +#define BCE_RPM_DEBUG5_RDROP_ACPI_EMPTY (1L<<20) +#define BCE_RPM_DEBUG5_RDROP_MC_EMPTY (1L<<21) +#define BCE_RPM_DEBUG5_RDROP_AEOF_VEC_AT_RDROP_MC_RPTR (1L<<22) +#define BCE_RPM_DEBUG5_HOLDREG_WOL_DROP_INT (1L<<23) +#define BCE_RPM_DEBUG5_HOLDREG_DISCARD (1L<<24) +#define BCE_RPM_DEBUG5_HOLDREG_MBUF_NOTAVAIL (1L<<25) +#define BCE_RPM_DEBUG5_HOLDREG_MC_EMPTY (1L<<26) +#define BCE_RPM_DEBUG5_HOLDREG_RC_EMPTY (1L<<27) +#define BCE_RPM_DEBUG5_HOLDREG_FC_EMPTY (1L<<28) +#define BCE_RPM_DEBUG5_HOLDREG_ACPI_EMPTY (1L<<29) +#define BCE_RPM_DEBUG5_HOLDREG_FULL_T (1L<<30) +#define BCE_RPM_DEBUG5_HOLDREG_RD (1L<<31) + +#define BCE_RPM_DEBUG6 0x0000199c +#define BCE_RPM_DEBUG6_ACPI_VEC (0xffffL<<0) +#define BCE_RPM_DEBUG6_VEC (0xffffL<<16) + +#define BCE_RPM_DEBUG7 0x000019a0 +#define BCE_RPM_DEBUG7_RPM_DBG7_LAST_CRC (0xffffffffL<<0) + +#define BCE_RPM_DEBUG8 0x000019a4 +#define BCE_RPM_DEBUG8_PS_ACPI_FSM (0xfL<<0) +#define BCE_RPM_DEBUG8_PS_ACPI_FSM_IDLE (0L<<0) +#define BCE_RPM_DEBUG8_PS_ACPI_FSM_SOF_W1_ADDR (1L<<0) +#define BCE_RPM_DEBUG8_PS_ACPI_FSM_SOF_W2_ADDR (2L<<0) +#define BCE_RPM_DEBUG8_PS_ACPI_FSM_SOF_W3_ADDR (3L<<0) +#define BCE_RPM_DEBUG8_PS_ACPI_FSM_SOF_WAIT_THBUF (4L<<0) +#define BCE_RPM_DEBUG8_PS_ACPI_FSM_W3_DATA (5L<<0) +#define BCE_RPM_DEBUG8_PS_ACPI_FSM_W0_ADDR (6L<<0) +#define BCE_RPM_DEBUG8_PS_ACPI_FSM_W1_ADDR (7L<<0) +#define BCE_RPM_DEBUG8_PS_ACPI_FSM_W2_ADDR (8L<<0) +#define BCE_RPM_DEBUG8_PS_ACPI_FSM_W3_ADDR (9L<<0) +#define BCE_RPM_DEBUG8_PS_ACPI_FSM_WAIT_THBUF (10L<<0) +#define BCE_RPM_DEBUG8_COMPARE_AT_W0 (1L<<4) +#define BCE_RPM_DEBUG8_COMPARE_AT_W3_DATA (1L<<5) +#define BCE_RPM_DEBUG8_COMPARE_AT_SOF_WAIT (1L<<6) +#define BCE_RPM_DEBUG8_COMPARE_AT_SOF_W3 (1L<<7) +#define BCE_RPM_DEBUG8_COMPARE_AT_SOF_W2 (1L<<8) +#define BCE_RPM_DEBUG8_EOF_W_LTEQ6_VLDBYTES (1L<<9) +#define BCE_RPM_DEBUG8_EOF_W_LTEQ4_VLDBYTES (1L<<10) +#define BCE_RPM_DEBUG8_NXT_EOF_W_12_VLDBYTES (1L<<11) +#define BCE_RPM_DEBUG8_EOF_DET (1L<<12) +#define BCE_RPM_DEBUG8_SOF_DET (1L<<13) +#define BCE_RPM_DEBUG8_WAIT_4_SOF (1L<<14) +#define BCE_RPM_DEBUG8_ALL_DONE (1L<<15) +#define BCE_RPM_DEBUG8_THBUF_ADDR (0x7fL<<16) +#define BCE_RPM_DEBUG8_BYTE_CTR (0xffL<<24) + +#define BCE_RPM_DEBUG9 0x000019a8 +#define BCE_RPM_DEBUG9_OUTFIFO_COUNT (0x7L<<0) +#define BCE_RPM_DEBUG9_RDE_ACPI_RDY (1L<<3) +#define BCE_RPM_DEBUG9_VLD_RD_ENTRY_CT (0x7L<<4) +#define BCE_RPM_DEBUG9_OUTFIFO_OVERRUN_OCCURRED (1L<<28) +#define BCE_RPM_DEBUG9_INFIFO_OVERRUN_OCCURRED (1L<<29) +#define BCE_RPM_DEBUG9_ACPI_MATCH_INT (1L<<30) +#define BCE_RPM_DEBUG9_ACPI_ENABLE_SYN (1L<<31) + +#define BCE_RPM_ACPI_DBG_BUF_W00 0x000019c0 +#define BCE_RPM_ACPI_DBG_BUF_W01 0x000019c4 +#define BCE_RPM_ACPI_DBG_BUF_W02 0x000019c8 +#define BCE_RPM_ACPI_DBG_BUF_W03 0x000019cc +#define BCE_RPM_ACPI_DBG_BUF_W10 0x000019d0 +#define BCE_RPM_ACPI_DBG_BUF_W11 0x000019d4 +#define BCE_RPM_ACPI_DBG_BUF_W12 0x000019d8 +#define BCE_RPM_ACPI_DBG_BUF_W13 0x000019dc +#define BCE_RPM_ACPI_DBG_BUF_W20 0x000019e0 +#define BCE_RPM_ACPI_DBG_BUF_W21 0x000019e4 +#define BCE_RPM_ACPI_DBG_BUF_W22 0x000019e8 +#define BCE_RPM_ACPI_DBG_BUF_W23 0x000019ec +#define BCE_RPM_ACPI_DBG_BUF_W30 0x000019f0 +#define BCE_RPM_ACPI_DBG_BUF_W31 0x000019f4 +#define BCE_RPM_ACPI_DBG_BUF_W32 0x000019f8 +#define BCE_RPM_ACPI_DBG_BUF_W33 0x000019fc + + +/* + * rlup_reg definition + * offset: 0x2000 + */ +#define BCE_RLUP_FTQ_CMD 0x000023f8 +#define BCE_RLUP_FTQ_CTL 0x000023fc +#define BCE_RLUP_FTQ_CTL_MAX_DEPTH (0x3ffL<<12) +#define BCE_RLUP_FTQ_CTL_CUR_DEPTH (0x3ffL<<22) + + +/* + * rv2pcsr_reg definition + * offset: 0x2400 + */ +#define BCE_RV2PCSR_FTQ_CMD 0x000027f8 +#define BCE_RV2PCSR_FTQ_CTL 0x000027fc +#define BCE_RV2PCSR_FTQ_CTL_MAX_DEPTH (0x3ffL<<12) +#define BCE_RV2PCSR_FTQ_CTL_CUR_DEPTH (0x3ffL<<22) + + +/* + * rdma_reg definition + * offset: 0x2c00 + */ +#define BCE_RDMA_FTQ_CMD 0x00002ff8 +#define BCE_RDMA_FTQ_CTL 0x00002ffc +#define BCE_RDMA_FTQ_CTL_MAX_DEPTH (0x3ffL<<12) +#define BCE_RDMA_FTQ_CTL_CUR_DEPTH (0x3ffL<<22) + + + +/* + * timer_reg definition + * offset: 0x4400 + */ + +#define BCE_TIMER_COMMAND 0x00004400 +#define BCE_TIMER_COMMAND_ENABLED (1L<<0) + +#define BCE_TIMER_STATUS 0x00004404 +#define BCE_TIMER_STATUS_CMP_FTQ_WAIT (1L<<0) +#define BCE_TIMER_STATUS_POLL_PASS_CNT (1L<<8) +#define BCE_TIMER_STATUS_TMR1_CNT (1L<<9) +#define BCE_TIMER_STATUS_TMR2_CNT (1L<<10) +#define BCE_TIMER_STATUS_TMR3_CNT (1L<<11) +#define BCE_TIMER_STATUS_TMR4_CNT (1L<<12) +#define BCE_TIMER_STATUS_TMR5_CNT (1L<<13) + +#define BCE_TIMER_25MHZ_FREE_RUN 0x00004448 + + +/* + * tsch_reg definition + * offset: 0x4c00 + */ + +#define BCE_TSCH_FTQ_CMD 0x00004ff8 +#define BCE_TSCH_FTQ_CTL 0x00004ffc +#define BCE_TSCH_FTQ_CTL_MAX_DEPTH (0x3ffL<<12) +#define BCE_TSCH_FTQ_CTL_CUR_DEPTH (0x3ffL<<22) + + + +/* + * rbuf_reg definition + * offset: 0x200000 + */ +#define BCE_RBUF_COMMAND 0x00200000 +#define BCE_RBUF_COMMAND_ENABLED (1L<<0) +#define BCE_RBUF_COMMAND_FREE_INIT (1L<<1) +#define BCE_RBUF_COMMAND_RAM_INIT (1L<<2) +#define BCE_RBUF_COMMAND_OVER_FREE (1L<<4) +#define BCE_RBUF_COMMAND_ALLOC_REQ (1L<<5) + +#define BCE_RBUF_STATUS1 0x00200004 +#define BCE_RBUF_STATUS1_FREE_COUNT (0x3ffL<<0) + +#define BCE_RBUF_STATUS2 0x00200008 +#define BCE_RBUF_STATUS2_FREE_TAIL (0x3ffL<<0) +#define BCE_RBUF_STATUS2_FREE_HEAD (0x3ffL<<16) + +#define BCE_RBUF_CONFIG 0x0020000c +#define BCE_RBUF_CONFIG_XOFF_TRIP (0x3ffL<<0) +#define BCE_RBUF_CONFIG_XON_TRIP (0x3ffL<<16) + +#define BCE_RBUF_FW_BUF_ALLOC 0x00200010 +#define BCE_RBUF_FW_BUF_ALLOC_VALUE (0x1ffL<<7) + +#define BCE_RBUF_FW_BUF_FREE 0x00200014 +#define BCE_RBUF_FW_BUF_FREE_COUNT (0x7fL<<0) +#define BCE_RBUF_FW_BUF_FREE_TAIL (0x1ffL<<7) +#define BCE_RBUF_FW_BUF_FREE_HEAD (0x1ffL<<16) + +#define BCE_RBUF_FW_BUF_SEL 0x00200018 +#define BCE_RBUF_FW_BUF_SEL_COUNT (0x7fL<<0) +#define BCE_RBUF_FW_BUF_SEL_TAIL (0x1ffL<<7) +#define BCE_RBUF_FW_BUF_SEL_HEAD (0x1ffL<<16) + +#define BCE_RBUF_CONFIG2 0x0020001c +#define BCE_RBUF_CONFIG2_MAC_DROP_TRIP (0x3ffL<<0) +#define BCE_RBUF_CONFIG2_MAC_KEEP_TRIP (0x3ffL<<16) + +#define BCE_RBUF_CONFIG3 0x00200020 +#define BCE_RBUF_CONFIG3_CU_DROP_TRIP (0x3ffL<<0) +#define BCE_RBUF_CONFIG3_CU_KEEP_TRIP (0x3ffL<<16) + +#define BCE_RBUF_PKT_DATA 0x00208000 +#define BCE_RBUF_CLIST_DATA 0x00210000 +#define BCE_RBUF_BUF_DATA 0x00220000 + + +/* + * rv2p_reg definition + * offset: 0x2800 + */ +#define BCE_RV2P_COMMAND 0x00002800 +#define BCE_RV2P_COMMAND_ENABLED (1L<<0) +#define BCE_RV2P_COMMAND_PROC1_INTRPT (1L<<1) +#define BCE_RV2P_COMMAND_PROC2_INTRPT (1L<<2) +#define BCE_RV2P_COMMAND_ABORT0 (1L<<4) +#define BCE_RV2P_COMMAND_ABORT1 (1L<<5) +#define BCE_RV2P_COMMAND_ABORT2 (1L<<6) +#define BCE_RV2P_COMMAND_ABORT3 (1L<<7) +#define BCE_RV2P_COMMAND_ABORT4 (1L<<8) +#define BCE_RV2P_COMMAND_ABORT5 (1L<<9) +#define BCE_RV2P_COMMAND_PROC1_RESET (1L<<16) +#define BCE_RV2P_COMMAND_PROC2_RESET (1L<<17) +#define BCE_RV2P_COMMAND_CTXIF_RESET (1L<<18) + +#define BCE_RV2P_STATUS 0x00002804 +#define BCE_RV2P_STATUS_ALWAYS_0 (1L<<0) +#define BCE_RV2P_STATUS_RV2P_GEN_STAT0_CNT (1L<<8) +#define BCE_RV2P_STATUS_RV2P_GEN_STAT1_CNT (1L<<9) +#define BCE_RV2P_STATUS_RV2P_GEN_STAT2_CNT (1L<<10) +#define BCE_RV2P_STATUS_RV2P_GEN_STAT3_CNT (1L<<11) +#define BCE_RV2P_STATUS_RV2P_GEN_STAT4_CNT (1L<<12) +#define BCE_RV2P_STATUS_RV2P_GEN_STAT5_CNT (1L<<13) + +#define BCE_RV2P_CONFIG 0x00002808 +#define BCE_RV2P_CONFIG_STALL_PROC1 (1L<<0) +#define BCE_RV2P_CONFIG_STALL_PROC2 (1L<<1) +#define BCE_RV2P_CONFIG_PROC1_STALL_ON_ABORT0 (1L<<8) +#define BCE_RV2P_CONFIG_PROC1_STALL_ON_ABORT1 (1L<<9) +#define BCE_RV2P_CONFIG_PROC1_STALL_ON_ABORT2 (1L<<10) +#define BCE_RV2P_CONFIG_PROC1_STALL_ON_ABORT3 (1L<<11) +#define BCE_RV2P_CONFIG_PROC1_STALL_ON_ABORT4 (1L<<12) +#define BCE_RV2P_CONFIG_PROC1_STALL_ON_ABORT5 (1L<<13) +#define BCE_RV2P_CONFIG_PROC2_STALL_ON_ABORT0 (1L<<16) +#define BCE_RV2P_CONFIG_PROC2_STALL_ON_ABORT1 (1L<<17) +#define BCE_RV2P_CONFIG_PROC2_STALL_ON_ABORT2 (1L<<18) +#define BCE_RV2P_CONFIG_PROC2_STALL_ON_ABORT3 (1L<<19) +#define BCE_RV2P_CONFIG_PROC2_STALL_ON_ABORT4 (1L<<20) +#define BCE_RV2P_CONFIG_PROC2_STALL_ON_ABORT5 (1L<<21) +#define BCE_RV2P_CONFIG_PAGE_SIZE (0xfL<<24) +#define BCE_RV2P_CONFIG_PAGE_SIZE_256 (0L<<24) +#define BCE_RV2P_CONFIG_PAGE_SIZE_512 (1L<<24) +#define BCE_RV2P_CONFIG_PAGE_SIZE_1K (2L<<24) +#define BCE_RV2P_CONFIG_PAGE_SIZE_2K (3L<<24) +#define BCE_RV2P_CONFIG_PAGE_SIZE_4K (4L<<24) +#define BCE_RV2P_CONFIG_PAGE_SIZE_8K (5L<<24) +#define BCE_RV2P_CONFIG_PAGE_SIZE_16K (6L<<24) +#define BCE_RV2P_CONFIG_PAGE_SIZE_32K (7L<<24) +#define BCE_RV2P_CONFIG_PAGE_SIZE_64K (8L<<24) +#define BCE_RV2P_CONFIG_PAGE_SIZE_128K (9L<<24) +#define BCE_RV2P_CONFIG_PAGE_SIZE_256K (10L<<24) +#define BCE_RV2P_CONFIG_PAGE_SIZE_512K (11L<<24) +#define BCE_RV2P_CONFIG_PAGE_SIZE_1M (12L<<24) + +#define BCE_RV2P_GEN_BFR_ADDR_0 0x00002810 +#define BCE_RV2P_GEN_BFR_ADDR_0_VALUE (0xffffL<<16) + +#define BCE_RV2P_GEN_BFR_ADDR_1 0x00002814 +#define BCE_RV2P_GEN_BFR_ADDR_1_VALUE (0xffffL<<16) + +#define BCE_RV2P_GEN_BFR_ADDR_2 0x00002818 +#define BCE_RV2P_GEN_BFR_ADDR_2_VALUE (0xffffL<<16) + +#define BCE_RV2P_GEN_BFR_ADDR_3 0x0000281c +#define BCE_RV2P_GEN_BFR_ADDR_3_VALUE (0xffffL<<16) + +#define BCE_RV2P_INSTR_HIGH 0x00002830 +#define BCE_RV2P_INSTR_HIGH_HIGH (0x1fL<<0) + +#define BCE_RV2P_INSTR_LOW 0x00002834 +#define BCE_RV2P_PROC1_ADDR_CMD 0x00002838 +#define BCE_RV2P_PROC1_ADDR_CMD_ADD (0x3ffL<<0) +#define BCE_RV2P_PROC1_ADDR_CMD_RDWR (1L<<31) + +#define BCE_RV2P_PROC2_ADDR_CMD 0x0000283c +#define BCE_RV2P_PROC2_ADDR_CMD_ADD (0x3ffL<<0) +#define BCE_RV2P_PROC2_ADDR_CMD_RDWR (1L<<31) + +#define BCE_RV2P_PROC1_GRC_DEBUG 0x00002840 +#define BCE_RV2P_PROC2_GRC_DEBUG 0x00002844 +#define BCE_RV2P_GRC_PROC_DEBUG 0x00002848 +#define BCE_RV2P_DEBUG_VECT_PEEK 0x0000284c +#define BCE_RV2P_DEBUG_VECT_PEEK_1_VALUE (0x7ffL<<0) +#define BCE_RV2P_DEBUG_VECT_PEEK_1_PEEK_EN (1L<<11) +#define BCE_RV2P_DEBUG_VECT_PEEK_1_SEL (0xfL<<12) +#define BCE_RV2P_DEBUG_VECT_PEEK_2_VALUE (0x7ffL<<16) +#define BCE_RV2P_DEBUG_VECT_PEEK_2_PEEK_EN (1L<<27) +#define BCE_RV2P_DEBUG_VECT_PEEK_2_SEL (0xfL<<28) + +#define BCE_RV2P_PFTQ_DATA 0x00002b40 +#define BCE_RV2P_PFTQ_CMD 0x00002b78 +#define BCE_RV2P_PFTQ_CMD_OFFSET (0x3ffL<<0) +#define BCE_RV2P_PFTQ_CMD_WR_TOP (1L<<10) +#define BCE_RV2P_PFTQ_CMD_WR_TOP_0 (0L<<10) +#define BCE_RV2P_PFTQ_CMD_WR_TOP_1 (1L<<10) +#define BCE_RV2P_PFTQ_CMD_SFT_RESET (1L<<25) +#define BCE_RV2P_PFTQ_CMD_RD_DATA (1L<<26) +#define BCE_RV2P_PFTQ_CMD_ADD_INTERVEN (1L<<27) +#define BCE_RV2P_PFTQ_CMD_ADD_DATA (1L<<28) +#define BCE_RV2P_PFTQ_CMD_INTERVENE_CLR (1L<<29) +#define BCE_RV2P_PFTQ_CMD_POP (1L<<30) +#define BCE_RV2P_PFTQ_CMD_BUSY (1L<<31) + +#define BCE_RV2P_PFTQ_CTL 0x00002b7c +#define BCE_RV2P_PFTQ_CTL_INTERVENE (1L<<0) +#define BCE_RV2P_PFTQ_CTL_OVERFLOW (1L<<1) +#define BCE_RV2P_PFTQ_CTL_FORCE_INTERVENE (1L<<2) +#define BCE_RV2P_PFTQ_CTL_MAX_DEPTH (0x3ffL<<12) +#define BCE_RV2P_PFTQ_CTL_CUR_DEPTH (0x3ffL<<22) + +#define BCE_RV2P_TFTQ_DATA 0x00002b80 +#define BCE_RV2P_TFTQ_CMD 0x00002bb8 +#define BCE_RV2P_TFTQ_CMD_OFFSET (0x3ffL<<0) +#define BCE_RV2P_TFTQ_CMD_WR_TOP (1L<<10) +#define BCE_RV2P_TFTQ_CMD_WR_TOP_0 (0L<<10) +#define BCE_RV2P_TFTQ_CMD_WR_TOP_1 (1L<<10) +#define BCE_RV2P_TFTQ_CMD_SFT_RESET (1L<<25) +#define BCE_RV2P_TFTQ_CMD_RD_DATA (1L<<26) +#define BCE_RV2P_TFTQ_CMD_ADD_INTERVEN (1L<<27) +#define BCE_RV2P_TFTQ_CMD_ADD_DATA (1L<<28) +#define BCE_RV2P_TFTQ_CMD_INTERVENE_CLR (1L<<29) +#define BCE_RV2P_TFTQ_CMD_POP (1L<<30) +#define BCE_RV2P_TFTQ_CMD_BUSY (1L<<31) + +#define BCE_RV2P_TFTQ_CTL 0x00002bbc +#define BCE_RV2P_TFTQ_CTL_INTERVENE (1L<<0) +#define BCE_RV2P_TFTQ_CTL_OVERFLOW (1L<<1) +#define BCE_RV2P_TFTQ_CTL_FORCE_INTERVENE (1L<<2) +#define BCE_RV2P_TFTQ_CTL_MAX_DEPTH (0x3ffL<<12) +#define BCE_RV2P_TFTQ_CTL_CUR_DEPTH (0x3ffL<<22) + +#define BCE_RV2P_MFTQ_DATA 0x00002bc0 +#define BCE_RV2P_MFTQ_CMD 0x00002bf8 +#define BCE_RV2P_MFTQ_CMD_OFFSET (0x3ffL<<0) +#define BCE_RV2P_MFTQ_CMD_WR_TOP (1L<<10) +#define BCE_RV2P_MFTQ_CMD_WR_TOP_0 (0L<<10) +#define BCE_RV2P_MFTQ_CMD_WR_TOP_1 (1L<<10) +#define BCE_RV2P_MFTQ_CMD_SFT_RESET (1L<<25) +#define BCE_RV2P_MFTQ_CMD_RD_DATA (1L<<26) +#define BCE_RV2P_MFTQ_CMD_ADD_INTERVEN (1L<<27) +#define BCE_RV2P_MFTQ_CMD_ADD_DATA (1L<<28) +#define BCE_RV2P_MFTQ_CMD_INTERVENE_CLR (1L<<29) +#define BCE_RV2P_MFTQ_CMD_POP (1L<<30) +#define BCE_RV2P_MFTQ_CMD_BUSY (1L<<31) + +#define BCE_RV2P_MFTQ_CTL 0x00002bfc +#define BCE_RV2P_MFTQ_CTL_INTERVENE (1L<<0) +#define BCE_RV2P_MFTQ_CTL_OVERFLOW (1L<<1) +#define BCE_RV2P_MFTQ_CTL_FORCE_INTERVENE (1L<<2) +#define BCE_RV2P_MFTQ_CTL_MAX_DEPTH (0x3ffL<<12) +#define BCE_RV2P_MFTQ_CTL_CUR_DEPTH (0x3ffL<<22) + + +/* + * mq_reg definition + * offset: 0x3c00 + */ +#define BCE_MQ_COMMAND 0x00003c00 +#define BCE_MQ_COMMAND_ENABLED (1L<<0) +#define BCE_MQ_COMMAND_INIT (1L<<1) +#define BCE_MQ_COMMAND_OVERFLOW (1L<<4) +#define BCE_MQ_COMMAND_WR_ERROR (1L<<5) +#define BCE_MQ_COMMAND_RD_ERROR (1L<<6) +#define BCE_MQ_COMMAND_IDB_CFG_ERROR (1L<<7) +#define BCE_MQ_COMMAND_IDB_OVERFLOW (1L<<10) +#define BCE_MQ_COMMAND_NO_BIN_ERROR (1L<<11) +#define BCE_MQ_COMMAND_NO_MAP_ERROR (1L<<12) + +#define BCE_MQ_STATUS 0x00003c04 +#define BCE_MQ_STATUS_CTX_ACCESS_STAT (1L<<16) +#define BCE_MQ_STATUS_CTX_ACCESS64_STAT (1L<<17) +#define BCE_MQ_STATUS_PCI_STALL_STAT (1L<<18) +#define BCE_MQ_STATUS_IDB_OFLOW_STAT (1L<<19) + +#define BCE_MQ_CONFIG 0x00003c08 +#define BCE_MQ_CONFIG_TX_HIGH_PRI (1L<<0) +#define BCE_MQ_CONFIG_HALT_DIS (1L<<1) +#define BCE_MQ_CONFIG_BIN_MQ_MODE (1L<<2) +#define BCE_MQ_CONFIG_DIS_IDB_DROP (1L<<3) +#define BCE_MQ_CONFIG_KNL_BYP_BLK_SIZE (0x7L<<4) +#define BCE_MQ_CONFIG_KNL_BYP_BLK_SIZE_256 (0L<<4) +#define BCE_MQ_CONFIG_KNL_BYP_BLK_SIZE_512 (1L<<4) +#define BCE_MQ_CONFIG_KNL_BYP_BLK_SIZE_1K (2L<<4) +#define BCE_MQ_CONFIG_KNL_BYP_BLK_SIZE_2K (3L<<4) +#define BCE_MQ_CONFIG_KNL_BYP_BLK_SIZE_4K (4L<<4) +#define BCE_MQ_CONFIG_MAX_DEPTH (0x7fL<<8) +#define BCE_MQ_CONFIG_CUR_DEPTH (0x7fL<<20) + +#define BCE_MQ_ENQUEUE1 0x00003c0c +#define BCE_MQ_ENQUEUE1_OFFSET (0x3fL<<2) +#define BCE_MQ_ENQUEUE1_CID (0x3fffL<<8) +#define BCE_MQ_ENQUEUE1_BYTE_MASK (0xfL<<24) +#define BCE_MQ_ENQUEUE1_KNL_MODE (1L<<28) + +#define BCE_MQ_ENQUEUE2 0x00003c10 +#define BCE_MQ_BAD_WR_ADDR 0x00003c14 +#define BCE_MQ_BAD_RD_ADDR 0x00003c18 +#define BCE_MQ_KNL_BYP_WIND_START 0x00003c1c +#define BCE_MQ_KNL_BYP_WIND_START_VALUE (0xfffffL<<12) + +#define BCE_MQ_KNL_WIND_END 0x00003c20 +#define BCE_MQ_KNL_WIND_END_VALUE (0xffffffL<<8) + +#define BCE_MQ_KNL_WRITE_MASK1 0x00003c24 +#define BCE_MQ_KNL_TX_MASK1 0x00003c28 +#define BCE_MQ_KNL_CMD_MASK1 0x00003c2c +#define BCE_MQ_KNL_COND_ENQUEUE_MASK1 0x00003c30 +#define BCE_MQ_KNL_RX_V2P_MASK1 0x00003c34 +#define BCE_MQ_KNL_WRITE_MASK2 0x00003c38 +#define BCE_MQ_KNL_TX_MASK2 0x00003c3c +#define BCE_MQ_KNL_CMD_MASK2 0x00003c40 +#define BCE_MQ_KNL_COND_ENQUEUE_MASK2 0x00003c44 +#define BCE_MQ_KNL_RX_V2P_MASK2 0x00003c48 +#define BCE_MQ_KNL_BYP_WRITE_MASK1 0x00003c4c +#define BCE_MQ_KNL_BYP_TX_MASK1 0x00003c50 +#define BCE_MQ_KNL_BYP_CMD_MASK1 0x00003c54 +#define BCE_MQ_KNL_BYP_COND_ENQUEUE_MASK1 0x00003c58 +#define BCE_MQ_KNL_BYP_RX_V2P_MASK1 0x00003c5c +#define BCE_MQ_KNL_BYP_WRITE_MASK2 0x00003c60 +#define BCE_MQ_KNL_BYP_TX_MASK2 0x00003c64 +#define BCE_MQ_KNL_BYP_CMD_MASK2 0x00003c68 +#define BCE_MQ_KNL_BYP_COND_ENQUEUE_MASK2 0x00003c6c +#define BCE_MQ_KNL_BYP_RX_V2P_MASK2 0x00003c70 +#define BCE_MQ_MEM_WR_ADDR 0x00003c74 +#define BCE_MQ_MEM_WR_ADDR_VALUE (0x3fL<<0) + +#define BCE_MQ_MEM_WR_DATA0 0x00003c78 +#define BCE_MQ_MEM_WR_DATA0_VALUE (0xffffffffL<<0) + +#define BCE_MQ_MEM_WR_DATA1 0x00003c7c +#define BCE_MQ_MEM_WR_DATA1_VALUE (0xffffffffL<<0) + +#define BCE_MQ_MEM_WR_DATA2 0x00003c80 +#define BCE_MQ_MEM_WR_DATA2_VALUE (0x3fffffffL<<0) +#define BCE_MQ_MEM_WR_DATA2_VALUE_XI (0x7fffffffL<<0) + +#define BCE_MQ_MEM_RD_ADDR 0x00003c84 +#define BCE_MQ_MEM_RD_ADDR_VALUE (0x3fL<<0) + +#define BCE_MQ_MEM_RD_DATA0 0x00003c88 +#define BCE_MQ_MEM_RD_DATA0_VALUE (0xffffffffL<<0) + +#define BCE_MQ_MEM_RD_DATA1 0x00003c8c +#define BCE_MQ_MEM_RD_DATA1_VALUE (0xffffffffL<<0) + +#define BCE_MQ_MEM_RD_DATA2 0x00003c90 +#define BCE_MQ_MEM_RD_DATA2_VALUE (0x3fffffffL<<0) +#define BCE_MQ_MEM_RD_DATA2_VALUE_XI (0x7fffffffL<<0) + +#define BCE_MQ_CONFIG2 0x00003d00 +#define BCE_MQ_CONFIG2_CONT_SZ (0x7L<<4) +#define BCE_MQ_CONFIG2_FIRST_L4L5 (0x1fL<<8) + +#define BCE_MQ_MAP_L2_3 0x00003d2c +#define BCE_MQ_MAP_L2_3_MQ_OFFSET (0xffL<<0) +#define BCE_MQ_MAP_L2_3_SZ (0x3L<<8) +#define BCE_MQ_MAP_L2_3_CTX_OFFSET (0x2ffL<<10) +#define BCE_MQ_MAP_L2_3_BIN_OFFSET (0x7L<<23) +#define BCE_MQ_MAP_L2_3_ARM (0x3L<<26) +#define BCE_MQ_MAP_L2_3_ENA (0x1L<<31) +#define BCE_MQ_MAP_L2_3_DEFAULT 0x82004646 + +#define BCE_MQ_MAP_L2_5 0x00003d34 +#define BCE_MQ_MAP_L2_5_MQ_OFFSET (0xffL<<0) +#define BCE_MQ_MAP_L2_5_SZ (0x3L<<8) +#define BCE_MQ_MAP_L2_5_CTX_OFFSET (0x2ffL<<10) +#define BCE_MQ_MAP_L2_5_BIN_OFFSET (0x7L<<23) +#define BCE_MQ_MAP_L2_5_ARM (0x3L<<26) +#define BCE_MQ_MAP_L2_5_ENA (0x1L<<31) +#define BCE_MQ_MAP_L2_5_DEFAULT 0x83000b08 + + +/* + * csch_reg definition + * offset: 0x4000 + */ +#define BCE_CSCH_COMMAND 0x00004000 +#define BCE_CSCH_CH_FTQ_CMD 0x000043f8 +#define BCE_CSCH_CH_FTQ_CTL 0x000043fc +#define BCE_CSCH_CH_FTQ_CTL_MAX_DEPTH (0x3ffL<<12) +#define BCE_CSCH_CH_FTQ_CTL_CUR_DEPTH (0x3ffL<<22) + + +/* + * tbdr_reg definition + * offset: 0x5000 + */ +#define BCE_TBDR_COMMAND 0x00005000 +#define BCE_TBDR_COMMAND_ENABLE (1L<<0) +#define BCE_TBDR_COMMAND_SOFT_RST (1L<<1) +#define BCE_TBDR_COMMAND_MSTR_ABORT (1L<<4) + +#define BCE_TBDR_STATUS 0x00005004 +#define BCE_TBDR_STATUS_DMA_WAIT (1L<<0) +#define BCE_TBDR_STATUS_FTQ_WAIT (1L<<1) +#define BCE_TBDR_STATUS_FIFO_OVERFLOW (1L<<2) +#define BCE_TBDR_STATUS_FIFO_UNDERFLOW (1L<<3) +#define BCE_TBDR_STATUS_SEARCHMISS_ERROR (1L<<4) +#define BCE_TBDR_STATUS_FTQ_ENTRY_CNT (1L<<5) +#define BCE_TBDR_STATUS_BURST_CNT (1L<<6) + +#define BCE_TBDR_CONFIG 0x00005008 +#define BCE_TBDR_CONFIG_MAX_BDS (0xffL<<0) +#define BCE_TBDR_CONFIG_SWAP_MODE (1L<<8) +#define BCE_TBDR_CONFIG_PRIORITY (1L<<9) +#define BCE_TBDR_CONFIG_CACHE_NEXT_PAGE_PTRS (1L<<10) +#define BCE_TBDR_CONFIG_PAGE_SIZE (0xfL<<24) +#define BCE_TBDR_CONFIG_PAGE_SIZE_256 (0L<<24) +#define BCE_TBDR_CONFIG_PAGE_SIZE_512 (1L<<24) +#define BCE_TBDR_CONFIG_PAGE_SIZE_1K (2L<<24) +#define BCE_TBDR_CONFIG_PAGE_SIZE_2K (3L<<24) +#define BCE_TBDR_CONFIG_PAGE_SIZE_4K (4L<<24) +#define BCE_TBDR_CONFIG_PAGE_SIZE_8K (5L<<24) +#define BCE_TBDR_CONFIG_PAGE_SIZE_16K (6L<<24) +#define BCE_TBDR_CONFIG_PAGE_SIZE_32K (7L<<24) +#define BCE_TBDR_CONFIG_PAGE_SIZE_64K (8L<<24) +#define BCE_TBDR_CONFIG_PAGE_SIZE_128K (9L<<24) +#define BCE_TBDR_CONFIG_PAGE_SIZE_256K (10L<<24) +#define BCE_TBDR_CONFIG_PAGE_SIZE_512K (11L<<24) +#define BCE_TBDR_CONFIG_PAGE_SIZE_1M (12L<<24) + +#define BCE_TBDR_DEBUG_VECT_PEEK 0x0000500c +#define BCE_TBDR_DEBUG_VECT_PEEK_1_VALUE (0x7ffL<<0) +#define BCE_TBDR_DEBUG_VECT_PEEK_1_PEEK_EN (1L<<11) +#define BCE_TBDR_DEBUG_VECT_PEEK_1_SEL (0xfL<<12) +#define BCE_TBDR_DEBUG_VECT_PEEK_2_VALUE (0x7ffL<<16) +#define BCE_TBDR_DEBUG_VECT_PEEK_2_PEEK_EN (1L<<27) +#define BCE_TBDR_DEBUG_VECT_PEEK_2_SEL (0xfL<<28) + +#define BCE_TBDR_FTQ_DATA 0x000053c0 +#define BCE_TBDR_FTQ_CMD 0x000053f8 +#define BCE_TBDR_FTQ_CMD_OFFSET (0x3ffL<<0) +#define BCE_TBDR_FTQ_CMD_WR_TOP (1L<<10) +#define BCE_TBDR_FTQ_CMD_WR_TOP_0 (0L<<10) +#define BCE_TBDR_FTQ_CMD_WR_TOP_1 (1L<<10) +#define BCE_TBDR_FTQ_CMD_SFT_RESET (1L<<25) +#define BCE_TBDR_FTQ_CMD_RD_DATA (1L<<26) +#define BCE_TBDR_FTQ_CMD_ADD_INTERVEN (1L<<27) +#define BCE_TBDR_FTQ_CMD_ADD_DATA (1L<<28) +#define BCE_TBDR_FTQ_CMD_INTERVENE_CLR (1L<<29) +#define BCE_TBDR_FTQ_CMD_POP (1L<<30) +#define BCE_TBDR_FTQ_CMD_BUSY (1L<<31) + +#define BCE_TBDR_FTQ_CTL 0x000053fc +#define BCE_TBDR_FTQ_CTL_INTERVENE (1L<<0) +#define BCE_TBDR_FTQ_CTL_OVERFLOW (1L<<1) +#define BCE_TBDR_FTQ_CTL_FORCE_INTERVENE (1L<<2) +#define BCE_TBDR_FTQ_CTL_MAX_DEPTH (0x3ffL<<12) +#define BCE_TBDR_FTQ_CTL_CUR_DEPTH (0x3ffL<<22) + + +/* + * tdma_reg definition + * offset: 0x5c00 + */ +#define BCE_TDMA_COMMAND 0x00005c00 +#define BCE_TDMA_COMMAND_ENABLED (1L<<0) +#define BCE_TDMA_COMMAND_MASTER_ABORT (1L<<4) +#define BCE_TDMA_COMMAND_BAD_L2_LENGTH_ABORT (1L<<7) + +#define BCE_TDMA_STATUS 0x00005c04 +#define BCE_TDMA_STATUS_DMA_WAIT (1L<<0) +#define BCE_TDMA_STATUS_PAYLOAD_WAIT (1L<<1) +#define BCE_TDMA_STATUS_PATCH_FTQ_WAIT (1L<<2) +#define BCE_TDMA_STATUS_LOCK_WAIT (1L<<3) +#define BCE_TDMA_STATUS_FTQ_ENTRY_CNT (1L<<16) +#define BCE_TDMA_STATUS_BURST_CNT (1L<<17) + +#define BCE_TDMA_CONFIG 0x00005c08 +#define BCE_TDMA_CONFIG_ONE_DMA (1L<<0) +#define BCE_TDMA_CONFIG_ONE_RECORD (1L<<1) +#define BCE_TDMA_CONFIG_LIMIT_SZ (0xfL<<4) +#define BCE_TDMA_CONFIG_LIMIT_SZ_64 (0L<<4) +#define BCE_TDMA_CONFIG_LIMIT_SZ_128 (0x4L<<4) +#define BCE_TDMA_CONFIG_LIMIT_SZ_256 (0x6L<<4) +#define BCE_TDMA_CONFIG_LIMIT_SZ_512 (0x8L<<4) +#define BCE_TDMA_CONFIG_LINE_SZ (0xfL<<8) +#define BCE_TDMA_CONFIG_LINE_SZ_64 (0L<<8) +#define BCE_TDMA_CONFIG_LINE_SZ_128 (4L<<8) +#define BCE_TDMA_CONFIG_LINE_SZ_256 (6L<<8) +#define BCE_TDMA_CONFIG_LINE_SZ_512 (8L<<8) +#define BCE_TDMA_CONFIG_ALIGN_ENA (1L<<15) +#define BCE_TDMA_CONFIG_CHK_L2_BD (1L<<16) +#define BCE_TDMA_CONFIG_FIFO_CMP (0xfL<<20) + +#define BCE_TDMA_PAYLOAD_PROD 0x00005c0c +#define BCE_TDMA_PAYLOAD_PROD_VALUE (0x1fffL<<3) + +#define BCE_TDMA_DBG_WATCHDOG 0x00005c10 +#define BCE_TDMA_DBG_TRIGGER 0x00005c14 +#define BCE_TDMA_DMAD_FSM 0x00005c80 +#define BCE_TDMA_DMAD_FSM_BD_INVLD (1L<<0) +#define BCE_TDMA_DMAD_FSM_PUSH (0xfL<<4) +#define BCE_TDMA_DMAD_FSM_ARB_TBDC (0x3L<<8) +#define BCE_TDMA_DMAD_FSM_ARB_CTX (1L<<12) +#define BCE_TDMA_DMAD_FSM_DR_INTF (1L<<16) +#define BCE_TDMA_DMAD_FSM_DMAD (0x7L<<20) +#define BCE_TDMA_DMAD_FSM_BD (0xfL<<24) + +#define BCE_TDMA_DMAD_STATUS 0x00005c84 +#define BCE_TDMA_DMAD_STATUS_RHOLD_PUSH_ENTRY (0x3L<<0) +#define BCE_TDMA_DMAD_STATUS_RHOLD_DMAD_ENTRY (0x3L<<4) +#define BCE_TDMA_DMAD_STATUS_RHOLD_BD_ENTRY (0x3L<<8) +#define BCE_TDMA_DMAD_STATUS_IFTQ_ENUM (0xfL<<12) + +#define BCE_TDMA_DR_INTF_FSM 0x00005c88 +#define BCE_TDMA_DR_INTF_FSM_L2_COMP (0x3L<<0) +#define BCE_TDMA_DR_INTF_FSM_TPATQ (0x7L<<4) +#define BCE_TDMA_DR_INTF_FSM_TPBUF (0x3L<<8) +#define BCE_TDMA_DR_INTF_FSM_DR_BUF (0x7L<<12) +#define BCE_TDMA_DR_INTF_FSM_DMAD (0x7L<<16) + +#define BCE_TDMA_DR_INTF_STATUS 0x00005c8c +#define BCE_TDMA_DR_INTF_STATUS_HOLE_PHASE (0x7L<<0) +#define BCE_TDMA_DR_INTF_STATUS_DATA_AVAIL (0x3L<<4) +#define BCE_TDMA_DR_INTF_STATUS_SHIFT_ADDR (0x7L<<8) +#define BCE_TDMA_DR_INTF_STATUS_NXT_PNTR (0xfL<<12) +#define BCE_TDMA_DR_INTF_STATUS_BYTE_COUNT (0x7L<<16) + +#define BCE_TDMA_FTQ_DATA 0x00005fc0 +#define BCE_TDMA_FTQ_CMD 0x00005ff8 +#define BCE_TDMA_FTQ_CMD_OFFSET (0x3ffL<<0) +#define BCE_TDMA_FTQ_CMD_WR_TOP (1L<<10) +#define BCE_TDMA_FTQ_CMD_WR_TOP_0 (0L<<10) +#define BCE_TDMA_FTQ_CMD_WR_TOP_1 (1L<<10) +#define BCE_TDMA_FTQ_CMD_SFT_RESET (1L<<25) +#define BCE_TDMA_FTQ_CMD_RD_DATA (1L<<26) +#define BCE_TDMA_FTQ_CMD_ADD_INTERVEN (1L<<27) +#define BCE_TDMA_FTQ_CMD_ADD_DATA (1L<<28) +#define BCE_TDMA_FTQ_CMD_INTERVENE_CLR (1L<<29) +#define BCE_TDMA_FTQ_CMD_POP (1L<<30) +#define BCE_TDMA_FTQ_CMD_BUSY (1L<<31) + +#define BCE_TDMA_FTQ_CTL 0x00005ffc +#define BCE_TDMA_FTQ_CTL_INTERVENE (1L<<0) +#define BCE_TDMA_FTQ_CTL_OVERFLOW (1L<<1) +#define BCE_TDMA_FTQ_CTL_FORCE_INTERVENE (1L<<2) +#define BCE_TDMA_FTQ_CTL_MAX_DEPTH (0x3ffL<<12) +#define BCE_TDMA_FTQ_CTL_CUR_DEPTH (0x3ffL<<22) + + +/* + * nvm_reg definition + * offset: 0x6400 + */ +#define BCE_NVM_COMMAND 0x00006400 +#define BCE_NVM_COMMAND_RST (1L<<0) +#define BCE_NVM_COMMAND_DONE (1L<<3) +#define BCE_NVM_COMMAND_DOIT (1L<<4) +#define BCE_NVM_COMMAND_WR (1L<<5) +#define BCE_NVM_COMMAND_ERASE (1L<<6) +#define BCE_NVM_COMMAND_FIRST (1L<<7) +#define BCE_NVM_COMMAND_LAST (1L<<8) +#define BCE_NVM_COMMAND_WREN (1L<<16) +#define BCE_NVM_COMMAND_WRDI (1L<<17) +#define BCE_NVM_COMMAND_EWSR (1L<<18) +#define BCE_NVM_COMMAND_WRSR (1L<<19) + +#define BCE_NVM_STATUS 0x00006404 +#define BCE_NVM_STATUS_PI_FSM_STATE (0xfL<<0) +#define BCE_NVM_STATUS_EE_FSM_STATE (0xfL<<4) +#define BCE_NVM_STATUS_EQ_FSM_STATE (0xfL<<8) + +#define BCE_NVM_WRITE 0x00006408 +#define BCE_NVM_WRITE_NVM_WRITE_VALUE (0xffffffffL<<0) +#define BCE_NVM_WRITE_NVM_WRITE_VALUE_BIT_BANG (0L<<0) +#define BCE_NVM_WRITE_NVM_WRITE_VALUE_EECLK (1L<<0) +#define BCE_NVM_WRITE_NVM_WRITE_VALUE_EEDATA (2L<<0) +#define BCE_NVM_WRITE_NVM_WRITE_VALUE_SCLK (4L<<0) +#define BCE_NVM_WRITE_NVM_WRITE_VALUE_CS_B (8L<<0) +#define BCE_NVM_WRITE_NVM_WRITE_VALUE_SO (16L<<0) +#define BCE_NVM_WRITE_NVM_WRITE_VALUE_SI (32L<<0) + +#define BCE_NVM_ADDR 0x0000640c +#define BCE_NVM_ADDR_NVM_ADDR_VALUE (0xffffffL<<0) +#define BCE_NVM_ADDR_NVM_ADDR_VALUE_BIT_BANG (0L<<0) +#define BCE_NVM_ADDR_NVM_ADDR_VALUE_EECLK (1L<<0) +#define BCE_NVM_ADDR_NVM_ADDR_VALUE_EEDATA (2L<<0) +#define BCE_NVM_ADDR_NVM_ADDR_VALUE_SCLK (4L<<0) +#define BCE_NVM_ADDR_NVM_ADDR_VALUE_CS_B (8L<<0) +#define BCE_NVM_ADDR_NVM_ADDR_VALUE_SO (16L<<0) +#define BCE_NVM_ADDR_NVM_ADDR_VALUE_SI (32L<<0) + +#define BCE_NVM_READ 0x00006410 +#define BCE_NVM_READ_NVM_READ_VALUE (0xffffffffL<<0) +#define BCE_NVM_READ_NVM_READ_VALUE_BIT_BANG (0L<<0) +#define BCE_NVM_READ_NVM_READ_VALUE_EECLK (1L<<0) +#define BCE_NVM_READ_NVM_READ_VALUE_EEDATA (2L<<0) +#define BCE_NVM_READ_NVM_READ_VALUE_SCLK (4L<<0) +#define BCE_NVM_READ_NVM_READ_VALUE_CS_B (8L<<0) +#define BCE_NVM_READ_NVM_READ_VALUE_SO (16L<<0) +#define BCE_NVM_READ_NVM_READ_VALUE_SI (32L<<0) + +#define BCE_NVM_CFG1 0x00006414 +#define BCE_NVM_CFG1_FLASH_MODE (1L<<0) +#define BCE_NVM_CFG1_BUFFER_MODE (1L<<1) +#define BCE_NVM_CFG1_PASS_MODE (1L<<2) +#define BCE_NVM_CFG1_BITBANG_MODE (1L<<3) +#define BCE_NVM_CFG1_STATUS_BIT (0x7L<<4) +#define BCE_NVM_CFG1_STATUS_BIT_FLASH_RDY (0L<<4) +#define BCE_NVM_CFG1_STATUS_BIT_BUFFER_RDY (7L<<4) +#define BCE_NVM_CFG1_SPI_CLK_DIV (0xfL<<7) +#define BCE_NVM_CFG1_SEE_CLK_DIV (0x7ffL<<11) +#define BCE_NVM_CFG1_PROTECT_MODE (1L<<24) +#define BCE_NVM_CFG1_FLASH_SIZE (1L<<25) +#define BCE_NVM_CFG1_COMPAT_BYPASSS (1L<<31) + +#define BCE_NVM_CFG2 0x00006418 +#define BCE_NVM_CFG2_ERASE_CMD (0xffL<<0) +#define BCE_NVM_CFG2_DUMMY (0xffL<<8) +#define BCE_NVM_CFG2_STATUS_CMD (0xffL<<16) + +#define BCE_NVM_CFG3 0x0000641c +#define BCE_NVM_CFG3_BUFFER_RD_CMD (0xffL<<0) +#define BCE_NVM_CFG3_WRITE_CMD (0xffL<<8) +#define BCE_NVM_CFG3_BUFFER_WRITE_CMD (0xffL<<16) +#define BCE_NVM_CFG3_READ_CMD (0xffL<<24) + +#define BCE_NVM_SW_ARB 0x00006420 +#define BCE_NVM_SW_ARB_ARB_REQ_SET0 (1L<<0) +#define BCE_NVM_SW_ARB_ARB_REQ_SET1 (1L<<1) +#define BCE_NVM_SW_ARB_ARB_REQ_SET2 (1L<<2) +#define BCE_NVM_SW_ARB_ARB_REQ_SET3 (1L<<3) +#define BCE_NVM_SW_ARB_ARB_REQ_CLR0 (1L<<4) +#define BCE_NVM_SW_ARB_ARB_REQ_CLR1 (1L<<5) +#define BCE_NVM_SW_ARB_ARB_REQ_CLR2 (1L<<6) +#define BCE_NVM_SW_ARB_ARB_REQ_CLR3 (1L<<7) +#define BCE_NVM_SW_ARB_ARB_ARB0 (1L<<8) +#define BCE_NVM_SW_ARB_ARB_ARB1 (1L<<9) +#define BCE_NVM_SW_ARB_ARB_ARB2 (1L<<10) +#define BCE_NVM_SW_ARB_ARB_ARB3 (1L<<11) +#define BCE_NVM_SW_ARB_REQ0 (1L<<12) +#define BCE_NVM_SW_ARB_REQ1 (1L<<13) +#define BCE_NVM_SW_ARB_REQ2 (1L<<14) +#define BCE_NVM_SW_ARB_REQ3 (1L<<15) + +#define BCE_NVM_ACCESS_ENABLE 0x00006424 +#define BCE_NVM_ACCESS_ENABLE_EN (1L<<0) +#define BCE_NVM_ACCESS_ENABLE_WR_EN (1L<<1) + +#define BCE_NVM_WRITE1 0x00006428 +#define BCE_NVM_WRITE1_WREN_CMD (0xffL<<0) +#define BCE_NVM_WRITE1_WRDI_CMD (0xffL<<8) +#define BCE_NVM_WRITE1_SR_DATA (0xffL<<16) + + +/* + * hc_reg definition + * offset: 0x6800 + */ +#define BCE_HC_COMMAND 0x00006800 +#define BCE_HC_COMMAND_ENABLE (1L<<0) +#define BCE_HC_COMMAND_SKIP_ABORT (1L<<4) +#define BCE_HC_COMMAND_COAL_NOW (1L<<16) +#define BCE_HC_COMMAND_COAL_NOW_WO_INT (1L<<17) +#define BCE_HC_COMMAND_STATS_NOW (1L<<18) +#define BCE_HC_COMMAND_FORCE_INT (0x3L<<19) +#define BCE_HC_COMMAND_FORCE_INT_NULL (0L<<19) +#define BCE_HC_COMMAND_FORCE_INT_HIGH (1L<<19) +#define BCE_HC_COMMAND_FORCE_INT_LOW (2L<<19) +#define BCE_HC_COMMAND_FORCE_INT_FREE (3L<<19) +#define BCE_HC_COMMAND_CLR_STAT_NOW (1L<<21) +#define BCE_HC_COMMAND_MAIN_PWR_INT (1L<<22) +#define BCE_HC_COMMAND_COAL_ON_NEXT_EVENT (1L<<27) + +#define BCE_HC_STATUS 0x00006804 +#define BCE_HC_STATUS_MASTER_ABORT (1L<<0) +#define BCE_HC_STATUS_PARITY_ERROR_STATE (1L<<1) +#define BCE_HC_STATUS_PCI_CLK_CNT_STAT (1L<<16) +#define BCE_HC_STATUS_CORE_CLK_CNT_STAT (1L<<17) +#define BCE_HC_STATUS_NUM_STATUS_BLOCKS_STAT (1L<<18) +#define BCE_HC_STATUS_NUM_INT_GEN_STAT (1L<<19) +#define BCE_HC_STATUS_NUM_INT_MBOX_WR_STAT (1L<<20) +#define BCE_HC_STATUS_CORE_CLKS_TO_HW_INTACK_STAT (1L<<23) +#define BCE_HC_STATUS_CORE_CLKS_TO_SW_INTACK_STAT (1L<<24) +#define BCE_HC_STATUS_CORE_CLKS_DURING_SW_INTACK_STAT (1L<<25) + +#define BCE_HC_CONFIG 0x00006808 +#define BCE_HC_CONFIG_COLLECT_STATS (1L<<0) +#define BCE_HC_CONFIG_RX_TMR_MODE (1L<<1) +#define BCE_HC_CONFIG_TX_TMR_MODE (1L<<2) +#define BCE_HC_CONFIG_COM_TMR_MODE (1L<<3) +#define BCE_HC_CONFIG_CMD_TMR_MODE (1L<<4) +#define BCE_HC_CONFIG_STATISTIC_PRIORITY (1L<<5) +#define BCE_HC_CONFIG_STATUS_PRIORITY (1L<<6) +#define BCE_HC_CONFIG_STAT_MEM_ADDR (0xffL<<8) +#define BCE_HC_CONFIG_PER_MODE (1L<<16) +#define BCE_HC_CONFIG_ONE_SHOT (1L<<17) +#define BCE_HC_CONFIG_USE_INT_PARAM (1L<<18) +#define BCE_HC_CONFIG_SET_MASK_AT_RD (1L<<19) +#define BCE_HC_CONFIG_PER_COLLECT_LIMIT (0xfL<<20) +#define BCE_HC_CONFIG_SB_ADDR_INC (0x7L<<24) +#define BCE_HC_CONFIG_SB_ADDR_INC_64B (0L<<24) +#define BCE_HC_CONFIG_SB_ADDR_INC_128B (1L<<24) +#define BCE_HC_CONFIG_SB_ADDR_INC_256B (2L<<24) +#define BCE_HC_CONFIG_SB_ADDR_INC_512B (3L<<24) +#define BCE_HC_CONFIG_SB_ADDR_INC_1024B (4L<<24) +#define BCE_HC_CONFIG_SB_ADDR_INC_2048B (5L<<24) +#define BCE_HC_CONFIG_SB_ADDR_INC_4096B (6L<<24) +#define BCE_HC_CONFIG_SB_ADDR_INC_8192B (7L<<24) +#define BCE_HC_CONFIG_GEN_STAT_AVG_INTR (1L<<29) +#define BCE_HC_CONFIG_UNMASK_ALL (1L<<30) +#define BCE_HC_CONFIG_TX_SEL (1L<<31) + +#define BCE_HC_ATTN_BITS_ENABLE 0x0000680c +#define BCE_HC_STATUS_ADDR_L 0x00006810 +#define BCE_HC_STATUS_ADDR_H 0x00006814 +#define BCE_HC_STATISTICS_ADDR_L 0x00006818 +#define BCE_HC_STATISTICS_ADDR_H 0x0000681c +#define BCE_HC_TX_QUICK_CONS_TRIP 0x00006820 +#define BCE_HC_TX_QUICK_CONS_TRIP_VALUE (0xffL<<0) +#define BCE_HC_TX_QUICK_CONS_TRIP_INT (0xffL<<16) + +#define BCE_HC_COMP_PROD_TRIP 0x00006824 +#define BCE_HC_COMP_PROD_TRIP_VALUE (0xffL<<0) +#define BCE_HC_COMP_PROD_TRIP_INT (0xffL<<16) + +#define BCE_HC_RX_QUICK_CONS_TRIP 0x00006828 +#define BCE_HC_RX_QUICK_CONS_TRIP_VALUE (0xffL<<0) +#define BCE_HC_RX_QUICK_CONS_TRIP_INT (0xffL<<16) + +#define BCE_HC_RX_TICKS 0x0000682c +#define BCE_HC_RX_TICKS_VALUE (0x3ffL<<0) +#define BCE_HC_RX_TICKS_INT (0x3ffL<<16) + +#define BCE_HC_TX_TICKS 0x00006830 +#define BCE_HC_TX_TICKS_VALUE (0x3ffL<<0) +#define BCE_HC_TX_TICKS_INT (0x3ffL<<16) + +#define BCE_HC_COM_TICKS 0x00006834 +#define BCE_HC_COM_TICKS_VALUE (0x3ffL<<0) +#define BCE_HC_COM_TICKS_INT (0x3ffL<<16) + +#define BCE_HC_CMD_TICKS 0x00006838 +#define BCE_HC_CMD_TICKS_VALUE (0x3ffL<<0) +#define BCE_HC_CMD_TICKS_INT (0x3ffL<<16) + +#define BCE_HC_PERIODIC_TICKS 0x0000683c +#define BCE_HC_PERIODIC_TICKS_HC_PERIODIC_TICKS (0xffffL<<0) +#define BCE_HC_PERIODIC_TICKS_HC_INT_PERIODIC_TICKS (0xffffL<<16) + +#define BCE_HC_STAT_COLLECT_TICKS 0x00006840 +#define BCE_HC_STAT_COLLECT_TICKS_HC_STAT_COLL_TICKS (0xffL<<4) + +#define BCE_HC_STATS_TICKS 0x00006844 +#define BCE_HC_STATS_TICKS_HC_STAT_TICKS (0xffffL<<8) + +#define BCE_HC_STATS_INTERRUPT_STATUS 0x00006848 +#define BCE_HC_STATS_INTERRUPT_STATUS_SB_STATUS (0x1ffL<<0) +#define BCE_HC_STATS_INTERRUPT_STATUS_INT_STATUS (0x1ffL<<16) + +#define BCE_HC_STAT_MEM_DATA 0x0000684c +#define BCE_HC_STAT_GEN_SEL_0 0x00006850 +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0 (0x7fL<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RXP_STAT0 (0L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RXP_STAT1 (1L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RXP_STAT2 (2L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RXP_STAT3 (3L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RXP_STAT4 (4L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RXP_STAT5 (5L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RXP_STAT6 (6L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RXP_STAT7 (7L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RXP_STAT8 (8L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RXP_STAT9 (9L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RXP_STAT10 (10L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RXP_STAT11 (11L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TXP_STAT0 (12L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TXP_STAT1 (13L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TXP_STAT2 (14L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TXP_STAT3 (15L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TXP_STAT4 (16L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TXP_STAT5 (17L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TXP_STAT6 (18L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TXP_STAT7 (19L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_COM_STAT0 (20L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_COM_STAT1 (21L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_COM_STAT2 (22L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_COM_STAT3 (23L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_COM_STAT4 (24L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_COM_STAT5 (25L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_COM_STAT6 (26L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_COM_STAT7 (27L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_COM_STAT8 (28L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_COM_STAT9 (29L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_COM_STAT10 (30L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_COM_STAT11 (31L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TPAT_STAT0 (32L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TPAT_STAT1 (33L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TPAT_STAT2 (34L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TPAT_STAT3 (35L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_CP_STAT0 (36L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_CP_STAT1 (37L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_CP_STAT2 (38L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_CP_STAT3 (39L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_CP_STAT4 (40L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_CP_STAT5 (41L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_CP_STAT6 (42L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_CP_STAT7 (43L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_MCP_STAT0 (44L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_MCP_STAT1 (45L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_MCP_STAT2 (46L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_MCP_STAT3 (47L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_MCP_STAT4 (48L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_MCP_STAT5 (49L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_MCP_STAT6 (50L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_MCP_STAT7 (51L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_PCI_CLK_CNT (52L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_CORE_CLK_CNT (53L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_NUM_STATUS_BLOCKS (54L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_NUM_INT_GEN (55L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_NUM_INT_MBOX_WR (56L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_CORE_CLKS_TO_HW_INTACK (59L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_CORE_CLKS_TO_SW_INTACK (60L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_CORE_CLKS_DURING_SW_INTACK (61L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TSCH_CMD_CNT (62L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TSCH_SLOT_CNT (63L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_CSCH_CMD_CNT (64L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_CSCH_SLOT_CNT (65L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RLUPQ_VALID_CNT (66L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RXPQ_VALID_CNT (67L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RXPCQ_VALID_CNT (68L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RV2PPQ_VALID_CNT (69L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RV2PMQ_VALID_CNT (70L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RV2PTQ_VALID_CNT (71L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RDMAQ_VALID_CNT (72L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TSCHQ_VALID_CNT (73L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TBDRQ_VALID_CNT (74L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TXPQ_VALID_CNT (75L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TDMAQ_VALID_CNT (76L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TPATQ_VALID_CNT (77L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TASQ_VALID_CNT (78L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_CSQ_VALID_CNT (79L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_CPQ_VALID_CNT (80L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_COMXQ_VALID_CNT (81L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_COMTQ_VALID_CNT (82L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_COMQ_VALID_CNT (83L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_MGMQ_VALID_CNT (84L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_DMAE_READ_TRANSFERS_CNT (85L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_DMAE_READ_DELAY_PCI_CLKS_CNT (86L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_DMAE_BIG_READ_TRANSFERS_CNT (87L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_DMAE_BIG_READ_DELAY_PCI_CLKS_CNT (88L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_DMAE_BIG_READ_RETRY_AFTER_DATA_CNT (89L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_DMAE_WRITE_TRANSFERS_CNT (90L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_DMAE_WRITE_DELAY_PCI_CLKS_CNT (91L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_DMAE_BIG_WRITE_TRANSFERS_CNT (92L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_DMAE_BIG_WRITE_DELAY_PCI_CLKS_CNT (93L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_DMAE_BIG_WRITE_RETRY_AFTER_DATA_CNT (94L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_CTX_WR_CNT64 (95L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_CTX_RD_CNT64 (96L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_CTX_ACC_STALL_CLKS (97L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_CTX_LOCK_STALL_CLKS (98L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_MBQ_CTX_ACCESS_STAT (99L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_MBQ_CTX_ACCESS64_STAT (100L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_MBQ_PCI_STALL_STAT (101L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TBDR_FTQ_ENTRY_CNT (102L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TBDR_BURST_CNT (103L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TDMA_FTQ_ENTRY_CNT (104L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TDMA_BURST_CNT (105L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RDMA_FTQ_ENTRY_CNT (106L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RDMA_BURST_CNT (107L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RLUP_MATCH_CNT (108L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TMR_POLL_PASS_CNT (109L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TMR_TMR1_CNT (110L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TMR_TMR2_CNT (111L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TMR_TMR3_CNT (112L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TMR_TMR4_CNT (113L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TMR_TMR5_CNT (114L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RV2P_STAT0 (115L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RV2P_STAT1 (116L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RV2P_STAT2 (117L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RV2P_STAT3 (118L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RV2P_STAT4 (119L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RV2P_STAT5 (120L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RBDC_PROC1_MISS (121L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RBDC_PROC2_MISS (122L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RBDC_BURST_CNT (127L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_1 (0x7fL<<8) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_2 (0x7fL<<16) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_3 (0x7fL<<24) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_XI (0xffL<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_UMP_RX_FRAME_DROP_XI (52L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_UNUSED_S0_XI (57L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_UNUSED_S1_XI (58L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_UNUSED_S2_XI (85L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_UNUSED_S3_XI (86L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_UNUSED_S4_XI (87L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_UNUSED_S5_XI (88L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_UNUSED_S6_XI (89L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_UNUSED_S7_XI (90L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_UNUSED_S8_XI (91L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_UNUSED_S9_XI (92L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_UNUSED_S10_XI (93L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_MQ_IDB_OFLOW_XI (94L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_CTX_BLK_RD_CNT_XI (123L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_CTX_BLK_WR_CNT_XI (124L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_CTX_HITS_XI (125L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_CTX_MISSES_XI (126L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_NUM_STATUS_BLOCKS_VEC1_XI (128L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_NUM_INT_GEN_VEC1_XI (129L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_NUM_INT_MBOX_WR_VEC1_XI (130L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_CORE_CLKS_TO_HW_INTACK_VEC1_XI (131L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_CORE_CLKS_TO_SW_INTACK_VEC1_XI (132L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_CORE_CLKS_DURING_SW_INTACK_VEC1_XI (133L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_NUM_STATUS_BLOCKS_VEC2_XI (134L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_NUM_INT_GEN_VEC2_XI (135L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_NUM_INT_MBOX_WR_VEC2_XI (136L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_CORE_CLKS_TO_HW_INTACK_VEC2_XI (137L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_CORE_CLKS_TO_SW_INTACK_VEC2_XI (138L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_CORE_CLKS_DURING_SW_INTACK_VEC2_XI (139L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_NUM_STATUS_BLOCKS_VEC3_XI (140L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_NUM_INT_GEN_VEC3_XI (141L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_NUM_INT_MBOX_WR_VEC3_XI (142L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_CORE_CLKS_TO_HW_INTACK_VEC3_XI (143L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_CORE_CLKS_TO_SW_INTACK_VEC3_XI (144L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_CORE_CLKS_DURING_SW_INTACK_VEC3_XI (145L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_NUM_STATUS_BLOCKS_VEC4_XI (146L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_NUM_INT_GEN_VEC4_XI (147L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_NUM_INT_MBOX_WR_VEC4_XI (148L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_CORE_CLKS_TO_HW_INTACK_VEC4_XI (149L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_CORE_CLKS_TO_SW_INTACK_VEC4_XI (150L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_CORE_CLKS_DURING_SW_INTACK_VEC4_XI (151L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_NUM_STATUS_BLOCKS_VEC5_XI (152L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_NUM_INT_GEN_VEC5_XI (153L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_NUM_INT_MBOX_WR_VEC5_XI (154L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_CORE_CLKS_TO_HW_INTACK_VEC5_XI (155L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_CORE_CLKS_TO_SW_INTACK_VEC5_XI (156L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_CORE_CLKS_DURING_SW_INTACK_VEC5_XI (157L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_NUM_STATUS_BLOCKS_VEC6_XI (158L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_NUM_INT_GEN_VEC6_XI (159L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_NUM_INT_MBOX_WR_VEC6_XI (160L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_CORE_CLKS_TO_HW_INTACK_VEC6_XI (161L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_CORE_CLKS_TO_SW_INTACK_VEC6_XI (162L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_CORE_CLKS_DURING_SW_INTACK_VEC6_XI (163L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_NUM_STATUS_BLOCKS_VEC7_XI (164L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_NUM_INT_GEN_VEC7_XI (165L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_NUM_INT_MBOX_WR_VEC7_XI (166L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_CORE_CLKS_TO_HW_INTACK_VEC7_XI (167L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_CORE_CLKS_TO_SW_INTACK_VEC7_XI (168L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_CORE_CLKS_DURING_SW_INTACK_VEC7_XI (169L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_NUM_STATUS_BLOCKS_VEC8_XI (170L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_NUM_INT_GEN_VEC8_XI (171L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_NUM_INT_MBOX_WR_VEC8_XI (172L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_CORE_CLKS_TO_HW_INTACK_VEC8_XI (173L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_CORE_CLKS_TO_SW_INTACK_VEC8_XI (174L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_HC_CORE_CLKS_DURING_SW_INTACK_VEC8_XI (175L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RV2PCS_CMD_CNT_XI (176L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RV2PCS_SLOT_CNT_XI (177L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RV2PCSQ_VALID_CNT_XI (178L<<0) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_1_XI (0xffL<<8) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_2_XI (0xffL<<16) +#define BCE_HC_STAT_GEN_SEL_0_GEN_SEL_3_XI (0xffL<<24) + +#define BCE_HC_STAT_GEN_SEL_1 0x00006854 +#define BCE_HC_STAT_GEN_SEL_1_GEN_SEL_4 (0x7fL<<0) +#define BCE_HC_STAT_GEN_SEL_1_GEN_SEL_5 (0x7fL<<8) +#define BCE_HC_STAT_GEN_SEL_1_GEN_SEL_6 (0x7fL<<16) +#define BCE_HC_STAT_GEN_SEL_1_GEN_SEL_7 (0x7fL<<24) +#define BCE_HC_STAT_GEN_SEL_1_GEN_SEL_4_XI (0xffL<<0) +#define BCE_HC_STAT_GEN_SEL_1_GEN_SEL_5_XI (0xffL<<8) +#define BCE_HC_STAT_GEN_SEL_1_GEN_SEL_6_XI (0xffL<<16) +#define BCE_HC_STAT_GEN_SEL_1_GEN_SEL_7_XI (0xffL<<24) + +#define BCE_HC_STAT_GEN_SEL_2 0x00006858 +#define BCE_HC_STAT_GEN_SEL_2_GEN_SEL_8 (0x7fL<<0) +#define BCE_HC_STAT_GEN_SEL_2_GEN_SEL_9 (0x7fL<<8) +#define BCE_HC_STAT_GEN_SEL_2_GEN_SEL_10 (0x7fL<<16) +#define BCE_HC_STAT_GEN_SEL_2_GEN_SEL_11 (0x7fL<<24) +#define BCE_HC_STAT_GEN_SEL_2_GEN_SEL_8_XI (0xffL<<0) +#define BCE_HC_STAT_GEN_SEL_2_GEN_SEL_9_XI (0xffL<<8) +#define BCE_HC_STAT_GEN_SEL_2_GEN_SEL_10_XI (0xffL<<16) +#define BCE_HC_STAT_GEN_SEL_2_GEN_SEL_11_XI (0xffL<<24) + +#define BCE_HC_STAT_GEN_SEL_3 0x0000685c +#define BCE_HC_STAT_GEN_SEL_3_GEN_SEL_12 (0x7fL<<0) +#define BCE_HC_STAT_GEN_SEL_3_GEN_SEL_13 (0x7fL<<8) +#define BCE_HC_STAT_GEN_SEL_3_GEN_SEL_14 (0x7fL<<16) +#define BCE_HC_STAT_GEN_SEL_3_GEN_SEL_15 (0x7fL<<24) +#define BCE_HC_STAT_GEN_SEL_3_GEN_SEL_12_XI (0xffL<<0) +#define BCE_HC_STAT_GEN_SEL_3_GEN_SEL_13_XI (0xffL<<8) +#define BCE_HC_STAT_GEN_SEL_3_GEN_SEL_14_XI (0xffL<<16) +#define BCE_HC_STAT_GEN_SEL_3_GEN_SEL_15_XI (0xffL<<24) + +#define BCE_HC_STAT_GEN_STAT0 0x00006888 +#define BCE_HC_STAT_GEN_STAT1 0x0000688c +#define BCE_HC_STAT_GEN_STAT2 0x00006890 +#define BCE_HC_STAT_GEN_STAT3 0x00006894 +#define BCE_HC_STAT_GEN_STAT4 0x00006898 +#define BCE_HC_STAT_GEN_STAT5 0x0000689c +#define BCE_HC_STAT_GEN_STAT6 0x000068a0 +#define BCE_HC_STAT_GEN_STAT7 0x000068a4 +#define BCE_HC_STAT_GEN_STAT8 0x000068a8 +#define BCE_HC_STAT_GEN_STAT9 0x000068ac +#define BCE_HC_STAT_GEN_STAT10 0x000068b0 +#define BCE_HC_STAT_GEN_STAT11 0x000068b4 +#define BCE_HC_STAT_GEN_STAT12 0x000068b8 +#define BCE_HC_STAT_GEN_STAT13 0x000068bc +#define BCE_HC_STAT_GEN_STAT14 0x000068c0 +#define BCE_HC_STAT_GEN_STAT15 0x000068c4 +#define BCE_HC_STAT_GEN_STAT_AC0 0x000068c8 +#define BCE_HC_STAT_GEN_STAT_AC1 0x000068cc +#define BCE_HC_STAT_GEN_STAT_AC2 0x000068d0 +#define BCE_HC_STAT_GEN_STAT_AC3 0x000068d4 +#define BCE_HC_STAT_GEN_STAT_AC4 0x000068d8 +#define BCE_HC_STAT_GEN_STAT_AC5 0x000068dc +#define BCE_HC_STAT_GEN_STAT_AC6 0x000068e0 +#define BCE_HC_STAT_GEN_STAT_AC7 0x000068e4 +#define BCE_HC_STAT_GEN_STAT_AC8 0x000068e8 +#define BCE_HC_STAT_GEN_STAT_AC9 0x000068ec +#define BCE_HC_STAT_GEN_STAT_AC10 0x000068f0 +#define BCE_HC_STAT_GEN_STAT_AC11 0x000068f4 +#define BCE_HC_STAT_GEN_STAT_AC12 0x000068f8 +#define BCE_HC_STAT_GEN_STAT_AC13 0x000068fc +#define BCE_HC_STAT_GEN_STAT_AC14 0x00006900 +#define BCE_HC_STAT_GEN_STAT_AC15 0x00006904 +#define BCE_HC_STAT_GEN_STAT_AC 0x000068c8 +#define BCE_HC_VIS 0x00006908 +#define BCE_HC_VIS_STAT_BUILD_STATE (0xfL<<0) +#define BCE_HC_VIS_STAT_BUILD_STATE_IDLE (0L<<0) +#define BCE_HC_VIS_STAT_BUILD_STATE_START (1L<<0) +#define BCE_HC_VIS_STAT_BUILD_STATE_REQUEST (2L<<0) +#define BCE_HC_VIS_STAT_BUILD_STATE_UPDATE64 (3L<<0) +#define BCE_HC_VIS_STAT_BUILD_STATE_UPDATE32 (4L<<0) +#define BCE_HC_VIS_STAT_BUILD_STATE_UPDATE_DONE (5L<<0) +#define BCE_HC_VIS_STAT_BUILD_STATE_DMA (6L<<0) +#define BCE_HC_VIS_STAT_BUILD_STATE_MSI_CONTROL (7L<<0) +#define BCE_HC_VIS_STAT_BUILD_STATE_MSI_LOW (8L<<0) +#define BCE_HC_VIS_STAT_BUILD_STATE_MSI_HIGH (9L<<0) +#define BCE_HC_VIS_STAT_BUILD_STATE_MSI_DATA (10L<<0) +#define BCE_HC_VIS_DMA_STAT_STATE (0xfL<<8) +#define BCE_HC_VIS_DMA_STAT_STATE_IDLE (0L<<8) +#define BCE_HC_VIS_DMA_STAT_STATE_STATUS_PARAM (1L<<8) +#define BCE_HC_VIS_DMA_STAT_STATE_STATUS_DMA (2L<<8) +#define BCE_HC_VIS_DMA_STAT_STATE_WRITE_COMP (3L<<8) +#define BCE_HC_VIS_DMA_STAT_STATE_COMP (4L<<8) +#define BCE_HC_VIS_DMA_STAT_STATE_STATISTIC_PARAM (5L<<8) +#define BCE_HC_VIS_DMA_STAT_STATE_STATISTIC_DMA (6L<<8) +#define BCE_HC_VIS_DMA_STAT_STATE_WRITE_COMP_1 (7L<<8) +#define BCE_HC_VIS_DMA_STAT_STATE_WRITE_COMP_2 (8L<<8) +#define BCE_HC_VIS_DMA_STAT_STATE_WAIT (9L<<8) +#define BCE_HC_VIS_DMA_STAT_STATE_ABORT (15L<<8) +#define BCE_HC_VIS_DMA_MSI_STATE (0x7L<<12) +#define BCE_HC_VIS_STATISTIC_DMA_EN_STATE (0x3L<<15) +#define BCE_HC_VIS_STATISTIC_DMA_EN_STATE_IDLE (0L<<15) +#define BCE_HC_VIS_STATISTIC_DMA_EN_STATE_COUNT (1L<<15) +#define BCE_HC_VIS_STATISTIC_DMA_EN_STATE_START (2L<<15) + +#define BCE_HC_VIS_1 0x0000690c +#define BCE_HC_VIS_1_HW_INTACK_STATE (1L<<4) +#define BCE_HC_VIS_1_HW_INTACK_STATE_IDLE (0L<<4) +#define BCE_HC_VIS_1_HW_INTACK_STATE_COUNT (1L<<4) +#define BCE_HC_VIS_1_SW_INTACK_STATE (1L<<5) +#define BCE_HC_VIS_1_SW_INTACK_STATE_IDLE (0L<<5) +#define BCE_HC_VIS_1_SW_INTACK_STATE_COUNT (1L<<5) +#define BCE_HC_VIS_1_DURING_SW_INTACK_STATE (1L<<6) +#define BCE_HC_VIS_1_DURING_SW_INTACK_STATE_IDLE (0L<<6) +#define BCE_HC_VIS_1_DURING_SW_INTACK_STATE_COUNT (1L<<6) +#define BCE_HC_VIS_1_MAILBOX_COUNT_STATE (1L<<7) +#define BCE_HC_VIS_1_MAILBOX_COUNT_STATE_IDLE (0L<<7) +#define BCE_HC_VIS_1_MAILBOX_COUNT_STATE_COUNT (1L<<7) +#define BCE_HC_VIS_1_RAM_RD_ARB_STATE (0xfL<<17) +#define BCE_HC_VIS_1_RAM_RD_ARB_STATE_IDLE (0L<<17) +#define BCE_HC_VIS_1_RAM_RD_ARB_STATE_DMA (1L<<17) +#define BCE_HC_VIS_1_RAM_RD_ARB_STATE_UPDATE (2L<<17) +#define BCE_HC_VIS_1_RAM_RD_ARB_STATE_ASSIGN (3L<<17) +#define BCE_HC_VIS_1_RAM_RD_ARB_STATE_WAIT (4L<<17) +#define BCE_HC_VIS_1_RAM_RD_ARB_STATE_REG_UPDATE (5L<<17) +#define BCE_HC_VIS_1_RAM_RD_ARB_STATE_REG_ASSIGN (6L<<17) +#define BCE_HC_VIS_1_RAM_RD_ARB_STATE_REG_WAIT (7L<<17) +#define BCE_HC_VIS_1_RAM_WR_ARB_STATE (0x3L<<21) +#define BCE_HC_VIS_1_RAM_WR_ARB_STATE_NORMAL (0L<<21) +#define BCE_HC_VIS_1_RAM_WR_ARB_STATE_CLEAR (1L<<21) +#define BCE_HC_VIS_1_INT_GEN_STATE (1L<<23) +#define BCE_HC_VIS_1_INT_GEN_STATE_DLE (0L<<23) +#define BCE_HC_VIS_1_INT_GEN_STATE_NTERRUPT (1L<<23) +#define BCE_HC_VIS_1_STAT_CHAN_ID (0x7L<<24) +#define BCE_HC_VIS_1_INT_B (1L<<27) + +#define BCE_HC_DEBUG_VECT_PEEK 0x00006910 +#define BCE_HC_DEBUG_VECT_PEEK_1_VALUE (0x7ffL<<0) +#define BCE_HC_DEBUG_VECT_PEEK_1_PEEK_EN (1L<<11) +#define BCE_HC_DEBUG_VECT_PEEK_1_SEL (0xfL<<12) +#define BCE_HC_DEBUG_VECT_PEEK_2_VALUE (0x7ffL<<16) +#define BCE_HC_DEBUG_VECT_PEEK_2_PEEK_EN (1L<<27) +#define BCE_HC_DEBUG_VECT_PEEK_2_SEL (0xfL<<28) + +#define BCE_HC_COALESCE_NOW 0x00006914 +#define BCE_HC_COALESCE_NOW_COAL_NOW (0x1ffL<<1) +#define BCE_HC_COALESCE_NOW_COAL_NOW_WO_INT (0x1ffL<<11) +#define BCE_HC_COALESCE_NOW_COAL_ON_NXT_EVENT (0x1ffL<<21) + +#define BCE_HC_MSIX_BIT_VECTOR 0x00006918 +#define BCE_HC_MSIX_BIT_VECTOR_VAL (0x1ffL<<0) + +#define BCE_HC_SB_CONFIG_1 0x00006a00 +#define BCE_HC_SB_CONFIG_1_RX_TMR_MODE (1L<<1) +#define BCE_HC_SB_CONFIG_1_TX_TMR_MODE (1L<<2) +#define BCE_HC_SB_CONFIG_1_COM_TMR_MODE (1L<<3) +#define BCE_HC_SB_CONFIG_1_CMD_TMR_MODE (1L<<4) +#define BCE_HC_SB_CONFIG_1_PER_MODE (1L<<16) +#define BCE_HC_SB_CONFIG_1_ONE_SHOT (1L<<17) +#define BCE_HC_SB_CONFIG_1_USE_INT_PARAM (1L<<18) +#define BCE_HC_SB_CONFIG_1_PER_COLLECT_LIMIT (0xfL<<20) + +#define BCE_HC_TX_QUICK_CONS_TRIP_1 0x00006a04 +#define BCE_HC_TX_QUICK_CONS_TRIP_1_VALUE (0xffL<<0) +#define BCE_HC_TX_QUICK_CONS_TRIP_1_INT (0xffL<<16) + +#define BCE_HC_COMP_PROD_TRIP_1 0x00006a08 +#define BCE_HC_COMP_PROD_TRIP_1_VALUE (0xffL<<0) +#define BCE_HC_COMP_PROD_TRIP_1_INT (0xffL<<16) + +#define BCE_HC_RX_QUICK_CONS_TRIP_1 0x00006a0c +#define BCE_HC_RX_QUICK_CONS_TRIP_1_VALUE (0xffL<<0) +#define BCE_HC_RX_QUICK_CONS_TRIP_1_INT (0xffL<<16) + +#define BCE_HC_RX_TICKS_1 0x00006a10 +#define BCE_HC_RX_TICKS_1_VALUE (0x3ffL<<0) +#define BCE_HC_RX_TICKS_1_INT (0x3ffL<<16) + +#define BCE_HC_TX_TICKS_1 0x00006a14 +#define BCE_HC_TX_TICKS_1_VALUE (0x3ffL<<0) +#define BCE_HC_TX_TICKS_1_INT (0x3ffL<<16) + +#define BCE_HC_COM_TICKS_1 0x00006a18 +#define BCE_HC_COM_TICKS_1_VALUE (0x3ffL<<0) +#define BCE_HC_COM_TICKS_1_INT (0x3ffL<<16) + +#define BCE_HC_CMD_TICKS_1 0x00006a1c +#define BCE_HC_CMD_TICKS_1_VALUE (0x3ffL<<0) +#define BCE_HC_CMD_TICKS_1_INT (0x3ffL<<16) + +#define BCE_HC_PERIODIC_TICKS_1 0x00006a20 +#define BCE_HC_PERIODIC_TICKS_1_HC_PERIODIC_TICKS (0xffffL<<0) +#define BCE_HC_PERIODIC_TICKS_1_HC_INT_PERIODIC_TICKS (0xffffL<<16) + +#define BCE_HC_SB_CONFIG_2 0x00006a24 +#define BCE_HC_SB_CONFIG_2_RX_TMR_MODE (1L<<1) +#define BCE_HC_SB_CONFIG_2_TX_TMR_MODE (1L<<2) +#define BCE_HC_SB_CONFIG_2_COM_TMR_MODE (1L<<3) +#define BCE_HC_SB_CONFIG_2_CMD_TMR_MODE (1L<<4) +#define BCE_HC_SB_CONFIG_2_PER_MODE (1L<<16) +#define BCE_HC_SB_CONFIG_2_ONE_SHOT (1L<<17) +#define BCE_HC_SB_CONFIG_2_USE_INT_PARAM (1L<<18) +#define BCE_HC_SB_CONFIG_2_PER_COLLECT_LIMIT (0xfL<<20) + +#define BCE_HC_TX_QUICK_CONS_TRIP_2 0x00006a28 +#define BCE_HC_TX_QUICK_CONS_TRIP_2_VALUE (0xffL<<0) +#define BCE_HC_TX_QUICK_CONS_TRIP_2_INT (0xffL<<16) + +#define BCE_HC_COMP_PROD_TRIP_2 0x00006a2c +#define BCE_HC_COMP_PROD_TRIP_2_VALUE (0xffL<<0) +#define BCE_HC_COMP_PROD_TRIP_2_INT (0xffL<<16) + +#define BCE_HC_RX_QUICK_CONS_TRIP_2 0x00006a30 +#define BCE_HC_RX_QUICK_CONS_TRIP_2_VALUE (0xffL<<0) +#define BCE_HC_RX_QUICK_CONS_TRIP_2_INT (0xffL<<16) + +#define BCE_HC_RX_TICKS_2 0x00006a34 +#define BCE_HC_RX_TICKS_2_VALUE (0x3ffL<<0) +#define BCE_HC_RX_TICKS_2_INT (0x3ffL<<16) + +#define BCE_HC_TX_TICKS_2 0x00006a38 +#define BCE_HC_TX_TICKS_2_VALUE (0x3ffL<<0) +#define BCE_HC_TX_TICKS_2_INT (0x3ffL<<16) + +#define BCE_HC_COM_TICKS_2 0x00006a3c +#define BCE_HC_COM_TICKS_2_VALUE (0x3ffL<<0) +#define BCE_HC_COM_TICKS_2_INT (0x3ffL<<16) + +#define BCE_HC_CMD_TICKS_2 0x00006a40 +#define BCE_HC_CMD_TICKS_2_VALUE (0x3ffL<<0) +#define BCE_HC_CMD_TICKS_2_INT (0x3ffL<<16) + +#define BCE_HC_PERIODIC_TICKS_2 0x00006a44 +#define BCE_HC_PERIODIC_TICKS_2_HC_PERIODIC_TICKS (0xffffL<<0) +#define BCE_HC_PERIODIC_TICKS_2_HC_INT_PERIODIC_TICKS (0xffffL<<16) + +#define BCE_HC_SB_CONFIG_3 0x00006a48 +#define BCE_HC_SB_CONFIG_3_RX_TMR_MODE (1L<<1) +#define BCE_HC_SB_CONFIG_3_TX_TMR_MODE (1L<<2) +#define BCE_HC_SB_CONFIG_3_COM_TMR_MODE (1L<<3) +#define BCE_HC_SB_CONFIG_3_CMD_TMR_MODE (1L<<4) +#define BCE_HC_SB_CONFIG_3_PER_MODE (1L<<16) +#define BCE_HC_SB_CONFIG_3_ONE_SHOT (1L<<17) +#define BCE_HC_SB_CONFIG_3_USE_INT_PARAM (1L<<18) +#define BCE_HC_SB_CONFIG_3_PER_COLLECT_LIMIT (0xfL<<20) + +#define BCE_HC_TX_QUICK_CONS_TRIP_3 0x00006a4c +#define BCE_HC_TX_QUICK_CONS_TRIP_3_VALUE (0xffL<<0) +#define BCE_HC_TX_QUICK_CONS_TRIP_3_INT (0xffL<<16) + +#define BCE_HC_COMP_PROD_TRIP_3 0x00006a50 +#define BCE_HC_COMP_PROD_TRIP_3_VALUE (0xffL<<0) +#define BCE_HC_COMP_PROD_TRIP_3_INT (0xffL<<16) + +#define BCE_HC_RX_QUICK_CONS_TRIP_3 0x00006a54 +#define BCE_HC_RX_QUICK_CONS_TRIP_3_VALUE (0xffL<<0) +#define BCE_HC_RX_QUICK_CONS_TRIP_3_INT (0xffL<<16) + +#define BCE_HC_RX_TICKS_3 0x00006a58 +#define BCE_HC_RX_TICKS_3_VALUE (0x3ffL<<0) +#define BCE_HC_RX_TICKS_3_INT (0x3ffL<<16) + +#define BCE_HC_TX_TICKS_3 0x00006a5c +#define BCE_HC_TX_TICKS_3_VALUE (0x3ffL<<0) +#define BCE_HC_TX_TICKS_3_INT (0x3ffL<<16) + +#define BCE_HC_COM_TICKS_3 0x00006a60 +#define BCE_HC_COM_TICKS_3_VALUE (0x3ffL<<0) +#define BCE_HC_COM_TICKS_3_INT (0x3ffL<<16) + +#define BCE_HC_CMD_TICKS_3 0x00006a64 +#define BCE_HC_CMD_TICKS_3_VALUE (0x3ffL<<0) +#define BCE_HC_CMD_TICKS_3_INT (0x3ffL<<16) + +#define BCE_HC_PERIODIC_TICKS_3 0x00006a68 +#define BCE_HC_PERIODIC_TICKS_3_HC_PERIODIC_TICKS (0xffffL<<0) +#define BCE_HC_PERIODIC_TICKS_3_HC_INT_PERIODIC_TICKS (0xffffL<<16) + +#define BCE_HC_SB_CONFIG_4 0x00006a6c +#define BCE_HC_SB_CONFIG_4_RX_TMR_MODE (1L<<1) +#define BCE_HC_SB_CONFIG_4_TX_TMR_MODE (1L<<2) +#define BCE_HC_SB_CONFIG_4_COM_TMR_MODE (1L<<3) +#define BCE_HC_SB_CONFIG_4_CMD_TMR_MODE (1L<<4) +#define BCE_HC_SB_CONFIG_4_PER_MODE (1L<<16) +#define BCE_HC_SB_CONFIG_4_ONE_SHOT (1L<<17) +#define BCE_HC_SB_CONFIG_4_USE_INT_PARAM (1L<<18) +#define BCE_HC_SB_CONFIG_4_PER_COLLECT_LIMIT (0xfL<<20) + +#define BCE_HC_TX_QUICK_CONS_TRIP_4 0x00006a70 +#define BCE_HC_TX_QUICK_CONS_TRIP_4_VALUE (0xffL<<0) +#define BCE_HC_TX_QUICK_CONS_TRIP_4_INT (0xffL<<16) + +#define BCE_HC_COMP_PROD_TRIP_4 0x00006a74 +#define BCE_HC_COMP_PROD_TRIP_4_VALUE (0xffL<<0) +#define BCE_HC_COMP_PROD_TRIP_4_INT (0xffL<<16) + +#define BCE_HC_RX_QUICK_CONS_TRIP_4 0x00006a78 +#define BCE_HC_RX_QUICK_CONS_TRIP_4_VALUE (0xffL<<0) +#define BCE_HC_RX_QUICK_CONS_TRIP_4_INT (0xffL<<16) + +#define BCE_HC_RX_TICKS_4 0x00006a7c +#define BCE_HC_RX_TICKS_4_VALUE (0x3ffL<<0) +#define BCE_HC_RX_TICKS_4_INT (0x3ffL<<16) + +#define BCE_HC_TX_TICKS_4 0x00006a80 +#define BCE_HC_TX_TICKS_4_VALUE (0x3ffL<<0) +#define BCE_HC_TX_TICKS_4_INT (0x3ffL<<16) + +#define BCE_HC_COM_TICKS_4 0x00006a84 +#define BCE_HC_COM_TICKS_4_VALUE (0x3ffL<<0) +#define BCE_HC_COM_TICKS_4_INT (0x3ffL<<16) + +#define BCE_HC_CMD_TICKS_4 0x00006a88 +#define BCE_HC_CMD_TICKS_4_VALUE (0x3ffL<<0) +#define BCE_HC_CMD_TICKS_4_INT (0x3ffL<<16) + +#define BCE_HC_PERIODIC_TICKS_4 0x00006a8c +#define BCE_HC_PERIODIC_TICKS_4_HC_PERIODIC_TICKS (0xffffL<<0) +#define BCE_HC_PERIODIC_TICKS_4_HC_INT_PERIODIC_TICKS (0xffffL<<16) + +#define BCE_HC_SB_CONFIG_5 0x00006a90 +#define BCE_HC_SB_CONFIG_5_RX_TMR_MODE (1L<<1) +#define BCE_HC_SB_CONFIG_5_TX_TMR_MODE (1L<<2) +#define BCE_HC_SB_CONFIG_5_COM_TMR_MODE (1L<<3) +#define BCE_HC_SB_CONFIG_5_CMD_TMR_MODE (1L<<4) +#define BCE_HC_SB_CONFIG_5_PER_MODE (1L<<16) +#define BCE_HC_SB_CONFIG_5_ONE_SHOT (1L<<17) +#define BCE_HC_SB_CONFIG_5_USE_INT_PARAM (1L<<18) +#define BCE_HC_SB_CONFIG_5_PER_COLLECT_LIMIT (0xfL<<20) + +#define BCE_HC_TX_QUICK_CONS_TRIP_5 0x00006a94 +#define BCE_HC_TX_QUICK_CONS_TRIP_5_VALUE (0xffL<<0) +#define BCE_HC_TX_QUICK_CONS_TRIP_5_INT (0xffL<<16) + +#define BCE_HC_COMP_PROD_TRIP_5 0x00006a98 +#define BCE_HC_COMP_PROD_TRIP_5_VALUE (0xffL<<0) +#define BCE_HC_COMP_PROD_TRIP_5_INT (0xffL<<16) + +#define BCE_HC_RX_QUICK_CONS_TRIP_5 0x00006a9c +#define BCE_HC_RX_QUICK_CONS_TRIP_5_VALUE (0xffL<<0) +#define BCE_HC_RX_QUICK_CONS_TRIP_5_INT (0xffL<<16) + +#define BCE_HC_RX_TICKS_5 0x00006aa0 +#define BCE_HC_RX_TICKS_5_VALUE (0x3ffL<<0) +#define BCE_HC_RX_TICKS_5_INT (0x3ffL<<16) + +#define BCE_HC_TX_TICKS_5 0x00006aa4 +#define BCE_HC_TX_TICKS_5_VALUE (0x3ffL<<0) +#define BCE_HC_TX_TICKS_5_INT (0x3ffL<<16) + +#define BCE_HC_COM_TICKS_5 0x00006aa8 +#define BCE_HC_COM_TICKS_5_VALUE (0x3ffL<<0) +#define BCE_HC_COM_TICKS_5_INT (0x3ffL<<16) + +#define BCE_HC_CMD_TICKS_5 0x00006aac +#define BCE_HC_CMD_TICKS_5_VALUE (0x3ffL<<0) +#define BCE_HC_CMD_TICKS_5_INT (0x3ffL<<16) + +#define BCE_HC_PERIODIC_TICKS_5 0x00006ab0 +#define BCE_HC_PERIODIC_TICKS_5_HC_PERIODIC_TICKS (0xffffL<<0) +#define BCE_HC_PERIODIC_TICKS_5_HC_INT_PERIODIC_TICKS (0xffffL<<16) + +#define BCE_HC_SB_CONFIG_6 0x00006ab4 +#define BCE_HC_SB_CONFIG_6_RX_TMR_MODE (1L<<1) +#define BCE_HC_SB_CONFIG_6_TX_TMR_MODE (1L<<2) +#define BCE_HC_SB_CONFIG_6_COM_TMR_MODE (1L<<3) +#define BCE_HC_SB_CONFIG_6_CMD_TMR_MODE (1L<<4) +#define BCE_HC_SB_CONFIG_6_PER_MODE (1L<<16) +#define BCE_HC_SB_CONFIG_6_ONE_SHOT (1L<<17) +#define BCE_HC_SB_CONFIG_6_USE_INT_PARAM (1L<<18) +#define BCE_HC_SB_CONFIG_6_PER_COLLECT_LIMIT (0xfL<<20) + +#define BCE_HC_TX_QUICK_CONS_TRIP_6 0x00006ab8 +#define BCE_HC_TX_QUICK_CONS_TRIP_6_VALUE (0xffL<<0) +#define BCE_HC_TX_QUICK_CONS_TRIP_6_INT (0xffL<<16) + +#define BCE_HC_COMP_PROD_TRIP_6 0x00006abc +#define BCE_HC_COMP_PROD_TRIP_6_VALUE (0xffL<<0) +#define BCE_HC_COMP_PROD_TRIP_6_INT (0xffL<<16) + +#define BCE_HC_RX_QUICK_CONS_TRIP_6 0x00006ac0 +#define BCE_HC_RX_QUICK_CONS_TRIP_6_VALUE (0xffL<<0) +#define BCE_HC_RX_QUICK_CONS_TRIP_6_INT (0xffL<<16) + +#define BCE_HC_RX_TICKS_6 0x00006ac4 +#define BCE_HC_RX_TICKS_6_VALUE (0x3ffL<<0) +#define BCE_HC_RX_TICKS_6_INT (0x3ffL<<16) + +#define BCE_HC_TX_TICKS_6 0x00006ac8 +#define BCE_HC_TX_TICKS_6_VALUE (0x3ffL<<0) +#define BCE_HC_TX_TICKS_6_INT (0x3ffL<<16) + +#define BCE_HC_COM_TICKS_6 0x00006acc +#define BCE_HC_COM_TICKS_6_VALUE (0x3ffL<<0) +#define BCE_HC_COM_TICKS_6_INT (0x3ffL<<16) + +#define BCE_HC_CMD_TICKS_6 0x00006ad0 +#define BCE_HC_CMD_TICKS_6_VALUE (0x3ffL<<0) +#define BCE_HC_CMD_TICKS_6_INT (0x3ffL<<16) + +#define BCE_HC_PERIODIC_TICKS_6 0x00006ad4 +#define BCE_HC_PERIODIC_TICKS_6_HC_PERIODIC_TICKS (0xffffL<<0) +#define BCE_HC_PERIODIC_TICKS_6_HC_INT_PERIODIC_TICKS (0xffffL<<16) + +#define BCE_HC_SB_CONFIG_7 0x00006ad8 +#define BCE_HC_SB_CONFIG_7_RX_TMR_MODE (1L<<1) +#define BCE_HC_SB_CONFIG_7_TX_TMR_MODE (1L<<2) +#define BCE_HC_SB_CONFIG_7_COM_TMR_MODE (1L<<3) +#define BCE_HC_SB_CONFIG_7_CMD_TMR_MODE (1L<<4) +#define BCE_HC_SB_CONFIG_7_PER_MODE (1L<<16) +#define BCE_HC_SB_CONFIG_7_ONE_SHOT (1L<<17) +#define BCE_HC_SB_CONFIG_7_USE_INT_PARAM (1L<<18) +#define BCE_HC_SB_CONFIG_7_PER_COLLECT_LIMIT (0xfL<<20) + +#define BCE_HC_TX_QUICK_CONS_TRIP_7 0x00006adc +#define BCE_HC_TX_QUICK_CONS_TRIP_7_VALUE (0xffL<<0) +#define BCE_HC_TX_QUICK_CONS_TRIP_7_INT (0xffL<<16) + +#define BCE_HC_COMP_PROD_TRIP_7 0x00006ae0 +#define BCE_HC_COMP_PROD_TRIP_7_VALUE (0xffL<<0) +#define BCE_HC_COMP_PROD_TRIP_7_INT (0xffL<<16) + +#define BCE_HC_RX_QUICK_CONS_TRIP_7 0x00006ae4 +#define BCE_HC_RX_QUICK_CONS_TRIP_7_VALUE (0xffL<<0) +#define BCE_HC_RX_QUICK_CONS_TRIP_7_INT (0xffL<<16) + +#define BCE_HC_RX_TICKS_7 0x00006ae8 +#define BCE_HC_RX_TICKS_7_VALUE (0x3ffL<<0) +#define BCE_HC_RX_TICKS_7_INT (0x3ffL<<16) + +#define BCE_HC_TX_TICKS_7 0x00006aec +#define BCE_HC_TX_TICKS_7_VALUE (0x3ffL<<0) +#define BCE_HC_TX_TICKS_7_INT (0x3ffL<<16) + +#define BCE_HC_COM_TICKS_7 0x00006af0 +#define BCE_HC_COM_TICKS_7_VALUE (0x3ffL<<0) +#define BCE_HC_COM_TICKS_7_INT (0x3ffL<<16) + +#define BCE_HC_CMD_TICKS_7 0x00006af4 +#define BCE_HC_CMD_TICKS_7_VALUE (0x3ffL<<0) +#define BCE_HC_CMD_TICKS_7_INT (0x3ffL<<16) + +#define BCE_HC_PERIODIC_TICKS_7 0x00006af8 +#define BCE_HC_PERIODIC_TICKS_7_HC_PERIODIC_TICKS (0xffffL<<0) +#define BCE_HC_PERIODIC_TICKS_7_HC_INT_PERIODIC_TICKS (0xffffL<<16) + +#define BCE_HC_SB_CONFIG_8 0x00006afc +#define BCE_HC_SB_CONFIG_8_RX_TMR_MODE (1L<<1) +#define BCE_HC_SB_CONFIG_8_TX_TMR_MODE (1L<<2) +#define BCE_HC_SB_CONFIG_8_COM_TMR_MODE (1L<<3) +#define BCE_HC_SB_CONFIG_8_CMD_TMR_MODE (1L<<4) +#define BCE_HC_SB_CONFIG_8_PER_MODE (1L<<16) +#define BCE_HC_SB_CONFIG_8_ONE_SHOT (1L<<17) +#define BCE_HC_SB_CONFIG_8_USE_INT_PARAM (1L<<18) +#define BCE_HC_SB_CONFIG_8_PER_COLLECT_LIMIT (0xfL<<20) + +#define BCE_HC_TX_QUICK_CONS_TRIP_8 0x00006b00 +#define BCE_HC_TX_QUICK_CONS_TRIP_8_VALUE (0xffL<<0) +#define BCE_HC_TX_QUICK_CONS_TRIP_8_INT (0xffL<<16) + +#define BCE_HC_COMP_PROD_TRIP_8 0x00006b04 +#define BCE_HC_COMP_PROD_TRIP_8_VALUE (0xffL<<0) +#define BCE_HC_COMP_PROD_TRIP_8_INT (0xffL<<16) + +#define BCE_HC_RX_QUICK_CONS_TRIP_8 0x00006b08 +#define BCE_HC_RX_QUICK_CONS_TRIP_8_VALUE (0xffL<<0) +#define BCE_HC_RX_QUICK_CONS_TRIP_8_INT (0xffL<<16) + +#define BCE_HC_RX_TICKS_8 0x00006b0c +#define BCE_HC_RX_TICKS_8_VALUE (0x3ffL<<0) +#define BCE_HC_RX_TICKS_8_INT (0x3ffL<<16) + +#define BCE_HC_TX_TICKS_8 0x00006b10 +#define BCE_HC_TX_TICKS_8_VALUE (0x3ffL<<0) +#define BCE_HC_TX_TICKS_8_INT (0x3ffL<<16) + +#define BCE_HC_COM_TICKS_8 0x00006b14 +#define BCE_HC_COM_TICKS_8_VALUE (0x3ffL<<0) +#define BCE_HC_COM_TICKS_8_INT (0x3ffL<<16) + +#define BCE_HC_CMD_TICKS_8 0x00006b18 +#define BCE_HC_CMD_TICKS_8_VALUE (0x3ffL<<0) +#define BCE_HC_CMD_TICKS_8_INT (0x3ffL<<16) + +#define BCE_HC_PERIODIC_TICKS_8 0x00006b1c +#define BCE_HC_PERIODIC_TICKS_8_HC_PERIODIC_TICKS (0xffffL<<0) +#define BCE_HC_PERIODIC_TICKS_8_HC_INT_PERIODIC_TICKS (0xffffL<<16) + + +/* + * txp_reg definition + * offset: 0x40000 + */ +#define BCE_TXP_CPU_MODE 0x00045000 +#define BCE_TXP_CPU_MODE_LOCAL_RST (1L<<0) +#define BCE_TXP_CPU_MODE_STEP_ENA (1L<<1) +#define BCE_TXP_CPU_MODE_PAGE_0_DATA_ENA (1L<<2) +#define BCE_TXP_CPU_MODE_PAGE_0_INST_ENA (1L<<3) +#define BCE_TXP_CPU_MODE_MSG_BIT1 (1L<<6) +#define BCE_TXP_CPU_MODE_INTERRUPT_ENA (1L<<7) +#define BCE_TXP_CPU_MODE_SOFT_HALT (1L<<10) +#define BCE_TXP_CPU_MODE_BAD_DATA_HALT_ENA (1L<<11) +#define BCE_TXP_CPU_MODE_BAD_INST_HALT_ENA (1L<<12) +#define BCE_TXP_CPU_MODE_FIO_ABORT_HALT_ENA (1L<<13) +#define BCE_TXP_CPU_MODE_SPAD_UNDERFLOW_HALT_ENA (1L<<15) + +#define BCE_TXP_CPU_STATE 0x00045004 +#define BCE_TXP_CPU_STATE_BREAKPOINT (1L<<0) +#define BCE_TXP_CPU_STATE_BAD_INST_HALTED (1L<<2) +#define BCE_TXP_CPU_STATE_PAGE_0_DATA_HALTED (1L<<3) +#define BCE_TXP_CPU_STATE_PAGE_0_INST_HALTED (1L<<4) +#define BCE_TXP_CPU_STATE_BAD_DATA_ADDR_HALTED (1L<<5) +#define BCE_TXP_CPU_STATE_BAD_pc_HALTED (1L<<6) +#define BCE_TXP_CPU_STATE_ALIGN_HALTED (1L<<7) +#define BCE_TXP_CPU_STATE_FIO_ABORT_HALTED (1L<<8) +#define BCE_TXP_CPU_STATE_SOFT_HALTED (1L<<10) +#define BCE_TXP_CPU_STATE_SPAD_UNDERFLOW (1L<<11) +#define BCE_TXP_CPU_STATE_INTERRRUPT (1L<<12) +#define BCE_TXP_CPU_STATE_DATA_ACCESS_STALL (1L<<14) +#define BCE_TXP_CPU_STATE_INST_FETCH_STALL (1L<<15) +#define BCE_TXP_CPU_STATE_BLOCKED_READ (1L<<31) + +#define BCE_TXP_CPU_EVENT_MASK 0x00045008 +#define BCE_TXP_CPU_EVENT_MASK_BREAKPOINT_MASK (1L<<0) +#define BCE_TXP_CPU_EVENT_MASK_BAD_INST_HALTED_MASK (1L<<2) +#define BCE_TXP_CPU_EVENT_MASK_PAGE_0_DATA_HALTED_MASK (1L<<3) +#define BCE_TXP_CPU_EVENT_MASK_PAGE_0_INST_HALTED_MASK (1L<<4) +#define BCE_TXP_CPU_EVENT_MASK_BAD_DATA_ADDR_HALTED_MASK (1L<<5) +#define BCE_TXP_CPU_EVENT_MASK_BAD_PC_HALTED_MASK (1L<<6) +#define BCE_TXP_CPU_EVENT_MASK_ALIGN_HALTED_MASK (1L<<7) +#define BCE_TXP_CPU_EVENT_MASK_FIO_ABORT_MASK (1L<<8) +#define BCE_TXP_CPU_EVENT_MASK_SOFT_HALTED_MASK (1L<<10) +#define BCE_TXP_CPU_EVENT_MASK_SPAD_UNDERFLOW_MASK (1L<<11) +#define BCE_TXP_CPU_EVENT_MASK_INTERRUPT_MASK (1L<<12) + +#define BCE_TXP_CPU_PROGRAM_COUNTER 0x0004501c +#define BCE_TXP_CPU_INSTRUCTION 0x00045020 +#define BCE_TXP_CPU_DATA_ACCESS 0x00045024 +#define BCE_TXP_CPU_INTERRUPT_ENABLE 0x00045028 +#define BCE_TXP_CPU_INTERRUPT_VECTOR 0x0004502c +#define BCE_TXP_CPU_INTERRUPT_SAVED_PC 0x00045030 +#define BCE_TXP_CPU_HW_BREAKPOINT 0x00045034 +#define BCE_TXP_CPU_HW_BREAKPOINT_DISABLE (1L<<0) +#define BCE_TXP_CPU_HW_BREAKPOINT_ADDRESS (0x3fffffffL<<2) + +#define BCE_TXP_CPU_REG_FILE 0x00045200 +#define BCE_TXP_FTQ_DATA 0x000453c0 +#define BCE_TXP_FTQ_CMD 0x000453f8 +#define BCE_TXP_FTQ_CMD_OFFSET (0x3ffL<<0) +#define BCE_TXP_FTQ_CMD_WR_TOP (1L<<10) +#define BCE_TXP_FTQ_CMD_WR_TOP_0 (0L<<10) +#define BCE_TXP_FTQ_CMD_WR_TOP_1 (1L<<10) +#define BCE_TXP_FTQ_CMD_SFT_RESET (1L<<25) +#define BCE_TXP_FTQ_CMD_RD_DATA (1L<<26) +#define BCE_TXP_FTQ_CMD_ADD_INTERVEN (1L<<27) +#define BCE_TXP_FTQ_CMD_ADD_DATA (1L<<28) +#define BCE_TXP_FTQ_CMD_INTERVENE_CLR (1L<<29) +#define BCE_TXP_FTQ_CMD_POP (1L<<30) +#define BCE_TXP_FTQ_CMD_BUSY (1L<<31) + +#define BCE_TXP_FTQ_CTL 0x000453fc +#define BCE_TXP_FTQ_CTL_INTERVENE (1L<<0) +#define BCE_TXP_FTQ_CTL_OVERFLOW (1L<<1) +#define BCE_TXP_FTQ_CTL_FORCE_INTERVENE (1L<<2) +#define BCE_TXP_FTQ_CTL_MAX_DEPTH (0x3ffL<<12) +#define BCE_TXP_FTQ_CTL_CUR_DEPTH (0x3ffL<<22) + +#define BCE_TXP_SCRATCH 0x00060000 + + +/* + * tpat_reg definition + * offset: 0x80000 + */ +#define BCE_TPAT_CPU_MODE 0x00085000 +#define BCE_TPAT_CPU_MODE_LOCAL_RST (1L<<0) +#define BCE_TPAT_CPU_MODE_STEP_ENA (1L<<1) +#define BCE_TPAT_CPU_MODE_PAGE_0_DATA_ENA (1L<<2) +#define BCE_TPAT_CPU_MODE_PAGE_0_INST_ENA (1L<<3) +#define BCE_TPAT_CPU_MODE_MSG_BIT1 (1L<<6) +#define BCE_TPAT_CPU_MODE_INTERRUPT_ENA (1L<<7) +#define BCE_TPAT_CPU_MODE_SOFT_HALT (1L<<10) +#define BCE_TPAT_CPU_MODE_BAD_DATA_HALT_ENA (1L<<11) +#define BCE_TPAT_CPU_MODE_BAD_INST_HALT_ENA (1L<<12) +#define BCE_TPAT_CPU_MODE_FIO_ABORT_HALT_ENA (1L<<13) +#define BCE_TPAT_CPU_MODE_SPAD_UNDERFLOW_HALT_ENA (1L<<15) + +#define BCE_TPAT_CPU_STATE 0x00085004 +#define BCE_TPAT_CPU_STATE_BREAKPOINT (1L<<0) +#define BCE_TPAT_CPU_STATE_BAD_INST_HALTED (1L<<2) +#define BCE_TPAT_CPU_STATE_PAGE_0_DATA_HALTED (1L<<3) +#define BCE_TPAT_CPU_STATE_PAGE_0_INST_HALTED (1L<<4) +#define BCE_TPAT_CPU_STATE_BAD_DATA_ADDR_HALTED (1L<<5) +#define BCE_TPAT_CPU_STATE_BAD_pc_HALTED (1L<<6) +#define BCE_TPAT_CPU_STATE_ALIGN_HALTED (1L<<7) +#define BCE_TPAT_CPU_STATE_FIO_ABORT_HALTED (1L<<8) +#define BCE_TPAT_CPU_STATE_SOFT_HALTED (1L<<10) +#define BCE_TPAT_CPU_STATE_SPAD_UNDERFLOW (1L<<11) +#define BCE_TPAT_CPU_STATE_INTERRRUPT (1L<<12) +#define BCE_TPAT_CPU_STATE_DATA_ACCESS_STALL (1L<<14) +#define BCE_TPAT_CPU_STATE_INST_FETCH_STALL (1L<<15) +#define BCE_TPAT_CPU_STATE_BLOCKED_READ (1L<<31) + +#define BCE_TPAT_CPU_EVENT_MASK 0x00085008 +#define BCE_TPAT_CPU_EVENT_MASK_BREAKPOINT_MASK (1L<<0) +#define BCE_TPAT_CPU_EVENT_MASK_BAD_INST_HALTED_MASK (1L<<2) +#define BCE_TPAT_CPU_EVENT_MASK_PAGE_0_DATA_HALTED_MASK (1L<<3) +#define BCE_TPAT_CPU_EVENT_MASK_PAGE_0_INST_HALTED_MASK (1L<<4) +#define BCE_TPAT_CPU_EVENT_MASK_BAD_DATA_ADDR_HALTED_MASK (1L<<5) +#define BCE_TPAT_CPU_EVENT_MASK_BAD_PC_HALTED_MASK (1L<<6) +#define BCE_TPAT_CPU_EVENT_MASK_ALIGN_HALTED_MASK (1L<<7) +#define BCE_TPAT_CPU_EVENT_MASK_FIO_ABORT_MASK (1L<<8) +#define BCE_TPAT_CPU_EVENT_MASK_SOFT_HALTED_MASK (1L<<10) +#define BCE_TPAT_CPU_EVENT_MASK_SPAD_UNDERFLOW_MASK (1L<<11) +#define BCE_TPAT_CPU_EVENT_MASK_INTERRUPT_MASK (1L<<12) + +#define BCE_TPAT_CPU_PROGRAM_COUNTER 0x0008501c +#define BCE_TPAT_CPU_INSTRUCTION 0x00085020 +#define BCE_TPAT_CPU_DATA_ACCESS 0x00085024 +#define BCE_TPAT_CPU_INTERRUPT_ENABLE 0x00085028 +#define BCE_TPAT_CPU_INTERRUPT_VECTOR 0x0008502c +#define BCE_TPAT_CPU_INTERRUPT_SAVED_PC 0x00085030 +#define BCE_TPAT_CPU_HW_BREAKPOINT 0x00085034 +#define BCE_TPAT_CPU_HW_BREAKPOINT_DISABLE (1L<<0) +#define BCE_TPAT_CPU_HW_BREAKPOINT_ADDRESS (0x3fffffffL<<2) +#define BCE_TPAT_CPU_REG_FILE 0x00085200 +#define BCE_TPAT_FTQ_DATA 0x000853c0 +#define BCE_TPAT_FTQ_CMD 0x000853f8 +#define BCE_TPAT_FTQ_CMD_OFFSET (0x3ffL<<0) +#define BCE_TPAT_FTQ_CMD_WR_TOP (1L<<10) +#define BCE_TPAT_FTQ_CMD_WR_TOP_0 (0L<<10) +#define BCE_TPAT_FTQ_CMD_WR_TOP_1 (1L<<10) +#define BCE_TPAT_FTQ_CMD_SFT_RESET (1L<<25) +#define BCE_TPAT_FTQ_CMD_RD_DATA (1L<<26) +#define BCE_TPAT_FTQ_CMD_ADD_INTERVEN (1L<<27) +#define BCE_TPAT_FTQ_CMD_ADD_DATA (1L<<28) +#define BCE_TPAT_FTQ_CMD_INTERVENE_CLR (1L<<29) +#define BCE_TPAT_FTQ_CMD_POP (1L<<30) +#define BCE_TPAT_FTQ_CMD_BUSY (1L<<31) + +#define BCE_TPAT_FTQ_CTL 0x000853fc +#define BCE_TPAT_FTQ_CTL_INTERVENE (1L<<0) +#define BCE_TPAT_FTQ_CTL_OVERFLOW (1L<<1) +#define BCE_TPAT_FTQ_CTL_FORCE_INTERVENE (1L<<2) +#define BCE_TPAT_FTQ_CTL_MAX_DEPTH (0x3ffL<<12) +#define BCE_TPAT_FTQ_CTL_CUR_DEPTH (0x3ffL<<22) + +#define BCE_TPAT_SCRATCH 0x000a0000 + + +/* + * rxp_reg definition + * offset: 0xc0000 + */ +#define BCE_RXP_CPU_MODE 0x000c5000 +#define BCE_RXP_CPU_MODE_LOCAL_RST (1L<<0) +#define BCE_RXP_CPU_MODE_STEP_ENA (1L<<1) +#define BCE_RXP_CPU_MODE_PAGE_0_DATA_ENA (1L<<2) +#define BCE_RXP_CPU_MODE_PAGE_0_INST_ENA (1L<<3) +#define BCE_RXP_CPU_MODE_MSG_BIT1 (1L<<6) +#define BCE_RXP_CPU_MODE_INTERRUPT_ENA (1L<<7) +#define BCE_RXP_CPU_MODE_SOFT_HALT (1L<<10) +#define BCE_RXP_CPU_MODE_BAD_DATA_HALT_ENA (1L<<11) +#define BCE_RXP_CPU_MODE_BAD_INST_HALT_ENA (1L<<12) +#define BCE_RXP_CPU_MODE_FIO_ABORT_HALT_ENA (1L<<13) +#define BCE_RXP_CPU_MODE_SPAD_UNDERFLOW_HALT_ENA (1L<<15) + +#define BCE_RXP_CPU_STATE 0x000c5004 +#define BCE_RXP_CPU_STATE_BREAKPOINT (1L<<0) +#define BCE_RXP_CPU_STATE_BAD_INST_HALTED (1L<<2) +#define BCE_RXP_CPU_STATE_PAGE_0_DATA_HALTED (1L<<3) +#define BCE_RXP_CPU_STATE_PAGE_0_INST_HALTED (1L<<4) +#define BCE_RXP_CPU_STATE_BAD_DATA_ADDR_HALTED (1L<<5) +#define BCE_RXP_CPU_STATE_BAD_pc_HALTED (1L<<6) +#define BCE_RXP_CPU_STATE_ALIGN_HALTED (1L<<7) +#define BCE_RXP_CPU_STATE_FIO_ABORT_HALTED (1L<<8) +#define BCE_RXP_CPU_STATE_SOFT_HALTED (1L<<10) +#define BCE_RXP_CPU_STATE_SPAD_UNDERFLOW (1L<<11) +#define BCE_RXP_CPU_STATE_INTERRRUPT (1L<<12) +#define BCE_RXP_CPU_STATE_DATA_ACCESS_STALL (1L<<14) +#define BCE_RXP_CPU_STATE_INST_FETCH_STALL (1L<<15) +#define BCE_RXP_CPU_STATE_BLOCKED_READ (1L<<31) + +#define BCE_RXP_CPU_EVENT_MASK 0x000c5008 +#define BCE_RXP_CPU_EVENT_MASK_BREAKPOINT_MASK (1L<<0) +#define BCE_RXP_CPU_EVENT_MASK_BAD_INST_HALTED_MASK (1L<<2) +#define BCE_RXP_CPU_EVENT_MASK_PAGE_0_DATA_HALTED_MASK (1L<<3) +#define BCE_RXP_CPU_EVENT_MASK_PAGE_0_INST_HALTED_MASK (1L<<4) +#define BCE_RXP_CPU_EVENT_MASK_BAD_DATA_ADDR_HALTED_MASK (1L<<5) +#define BCE_RXP_CPU_EVENT_MASK_BAD_PC_HALTED_MASK (1L<<6) +#define BCE_RXP_CPU_EVENT_MASK_ALIGN_HALTED_MASK (1L<<7) +#define BCE_RXP_CPU_EVENT_MASK_FIO_ABORT_MASK (1L<<8) +#define BCE_RXP_CPU_EVENT_MASK_SOFT_HALTED_MASK (1L<<10) +#define BCE_RXP_CPU_EVENT_MASK_SPAD_UNDERFLOW_MASK (1L<<11) +#define BCE_RXP_CPU_EVENT_MASK_INTERRUPT_MASK (1L<<12) + +#define BCE_RXP_CPU_PROGRAM_COUNTER 0x000c501c +#define BCE_RXP_CPU_INSTRUCTION 0x000c5020 +#define BCE_RXP_CPU_DATA_ACCESS 0x000c5024 +#define BCE_RXP_CPU_INTERRUPT_ENABLE 0x000c5028 +#define BCE_RXP_CPU_INTERRUPT_VECTOR 0x000c502c +#define BCE_RXP_CPU_INTERRUPT_SAVED_PC 0x000c5030 +#define BCE_RXP_CPU_HW_BREAKPOINT 0x000c5034 +#define BCE_RXP_CPU_HW_BREAKPOINT_DISABLE (1L<<0) +#define BCE_RXP_CPU_HW_BREAKPOINT_ADDRESS (0x3fffffffL<<2) + +#define BCE_RXP_CPU_REG_FILE 0x000c5200 +#define BCE_RXP_CFTQ_DATA 0x000c5380 +#define BCE_RXP_CFTQ_CMD 0x000c53b8 +#define BCE_RXP_CFTQ_CMD_OFFSET (0x3ffL<<0) +#define BCE_RXP_CFTQ_CMD_WR_TOP (1L<<10) +#define BCE_RXP_CFTQ_CMD_WR_TOP_0 (0L<<10) +#define BCE_RXP_CFTQ_CMD_WR_TOP_1 (1L<<10) +#define BCE_RXP_CFTQ_CMD_SFT_RESET (1L<<25) +#define BCE_RXP_CFTQ_CMD_RD_DATA (1L<<26) +#define BCE_RXP_CFTQ_CMD_ADD_INTERVEN (1L<<27) +#define BCE_RXP_CFTQ_CMD_ADD_DATA (1L<<28) +#define BCE_RXP_CFTQ_CMD_INTERVENE_CLR (1L<<29) +#define BCE_RXP_CFTQ_CMD_POP (1L<<30) +#define BCE_RXP_CFTQ_CMD_BUSY (1L<<31) + +#define BCE_RXP_CFTQ_CTL 0x000c53bc +#define BCE_RXP_CFTQ_CTL_INTERVENE (1L<<0) +#define BCE_RXP_CFTQ_CTL_OVERFLOW (1L<<1) +#define BCE_RXP_CFTQ_CTL_FORCE_INTERVENE (1L<<2) +#define BCE_RXP_CFTQ_CTL_MAX_DEPTH (0x3ffL<<12) +#define BCE_RXP_CFTQ_CTL_CUR_DEPTH (0x3ffL<<22) + +#define BCE_RXP_FTQ_DATA 0x000c53c0 +#define BCE_RXP_FTQ_CMD 0x000c53f8 +#define BCE_RXP_FTQ_CMD_OFFSET (0x3ffL<<0) +#define BCE_RXP_FTQ_CMD_WR_TOP (1L<<10) +#define BCE_RXP_FTQ_CMD_WR_TOP_0 (0L<<10) +#define BCE_RXP_FTQ_CMD_WR_TOP_1 (1L<<10) +#define BCE_RXP_FTQ_CMD_SFT_RESET (1L<<25) +#define BCE_RXP_FTQ_CMD_RD_DATA (1L<<26) +#define BCE_RXP_FTQ_CMD_ADD_INTERVEN (1L<<27) +#define BCE_RXP_FTQ_CMD_ADD_DATA (1L<<28) +#define BCE_RXP_FTQ_CMD_INTERVENE_CLR (1L<<29) +#define BCE_RXP_FTQ_CMD_POP (1L<<30) +#define BCE_RXP_FTQ_CMD_BUSY (1L<<31) + +#define BCE_RXP_FTQ_CTL 0x000c53fc +#define BCE_RXP_FTQ_CTL_INTERVENE (1L<<0) +#define BCE_RXP_FTQ_CTL_OVERFLOW (1L<<1) +#define BCE_RXP_FTQ_CTL_FORCE_INTERVENE (1L<<2) +#define BCE_RXP_FTQ_CTL_MAX_DEPTH (0x3ffL<<12) +#define BCE_RXP_FTQ_CTL_CUR_DEPTH (0x3ffL<<22) + +#define BCE_RXP_SCRATCH 0x000e0000 + + +/* + * com_reg definition + * offset: 0x100000 + */ +#define BCE_COM_CPU_MODE 0x00105000 +#define BCE_COM_CPU_MODE_LOCAL_RST (1L<<0) +#define BCE_COM_CPU_MODE_STEP_ENA (1L<<1) +#define BCE_COM_CPU_MODE_PAGE_0_DATA_ENA (1L<<2) +#define BCE_COM_CPU_MODE_PAGE_0_INST_ENA (1L<<3) +#define BCE_COM_CPU_MODE_MSG_BIT1 (1L<<6) +#define BCE_COM_CPU_MODE_INTERRUPT_ENA (1L<<7) +#define BCE_COM_CPU_MODE_SOFT_HALT (1L<<10) +#define BCE_COM_CPU_MODE_BAD_DATA_HALT_ENA (1L<<11) +#define BCE_COM_CPU_MODE_BAD_INST_HALT_ENA (1L<<12) +#define BCE_COM_CPU_MODE_FIO_ABORT_HALT_ENA (1L<<13) +#define BCE_COM_CPU_MODE_SPAD_UNDERFLOW_HALT_ENA (1L<<15) + +#define BCE_COM_CPU_STATE 0x00105004 +#define BCE_COM_CPU_STATE_BREAKPOINT (1L<<0) +#define BCE_COM_CPU_STATE_BAD_INST_HALTED (1L<<2) +#define BCE_COM_CPU_STATE_PAGE_0_DATA_HALTED (1L<<3) +#define BCE_COM_CPU_STATE_PAGE_0_INST_HALTED (1L<<4) +#define BCE_COM_CPU_STATE_BAD_DATA_ADDR_HALTED (1L<<5) +#define BCE_COM_CPU_STATE_BAD_pc_HALTED (1L<<6) +#define BCE_COM_CPU_STATE_ALIGN_HALTED (1L<<7) +#define BCE_COM_CPU_STATE_FIO_ABORT_HALTED (1L<<8) +#define BCE_COM_CPU_STATE_SOFT_HALTED (1L<<10) +#define BCE_COM_CPU_STATE_SPAD_UNDERFLOW (1L<<11) +#define BCE_COM_CPU_STATE_INTERRRUPT (1L<<12) +#define BCE_COM_CPU_STATE_DATA_ACCESS_STALL (1L<<14) +#define BCE_COM_CPU_STATE_INST_FETCH_STALL (1L<<15) +#define BCE_COM_CPU_STATE_BLOCKED_READ (1L<<31) + +#define BCE_COM_CPU_EVENT_MASK 0x00105008 +#define BCE_COM_CPU_EVENT_MASK_BREAKPOINT_MASK (1L<<0) +#define BCE_COM_CPU_EVENT_MASK_BAD_INST_HALTED_MASK (1L<<2) +#define BCE_COM_CPU_EVENT_MASK_PAGE_0_DATA_HALTED_MASK (1L<<3) +#define BCE_COM_CPU_EVENT_MASK_PAGE_0_INST_HALTED_MASK (1L<<4) +#define BCE_COM_CPU_EVENT_MASK_BAD_DATA_ADDR_HALTED_MASK (1L<<5) +#define BCE_COM_CPU_EVENT_MASK_BAD_PC_HALTED_MASK (1L<<6) +#define BCE_COM_CPU_EVENT_MASK_ALIGN_HALTED_MASK (1L<<7) +#define BCE_COM_CPU_EVENT_MASK_FIO_ABORT_MASK (1L<<8) +#define BCE_COM_CPU_EVENT_MASK_SOFT_HALTED_MASK (1L<<10) +#define BCE_COM_CPU_EVENT_MASK_SPAD_UNDERFLOW_MASK (1L<<11) +#define BCE_COM_CPU_EVENT_MASK_INTERRUPT_MASK (1L<<12) + +#define BCE_COM_CPU_PROGRAM_COUNTER 0x0010501c +#define BCE_COM_CPU_INSTRUCTION 0x00105020 +#define BCE_COM_CPU_DATA_ACCESS 0x00105024 +#define BCE_COM_CPU_INTERRUPT_ENABLE 0x00105028 +#define BCE_COM_CPU_INTERRUPT_VECTOR 0x0010502c +#define BCE_COM_CPU_INTERRUPT_SAVED_PC 0x00105030 +#define BCE_COM_CPU_HW_BREAKPOINT 0x00105034 +#define BCE_COM_CPU_HW_BREAKPOINT_DISABLE (1L<<0) +#define BCE_COM_CPU_HW_BREAKPOINT_ADDRESS (0x3fffffffL<<2) + +#define BCE_COM_CPU_REG_FILE 0x00105200 +#define BCE_COM_COMXQ_FTQ_DATA 0x00105340 +#define BCE_COM_COMXQ_FTQ_CMD 0x00105378 +#define BCE_COM_COMXQ_FTQ_CMD_OFFSET (0x3ffL<<0) +#define BCE_COM_COMXQ_FTQ_CMD_WR_TOP (1L<<10) +#define BCE_COM_COMXQ_FTQ_CMD_WR_TOP_0 (0L<<10) +#define BCE_COM_COMXQ_FTQ_CMD_WR_TOP_1 (1L<<10) +#define BCE_COM_COMXQ_FTQ_CMD_SFT_RESET (1L<<25) +#define BCE_COM_COMXQ_FTQ_CMD_RD_DATA (1L<<26) +#define BCE_COM_COMXQ_FTQ_CMD_ADD_INTERVEN (1L<<27) +#define BCE_COM_COMXQ_FTQ_CMD_ADD_DATA (1L<<28) +#define BCE_COM_COMXQ_FTQ_CMD_INTERVENE_CLR (1L<<29) +#define BCE_COM_COMXQ_FTQ_CMD_POP (1L<<30) +#define BCE_COM_COMXQ_FTQ_CMD_BUSY (1L<<31) + +#define BCE_COM_COMXQ_FTQ_CTL 0x0010537c +#define BCE_COM_COMXQ_FTQ_CTL_INTERVENE (1L<<0) +#define BCE_COM_COMXQ_FTQ_CTL_OVERFLOW (1L<<1) +#define BCE_COM_COMXQ_FTQ_CTL_FORCE_INTERVENE (1L<<2) +#define BCE_COM_COMXQ_FTQ_CTL_MAX_DEPTH (0x3ffL<<12) +#define BCE_COM_COMXQ_FTQ_CTL_CUR_DEPTH (0x3ffL<<22) + +#define BCE_COM_COMTQ_FTQ_DATA 0x00105380 +#define BCE_COM_COMTQ_FTQ_CMD 0x001053b8 +#define BCE_COM_COMTQ_FTQ_CMD_OFFSET (0x3ffL<<0) +#define BCE_COM_COMTQ_FTQ_CMD_WR_TOP (1L<<10) +#define BCE_COM_COMTQ_FTQ_CMD_WR_TOP_0 (0L<<10) +#define BCE_COM_COMTQ_FTQ_CMD_WR_TOP_1 (1L<<10) +#define BCE_COM_COMTQ_FTQ_CMD_SFT_RESET (1L<<25) +#define BCE_COM_COMTQ_FTQ_CMD_RD_DATA (1L<<26) +#define BCE_COM_COMTQ_FTQ_CMD_ADD_INTERVEN (1L<<27) +#define BCE_COM_COMTQ_FTQ_CMD_ADD_DATA (1L<<28) +#define BCE_COM_COMTQ_FTQ_CMD_INTERVENE_CLR (1L<<29) +#define BCE_COM_COMTQ_FTQ_CMD_POP (1L<<30) +#define BCE_COM_COMTQ_FTQ_CMD_BUSY (1L<<31) + +#define BCE_COM_COMTQ_FTQ_CTL 0x001053bc +#define BCE_COM_COMTQ_FTQ_CTL_INTERVENE (1L<<0) +#define BCE_COM_COMTQ_FTQ_CTL_OVERFLOW (1L<<1) +#define BCE_COM_COMTQ_FTQ_CTL_FORCE_INTERVENE (1L<<2) +#define BCE_COM_COMTQ_FTQ_CTL_MAX_DEPTH (0x3ffL<<12) +#define BCE_COM_COMTQ_FTQ_CTL_CUR_DEPTH (0x3ffL<<22) + +#define BCE_COM_COMQ_FTQ_DATA 0x001053c0 +#define BCE_COM_COMQ_FTQ_CMD 0x001053f8 +#define BCE_COM_COMQ_FTQ_CMD_OFFSET (0x3ffL<<0) +#define BCE_COM_COMQ_FTQ_CMD_WR_TOP (1L<<10) +#define BCE_COM_COMQ_FTQ_CMD_WR_TOP_0 (0L<<10) +#define BCE_COM_COMQ_FTQ_CMD_WR_TOP_1 (1L<<10) +#define BCE_COM_COMQ_FTQ_CMD_SFT_RESET (1L<<25) +#define BCE_COM_COMQ_FTQ_CMD_RD_DATA (1L<<26) +#define BCE_COM_COMQ_FTQ_CMD_ADD_INTERVEN (1L<<27) +#define BCE_COM_COMQ_FTQ_CMD_ADD_DATA (1L<<28) +#define BCE_COM_COMQ_FTQ_CMD_INTERVENE_CLR (1L<<29) +#define BCE_COM_COMQ_FTQ_CMD_POP (1L<<30) +#define BCE_COM_COMQ_FTQ_CMD_BUSY (1L<<31) + +#define BCE_COM_COMQ_FTQ_CTL 0x001053fc +#define BCE_COM_COMQ_FTQ_CTL_INTERVENE (1L<<0) +#define BCE_COM_COMQ_FTQ_CTL_OVERFLOW (1L<<1) +#define BCE_COM_COMQ_FTQ_CTL_FORCE_INTERVENE (1L<<2) +#define BCE_COM_COMQ_FTQ_CTL_MAX_DEPTH (0x3ffL<<12) +#define BCE_COM_COMQ_FTQ_CTL_CUR_DEPTH (0x3ffL<<22) + +#define BCE_COM_SCRATCH 0x00120000 + + +/* + * cp_reg definition + * offset: 0x180000 + */ +#define BCE_CP_CPU_MODE 0x00185000 +#define BCE_CP_CPU_MODE_LOCAL_RST (1L<<0) +#define BCE_CP_CPU_MODE_STEP_ENA (1L<<1) +#define BCE_CP_CPU_MODE_PAGE_0_DATA_ENA (1L<<2) +#define BCE_CP_CPU_MODE_PAGE_0_INST_ENA (1L<<3) +#define BCE_CP_CPU_MODE_MSG_BIT1 (1L<<6) +#define BCE_CP_CPU_MODE_INTERRUPT_ENA (1L<<7) +#define BCE_CP_CPU_MODE_SOFT_HALT (1L<<10) +#define BCE_CP_CPU_MODE_BAD_DATA_HALT_ENA (1L<<11) +#define BCE_CP_CPU_MODE_BAD_INST_HALT_ENA (1L<<12) +#define BCE_CP_CPU_MODE_FIO_ABORT_HALT_ENA (1L<<13) +#define BCE_CP_CPU_MODE_SPAD_UNDERFLOW_HALT_ENA (1L<<15) + +#define BCE_CP_CPU_STATE 0x00185004 +#define BCE_CP_CPU_STATE_BREAKPOINT (1L<<0) +#define BCE_CP_CPU_STATE_BAD_INST_HALTED (1L<<2) +#define BCE_CP_CPU_STATE_PAGE_0_DATA_HALTED (1L<<3) +#define BCE_CP_CPU_STATE_PAGE_0_INST_HALTED (1L<<4) +#define BCE_CP_CPU_STATE_BAD_DATA_ADDR_HALTED (1L<<5) +#define BCE_CP_CPU_STATE_BAD_pc_HALTED (1L<<6) +#define BCE_CP_CPU_STATE_ALIGN_HALTED (1L<<7) +#define BCE_CP_CPU_STATE_FIO_ABORT_HALTED (1L<<8) +#define BCE_CP_CPU_STATE_SOFT_HALTED (1L<<10) +#define BCE_CP_CPU_STATE_SPAD_UNDERFLOW (1L<<11) +#define BCE_CP_CPU_STATE_INTERRRUPT (1L<<12) +#define BCE_CP_CPU_STATE_DATA_ACCESS_STALL (1L<<14) +#define BCE_CP_CPU_STATE_INST_FETCH_STALL (1L<<15) +#define BCE_CP_CPU_STATE_BLOCKED_READ (1L<<31) + +#define BCE_CP_CPU_EVENT_MASK 0x00185008 +#define BCE_CP_CPU_EVENT_MASK_BREAKPOINT_MASK (1L<<0) +#define BCE_CP_CPU_EVENT_MASK_BAD_INST_HALTED_MASK (1L<<2) +#define BCE_CP_CPU_EVENT_MASK_PAGE_0_DATA_HALTED_MASK (1L<<3) +#define BCE_CP_CPU_EVENT_MASK_PAGE_0_INST_HALTED_MASK (1L<<4) +#define BCE_CP_CPU_EVENT_MASK_BAD_DATA_ADDR_HALTED_MASK (1L<<5) +#define BCE_CP_CPU_EVENT_MASK_BAD_PC_HALTED_MASK (1L<<6) +#define BCE_CP_CPU_EVENT_MASK_ALIGN_HALTED_MASK (1L<<7) +#define BCE_CP_CPU_EVENT_MASK_FIO_ABORT_MASK (1L<<8) +#define BCE_CP_CPU_EVENT_MASK_SOFT_HALTED_MASK (1L<<10) +#define BCE_CP_CPU_EVENT_MASK_SPAD_UNDERFLOW_MASK (1L<<11) +#define BCE_CP_CPU_EVENT_MASK_INTERRUPT_MASK (1L<<12) + +#define BCE_CP_CPU_PROGRAM_COUNTER 0x0018501c +#define BCE_CP_CPU_INSTRUCTION 0x00185020 +#define BCE_CP_CPU_DATA_ACCESS 0x00185024 +#define BCE_CP_CPU_INTERRUPT_ENABLE 0x00185028 +#define BCE_CP_CPU_INTERRUPT_VECTOR 0x0018502c +#define BCE_CP_CPU_INTERRUPT_SAVED_PC 0x00185030 +#define BCE_CP_CPU_HW_BREAKPOINT 0x00185034 +#define BCE_CP_CPU_HW_BREAKPOINT_DISABLE (1L<<0) +#define BCE_CP_CPU_HW_BREAKPOINT_ADDRESS (0x3fffffffL<<2) + +#define BCE_CP_CPU_REG_FILE 0x00185200 +#define BCE_CP_CPQ_FTQ_DATA 0x001853c0 +#define BCE_CP_CPQ_FTQ_CMD 0x001853f8 +#define BCE_CP_CPQ_FTQ_CMD_OFFSET (0x3ffL<<0) +#define BCE_CP_CPQ_FTQ_CMD_WR_TOP (1L<<10) +#define BCE_CP_CPQ_FTQ_CMD_WR_TOP_0 (0L<<10) +#define BCE_CP_CPQ_FTQ_CMD_WR_TOP_1 (1L<<10) +#define BCE_CP_CPQ_FTQ_CMD_SFT_RESET (1L<<25) +#define BCE_CP_CPQ_FTQ_CMD_RD_DATA (1L<<26) +#define BCE_CP_CPQ_FTQ_CMD_ADD_INTERVEN (1L<<27) +#define BCE_CP_CPQ_FTQ_CMD_ADD_DATA (1L<<28) +#define BCE_CP_CPQ_FTQ_CMD_INTERVENE_CLR (1L<<29) +#define BCE_CP_CPQ_FTQ_CMD_POP (1L<<30) +#define BCE_CP_CPQ_FTQ_CMD_BUSY (1L<<31) + +#define BCE_CP_CPQ_FTQ_CTL 0x001853fc +#define BCE_CP_CPQ_FTQ_CTL_INTERVENE (1L<<0) +#define BCE_CP_CPQ_FTQ_CTL_OVERFLOW (1L<<1) +#define BCE_CP_CPQ_FTQ_CTL_FORCE_INTERVENE (1L<<2) +#define BCE_CP_CPQ_FTQ_CTL_MAX_DEPTH (0x3ffL<<12) +#define BCE_CP_CPQ_FTQ_CTL_CUR_DEPTH (0x3ffL<<22) + +#define BCE_CP_SCRATCH 0x001a0000 + + +/* + * tas_reg definition + * offset: 0x1c0000 + */ +#define BCE_TAS_FTQ_CMD 0x001c03f8 +#define BCE_TAS_FTQ_CTL 0x001c03fc +#define BCE_TAS_FTQ_CTL_MAX_DEPTH (0x3ffL<<12) +#define BCE_TAS_FTQ_CTL_CUR_DEPTH (0x3ffL<<22) + + +/* + * mcp_reg definition + * offset: 0x140000 + */ +#define BCE_MCP_CPU_MODE 0x00145000 +#define BCE_MCP_CPU_MODE_LOCAL_RST (1L<<0) +#define BCE_MCP_CPU_MODE_STEP_ENA (1L<<1) +#define BCE_MCP_CPU_MODE_PAGE_0_DATA_ENA (1L<<2) +#define BCE_MCP_CPU_MODE_PAGE_0_INST_ENA (1L<<3) +#define BCE_MCP_CPU_MODE_MSG_BIT1 (1L<<6) +#define BCE_MCP_CPU_MODE_INTERRUPT_ENA (1L<<7) +#define BCE_MCP_CPU_MODE_SOFT_HALT (1L<<10) +#define BCE_MCP_CPU_MODE_BAD_DATA_HALT_ENA (1L<<11) +#define BCE_MCP_CPU_MODE_BAD_INST_HALT_ENA (1L<<12) +#define BCE_MCP_CPU_MODE_FIO_ABORT_HALT_ENA (1L<<13) +#define BCE_MCP_CPU_MODE_SPAD_UNDERFLOW_HALT_ENA (1L<<15) + +#define BCE_MCP_CPU_STATE 0x00145004 +#define BCE_MCP_CPU_STATE_BREAKPOINT (1L<<0) +#define BCE_MCP_CPU_STATE_BAD_INST_HALTED (1L<<2) +#define BCE_MCP_CPU_STATE_PAGE_0_DATA_HALTED (1L<<3) +#define BCE_MCP_CPU_STATE_PAGE_0_INST_HALTED (1L<<4) +#define BCE_MCP_CPU_STATE_BAD_DATA_ADDR_HALTED (1L<<5) +#define BCE_MCP_CPU_STATE_BAD_pc_HALTED (1L<<6) +#define BCE_MCP_CPU_STATE_ALIGN_HALTED (1L<<7) +#define BCE_MCP_CPU_STATE_FIO_ABORT_HALTED (1L<<8) +#define BCE_MCP_CPU_STATE_SOFT_HALTED (1L<<10) +#define BCE_MCP_CPU_STATE_SPAD_UNDERFLOW (1L<<11) +#define BCE_MCP_CPU_STATE_INTERRRUPT (1L<<12) +#define BCE_MCP_CPU_STATE_DATA_ACCESS_STALL (1L<<14) +#define BCE_MCP_CPU_STATE_INST_FETCH_STALL (1L<<15) +#define BCE_MCP_CPU_STATE_BLOCKED_READ (1L<<31) + +#define BCE_MCP_CPU_EVENT_MASK 0x00145008 +#define BCE_MCP_CPU_EVENT_MASK_BREAKPOINT_MASK (1L<<0) +#define BCE_MCP_CPU_EVENT_MASK_BAD_INST_HALTED_MASK (1L<<2) +#define BCE_MCP_CPU_EVENT_MASK_PAGE_0_DATA_HALTED_MASK (1L<<3) +#define BCE_MCP_CPU_EVENT_MASK_PAGE_0_INST_HALTED_MASK (1L<<4) +#define BCE_MCP_CPU_EVENT_MASK_BAD_DATA_ADDR_HALTED_MASK (1L<<5) +#define BCE_MCP_CPU_EVENT_MASK_BAD_PC_HALTED_MASK (1L<<6) +#define BCE_MCP_CPU_EVENT_MASK_ALIGN_HALTED_MASK (1L<<7) +#define BCE_MCP_CPU_EVENT_MASK_FIO_ABORT_MASK (1L<<8) +#define BCE_MCP_CPU_EVENT_MASK_SOFT_HALTED_MASK (1L<<10) +#define BCE_MCP_CPU_EVENT_MASK_SPAD_UNDERFLOW_MASK (1L<<11) +#define BCE_MCP_CPU_EVENT_MASK_INTERRUPT_MASK (1L<<12) + +#define BCE_MCP_CPU_PROGRAM_COUNTER 0x0014501c +#define BCE_MCP_CPU_INSTRUCTION 0x00145020 +#define BCE_MCP_CPU_DATA_ACCESS 0x00145024 +#define BCE_MCP_CPU_INTERRUPT_ENABLE 0x00145028 +#define BCE_MCP_CPU_INTERRUPT_VECTOR 0x0014502c +#define BCE_MCP_CPU_INTERRUPT_SAVED_PC 0x00145030 +#define BCE_MCP_CPU_HW_BREAKPOINT 0x00145034 +#define BCE_MCP_CPU_HW_BREAKPOINT_DISABLE (1L<<0) +#define BCE_MCP_CPU_HW_BREAKPOINT_ADDRESS (0x3fffffffL<<2) + +#define BCE_MCP_CPU_REG_FILE 0x00145200 +#define BCE_MCP_MCPQ_FTQ_DATA 0x001453c0 +#define BCE_MCP_MCPQ_FTQ_CMD 0x001453f8 +#define BCE_MCP_MCPQ_FTQ_CMD_OFFSET (0x3ffL<<0) +#define BCE_MCP_MCPQ_FTQ_CMD_WR_TOP (1L<<10) +#define BCE_MCP_MCPQ_FTQ_CMD_WR_TOP_0 (0L<<10) +#define BCE_MCP_MCPQ_FTQ_CMD_WR_TOP_1 (1L<<10) +#define BCE_MCP_MCPQ_FTQ_CMD_SFT_RESET (1L<<25) +#define BCE_MCP_MCPQ_FTQ_CMD_RD_DATA (1L<<26) +#define BCE_MCP_MCPQ_FTQ_CMD_ADD_INTERVEN (1L<<27) +#define BCE_MCP_MCPQ_FTQ_CMD_ADD_DATA (1L<<28) +#define BCE_MCP_MCPQ_FTQ_CMD_INTERVENE_CLR (1L<<29) +#define BCE_MCP_MCPQ_FTQ_CMD_POP (1L<<30) +#define BCE_MCP_MCPQ_FTQ_CMD_BUSY (1L<<31) + +#define BCE_MCP_MCPQ_FTQ_CTL 0x001453fc +#define BCE_MCP_MCPQ_FTQ_CTL_INTERVENE (1L<<0) +#define BCE_MCP_MCPQ_FTQ_CTL_OVERFLOW (1L<<1) +#define BCE_MCP_MCPQ_FTQ_CTL_FORCE_INTERVENE (1L<<2) +#define BCE_MCP_MCPQ_FTQ_CTL_MAX_DEPTH (0x3ffL<<12) +#define BCE_MCP_MCPQ_FTQ_CTL_CUR_DEPTH (0x3ffL<<22) + +#define BCE_MCP_ROM 0x00150000 +#define BCE_MCP_SCRATCH 0x00160000 + +#define BCE_SHM_HDR_SIGNATURE BCE_MCP_SCRATCH +#define BCE_SHM_HDR_SIGNATURE_SIG_MASK 0xffff0000 +#define BCE_SHM_HDR_SIGNATURE_SIG 0x53530000 +#define BCE_SHM_HDR_SIGNATURE_VER_MASK 0x000000ff +#define BCE_SHM_HDR_SIGNATURE_VER_ONE 0x00000001 + +#define BCE_SHM_HDR_ADDR_0 BCE_MCP_SCRATCH + 4 +#define BCE_SHM_HDR_ADDR_1 BCE_MCP_SCRATCH + 8 + +/****************************************************************************/ +/* End machine generated definitions. */ +/****************************************************************************/ + +/****************************************************************************/ +/* Begin firmware definitions. */ +/****************************************************************************/ +/* The following definitions refer to pre-defined locations in processor */ +/* memory space which allows the driver to enable particular functionality */ +/* within the firmware or read specfic information about the running */ +/* firmware. */ +/****************************************************************************/ + +/* + * Perfect match control register. + * 0 = Default. All received unicst packets matching MAC address + * BCE_EMAC_MAC_MATCH[0:1,8:9,10:11,12:13,14:15] are sent to receive queue + * 0, all other perfect match registers are reserved. + * 1 = All received unicast packets matching MAC address + * BCE_EMAC_MAC_MATCH[0:1] are mapped to receive queue 0, + * BCE_EMAC_MAC_MATCH[2:3] is mapped to receive queue 1, etc. + * 2 = All received unicast packets matching any BCE_EMAC_MAC_MATCH[] register + * are sent to receive queue 0. + */ +#define BCE_RXP_PM_CTRL 0x0e00d0 + +/* + * This firmware statistic records the number of frames that + * were dropped because there were no buffers available in the + * receive chain. + */ +#define BCE_COM_NO_BUFFERS 0x120084 +/****************************************************************************/ +/* End firmware definitions. */ +/****************************************************************************/ + +#define NUM_MC_HASH_REGISTERS 8 + +#define DMA_READ_CHANS 5 +#define DMA_WRITE_CHANS 3 + +/* Use the natural page size of the host CPU. */ +/* XXX: This has only been tested on amd64/i386 systems using 4KB pages. */ +#define BCM_PAGE_BITS PAGE_SHIFT +#define BCM_PAGE_SIZE PAGE_SIZE +#define BCM_PAGE_MASK (BCM_PAGE_SIZE - 1) +#define BCM_PAGES(x) ((((x) + BCM_PAGE_SIZE - 1) & \ + BCM_PAGE_MASK) >> BCM_PAGE_BITS) + +/* + * Page count must remain a power of 2 for all + * of the math to work correctly. + */ +#define TX_PAGES 2 +#define TOTAL_TX_BD_PER_PAGE (BCM_PAGE_SIZE / sizeof(struct tx_bd)) +#define USABLE_TX_BD_PER_PAGE (TOTAL_TX_BD_PER_PAGE - 1) +#define TOTAL_TX_BD (TOTAL_TX_BD_PER_PAGE * TX_PAGES) +#define USABLE_TX_BD (USABLE_TX_BD_PER_PAGE * TX_PAGES) +#define MAX_TX_BD (TOTAL_TX_BD - 1) + +/* Advance to the next tx_bd, skipping any next page pointers. */ +#define NEXT_TX_BD(x) (((x) & USABLE_TX_BD_PER_PAGE) == \ + (USABLE_TX_BD_PER_PAGE - 1)) ? (x) + 2 : (x) + 1 + +#define TX_CHAIN_IDX(x) ((x) & MAX_TX_BD) + +#define TX_PAGE(x) (((x) & ~USABLE_TX_BD_PER_PAGE) >> (BCM_PAGE_BITS - 4)) +#define TX_IDX(x) ((x) & USABLE_TX_BD_PER_PAGE) + +/* + * Page count must remain a power of 2 for all + * of the math to work correctly. + */ +#define RX_PAGES 2 +#define TOTAL_RX_BD_PER_PAGE (BCM_PAGE_SIZE / sizeof(struct rx_bd)) +#define USABLE_RX_BD_PER_PAGE (TOTAL_RX_BD_PER_PAGE - 1) +#define TOTAL_RX_BD (TOTAL_RX_BD_PER_PAGE * RX_PAGES) +#define USABLE_RX_BD (USABLE_RX_BD_PER_PAGE * RX_PAGES) +#define MAX_RX_BD (TOTAL_RX_BD - 1) + +/* Advance to the next rx_bd, skipping any next page pointers. */ +#define NEXT_RX_BD(x) (((x) & USABLE_RX_BD_PER_PAGE) == \ + (USABLE_RX_BD_PER_PAGE - 1)) ? (x) + 2 : (x) + 1 + +#define RX_CHAIN_IDX(x) ((x) & MAX_RX_BD) + +#define RX_PAGE(x) (((x) & ~USABLE_RX_BD_PER_PAGE) >> (BCM_PAGE_BITS - 4)) +#define RX_IDX(x) ((x) & USABLE_RX_BD_PER_PAGE) + +#ifdef BCE_JUMBO_HDRSPLIT +/* + * To accomodate jumbo frames, the page chain should + * be 4 times larger than the receive chain. + */ +#define PG_PAGES (RX_PAGES * 4) +#define TOTAL_PG_BD_PER_PAGE (BCM_PAGE_SIZE / sizeof(struct rx_bd)) +#define USABLE_PG_BD_PER_PAGE (TOTAL_PG_BD_PER_PAGE - 1) +#define TOTAL_PG_BD (TOTAL_PG_BD_PER_PAGE * PG_PAGES) +#define USABLE_PG_BD (USABLE_PG_BD_PER_PAGE * PG_PAGES) +#define MAX_PG_BD (TOTAL_PG_BD - 1) + +/* Advance to the next pg_bd, skipping any next page pointers. */ +#define NEXT_PG_BD(x) (((x) & USABLE_PG_BD_PER_PAGE) == \ + (USABLE_PG_BD_PER_PAGE - 1)) ? (x) + 2 : (x) + 1 + +#define PG_CHAIN_IDX(x) ((x) & MAX_PG_BD) + +#define PG_PAGE(x) (((x) & ~USABLE_PG_BD_PER_PAGE) >> (BCM_PAGE_BITS - 4)) +#define PG_IDX(x) ((x) & USABLE_PG_BD_PER_PAGE) + +#endif /* BCE_JUMBO_HDRSPLIT */ + +#define CTX_INIT_RETRY_COUNT 10 + +/* Context size. */ +#define CTX_SHIFT 7 +#define CTX_SIZE (1 << CTX_SHIFT) +#define CTX_MASK (CTX_SIZE - 1) +#define GET_CID_ADDR(_cid) ((_cid) << CTX_SHIFT) +#define GET_CID(_cid_addr) ((_cid_addr) >> CTX_SHIFT) + +#define PHY_CTX_SHIFT 6 +#define PHY_CTX_SIZE (1 << PHY_CTX_SHIFT) +#define PHY_CTX_MASK (PHY_CTX_SIZE - 1) +#define GET_PCID_ADDR(_pcid) ((_pcid) << PHY_CTX_SHIFT) +#define GET_PCID(_pcid_addr) ((_pcid_addr) >> PHY_CTX_SHIFT) + +#define MB_KERNEL_CTX_SHIFT 8 +#define MB_KERNEL_CTX_SIZE (1 << MB_KERNEL_CTX_SHIFT) +#define MB_KERNEL_CTX_MASK (MB_KERNEL_CTX_SIZE - 1) +#define MB_GET_CID_ADDR(_cid) (0x10000 + ((_cid) << MB_KERNEL_CTX_SHIFT)) + +#define MAX_CID_CNT 0x4000 +#define MAX_CID_ADDR (GET_CID_ADDR(MAX_CID_CNT)) +#define INVALID_CID_ADDR 0xffffffff + +#define TX_CID 16 +#define RX_CID 0 + +/****************************************************************************/ +/* BCE Processor Firmwware Load Definitions */ +/****************************************************************************/ + +struct cpu_reg { + u32 mode; + u32 mode_value_halt; + u32 mode_value_sstep; + + u32 state; + u32 state_value_clear; + + u32 gpr0; + u32 evmask; + u32 pc; + u32 inst; + u32 bp; + + u32 spad_base; + + u32 mips_view_base; +}; + +struct fw_info { + u32 ver_major; + u32 ver_minor; + u32 ver_fix; + + u32 start_addr; + + /* Text section. */ + u32 text_addr; + u32 text_len; + u32 text_index; + u32 *text; + + /* Data section. */ + u32 data_addr; + u32 data_len; + u32 data_index; + u32 *data; + + /* SBSS section. */ + u32 sbss_addr; + u32 sbss_len; + u32 sbss_index; + u32 *sbss; + + /* BSS section. */ + u32 bss_addr; + u32 bss_len; + u32 bss_index; + u32 *bss; + + /* Read-only section. */ + u32 rodata_addr; + u32 rodata_len; + u32 rodata_index; + u32 *rodata; +}; + +#define RV2P_PROC1 0 +#define RV2P_PROC2 1 + +#define BCE_MIREG(x) ((x & 0x1F) << 16) +#define BCE_MIPHY(x) ((x & 0x1F) << 21) +#define BCE_PHY_TIMEOUT 50 + +#define BCE_NVRAM_SIZE 0x200 +#define BCE_NVRAM_MAGIC 0x669955aa +#define BCE_CRC32_RESIDUAL 0xdebb20e3 + +#define BCE_TX_TIMEOUT 5 + +#define BCE_MAX_SEGMENTS 32 +#define BCE_TSO_MAX_SIZE 65536 +#define BCE_TSO_MAX_SEG_SIZE 4096 + +#define BCE_DMA_ALIGN 8 +#define BCE_DMA_BOUNDARY 0 +#define BCE_RX_BUF_ALIGN 16 + +#define BCE_MAX_CONTEXT 4 + +/* The BCM5708 has a problem with addresses greater that 40bits. */ +/* Handle the sizing issue in an architecture agnostic fashion. */ +#if (BUS_SPACE_MAXADDR < 0xFFFFFFFFFF) +#define BCE_BUS_SPACE_MAXADDR BUS_SPACE_MAXADDR +#else +#define BCE_BUS_SPACE_MAXADDR 0xFFFFFFFFFF +#endif + +/* + * XXX Checksum offload involving IP fragments seems to cause problems on + * transmit. Disable it for now, hopefully there will be a more elegant + * solution later. + */ +#ifdef BCE_IP_CSUM +#define BCE_IF_HWASSIST (CSUM_IP | CSUM_TCP | CSUM_UDP) +#else +#define BCE_IF_HWASSIST (CSUM_TCP | CSUM_UDP) +#endif + +#if __FreeBSD_version < 700000 +#define BCE_IF_CAPABILITIES (IFCAP_VLAN_MTU | \ + IFCAP_VLAN_HWTAGGING | IFCAP_HWCSUM | IFCAP_JUMBO_MTU) +#else +#define BCE_IF_CAPABILITIES (IFCAP_VLAN_MTU | \ + IFCAP_VLAN_HWTAGGING | IFCAP_HWCSUM | \ + IFCAP_JUMBO_MTU | IFCAP_VLAN_HWCSUM) +#endif + +#define BCE_MIN_MTU 60 +#define BCE_MIN_ETHER_MTU 64 + +#define BCE_MAX_STD_MTU 1500 +#define BCE_MAX_STD_ETHER_MTU 1518 +#define BCE_MAX_STD_ETHER_MTU_VLAN 1522 + +#define BCE_MAX_JUMBO_MTU 9000 +#define BCE_MAX_JUMBO_ETHER_MTU 9018 +#define BCE_MAX_JUMBO_ETHER_MTU_VLAN 9022 + +// #define BCE_MAX_MTU ETHER_MAX_LEN_JUMBO + ETHER_VLAN_ENCAP_LEN /* 9022 */ + +/****************************************************************************/ +/* BCE Device State Data Structure */ +/****************************************************************************/ + +#define BCE_STATUS_BLK_SZ sizeof(struct status_block) +#define BCE_STATS_BLK_SZ sizeof(struct statistics_block) +#define BCE_TX_CHAIN_PAGE_SZ BCM_PAGE_SIZE +#define BCE_RX_CHAIN_PAGE_SZ BCM_PAGE_SIZE +#define BCE_PG_CHAIN_PAGE_SZ BCM_PAGE_SIZE + +struct bce_softc +{ + /* Interface info. Must be first!! */ + struct ifnet *bce_ifp; + + /* Parent device handle */ + device_t bce_dev; + + /* Interface number */ + u_int8_t bce_unit; + + /* Device resource handle */ + struct resource *bce_res_mem; + + /* TBI media info */ + struct ifmedia bce_ifmedia; + + /* Device bus tag */ + bus_space_tag_t bce_btag; + + /* Device bus handle */ + bus_space_handle_t bce_bhandle; + + /* Device virtual memory handle */ + vm_offset_t bce_vhandle; + + /* IRQ Resource Handle */ + struct resource *bce_res_irq; + + struct mtx bce_mtx; + + /* Interrupt handler. */ + driver_intr_t *bce_intr; + void *bce_intrhand; + int bce_irq_rid; + int bce_msi_count; + + /* ASIC Chip ID. */ + u32 bce_chipid; + + /* General controller flags. */ + u32 bce_flags; +#define BCE_PCIX_FLAG 0x00000001 +#define BCE_PCI_32BIT_FLAG 0x00000002 +#define BCE_RESERVED_FLAG 0x00000004 +#define BCE_NO_WOL_FLAG 0x00000008 +#define BCE_USING_DAC_FLAG 0x00000010 +#define BCE_USING_MSI_FLAG 0x00000020 +#define BCE_MFW_ENABLE_FLAG 0x00000040 +#define BCE_ONE_SHOT_MSI_FLAG 0x00000080 +#define BCE_USING_MSIX_FLAG 0x00000100 +#define BCE_PCIE_FLAG 0x00000200 +#define BCE_USING_TX_FLOW_CONTROL 0x00000400 + + /* Controller capability flags. */ + u32 bce_cap_flags; +#define BCE_MSI_CAPABLE_FLAG 0x00000001 +#define BCE_MSIX_CAPABLE_FLAG 0x00000002 +#define BCE_PCIE_CAPABLE_FLAG 0x00000004 +#define BCE_PCIX_CAPABLE_FLAG 0x00000008 + + /* PHY specific flags. */ + u32 bce_phy_flags; +#define BCE_PHY_SERDES_FLAG 0x00000001 +#define BCE_PHY_CRC_FIX_FLAG 0x00000002 +#define BCE_PHY_PARALLEL_DETECT_FLAG 0x00000004 +#define BCE_PHY_2_5G_CAPABLE_FLAG 0x00000008 +#define BCE_PHY_INT_MODE_MASK_FLAG 0x00000300 +#define BCE_PHY_INT_MODE_AUTO_POLLING_FLAG 0x00000100 +#define BCE_PHY_INT_MODE_LINK_READY_FLAG 0x00000200 +#define BCE_PHY_IEEE_CLAUSE_45_FLAG 0x00000400 + + /* Values that need to be shared with the PHY driver. */ + u32 bce_shared_hw_cfg; + u32 bce_port_hw_cfg; + + bus_addr_t max_bus_addr; + + /* PCI bus speed */ + u16 bus_speed_mhz; + + /* PCIe link width */ + u16 link_width; + + /* PCIe link speed */ + u16 link_speed; + + /* Flash NVRAM settings */ + struct flash_spec *bce_flash_info; + + /* Flash NVRAM size */ + u32 bce_flash_size; + + /* Shared Memory base address */ + u32 bce_shmem_base; + + /* Name string */ + char *bce_name; + + /* Tracks the version of bootcode firmware. */ + char bce_bc_ver[32]; + + /* Tracks the version of management firmware. */ + char bce_mfw_ver[32]; + + /* + * Tracks the state of the firmware. 0 = Running while any + * other value indicates that the firmware is not responding. + */ + u16 bce_fw_timed_out; + + /* + * An incrementing sequence used to coordinate messages passed + * from the driver to the firmware. + */ + u16 bce_fw_wr_seq; + + /* + * An incrementing sequence used to let the firmware know that + * the driver is still operating. Without the pulse, management + * firmware such as IPMI or UMP will operate in OS absent state. + */ + u16 bce_fw_drv_pulse_wr_seq; + + /* Tracks whether firmware has lost the driver's pulse. */ + u16 bce_drv_cardiac_arrest; + + /* Ethernet MAC address. */ + u_char eaddr[6]; + + /* + * These setting are used by the host coalescing (HC) block to + * to control how often the status block, statistics block and + * interrupts are generated. + */ + u16 bce_tx_quick_cons_trip_int; + u16 bce_tx_quick_cons_trip; + u16 bce_rx_quick_cons_trip_int; + u16 bce_rx_quick_cons_trip; + u16 bce_tx_ticks_int; + u16 bce_tx_ticks; + u16 bce_rx_ticks_int; + u16 bce_rx_ticks; + u32 bce_stats_ticks; + + /* ToDo: Can these be removed? */ + u16 bce_comp_prod_trip_int; + u16 bce_comp_prod_trip; + u16 bce_com_ticks_int; + u16 bce_com_ticks; + u16 bce_cmd_ticks_int; + u16 bce_cmd_ticks; + + /* The address of the integrated PHY on the MII bus. */ + int bce_phy_addr; + + /* The device handle for the MII bus child device. */ + device_t bce_miibus; + + /* Driver maintained TX chain pointers and byte counter. */ + u16 rx_prod; + u16 rx_cons; + + /* Counts the bytes used in the RX chain. */ + u32 rx_prod_bseq; + u16 tx_prod; + u16 tx_cons; + + /* Counts the bytes used in the TX chain. */ + u32 tx_prod_bseq; + +#ifdef BCE_JUMBO_HDRSPLIT + u16 pg_prod; + u16 pg_cons; +#endif + + int bce_link_up; + struct callout bce_tick_callout; + struct callout bce_pulse_callout; + + /* Ticks until chip reset */ + int watchdog_timer; + + /* Frame size and mbuf allocation size for RX frames. */ + u32 max_frame_size; + int rx_bd_mbuf_alloc_size; + int rx_bd_mbuf_data_len; + int rx_bd_mbuf_align_pad; + +#ifdef BCE_JUMBO_HDRSPLIT + int pg_bd_mbuf_alloc_size; +#endif + + /* Receive mode settings (i.e promiscuous, multicast, etc.). */ + u32 rx_mode; + + /* Bus tag for the bce controller. */ + bus_dma_tag_t parent_tag; + + /* H/W maintained TX buffer descriptor chain structure. */ + bus_dma_tag_t tx_bd_chain_tag; + bus_dmamap_t tx_bd_chain_map[TX_PAGES]; + struct tx_bd *tx_bd_chain[TX_PAGES]; + bus_addr_t tx_bd_chain_paddr[TX_PAGES]; + + /* H/W maintained RX buffer descriptor chain structure. */ + bus_dma_tag_t rx_bd_chain_tag; + bus_dmamap_t rx_bd_chain_map[RX_PAGES]; + struct rx_bd *rx_bd_chain[RX_PAGES]; + bus_addr_t rx_bd_chain_paddr[RX_PAGES]; + +#ifdef BCE_JUMBO_HDRSPLIT + /* H/W maintained page buffer descriptor chain structure. */ + bus_dma_tag_t pg_bd_chain_tag; + bus_dmamap_t pg_bd_chain_map[PG_PAGES]; + struct rx_bd *pg_bd_chain[PG_PAGES]; + bus_addr_t pg_bd_chain_paddr[PG_PAGES]; +#endif + + /* H/W maintained status block. */ + bus_dma_tag_t status_tag; + bus_dmamap_t status_map; + struct status_block *status_block; + bus_addr_t status_block_paddr; + + /* Driver maintained status block values. */ + u16 last_status_idx; + u16 hw_rx_cons; + u16 hw_tx_cons; + + /* H/W maintained statistics block. */ + bus_dma_tag_t stats_tag; + bus_dmamap_t stats_map; + struct statistics_block *stats_block; + bus_addr_t stats_block_paddr; + + /* H/W maintained context block. */ + int ctx_pages; + bus_dma_tag_t ctx_tag; + + /* BCM5709/16 use host memory for context. */ + bus_dmamap_t ctx_map[BCE_MAX_CONTEXT]; + void *ctx_block[BCE_MAX_CONTEXT]; + bus_addr_t ctx_paddr[BCE_MAX_CONTEXT]; + + /* Bus tag for RX/TX mbufs. */ + bus_dma_tag_t rx_mbuf_tag; + bus_dma_tag_t tx_mbuf_tag; + +#ifdef BCE_JUMBO_HDRSPLIT + bus_dma_tag_t pg_mbuf_tag; +#endif + + /* S/W maintained mbuf TX chain structure. */ + bus_dmamap_t tx_mbuf_map[TOTAL_TX_BD]; + struct mbuf *tx_mbuf_ptr[TOTAL_TX_BD]; + + /* S/W maintained mbuf RX chain structure. */ + bus_dmamap_t rx_mbuf_map[TOTAL_RX_BD]; + struct mbuf *rx_mbuf_ptr[TOTAL_RX_BD]; + +#ifdef BCE_JUMBO_HDRSPLIT + /* S/W maintained mbuf page chain structure. */ + bus_dmamap_t pg_mbuf_map[TOTAL_PG_BD]; + struct mbuf *pg_mbuf_ptr[TOTAL_PG_BD]; +#endif + + /* Track the number of buffer descriptors in use. */ + u16 free_rx_bd; + u16 max_rx_bd; + u16 used_tx_bd; + u16 max_tx_bd; + +#ifdef BCE_JUMBO_HDRSPLIT + u16 free_pg_bd; + u16 max_pg_bd; +#endif + + /* Provides access to hardware statistics through sysctl. */ + u64 stat_IfHCInOctets; + u64 stat_IfHCInBadOctets; + u64 stat_IfHCOutOctets; + u64 stat_IfHCOutBadOctets; + u64 stat_IfHCInUcastPkts; + u64 stat_IfHCInMulticastPkts; + u64 stat_IfHCInBroadcastPkts; + u64 stat_IfHCOutUcastPkts; + u64 stat_IfHCOutMulticastPkts; + u64 stat_IfHCOutBroadcastPkts; + + u32 stat_emac_tx_stat_dot3statsinternalmactransmiterrors; + u32 stat_Dot3StatsCarrierSenseErrors; + u32 stat_Dot3StatsFCSErrors; + u32 stat_Dot3StatsAlignmentErrors; + u32 stat_Dot3StatsSingleCollisionFrames; + u32 stat_Dot3StatsMultipleCollisionFrames; + u32 stat_Dot3StatsDeferredTransmissions; + u32 stat_Dot3StatsExcessiveCollisions; + u32 stat_Dot3StatsLateCollisions; + u32 stat_EtherStatsCollisions; + u32 stat_EtherStatsFragments; + u32 stat_EtherStatsJabbers; + u32 stat_EtherStatsUndersizePkts; + u32 stat_EtherStatsOversizePkts; + u32 stat_EtherStatsPktsRx64Octets; + u32 stat_EtherStatsPktsRx65Octetsto127Octets; + u32 stat_EtherStatsPktsRx128Octetsto255Octets; + u32 stat_EtherStatsPktsRx256Octetsto511Octets; + u32 stat_EtherStatsPktsRx512Octetsto1023Octets; + u32 stat_EtherStatsPktsRx1024Octetsto1522Octets; + u32 stat_EtherStatsPktsRx1523Octetsto9022Octets; + u32 stat_EtherStatsPktsTx64Octets; + u32 stat_EtherStatsPktsTx65Octetsto127Octets; + u32 stat_EtherStatsPktsTx128Octetsto255Octets; + u32 stat_EtherStatsPktsTx256Octetsto511Octets; + u32 stat_EtherStatsPktsTx512Octetsto1023Octets; + u32 stat_EtherStatsPktsTx1024Octetsto1522Octets; + u32 stat_EtherStatsPktsTx1523Octetsto9022Octets; + u32 stat_XonPauseFramesReceived; + u32 stat_XoffPauseFramesReceived; + u32 stat_OutXonSent; + u32 stat_OutXoffSent; + u32 stat_FlowControlDone; + u32 stat_MacControlFramesReceived; + u32 stat_XoffStateEntered; + u32 stat_IfInFramesL2FilterDiscards; + u32 stat_IfInRuleCheckerDiscards; + u32 stat_IfInFTQDiscards; + u32 stat_IfInMBUFDiscards; + u32 stat_IfInRuleCheckerP4Hit; + u32 stat_CatchupInRuleCheckerDiscards; + u32 stat_CatchupInFTQDiscards; + u32 stat_CatchupInMBUFDiscards; + u32 stat_CatchupInRuleCheckerP4Hit; + + /* Provides access to certain firmware statistics. */ + u32 com_no_buffers; + + /* Recoverable failure counters. */ + u32 mbuf_alloc_failed_count; + u32 mbuf_frag_count; + u32 unexpected_attention_count; + u32 l2fhdr_error_count; + u32 dma_map_addr_tx_failed_count; + u32 dma_map_addr_rx_failed_count; + + /* Host coalescing block command register */ + u32 hc_command; + + /* Bootcode state */ + u32 bc_state; + +#ifdef BCE_DEBUG + /* Simulated recoverable failure counters. */ + u32 mbuf_alloc_failed_sim_count; + u32 unexpected_attention_sim_count; + u32 l2fhdr_error_sim_count; + u32 dma_map_addr_failed_sim_count; + + /* Track the number of enqueued mbufs. */ + int debug_tx_mbuf_alloc; + int debug_rx_mbuf_alloc; + +#ifdef BCE_JUMBO_HDRSPLIT + int debug_pg_mbuf_alloc; +#endif + + /* Track how many and what type of interrupts are generated. */ + u32 interrupts_generated; + u32 interrupts_handled; + u32 interrupts_rx; + u32 interrupts_tx; + u32 phy_interrupts; + + /* Track interrupt time (25MHz clock). */ + u64 rx_intr_time; + u64 tx_intr_time; + + /* Lowest number of rx_bd's free. */ + u32 rx_low_watermark; + + /* Number of times the RX chain was empty. */ + u32 rx_empty_count; + +#ifdef BCE_JUMBO_HDRSPLIT + /* Lowest number of pages free. */ + u32 pg_low_watermark; + + /* Number of times the page chain was empty. */ + u32 pg_empty_count; +#endif + + /* Greatest number of tx_bd's used. */ + u32 tx_hi_watermark; + + /* Number of times the TX chain was full. */ + u32 tx_full_count; + + /* Number of TSO frames requested. */ + u32 tso_frames_requested; + + /* Number of TSO frames completed. */ + u32 tso_frames_completed; + + /* Number of TSO frames failed. */ + u32 tso_frames_failed; + + /* Number of IP checksum offload frames.*/ + u32 csum_offload_ip; + + /* Number of TCP/UDP checksum offload frames.*/ + u32 csum_offload_tcp_udp; + + /* Number of VLAN tagged frames received. */ + u32 vlan_tagged_frames_rcvd; + + /* Number of VLAN tagged frames stripped. */ + u32 vlan_tagged_frames_stripped; +#endif +}; + +#endif /* __BCEREG_HH_DEFINED */ + |