We have an SOC under planning, which have embedded ROM and RAM. The common area address range is (0x0000-0x7ffff), and bank area (0x8000-0xffff). The design goal is to have some utility functions pre-compiled and placed in common area and bank0 of ROM, for customer AP use. The user AP will be loaded into banks 1 and 2 of RAM after power up. The problem now is how to make function calls work in-between banks 1 and 2? Keil C requires all the names of functions that are referenced in another bank to build a cross-bank function table. Our goal does not meet the requirement by nature. Is there any way to make it work for the case we have? The Keil C function call with bank switching table/method are traced and summarized below. 1. Push the parameters for the function call into stack. 2. Push the called function addr into stack. 3. Save the current bank. 4. Switch bank. 5. Use RET to pop the called function addr, and thus funtion call call is performed in a smart way. 6. Pop the parameters. 7. Execute the function. 8. Restore the previous bank 9. RET Keil C has steps 2, 3, 4, 5, 8, and 9 done in the common area. This is quite good when all the functions are know. It is found that if step 2 is done in each bank instead of in the common area, every thing will go well for our case. Is there an option to have BL51/LX51 do so?