64#include <sys/kernel.h>
65#include <sys/malloc.h>
68#include <machine/stdarg.h>
84 const char *propname);
86 const char *propname,
void *buf,
size_t buflen);
90 const void *buf,
size_t len);
95 char *buf,
size_t len);
99 const char *method,
int nargs,
int nreturns, cell_t *args_and_returns);
181 args.service = (cell_t)name;
184 return (args.missing);
202 args.nreturns = ++nreturns;
203 args.slot[i++] = (cell_t)cmd;
206 status = args.slot[i++];
207 while (i < 1 + nreturns)
208 returns[j++] = args.slot[i++];
279 return (args.parent);
293 (cell_t)
"instance-to-package",
298 args.instance = instance;
301 return (args.package);
316 (cell_t)
"getproplen",
321 args.package = package;
322 args.propname = (cell_t)propname;
325 return (args.proplen);
348 args.package = package;
349 args.propname = (cell_t)propname;
350 args.buf = (cell_t)buf;
351 args.buflen = buflen;
376 args.package = package;
377 args.previous = (cell_t)previous;
378 args.buf = (cell_t)buf;
388 const void *buf,
size_t len)
405 args.package = package;
406 args.propname = (cell_t)propname;
407 args.buf = (cell_t)buf;
432 args.device = (cell_t)device;
433 args.buf = (cell_t)buf;
451 (cell_t)
"finddevice",
456 args.device = (cell_t)device;
459 return (args.package);
475 (cell_t)
"instance-to-path",
480 args.instance = instance;
481 args.buf = (cell_t)buf;
501 (cell_t)
"package-to-path",
506 args.package = package;
507 args.buf = (cell_t)buf;
517 int nargs,
int nreturns, cell_t *args_and_returns)
525 cell_t args_n_results[12];
527 (cell_t)
"call-method",
536 args.nargs = nargs + 2;
537 args.nreturns = nreturns + 1;
538 args.method = (cell_t)method;
539 args.instance = instance;
541 ap = args_and_returns;
542 for (cp = args.args_n_results + (n = nargs); --n >= 0;)
546 if (args.args_n_results[nargs])
547 return (args.args_n_results[nargs]);
548 for (cp = args.args_n_results + nargs + (n = args.nreturns); --n > 0;)
573 args.device = (cell_t)device;
576 return (args.instance);
594 args.instance = instance;
616 args.instance = instance;
617 args.addr = (cell_t)addr;
622 return (args.actual);
643 args.instance = instance;
644 args.addr = (cell_t)addr;
648 return (args.actual);
669 args.instance = instance;
670 args.poshi = pos >> 32;
674 return (args.status);
699 args.virt = (cell_t)virt;
704 return ((
void *)args.baseaddr);
723 args.virt = (cell_t)virt;
METHOD phandle_t parent
Return parent of node.
METHOD phandle_t child
Return first child of node.
static ssize_t ofw_std_canon(ofw_t ofw, const char *device, char *buf, size_t len)
static phandle_t ofw_std_instance_to_package(ofw_t ofw, ihandle_t instance)
static phandle_t ofw_std_finddevice(ofw_t ofw, const char *device)
static void ofw_std_release(ofw_t ofw, void *virt, size_t size)
static ssize_t ofw_std_read(ofw_t ofw, ihandle_t instance, void *addr, size_t len)
static ssize_t ofw_std_instance_to_path(ofw_t ofw, ihandle_t instance, char *buf, size_t len)
static int ofw_std_seek(ofw_t ofw, ihandle_t instance, uint64_t pos)
static ssize_t ofw_std_package_to_path(ofw_t ofw, phandle_t package, char *buf, size_t len)
static int ofw_std_test(ofw_t ofw, const char *name)
static void ofw_std_exit(ofw_t ofw)
static phandle_t ofw_std_peer(ofw_t ofw, phandle_t node)
static int ofw_std_interpret(ofw_t ofw, const char *cmd, int nreturns, cell_t *returns)
static void ofw_std_close(ofw_t ofw, ihandle_t instance)
static caddr_t ofw_std_claim(ofw_t ofw, void *virt, size_t size, u_int align)
static phandle_t ofw_std_parent(ofw_t ofw, phandle_t node)
static void ofw_std_enter(ofw_t ofw)
static int(* openfirmware)(void *)
static int ofw_std_nextprop(ofw_t ofw, phandle_t package, const char *previous, char *buf, size_t)
static phandle_t ofw_std_child(ofw_t ofw, phandle_t node)
static int ofw_std_init(ofw_t ofw, void *openfirm)
static ofw_method_t ofw_std_methods[]
static ssize_t ofw_std_getproplen(ofw_t ofw, phandle_t package, const char *propname)
static int ofw_std_setprop(ofw_t ofw, phandle_t package, const char *propname, const void *buf, size_t len)
static int ofw_std_call_method(ofw_t ofw, ihandle_t instance, const char *method, int nargs, int nreturns, cell_t *args_and_returns)
static ssize_t ofw_std_getprop(ofw_t ofw, phandle_t package, const char *propname, void *buf, size_t buflen)
static ssize_t ofw_std_write(ofw_t ofw, ihandle_t instance, const void *addr, size_t len)
static ihandle_t ofw_std_open(ofw_t ofw, const char *device)
struct kobj_class ofw_def_t