Indirect function calls with code banking

Hi,

Im having some problems with code banking, regarding to passing functions adresses as parameters. for example:

void func ( void(*ret_func1)(void), void(*ret_func2)(void))
{
.
.
.
if(x)
(*ret_func1)();
if(y)
(*ret_func2)();
.
.
.
}

Imagine that several functions (placed on all banks) call the function "func" and pass the 2 return adresses, that are on diferent banks that "func".
It makes my program halt or reset(depending on the situation).

How can i make this work?
Im using c51 v7.03, and a silabs 8051F120 processor.

thanks for any help,

Eduardo.

More questions in this forum