summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 0b97cea)
raw | patch | inline | side by side (parent: 0b97cea)
author | unknown <a0216664@.dhcp.itg.ti.com> | |
Thu, 23 Sep 2010 17:26:13 +0000 (13:26 -0400) | ||
committer | unknown <a0216664@.dhcp.itg.ti.com> | |
Thu, 23 Sep 2010 17:26:13 +0000 (13:26 -0400) |
clean updates
34 files changed:
index cc437e863f18822a11e5e256ae8d404be5136439..c7d482a89781154d56e6d6ea93323abb193fea00 100644 (file)
ECODIR= $(IBL_ROOT)/device
+# For no target set CSRC to all sources for clean
ifeq ($(TARGET),c6472)
CSRC= c6472.c
-endif
-
-ifeq ($(TARGET),c6455)
- CSRC= c6455.c
+else
+ ifeq ($(TARGET),c6455)
+ CSRC= c6455.c
+ else
+ CSRC= c6472.c c6455.c
+ endif
endif
.PHONY: device
diff --git a/src/driver/nand/nand.c b/src/driver/nand/nand.c
index 5a119b6214b8acfafc693b835170ec95ca431856..90e80167128892c29ad61bb1287457bc3244b906 100644 (file)
--- a/src/driver/nand/nand.c
+++ b/src/driver/nand/nand.c
desiredBlock = desiredPage / nandmcb.devInfo.pagesPerBlock;
desiredPage = desiredPage % nandmcb.devInfo.pagesPerBlock;
+ /* Update the current position */
+ nandmcb.fpos = desiredPos;
+
/* Nothing to do if the current block/page is already loaded */
if ((desiredBlock == nandmcb.currentLogicalBlock) && (desiredPage == nandmcb.currentPage))
return (0);
/* Update the currently loaded block/page info */
nandmcb.currentLogicalBlock = desiredBlock;
nandmcb.currentPage = desiredPage;
- nandmcb.fpos = desiredPos;
return (0);
nand_free_return (NAND_MALLOC_BLOCK_INFO_FAIL);
- /* mdebug - read page 0 */
- nandHwDriverReadPage(0, 0, nandmcb.page);
-
-
- /* Bad blocks are identified by reading page 0 and page 1. If the first two
- * bytes in these pages is not 0xffff then the block is bad */
+ /* Bad blocks are identified by reading page 0 and page 1. If the first
+ * byte in these pages is not 0xff then the block is bad */
nandmcb.numBadBlocks = 0;
for (i = 0; i < nandmcb.devInfo.totalBlocks; i++) {
if (ret < 0)
nand_free_return (ret);
- ret = nandHwDriverReadBytes (i, 0, nandmcb.devInfo.pageSizeBytes, 1, &nandmcb.page[1]);
+ ret = nandHwDriverReadBytes (i, 1, nandmcb.devInfo.pageSizeBytes, 1, &nandmcb.page[1]);
if (ret < 0)
nand_free_return (ret);
/* Convert the global file position to an offset in the currently cached page */
pIdx = nandmcb.fpos % nandmcb.devInfo.pageSizeBytes;
-
for (i = 0; i < num_bytes; i++) {
- ptr_buf[i] = nandmcb.page[pIdx++];
+ ptr_buf[i] = nandmcb.page[pIdx++];
+ nandmcb.fpos += 1;
if (pIdx >= nandmcb.devInfo.pageSizeBytes) {
}
- /* Load the new block */
+ /* Load the new page */
if (nandHwDriverReadPage((Uint32)(nandmcb.logicalToPhysMap[nandmcb.currentLogicalBlock]), nandmcb.currentPage, nandmcb.page) < 0)
return (-2);
* @b Description
* @n
* This function returns how much data is available for immediate read.
- * On nand this always returns -1.
+ * On nand this always returns the page size.
*/
Int32 nand_query (void)
{
- return (-1);
+ return (nandmcb.devInfo.pageSizeBytes);
}
index 011c08a1657d3dff411d5b93f9ed9ea974eab107..37bd3e2bd2430d596ca82e50fa01da1fa680d091 100644 (file)
}
}
}
+
+
+
+/* The number of bytes required for ecc */
+Int32 eccNumBytes(void)
+{
+ return (3);
+
+}
+
+
+/* The number of bytes each ECC covers */
+Int32 eccBytesPerBlock (void)
+{
+ return (256);
+
+}
diff --git a/src/ecc/ecc.h b/src/ecc/ecc.h
index 063d3e0e388c64f7a22f3d2d748839ba1ed8eb3b..70c67391e4734a875ae95bf6a5733f426275e061 100644 (file)
--- a/src/ecc/ecc.h
+++ b/src/ecc/ecc.h
Int32 eccCorrectData(Uint8 *puchData, Uint8 *puchEccRead, Uint8 *puchEccCalc);
Int32 eccComputeECC(const Uint8 *puchData, Uint8 *puchEccCode);
+Int32 eccNumBytes(void);
+Int32 eccBytesPerBlock (void);
index 67ff7f88d0373a3ffd831f9e38a775fe60ca3d45..14b3da920b0405d575b6bff33a41b5a8ef3115d6 100644 (file)
ECODIR= $(IBL_ROOT)/hw
+# If no target specified, set CSRC to all files (used for clean)
ifeq ($(TARGET),c6472)
- CSRC= t64.c cpmacdrv.c pll.c psc.c emif31.c mdio.c gpio.c nandgpio.c i2c.c
+ CSRC= t64.c cpmacdrv.c pll.c psc.c emif31.c mdio.c gpio.c nandgpio.c i2c.c nandwrgpio.c
+else
+ CSRC= t64.c cpmacdrv.c pll.c psc.c emif31.c mdio.c gpio.c nandgpio.c i2c.c nandwrgpio.c
endif
+
.PHONY: hw
index 6f80f53df411bf03ec8a462d0d58a3cc8eb2d1a0..a72ddc366e2ade1b757fa99f06dc122a22ddf2d2 100644 (file)
#include "gpio.h"
#include "ecc.h"
#include "target.h"
+#include "nandgpioloc.h"
/* Pointer to the device configuration */
nandDevInfo_t *hwDevInfo;
if (ret < 0)
return (ret);
- /* Perform ECC on 256 byte blocks. Three bytes of ecc per 512 byte block are used. The last
+ /* Perform ECC on 256 byte blocks. Three bytes of ecc per 256 byte block are used. The last
* 3 bytes are used for the last block, the previous three for the block before that, etc */
nblocks = hwDevInfo->pageSizeBytes >> 8;
index 585b72766ea37aee820e9d1e61af936944c7c441..d9796415276b8ee187295c769479e8ca73188a73 100644 (file)
--- a/src/hw/nands/nandhwapi.h
+++ b/src/hw/nands/nandhwapi.h
#define NAND_ECC_FAILURE -813
+/* Information used only for programming flash */
+typedef struct nandProgramInfo_s
+{
+ uint8 blockEraseCommandPre; /**< The command used to erase a block (sent before the address) */
+ uint8 blockEraseCommandPost; /**< The command used to erase a block (sent after the address) */
+ uint8 blockEraseNaddrBytes; /**< The number of address bytes sent */
+ bool blockErasePost; /**< If TRUE the post command is sent */
+
+ uint8 pageWriteCommandPre; /**< The command used to program a page (sent before the address) */
+ uint8 pageWriteCommandPost; /**< The command used to program a page (sent after the address) */
+ bool pageWritePost; /**< If TRUE the post command is sent */
+
+} nandProgramInfo_t;
+
+
+
+
/* Driver functions */
Int32 nandHwDriverInit (nandDevInfo_t *devInfo);
Int32 nandHwDriverReadBytes (Uint32 block, Uint32 page, Uint32 byte, Uint32 nbytes, Uint8 *data);
Int32 nandHwDriverReadPage(Uint32 block, Uint32 page, Uint8 *data);
Int32 nandHwDriverClose (void);
+Int32 nandHwDriverWritePage (Uint32 block, Uint32 page, Uint8 *data, nandProgramInfo_t *winfo);
+Int32 nandHwDriverBlockErase (Uint32 uiBlockNumber, nandProgramInfo_t *winfo);
diff --git a/src/interp/blob/blob.c b/src/interp/blob/blob.c
index ab95e39c4ce51937e304539a899d6c38f3e8d106..e92636cc07c045157ee4ac6948a8200e535823e2 100644 (file)
--- a/src/interp/blob/blob.c
+++ b/src/interp/blob/blob.c
if (dataSize < 0)
break;
+ if (dataSize > remainSize)
+ dataSize = remainSize;
+
if (dataSize > 0) {
(*bootFxn->read)(datap, dataSize);
index 4d9d9296ec1dac28e8de31c579eacbdeb7d32cad..9243c8b643299171247a7c83f07a38d379f03bf1 100644 (file)
--- a/src/interp/coff/cload.c
+++ b/src/interp/coff/cload.c
return TRUE;
}
+
+
/******************************************************************************/
/* */
/* RELOCATE() - Perform a single relocation by patching the raw data. */
diff --git a/src/make/Makefile b/src/make/Makefile
index 6c5fe5628644c52268eec27fb26c4c860b7b066a..be336eb22d8051400436f2a61ae078552090af4d 100644 (file)
--- a/src/make/Makefile
+++ b/src/make/Makefile
# will need to add a line for each additional ARCH type added
clean:
- make -f makestg2 clean ARCH=c64x
+ make -f makestg2 clean ARCH=c64x
+ make -f makestg2 cleant ARCH=c64x TARGET=c6472
+ make -C ../util/bconvert clean
+ make -C ../util/btoccs clean
+ make -C ../util/i2cConfig clean
+ make -C ../util/nandWriter clean
+ make -C ../util/romparse_c6472 clean
+ make -C ../test/test1 clean
+ make -C ../test/test2 clean
index 08de169e397c14035c1d4a6a675451d6a26c3171..6d1eba2da91d09169ba19768dc5d9b1225251e5f 100644 (file)
# -pds97: shut off no source in file warning
#CFLAGS = -c -k -mi200 -ml3 -o2 -pm -pds1111 -pds827 -pds824 -pds837 -pds1037 -pds195 -pds97 -pden -pdr $(CPUFLAGS)
CFLAGS = -c -k -mi200 -ml3 -ms3 -o2 -pm -pds1111 -pds827 -pds824 -pds837 -pds1037 -pds195 -pds97 -pden -pdr $(CPUFLAGS)
+#CFLAGS = -c -k -mi200 -ml0 -ms3 -o2 -pm -pds1111 -pds827 -pds824 -pds837 -pds1037 -pds195 -pds97 -pden -pdr $(CPUFLAGS)
ifeq ($(ENDIAN),big)
CFLAGS+= -me
# -g : enable debugging
# -ss : interlist C source and optimizer with .asm source
DCFLAGS = -g -as -ss
+#DCFLAGS = -as -ss
#DCFLAGS = -gp
index dd057db578762d71c94027de2f62bc5fbf8ad42d..2d5f68a87382367e43686b5f9ddc242747309897 100644 (file)
-section \r
-{\r
- param_index = 0\r
- boot_mode = 257\r
- sw_pll = 25\r
- options = 1\r
-\r
- core_freq_mhz = 625\r
- i2c_clk_freq_khz = 50\r
-\r
- multi_i2c_id = 0\r
- my_i2c_id = 1\r
- address_delay = 0\r
- exe_file = "ibl_c6472/ibl.i2c.ccs"\r
-}\r
-\r
+section
+{
+ param_index = 0
+ boot_mode = 257
+ sw_pll = 25
+ options = 1
+
+ core_freq_mhz = 625
+ i2c_clk_freq_khz = 50
+
+ multi_i2c_id = 0
+ my_i2c_id = 1
+ address_delay = 0
+ exe_file = "ibl_c6472/ibl.i2c.ccs"
+}
+
index 125dbbdc69716784602fe060c9c8e00c5892fa16..c655b3de7ac8fba1e1e8246384bf05e6f8094996 100644 (file)
-c
-stack 0x800
--heap 0x4800
+-heap 0x6000
{
TEXT : origin = 0x801000, length = 0x10000
STACK : origin = 0x811000, length = 0x0800
- HEAP : origin = 0x811800, length = 0x4800
- DATA : origin = 0x816000, length = 0x3000
- CFG : origin = 0x820000, length = 0x0300
- STAT : origin = 0x820300, length = 0x0200
+ HEAP : origin = 0x811800, length = 0x6000
+ DATA : origin = 0x817800, length = 0x3000
+ CFG : origin = 0x821800, length = 0x0300
+ STAT : origin = 0x821b00, length = 0x0200
}
SECTIONS
diff --git a/src/make/makestg2 b/src/make/makestg2
index 631320cdd87124e1b46e2e1386db381b3ded1f43..2c89626c503e044677f0e57efb03c60e16730ef4 100644 (file)
--- a/src/make/makestg2
+++ b/src/make/makestg2
@echo cleaning $(subst clean_, ,$@)
make -C $(IBL_ROOT)/$(subst clean_,,$@)/$(ARCH)/make clean
+cleant:
+ rm -rf ibl_$(TARGET)/ibl_$(TARGET).out
+ rm -rf ibl_$(TARGET)/ibl_$(TARGET).map
+ rm -rf ibl_$(TARGET)/ibl_le.b
+ rm -rf ibl_$(TARGET)/ibl.b
+ rm -rf ibl_$(TARGET)/ibl.i2c.b
+ rm -rf ibl_$(TARGET)/ibl.i2c.ccs
+ rm -rf ibl_$(TARGET)/i2crom.ccs
+
diff --git a/src/mkdeppath.bat b/src/mkdeppath.bat
index 05cbf023dd36d7913e758b2f43be3f8a2d0c54b8..d2ed0411507fcb006832b0139bfcd3726f66494c 100644 (file)
--- a/src/mkdeppath.bat
+++ b/src/mkdeppath.bat
-set MAKEDEPPATH=/ibl_0_5/ibl_0.5/src/make/makedep/makedep.exe
+set MAKEDEPPATH=/data/projects/ibl/git/ibl/src/make/makedep/makedep.exe
index ca15023fe204f01fe3935f95712590bdcc08724c..5c5ec8265a91c739afad016b177e5ff08952a9b8 100644 (file)
--- a/src/test/test1/makefile
+++ b/src/test/test1/makefile
cl6x -g -c -mv 6400+ test1.c
+clean:
+ rm -f test1.btbl.bin test1.btbl.ccs test1.btbl test1.out test1.obj
diff --git a/src/test/test1/test1.btbl b/src/test/test1/test1.btbl
+++ /dev/null
@@ -1,51 +0,0 @@
-\ 2
-$A0400,
-00 84 02 E0 00 00 03 C0 00 84 00 00 00 13 EA 59 86 77 35 77 C0 00 11 11
-B5 D6 20 46 46 46 85 77 D0 28 36 64 81 FF FF A8 E3 40 01 48 81 FF FF E8
-80 0F EA 58 06 60 A3 58 60 46 AB BA 00 00 34 10 02 28 02 64 02 28 90 5A
-E1 00 80 40 C1 C6 65 C6 01 82 01 62 01 AD 40 78 01 8D 60 58 01 8D 8F 78
-05 0C 80 58 00 28 20 64 E0 30 00 00 CF FF FC 91 C2 28 02 64 C0 00 2C 10
-C2 28 90 5A 01 80 0F D8 C5 8C 0F D8 C3 0C 0F D8 01 FF FF A8 01 FF FF E8
-00 0F EA 58 20 46 48 2A D0 0C 02 64 95 0C 1F DA 80 04 A3 58 90 00 1F DB
-E0 80 80 30 8C 6E 04 3A 6C 6E 00 6F 01 83 01 62 00 28 32 E6 01 2B 6C 6E
-20 00 03 62 0C 6E 6C 6E EA 60 90 00 05 3C 33 E5 01 B4 1F DA 00 0C 03 63
-06 3C 33 E4 05 3C 52 E6 00 00 60 00 00 00 00 00 00 00 00 00 01 8A 4C 29
-05 BC 54 F4 01 80 42 68 01 8C 02 64 02 FC A3 5A 02 7F FF AA 02 7F FF EA
-02 94 8A 7A 01 8C 0A 58 05 3C 22 F4 06 EB B5 A9 21 8A 4E 28 30 10 03 63
-21 80 42 68 21 8C 02 64 E0 80 80 20 2C 6E 46 46 01 82 01 62 01 8A 4E 28
-01 80 42 68 01 8C 02 64 0C 6E 4C 6E 00 0C 13 62 E4 20 00 00 01 81 81 62
-02 0A 4A 2A 02 00 42 6A 85 06 10 0D 04 BB 4C 6E 20 00 03 62 00 00 60 00
-E3 00 80 00 01 81 01 62 01 8A 48 28 01 80 42 68 00 0C 02 64 04 BA 6C 6E
-C0 00 13 62 00 00 60 00 E2 00 80 00 01 81 01 62 01 8A 50 28 01 80 42 68
-01 8C 02 64 00 0C 13 62 01 86 81 62 10 00 44 12 E0 10 00 00 00 00 A1 20
-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 18 29 F1 00 98 47 A1 04 04 A3 58 C1 90 36 A5 C4 00 01 29
-04 90 1F D8 82 90 56 A7 84 A5 0A 25 00 18 79 A3 01 18 87 A0 A8 10 37 B5
-14 4E A2 56 00 84 A3 5A 23 90 37 A5 20 03 E1 A3 E1 00 00 C0 01 00 68 DA
-60 0C 03 63 28 90 37 A7 20 03 E0 5A C1 94 36 35 C0 80 40 43 D8 6F 52 C7
-E8 00 10 00 82 94 56 37 84 88 2A B4 A8 14 37 55 00 20 0F D8 C3 94 37 75
-C0 03 E1 A0 00 83 80 01 C8 94 37 76 03 90 37 A4 00 00 40 00 00 00 00 00
-00 03 40 01 03 94 37 74 00 8C A3 62 00 00 00 00 00 00 00 00 07 BF 00 5A
-02 04 A3 5A 05 10 03 A2 00 00 00 00 02 28 03 E2 2C 6E BC 45 02 89 80 2A
-E4 00 00 00 02 80 42 6A 2C 6E 10 C5 00 22 A1 20 01 89 00 28 01 80 42 68
-01 8C 02 64 4C 6E 86 C1 E8 40 00 00 2C 6E 00 35 00 1A A1 20 01 89 02 28
-01 80 42 68 01 8C 02 64 02 14 3E C2 00 35 4C 6E E8 20 00 00 A2 8A 2C 6E
-6C 6E BC 4D 00 10 2F 5A 28 27 99 BB 4F F4 A1 20 00 0A A1 20 00 00 00 00
-E1 60 80 00 07 88 FE 2A 07 80 42 6A 07 BF 09 F2 07 0A 52 2A 07 00 42 6A
-02 00 00 2A 02 00 42 6A 00 10 03 62 02 10 00 28 01 83 41 62 02 00 42 68
-01 81 A0 28 01 80 42 68 00 00 00 00 00 0C 13 62 01 88 81 62 02 00 70 2A
-02 00 42 6A 00 10 03 62 01 85 61 62 02 04 A3 58 00 05 A1 20 00 00 00 00
-00 00 00 00 02 FF FF A8 02 FF FF E9 02 81 30 2A 02 80 42 6B 96 E9 FE 27
-02 EF 62 C6 32 0C 02 65 E6 00 06 00 02 00 A3 58 01 80 A3 58 31 94 80 58
-00 00 00 00 02 0C 1F DA 00 00 00 00 00 00 00 00 00 00 00 00 00 8C A3 62
-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 01 A1 20 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 08 00 84 12 00 11 11 11 11 22 22 22 22
-00 00 00 74 00 84 20 00 00 00 00 04 00 84 14 90 00 00 00 00 00 00 00 00
-00 00 00 04 00 84 14 94 00 00 00 00 00 00 00 00 00 00 00 04 00 84 14 98
-00 00 00 01 00 00 00 00 00 00 00 04 00 84 14 9C 00 84 03 80 00 00 00 00
-00 00 00 04 00 84 14 A0 00 84 03 80 00 00 00 00 00 00 00 04 00 84 14 A4
-12 34 56 78 00 00 00 00 00 00 00 04 00 84 14 A8 AB CD 12 34 00 00 00 00
-00 00 00 00 00 00 00 00
-\ 3
\ No newline at end of file
diff --git a/src/test/test1/test1.btbl.bin b/src/test/test1/test1.btbl.bin
deleted file mode 100644 (file)
index 3a58770..0000000
Binary files a/src/test/test1/test1.btbl.bin and /dev/null differ
index 3a58770..0000000
Binary files a/src/test/test1/test1.btbl.bin and /dev/null differ
index 9691952ce0b82b80620b2bc4e278b691095ae01e..49ee8bbd600dccf3558a4b799f8eea61a45cce38 100644 (file)
--- a/src/test/test2/makefile
+++ b/src/test/test2/makefile
make -f makestage2 test2 ENDIAN=little
-
+clean:
+ make -f makestage2 clean
index 2338dff6a336e997e20b4401d85e80ad0853ad68..fd4364e66349268f526ce3dbc34dcde2bd1b86be 100644 (file)
.PHONY: test2
-test2: gen_cdefdep test2_$(ENDIAN).blob
+test2: gen_cdefdep utils test2_$(ENDIAN).blob
ifeq ($(ENDIAN),little)
LIB= $(TOOLSC6X)/cgtools/lib/rts64plus.lib
test2_$(ENDIAN).blob: test2_$(ENDIAN).bccs
- ..\util\ccs2bin $< $@
+ ..\..\util\btoccs\ccs2bin $< $@
test2_$(ENDIAN).bccs: test2_$(ENDIAN).b
- ..\util\b2ccs $< $@
+ ..\..\util\btoccs\b2ccs $< $@
test2_$(ENDIAN).b: test2_$(ENDIAN).out test2.rmd
hex6x $< test2.rmd
test2.obj: test2.c cdefdep
$(CC) $(CFLAGS) $<
-test2ini.obj: test2ini.s
+test2ini.obj: test2ini.s cdefdep
$(CC) $(CFLAGS) $<
gen_cdefdep:
@sh -c 'if diff -q cdefdep.tmp cdefdep ; then echo same ; else cp cdefdep.tmp cdefdep ; fi '
-
+utils:
+ make -C ../../util/btoccs
+
+
+clean:
+ rm -rf test2_little.blob test2_big.blob
+ rm -rf test2_little.bccs test2_big.bccs
+ rm -rf test2_little.b test2_big.b
+ rm -rf test2_little.out test2_big.out
+ rm -rf c0.obj
+ rm -rf test2.obj
+ rm -rf test2ini.obj
+ rm -rf test2im.hex
+ rm -rf test2.map
diff --git a/src/test/test2/test.blob b/src/test/test2/test.blob
deleted file mode 100644 (file)
index bd1d1d1..0000000
Binary files a/src/test/test2/test.blob and /dev/null differ
index bd1d1d1..0000000
Binary files a/src/test/test2/test.blob and /dev/null differ
diff --git a/src/test/test2/test2_little.bccs b/src/test/test2/test2_little.bccs
+++ /dev/null
@@ -1,1441 +0,0 @@
-1651 1 10000 1 5a0
-0x00c8a120
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x0013ea59
-0x86773577
-0xc0001111
-0xb5d62046
-0x46468577
-0xd0283664
-0x81ffffa8
-0xe3400148
-0x81ffffe8
-0x800fea58
-0x0660a358
-0x6046abba
-0x00003410
-0x02280264
-0x0228905a
-0xe1008040
-0xc1c665c6
-0x01820162
-0x01ad4078
-0x018d6058
-0x018d8f78
-0x050c8058
-0x00282064
-0xe0300000
-0xcffffc91
-0xc2280264
-0xc0002c10
-0xc228905a
-0x01800fd8
-0xc58c0fd8
-0xc30c0fd8
-0x01ffffa8
-0x01ffffe8
-0x000fea58
-0x2046482a
-0xd00c0264
-0x950c1fda
-0x8004a358
-0x90001fdb
-0xe0808030
-0x8c6e043a
-0x6c6e006f
-0x01830162
-0x002832e6
-0x012b6c6e
-0x20000362
-0x0c6e6c6e
-0xea609000
-0x053c33e5
-0x01b41fda
-0x000c0363
-0x063c33e4
-0x053c52e6
-0x00006000
-0x00000000
-0x00000000
-0x01820429
-0x05bc54f4
-0x018010e8
-0x018c0264
-0x02fca35a
-0x027fffaa
-0x027fffea
-0x02948a7a
-0x018c0a58
-0x053c22f4
-0x06ebb5a9
-0x21820628
-0x30100363
-0x218010e8
-0x218c0264
-0xe0808020
-0x2c6e4646
-0x01820162
-0x01820628
-0x018010e8
-0x018c0264
-0x0c6e4c6e
-0x000c1362
-0xe4200000
-0x01818162
-0x0202022a
-0x020010ea
-0x8506100d
-0x04bb4c6e
-0x20000362
-0x00006000
-0xe3008000
-0x01810162
-0x01820028
-0x018010e8
-0x000c0264
-0x04ba6c6e
-0xc0001362
-0x00006000
-0xe2008000
-0x01810162
-0x01820828
-0x018010e8
-0x018c0264
-0x000c1362
-0x01868162
-0x10004412
-0xe0100000
-0x0000a120
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x001829f1
-0x009847a1
-0x0404a358
-0xc19036a5
-0xc4000129
-0x04901fd8
-0x829056a7
-0x84a50a25
-0x001879a3
-0x011887a0
-0xa81037b5
-0x144ea256
-0x0084a35a
-0x239037a5
-0x2003e1a3
-0xe10000c0
-0x010068da
-0x600c0363
-0x289037a7
-0x2003e05a
-0xc1943635
-0xc0804043
-0xd86f52c7
-0xe8001000
-0x82945637
-0x84882ab4
-0xa8143755
-0x00200fd8
-0xc3943775
-0xc003e1a0
-0x00838001
-0xc8943776
-0x039037a4
-0x00004000
-0x00000000
-0x00034001
-0x03943774
-0x008ca362
-0x00000000
-0x00000000
-0x07bf005a
-0x0200a35a
-0x0200007e
-0xbc452c6e
-0x00002000
-0x01820c28
-0x018010e8
-0xe1000000
-0x018c0264
-0x9d896c6e
-0x3028a120
-0x0302802a
-0x0370006b
-0x0200006f
-0xb55da247
-0xe8400000
-0xa2416c6e
-0x0200007e
-0xbc4d2c6e
-0x26416c6e
-0x2c6ebc45
-0x01820c28
-0x018010e8
-0xe3a00000
-0x018c0264
-0x00006000
-0x001078f8
-0xcff3a120
-0x0004a120
-0x00000000
-0x00000000
-0x00000000
-0x0781fe2a
-0x078010ea
-0x07bf09f2
-0x07020a2a
-0x070010ea
-0x0200202a
-0x0270006a
-0x00100362
-0x020b0028
-0x01834162
-0x02700068
-0x0181c028
-0x01f00068
-0x00000000
-0x000c1362
-0x01888162
-0x0200902a
-0x0270006a
-0x00100362
-0x01856162
-0x0204a358
-0x0005a120
-0x00000000
-0x00000000
-0x02ffffa8
-0x02ffffe9
-0x0281502a
-0x02f0006b
-0x96e9fe27
-0x02ef62c6
-0x320c0265
-0xe6000600
-0x0200a358
-0x0180a358
-0x31948058
-0x00000000
-0x020c1fda
-0x00000000
-0x00000000
-0x00000000
-0x008ca362
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x0001a120
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x7efeb0e7
-0xe4ff9b3d
-0xdffb7483
-0xbefbae39
-0xbffed5df
-0x33fff4f5
-0x2f9ef0fb
-0x459feb71
-0xdfffa1d7
-0xfbdecdad
-0x7bf28473
-0xbf7797a9
-0x756ef4cf
-0x7f5d0565
-0x66ba0eeb
-0x6f5992e1
-0x5e56aec7
-0x7eff7c1d
-0xff977063
-0x7df8bd19
-0x7bdeafbf
-0x36af11d5
-0xffee88db
-0x3f7bf651
-0xffb6d7b7
-0xcbbca68d
-0x70e33853
-0x7ff61e89
-0xfedf06af
-0x5fbd1a45
-0x759f5ecb
-0x6fbe15c1
-0x61671ca7
-0x5f5d4cfd
-0x3ffadc43
-0x76e6bbf9
-0x37fef99f
-0xfeee1eb5
-0x796b90bb
-0xfbdef131
-0xdf567d97
-0xbff46f6d
-0xf7fb5c33
-0xfff19569
-0xfbef888f
-0xffdd1f25
-0xbdfe1eab
-0x7bcd88a1
-0x7ffffa87
-0xffbd0ddd
-0x6fd3b823
-0x6fbdaad9
-0x1e9fb37f
-0x6ffd1b95
-0x5cae089b
-0x5fb8dc11
-0x7ff69377
-0x3ffe284d
-0xef32f013
-0x7f71fc49
-0xff5e7a6f
-0x3bfd1405
-0x7e7e4e8b
-0xff7feb81
-0xfe3f4867
-0x6e16bebd
-0xffba0403
-0xfff589b9
-0x7ffedd5f
-0x67fc0875
-0x70bbf07b
-0x4ff9b6f1
-0xcedf1957
-0x7e5dd12d
-0xff63f3f3
-0x5abf5329
-0x7fbfdc4f
-0x5fdcf8e5
-0xffbfee6b
-0x5dcd3e61
-0x6db70647
-0x7f7e5f9d
-0xbd9fbfe3
-0x3de65899
-0xbf7e773f
-0x3d3ee555
-0xbbeb485b
-0xfdf981d1
-0x34760f37
-0x6cff6a0d
-0x6de267d3
-0xbff19a09
-0xcebfae2f
-0xef3ccdc5
-0xffbafe4b
-0x7c2d8141
-0x4ee73427
-0x57d7f07d
-0xfb72ebc3
-0xfde81779
-0x1cfe811f
-0xbd6db235
-0x37de103b
-0x17f83cb1
-0xf5bf7517
-0x4d5ef2ed
-0xd7664bb3
-0xf7f0d0e9
-0x7deff00f
-0xfc9c92a5
-0xefff7e2b
-0x57d8b421
-0xf4ffd207
-0xffff715d
-0xeefb87a3
-0xdaf2c659
-0xe69efaff
-0xe4cc6f15
-0xe6ae481b
-0x1fbde791
-0xfff74af7
-0x5ff46bcd
-0x9fab9f93
-0xefd4f7c9
-0xfeeea1ef
-0xf6fc4785
-0x7dff6e0b
-0x7dfed701
-0x7dbedfe7
-0xeff4e23d
-0x7e7b9383
-0xff7e6539
-0xffffe4df
-0xbf7f1bf5
-0xbffbeffb
-0xdeda8271
-0x6cf790d7
-0x7df7d4ad
-0x73ea6373
-0x97760ea9
-0xee7fc3cf
-0xfb7fec65
-0x9fbacdeb
-0x77efe9e1
-0x53565dc7
-0xfff4431d
-0xfbd30f63
-0xe762f419
-0xbeff3ebf
-0x19cdb8d5
-0xcbef07db
-0x77fe0d51
-0xeffe46b7
-0x1ffd2d8d
-0xdb569753
-0xed9c1589
-0x1d8f55af
-0xffbf8145
-0x7aff9dcb
-0x7bebecc1
-0xfee64ba7
-0x4a7593fd
-0x69f3fb43
-0x95f872f9
-0x72bf089f
-0x7dec45b5
-0x1e5f8fbb
-0x5dd88831
-0x5b976c97
-0x7ea4766d
-0xffaa3b33
-0xfeff0c69
-0x77ef578f
-0x4a9f0625
-0x13ffddab
-0xbd1adfa1
-0x75c6a987
-0xadfcd4dd
-0x7cd65723
-0xfe76e1d9
-0x77bf427f
-0x7b4ec295
-0x7fff879b
-0x3779f311
-0xff770277
-0x7ee5af4d
-0x6a9b4f13
-0xf576f349
-0x556fc96f
-0xde7e7b05
-0x3f7b8d8b
-0xfe7cc281
-0x5f277767
-0x7f5e05bd
-0x3ff62303
-0x1b9640b9
-0x3effec5f
-0xf7fd2f75
-0x4b3eef7b
-0xb59a4df1
-0xdfd70857
-0x7f6cd82d
-0xfb67d2f3
-0x2ffbca29
-0xc1aeab4f
-0x37dddfe5
-0x5efead6b
-0xeac99561
-0x7bc6b547
-0x37f5269d
-0x7fdb5ee3
-0xdcee8f99
-0xf67f063f
-0x6b4f8c55
-0xd6fbc75b
-0xeff998d1
-0xff3f7e37
-0xaffdf10d
-0xefffc6d3
-0x2a359109
-0xbf3ffd2f
-0x6f3d34c5
-0xffbf3d4b
-0x73395841
-0x9ff66327
-0x5bde377d
-0xeffa0ac3
-0x3f57ce79
-0xf7be901f
-0xff7dd935
-0xddee0f3b
-0xe7ffd3b1
-0x4cf66417
-0xd64cf9ed
-0xf9e32ab3
-0xeb7c47e9
-0xeeffbf0f
-0x5fdc79a5
-0x5dff3d2b
-0x7ffc0b21
-0xfb568107
-0x47fd385d
-0xedfa26a3
-0x5de9fd59
-0x2dfe89ff
-0xf3dc1615
-0xffabc71b
-0x7bbcfe91
-0xf5f7b9f7
-0xec75f2cd
-0x7783fe93
-0x7fd7eec9
-0x19cff0ef
-0xbfffae85
-0x7fdaad0b
-0x7ff9ae01
-0xdcb70ee7
-0xead6293d
-0x5777b283
-0x7e3d1c39
-0xfbfef3df
-0xf8ee42f5
-0x5caaeefb
-0x6bd91971
-0x7f777fd7
-0x30c4dbad
-0x6ffa4273
-0xeff085a9
-0xff2e92cf
-0xc47ed365
-0xfe3b8ceb
-0xef4a40e1
-0x7f760cc7
-0x4bf50a1d
-0x75faae63
-0xde692b19
-0x27ffcdbf
-0xfedc5fd5
-0xf7eb86db
-0x7ffc2451
-0x74b7b5b7
-0x5ffdb48d
-0x1fe3f653
-0x5bfe0c89
-0x7dcfa4af
-0xa9bde845
-0x3bbfdccb
-0x7dadc3c1
-0x57677aa7
-0x7ff5dafd
-0x97f71a43
-0xeec629f9
-0xef3f179f
-0xbdfe6cb5
-0xbf5f8ebb
-0xeffe1f31
-0x77de5b97
-0x35d47d6d
-0xcff31a33
-0xe1f88369
-0x69ff268f
-0x2d5ced25
-0x7efb9cab
-0xff1c36a1
-0xfbe75887
-0x6fbc9bdd
-0xeff6f623
-0xaf6c18d9
-0xe3ded17f
-0x5ddc6995
-0xbebb069b
-0x7aff0a11
-0xa77f7177
-0xe7e5364d
-0xeddfae13
-0x7c57ea49
-0x2f4f186f
-0x697fe205
-0xfffecc8b
-0xa9ed9981
-0xfaefa667
-0x7efd4cbd
-0x7bf24203
-0x75f2f7b9
-0x17fefb5f
-0x6fee5675
-0xf61fee7b
-0x77fee4f1
-0x58d6f757
-0x03ffdf2d
-0xeee7b1f3
-0xfef44129
-0x7cbf7a4f
-0x55dec6e5
-0xafbb6c6b
-0xf7f9ec61
-0x63ee6447
-0xa6ffed9d
-0x72defde3
-0x73f2c699
-0x7f7f953f
-0xef6c3355
-0xf3fe465b
-0xdffdafd1
-0xba3eed37
-0xfebc780d
-0x43fb25d3
-0xd7b58809
-0xff4e4c2f
-0xf23d9bc5
-0xa91f7c4b
-0xfeb92f41
-0x5fff9227
-0x5efc7e7d
-0x217b29c3
-0x7b438579
-0xebfe9f1f
-0x63ee0035
-0x6cee0e3b
-0x7bdb6ab1
-0xdbbf5317
-0xbbbf00ed
-0xeb3a09b3
-0xfff3bee9
-0x7fff8e0f
-0x3fbc60a5
-0xfd7afc2b
-0xeddb6221
-0x56c73007
-0xd77eff5d
-0x52f6c5a3
-0x56fd3459
-0xfbfe18ff
-0xc7efbd15
-0x5f2f461b
-0x47b81591
-0xeef628f7
-0xe36f79cd
-0xe2b65d93
-0xf7f6e5c9
-0x4fff3fef
-0x3eff1585
-0xffdfec0b
-0x5af88501
-0x3fa73de7
-0xedbf703d
-0xdd7fd183
-0x6f37d339
-0x7ffe02df
-0x7b3d69f5
-0xffafedfb
-0xfe9bb071
-0xffd76ed7
-0xf7d5e2ad
-0x7fea2173
-0x7d76fca9
-0x5f7f61cf
-0xf77dba65
-0x7ffe4beb
-0x1d5897e1
-0x6fafbbc7
-0xedfdd11d
-0x4ffe4d63
-0x7d6b6219
-0xf7de5cbf
-0xffef06d5
-0xfeee05db
-0x6ffe3b51
-0x1fb724b7
-0xd53e3b8d
-0xb5cb5553
-0xde9c0389
-0x7faff3af
-0x6bbc4f45
-0xf7de1bcb
-0xffbb9ac1
-0xef66a9a7
-0x6ffe21fd
-0xfff63943
-0xfbcfe0f9
-0xd87f269f
-0x3fec93b5
-0x7b4b8dbb
-0x83dfb631
-0xf9374a97
-0xf584846d
-0xc8b7f933
-0xd6fdfa69
-0xedeef58f
-0x573ed425
-0xffff5bab
-0x77d98da1
-0xdfe60787
-0x9efc62dd
-0xff7f9523
-0x7a7d4fd9
-0x6d9e607f
-0xf86e1095
-0xf5aa859b
-0x6d382111
-0x73f7e077
-0x4efcbd4d
-0x77020d13
-0xdfd4e149
-0x7e5e676f
-0x6efd4905
-0xddfa0b8b
-0x7fea7081
-0x65efd567
-0x7f3493bd
-0xbdf66103
-0x7b8baeb9
-0xf2fe0a5f
-0x8caf7d75
-0x5f5aed7b
-0xef9f7bf1
-0x73fee657
-0xef46e62d
-0xe7e390f3
-0xfdb8b829
-0x3fbe494f
-0x7fdfade5
-0x03fe2b6b
-0x7ede4361
-0x7eb61347
-0x577eb49d
-0xffd29ce3
-0x7ff2fd99
-0xfb7e243f
-0xd96cda55
-0x5feac55b
-0xf9fdc6d1
-0xa73e5c37
-0x7fb6ff0d
-0xffd284d3
-0x5e717f09
-0x1dfe9b2f
-0xdd3e02c5
-0x7fdbbb4b
-0xcf3d0641
-0xf7eec127
-0x5ff6c57d
-0x5d7648c3
-0xbd6b3c79
-0xfdfeae1f
-0xc77e2735
-0x27fe0d3b
-0xed5b01b1
-0xf7be4217
-0x5ea507ed
-0xe66ae8b3
-0xfff735e9
-0x2b6f5d0f
-0x79fc47a5
-0xff7abb2b
-0xfbfeb921
-0x3d4fdf07
-0x4974c65d
-0xffdf64a3
-0xfbac6b59
-0x3b7fa7ff
-0x7def6415
-0x37eac51b
-0x7fbf2c91
-0x7ff697f7
-0x37ed00cd
-0xffc2bc93
-0x56f1dcc9
-0x6fde8eef
-0xdffe7c85
-0xfafb2b0b
-0xddeb5c01
-0xbeb76ce7
-0xfbbcb73d
-0xef73f083
-0x9a6e8a39
-0x6a7f11df
-0xbfac90f5
-0xde9aecfb
-0xb7fa4771
-0x1fff5dd7
-0xe6dee9ad
-0x7ef20073
-0x6f3973a9
-0xff6e30cf
-0x0b7ca165
-0xbefb0aeb
-0x725aeee1
-0x74ff6ac7
-0x4df6981d
-0xebdbec63
-0x1fe99919
-0xfddeebbf
-0xeefdadd5
-0x5bfa84db
-0x7b7c5251
-0xfaf693b7
-0xdf36c28d
-0xfdd2b453
-0x45f5fa89
-0xbeae42af
-0xf7beb645
-0xf3da5acb
-0xb7fd71c1
-0x6df7d8a7
-0x55d668fd
-0xfdff5843
-0x6ed597f9
-0xcfff359f
-0x7eeebab5
-0xdf4b8cbb
-0x7ffd4d31
-0xfcb63997
-0xf7ac8b6d
-0xdbf6d833
-0xc7ff7169
-0x77fec48f
-0x77fcbb25
-0x77fb1aab
-0xed4ae4a1
-0xd6feb687
-0x29b429dd
-0x59563423
-0x0fea86d9
-0xfeffef7f
-0xdbffb795
-0xf5ae049b
-0x653d3811
-0x3dfe4f77
-0x67f4444d
-0xfbfe6c13
-0xfe7dd849
-0xed7fb66f
-0xbffeb005
-0xbb7b4a8b
-0x77fb4781
-0xf82e0467
-0x7fdfdabd
-0xfbba8003
-0xdbe065b9
-0xdfff195f
-0xefbca475
-0xdcefec7b
-0x5adc12f1
-0xffd6d557
-0xbbcded2d
-0xf27b6ff3
-0xfcb92f29
-0xd6ff184f
-0xbfdc94e5
-0x5bfaea6b
-0xddce9a61
-0x7997c247
-0xcbf57b9d
-0xff9e3be3
-0xdfef3499
-0x3bfeb33f
-0xf57d8155
-0x2fef445b
-0x1cf9ddd1
-0x707fcb37
-0x7aed860d
-0x7fc7e3d3
-0x7f597609
-0x3a4eea2f
-0x7d3e69c5
-0x7ffbfa4b
-0xdc3cdd41
-0x77eff027
-0x73fd0c7d
-0xff7f67c3
-0xf9cef379
-0xbcfebd1f
-0x2aee4e35
-0xa2ee0c3b
-0x5f5e98b1
-0x7fbf3117
-0x590f0eed
-0xfd7bc7b3
-0xdd76ace9
-0xffff2c0f
-0xdfbc2ea5
-0x7e7e7a2b
-0x5ece1021
-0x3cf68e07
-0xcffe8d5d
-0xfff603a3
-0x7fb7a259
-0x6fbf36ff
-0x4eff0b15
-0x4eee441b
-0x6bba4391
-0x77ff06f7
-0x6d7e87cd
-0x7caf1b93
-0xb7f8d3c9
-0xffcfddef
-0xa1fde385
-0xfdda6a0b
-0xfefa3301
-0x35e79be7
-0xff9dfe3d
-0x0e360f83
-0xf7e14139
-0x7bfe20df
-0x3d2fb7f5
-0x3ddfebfb
-0x3d3cde71
-0x7ed74cd7
-0x69dff0ad
-0x7ff7df73
-0x7e37eaa9
-0x9eeeffcf
-0x7d7f8865
-0x5d7fc9eb
-0xefe945e1
-0x7f6f19c7
-0xebff5f1d
-0xbf978b63
-0xbf63d019
-0x6eff7abf
-0xa5fc54d5
-0x3eeb03db
-0x8e7e6951
-0xbfbe02b7
-0x7a67498d
-0x7ff21353
-0xf49bf189
-0xc7ce91af
-0xffbd1d45
-0xad9e99cb
-0xf5fb48c1
-0xffef07a7
-0x57deaffd
-0x7df67743
-0x75d74ef9
-0xbe3f449f
-0xd9fce1b5
-0x755f8bbb
-0xefdee431
-0x5f5f2897
-0x7acc926d
-0xbef3b733
-0xbefce869
-0x6bee938f
-0xbfbea225
-0x7ffed9ab
-0xf9883ba1
-0xb3f76587
-0x8df7f0dd
-0x1d7ad323
-0xfbb3bdd9
-0x3bff7e7f
-0xff7d5e95
-0xfbfb839b
-0x7bfe4f11
-0x1d7ebe77
-0xdee7cb4d
-0x76d6cb13
-0x7952cf49
-0xb5ff056f
-0x537c1705
-0xd7da898b
-0x3e681e81
-0x7b663367
-0x7dff21bd
-0x3ff69f03
-0xeef11cb9
-0xf8fe285f
-0x5bfdcb75
-0x7feaeb7b
-0xeffca9f1
-0xfdfec457
-0x5bd4f42d
-0xfdef4ef3
-0xd7b5a629
-0x7defe74f
-0xbfdd7be5
-0xf7bba96b
-0xedeaf161
-0xed8f7147
-0x5f74429d
-0x6757dae3
-0xffe76b99
-0x9f5f423f
-0xd77e2855
-0x7a6bc35b
-0x37f9f4d1
-0x1bb73a37
-0xfbe40d0d
-0xb7d742d3
-0xef9d6d09
-0x5b2f392f
-0xff3ed0c5
-0x5b7a394b
-0x6f38b441
-0xfdef1f27
-0x7dff537d
-0xf27686c3
-0xfb6eaa79
-0xaffecc1f
-0xeb6e7535
-0x7dee0b3b
-0xfb5e2fb1
-0x6efe2017
-0xfced15ed
-0xfe66a6b3
-0xb5f223e9
-0x7dfefb0f
-0xe7fc15a5
-0xfffe392b
-0xb5e96721
-0x37ff3d07
-0x4efc545d
-0x7bd6a2a3
-0x3dfed959
-0xdd7ec5ff
-0x3ffeb215
-0x6f7bc31b
-0x7fb95a91
-0xfff775f7
-0xecf40ecd
-0xfbf37a93
-0x3afbcac9
-0xf7df2cef
-0x77fd4a85
-0x7cffa90b
-0xdbfd0a01
-0xfcafcae7
-0xf7ff453d
-0x79f22e83
-0xeb8ff839
-0x7f7f2fdf
-0xb66edef5
-0xdefeeafb
-0xf71b7571
-0xff573bd7
-0x7ee4f7ad
-0x5ffbbe73
-0x71b261a9
-0x732fcecf
-0x767e6f65
-0x757e88eb
-0x77eb9ce1
-0xbefec8c7
-0x5efc261d
-0x7dbf2a63
-0x667a0719
-0xd7fe09bf
-0x9afefbd5
-0x6fff82db
-0xa17c8051
-0x81ff71b7
-0x7f37d08d
-0xf36f7253
-0x37dde889
-0xf2fee0af
-0x3dbf8445
-0xb7bad8cb
-0x79ad1fc1
-0xa7fe36a7
-0x575ef6fd
-0x6ffb9643
-0xd7d505f9
-0xdf3f539f
-0x3fff08b5
-0x7f5f8abb
-0x7ffc7b31
-0xd61e1797
-0x7fec996d
-0xb9ae9633
-0xeff65f69
-0xeffe628f
-0xb95c8925
-0xdafa98ab
-0x6b7992a1
-0xbece1487
-0x1ff7b7dd
-0xdfd77223
-0x7378f4d9
-0x9e9f0d7f
-0xebff0595
-0xfeff029b
-0x867b6611
-0xdb7f2d77
-0xedf7524d
-0xb58b2a13
-0xfd73c649
-0xffde546f
-0xff7d7e05
-0x7fdbc88b
-0xefe8f581
-0x5fbe6267
-0x7e9e68bd
-0x7ef2be03
-0x57bdd3b9
-0xb3ff375f
-0xb5fef275
-0x173bea7b
-0xa4b940f1
-0x5efeb357
-0x3f4ffb2d
-0xfcff2df3
-0xcfbe1d29
-0x3abeb64f
-0xedde62e5
-0x15be686b
-0x3fcb4861
-0xbfaf2047
-0x9377099d
-0x1fdf79e3
-0x3ffba299
-0x69dfd13f
-0x7f7ecf55
-0x7ffe425b
-0x2efe0bd1
-0xe736a937
-0xffee940d
-0x6fc2a1d3
-0x75fd6409
-0xffaf882f
-0x7e3f37c5
-0xfd5a784b
-0x5eb88b41
-0x7fee4e27
-0x7efd9a7d
-0x1f77a5c3
-0x3f4a6179
-0x8ebedb1f
-0xefee9c35
-0xd9de0a3b
-0xcf59c6b1
-0xf7bf0f17
-0x9f4f1ced
-0xff2b85b3
-0xa7799ae9
-0x73eeca0f
-0xfe9ffca5
-0x58fff82b
-0xf6b8be21
-0x77dfec07
-0xd93e1b5d
-0x3cd341a3
-0xeda21059
-0x65de54ff
-0x3ffe5915
-0xfc2b421b
-0xeffc7191
-0xfdf7e4f7
-0xeffd95cd
-0x7f97d993
-0xdffac1c9
-0xf9fe7bef
-0xcffcb185
-0x5bdee80b
-0x57ebe101
-0x7feff9e7
-0xffdc8c3d
-0x7e3a4d83
-0x7b7aaf39
-0x29fe3edf
-0xe7ee05f5
-0x5ffbe9fb
-0x4ade0c71
-0xfa572ad7
-0xefddfead
-0x7df79d73
-0x5438d8a9
-0xeeee9dcf
-0x7f7d5665
-0xbfbf47eb
-0x6be9f3e1
-0xbfa677c7
-0xd5fced1d
-0xfbb2c963
-0x19ec3e19
-0x7ffe98bf
-0x6bfda2d5
-0x6bfe01db
-0xb47e9751
-0x5ff6e0b7
-0xe1a4578d
-0x7d4ad153
-0x9afbdf89
-0x1bcf2faf
-0xffbdeb45
-0x7fbf17cb
-0x7faaf6c1
-0x7f6765a7
-0x5b573dfd
-0xfbfab543
-0xe7cebcf9
-0x8ebf629f
-0xfffd2fb5
-0xff6b89bb
-0xffde1231
-0xffdf0697
-0x298ca06d
-0xf7e37533
-0xf0fbd669
-0x7efe318f
-0xfc1e7025
-0x35fe57ab
-0x9e1ee9a1
-0xf7f6c387
-0xd6bf7edd
-0xdaf21123
-0x3fba2bd9
-0xffde9c7f
-0x8e7cac95
-0x7bfe819b
-0xbbbc7d11
-0xff779c77
-0x50e6d94d
-0x2e1b8913
-0x5fd0bd49
-0x2fcfa36f
-0xdffee505
-0x3b7f078b
-0xc3edcc81
-0xf92e9167
-0x7bbdafbd
-0xbff6dd03
-0x3ec68ab9
-0x9ffe465f
-0x1ebc1975
-0xefdee97b
-0x7fd9d7f1
-0x8fd6a257
-0xdb4f022d
-0xdf6b0cf3
-0xfff29429
-0xfbbf854f
-0x77df49e5
-0x6fff276b
-0xffef9f61
-0xdedecf47
-0x3b7dd09d
-0xdf3f18e3
-0xfaebd999
-0x757e603f
-0x5d7f7655
-0x79fec15b
-0x3ffe22d1
-0xf3b61837
-0x63fd1b0d
-0xfeca00d3
-0xf5b95b09
-0xf5cfd72f
-0x2b3f9ec5
-0xf89eb74b
-0x5d2c6241
-0xf3e77d27
-0x5bf7e17d
-0x4af2c4c3
-0x7d621879
-0x79feea1f
-0x73eec335
-0x77de093b
-0x38d95db1
-0x3a97fe17
-0x672523ed
-0xffae64b3
-0xba7d11e9
-0xff6e990f
-0xffdfe3a5
-0x77ffb72b
-0x4fbc1521
-0x3fde9b07
-0x7e37e25d
-0xefdbe0a3
-0x7fe14759
-0xbfdfe3ff
-0xfffe0015
-0xff7ac11b
-0xf7bb8891
-0xf7fe53f7
-0x76671ccd
-0xeb963893
-0x3bf5b8c9
-0x1fffcaef
-0x6ffc1885
-0x26fa270b
-0x3c060800
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000004
-0x00210400
-0x00000000
-0x00000000
-0x00000004
-0x00210404
-0x00000000
-0x00000000
-0x00000004
-0x00210408
-0x00000001
-0x00000000
-0x00000004
-0x0021040c
-0xe00003c0
-0x00000000
-0x00000004
-0x00210410
-0xe00003c0
-0x00000000
-0x00000004
-0x00210418
-0x00000400
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
-0x00000000
diff --git a/src/test/test2/test2_little.blob b/src/test/test2/test2_little.blob
deleted file mode 100644 (file)
index 48e08cc..0000000
Binary files a/src/test/test2/test2_little.blob and /dev/null differ
index 48e08cc..0000000
Binary files a/src/test/test2/test2_little.blob and /dev/null differ
diff --git a/src/test/test2/test2im.hex b/src/test/test2/test2im.hex
+++ /dev/null
@@ -1,243 +0,0 @@
-\ 2
-$Ae0000000,
-00 C8 A1 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 13 EA 59 86 77 35 77
-C0 00 11 11 B5 D6 20 46 46 46 85 77 D0 28 36 64 81 FF FF A8 E3 40 01 48
-81 FF FF E8 80 0F EA 58 06 60 A3 58 60 46 AB BA 00 00 34 10 02 28 02 64
-02 28 90 5A E1 00 80 40 C1 C6 65 C6 01 82 01 62 01 AD 40 78 01 8D 60 58
-01 8D 8F 78 05 0C 80 58 00 28 20 64 E0 30 00 00 CF FF FC 91 C2 28 02 64
-C0 00 2C 10 C2 28 90 5A 01 80 0F D8 C5 8C 0F D8 C3 0C 0F D8 01 FF FF A8
-01 FF FF E8 00 0F EA 58 20 46 48 2A D0 0C 02 64 95 0C 1F DA 80 04 A3 58
-90 00 1F DB E0 80 80 30 8C 6E 04 3A 6C 6E 00 6F 01 83 01 62 00 28 32 E6
-01 2B 6C 6E 20 00 03 62 0C 6E 6C 6E EA 60 90 00 05 3C 33 E5 01 B4 1F DA
-00 0C 03 63 06 3C 33 E4 05 3C 52 E6 00 00 60 00 00 00 00 00 00 00 00 00
-01 82 04 29 05 BC 54 F4 01 80 10 E8 01 8C 02 64 02 FC A3 5A 02 7F FF AA
-02 7F FF EA 02 94 8A 7A 01 8C 0A 58 05 3C 22 F4 06 EB B5 A9 21 82 06 28
-30 10 03 63 21 80 10 E8 21 8C 02 64 E0 80 80 20 2C 6E 46 46 01 82 01 62
-01 82 06 28 01 80 10 E8 01 8C 02 64 0C 6E 4C 6E 00 0C 13 62 E4 20 00 00
-01 81 81 62 02 02 02 2A 02 00 10 EA 85 06 10 0D 04 BB 4C 6E 20 00 03 62
-00 00 60 00 E3 00 80 00 01 81 01 62 01 82 00 28 01 80 10 E8 00 0C 02 64
-04 BA 6C 6E C0 00 13 62 00 00 60 00 E2 00 80 00 01 81 01 62 01 82 08 28
-01 80 10 E8 01 8C 02 64 00 0C 13 62 01 86 81 62 10 00 44 12 E0 10 00 00
-00 00 A1 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 18 29 F1 00 98 47 A1 04 04 A3 58 C1 90 36 A5
-C4 00 01 29 04 90 1F D8 82 90 56 A7 84 A5 0A 25 00 18 79 A3 01 18 87 A0
-A8 10 37 B5 14 4E A2 56 00 84 A3 5A 23 90 37 A5 20 03 E1 A3 E1 00 00 C0
-01 00 68 DA 60 0C 03 63 28 90 37 A7 20 03 E0 5A C1 94 36 35 C0 80 40 43
-D8 6F 52 C7 E8 00 10 00 82 94 56 37 84 88 2A B4 A8 14 37 55 00 20 0F D8
-C3 94 37 75 C0 03 E1 A0 00 83 80 01 C8 94 37 76 03 90 37 A4 00 00 40 00
-00 00 00 00 00 03 40 01 03 94 37 74 00 8C A3 62 00 00 00 00 00 00 00 00
-07 BF 00 5A 02 00 A3 5A 02 00 00 7E BC 45 2C 6E 00 00 20 00 01 82 0C 28
-01 80 10 E8 E1 00 00 00 01 8C 02 64 9D 89 6C 6E 30 28 A1 20 03 02 80 2A
-03 70 00 6B 02 00 00 6F B5 5D A2 47 E8 40 00 00 A2 41 6C 6E 02 00 00 7E
-BC 4D 2C 6E 26 41 6C 6E 2C 6E BC 45 01 82 0C 28 01 80 10 E8 E3 A0 00 00
-01 8C 02 64 00 00 60 00 00 10 78 F8 CF F3 A1 20 00 04 A1 20 00 00 00 00
-00 00 00 00 00 00 00 00 07 81 FE 2A 07 80 10 EA 07 BF 09 F2 07 02 0A 2A
-07 00 10 EA 02 00 20 2A 02 70 00 6A 00 10 03 62 02 0B 00 28 01 83 41 62
-02 70 00 68 01 81 C0 28 01 F0 00 68 00 00 00 00 00 0C 13 62 01 88 81 62
-02 00 90 2A 02 70 00 6A 00 10 03 62 01 85 61 62 02 04 A3 58 00 05 A1 20
-00 00 00 00 00 00 00 00 02 FF FF A8 02 FF FF E9 02 81 50 2A 02 F0 00 6B
-96 E9 FE 27 02 EF 62 C6 32 0C 02 65 E6 00 06 00 02 00 A3 58 01 80 A3 58
-31 94 80 58 00 00 00 00 02 0C 1F DA 00 00 00 00 00 00 00 00 00 00 00 00
-00 8C A3 62 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 00 00 00 00 01 A1 20 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 7E FE B0 E7 E4 FF 9B 3D DF FB 74 83 BE FB AE 39
-BF FE D5 DF 33 FF F4 F5 2F 9E F0 FB 45 9F EB 71 DF FF A1 D7 FB DE CD AD
-7B F2 84 73 BF 77 97 A9 75 6E F4 CF 7F 5D 05 65 66 BA 0E EB 6F 59 92 E1
-5E 56 AE C7 7E FF 7C 1D FF 97 70 63 7D F8 BD 19 7B DE AF BF 36 AF 11 D5
-FF EE 88 DB 3F 7B F6 51 FF B6 D7 B7 CB BC A6 8D 70 E3 38 53 7F F6 1E 89
-FE DF 06 AF 5F BD 1A 45 75 9F 5E CB 6F BE 15 C1 61 67 1C A7 5F 5D 4C FD
-3F FA DC 43 76 E6 BB F9 37 FE F9 9F FE EE 1E B5 79 6B 90 BB FB DE F1 31
-DF 56 7D 97 BF F4 6F 6D F7 FB 5C 33 FF F1 95 69 FB EF 88 8F FF DD 1F 25
-BD FE 1E AB 7B CD 88 A1 7F FF FA 87 FF BD 0D DD 6F D3 B8 23 6F BD AA D9
-1E 9F B3 7F 6F FD 1B 95 5C AE 08 9B 5F B8 DC 11 7F F6 93 77 3F FE 28 4D
-EF 32 F0 13 7F 71 FC 49 FF 5E 7A 6F 3B FD 14 05 7E 7E 4E 8B FF 7F EB 81
-FE 3F 48 67 6E 16 BE BD FF BA 04 03 FF F5 89 B9 7F FE DD 5F 67 FC 08 75
-70 BB F0 7B 4F F9 B6 F1 CE DF 19 57 7E 5D D1 2D FF 63 F3 F3 5A BF 53 29
-7F BF DC 4F 5F DC F8 E5 FF BF EE 6B 5D CD 3E 61 6D B7 06 47 7F 7E 5F 9D
-BD 9F BF E3 3D E6 58 99 BF 7E 77 3F 3D 3E E5 55 BB EB 48 5B FD F9 81 D1
-34 76 0F 37 6C FF 6A 0D 6D E2 67 D3 BF F1 9A 09 CE BF AE 2F EF 3C CD C5
-FF BA FE 4B 7C 2D 81 41 4E E7 34 27 57 D7 F0 7D FB 72 EB C3 FD E8 17 79
-1C FE 81 1F BD 6D B2 35 37 DE 10 3B 17 F8 3C B1 F5 BF 75 17 4D 5E F2 ED
-D7 66 4B B3 F7 F0 D0 E9 7D EF F0 0F FC 9C 92 A5 EF FF 7E 2B 57 D8 B4 21
-F4 FF D2 07 FF FF 71 5D EE FB 87 A3 DA F2 C6 59 E6 9E FA FF E4 CC 6F 15
-E6 AE 48 1B 1F BD E7 91 FF F7 4A F7 5F F4 6B CD 9F AB 9F 93 EF D4 F7 C9
-FE EE A1 EF F6 FC 47 85 7D FF 6E 0B 7D FE D7 01 7D BE DF E7 EF F4 E2 3D
-7E 7B 93 83 FF 7E 65 39 FF FF E4 DF BF 7F 1B F5 BF FB EF FB DE DA 82 71
-6C F7 90 D7 7D F7 D4 AD 73 EA 63 73 97 76 0E A9 EE 7F C3 CF FB 7F EC 65
-9F BA CD EB 77 EF E9 E1 53 56 5D C7 FF F4 43 1D FB D3 0F 63 E7 62 F4 19
-BE FF 3E BF 19 CD B8 D5 CB EF 07 DB 77 FE 0D 51 EF FE 46 B7 1F FD 2D 8D
-DB 56 97 53 ED 9C 15 89 1D 8F 55 AF FF BF 81 45 7A FF 9D CB 7B EB EC C1
-FE E6 4B A7 4A 75 93 FD 69 F3 FB 43 95 F8 72 F9 72 BF 08 9F 7D EC 45 B5
-1E 5F 8F BB 5D D8 88 31 5B 97 6C 97 7E A4 76 6D FF AA 3B 33 FE FF 0C 69
-77 EF 57 8F 4A 9F 06 25 13 FF DD AB BD 1A DF A1 75 C6 A9 87 AD FC D4 DD
-7C D6 57 23 FE 76 E1 D9 77 BF 42 7F 7B 4E C2 95 7F FF 87 9B 37 79 F3 11
-FF 77 02 77 7E E5 AF 4D 6A 9B 4F 13 F5 76 F3 49 55 6F C9 6F DE 7E 7B 05
-3F 7B 8D 8B FE 7C C2 81 5F 27 77 67 7F 5E 05 BD 3F F6 23 03 1B 96 40 B9
-3E FF EC 5F F7 FD 2F 75 4B 3E EF 7B B5 9A 4D F1 DF D7 08 57 7F 6C D8 2D
-FB 67 D2 F3 2F FB CA 29 C1 AE AB 4F 37 DD DF E5 5E FE AD 6B EA C9 95 61
-7B C6 B5 47 37 F5 26 9D 7F DB 5E E3 DC EE 8F 99 F6 7F 06 3F 6B 4F 8C 55
-D6 FB C7 5B EF F9 98 D1 FF 3F 7E 37 AF FD F1 0D EF FF C6 D3 2A 35 91 09
-BF 3F FD 2F 6F 3D 34 C5 FF BF 3D 4B 73 39 58 41 9F F6 63 27 5B DE 37 7D
-EF FA 0A C3 3F 57 CE 79 F7 BE 90 1F FF 7D D9 35 DD EE 0F 3B E7 FF D3 B1
-4C F6 64 17 D6 4C F9 ED F9 E3 2A B3 EB 7C 47 E9 EE FF BF 0F 5F DC 79 A5
-5D FF 3D 2B 7F FC 0B 21 FB 56 81 07 47 FD 38 5D ED FA 26 A3 5D E9 FD 59
-2D FE 89 FF F3 DC 16 15 FF AB C7 1B 7B BC FE 91 F5 F7 B9 F7 EC 75 F2 CD
-77 83 FE 93 7F D7 EE C9 19 CF F0 EF BF FF AE 85 7F DA AD 0B 7F F9 AE 01
-DC B7 0E E7 EA D6 29 3D 57 77 B2 83 7E 3D 1C 39 FB FE F3 DF F8 EE 42 F5
-5C AA EE FB 6B D9 19 71 7F 77 7F D7 30 C4 DB AD 6F FA 42 73 EF F0 85 A9
-FF 2E 92 CF C4 7E D3 65 FE 3B 8C EB EF 4A 40 E1 7F 76 0C C7 4B F5 0A 1D
-75 FA AE 63 DE 69 2B 19 27 FF CD BF FE DC 5F D5 F7 EB 86 DB 7F FC 24 51
-74 B7 B5 B7 5F FD B4 8D 1F E3 F6 53 5B FE 0C 89 7D CF A4 AF A9 BD E8 45
-3B BF DC CB 7D AD C3 C1 57 67 7A A7 7F F5 DA FD 97 F7 1A 43 EE C6 29 F9
-EF 3F 17 9F BD FE 6C B5 BF 5F 8E BB EF FE 1F 31 77 DE 5B 97 35 D4 7D 6D
-CF F3 1A 33 E1 F8 83 69 69 FF 26 8F 2D 5C ED 25 7E FB 9C AB FF 1C 36 A1
-FB E7 58 87 6F BC 9B DD EF F6 F6 23 AF 6C 18 D9 E3 DE D1 7F 5D DC 69 95
-BE BB 06 9B 7A FF 0A 11 A7 7F 71 77 E7 E5 36 4D ED DF AE 13 7C 57 EA 49
-2F 4F 18 6F 69 7F E2 05 FF FE CC 8B A9 ED 99 81 FA EF A6 67 7E FD 4C BD
-7B F2 42 03 75 F2 F7 B9 17 FE FB 5F 6F EE 56 75 F6 1F EE 7B 77 FE E4 F1
-58 D6 F7 57 03 FF DF 2D EE E7 B1 F3 FE F4 41 29 7C BF 7A 4F 55 DE C6 E5
-AF BB 6C 6B F7 F9 EC 61 63 EE 64 47 A6 FF ED 9D 72 DE FD E3 73 F2 C6 99
-7F 7F 95 3F EF 6C 33 55 F3 FE 46 5B DF FD AF D1 BA 3E ED 37 FE BC 78 0D
-43 FB 25 D3 D7 B5 88 09 FF 4E 4C 2F F2 3D 9B C5 A9 1F 7C 4B FE B9 2F 41
-5F FF 92 27 5E FC 7E 7D 21 7B 29 C3 7B 43 85 79 EB FE 9F 1F 63 EE 00 35
-6C EE 0E 3B 7B DB 6A B1 DB BF 53 17 BB BF 00 ED EB 3A 09 B3 FF F3 BE E9
-7F FF 8E 0F 3F BC 60 A5 FD 7A FC 2B ED DB 62 21 56 C7 30 07 D7 7E FF 5D
-52 F6 C5 A3 56 FD 34 59 FB FE 18 FF C7 EF BD 15 5F 2F 46 1B 47 B8 15 91
-EE F6 28 F7 E3 6F 79 CD E2 B6 5D 93 F7 F6 E5 C9 4F FF 3F EF 3E FF 15 85
-FF DF EC 0B 5A F8 85 01 3F A7 3D E7 ED BF 70 3D DD 7F D1 83 6F 37 D3 39
-7F FE 02 DF 7B 3D 69 F5 FF AF ED FB FE 9B B0 71 FF D7 6E D7 F7 D5 E2 AD
-7F EA 21 73 7D 76 FC A9 5F 7F 61 CF F7 7D BA 65 7F FE 4B EB 1D 58 97 E1
-6F AF BB C7 ED FD D1 1D 4F FE 4D 63 7D 6B 62 19 F7 DE 5C BF FF EF 06 D5
-FE EE 05 DB 6F FE 3B 51 1F B7 24 B7 D5 3E 3B 8D B5 CB 55 53 DE 9C 03 89
-7F AF F3 AF 6B BC 4F 45 F7 DE 1B CB FF BB 9A C1 EF 66 A9 A7 6F FE 21 FD
-FF F6 39 43 FB CF E0 F9 D8 7F 26 9F 3F EC 93 B5 7B 4B 8D BB 83 DF B6 31
-F9 37 4A 97 F5 84 84 6D C8 B7 F9 33 D6 FD FA 69 ED EE F5 8F 57 3E D4 25
-FF FF 5B AB 77 D9 8D A1 DF E6 07 87 9E FC 62 DD FF 7F 95 23 7A 7D 4F D9
-6D 9E 60 7F F8 6E 10 95 F5 AA 85 9B 6D 38 21 11 73 F7 E0 77 4E FC BD 4D
-77 02 0D 13 DF D4 E1 49 7E 5E 67 6F 6E FD 49 05 DD FA 0B 8B 7F EA 70 81
-65 EF D5 67 7F 34 93 BD BD F6 61 03 7B 8B AE B9 F2 FE 0A 5F 8C AF 7D 75
-5F 5A ED 7B EF 9F 7B F1 73 FE E6 57 EF 46 E6 2D E7 E3 90 F3 FD B8 B8 29
-3F BE 49 4F 7F DF AD E5 03 FE 2B 6B 7E DE 43 61 7E B6 13 47 57 7E B4 9D
-FF D2 9C E3 7F F2 FD 99 FB 7E 24 3F D9 6C DA 55 5F EA C5 5B F9 FD C6 D1
-A7 3E 5C 37 7F B6 FF 0D FF D2 84 D3 5E 71 7F 09 1D FE 9B 2F DD 3E 02 C5
-7F DB BB 4B CF 3D 06 41 F7 EE C1 27 5F F6 C5 7D 5D 76 48 C3 BD 6B 3C 79
-FD FE AE 1F C7 7E 27 35 27 FE 0D 3B ED 5B 01 B1 F7 BE 42 17 5E A5 07 ED
-E6 6A E8 B3 FF F7 35 E9 2B 6F 5D 0F 79 FC 47 A5 FF 7A BB 2B FB FE B9 21
-3D 4F DF 07 49 74 C6 5D FF DF 64 A3 FB AC 6B 59 3B 7F A7 FF 7D EF 64 15
-37 EA C5 1B 7F BF 2C 91 7F F6 97 F7 37 ED 00 CD FF C2 BC 93 56 F1 DC C9
-6F DE 8E EF DF FE 7C 85 FA FB 2B 0B DD EB 5C 01 BE B7 6C E7 FB BC B7 3D
-EF 73 F0 83 9A 6E 8A 39 6A 7F 11 DF BF AC 90 F5 DE 9A EC FB B7 FA 47 71
-1F FF 5D D7 E6 DE E9 AD 7E F2 00 73 6F 39 73 A9 FF 6E 30 CF 0B 7C A1 65
-BE FB 0A EB 72 5A EE E1 74 FF 6A C7 4D F6 98 1D EB DB EC 63 1F E9 99 19
-FD DE EB BF EE FD AD D5 5B FA 84 DB 7B 7C 52 51 FA F6 93 B7 DF 36 C2 8D
-FD D2 B4 53 45 F5 FA 89 BE AE 42 AF F7 BE B6 45 F3 DA 5A CB B7 FD 71 C1
-6D F7 D8 A7 55 D6 68 FD FD FF 58 43 6E D5 97 F9 CF FF 35 9F 7E EE BA B5
-DF 4B 8C BB 7F FD 4D 31 FC B6 39 97 F7 AC 8B 6D DB F6 D8 33 C7 FF 71 69
-77 FE C4 8F 77 FC BB 25 77 FB 1A AB ED 4A E4 A1 D6 FE B6 87 29 B4 29 DD
-59 56 34 23 0F EA 86 D9 FE FF EF 7F DB FF B7 95 F5 AE 04 9B 65 3D 38 11
-3D FE 4F 77 67 F4 44 4D FB FE 6C 13 FE 7D D8 49 ED 7F B6 6F BF FE B0 05
-BB 7B 4A 8B 77 FB 47 81 F8 2E 04 67 7F DF DA BD FB BA 80 03 DB E0 65 B9
-DF FF 19 5F EF BC A4 75 DC EF EC 7B 5A DC 12 F1 FF D6 D5 57 BB CD ED 2D
-F2 7B 6F F3 FC B9 2F 29 D6 FF 18 4F BF DC 94 E5 5B FA EA 6B DD CE 9A 61
-79 97 C2 47 CB F5 7B 9D FF 9E 3B E3 DF EF 34 99 3B FE B3 3F F5 7D 81 55
-2F EF 44 5B 1C F9 DD D1 70 7F CB 37 7A ED 86 0D 7F C7 E3 D3 7F 59 76 09
-3A 4E EA 2F 7D 3E 69 C5 7F FB FA 4B DC 3C DD 41 77 EF F0 27 73 FD 0C 7D
-FF 7F 67 C3 F9 CE F3 79 BC FE BD 1F 2A EE 4E 35 A2 EE 0C 3B 5F 5E 98 B1
-7F BF 31 17 59 0F 0E ED FD 7B C7 B3 DD 76 AC E9 FF FF 2C 0F DF BC 2E A5
-7E 7E 7A 2B 5E CE 10 21 3C F6 8E 07 CF FE 8D 5D FF F6 03 A3 7F B7 A2 59
-6F BF 36 FF 4E FF 0B 15 4E EE 44 1B 6B BA 43 91 77 FF 06 F7 6D 7E 87 CD
-7C AF 1B 93 B7 F8 D3 C9 FF CF DD EF A1 FD E3 85 FD DA 6A 0B FE FA 33 01
-35 E7 9B E7 FF 9D FE 3D 0E 36 0F 83 F7 E1 41 39 7B FE 20 DF 3D 2F B7 F5
-3D DF EB FB 3D 3C DE 71 7E D7 4C D7 69 DF F0 AD 7F F7 DF 73 7E 37 EA A9
-9E EE FF CF 7D 7F 88 65 5D 7F C9 EB EF E9 45 E1 7F 6F 19 C7 EB FF 5F 1D
-BF 97 8B 63 BF 63 D0 19 6E FF 7A BF A5 FC 54 D5 3E EB 03 DB 8E 7E 69 51
-BF BE 02 B7 7A 67 49 8D 7F F2 13 53 F4 9B F1 89 C7 CE 91 AF FF BD 1D 45
-AD 9E 99 CB F5 FB 48 C1 FF EF 07 A7 57 DE AF FD 7D F6 77 43 75 D7 4E F9
-BE 3F 44 9F D9 FC E1 B5 75 5F 8B BB EF DE E4 31 5F 5F 28 97 7A CC 92 6D
-BE F3 B7 33 BE FC E8 69 6B EE 93 8F BF BE A2 25 7F FE D9 AB F9 88 3B A1
-B3 F7 65 87 8D F7 F0 DD 1D 7A D3 23 FB B3 BD D9 3B FF 7E 7F FF 7D 5E 95
-FB FB 83 9B 7B FE 4F 11 1D 7E BE 77 DE E7 CB 4D 76 D6 CB 13 79 52 CF 49
-B5 FF 05 6F 53 7C 17 05 D7 DA 89 8B 3E 68 1E 81 7B 66 33 67 7D FF 21 BD
-3F F6 9F 03 EE F1 1C B9 F8 FE 28 5F 5B FD CB 75 7F EA EB 7B EF FC A9 F1
-FD FE C4 57 5B D4 F4 2D FD EF 4E F3 D7 B5 A6 29 7D EF E7 4F BF DD 7B E5
-F7 BB A9 6B ED EA F1 61 ED 8F 71 47 5F 74 42 9D 67 57 DA E3 FF E7 6B 99
-9F 5F 42 3F D7 7E 28 55 7A 6B C3 5B 37 F9 F4 D1 1B B7 3A 37 FB E4 0D 0D
-B7 D7 42 D3 EF 9D 6D 09 5B 2F 39 2F FF 3E D0 C5 5B 7A 39 4B 6F 38 B4 41
-FD EF 1F 27 7D FF 53 7D F2 76 86 C3 FB 6E AA 79 AF FE CC 1F EB 6E 75 35
-7D EE 0B 3B FB 5E 2F B1 6E FE 20 17 FC ED 15 ED FE 66 A6 B3 B5 F2 23 E9
-7D FE FB 0F E7 FC 15 A5 FF FE 39 2B B5 E9 67 21 37 FF 3D 07 4E FC 54 5D
-7B D6 A2 A3 3D FE D9 59 DD 7E C5 FF 3F FE B2 15 6F 7B C3 1B 7F B9 5A 91
-FF F7 75 F7 EC F4 0E CD FB F3 7A 93 3A FB CA C9 F7 DF 2C EF 77 FD 4A 85
-7C FF A9 0B DB FD 0A 01 FC AF CA E7 F7 FF 45 3D 79 F2 2E 83 EB 8F F8 39
-7F 7F 2F DF B6 6E DE F5 DE FE EA FB F7 1B 75 71 FF 57 3B D7 7E E4 F7 AD
-5F FB BE 73 71 B2 61 A9 73 2F CE CF 76 7E 6F 65 75 7E 88 EB 77 EB 9C E1
-BE FE C8 C7 5E FC 26 1D 7D BF 2A 63 66 7A 07 19 D7 FE 09 BF 9A FE FB D5
-6F FF 82 DB A1 7C 80 51 81 FF 71 B7 7F 37 D0 8D F3 6F 72 53 37 DD E8 89
-F2 FE E0 AF 3D BF 84 45 B7 BA D8 CB 79 AD 1F C1 A7 FE 36 A7 57 5E F6 FD
-6F FB 96 43 D7 D5 05 F9 DF 3F 53 9F 3F FF 08 B5 7F 5F 8A BB 7F FC 7B 31
-D6 1E 17 97 7F EC 99 6D B9 AE 96 33 EF F6 5F 69 EF FE 62 8F B9 5C 89 25
-DA FA 98 AB 6B 79 92 A1 BE CE 14 87 1F F7 B7 DD DF D7 72 23 73 78 F4 D9
-9E 9F 0D 7F EB FF 05 95 FE FF 02 9B 86 7B 66 11 DB 7F 2D 77 ED F7 52 4D
-B5 8B 2A 13 FD 73 C6 49 FF DE 54 6F FF 7D 7E 05 7F DB C8 8B EF E8 F5 81
-5F BE 62 67 7E 9E 68 BD 7E F2 BE 03 57 BD D3 B9 B3 FF 37 5F B5 FE F2 75
-17 3B EA 7B A4 B9 40 F1 5E FE B3 57 3F 4F FB 2D FC FF 2D F3 CF BE 1D 29
-3A BE B6 4F ED DE 62 E5 15 BE 68 6B 3F CB 48 61 BF AF 20 47 93 77 09 9D
-1F DF 79 E3 3F FB A2 99 69 DF D1 3F 7F 7E CF 55 7F FE 42 5B 2E FE 0B D1
-E7 36 A9 37 FF EE 94 0D 6F C2 A1 D3 75 FD 64 09 FF AF 88 2F 7E 3F 37 C5
-FD 5A 78 4B 5E B8 8B 41 7F EE 4E 27 7E FD 9A 7D 1F 77 A5 C3 3F 4A 61 79
-8E BE DB 1F EF EE 9C 35 D9 DE 0A 3B CF 59 C6 B1 F7 BF 0F 17 9F 4F 1C ED
-FF 2B 85 B3 A7 79 9A E9 73 EE CA 0F FE 9F FC A5 58 FF F8 2B F6 B8 BE 21
-77 DF EC 07 D9 3E 1B 5D 3C D3 41 A3 ED A2 10 59 65 DE 54 FF 3F FE 59 15
-FC 2B 42 1B EF FC 71 91 FD F7 E4 F7 EF FD 95 CD 7F 97 D9 93 DF FA C1 C9
-F9 FE 7B EF CF FC B1 85 5B DE E8 0B 57 EB E1 01 7F EF F9 E7 FF DC 8C 3D
-7E 3A 4D 83 7B 7A AF 39 29 FE 3E DF E7 EE 05 F5 5F FB E9 FB 4A DE 0C 71
-FA 57 2A D7 EF DD FE AD 7D F7 9D 73 54 38 D8 A9 EE EE 9D CF 7F 7D 56 65
-BF BF 47 EB 6B E9 F3 E1 BF A6 77 C7 D5 FC ED 1D FB B2 C9 63 19 EC 3E 19
-7F FE 98 BF 6B FD A2 D5 6B FE 01 DB B4 7E 97 51 5F F6 E0 B7 E1 A4 57 8D
-7D 4A D1 53 9A FB DF 89 1B CF 2F AF FF BD EB 45 7F BF 17 CB 7F AA F6 C1
-7F 67 65 A7 5B 57 3D FD FB FA B5 43 E7 CE BC F9 8E BF 62 9F FF FD 2F B5
-FF 6B 89 BB FF DE 12 31 FF DF 06 97 29 8C A0 6D F7 E3 75 33 F0 FB D6 69
-7E FE 31 8F FC 1E 70 25 35 FE 57 AB 9E 1E E9 A1 F7 F6 C3 87 D6 BF 7E DD
-DA F2 11 23 3F BA 2B D9 FF DE 9C 7F 8E 7C AC 95 7B FE 81 9B BB BC 7D 11
-FF 77 9C 77 50 E6 D9 4D 2E 1B 89 13 5F D0 BD 49 2F CF A3 6F DF FE E5 05
-3B 7F 07 8B C3 ED CC 81 F9 2E 91 67 7B BD AF BD BF F6 DD 03 3E C6 8A B9
-9F FE 46 5F 1E BC 19 75 EF DE E9 7B 7F D9 D7 F1 8F D6 A2 57 DB 4F 02 2D
-DF 6B 0C F3 FF F2 94 29 FB BF 85 4F 77 DF 49 E5 6F FF 27 6B FF EF 9F 61
-DE DE CF 47 3B 7D D0 9D DF 3F 18 E3 FA EB D9 99 75 7E 60 3F 5D 7F 76 55
-79 FE C1 5B 3F FE 22 D1 F3 B6 18 37 63 FD 1B 0D FE CA 00 D3 F5 B9 5B 09
-F5 CF D7 2F 2B 3F 9E C5 F8 9E B7 4B 5D 2C 62 41 F3 E7 7D 27 5B F7 E1 7D
-4A F2 C4 C3 7D 62 18 79 79 FE EA 1F 73 EE C3 35 77 DE 09 3B 38 D9 5D B1
-3A 97 FE 17 67 25 23 ED FF AE 64 B3 BA 7D 11 E9 FF 6E 99 0F FF DF E3 A5
-77 FF B7 2B 4F BC 15 21 3F DE 9B 07 7E 37 E2 5D EF DB E0 A3 7F E1 47 59
-BF DF E3 FF FF FE 00 15 FF 7A C1 1B F7 BB 88 91 F7 FE 53 F7 76 67 1C CD
-EB 96 38 93 3B F5 B8 C9 1F FF CA EF 6F FC 18 85 26 FA 27 0B 3C 06 08 00
-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 21 04 00
-00 00 00 00 00 00 00 00 00 00 00 04 00 21 04 04 00 00 00 00 00 00 00 00
-00 00 00 04 00 21 04 08 00 00 00 01 00 00 00 00 00 00 00 04 00 21 04 0C
-E0 00 03 C0 00 00 00 00 00 00 00 04 00 21 04 10 E0 00 03 C0 00 00 00 00
-00 00 00 04 00 21 04 18 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-\ 3
\ No newline at end of file
diff --git a/src/util/bconvert/bconvert b/src/util/bconvert/bconvert
deleted file mode 100755 (executable)
index 70491d9..0000000
Binary files a/src/util/bconvert/bconvert and /dev/null differ
index 70491d9..0000000
Binary files a/src/util/bconvert/bconvert and /dev/null differ
diff --git a/src/util/bconvert/bconvert64x b/src/util/bconvert/bconvert64x
deleted file mode 100755 (executable)
index 06b2a0e..0000000
Binary files a/src/util/bconvert/bconvert64x and /dev/null differ
index 06b2a0e..0000000
Binary files a/src/util/bconvert/bconvert64x and /dev/null differ
index 820c24ec0165a3fd1678d0c46a25c39f713d5734..74070dfe1a9a712340457522aa08dbc4a3257ebc 100644 (file)
bconvert64x: bconvert64x.c
gcc -o bconvert64x bconvert64x.c
+
+clean:
+ rm -rf bconvert.exe bconvert64x.exe
+
+
+
index cc55f7e32c8b1adc77f1800fcaae12b9c0100bc4..afbdb47e66e99e06bfd02a770df5cfddfb31b6ee 100644 (file)
--- a/src/util/btoccs/Makefile
+++ b/src/util/btoccs/Makefile
-all: b2ccs.exe b2i2c.exe ccs2b.exe bfaddsect.exe bfmerge.exe
+all: b2ccs.exe b2i2c.exe ccs2b.exe bfaddsect.exe bfmerge.exe ccs2bin.exe
b2ccs.exe: b2ccs.c
bfmerge.exe: bfmerge.c
gcc -o bfmerge bfmerge.c
+
+
+ccs2bin.exe: ccs2bin.c
+ gcc -o ccs2bin ccs2bin.c
+
+
+clean:
+ -rm -f b2ccs.exe b2i2c.exe ccs2b.exe bfaddsect.exe bfmerge.exe ccs2bin.exe
index c0caae1af489abfbf7704f3794c7efd9fed23399..f732af53ccfb1ee509e20c9581436495ff09609a 100644 (file)
clean2: $(CLEAN_MODULES)
@rm -f $(OBJS)
+ @rm -f $(subst .c,.dc,$(CSRC))
$(CLEAN_MODULES):
index 8b7043e73a2a44f433cad18ef03ae27b0e3c7b6c..0cbdf1f7b194e3afb67a8620680624e3017c9fe1 100644 (file)
***************************************************************************************/
#include "types.h"
#include "ibl.h"
+#include "nandhwapi.h"
+#include "ecc.h"
+#include "pllapi.h"
+#include "device_nb.h"
#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+
+/**
+ * @brief
+ * The input file name is hard coded
+ */
+char *fileName = "c:\\flash.bin";
+
/**
* @brief
uint8 readCommandPost; /**< The read command sent after the address */
bool postCommand; /**< If TRUE the post command is sent */
- uint8 blockEraseCommandPre; /**< The command used to erase a block (sent before the address) */
- uint8 blockEraseCommandPost; /**< The command used to erase a block (sent after the address) */
- bool blockErasePost; /**< If TRUE the post command is sent */
-
- uint8 pageWriteCommandPre; /**< The command used to program a page (sent before the address) */
- uint8 pageWriteCommandPost; /**< The command used to program a page (sent after the address) */
- bool pageWritePost; /**< If TRUE the post command is sent */
-
- char fileName[132]; /**< The name of the file to burn on the flash */
-
} nandWriterInfo_t;
-
nandWriterInfo_t nandWriterInfo;
-
/**
* @brief
- * The nandDevInfo structure is a subset of the nandWriteInfo, and is seperated
- * here to use the existing ibl functions for the writer
+ * Information used only for programming the flash
*/
-nandDevInfo_t devInfo;
+nandProgramInfo_t nandProgramInfo;
-
-int main (void)
+/**
+ * @brief
+ * System setup information
+ */
+typedef struct sysSetup_s
{
- Uint8 *data;
- FILE *fp;
- Uint32 flen;
- Int32 ret;
+ Int32 pllPrediv;
+ Int32 pllMult;
+ Int32 pllPostdiv;
+} sysSetup_t;
- /* Prompt the user to initialize the data block */
- printf ("Initialize the nandWriteInfo structure, press return\n");
- getchar ();
+sysSetup_t sysSetup;
- /* Initialize the nand driver */
- devInfo.busWidthBits = nandWriterInfo.busWidthBits;
- devInfo.pageSizeBytes = nandWriterInfo.pageSizeBytes;
- devInfo.pageEccBytes = nandWriterInfo.pageEccBytes;
- devInfo.pagesPerBlock = nandWriterInfo.pagesPerBlock;
- devInfo.totalBlocks = nandWriterInfo.totalBlocks;
-
- devInfo.addressBytes = nandWriterInfo.addressBytes;
- devInfo.lsbFirst = nandWriterInfo.lsbFirst;
- devInfo.blockOffset = nandWriterInfo.blockOffset;
- devInfo.pageOffset = nandWriterInfo.pageOffset;
- devInfo.columnOffset = nandWriterInfo.columnOffset;
-
- devInfo.resetCommand = nandWriterInfo.resetCommand;
- devInfo.readCommandPre = nandWriterInfo.readCommandPre;
- devInfo.readCommandPost = nandWriterInfo.readCommandPost;
- devInfo.postCommand = nandWriterInfo.postCommand;
-
+/**
+ * @brief
+ * Checks for the bad block mark. Returns TRUE if a block is marked bad
+ */
+BOOL checkBadBlockMark (Int32 block)
+{
+ uint8 data[4];
+ Int32 ret;
- /* Open and find the length of the data file */
- fp = fopen (nandWriterInfo.fileName, "rb");
- if (fp == NULL) {
- printf ("Failed to open file %s\n", nandWriterInfo.fileName);
- return (-1);
- }
+ /* A block is marked bad if the first ECC byte on page 1 and page 0 of the block
+ * is not 0xff. These bytes will not be used for ECC checks */
+ ret = nandHwDriverReadBytes (block, 0, nandWriterInfo.pageSizeBytes, 1, &data[0]);
+ if (ret < 0) {
+ printf ("Fatal error in nandHwDriverReadBytes, exiting\n");
+ exit (-1);
+ }
- fseek (fp, 0l, SEEK_END);
- flen = ftel (fp);
- fseek (fp, 0l, SEEK_SET);
+ ret = nandHwDriverReadBytes (block, 1, nandWriterInfo.pageSizeBytes, 1, &data[1]);
+ if (ret < 0) {
+ printf ("Fatal error in nandHwDriverReadBytes, exiting\n");
+ exit (-1);
+ }
- data = malloc ((nandWriterInfo.pageSizeBytes + nandWriterInfo.pageEccBytes) * sizeof (Uint8));
- if (data == NULL) {
- printf ("Malloc failed on size of %d bytes\n", nandWriterInfo.pageSizeBytes + nandWriterInfo.pageEccBytes);
- fclose (fp);
- return (-1);
- }
-
- /* Initialize the programming interface */
- ret = nandHwDriverInit (&devInfo);
- if (ret != 0) {
- printf ("nandHwDriverInit failed with error code %d\n", ret);
- free (data);
- fclose (fp);
- return (-1);
- }
+ /* Return TRUE if the block has been marked bad */
+ if ((data[0] != 0xff) || (data[1] != 0xff)) {
+ printf ("Block %d already marked bad, skipping\n", block);
+ return (TRUE);
+ }
- /* Write the flash, verify the results. On read back failure mark
- * the page as bad and try rewriting again */
- do {
- flashNand (fp, flen, data);
+ /* Return FALSE if the block has not been marked bad */
+ return (FALSE);
- } while (flashVerify (fp, flen, data) == FALSE);
+}
+/**
+ * @brief
+ * Mark a block as bad. Byte 0 for pages 0 and 1 of the ecc data (extra bytes) are
+ * written as non-zero. Both pages are programmed
+ */
+void markBlockBad (Int32 block, Uint8 *pageData)
+{
- free (data);
- fclose (fp);
- return (0);
+ /* Set all data bytes to 0xff, only zero the bad block marks */
+ memset (pageData, 0xff, ((nandWriterInfo.pageSizeBytes + nandWriterInfo.pageEccBytes) * sizeof (Uint8)));
+ pageData[nandWriterInfo.pageSizeBytes] = 0;
+ /* Write the data to pages 0 and 1 */
+ nandHwDriverWritePage (block, 0, pageData, &nandProgramInfo);
+ nandHwDriverWritePage (block, 1, pageData, &nandProgramInfo);
}
-
-void flashNand (FILE *fp, Uint32 flen, Uint8 *data)
+int flashNand (FILE *fp, Uint32 flen, Uint8 *data)
{
Uint32 fpos;
Uint32 rlen;
+ Int32 block;
+ Int32 page;
Int32 ret;
- Int32 i;
+ Int32 i, j;
+
+ Int32 eccsPerPage; /* Number of 256 bytes ecc sections in a page */
- Int32 eccsPerPage;
- Uint8 *eccData; /* Points to the 256 bytes of data to compute the ecc */
Uint8 *eccBytes; /* Points to the generated ECC data */
/* Reset to the start of the data file */
fseek (fp, 0l, SEEK_SET);
- /* The ECC size is fixed at 256 bytes */
- eccsPerPage = nandWriterInfo.pageSizeBytes >> 8;
+ eccsPerPage = nandWriterInfo.pageSizeBytes / eccBytesPerBlock ();
/* Program the NAND */
} while ((block < nandWriterInfo.totalBlocks) && (checkBadBlockMark (block) == TRUE));
+ nandHwDriverBlockErase (block, &nandProgramInfo);
+
page = 0;
}
+ if (block >= nandWriterInfo.totalBlocks) {
+ printf ("Flash failed: End of device reached\n");
+ free (data);
+ fclose (fp);
+ return (-1);
+ }
+
/* Initialize the entire page (with ecc bytes) to 0xff. This will preserve the good block
* mark at the beginning of pages 0 and 1 */
- memset (data, 0xff, ((nandWriterInfo.pageSizeBytes + nandWriterInfo.eccSizeBytes) * sizeof (Uint8));
+ memset (data, 0xff, ((nandWriterInfo.pageSizeBytes + nandWriterInfo.pageEccBytes) * sizeof (Uint8)));
/* Read the data from the file */
- rlen = nandWriterInfo.pageSizeBytes
+ rlen = nandWriterInfo.pageSizeBytes;
if (flen - fpos < nandWriterInfo.pageSizeBytes) {
rlen = flen - fpos;
}
return (-1);
}
- /* Compute the ECCs. The ECC location size varies by the ECC algorithm */
- for (i = 0; i < eccsPerPage; i++) {
+ /* The page is broken into 256 byte blocks, each has its own ecc data */
+ for (i = 0; i < eccsPerPage; i++) {
+
+ /* The eccs values are at the end of the page. The very last bytes correspond
+ * to the very last block */
+ j = (eccsPerPage - i) * eccNumBytes ();
- eccData = &data[i*256];
- eccBytes = &data[nandWriterInfo.pageSizeBytes + nandWriterInfo.pageEccBytes - ((eccsPerPage - i) * NUM_ECC_BYTES_PER_PAGE)];
- eccComputeECC (eccData, eccBytes);
+ eccBytes = &data[nandWriterInfo.pageSizeBytes + nandWriterInfo.pageEccBytes - j];
+ eccComputeECC (&data[i * eccBytesPerBlock()], eccBytes);
}
- ret = nandHwWritePage (block, page, data);
+
+ printf ("Flashing block %d, page %d (%d bytes of %d)\n", block, page, fpos, flen);
+
+ ret = nandHwDriverWritePage (block, page, data, &nandProgramInfo);
if (ret < 0) {
printf ("nandHwWritePage returned error code %d writing block %d, page %d\n", ret, block, page);
free (data);
}
+
+ return (0);
+
}
BOOL flashVerify (FILE *fp, Uint32 flen, Uint8 *data)
{
Uint8 *nandData;
-
+ Int32 block;
+ Int32 page;
+ Int32 fpos;
+ Int32 ret;
+ Int32 rlen;
+ Int32 i;
+
nandData = malloc ((nandWriterInfo.pageSizeBytes + nandWriterInfo.pageEccBytes) * sizeof (Uint8));
if (nandData == NULL) {
page = 0;
}
+ if (block >= nandWriterInfo.totalBlocks) {
+ printf ("Verify failed: End of flash device reached\n");
+ free (nandData);
+ return (TRUE); /* Return TRUE to allow the program to exit */
+ }
+
/* Read a page of data */
ret = nandHwDriverReadPage (block, page, nandData);
if (ret < 0) {
- printf ("nandHwDriverReadPage returned error cod %d\n", ret);
+ printf ("nandHwDriverReadPage returned error code %d\n", ret);
free (nandData);
return (TRUE); /* return TRUE to allow the program to exit */
}
/* Read the data from the file */
- rlen = nandWriterInfo.pageSizeBytes
+ rlen = nandWriterInfo.pageSizeBytes;
if (flen - fpos < nandWriterInfo.pageSizeBytes) {
rlen = flen - fpos;
}
return (TRUE);
}
- if (memcmp (data, nandData, nandWriterInfo.pageSizeBytes) {
- printf ("Data verification failed on block %d, page %d, file position %d, file size %d\n", block, page, fpos, flen);
- printf ("Marking the block as bad and retrying the flash\n");
- free (nandData);
- return (FALSE);
+ printf ("Verifying block %d, page %d (%d bytes of %d)\n", block, page, fpos, flen);
+
+ for (i = 0; i < rlen; i++) {
+ if (data[i] != nandData[i]) {
+ printf ("Failure in block %d, page %d, at byte %d, (at byte %d in the data file) expected 0x%08x, read 0x%08x\n", block, page, i, fpos, data[i], nandData[i]);
+ printf ("marking block %d as bad, re-flash attempted\n");
+ markBlockBad (block, nandData);
+ free (nandData);
+ return (FALSE);
+ }
}
}
+ free (nandData);
+ return (TRUE);
+
}
+/**
+ * @brief
+ * The nandDevInfo structure is a subset of the nandWriteInfo, and is seperated
+ * here to use the existing ibl functions for the writer
+ */
+nandDevInfo_t devInfo;
+
+
+int main (void)
+{
+ Uint8 *data;
+ FILE *fp;
+ Uint32 flen;
+ Int32 ret;
+ Int32 rCount;
+
+
+ /* Configure the main pll */
+ hwPllSetPll (0, (uint16)sysSetup.pllPrediv, (uint16)sysSetup.pllMult, (uint16)sysSetup.pllPostdiv);
+
+ /* Initialize the nand driver */
+ devInfo.busWidthBits = nandWriterInfo.busWidthBits;
+ devInfo.pageSizeBytes = nandWriterInfo.pageSizeBytes;
+ devInfo.pageEccBytes = nandWriterInfo.pageEccBytes;
+ devInfo.pagesPerBlock = nandWriterInfo.pagesPerBlock;
+ devInfo.totalBlocks = nandWriterInfo.totalBlocks;
+ devInfo.addressBytes = nandWriterInfo.addressBytes;
+ devInfo.lsbFirst = nandWriterInfo.lsbFirst;
+ devInfo.blockOffset = nandWriterInfo.blockOffset;
+ devInfo.pageOffset = nandWriterInfo.pageOffset;
+ devInfo.columnOffset = nandWriterInfo.columnOffset;
+
+ devInfo.resetCommand = nandWriterInfo.resetCommand;
+ devInfo.readCommandPre = nandWriterInfo.readCommandPre;
+ devInfo.readCommandPost = nandWriterInfo.readCommandPost;
+ devInfo.postCommand = nandWriterInfo.postCommand;
+
+
+
+ /* Open and find the length of the data file */
+ fp = fopen (fileName, "rb");
+ if (fp == NULL) {
+ printf ("Failed to open file %s\n", fileName);
+ return (-1);
+ }
+
+ fseek (fp, 0l, SEEK_END);
+ flen = ftell (fp);
+ fseek (fp, 0l, SEEK_SET);
+ data = malloc ((nandWriterInfo.pageSizeBytes + nandWriterInfo.pageEccBytes) * sizeof (Uint8));
+ if (data == NULL) {
+ printf ("Malloc failed on size of %d bytes\n", nandWriterInfo.pageSizeBytes + nandWriterInfo.pageEccBytes);
+ fclose (fp);
+ return (-1);
+ }
+ /* Device specific nand setup */
+ deviceConfigureForNand();
+
+ /* Initialize the programming interface */
+ ret = nandHwDriverInit (&devInfo);
+ if (ret != 0) {
+ printf ("nandHwDriverInit failed with error code %d\n", ret);
+ free (data);
+ fclose (fp);
+ return (-1);
+ }
+
+ /* Write the flash, verify the results. On read back failure mark
+ * the block as bad and try rewriting again */
+ rCount = 0;
+
+ do {
+
+ if (flashNand (fp, flen, data) != 0) {
+ printf ("nand write giving up\n");
+ break;
+ }
+
+ rCount += 1;
+
+ } while ((flashVerify (fp, flen, data) == FALSE) && (rCount < 5));
+
+
+ if (rCount >= 5)
+ printf ("nand write failed (maximum retries reached)\n");
+ else
+ printf ("flash programming completed\n");
+
+ free (data);
+ fclose (fp);
+ return (0);
+
+}
+
index d92fc0a338ff7c7368feaddba48a93d4d207d83b..ad294d5e65f92a17afef099063beb5bbfb84aead 100644 (file)
gcc -c lex.yy.c
+clean:
+ rm -f romparse.exe rparse.tab.o lex.yy.o lex.yy.c rparse.tab.c rparse.tab.h
index 838c7c1cade1e4d53d85c4740a467b41de4832f5..ff538115014f2a5e9b3554ce9f3f73bd316de05b 100644 (file)
\".*\" return (STRING);
+[ \t]+ ;
+[\n] ;
%%
diff --git a/src/util/romparse_c6472/rparse.tab.c b/src/util/romparse_c6472/rparse.tab.c
+++ /dev/null
@@ -1,930 +0,0 @@
-
-/* A Bison parser, made from rparse.y
- by GNU Bison version 1.25
- */
-
-#define YYBISON 1 /* Identify Bison output. */
-
-#define LBRACE 258
-#define RBRACE 259
-#define SECTION 260
-#define EQU 261
-#define VALUE 262
-#define STRING 263
-#define BOOT_MODE 264
-#define PARAM_INDEX 265
-#define OPTIONS 266
-#define MULTI_I2C_ID 267
-#define MY_I2C_ID 268
-#define CORE_FREQ_MHZ 269
-#define I2C_CLK_FREQ_KHZ 270
-#define EXE_FILE 271
-#define PCI_PARMS 272
-#define NEXT_DEV_ADDR 273
-#define NEXT_DEV_ADDR_EXT 274
-#define ADDRESS_DELAY 275
-#define SWPLL 276
-
-#line 2 "rparse.y"
-
-#define YYERROR_VERBOSE
-extern char *yytext;
-#ifndef YYSTYPE
-#define YYSTYPE int
-#endif
-#include <stdio.h>
-
-#ifndef __cplusplus
-#ifndef __STDC__
-#define const
-#endif
-#endif
-
-
-
-#define YYFINAL 30
-#define YYFLAG -32768
-#define YYNTBASE 22
-
-#define YYTRANSLATE(x) ((unsigned)(x) <= 276 ? yytranslate[x] : 27)
-
-static const char yytranslate[] = { 0,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21
-};
-
-#if YYDEBUG != 0
-static const short yyprhs[] = { 0,
- 0, 2, 5, 10, 14, 16, 19, 23, 27, 29,
- 31, 33, 35, 37, 39, 41, 43, 45, 47, 49
-};
-
-static const short yyrhs[] = { 23,
- 0, 22, 23, 0, 5, 3, 24, 4, 0, 17,
- 6, 8, 0, 25, 0, 24, 25, 0, 26, 6,
- 7, 0, 26, 6, 8, 0, 9, 0, 10, 0,
- 11, 0, 12, 0, 13, 0, 14, 0, 15, 0,
- 16, 0, 18, 0, 19, 0, 20, 0, 21, 0
-};
-
-#endif
-
-#if YYDEBUG != 0
-static const short yyrline[] = { 0,
- 11, 12, 15, 17, 22, 23, 26, 28, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43
-};
-#endif
-
-
-#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
-
-static const char * const yytname[] = { "$","error","$undefined.","LBRACE",
-"RBRACE","SECTION","EQU","VALUE","STRING","BOOT_MODE","PARAM_INDEX","OPTIONS",
-"MULTI_I2C_ID","MY_I2C_ID","CORE_FREQ_MHZ","I2C_CLK_FREQ_KHZ","EXE_FILE","PCI_PARMS",
-"NEXT_DEV_ADDR","NEXT_DEV_ADDR_EXT","ADDRESS_DELAY","SWPLL","promspec","bootParams",
-"assigns","assign","keyword", NULL
-};
-#endif
-
-static const short yyr1[] = { 0,
- 22, 22, 23, 23, 24, 24, 25, 25, 26, 26,
- 26, 26, 26, 26, 26, 26, 26, 26, 26, 26
-};
-
-static const short yyr2[] = { 0,
- 1, 2, 4, 3, 1, 2, 3, 3, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
-};
-
-static const short yydefact[] = { 0,
- 0, 0, 0, 1, 0, 0, 2, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 0,
- 5, 0, 4, 3, 6, 0, 7, 8, 0, 0
-};
-
-static const short yydefgoto[] = { 3,
- 4, 20, 21, 22
-};
-
-static const short yypact[] = { 34,
- 0, -2, 13,-32768, 22, 11,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -4,
--32768, 14,-32768,-32768,-32768, -6,-32768,-32768, 21,-32768
-};
-
-static const short yypgoto[] = {-32768,
- 19,-32768, 3,-32768
-};
-
-
-#define YYLAST 51
-
-
-static const short yytable[] = { 24,
- 27, 28, 5, 6, 8, 9, 10, 11, 12, 13,
- 14, 15, 29, 16, 17, 18, 19, 1, 23, 26,
- 30, 7, 25, 0, 0, 0, 0, 0, 0, 2,
- 8, 9, 10, 11, 12, 13, 14, 15, 1, 16,
- 17, 18, 19, 0, 0, 0, 0, 0, 0, 0,
- 2
-};
-
-static const short yycheck[] = { 4,
- 7, 8, 3, 6, 9, 10, 11, 12, 13, 14,
- 15, 16, 0, 18, 19, 20, 21, 5, 8, 6,
- 0, 3, 20, -1, -1, -1, -1, -1, -1, 17,
- 9, 10, 11, 12, 13, 14, 15, 16, 5, 18,
- 19, 20, 21, -1, -1, -1, -1, -1, -1, -1,
- 17
-};
-/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
-#line 3 "bison.simple"
-
-/* Skeleton output parser for bison,
- Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-/* As a special exception, when this file is copied by Bison into a
- Bison output file, you may use that output file without restriction.
- This special exception was added by the Free Software Foundation
- in version 1.24 of Bison. */
-
-#ifndef alloca
-#ifdef __GNUC__
-#define alloca __builtin_alloca
-#else /* not GNU C. */
-#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
-#include <alloca.h>
-#else /* not sparc */
-#if defined (MSDOS) && !defined (__TURBOC__)
-#include <malloc.h>
-#else /* not MSDOS, or __TURBOC__ */
-#if defined(_AIX)
-#include <malloc.h>
- #pragma alloca
-#else /* not MSDOS, __TURBOC__, or _AIX */
-#ifdef __hpux
-#ifdef __cplusplus
-extern "C" {
-void *alloca (unsigned int);
-};
-#else /* not __cplusplus */
-void *alloca ();
-#endif /* not __cplusplus */
-#endif /* __hpux */
-#endif /* not _AIX */
-#endif /* not MSDOS, or __TURBOC__ */
-#endif /* not sparc. */
-#endif /* not GNU C. */
-#endif /* alloca not defined. */
-
-/* This is the parser code that is written into each bison parser
- when the %semantic_parser declaration is not specified in the grammar.
- It was written by Richard Stallman by simplifying the hairy parser
- used when %semantic_parser is specified. */
-
-/* Note: there must be only one dollar sign in this file.
- It is replaced by the list of actions, each action
- as one case of the switch. */
-
-#define yyerrok (yyerrstatus = 0)
-#define yyclearin (yychar = YYEMPTY)
-#define YYEMPTY -2
-#define YYEOF 0
-#define YYACCEPT return(0)
-#define YYABORT return(1)
-#define YYERROR goto yyerrlab1
-/* Like YYERROR except do call yyerror.
- This remains here temporarily to ease the
- transition to the new meaning of YYERROR, for GCC.
- Once GCC version 2 has supplanted version 1, this can go. */
-#define YYFAIL goto yyerrlab
-#define YYRECOVERING() (!!yyerrstatus)
-#define YYBACKUP(token, value) \
-do \
- if (yychar == YYEMPTY && yylen == 1) \
- { yychar = (token), yylval = (value); \
- yychar1 = YYTRANSLATE (yychar); \
- YYPOPSTACK; \
- goto yybackup; \
- } \
- else \
- { yyerror ("syntax error: cannot back up"); YYERROR; } \
-while (0)
-
-#define YYTERROR 1
-#define YYERRCODE 256
-
-#ifndef YYPURE
-#define YYLEX yylex()
-#endif
-
-#ifdef YYPURE
-#ifdef YYLSP_NEEDED
-#ifdef YYLEX_PARAM
-#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
-#else
-#define YYLEX yylex(&yylval, &yylloc)
-#endif
-#else /* not YYLSP_NEEDED */
-#ifdef YYLEX_PARAM
-#define YYLEX yylex(&yylval, YYLEX_PARAM)
-#else
-#define YYLEX yylex(&yylval)
-#endif
-#endif /* not YYLSP_NEEDED */
-#endif
-
-/* If nonreentrant, generate the variables here */
-
-#ifndef YYPURE
-
-int yychar; /* the lookahead symbol */
-YYSTYPE yylval; /* the semantic value of the */
- /* lookahead symbol */
-
-#ifdef YYLSP_NEEDED
-YYLTYPE yylloc; /* location data for the lookahead */
- /* symbol */
-#endif
-
-int yynerrs; /* number of parse errors so far */
-#endif /* not YYPURE */
-
-#if YYDEBUG != 0
-int yydebug; /* nonzero means print parse trace */
-/* Since this is uninitialized, it does not stop multiple parsers
- from coexisting. */
-#endif
-
-/* YYINITDEPTH indicates the initial size of the parser's stacks */
-
-#ifndef YYINITDEPTH
-#define YYINITDEPTH 200
-#endif
-
-/* YYMAXDEPTH is the maximum size the stacks can grow to
- (effective only if the built-in stack extension method is used). */
-
-#if YYMAXDEPTH == 0
-#undef YYMAXDEPTH
-#endif
-
-#ifndef YYMAXDEPTH
-#define YYMAXDEPTH 10000
-#endif
-
-/* Prevent warning if -Wstrict-prototypes. */
-#ifdef __GNUC__
-int yyparse (void);
-#endif
-\f
-#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
-#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
-#else /* not GNU C or C++ */
-#ifndef __cplusplus
-
-/* This is the most reliable way to avoid incompatibilities
- in available built-in functions on various systems. */
-static void
-__yy_memcpy (to, from, count)
- char *to;
- char *from;
- int count;
-{
- register char *f = from;
- register char *t = to;
- register int i = count;
-
- while (i-- > 0)
- *t++ = *f++;
-}
-
-#else /* __cplusplus */
-
-/* This is the most reliable way to avoid incompatibilities
- in available built-in functions on various systems. */
-static void
-__yy_memcpy (char *to, char *from, int count)
-{
- register char *f = from;
- register char *t = to;
- register int i = count;
-
- while (i-- > 0)
- *t++ = *f++;
-}
-
-#endif
-#endif
-\f
-#line 196 "bison.simple"
-
-/* The user can define YYPARSE_PARAM as the name of an argument to be passed
- into yyparse. The argument should have type void *.
- It should actually point to an object.
- Grammar actions can access the variable by casting it
- to the proper pointer type. */
-
-#ifdef YYPARSE_PARAM
-#ifdef __cplusplus
-#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL
-#else /* not __cplusplus */
-#define YYPARSE_PARAM_ARG YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
-#endif /* not __cplusplus */
-#else /* not YYPARSE_PARAM */
-#define YYPARSE_PARAM_ARG
-#define YYPARSE_PARAM_DECL
-#endif /* not YYPARSE_PARAM */
-
-int
-yyparse(YYPARSE_PARAM_ARG)
- YYPARSE_PARAM_DECL
-{
- register int yystate;
- register int yyn;
- register short *yyssp;
- register YYSTYPE *yyvsp;
- int yyerrstatus; /* number of tokens to shift before error messages enabled */
- int yychar1 = 0; /* lookahead token as an internal (translated) token number */
-
- short yyssa[YYINITDEPTH]; /* the state stack */
- YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
-
- short *yyss = yyssa; /* refer to the stacks thru separate pointers */
- YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
-
-#ifdef YYLSP_NEEDED
- YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
- YYLTYPE *yyls = yylsa;
- YYLTYPE *yylsp;
-
-#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
-#else
-#define YYPOPSTACK (yyvsp--, yyssp--)
-#endif
-
- int yystacksize = YYINITDEPTH;
-
-#ifdef YYPURE
- int yychar;
- YYSTYPE yylval;
- int yynerrs;
-#ifdef YYLSP_NEEDED
- YYLTYPE yylloc;
-#endif
-#endif
-
- YYSTYPE yyval; /* the variable used to return */
- /* semantic values from the action */
- /* routines */
-
- int yylen;
-
-#if YYDEBUG != 0
- if (yydebug)
- fprintf(stderr, "Starting parse\n");
-#endif
-
- yystate = 0;
- yyerrstatus = 0;
- yynerrs = 0;
- yychar = YYEMPTY; /* Cause a token to be read. */
-
- /* Initialize stack pointers.
- Waste one element of value and location stack
- so that they stay on the same level as the state stack.
- The wasted elements are never initialized. */
-
- yyssp = yyss - 1;
- yyvsp = yyvs;
-#ifdef YYLSP_NEEDED
- yylsp = yyls;
-#endif
-
-/* Push a new state, which is found in yystate . */
-/* In all cases, when you get here, the value and location stacks
- have just been pushed. so pushing a state here evens the stacks. */
-yynewstate:
-
- *++yyssp = yystate;
-
- if (yyssp >= yyss + yystacksize - 1)
- {
- /* Give user a chance to reallocate the stack */
- /* Use copies of these so that the &'s don't force the real ones into memory. */
- YYSTYPE *yyvs1 = yyvs;
- short *yyss1 = yyss;
-#ifdef YYLSP_NEEDED
- YYLTYPE *yyls1 = yyls;
-#endif
-
- /* Get the current used size of the three stacks, in elements. */
- int size = yyssp - yyss + 1;
-
-#ifdef yyoverflow
- /* Each stack pointer address is followed by the size of
- the data in use in that stack, in bytes. */
-#ifdef YYLSP_NEEDED
- /* This used to be a conditional around just the two extra args,
- but that might be undefined if yyoverflow is a macro. */
- yyoverflow("parser stack overflow",
- &yyss1, size * sizeof (*yyssp),
- &yyvs1, size * sizeof (*yyvsp),
- &yyls1, size * sizeof (*yylsp),
- &yystacksize);
-#else
- yyoverflow("parser stack overflow",
- &yyss1, size * sizeof (*yyssp),
- &yyvs1, size * sizeof (*yyvsp),
- &yystacksize);
-#endif
-
- yyss = yyss1; yyvs = yyvs1;
-#ifdef YYLSP_NEEDED
- yyls = yyls1;
-#endif
-#else /* no yyoverflow */
- /* Extend the stack our own way. */
- if (yystacksize >= YYMAXDEPTH)
- {
- yyerror("parser stack overflow");
- return 2;
- }
- yystacksize *= 2;
- if (yystacksize > YYMAXDEPTH)
- yystacksize = YYMAXDEPTH;
- yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
- __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp));
- yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
- __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp));
-#ifdef YYLSP_NEEDED
- yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
- __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp));
-#endif
-#endif /* no yyoverflow */
-
- yyssp = yyss + size - 1;
- yyvsp = yyvs + size - 1;
-#ifdef YYLSP_NEEDED
- yylsp = yyls + size - 1;
-#endif
-
-#if YYDEBUG != 0
- if (yydebug)
- fprintf(stderr, "Stack size increased to %d\n", yystacksize);
-#endif
-
- if (yyssp >= yyss + yystacksize - 1)
- YYABORT;
- }
-
-#if YYDEBUG != 0
- if (yydebug)
- fprintf(stderr, "Entering state %d\n", yystate);
-#endif
-
- goto yybackup;
- yybackup:
-
-/* Do appropriate processing given the current state. */
-/* Read a lookahead token if we need one and don't already have one. */
-/* yyresume: */
-
- /* First try to decide what to do without reference to lookahead token. */
-
- yyn = yypact[yystate];
- if (yyn == YYFLAG)
- goto yydefault;
-
- /* Not known => get a lookahead token if don't already have one. */
-
- /* yychar is either YYEMPTY or YYEOF
- or a valid token in external form. */
-
- if (yychar == YYEMPTY)
- {
-#if YYDEBUG != 0
- if (yydebug)
- fprintf(stderr, "Reading a token: ");
-#endif
- yychar = YYLEX;
- }
-
- /* Convert token to internal form (in yychar1) for indexing tables with */
-
- if (yychar <= 0) /* This means end of input. */
- {
- yychar1 = 0;
- yychar = YYEOF; /* Don't call YYLEX any more */
-
-#if YYDEBUG != 0
- if (yydebug)
- fprintf(stderr, "Now at end of input.\n");
-#endif
- }
- else
- {
- yychar1 = YYTRANSLATE(yychar);
-
-#if YYDEBUG != 0
- if (yydebug)
- {
- fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
- /* Give the individual parser a way to print the precise meaning
- of a token, for further debugging info. */
-#ifdef YYPRINT
- YYPRINT (stderr, yychar, yylval);
-#endif
- fprintf (stderr, ")\n");
- }
-#endif
- }
-
- yyn += yychar1;
- if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
- goto yydefault;
-
- yyn = yytable[yyn];
-
- /* yyn is what to do for this token type in this state.
- Negative => reduce, -yyn is rule number.
- Positive => shift, yyn is new state.
- New state is final state => don't bother to shift,
- just return success.
- 0, or most negative number => error. */
-
- if (yyn < 0)
- {
- if (yyn == YYFLAG)
- goto yyerrlab;
- yyn = -yyn;
- goto yyreduce;
- }
- else if (yyn == 0)
- goto yyerrlab;
-
- if (yyn == YYFINAL)
- YYACCEPT;
-
- /* Shift the lookahead token. */
-
-#if YYDEBUG != 0
- if (yydebug)
- fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
-#endif
-
- /* Discard the token being shifted unless it is eof. */
- if (yychar != YYEOF)
- yychar = YYEMPTY;
-
- *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
- *++yylsp = yylloc;
-#endif
-
- /* count tokens shifted since error; after three, turn off error status. */
- if (yyerrstatus) yyerrstatus--;
-
- yystate = yyn;
- goto yynewstate;
-
-/* Do the default action for the current state. */
-yydefault:
-
- yyn = yydefact[yystate];
- if (yyn == 0)
- goto yyerrlab;
-
-/* Do a reduction. yyn is the number of a rule to reduce with. */
-yyreduce:
- yylen = yyr2[yyn];
- if (yylen > 0)
- yyval = yyvsp[1-yylen]; /* implement default value of the action */
-
-#if YYDEBUG != 0
- if (yydebug)
- {
- int i;
-
- fprintf (stderr, "Reducing via rule %d (line %d), ",
- yyn, yyrline[yyn]);
-
- /* Print the symbols being reduced, and their result. */
- for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
- fprintf (stderr, "%s ", yytname[yyrhs[i]]);
- fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
- }
-#endif
-
-
- switch (yyn) {
-
-case 3:
-#line 16 "rparse.y"
-{ section (); ;
- break;}
-case 4:
-#line 18 "rparse.y"
-{ setPciParams (yytext); ;
- break;}
-case 7:
-#line 27 "rparse.y"
-{ assignKeyVal (yyvsp[-2], yyvsp[0]); ;
- break;}
-case 8:
-#line 29 "rparse.y"
-{ assignKeyStr (yyvsp[-2], yytext); ;
- break;}
-case 9:
-#line 32 "rparse.y"
-{ yyval=yyvsp[0]; ;
- break;}
-case 10:
-#line 33 "rparse.y"
-{ yyval=yyvsp[0]; ;
- break;}
-case 11:
-#line 34 "rparse.y"
-{ yyval=yyvsp[0]; ;
- break;}
-case 12:
-#line 35 "rparse.y"
-{ yyval=yyvsp[0]; ;
- break;}
-case 13:
-#line 36 "rparse.y"
-{ yyval=yyvsp[0]; ;
- break;}
-case 14:
-#line 37 "rparse.y"
-{ yyval=yyvsp[0]; ;
- break;}
-case 15:
-#line 38 "rparse.y"
-{ yyval=yyvsp[0]; ;
- break;}
-case 16:
-#line 39 "rparse.y"
-{ yyval=yyvsp[0]; ;
- break;}
-case 17:
-#line 40 "rparse.y"
-{ yyval=yyvsp[0]; ;
- break;}
-case 18:
-#line 41 "rparse.y"
-{ yyval=yyvsp[0]; ;
- break;}
-case 19:
-#line 42 "rparse.y"
-{ yyval=yyvsp[0]; ;
- break;}
-case 20:
-#line 43 "rparse.y"
-{ yyval=yyvsp[0]; ;
- break;}
-}
- /* the action file gets copied in in place of this dollarsign */
-#line 498 "bison.simple"
-\f
- yyvsp -= yylen;
- yyssp -= yylen;
-#ifdef YYLSP_NEEDED
- yylsp -= yylen;
-#endif
-
-#if YYDEBUG != 0
- if (yydebug)
- {
- short *ssp1 = yyss - 1;
- fprintf (stderr, "state stack now");
- while (ssp1 != yyssp)
- fprintf (stderr, " %d", *++ssp1);
- fprintf (stderr, "\n");
- }
-#endif
-
- *++yyvsp = yyval;
-
-#ifdef YYLSP_NEEDED
- yylsp++;
- if (yylen == 0)
- {
- yylsp->first_line = yylloc.first_line;
- yylsp->first_column = yylloc.first_column;
- yylsp->last_line = (yylsp-1)->last_line;
- yylsp->last_column = (yylsp-1)->last_column;
- yylsp->text = 0;
- }
- else
- {
- yylsp->last_line = (yylsp+yylen-1)->last_line;
- yylsp->last_column = (yylsp+yylen-1)->last_column;
- }
-#endif
-
- /* Now "shift" the result of the reduction.
- Determine what state that goes to,
- based on the state we popped back to
- and the rule number reduced by. */
-
- yyn = yyr1[yyn];
-
- yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
- if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
- yystate = yytable[yystate];
- else
- yystate = yydefgoto[yyn - YYNTBASE];
-
- goto yynewstate;
-
-yyerrlab: /* here on detecting error */
-
- if (! yyerrstatus)
- /* If not already recovering from an error, report this error. */
- {
- ++yynerrs;
-
-#ifdef YYERROR_VERBOSE
- yyn = yypact[yystate];
-
- if (yyn > YYFLAG && yyn < YYLAST)
- {
- int size = 0;
- char *msg;
- int x, count;
-
- count = 0;
- /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
- for (x = (yyn < 0 ? -yyn : 0);
- x < (sizeof(yytname) / sizeof(char *)); x++)
- if (yycheck[x + yyn] == x)
- size += strlen(yytname[x]) + 15, count++;
- msg = (char *) malloc(size + 15);
- if (msg != 0)
- {
- strcpy(msg, "parse error");
-
- if (count < 5)
- {
- count = 0;
- for (x = (yyn < 0 ? -yyn : 0);
- x < (sizeof(yytname) / sizeof(char *)); x++)
- if (yycheck[x + yyn] == x)
- {
- strcat(msg, count == 0 ? ", expecting `" : " or `");
- strcat(msg, yytname[x]);
- strcat(msg, "'");
- count++;
- }
- }
- yyerror(msg);
- free(msg);
- }
- else
- yyerror ("parse error; also virtual memory exceeded");
- }
- else
-#endif /* YYERROR_VERBOSE */
- yyerror("parse error");
- }
-
- goto yyerrlab1;
-yyerrlab1: /* here on error raised explicitly by an action */
-
- if (yyerrstatus == 3)
- {
- /* if just tried and failed to reuse lookahead token after an error, discard it. */
-
- /* return failure if at end of input */
- if (yychar == YYEOF)
- YYABORT;
-
-#if YYDEBUG != 0
- if (yydebug)
- fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
-#endif
-
- yychar = YYEMPTY;
- }
-
- /* Else will try to reuse lookahead token
- after shifting the error token. */
-
- yyerrstatus = 3; /* Each real token shifted decrements this */
-
- goto yyerrhandle;
-
-yyerrdefault: /* current state does not do anything special for the error token. */
-
-#if 0
- /* This is wrong; only states that explicitly want error tokens
- should shift them. */
- yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
- if (yyn) goto yydefault;
-#endif
-
-yyerrpop: /* pop the current state because it cannot handle the error token */
-
- if (yyssp == yyss) YYABORT;
- yyvsp--;
- yystate = *--yyssp;
-#ifdef YYLSP_NEEDED
- yylsp--;
-#endif
-
-#if YYDEBUG != 0
- if (yydebug)
- {
- short *ssp1 = yyss - 1;
- fprintf (stderr, "Error: state stack now");
- while (ssp1 != yyssp)
- fprintf (stderr, " %d", *++ssp1);
- fprintf (stderr, "\n");
- }
-#endif
-
-yyerrhandle:
-
- yyn = yypact[yystate];
- if (yyn == YYFLAG)
- goto yyerrdefault;
-
- yyn += YYTERROR;
- if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
- goto yyerrdefault;
-
- yyn = yytable[yyn];
- if (yyn < 0)
- {
- if (yyn == YYFLAG)
- goto yyerrpop;
- yyn = -yyn;
- goto yyreduce;
- }
- else if (yyn == 0)
- goto yyerrpop;
-
- if (yyn == YYFINAL)
- YYACCEPT;
-
-#if YYDEBUG != 0
- if (yydebug)
- fprintf(stderr, "Shifting error token, ");
-#endif
-
- *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
- *++yylsp = yylloc;
-#endif
-
- yystate = yyn;
- goto yynewstate;
-}
-#line 46 "rparse.y"
-
-
-
diff --git a/src/util/romparse_c6472/rparse.tab.h b/src/util/romparse_c6472/rparse.tab.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef YYSTYPE
-#define YYSTYPE int
-#endif
-#define LBRACE 258
-#define RBRACE 259
-#define SECTION 260
-#define EQU 261
-#define VALUE 262
-#define STRING 263
-#define BOOT_MODE 264
-#define PARAM_INDEX 265
-#define OPTIONS 266
-#define MULTI_I2C_ID 267
-#define MY_I2C_ID 268
-#define CORE_FREQ_MHZ 269
-#define I2C_CLK_FREQ_KHZ 270
-#define EXE_FILE 271
-#define PCI_PARMS 272
-#define NEXT_DEV_ADDR 273
-#define NEXT_DEV_ADDR_EXT 274
-#define ADDRESS_DELAY 275
-#define SWPLL 276
-
-
-extern YYSTYPE yylval;