Hallo,

while (1); wird vermutlich vom Compiler wegoptimiert und das gesammte Programm startet nach return0; neu. Versuch es mal mit:

Code:
while(1){
asm volatile ("nop");
}

Gruß
Jens