For example in an unscaled indexed addressing mode like
ldbx srcreg1(srcreg2), dstreg
Is not equivalent to
ldbx srcreg2(srcreg1), dstreg
ie x + y != y + x for computing an address in a memory operation.
For the same reason computing an address outside of an object into a
register, then using a displacement in a memory operation to generate an
address that is within the bounds of the object may not work. ie, you
can't do something like this and expect it to work:
int a[10];
int *z = a - 10;
foo()
{
return z[10];
}
And before anyone says the PA is unbelievably strange and nobody else would
make the same mistakes -- the mn10300 (for which a linux port does exist)
has the same failings.
jeff
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/