/* * hex2hex reads stdin in Intel HEX format and produces an * (unsigned char) array which contains the bytes and writes it * to stdout using C syntax */ #include <stdio.h> #include <string.h> #include <stdlib.h> #define ABANDON(why) { fprintf(stderr, "%s\n", why); exit(1); } #define MAX_SIZE (256*1024) unsigned char buf[MAX_SIZE]; static int loadhex(FILE *inf, unsigned char *buf) { int l=0, c, i; while ((c=getc(inf))!=EOF) { if (c == ':') /* Sync with beginning of line */ { int n, check; unsigned char sum; int addr; int linetype; if (fscanf(inf, "%02x", &n) != 1) ABANDON("File format error"); sum = n; if (fscanf(inf, "%04x", &addr) != 1) ABANDON("File format error"); sum += addr/256; sum += addr%256; if (fscanf(inf, "%02x", &linetype) != 1) ABANDON("File format error"); sum += linetype; if (linetype != 0) continue; for (i=0;i<n;i++) { if (fscanf(inf, "%02x", &c) != 1) ABANDON("File format error"); if (addr >= MAX_SIZE) ABANDON("File too large"); buf[addr++] = c; if (addr > l) l = addr; sum += c; } if (fscanf(inf, "%02x", &check) != 1) ABANDON("File format error"); sum = ~sum + 1; if (check != sum) ABANDON("Line checksum error"); } } return l; } int main( int argc, const char * argv [] ) { const char * varline; int i,l; int id=0; if(argv[1] && strcmp(argv[1], "-i")==0) { argv++; argc--; id=1; } if(argv[1]==NULL) { fprintf(stderr,"hex2hex: [-i] filename\n"); exit(1); } varline = argv[1]; l = loadhex(stdin, buf); printf("/*\n *\t Computer generated file. Do not edit.\n */\n"); printf("static int %s_len = %d;\n", varline, l); printf("static unsigned char %s[] %s = {\n", varline, id?"__initdata":""); for (i=0;i<l;i++) { if (i) printf(","); if (i && !(i % 16)) printf("\n"); printf("0x%02x", buf[i]); } printf("\n};\n\n"); return 0; } ools/perf/bench/mem-memcpy-x86-64-asm.S?id=4456f61cfd2a589c4368fe0b9080b646b9bd470d'>commit</a><a href='/cgit.cgi/linux/net-next.git/diff/tools/perf/bench/mem-memcpy-x86-64-asm.S?id=4456f61cfd2a589c4368fe0b9080b646b9bd470d'>diff</a></td><td class='form'><form class='right' method='get' action='/cgit.cgi/linux/net-next.git/log/tools/perf/bench/mem-memcpy-x86-64-asm.S'> <input type='hidden' name='id' value='4456f61cfd2a589c4368fe0b9080b646b9bd470d'/><select name='qt'> <option value='grep'>log msg</option> <option value='author'>author</option> <option value='committer'>committer</option> <option value='range'>range</option> </select> <input class='txt' type='search' size='10' name='q' value=''/> <input type='submit' value='search'/> </form> </td></tr></table> <div class='path'>path: <a href='/cgit.cgi/linux/net-next.git/log/?id=4456f61cfd2a589c4368fe0b9080b646b9bd470d'>root</a>/<a href='/cgit.cgi/linux/net-next.git/log/tools?id=4456f61cfd2a589c4368fe0b9080b646b9bd470d'>tools</a>/<a href='/cgit.cgi/linux/net-next.git/log/tools/perf?id=4456f61cfd2a589c4368fe0b9080b646b9bd470d'>perf</a>/<a href='/cgit.cgi/linux/net-next.git/log/tools/perf/bench?id=4456f61cfd2a589c4368fe0b9080b646b9bd470d'>bench</a>/<a href='/cgit.cgi/linux/net-next.git/log/tools/perf/bench/mem-memcpy-x86-64-asm.S?id=4456f61cfd2a589c4368fe0b9080b646b9bd470d'>mem-memcpy-x86-64-asm.S</a></div><div class='content'><table class='list nowrap'><tr class='nohover'><th class='left'>Age</th><th class='left'>Commit message (<a href='/cgit.cgi/linux/net-next.git/log/tools/perf/bench/mem-memcpy-x86-64-asm.S?id=4456f61cfd2a589c4368fe0b9080b646b9bd470d&showmsg=1'>Expand</a>)</th><th class='left'>Author</th><th class='left'>Files</th><th class='left'>Lines</th></tr>