Either write setupmode() so that it works correctly while repeatedly called (this is possible, but I am not sure if you have the skills as you are asking the question)
OR
Put this inside setupmode();
while(digitalRead(setuppin) == HIGH) {
// Setup mode code
}
However, if you do the second of my suggestions you will find you have actually done most of what you need for the first.