Where are the reset vectors for the 2 processors?
Are you using the JTAG loader for both??
(Does this actually work - I've not really used the JTAG loader except for some very simple tests.)
When the sopc system comes out of reset both cpu will start executing from their own reset vectors - if both can run in their own copy of the jtag loaded this would be ok.
If you want the 2 cpus to work together, you can expose the 'soft reset' for the 'slave' cpu (and have it sit soft-reset when the sopc reset is removed), have the main cpu's initialisation load all the code then release the slave cpu from reset.
As Daixiwen said, using the LEDs is much better than printf for low level debug. However you the avalon slave interface to the LEDs probably isn't ideal. It is much more useful to have 2 registers, writes to one turn the LEDs on, and writes to the other turn them off. That way multiple CPUs (and interrupt routines) can set/clear individual LEDs without having to do read-modify-write sequences.
If you have test switches on the board, a 'read switch' 'write LED' loop is a very simple way of verifying that a processor is running.