--- linux-2.6.17/scripts/kconfig/Makefile.nonintconfig
+++ linux-2.6.17/scripts/kconfig/Makefile
@@ -23,6 +23,11 @@ oldconfig: $(obj)/conf
 silentoldconfig: $(obj)/conf
 	$< -s arch/$(ARCH)/Kconfig
 
+nonint_oldconfig: $(obj)/conf
+	$< -b arch/$(ARCH)/Kconfig
+loose_nonint_oldconfig: $(obj)/conf
+	$< -B arch/$(ARCH)/Kconfig
+
 update-po-config: $(obj)/kxgettext
 	xgettext --default-domain=linux \
           --add-comments --keyword=_ --keyword=N_ \
--- linux-2.6.17/scripts/kconfig/conf.c.nonintconfig
+++ linux-2.6.17/scripts/kconfig/conf.c
@@ -21,6 +21,8 @@ enum {
 	ask_all,
 	ask_new,
 	ask_silent,
+	dont_ask,
+	dont_ask_dont_tell,
 	set_default,
 	set_yes,
 	set_mod,
@@ -37,6 +39,8 @@ static struct menu *rootEntry;
 
 static char nohelp_text[] = N_("Sorry, no help available for this option yet.\n");
 
+static int return_value = 0;
+
 static void strip(char *str)
 {
 	char *p = str;
@@ -103,6 +107,14 @@ static void conf_askvalue(struct symbol 
 		fflush(stdout);
 		fgets(line, 128, stdin);
 		return;
+	case dont_ask:
+		if (!sym_has_value(sym)) {
+			fprintf(stderr,"CONFIG_%s\n",sym->name);
+			return_value++;
+		}
+		/*FALLTHROUGH*/
+	case dont_ask_dont_tell:
+		return;
 	case set_default:
 		printf("%s\n", def);
 		return;
@@ -346,6 +358,11 @@ static int conf_choice(struct menu *menu
 			printf("?");
 		printf("]: ");
 		switch (input_mode) {
+		case dont_ask:
+		case dont_ask_dont_tell:
+			cnt = def;
+			printf("%d\n", cnt);
+			break;
 		case ask_new:
 		case ask_silent:
 			if (!is_new) {
@@ -482,6 +499,10 @@ static void check_conf(struct menu *menu
 			if (!conf_cnt++)
 				printf(_("*\n* Restart config...\n*\n"));
 			rootEntry = menu_get_parent_menu(menu);
+			if (input_mode == dont_ask
+			    || input_mode == dont_ask_dont_tell)
+				fprintf(stderr,"CONFIG_%s\n",sym->name);
+			else
 			conf(rootEntry);
 		}
 	}
@@ -501,6 +522,12 @@ int main(int ac, char **av)
 		case 'o':
 			input_mode = ask_new;
 			break;
+		case 'b':
+			input_mode = dont_ask;
+			break;
+		case 'B':
+			input_mode = dont_ask_dont_tell;
+			break;
 		case 's':
 			input_mode = ask_silent;
 			valid_stdin = isatty(0) && isatty(1) && isatty(2);
@@ -566,6 +593,8 @@ int main(int ac, char **av)
 		}
 	case ask_all:
 	case ask_new:
+	case dont_ask:
+	case dont_ask_dont_tell:
 		conf_read(NULL);
 		break;
 	case set_no:
@@ -612,7 +641,8 @@ int main(int ac, char **av)
 	do {
 		conf_cnt = 0;
 		check_conf(&rootmenu);
-	} while (conf_cnt);
+ 	} while (conf_cnt && (input_mode != dont_ask
+			      && input_mode != dont_ask_dont_tell));
 	if (conf_write(NULL)) {
 		fprintf(stderr, _("\n*** Error during writing of the kernel configuration.\n\n"));
 		return 1;
@@ -623,5 +653,5 @@ skip_check:
 		return 1;
 	}
 
-	return 0;
+	return return_value;
 }
