How to terminate setup() using interrupt?

Hi,
I would like to use interrupt to terminate setup() and follow to proceed loop() indefinitely.
However attachInterrupt(1, loop, FALLING); does not work,because it triggers loop() only once.
I tried to have a separate interrupt function,like:

Boolean interruptSetup=false
Void setup(){
attachInterrupt(1, interruptfunction, FALLING);
//my other setup code,including 
Delay(30000);
//all other setup code depends on conditions interruptSetup==false,which forces  everything to terminate as quicky as possible to loop,if interruptSetup is true.
}
Void interruptfunction(){
interruptSetup=true;
}
Void loop(){
//loopcode
}

However,problem is in long delay in setup() and assigment interruptSetup=true; in interruptfunction().Due to 30second delay,it is almost sure that interrupt will be triggered during delay().As long as interruptfunction() contains assignment interruptSetup=true; interrupt wont interrupt delay, instead it will only assign value to interruptSetup and wait until delay finishes.
I suppose,that usually this does not cause a problem,because delay intervals typically use to be really short,but I can’t obviously wait 30 seconds to get response which I expect immediately.
Any ideas how to fix this?

How about this: Instead of delay(30000)

x = 0
while (< 30000){
delay(1)
x=x+1
if (interrupt flag set){x=29999)} // create the end condition
}

volatile boolean doSetup=true;
void setup(){
   attachInterrupt(1, interruptfunction, FALLING);
   // do other code
   while (doSetup) {};
}

void interruptfunction(){
   doSetup=false;
}
void loop(){
   //loopcode
}

or maybe

void setup(){
   attachInterrupt(1, interruptfunction, FALLING);

   while (doSetup) {
   // do other code
   };
}

Rob