> Trying to fake two kinds of pointers when we only have one doesn't seem 
> wise to me.
> 
> A possible solution is to use function descriptors.

Both m32c (my local copy at least) and xstormy use 16 bit thunks to
reference the address of a function outside the first 64k of address
space.

In this case, it isn't good enough.

The particular case that *needs* a wider pointer is setting up
the reset vectors in ROM:

long rvec = (long)&start __attribute__((section(".resetvect")));

At the point where you need this address, you haven't had a chance to
copy the RAM into the lower 64k, so a thunk won't help.  (yes,
assembler is one solution, but that doesn't stop the users from
complaining ;).

Note that my complaint about the lack of endian support in that code
still stands ;-)

Reply via email to