[OpenBIOS] [RFC 2/5] Fix for pointer2cell() and cell2pointer()

Blue Swirl blauwirbel at gmail.com
Wed Oct 27 23:10:04 CEST 2010


On Wed, Oct 27, 2010 at 8:56 PM, Andreas Färber <andreas.faerber at web.de> wrote:
> 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.

Sounds about right.

> If we want to go ahead with my above patch I should at least add a TODO that
> this is wrong, no?

I think it's your decision if you want to create even better patches,
but I don't think this is too wrong, or at least we are not going to
wrong direction.



More information about the OpenBIOS mailing list