diff options
-rw-r--r-- | sys/boot/ofw/libofw/openfirm.c | 651 | ||||
-rw-r--r-- | sys/dev/ofw/openfirm.c | 535 |
2 files changed, 538 insertions, 648 deletions
diff --git a/sys/boot/ofw/libofw/openfirm.c b/sys/boot/ofw/libofw/openfirm.c index 9972f8f..97477dd 100644 --- a/sys/boot/ofw/libofw/openfirm.c +++ b/sys/boot/ofw/libofw/openfirm.c @@ -69,12 +69,12 @@ int (*openfirmware)(void *); ihandle_t mmu; ihandle_t memory; -/* Initialiaser */ +/* Initialiser */ void OF_init(int (*openfirm)(void *)) { - phandle_t chosen; + phandle_t chosen; openfirmware = openfirm; @@ -90,15 +90,14 @@ OF_init(int (*openfirm)(void *)) phandle_t OF_chosennode(void) { - static phandle_t chosen; + static phandle_t chosen; - if (chosen) - return (chosen); + if (chosen) + return (chosen); - if ((chosen = OF_finddevice("/chosen")) == -1) - OF_exit(); - - return (chosen); + if ((chosen = OF_finddevice("/chosen")) == -1) + OF_exit(); + return (chosen); } /* @@ -110,23 +109,21 @@ int OF_test(char *name) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t service; - cell_t missing; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t service; + cell_t missing; } args = { (cell_t)"test", 1, 1, - 0, - 0 }; args.service = (cell_t)name; if (openfirmware(&args) == -1) - return -1; - return (int)args.missing; + return (-1); + return (args.missing); } /* Return firmware millisecond count. */ @@ -134,19 +131,18 @@ int OF_milliseconds() { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t ms; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t ms; } args = { (cell_t)"milliseconds", 0, 1, - 0 }; - + openfirmware(&args); - return (int)args.ms; + return (args.ms); } /* @@ -158,23 +154,21 @@ phandle_t OF_peer(phandle_t node) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t node; - cell_t next; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t node; + cell_t next; } args = { (cell_t)"peer", 1, 1, - 0, - 0 }; - args.node = (u_int)node; + args.node = node; if (openfirmware(&args) == -1) - return -1; - return (phandle_t)args.next; + return (-1); + return (args.next); } /* Return the first child of this node or 0. */ @@ -182,23 +176,21 @@ phandle_t OF_child(phandle_t node) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t node; - cell_t child; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t node; + cell_t child; } args = { (cell_t)"child", 1, 1, - 0, - 0 }; - args.node = (u_int)node; + args.node = node; if (openfirmware(&args) == -1) - return -1; - return (phandle_t)args.child; + return (-1); + return (args.child); } /* Return the parent of this node or 0. */ @@ -206,23 +198,21 @@ phandle_t OF_parent(phandle_t node) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t node; - cell_t parent; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t node; + cell_t parent; } args = { (cell_t)"parent", 1, 1, - 0, - 0 }; - args.node = (u_int)node; + args.node = node; if (openfirmware(&args) == -1) - return -1; - return (phandle_t)args.parent; + return (-1); + return (args.parent); } /* Return the package handle that corresponds to an instance handle. */ @@ -230,23 +220,21 @@ phandle_t OF_instance_to_package(ihandle_t instance) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t instance; - cell_t package; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t instance; + cell_t package; } args = { (cell_t)"instance-to-package", 1, 1, - 0, - 0 }; - - args.instance = (u_int)instance; + + args.instance = instance; if (openfirmware(&args) == -1) - return -1; - return (phandle_t)args.package; + return (-1); + return (args.package); } /* Get the length of a property of a package. */ @@ -254,26 +242,23 @@ int OF_getproplen(phandle_t package, char *propname) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t package; - cell_t propname; - cell_t proplen; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t package; + cell_t propname; + cell_t proplen; } args = { (cell_t)"getproplen", 2, 1, - 0, - 0, - 0 }; - args.package = (u_int)package; + args.package = package; args.propname = (cell_t)propname; if (openfirmware(&args) == -1) - return -1; - return (int)args.proplen; + return (-1); + return (args.proplen); } /* Get the value of a property of a package. */ @@ -281,32 +266,27 @@ int OF_getprop(phandle_t package, char *propname, void *buf, int buflen) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t package; - cell_t propname; - cell_t buf; - cell_t buflen; - cell_t size; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t package; + cell_t propname; + cell_t buf; + cell_t buflen; + cell_t size; } args = { (cell_t)"getprop", 4, 1, - 0, - 0, - 0, - 0, - 0 }; - - args.package = (u_int)package; + + args.package = package; args.propname = (cell_t)propname; args.buf = (cell_t)buf; - args.buflen = (u_int)buflen; + args.buflen = buflen; if (openfirmware(&args) == -1) - return -1; - return (int)args.size; + return (-1); + return (args.size); } /* Get the next property of a package. */ @@ -314,29 +294,25 @@ int OF_nextprop(phandle_t package, char *previous, char *buf) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t package; - cell_t previous; - cell_t buf; - cell_t flag; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t package; + cell_t previous; + cell_t buf; + cell_t flag; } args = { (cell_t)"nextprop", 3, 1, - 0, - 0, - 0, - 0 }; - args.package = (u_int)package; + args.package = package; args.previous = (cell_t)previous; args.buf = (cell_t)buf; if (openfirmware(&args) == -1) - return -1; - return (int)args.flag; + return (-1); + return (args.flag); } /* Set the value of a property of a package. */ @@ -345,32 +321,27 @@ int OF_setprop(phandle_t package, char *propname, void *buf, int len) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t package; - cell_t propname; - cell_t buf; - cell_t len; - cell_t size; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t package; + cell_t propname; + cell_t buf; + cell_t len; + cell_t size; } args = { (cell_t)"setprop", 4, 1, - 0, - 0, - 0, - 0, - 0 }; - - args.package = (u_int)package; + + args.package = package; args.propname = (cell_t)propname; args.buf = (cell_t)buf; - args.len = (u_int)len; + args.len = len; if (openfirmware(&args) == -1) - return -1; - return (int)args.size; + return (-1); + return (args.size); } /* Convert a device specifier to a fully qualified pathname. */ @@ -378,29 +349,25 @@ int OF_canon(const char *device, char *buf, int len) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t device; - cell_t buf; - cell_t len; - cell_t size; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t device; + cell_t buf; + cell_t len; + cell_t size; } args = { (cell_t)"canon", 3, 1, - 0, - 0, - 0, - 0 }; - + args.device = (cell_t)device; args.buf = (cell_t)buf; - args.len = (cell_t)len; + args.len = len; if (openfirmware(&args) == -1) - return -1; - return (int)args.size; + return (-1); + return (args.size); } /* Return a package handle for the specified device. */ @@ -408,24 +375,21 @@ phandle_t OF_finddevice(const char *device) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t device; - cell_t package; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t device; + cell_t package; } args = { (cell_t)"finddevice", 1, 1, - 0, - 0 - }; - + }; + args.device = (cell_t)device; if (openfirmware(&args) == -1) - return -1; - - return (phandle_t)args.package; + return (-1); + return (args.package); } /* Return the fully qualified pathname corresponding to an instance. */ @@ -433,29 +397,25 @@ int OF_instance_to_path(ihandle_t instance, char *buf, int len) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t instance; - cell_t buf; - cell_t len; - cell_t size; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t instance; + cell_t buf; + cell_t len; + cell_t size; } args = { (cell_t)"instance-to-path", 3, 1, - 0, - 0, - 0, - 0 }; - args.instance = (u_int)instance; + args.instance = instance; args.buf = (cell_t)buf; - args.len = (u_int)len; + args.len = len; if (openfirmware(&args) == -1) - return -1; - return (int)args.size; + return (-1); + return (args.size); } /* Return the fully qualified pathname corresponding to a package. */ @@ -463,29 +423,25 @@ int OF_package_to_path(phandle_t package, char *buf, int len) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t package; - cell_t buf; - cell_t len; - cell_t size; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t package; + cell_t buf; + cell_t len; + cell_t size; } args = { (cell_t)"package-to-path", 3, 1, - 0, - 0, - 0, - 0 }; - args.package = (u_int)package; + args.package = package; args.buf = (cell_t)buf; - args.len = (u_int)len; + args.len = len; if (openfirmware(&args) == -1) - return -1; - return (int)args.size; + return (-1); + return (args.size); } /* Call the method in the scope of a given instance. */ @@ -494,45 +450,41 @@ OF_call_method(char *method, ihandle_t instance, int nargs, int nreturns, ...) { va_list ap; static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t method; - cell_t instance; - cell_t args_n_results[12]; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t method; + cell_t instance; + cell_t args_n_results[12]; } args = { (cell_t)"call-method", 2, 1, - 0, - 0, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; int *ip, n; if (nargs > 6) - return -1; + return (-1); args.nargs = nargs + 2; args.nreturns = nreturns + 1; args.method = (cell_t)method; - args.instance = (u_int)instance; + args.instance = instance; va_start(ap, nreturns); for (ip = (int *)(args.args_n_results + (n = nargs)); --n >= 0;) *--ip = va_arg(ap, int); - if (openfirmware(&args) == -1) - return -1; + return (-1); if (args.args_n_results[nargs]) - return (int)args.args_n_results[nargs]; + return (args.args_n_results[nargs]); for (ip = (int *)(args.args_n_results + nargs + (n = args.nreturns)); --n > 0;) *va_arg(ap, int *) = *--ip; va_end(ap); - return 0; + return (0); } /* - * Device I/O functions. + * Device I/O functions */ /* Open an instance for a device. */ @@ -540,24 +492,22 @@ ihandle_t OF_open(char *device) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t device; - cell_t instance; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t device; + cell_t instance; } args = { (cell_t)"open", 1, 1, - 0, - 0 }; - + args.device = (cell_t)device; if (openfirmware(&args) == -1 || args.instance == 0) { - return -1; + return (-1); } - return (ihandle_t)args.instance; + return (args.instance); } /* Close an instance. */ @@ -565,18 +515,16 @@ void OF_close(ihandle_t instance) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t instance; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t instance; } args = { (cell_t)"close", 1, - 0, - 0 }; - - args.instance = (u_int)instance; + + args.instance = instance; openfirmware(&args); } @@ -585,26 +533,22 @@ int OF_read(ihandle_t instance, void *addr, int len) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t instance; - cell_t addr; - cell_t len; - cell_t actual; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t instance; + cell_t addr; + cell_t len; + cell_t actual; } args = { (cell_t)"read", 3, 1, - 0, - 0, - 0, - 0 }; - args.instance = (u_int)instance; + args.instance = instance; args.addr = (cell_t)addr; - args.len = (u_int)len; + args.len = len; #if defined(OPENFIRM_DEBUG) printf("OF_read: called with instance=%08x, addr=%p, len=%d\n", @@ -612,14 +556,14 @@ OF_read(ihandle_t instance, void *addr, int len) #endif if (openfirmware(&args) == -1) - return -1; + return (-1); #if defined(OPENFIRM_DEBUG) printf("OF_read: returning instance=%d, addr=%p, len=%d, actual=%d\n", args.instance, args.addr, args.len, args.actual); #endif - return (int)args.actual; + return (args.actual); } /* Write to an instance. */ @@ -627,29 +571,25 @@ int OF_write(ihandle_t instance, void *addr, int len) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t instance; - cell_t addr; - cell_t len; - cell_t actual; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t instance; + cell_t addr; + cell_t len; + cell_t actual; } args = { (cell_t)"write", 3, 1, - 0, - 0, - 0, - 0 }; - args.instance = (u_int)instance; + args.instance = instance; args.addr = (cell_t)addr; - args.len = (u_int)len; + args.len = len; if (openfirmware(&args) == -1) - return -1; - return (int)args.actual; + return (-1); + return (args.actual); } /* Seek to a position. */ @@ -657,33 +597,29 @@ int OF_seek(ihandle_t instance, u_int64_t pos) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t instance; - cell_t poshi; - cell_t poslo; - cell_t status; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t instance; + cell_t poshi; + cell_t poslo; + cell_t status; } args = { (cell_t)"seek", 3, 1, - 0, - 0, - 0, - 0 }; - - args.instance = (u_int)instance; + + args.instance = instance; args.poshi = pos >> 32; args.poslo = pos; if (openfirmware(&args) == -1) - return -1; - return (int)args.status; + return (-1); + return (args.status); } /* - * Memory functions. + * Memory functions */ /* Claim an area of memory. */ @@ -691,29 +627,25 @@ void * OF_claim(void *virt, u_int size, u_int align) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t virt; - cell_t size; - cell_t align; - cell_t baseaddr; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t virt; + cell_t size; + cell_t align; + cell_t baseaddr; } args = { (cell_t)"claim", 3, 1, - 0, - 0, - 0, - 0 }; args.virt = (cell_t)virt; args.size = size; args.align = align; if (openfirmware(&args) == -1) - return (void *)-1; - return (void *)args.baseaddr; + return ((void *)-1); + return ((void *)args.baseaddr); } /* Allocate an area of physical memory */ @@ -721,38 +653,30 @@ vm_offset_t OF_claim_virt(vm_offset_t virt, size_t size, int align) { static struct { - cell_t name; - cell_t nargs; - cell_t nret; - cell_t method; - cell_t ihandle; - cell_t align; - cell_t size; - cell_t virt; - cell_t status; - cell_t ret; + cell_t name; + cell_t nargs; + cell_t nret; + cell_t method; + cell_t ihandle; + cell_t align; + cell_t size; + cell_t virt; + cell_t status; + cell_t ret; } args = { (cell_t)"call-method", 5, 2, (cell_t)"claim", - 0, - 0, - 0, - 0, - 0, /* ret */ - 0, }; args.ihandle = mmu; args.align = align; args.size = size; - args.virt = virt; - + args.virt = (cell_t)virt; if (openfirmware(&args) == -1) - return (vm_offset_t)-1; - - return (vm_offset_t)args.ret; + return (-1); + return (args.ret); } /* Allocate an area of physical memory */ @@ -760,37 +684,29 @@ void * OF_alloc_phys(size_t size, int align) { static struct { - cell_t name; - cell_t nargs; - cell_t nret; - cell_t method; - cell_t ihandle; - cell_t align; - cell_t size; - cell_t status; - cell_t phys_hi; - cell_t phys_low; + cell_t name; + cell_t nargs; + cell_t nret; + cell_t method; + cell_t ihandle; + cell_t align; + cell_t size; + cell_t status; + cell_t phys_hi; + cell_t phys_low; } args = { (cell_t)"call-method", 4, 3, (cell_t)"claim", - 0, - 0, - 0, - 0, /* ret */ - 0, - 0, }; args.ihandle = memory; args.size = size; args.align = align; - if (openfirmware(&args) == -1) - return (void *)-1; - - return (void *)(args.phys_hi << 32 | args.phys_low); + return ((void *)-1); + return ((void *)(args.phys_hi << 32 | args.phys_low)); } /* Release an area of memory. */ @@ -798,19 +714,16 @@ void OF_release(void *virt, u_int size) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t virt; - cell_t size; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t virt; + cell_t size; } args = { (cell_t)"release", 2, - 0, - 0, - 0 }; - + args.virt = (cell_t)virt; args.size = size; openfirmware(&args); @@ -821,34 +734,30 @@ void OF_release_phys(vm_offset_t phys, u_int size) { static struct { - cell_t name; - cell_t nargs; - cell_t nret; - cell_t method; - cell_t ihandle; - cell_t size; - cell_t phys_hi; - cell_t phys_lo; + cell_t name; + cell_t nargs; + cell_t nret; + cell_t method; + cell_t ihandle; + cell_t size; + cell_t phys_hi; + cell_t phys_lo; } args = { (cell_t)"call-method", 5, 0, (cell_t)"release", - 0, - 0, - 0, - 0 }; args.ihandle = memory; - args.phys_hi = (u_int32_t)(phys >> 32); - args.phys_lo = (u_int32_t)phys; + args.phys_hi = phys >> 32; + args.phys_lo = phys; args.size = size; openfirmware(&args); } /* - * Control transfer functions. + * Control transfer functions */ /* Reset the system and call "boot <bootspec>". */ @@ -856,20 +765,19 @@ void OF_boot(char *bootspec) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t bootspec; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t bootspec; } args = { (cell_t)"boot", 1, - 0, - 0 }; args.bootspec = (cell_t)bootspec; openfirmware(&args); - for (;;); /* just in case */ + for (;;) /* just in case */ + ; } /* Suspend and drop back to the Open Firmware interface. */ @@ -877,16 +785,15 @@ void OF_enter() { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; + cell_t name; + cell_t nargs; + cell_t nreturns; } args = { (cell_t)"enter", - 0, - 0 }; openfirmware(&args); + /* We may come back. */ } /* Shut down and drop back to the Open Firmware interface. */ @@ -894,17 +801,16 @@ void OF_exit() { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; + cell_t name; + cell_t nargs; + cell_t nreturns; } args = { (cell_t)"exit", - 0, - 0 }; openfirmware(&args); - for (;;); /* just in case */ + for (;;) /* just in case */ + ; } /* Free <size> bytes starting at <virt>, then call <entry> with <arg>. */ @@ -913,23 +819,17 @@ void OF_chain(void *virt, u_int size, void (*entry)(), void *arg, u_int len) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t virt; - cell_t size; - cell_t entry; - cell_t arg; - cell_t len; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t virt; + cell_t size; + cell_t entry; + cell_t arg; + cell_t len; } args = { (cell_t)"chain", 5, - 0, - 0, - 0, - 0, - 0, - 0 }; args.virt = (cell_t)virt; @@ -950,7 +850,6 @@ OF_chain(void *virt, u_int size, void (*entry)(), void *arg, u_int len) if (size > 0) OF_release(virt, size); #endif - entry(0, 0, openfirmware, arg, len); } #endif diff --git a/sys/dev/ofw/openfirm.c b/sys/dev/ofw/openfirm.c index da3d17c..b2f251c 100644 --- a/sys/dev/ofw/openfirm.c +++ b/sys/dev/ofw/openfirm.c @@ -30,9 +30,6 @@ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); /*- * Copyright (C) 2000 Benno Rice. * All rights reserved. @@ -56,9 +53,11 @@ __FBSDID("$FreeBSD$"); * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include <sys/param.h> #include <sys/kernel.h> #include <sys/malloc.h> @@ -72,12 +71,12 @@ MALLOC_DEFINE(M_OFWPROP, "openfirm", "Open Firmware properties"); static ihandle_t stdout; -/* Initialiaser */ +/* Initialiser */ void OF_init(int (*openfirm)(void *)) { - phandle_t chosen; + phandle_t chosen; set_openfirm_callback(openfirm); if ((chosen = OF_finddevice("/chosen")) == -1) @@ -89,7 +88,7 @@ void OF_printf(const char *fmt, ...) { va_list va; - char buf[1024]; + char buf[1024]; va_start(va, fmt); vsprintf(buf, fmt, va); @@ -106,11 +105,11 @@ int OF_test(char *name) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t service; - cell_t missing; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t service; + cell_t missing; } args = { (cell_t)"test", 1, @@ -119,8 +118,8 @@ OF_test(char *name) args.service = (cell_t)name; if (openfirmware(&args) == -1) - return -1; - return args.missing; + return (-1); + return (args.missing); } int @@ -134,7 +133,7 @@ OF_interpret(char *cmd, int nreturns, ...) cell_t slot[16]; } args = { (cell_t)"interpret", - 1 + 1, }; cell_t status; int i = 0; @@ -160,18 +159,18 @@ int OF_milliseconds() { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t ms; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t ms; } args = { (cell_t)"milliseconds", 0, 1, }; - + openfirmware(&args); - return args.ms; + return (args.ms); } /* @@ -183,21 +182,21 @@ phandle_t OF_peer(phandle_t node) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t node; - cell_t next; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t node; + cell_t next; } args = { (cell_t)"peer", 1, 1, }; - args.node = (cell_t)node; + args.node = node; if (openfirmware(&args) == -1) - return -1; - return args.next; + return (-1); + return (args.next); } /* Return the first child of this node or 0. */ @@ -205,21 +204,21 @@ phandle_t OF_child(phandle_t node) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t node; - cell_t child; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t node; + cell_t child; } args = { (cell_t)"child", 1, 1, }; - args.node = (cell_t)node; + args.node = node; if (openfirmware(&args) == -1) - return -1; - return args.child; + return (-1); + return (args.child); } /* Return the parent of this node or 0. */ @@ -227,21 +226,21 @@ phandle_t OF_parent(phandle_t node) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t node; - cell_t parent; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t node; + cell_t parent; } args = { (cell_t)"parent", 1, 1, }; - args.node = (cell_t)node; + args.node = node; if (openfirmware(&args) == -1) - return -1; - return args.parent; + return (-1); + return (args.parent); } /* Return the package handle that corresponds to an instance handle. */ @@ -249,21 +248,21 @@ phandle_t OF_instance_to_package(ihandle_t instance) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t instance; - cell_t package; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t instance; + cell_t package; } args = { (cell_t)"instance-to-package", 1, 1, }; - - args.instance = (cell_t)instance; + + args.instance = instance; if (openfirmware(&args) == -1) - return -1; - return args.package; + return (-1); + return (args.package); } /* Get the length of a property of a package. */ @@ -271,23 +270,23 @@ int OF_getproplen(phandle_t package, char *propname) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t package; - cell_t propname; - cell_t proplen; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t package; + cell_t propname; + cell_t proplen; } args = { (cell_t)"getproplen", 2, 1, }; - args.package = (cell_t)package; + args.package = package; args.propname = (cell_t)propname; if (openfirmware(&args) == -1) - return -1; - return args.proplen; + return (-1); + return (args.proplen); } /* Get the value of a property of a package. */ @@ -295,27 +294,27 @@ int OF_getprop(phandle_t package, char *propname, void *buf, int buflen) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t package; - cell_t propname; - cell_t buf; - cell_t buflen; - cell_t size; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t package; + cell_t propname; + cell_t buf; + cell_t buflen; + cell_t size; } args = { (cell_t)"getprop", 4, 1, }; - - args.package = (cell_t)package; + + args.package = package; args.propname = (cell_t)propname; args.buf = (cell_t)buf; - args.buflen = (cell_t)buflen; + args.buflen = buflen; if (openfirmware(&args) == -1) - return -1; - return args.size; + return (-1); + return (args.size); } /* @@ -347,25 +346,25 @@ int OF_nextprop(phandle_t package, char *previous, char *buf) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t package; - cell_t previous; - cell_t buf; - cell_t flag; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t package; + cell_t previous; + cell_t buf; + cell_t flag; } args = { (cell_t)"nextprop", 3, 1, }; - args.package = (cell_t)package; + args.package = package; args.previous = (cell_t)previous; args.buf = (cell_t)buf; if (openfirmware(&args) == -1) - return -1; - return args.flag; + return (-1); + return (args.flag); } /* Set the value of a property of a package. */ @@ -374,27 +373,27 @@ int OF_setprop(phandle_t package, char *propname, void *buf, int len) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t package; - cell_t propname; - cell_t buf; - cell_t len; - cell_t size; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t package; + cell_t propname; + cell_t buf; + cell_t len; + cell_t size; } args = { (cell_t)"setprop", 4, 1, }; - - args.package = (cell_t)package; + + args.package = package; args.propname = (cell_t)propname; args.buf = (cell_t)buf; - args.len = (cell_t)len; + args.len = len; if (openfirmware(&args) == -1) - return -1; - return args.size; + return (-1); + return (args.size); } /* Convert a device specifier to a fully qualified pathname. */ @@ -402,25 +401,25 @@ int OF_canon(const char *device, char *buf, int len) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t device; - cell_t buf; - cell_t len; - cell_t size; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t device; + cell_t buf; + cell_t len; + cell_t size; } args = { (cell_t)"canon", 3, 1, }; - + args.device = (cell_t)device; args.buf = (cell_t)buf; - args.len = (cell_t)len; + args.len = len; if (openfirmware(&args) == -1) - return -1; - return args.size; + return (-1); + return (args.size); } /* Return a package handle for the specified device. */ @@ -428,21 +427,21 @@ phandle_t OF_finddevice(const char *device) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t device; - cell_t package; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t device; + cell_t package; } args = { (cell_t)"finddevice", 1, 1, - }; - + }; + args.device = (cell_t)device; if (openfirmware(&args) == -1) - return -1; - return args.package; + return (-1); + return (args.package); } /* Return the fully qualified pathname corresponding to an instance. */ @@ -450,25 +449,25 @@ int OF_instance_to_path(ihandle_t instance, char *buf, int len) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t instance; - cell_t buf; - cell_t len; - cell_t size; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t instance; + cell_t buf; + cell_t len; + cell_t size; } args = { (cell_t)"instance-to-path", 3, 1, }; - args.instance = (cell_t)instance; + args.instance = instance; args.buf = (cell_t)buf; - args.len = (cell_t)len; + args.len = len; if (openfirmware(&args) == -1) - return -1; - return(args.size); + return (-1); + return (args.size); } /* Return the fully qualified pathname corresponding to a package. */ @@ -476,25 +475,25 @@ int OF_package_to_path(phandle_t package, char *buf, int len) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t package; - cell_t buf; - cell_t len; - cell_t size; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t package; + cell_t buf; + cell_t len; + cell_t size; } args = { (cell_t)"package-to-path", 3, 1, }; - args.package = (cell_t)package; + args.package = package; args.buf = (cell_t)buf; - args.len = (cell_t)len; + args.len = len; if (openfirmware(&args) == -1) - return -1; - return(args.size); + return (-1); + return (args.size); } /* Call the method in the scope of a given instance. */ @@ -503,42 +502,41 @@ OF_call_method(char *method, ihandle_t instance, int nargs, int nreturns, ...) { va_list ap; static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t method; - cell_t instance; - cell_t args_n_results[12]; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t method; + cell_t instance; + cell_t args_n_results[12]; } args = { (cell_t)"call-method", 2, 1, }; - cell_t *ip; + cell_t *cp; int n; if (nargs > 6) - return -1; - args.nargs = (cell_t)nargs + 2; - args.nreturns = (cell_t)nreturns + 1; + return (-1); + args.nargs = nargs + 2; + args.nreturns = nreturns + 1; args.method = (cell_t)method; - args.instance = (cell_t)instance; + args.instance = instance; va_start(ap, nreturns); - for (ip = args.args_n_results + (n = (cell_t)nargs); --n >= 0;) - *--ip = va_arg(ap, cell_t); - + for (cp = args.args_n_results + (n = nargs); --n >= 0;) + *--cp = va_arg(ap, cell_t); if (openfirmware(&args) == -1) - return -1; + return (-1); if (args.args_n_results[nargs]) - return args.args_n_results[nargs]; - for (ip = args.args_n_results + nargs + (n = args.nreturns); --n > 0;) - *va_arg(ap, cell_t *) = *--ip; + return (args.args_n_results[nargs]); + for (cp = args.args_n_results + nargs + (n = args.nreturns); --n > 0;) + *va_arg(ap, cell_t *) = *--cp; va_end(ap); - return 0; + return (0); } /* - * Device I/O functions. + * Device I/O functions */ /* Open an instance for a device. */ @@ -546,22 +544,22 @@ ihandle_t OF_open(char *device) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t device; - cell_t instance; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t device; + cell_t instance; } args = { (cell_t)"open", 1, 1, }; - + args.device = (cell_t)device; if (openfirmware(&args) == -1 || args.instance == 0) { - return -1; + return (-1); } - return args.instance; + return (args.instance); } /* Close an instance. */ @@ -569,17 +567,16 @@ void OF_close(ihandle_t instance) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t instance; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t instance; } args = { (cell_t)"close", 1, - 0, }; - - args.instance = (cell_t)instance; + + args.instance = instance; openfirmware(&args); } @@ -588,26 +585,26 @@ int OF_read(ihandle_t instance, void *addr, int len) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t instance; - cell_t addr; - cell_t len; - cell_t actual; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t instance; + cell_t addr; + cell_t len; + cell_t actual; } args = { (cell_t)"read", 3, 1, }; - args.instance = (cell_t)instance; + args.instance = instance; args.addr = (cell_t)addr; - args.len = (cell_t)len; + args.len = len; if (openfirmware(&args) == -1) - return -1; + return (-1); - return args.actual; + return (args.actual); } /* Write to an instance. */ @@ -615,25 +612,25 @@ int OF_write(ihandle_t instance, void *addr, int len) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t instance; - cell_t addr; - cell_t len; - cell_t actual; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t instance; + cell_t addr; + cell_t len; + cell_t actual; } args = { (cell_t)"write", 3, 1, }; - args.instance = (cell_t)instance; + args.instance = instance; args.addr = (cell_t)addr; - args.len = (cell_t)len; + args.len = len; if (openfirmware(&args) == -1) - return -1; - return args.actual; + return (-1); + return (args.actual); } /* Seek to a position. */ @@ -641,29 +638,29 @@ int OF_seek(ihandle_t instance, u_int64_t pos) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t instance; - cell_t poshi; - cell_t poslo; - cell_t status; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t instance; + cell_t poshi; + cell_t poslo; + cell_t status; } args = { (cell_t)"seek", 3, 1, }; - - args.instance = (cell_t)instance; - args.poshi = (cell_t)(pos >> 32); - args.poslo = (cell_t)pos; + + args.instance = instance; + args.poshi = pos >> 32; + args.poslo = pos; if (openfirmware(&args) == -1) - return -1; - return args.status; + return (-1); + return (args.status); } /* - * Memory functions. + * Memory functions */ /* Claim an area of memory. */ @@ -671,13 +668,13 @@ void * OF_claim(void *virt, u_int size, u_int align) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t virt; - cell_t size; - cell_t align; - cell_t baseaddr; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t virt; + cell_t size; + cell_t align; + cell_t baseaddr; } args = { (cell_t)"claim", 3, @@ -685,11 +682,11 @@ OF_claim(void *virt, u_int size, u_int align) }; args.virt = (cell_t)virt; - args.size = (cell_t)size; - args.align = (cell_t)align; + args.size = size; + args.align = align; if (openfirmware(&args) == -1) - return (void *)-1; - return (void *)args.baseaddr; + return ((void *)-1); + return ((void *)args.baseaddr); } /* Release an area of memory. */ @@ -697,24 +694,23 @@ void OF_release(void *virt, u_int size) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t virt; - cell_t size; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t virt; + cell_t size; } args = { (cell_t)"release", 2, - 0, }; - + args.virt = (cell_t)virt; - args.size = (cell_t)size; + args.size = size; openfirmware(&args); } /* - * Control transfer functions. + * Control transfer functions */ /* Reset the system and call "boot <bootspec>". */ @@ -722,19 +718,19 @@ void OF_boot(char *bootspec) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t bootspec; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t bootspec; } args = { (cell_t)"boot", 1, - 0, }; args.bootspec = (cell_t)bootspec; openfirmware(&args); - for (;;); /* just in case */ + for (;;) /* just in case */ + ; } /* Suspend and drop back to the Open Firmware interface. */ @@ -747,12 +743,10 @@ OF_enter() cell_t nreturns; } args = { (cell_t)"enter", - 0, - 0 }; openfirmware(&args); - return; /* We may come back. */ + /* We may come back. */ } /* Shut down and drop back to the Open Firmware interface. */ @@ -765,39 +759,37 @@ OF_exit() cell_t nreturns; } args = { (cell_t)"exit", - 0, - 0 }; openfirmware(&args); - for (;;); /* just in case */ + for (;;) /* just in case */ + ; } /* Free <size> bytes starting at <virt>, then call <entry> with <arg>. */ -#ifdef __notyet__ +#if 0 void OF_chain(void *virt, u_int size, void (*entry)(), void *arg, u_int len) { static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t virt; - cell_t size; - call_t entry; - cell_t arg; - cell_t len; + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t virt; + cell_t size; + cell_t entry; + cell_t arg; + cell_t len; } args = { (cell_t)"chain", 5, - 0, }; args.virt = (cell_t)virt; - args.size = (cell_t)size; + args.size = size; args.entry = (cell_t)entry; args.arg = (cell_t)arg; - args.len = (cell_t)len; + args.len = len; openfirmware(&args); } #else @@ -809,7 +801,8 @@ OF_chain(void *virt, u_int size, * This is a REALLY dirty hack till the firmware gets this going */ #if 0 - OF_release(virt, size); + if (size > 0) + OF_release(virt, size); #endif entry(0, 0, openfirmware, arg, len); } @@ -830,20 +823,18 @@ OF_chain(void *virt, u_int size, void OF_set_mmfsa_traptable(void *tba_addr, uint64_t mmfsa_ra) { - static struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - cell_t tba_addr; - cell_t mmfsa_ra; - } args = { - (cell_t)"SUNW,set-trap-table", - 2, - 0, - }; + static struct { + cell_t name; + cell_t nargs; + cell_t nreturns; + cell_t tba_addr; + cell_t mmfsa_ra; + } args = { + (cell_t)"SUNW,set-trap-table", + 2, + }; - args.tba_addr = (cell_t)tba_addr; - args.mmfsa_ra = (cell_t)mmfsa_ra; - openfirmware(&args); + args.tba_addr = (cell_t)tba_addr; + args.mmfsa_ra = mmfsa_ra; + openfirmware(&args); } - |