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:
parent
6ce8619526
commit
b85d8a68d9
@ -229,7 +229,7 @@ METHOD int call_method {
|
||||
int _nargs;
|
||||
int _nreturns;
|
||||
|
||||
unsigned long *_args_and_returns;
|
||||
cell_t *_args_and_returns;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user