>   vects[A0_VEC] = __builtin_pointer32 (timer_a0_handler);

Note that the builtin would be needed for run-time conversion between
pointers of different sizes, i.e. casts.  Why?  Well, gcc doesn't
"just know" how to do such conversions.  For example, TPF has a 31 bit
address.  To convert it to 64, you clear the MSB and zero extend.  To
convert back, you truncate and set the MSB (if you clear the MSB, you
end up with a 24 bit address, it's a "size flag").  In theory, 64 bit
addresses should always have the LSB set too.

But a compile-time assigment of a symbol to a pointer should "just
work" as long as the assembler supports it (I fixed that bug some
months ago).

Reply via email to