case DXT_BYTE:
return ".byte";
case DXT_WORD:
- return ".word";
+ return ".hword";
case DXT_DWORD:
return ".long";
case DXT_QUAD:
{
const struct parsed_proto *pp, *pp_sym;
char fp_sym[256], fp_var[256];
- int i, bad = 0;
pp = proto_parse(fhdr, varname, 1);
if (pp == NULL) {
return pp;
}
- if (pp->argc != pp_sym->argc || pp->argc_reg != pp_sym->argc_reg)
- bad = 1;
- else {
- for (i = 0; i < pp->argc; i++) {
- if ((pp->arg[i].reg != NULL) != (pp_sym->arg[i].reg != NULL)) {
- bad = 1;
- break;
- }
- if ((pp->arg[i].reg != NULL)
- && !IS(pp->arg[i].reg, pp_sym->arg[i].reg))
- {
- bad = 1;
- break;
- }
- }
- }
-
- if (bad) {
+ if (pp_cmp_func(pp, pp_sym)) {
pp_print(fp_sym, sizeof(fp_sym), pp_sym);
anote("var: %s\n", fp_var);
anote("sym: %s\n", fp_sym);
asmln++;
p = sskip(line);
- if (*p == 0 || *p == ';')
+ if (*p == 0)
continue;
+ if (*p == ';') {
+ if (IS_START(p, ";org") && sscanf(p + 5, "%Xh", &i) == 1) {
+ // ;org is only seen at section start, so assume . addr 0
+ i &= 0xfff;
+ if (i != 0)
+ fprintf(fout, "\t\t .skip 0x%x\n", i);
+ }
+ continue;
+ }
+
for (wordc = 0; wordc < ARRAY_SIZE(words); wordc++) {
p = sskip(next_word_s(words[wordc], sizeof(words[0]), p));
if (*p == 0 || *p == ';') {