diff options
Diffstat (limited to 'packages/cetools/files/sean-hsieh.patch')
-rw-r--r-- | packages/cetools/files/sean-hsieh.patch | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/packages/cetools/files/sean-hsieh.patch b/packages/cetools/files/sean-hsieh.patch index e69de29bb2..ce1b4965af 100644 --- a/packages/cetools/files/sean-hsieh.patch +++ b/packages/cetools/files/sean-hsieh.patch @@ -0,0 +1,97 @@ + +# +# Patch managed by http://www.holgerschurig.de/patcher.html +# + +--- cetools-0.3/bin2rom.c~sean-hsieh ++++ cetools-0.3/bin2rom.c +@@ -14,6 +14,12 @@ + 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. ++ ++ History: ++ 07/14/2000 Sean Hsieh ++ Clear padding bytes of the input buffer when ++ "blockSize < BLOCKSIZE" to avoid the checksum ++ error + */ + #include <stdio.h> + #include <sys/stat.h> +@@ -28,7 +34,7 @@ + + #define min(a, b) (a<b)?(a):(b) + +-int bin2rom( char * inputName, char * outputName, long start, long boot ) ++int bin2rom( char * inputName, char * outputName, long start, long boot, long record ) + { + int input; + int output; +@@ -48,7 +54,7 @@ + + int reste; + +- printf("bin2rom : input filename = %s, output filename = %s, start = 0x%lx, boot=0x%lx\n", inputName, outputName, start, boot ); ++ printf("bin2rom : input filename = %s, output filename = %s, start = 0x%08lx, boot=0x%08lx, record=0x%08lx\n", inputName, outputName, start, boot, record ); + + input = open( inputName, O_RDONLY ); + if( input == -1 ) +@@ -247,7 +253,14 @@ + while( reste > 0 ) + { + blockSize = min( BLOCKSIZE, reste ); +- ++ /**********************************************************************/ ++ /* Modified by Sean Hsieh */ ++ /* Clear the padding bytes to zero, this can avoid the checksum error */ ++ /**********************************************************************/ ++ if ( blockSize != BLOCKSIZE ) { ++ memset( inStart, 0, BLOCKSIZE ); ++ //printf( "adding padding bytes\n" ); ++ } + read( input, inStart, blockSize ); + + #ifdef MAP_OUTPUT +@@ -285,7 +298,8 @@ + + write( output, &boot, 4); + +- write( output, &nullData, 4); ++ //write( output, &nullData, 4); ++ write( output, &record, 4); + + #endif + +@@ -339,17 +353,26 @@ + { + long start; + long boot; ++ long record; + +- if( argc < 5 ) ++ if ( argc < 5 ) + { +- printf("bin2rom: <input file> <output file> <start address> <boot address>\n"); +- exit( -1 ); ++ printf("bin2rom: <input file> <output file> <start address> <boot address> [<record address>] [-s] [-c]\n"); ++ exit( -1 ); + } + + sscanf( argv[3], "%lx", &start ); + sscanf( argv[4], "%lx", &boot ); +- +- bin2rom( argv[1], argv[2], start, boot ); ++ if ( argc >= 6 ) ++ { ++ sscanf( argv[5], "%lx", &record ); ++ } ++ else ++ { ++ record = 0xffffffff; ++ } ++ ++ bin2rom( argv[1], argv[2], start, boot, record ); + + return 0; + } +\ No newline at end of file |