args.nreturns = 1; args.verbs = ADR2CELL(s); openfirmware(&args);  return args.status;
args.nreturns = ++nreturns; args.slot[i++] = ADR2CELL(cmd); va_start(ap, nreturns); while (i < 1) args.slot[i++] = va_arg(ap, cell_t); if (openfirmware(&args) == -1) { va_end(ap); return (-1); } status = args.slot[i++]; while (i < 1 + nreturns) *va_arg(ap, cell_t *) = args.slot[i++]; va_end(ap); return (status);
OF_interpret(char *s, int nreturns, ...){	struct {		cell_t name;		cell_t nargs;		cell_t nreturns;		cell_t verbs;		cell_t status;	} args;	if (nreturns != 1)		panic("XXX - OF_interpret: can't handle multiple returns");		args.name = ADR2CELL(&"interpret");	args.nargs = 1;	args.nreturns = 1;	args.verbs = ADR2CELL(s);	openfirmware(&args);	return args.status;}