[OpenBIOS] [RFC 2/5] Fix for pointer2cell() and cell2pointer()
andreas.faerber at web.de
Wed Oct 27 22:56:41 CEST 2010
Am 27.10.2010 um 21:48 schrieb Blue Swirl:
> On Tue, Oct 26, 2010 at 11:08 PM, Andreas Färber <andreas.faerber at web.de
> > wrote:
>> include/kernel/stack.h | 4 ++--
>> 1 files changed, 2 insertions(+), 2 deletions(-)
>> diff --git a/include/kernel/stack.h b/include/kernel/stack.h
>> index 809ffe9..44fef0f 100644
>> --- a/include/kernel/stack.h
>> +++ b/include/kernel/stack.h
>> @@ -31,8 +31,8 @@ typedef ucell phandle_t;
>> #ifdef NATIVE_BITWIDTH_EQUALS_HOST_BITWIDTH
>> -#define pointer2cell(x) ((ucell)(x))
>> -#define cell2pointer(x) ((u8 *)(x))
>> +#define pointer2cell(x) ((ucell)(uintptr_t)(x))
>> +#define cell2pointer(x) ((u8 *)(uintptr_t)(x))
> Perhaps this should be changed to inline function which returns void
> *, then we may avoid a few casts.
I wouldn't mind inline functions either.
I doubt this quickfix is right at all though. It makes things compile
with minimal impact, but these decisions seem seriously flawed. switch-
arch and these macros all assume that just pointer size matters. IMO
we would need CELL_BITWIDTH_EQUALS_POINTER_BITWIDTH instead and should
be using CELL_BITWIDTH_SMALLER_THAN_POINTER_BITWIDTH (two #ifdefs
below) for ppc64 instead of making the equality code path (hardcoded
in Makefile.target) handle the smaller-than case as well now.
If we want to go ahead with my above patch I should at least add a
TODO that this is wrong, no?
More information about the OpenBIOS