rem: vm_free_kernel_args(&ka);
add: if (0) {
context: main2(void *unused){	(void)(unused);	TRACE(("start of main2: initializing devices\n"));	TRACE(("Init modules\n"));	module_init(&ka);	vm_free_kernel_args(&ka);		// module_init() is supposed to be the last user of the kernel args		// Note: don't confuse the kernel_args structure (which is never freed)		// with the kernel args ranges it contains (and which are freed here).	/* bootstrap all the filesystems */	TRACE(("Bootstrap file systems\n"));	vfs_bootstrap_file_systems();	TRACE(("Init Device Manager\n"));	device_manager_init(&ka);	// ToDo: device manager starts here, bus_init()/dev_init() won't be necessary anymore,	//	but instead, the hardware and drivers are rescanned then.	TRACE(("Mount boot file system\n"));	vfs_mount_boot_file_system();	TRACE(("Init busses\n"));	bus_init(&ka);	TRACE(("Init devices\n"));	dev_init(&ka);	TRACE(("Init console\n"));	con_init(&ka);	//net_init_postdev(&ka);	//module_test();#if 0		// XXX remove		vfs_test();#endif#if 0		// XXX remove		thread_test();#endif#if 0		vm_test();#endif#if 0	panic("debugger_test\n");#endif#if 0	cbuf_test();#endif#if 0	port_test();#endif	// start the init process	{		const char *shellArgs[] = {"/bin/sh", "/boot/beos/system/boot/Bootscript", NULL};		const char *initArgs[] = {"/bin/init", NULL};		const char **args;		int32 argc;		thread_id thread;		struct stat st;		if (stat(shellArgs[1], &st) == 0) {			// start Bootscript			args = shellArgs;			argc = 2;		} else {			// ToDo: this is only necessary as long as we have the bootdir mechanism			// start init			args = initArgs;			argc = 1;		}		thread = load_image(argc, args, NULL);		if (thread >= B_OK) {			resume_thread(thread);			TRACE(("Bootscript started\n"));		} else			dprintf("error starting \"%s\" error = %ld \n", args[0], thread);	}	return 0;}