Also, the function name is the entry point address, so you can drop the & and * operators:
Code:
...
void (*fp)(void) = foo;

fp();
...