+ char *p = buf;
+ size_t l;
+ int i;
+
+ if (pp->ret_type.is_ptr)
+ *p++ = 'p';
+ else if (IS(pp->ret_type.name, "void"))
+ *p++ = 'v';
+ else
+ *p++ = 'i';
+ *p++ = '(';
+ l = 2;
+
+ for (i = 0; i < pp->argc; i++) {
+ if (pp->arg[i].reg != NULL)
+ snprintf(buf + l, buf_size - l, "%s%s",
+ i == 0 ? "" : ",", pp->arg[i].reg);
+ else
+ snprintf(buf + l, buf_size - l, "%sa%d",
+ i == 0 ? "" : ",", i + 1);
+ l = strlen(buf);
+ }
+ snprintf(buf + l, buf_size - l, ")");
+}