Hi Veter
I don't know the answer and I don't work with the configuration files as they are supplied - so please forgive me if I am off track.
Are you however sure that it is a problem with register and not just that a cast is missing?
1. the definition of ___MBAR in the lcf shouldn't have anything to do with the compiler. It is only used when linking. __MBAR is defined elsewhere and I think as extern uint8 __MBAR[]; (? not sure though?)
2. If the above is true &__MBAR may be a source of problem since this doesn't have an address - the address is either __MBAR; or &__MBAR[0].
3. Possible the above is off-track because I don't understand why it would say "illegal implicit conversion from 'unsigned long *' to" since it looks as though the compiler understands it as pointer to unsigned long.
4. Have you tried casing:
volatile register MCF5307_IMM *imm = (MCF5307_IMM *)&__MBAR;
or something like this?
As I said - please ignore if the comments are way off.
Regards
Mark Butcher