Dan Sugalski wrote:
> At 7:35 AM -0500 12/31/02, Jim Cromie wrote:
>
>> pardon the lack of clue I reveal here, but..
>>
>>
>> on 32 bit box, a void* has 3 values which are illegal/unaligned;
>>
>> void* ptr;
>> if (ptr & 0x00) {
>> /* ok */
>> } else {
>> /* some exceptional situation */
>> }
>>
>> is there any concievable use of this which doesnt interfere with
>> legitimate bus-errors (ie existing unaligned pointer handling) ?
>
>
> You're looking to encode data in the low X bits (where X is 2 or 4 for
> 32 or 64 bit machines), right?
yes- precisely!
> It's a clever thing to do, but one I admit I mistrust. Either it means
> we have to check every pointer that might be encoded before we use it
> or wedge into the system SIGBUS handler, which is non-trivial in many
> places. It's also rather a portability problem. (And potential
> security problem, alas)
>
> A cool idea, but I don't think we can do it.
thats what I thought - but had to ask on the off-chance it could benefit.
IIRC - I saw it once as a feature of some old Motorola ?? DMA controller
- I think it was used to signal some scatter/gather ops
Thread Previous
|
Thread Next