Is the issue that you get a unexpected address for ram_updater?
For the S12 (which device are you using (HC12, S12, S12X, ...?)) the address of a far function has a different byte ordering than the address of a far data pointer, check the manual.
If that is the issue, and ram_updater is only executed from non paged, then marking it as __near (while still allocating it paged on flash, non paged at runtime) should help.
Also the declaration of ram_updater and the pragma it is allocated with may help.
Which memory model?
Daniel