start_vm = VMALLOC_START;
 
-       setup_physmem(uml_physmem, uml_reserved, physmem_size, highmem);
-       mem_total_pages(physmem_size, iomem_size, highmem);
-
        virtmem_size = physmem_size;
        stack = (unsigned long) argv;
        stack &= ~(1024 * 1024 - 1);
                printf("Kernel virtual memory size shrunk to %lu bytes\n",
                       virtmem_size);
 
-       stack_protections((unsigned long) &init_thread_info);
        os_flush_stdout();
 
        return start_uml();
 
 void __init setup_arch(char **cmdline_p)
 {
+       stack_protections((unsigned long) &init_thread_info);
+       setup_physmem(uml_physmem, uml_reserved, physmem_size, highmem);
+       mem_total_pages(physmem_size, iomem_size, highmem);
+
        paging_init();
        strlcpy(boot_command_line, command_line, COMMAND_LINE_SIZE);
        *cmdline_p = command_line;