From e4d7a0d7a13415d13052400a25e6463452bde107 Mon Sep 17 00:00:00 2001 From: joerg Date: Sat, 6 Jul 1996 14:18:56 +0000 Subject: Add the ability to specify bootflags. This is similar to boot_i386(8), except for the root f/s options that don't seem to be useful. --- sys/i386/boot/netboot/bootmenu.c | 30 +++++++++++++++++++++++++++++- sys/i386/boot/netboot/main.c | 4 ++-- 2 files changed, 31 insertions(+), 3 deletions(-) (limited to 'sys') diff --git a/sys/i386/boot/netboot/bootmenu.c b/sys/i386/boot/netboot/bootmenu.c index a67ac93..d8f2330 100644 --- a/sys/i386/boot/netboot/bootmenu.c +++ b/sys/i386/boot/netboot/bootmenu.c @@ -12,11 +12,12 @@ extern int hostnamelen; extern unsigned long netmask; extern eth_reset(); extern short aui; +extern int howto; int cmd_ip(), cmd_server(), cmd_kernel(), cmd_help(), exit(); int cmd_rootfs(), cmd_swapfs(), cmd_interface(), cmd_hostname(); int cmd_netmask(), cmd_swapsize(), cmd_swapopts(), cmd_rootopts(); -int cmd_aui(), cmd_gateway(); +int cmd_aui(), cmd_gateway(), cmd_flags(); struct bootcmds_t { char *name; @@ -39,6 +40,7 @@ struct bootcmds_t { {"diskboot", exit, " boot from disk"}, {"autoboot", NULL, " continue"}, {"trans", cmd_aui, " turn transceiver on|off"}, + {"flags", cmd_flags, "[bcdhsv] set boot flags"}, {NULL, NULL, NULL} }; @@ -284,6 +286,32 @@ cmd_swapopts(p) } /************************************************************************** +CMD_FLAGS - Set boot flags +**************************************************************************/ +cmd_flags(buf) + char *buf; +{ + char p; + int flags = 0; + + while ((p = *buf++)) + switch (p) { + case 'b': flags |= RB_HALT; break; + case 'c': flags |= RB_CONFIG; break; + case 'd': flags |= RB_KDB; break; + case 'h': flags ^= RB_SERIAL; break; + case 's': flags |= RB_SINGLE; break; + case 'v': flags |= RB_VERBOSE; break; + case ' ': + case '\t': break; + default: printf("Unknown boot flag: %c\n", p); + } + + howto = flags; + return(0); +} + +/************************************************************************** EXECUTE - Decode command **************************************************************************/ execute(buf) diff --git a/sys/i386/boot/netboot/main.c b/sys/i386/boot/netboot/main.c index 0ff7c3d..daa42e7 100644 --- a/sys/i386/boot/netboot/main.c +++ b/sys/i386/boot/netboot/main.c @@ -24,7 +24,7 @@ struct bootinfo bootinfo; int root_nfs_port; unsigned long netmask; char kernel_handle[32]; -int offset; +int offset, howto; extern char eth_driver[]; extern char packet[]; @@ -316,7 +316,7 @@ cfg_done: bootinfo.bi_nfs_diskless = &nfsdiskless; bootinfo.bi_size = sizeof bootinfo; kernelentry = (void *)(head.a_entry & 0x00FFFFFF); - (*kernelentry)(RB_BOOTINFO,NODEV,0,0,0,&bootinfo,0,0,0); + (*kernelentry)(howto|RB_BOOTINFO,NODEV,0,0,0,&bootinfo,0,0,0); printf("*** %s execute failure ***\n",kernel); } -- cgit v1.1