I've used this method before on a couple of different megas and it worked fine.
I'm trying it on a mega1284p and it does not wakeup.
//enable int0 for wake up
It goes to sleep just fine. It is the wakeup that is not working. The INT0 has its pullup enabled and it switched to ground with a momentary switch. I can see that the switch/signal work as I use it for a button. But once it falls asleep, it won't wake up.
ISC00/ISC01 in EICRA are untouched and default to zero. low level of INT0 should generate the interrupt request.
Even when sleeping, the pullup is still enabled and I can see the line go low/high when I press the button.