mktree.c (9cdf083f981b8d37b3212400a359368661385099) | mktree.c (f6dfc80554b27da11dbb36ebae166b23ec3aa9ca) |
---|---|
1/* 2 * Makes a tree bootable image for IBM Evaluation boards. 3 * Basically, just take a zImage, skip the ELF header, and stuff 4 * a 32 byte header on the front. 5 * 6 * We use htonl, which is a network macro, to make sure we're doing 7 * The Right Thing on an LE machine. It's non-obvious, but it should 8 * work on anything BSD'ish. --- 32 unchanged lines hidden (view full) --- 41int main(int argc, char *argv[]) 42{ 43 int in_fd, out_fd; 44 int nblks, i; 45 uint cksum, *cp; 46 struct stat st; 47 boot_block_t bt; 48 | 1/* 2 * Makes a tree bootable image for IBM Evaluation boards. 3 * Basically, just take a zImage, skip the ELF header, and stuff 4 * a 32 byte header on the front. 5 * 6 * We use htonl, which is a network macro, to make sure we're doing 7 * The Right Thing on an LE machine. It's non-obvious, but it should 8 * work on anything BSD'ish. --- 32 unchanged lines hidden (view full) --- 41int main(int argc, char *argv[]) 42{ 43 int in_fd, out_fd; 44 int nblks, i; 45 uint cksum, *cp; 46 struct stat st; 47 boot_block_t bt; 48 |
49 if (argc < 3) { 50 fprintf(stderr, "usage: %s <zImage-file> <boot-image> [entry-point]\n",argv[0]); | 49 if (argc < 5) { 50 fprintf(stderr, "usage: %s <zImage-file> <boot-image> <load address> <entry point>\n",argv[0]); |
51 exit(1); 52 } 53 54 if (stat(argv[1], &st) < 0) { 55 perror("stat"); 56 exit(2); 57 } 58 59 nblks = (st.st_size + IMGBLK) / IMGBLK; 60 61 bt.bb_magic = htonl(0x0052504F); 62 63 /* If we have the optional entry point parameter, use it */ | 51 exit(1); 52 } 53 54 if (stat(argv[1], &st) < 0) { 55 perror("stat"); 56 exit(2); 57 } 58 59 nblks = (st.st_size + IMGBLK) / IMGBLK; 60 61 bt.bb_magic = htonl(0x0052504F); 62 63 /* If we have the optional entry point parameter, use it */ |
64 if (argc == 4) 65 bt.bb_dest = bt.bb_entry_point = htonl(strtoul(argv[3], NULL, 0)); 66 else 67 bt.bb_dest = bt.bb_entry_point = htonl(0x500000); | 64 bt.bb_dest = htonl(strtoul(argv[3], NULL, 0)); 65 bt.bb_entry_point = htonl(strtoul(argv[4], NULL, 0)); |
68 69 /* We know these from the linker command. 70 * ...and then move it up into memory a little more so the 71 * relocation can happen. 72 */ 73 bt.bb_num_512blocks = htonl(nblks); 74 bt.bb_debug_flag = 0; 75 --- 77 unchanged lines hidden --- | 66 67 /* We know these from the linker command. 68 * ...and then move it up into memory a little more so the 69 * relocation can happen. 70 */ 71 bt.bb_num_512blocks = htonl(nblks); 72 bt.bb_debug_flag = 0; 73 --- 77 unchanged lines hidden --- |