Change the argument type to OF_call_method to take an array of cell_t

instead of unsigned longs to prepare for platforms where they are not
the same.
This commit is contained in:
nwhitehorn 2010-07-08 14:29:23 +00:00
parent 6ce8619526
commit b85d8a68d9
4 changed files with 10 additions and 12 deletions

View File

@ -229,7 +229,7 @@ METHOD int call_method {
int _nargs;
int _nreturns;
unsigned long *_args_and_returns;
cell_t *_args_and_returns;
};
/**

View File

@ -95,7 +95,7 @@ static ssize_t ofw_std_package_to_path(ofw_t ofw, phandle_t package, char *buf,
size_t len);
static int ofw_std_call_method(ofw_t ofw, ihandle_t instance,
const char *method, int nargs, int nreturns,
unsigned long *args_and_returns);
cell_t *args_and_returns);
static ihandle_t ofw_std_open(ofw_t ofw, const char *device);
static void ofw_std_close(ofw_t ofw, ihandle_t instance);
static ssize_t ofw_std_read(ofw_t ofw, ihandle_t instance, void *addr,
@ -515,7 +515,7 @@ ofw_std_package_to_path(ofw_t ofw, phandle_t package, char *buf, size_t len)
/* Call the method in the scope of a given instance. */
static int
ofw_std_call_method(ofw_t ofw, ihandle_t instance, const char *method,
int nargs, int nreturns, unsigned long *args_and_returns)
int nargs, int nreturns, cell_t *args_and_returns)
{
struct {
cell_t name;
@ -529,8 +529,7 @@ ofw_std_call_method(ofw_t ofw, ihandle_t instance, const char *method,
2,
1,
};
cell_t *cp;
unsigned long *ap;
cell_t *cp, *ap;
int n;
if (nargs > 6)

View File

@ -328,14 +328,14 @@ OF_call_method(const char *method, ihandle_t instance, int nargs, int nreturns,
...)
{
va_list ap;
unsigned long args_n_results[12];
cell_t args_n_results[12];
int n, status;
if (nargs > 6)
return (-1);
va_start(ap, nreturns);
for (n = 0; n < nargs; n++)
args_n_results[n] = va_arg(ap, unsigned long);
args_n_results[n] = va_arg(ap, cell_t);
status = OFW_CALL_METHOD(ofw_obj, instance, method, nargs, nreturns,
args_n_results);
@ -343,7 +343,7 @@ OF_call_method(const char *method, ihandle_t instance, int nargs, int nreturns,
return (status);
for (; n < nargs + nreturns; n++)
*va_arg(ap, unsigned long *) = args_n_results[n];
*va_arg(ap, cell_t *) = args_n_results[n];
va_end(ap);
return (0);
}

View File

@ -97,7 +97,7 @@ static ssize_t ofw_real_instance_to_path(ofw_t, ihandle_t instance, char *buf,
static ssize_t ofw_real_package_to_path(ofw_t, phandle_t package, char *buf,
size_t len);
static int ofw_real_call_method(ofw_t, ihandle_t instance, const char *method,
int nargs, int nreturns, unsigned long *args_and_returns);
int nargs, int nreturns, cell_t *args_and_returns);
static ihandle_t ofw_real_open(ofw_t, const char *device);
static void ofw_real_close(ofw_t, ihandle_t instance);
static ssize_t ofw_real_read(ofw_t, ihandle_t instance, void *addr, size_t len);
@ -652,7 +652,7 @@ ofw_real_package_to_path(ofw_t ofw, phandle_t package, char *buf, size_t len)
/* Call the method in the scope of a given instance. */
static int
ofw_real_call_method(ofw_t ofw, ihandle_t instance, const char *method,
int nargs, int nreturns, unsigned long *args_and_returns)
int nargs, int nreturns, cell_t *args_and_returns)
{
struct {
cell_t name;
@ -666,8 +666,7 @@ ofw_real_call_method(ofw_t ofw, ihandle_t instance, const char *method,
2,
1,
};
cell_t *cp;
unsigned long *ap;
cell_t *cp, *ap;
int n;
if (nargs > 6)