Changeset 4606
- Timestamp:
- 08/25/08 20:38:51 (5 years ago)
- Location:
- developers/werner/greg
- Files:
-
- 1 added
- 1 edited
-
greg.c (modified) (3 diffs)
-
s3c24xx-spi.greg (added)
Legend:
- Unmodified
- Added
- Removed
-
developers/werner/greg/greg.c
r4504 r4606 15 15 #include <stdlib.h> 16 16 #include <stdio.h> 17 #include <string.h> 17 18 18 19 #include "reg.h" … … 103 104 104 105 106 static void dump_c_values(const char *reg_name, const struct field *field) 107 { 108 const char *name; 109 unsigned long long i; 110 111 if (field->value.type != vt_list) 112 return; 113 for (i = 0; i != 1 << field->bits; i++) { 114 name = field->value.u.list[i].name; 115 if (name) 116 printf("#define %s_%s_%s %llu\n", 117 reg_name, field->name, name, i); 118 } 119 } 120 121 122 static void dump_c(void) 123 { 124 const struct reg *reg; 125 const struct field *field; 126 int bits; 127 128 for (reg = regs; reg; reg = reg->next) { 129 printf("#define %s %s\n", reg->name, reg->id); 130 bits = 0; 131 for (field = reg->fields; field; field = field->next) { 132 if (field->name) { 133 printf("#define %s_%s %d\n", 134 reg->name, field->name, bits); 135 dump_c_values(reg->name, field); 136 } 137 bits += field->bits; 138 } 139 } 140 } 141 142 105 143 static void usage(const char *name) 106 144 { 107 145 fprintf(stderr, "usage: %s regdef-file [reg value ...]\n", name); 146 fprintf(stderr, " %s regdef-file -d\n", name); 108 147 exit(1); 109 148 } … … 114 153 int i; 115 154 116 if (argc < 2 || (argc & 1))155 if (argc < 2) 117 156 usage(*argv); 118 157 run_cpp_on_file(argv[1]); 119 158 (void) yyparse(); 159 if (argc == 3 && !strcmp(argv[2], "-d")) { 160 dump_c(); 161 return 0; 162 } 163 if (argc & 1) 164 usage(*argv); 120 165 for (i = 2; i != argc; i += 2) 121 166 print(argv[i], strtoull(argv[i+1], NULL, 0)); 122 167 return 0; 123 124 168 }
Note: See TracChangeset
for help on using the changeset viewer.
