With r205496 in place we should ensure that nargs and nreturns are always

set to sane values as they no longer default to 0, otherwise some OFW
implementation might copy in or out arguments not based on what the actual
function takes but what ever stack garbage nargs and nreturns supply.

Reviewed by:	nwhitehorn
This commit is contained in:
marius 2010-04-02 21:48:27 +00:00
parent 4de64106dd
commit bb4566312b
2 changed files with 12 additions and 0 deletions

View File

@ -589,6 +589,7 @@ ofw_std_close(ofw_t ofw, ihandle_t instance)
} args = {
(cell_t)"close",
1,
0,
};
args.instance = instance;
@ -717,6 +718,7 @@ ofw_std_release(ofw_t ofw, void *virt, size_t size)
} args = {
(cell_t)"release",
2,
0,
};
args.virt = (cell_t)virt;
@ -738,6 +740,8 @@ ofw_std_enter(ofw_t ofw)
cell_t nreturns;
} args = {
(cell_t)"enter",
0,
0,
};
openfirmware(&args);
@ -754,6 +758,8 @@ ofw_std_exit(ofw_t ofw)
cell_t nreturns;
} args = {
(cell_t)"exit",
0,
0,
};
openfirmware(&args);

View File

@ -737,6 +737,7 @@ ofw_real_close(ofw_t ofw, ihandle_t instance)
} args = {
(cell_t)"close",
1,
0,
};
args.instance = instance;
@ -876,6 +877,7 @@ ofw_real_release(ofw_t ofw, void *virt, size_t size)
} args = {
(cell_t)"release",
2,
0,
};
args.virt = (cell_t)virt;
@ -897,6 +899,8 @@ ofw_real_enter(ofw_t ofw)
cell_t nreturns;
} args = {
(cell_t)"enter",
0,
0,
};
openfirmware(&args);
@ -913,6 +917,8 @@ ofw_real_exit(ofw_t ofw)
cell_t nreturns;
} args = {
(cell_t)"exit",
0,
0,
};
openfirmware(&args);