aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/cetools/files/sean-hsieh.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/cetools/files/sean-hsieh.patch')
-rw-r--r--recipes/cetools/files/sean-hsieh.patch97
1 files changed, 97 insertions, 0 deletions
diff --git a/recipes/cetools/files/sean-hsieh.patch b/recipes/cetools/files/sean-hsieh.patch
new file mode 100644
index 0000000000..ce1b4965af
--- /dev/null
+++ b/recipes/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