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


Reply via email to