git.samba.org
/
sfrench
/
cifs-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rtc: Add support for the rtc found in the MC13892 PMIC
[sfrench/cifs-2.6.git]
/
firmware
/
ihex2fw.c
diff --git
a/firmware/ihex2fw.c
b/firmware/ihex2fw.c
index 5a03ba8c8364e9cc4dde9655871d4a13b6ff2463..ba0cf0b601bb925fc3ce514d1f1dd55569feac91 100644
(file)
--- a/
firmware/ihex2fw.c
+++ b/
firmware/ihex2fw.c
@@
-55,6
+55,7
@@
static int output_records(int outfd);
static int sort_records = 0;
static int wide_records = 0;
static int sort_records = 0;
static int wide_records = 0;
+static int include_jump = 0;
static int usage(void)
{
static int usage(void)
{
@@
-63,6
+64,7
@@
static int usage(void)
fprintf(stderr, "usage: ihex2fw [<options>] <src.HEX> <dst.fw>\n");
fprintf(stderr, " -w: wide records (16-bit length)\n");
fprintf(stderr, " -s: sort records by address\n");
fprintf(stderr, "usage: ihex2fw [<options>] <src.HEX> <dst.fw>\n");
fprintf(stderr, " -w: wide records (16-bit length)\n");
fprintf(stderr, " -s: sort records by address\n");
+ fprintf(stderr, " -j: include records for CS:IP/EIP address\n");
return 1;
}
return 1;
}
@@
-73,7
+75,7
@@
int main(int argc, char **argv)
uint8_t *data;
int opt;
uint8_t *data;
int opt;
- while ((opt = getopt(argc, argv, "ws")) != -1) {
+ while ((opt = getopt(argc, argv, "ws
j
")) != -1) {
switch (opt) {
case 'w':
wide_records = 1;
switch (opt) {
case 'w':
wide_records = 1;
@@
-81,7
+83,9
@@
int main(int argc, char **argv)
case 's':
sort_records = 1;
break;
case 's':
sort_records = 1;
break;
- default:
+ case 'j':
+ include_jump = 1;
+ break;
return usage();
}
}
return usage();
}
}
@@
-128,6
+132,7
@@
static int process_ihex(uint8_t *data, ssize_t size)
{
struct ihex_binrec *record;
uint32_t offset = 0;
{
struct ihex_binrec *record;
uint32_t offset = 0;
+ uint32_t data32;
uint8_t type, crc = 0, crcbyte = 0;
int i, j;
int line = 1;
uint8_t type, crc = 0, crcbyte = 0;
int i, j;
int line = 1;
@@
-223,8
+228,14
@@
next_record:
return -EINVAL;
}
return -EINVAL;
}
+ memcpy(&data32, &record->data[0], sizeof(data32));
+ data32 = htonl(data32);
+ memcpy(&record->data[0], &data32, sizeof(data32));
+
/* These records contain the CS/IP or EIP where execution
/* These records contain the CS/IP or EIP where execution
- * starts. Don't really know what to do with them. */
+ * starts. If requested output this as a record. */
+ if (include_jump)
+ file_record(record);
goto next_record;
default:
goto next_record;
default: