"jmp *%1" : : "r" (data), "r" (&doinit1));
"jmp *%1" : : "r" (data), "r" (&doinit1) : "sp", "bp");
_hurd_stack_setup (volatile int argc, ...){  void doinit (intptr_t *data)    {      /* This function gets called with the argument data at TOS.  */      void doinit1 (volatile int argc, ...)	{	  init ((int *) &argc);	}      /* Push the user return address after the argument data, and then         jump to `doinit1' (above), so it is as if __libc_init_first's         caller had called `doinit1' with the argument data already on the         stack.  */      *--data = (&argc)[-1];      asm volatile ("movl %0, %%esp\n" /* Switch to new outermost stack.  */		    "movl $0, %%ebp\n" /* Clear outermost frame pointer.  */		    "jmp *%1" : : "r" (data), "r" (&doinit1));      /* NOTREACHED */    }  first_init ();  _hurd_startup ((void **) &argc, &doinit);}