From: deraadt Date: Tue, 28 Nov 1995 19:35:58 +0000 (+0000) Subject: let loadbsd define sync scsi operation X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=fac13869658c9f0e3c34cecd428512bec7491eab;p=openbsd let loadbsd define sync scsi operation --- diff --git a/sys/arch/amiga/amiga/amiga_init.c b/sys/arch/amiga/amiga/amiga_init.c index 336da5a5b72..8eb391c37ea 100644 --- a/sys/arch/amiga/amiga/amiga_init.c +++ b/sys/arch/amiga/amiga/amiga_init.c @@ -1,4 +1,4 @@ -/* $NetBSD: amiga_init.c,v 1.33.2.1 1995/11/10 16:09:54 chopps Exp $ */ +/* $NetBSD: amiga_init.c,v 1.33.2.2 1995/11/24 07:51:07 chopps Exp $ */ /* * Copyright (c) 1994 Michael L. Hitch @@ -102,6 +102,9 @@ u_long boot_fphystart, boot_fphysize, boot_cphysize; static u_long boot_flags; +u_long scsi_nosync; +int shift_nosync; + void * chipmem_steal(amount) long amount; @@ -158,11 +161,12 @@ alloc_z2mem(amount) */ void -start_c(id, fphystart, fphysize, cphysize, esym_addr, flags) +start_c(id, fphystart, fphysize, cphysize, esym_addr, flags, inh_sync) int id; u_int fphystart, fphysize, cphysize; char *esym_addr; u_int flags; + u_long inh_sync; { extern char end[]; extern void etext(); @@ -191,6 +195,7 @@ start_c(id, fphystart, fphysize, cphysize, esym_addr, flags) if (flags & (3 << 1)) noncontig_enable = (flags >> 1) & 3; #endif + scsi_nosync = inh_sync; /* * the kernel ends at end(), plus the cfdev structures we placed @@ -742,6 +747,10 @@ kernel_reload_write(uio) * XXX - should check that image will fit in CHIP memory * XXX return an error if it doesn't */ + if ((kernel_text_size + kernel_exec.a_data + + kernel_exec.a_bss + kernel_symbol_size + + kernel_image_magic_size()) > boot_cphysize) + return (EFBIG); kernel_image = malloc(kernel_text_size + kernel_exec.a_data + kernel_exec.a_bss + kernel_symbol_size @@ -812,7 +821,7 @@ kernel_reload_write(uio) kernel_load_ofs + kernel_image_magic_size(), kernel_exec.a_entry, boot_fphystart, boot_fphysize, boot_cphysize, kernel_symbol_esym, eclockfreq, - boot_flags); + boot_flags, scsi_nosync); /*NOTREACHED*/ /* * XXX - kernel_reload() needs to verify that the diff --git a/sys/arch/amiga/amiga/locore.s b/sys/arch/amiga/amiga/locore.s index c2788ce5626..606d55ba69a 100644 --- a/sys/arch/amiga/amiga/locore.s +++ b/sys/arch/amiga/amiga/locore.s @@ -1,4 +1,4 @@ -/* $NetBSD: locore.s,v 1.46 1995/10/09 04:33:52 chopps Exp $ */ +/* $NetBSD: locore.s,v 1.46.2.1 1995/11/24 07:51:10 chopps Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -725,6 +725,7 @@ start: | save the passed parameters. `prepass' them on the stack for | later catch by _start_c + movl a2,sp@- | pass sync inhibit flags movl d3,sp@- | pass AGA mode movl a4,sp@- | pass address of _esym movl d1,sp@- | pass chipmem-size @@ -776,7 +777,7 @@ Lstartnot040: /* let the C function initialize everything and enable the MMU */ jsr _start_c - addl #16,sp + addl #28,sp /* set kernel stack, user SP, and initial pcb */ movl _proc0paddr,a1 | proc0 kernel stack @@ -1915,14 +1916,15 @@ Lreload1: movel sp@(28),a4 | esym movel sp@(32),d4 | eclockfreq movel sp@(36),d3 | AGA mode + movel sp@(40),a2 | sync inhibit flags movel sp@(12),a6 | find entrypoint (a6) - movel sp@(4),a2 | copy kernel to low chip memory + movel sp@(4),a1 | copy kernel to low chip memory movel sp@(8),d2 movl _CHIPMEMADDR,a3 Lreload_copy: - movel a2@+,a3@+ + movel a1@+,a3@+ subl #4,d2 jcc Lreload_copy @@ -1945,7 +1947,6 @@ Lreload2: moveq #0,d2 | clear unused registers moveq #0,d6 subl a1,a1 - subl a2,a2 subl a3,a3 subl a5,a5 jmp a6@ | start new kernel diff --git a/sys/arch/amiga/conf/INSTALL b/sys/arch/amiga/conf/INSTALL new file mode 100644 index 00000000000..00f6be5cc5e --- /dev/null +++ b/sys/arch/amiga/conf/INSTALL @@ -0,0 +1,221 @@ +# $NetBSD: INSTALL,v 1.1.2.1 1995/11/24 18:56:13 chopps Exp $ + +# +# GENERIC AMIGA +# +# This configuration file contains all possible options +# + +include "std.amiga" + +maxusers 8 +options TIMEZONE=300, DST=1 + +# +# processors this kernel should support +# +options "M68040" # support for 040 +options FPSP # MC68040 floating point support +options "M68030" # support for 030 +options "M68020" # support for 020/851 +options FPCOPROC # Support for MC6888[12] (Required) + +options SWAPPAGER # Pager for processes (Required) +options VNODEPAGER # Pager for vnodes (Required) +options DEVPAGER # Pager for devices (Required) + +# +# Networking options +# +options INET # IP networking support (Required) +#options ISO # ISO Networking support +#options TPIP # ARGO TP networking support +#options CCITT # CCITT X.25 +#options NS # Xerox XNS +#options EON # ISO CLNL over IP +#options GATEWAY # Packet forwarding +#options DIRECTED_BROADCAST # Broadcast across subnets +#options NSIP # XNS over IP + +# +# File system related options +# +options QUOTA # Disk quotas for local disks +options NFSSERVER # Network File System server side code +options NFSCLIENT # Network File System client side code + +# +# File systems +# +options FFS # Berkeley fast file system +options MFS # Memory based filesystem +options PROCFS # Process filesystem +options KERNFS # Kernel parameter filesystem (Recommended) +options FDESC # /dev/fd filesystem +options NULLFS # Loopback filesystem +options FIFO # FIFO operations on vnodes (Recommended) +options ADOSFS # AmigaDOS file system +options "CD9660" # ISO 9660 file system, with Rock Ridge +#options PORTAL # Portal filesystem +#options MSDOSFS # MS-DOS filesystem + + +# +# Compatability options for various existing systems +# +options "COMPAT_10" # compatability with older NetBSD release +options "COMPAT_09" # compatability with older NetBSD release +options "COMPAT_43" # 4.3 BSD compatible system calls +#options COMPAT_SUNOS # Support to run Sun (m68k) executables +options "TCP_COMPAT_42" # Use 4.2 BSD style TCP +options "COMPAT_NOMID" # allow nonvalid machine id executables +#options COMPAT_HPUX # HP300 compatability + +# +# Support for System V IPC facilities. +# +options SYSVSHM # System V-like shared memory +options SYSVMSG # System V-like messages +options SYSVSEM # System V-like semaphores + +# +# Support for various kernel options +# +options GENERIC # Mini-root boot support +options LKM # Loadable kernel modules +options KTRACE # Add kernel tracing system call +options DIAGNOSTIC # Add additional error checking code +options "NKMEMCLUSTERS=256" # Size of kernel malloc area + +# +# Misc. debuging options +# +options PANICWAIT # Require keystroke to dump/reboot +#options DEBUG # Add debugging statements +#options DDB # Kernel debugger +#options SYSCALL_DEBUG # debug all syscalls. +#options SCSIDEBUG # Add SCSI debugging statements +#options KGDB # Kernel debugger (KGDB) support +#options PANICBUTTON # Forced crash via keypress (???) + +# +# Amiga specific options +# +options MACHINE_NONCONTIG # Non-contiguous memory support + +options RETINACONSOLE # enable code to allow retina to be console +options ULOWELLCONSOLE # enable code to allow a2410 to be console +options CL5426CONSOLE # Cirrus console + +options GRF_ECS # Enhanced Chip Set +options GRF_NTSC # NTSC +options GRF_PAL # PAL +options "GRF_A2024" # Support for the A2024 +options GRF_AGA # AGA Chip Set +options GRF_CL5426 # Cirrus board support +#options "KFONT_8X11" # 8x11 font + +# This is how you would tell the kernel the A2410 oscillator frequencies: +# The used frequencies are the defaults, and don't need option setting +#options "ULOWELL_OSC1=36000000" +#options "ULOWELL_OSC2=66667000" + +# This is how you specify the blitting speed, higher values may speed up blits +# a littel bit. If you raise this value too much some trash may appear. +# the commented version is the default. +#options RH_MEMCLK 61000000 +# this option enables the 64 bit sprite which doesn't seems to be work +# for quite a few people. E.g. The cursor sprite will turn to a block +# when moved to the top of the screen in X. +#options RH_64BIT_SPRITE +# enables fast scroll code appears to now work on 040 systems. +#options RETINA_SPEED_HACK + +grfcc0 at mainbus0 # custom chips +grfrt0 at zbus0 # retina II +grfrh0 at zbus0 # retina III +grfcl* at zbus0 # Picasso II/Piccalo/Spectrum +grful0 at zbus0 # A2410 +grfcv0 at zbus0 # CyverVision 64 + +grf0 at grfcc0 +grf1 at grfrt0 +grf2 at grfrh0 +grf3 at grfcl? +grf4 at grful0 +grf5 at grfcv0 + +ite0 at grf0 # terminal emulators for grf's +ite1 at grf1 # terminal emulators for grf's +ite2 at grf2 # terminal emulators for grf's +ite3 at grf3 # terminal emulators for grf's +ite4 at grf4 # terminal emulators for grf's + +msc0 at zbus0 # A2232 MSC multiport serial. +mfc0 at zbus0 # MultiFaceCard I/O board +mfcs0 at mfc0 unit 0 # MFC serial +mfcs1 at mfc0 unit 1 # MFC serial +#mfcp0 at mfc0 unit 0 # MFC parallel [not available yet] +#mfc1 at zbus0 # MultiFaceCard 2nd I/O board +#mfcs2 at mfc1 unit 0 +#mfcs3 at mfc1 unit 1 +#mfcp1 at mfc1 unit 0 + +le0 at zbus0 # Lance ethernet. +ed0 at zbus0 # dp8390 ethernet +es0 at zbus0 # SMC 91C90 ethernet +qn0 at zbus0 # quicknet ethernet +ae0 at zbus0 # Ariadne ethernet +bah0 at zbus0 # C= arcnet + + +# scsi stuff, all possible +gvpbus* at zbus0 +gtsc0 at gvpbus? # GVP series II scsi +ahsc0 at mainbus0 # A3000 scsi +atzsc0 at zbus0 +wstsc0 at zbus0 # Wordsync II scsi +ivsc0 at zbus0 # IVS scsi +mlhsc0 at zbus0 # Hacker scsi +otgsc0 at zbus0 # 12 gauge scsi +zssc0 at zbus0 # Zeus scsi +mgnsc0 at zbus0 # Magnum scsi +wesc0 at zbus0 # Warp Engine scsi +idesc0 at mainbus0 # A4000 & A1200 IDE +afsc0 at zbus0 # A4091 scsi +aftsc0 at mainbus0 # A4000T scsi +flsc0 at zbus0 # FastlaneZ3 scsi +bzsc0 at zbus0 # Blizzard 1230 scsi + +scsibus* at gtsc0 +scsibus* at ahsc0 +scsibus* at atzsc0 +scsibus* at wstsc0 +scsibus* at ivsc0 +scsibus* at mlhsc0 +scsibus* at otgsc0 +scsibus* at zssc0 +scsibus* at mgnsc0 +scsibus* at wesc0 +scsibus* at idesc0 +scsibus* at afsc0 +scsibus* at aftsc0 +scsibus* at flsc0 +scsibus* at bzsc0 + +# each hard drive from low target to high +# will configure to the next available sd unit number +sd* at scsibus? target ? lun ? # scsi disks + +st* at scsibus? target ? lun ? # scsi tapes +cd* at scsibus? target ? lun ? # scsi cd's + +pseudo-device sl # slip +pseudo-device ppp # ppp +pseudo-device view 10 # views +pseudo-device pty 16 # pseudo terminals +pseudo-device loop # network loopback +#pseudo-device bpfilter 2 # berkeley packet filters +#pseudo-device tun 2 + +config netbsd swap on generic diff --git a/sys/arch/amiga/dev/sbic.c b/sys/arch/amiga/dev/sbic.c index 149a484caea..ff84f213d92 100644 --- a/sys/arch/amiga/dev/sbic.c +++ b/sys/arch/amiga/dev/sbic.c @@ -1,4 +1,4 @@ -/* $NetBSD: sbic.c,v 1.19 1995/10/05 12:36:07 chopps Exp $ */ +/* $NetBSD: sbic.c,v 1.19.2.1 1995/11/24 07:51:17 chopps Exp $ */ /* * Copyright (c) 1994 Christian E. Hopps @@ -125,7 +125,7 @@ int sbic_init_wait = SBIC_INIT_WAIT; * was broken before.. now if you want this you get it for all drives * on sbic controllers. */ -int sbic_inhibit_sync = 0; +u_char sbic_inhibit_sync[8]; int sbic_enable_reselect = 1; int sbic_clock_override = 0; int sbic_no_dma = 0; @@ -836,6 +836,10 @@ sbicinit(dev) u_int my_id, i, s; u_char csr; struct sbic_acb *acb; + u_int inhibit_sync; + + extern u_long scsi_nosync; + extern int shift_nosync; regs = dev->sc_sbicp; @@ -862,6 +866,20 @@ sbicinit(dev) dev->sc_flags |= SBICF_ALIVE; dev->sc_flags &= ~SBICF_SELECTED; + /* initialize inhibit array */ + if (scsi_nosync) { + inhibit_sync = (scsi_nosync >> shift_nosync) & 0xff; + shift_nosync += 8; +#ifdef DEBUG + if (inhibit_sync) + printf("%s: Inhibiting synchronous transfer %02x\n", + dev->sc_dev.dv_xname, inhibit_sync); +#endif + for (i = 0; i < 8; ++i) + if (inhibit_sync & (1 << i)) + sbic_inhibit_sync[i] = 1; + } + sbicreset(dev); } @@ -1093,7 +1111,8 @@ sbicselectbus(dev, regs, target, lun, our_addr) * handle drives that don't want to be asked * whether to go sync at all. */ - if (sbic_inhibit_sync && dev->sc_sync[id].state == SYNC_START) { + if (sbic_inhibit_sync[id] + && dev->sc_sync[id].state == SYNC_START) { #ifdef DEBUG if (sync_debug) printf("Forcing target %d asynchronous.\n", id); diff --git a/sys/arch/amiga/dev/sbicvar.h b/sys/arch/amiga/dev/sbicvar.h index b8e4b213389..dc29ff114f8 100644 --- a/sys/arch/amiga/dev/sbicvar.h +++ b/sys/arch/amiga/dev/sbicvar.h @@ -1,4 +1,4 @@ -/* $NetBSD: sbicvar.h,v 1.9 1995/09/04 13:04:48 chopps Exp $ */ +/* $NetBSD: sbicvar.h,v 1.9.2.1 1995/11/24 07:51:20 chopps Exp $ */ /* * Copyright (c) 1990 The Regents of the University of California. @@ -162,7 +162,7 @@ struct sbic_softc { #define DDB_FOLLOW 0x04 #define DDB_IO 0x08 #endif -extern int sbic_inhibit_sync; +extern u_char sbic_inhibit_sync[8]; extern int sbic_no_dma; extern int sbic_clock_override; diff --git a/sys/arch/amiga/dev/sfas.c b/sys/arch/amiga/dev/sfas.c index 62101bfb473..2c89c1ea828 100644 --- a/sys/arch/amiga/dev/sfas.c +++ b/sys/arch/amiga/dev/sfas.c @@ -128,6 +128,9 @@ sfasinitialize(dev) sfas_regmap_p rp; u_int *pte, page; int i; + u_int inhibit_sync; + extern u_long scsi_nosync; + extern int shift_nosync; dev->sc_led_status = 0; @@ -175,6 +178,14 @@ sfasinitialize(dev) dev->sc_flags = 0; + if (scsi_nosync) { + inhibit_sync = (scsi_nosync >> shift_nosync) & 0xff; + shift_nosync += 8; + for (i = 0; i < 8; ++i) + if (inhibit_sync & (1 << i)) + sfas_inhibit_sync[i] = 1; + } + for(i=0; i<8; i++) sfas_init_nexus(dev, &dev->sc_nexus[i]); diff --git a/sys/arch/amiga/dev/siop.c b/sys/arch/amiga/dev/siop.c index 760a5d073e6..c30b9cfb1ec 100644 --- a/sys/arch/amiga/dev/siop.c +++ b/sys/arch/amiga/dev/siop.c @@ -1,4 +1,4 @@ -/* $NetBSD: siop.c,v 1.25 1995/09/29 13:52:04 chopps Exp $ */ +/* $NetBSD: siop.c,v 1.25.2.1 1995/11/24 07:51:23 chopps Exp $ */ /* * Copyright (c) 1994 Michael L. Hitch @@ -520,6 +520,11 @@ void siopinitialize(sc) struct siop_softc *sc; { + int i; + u_int inhibit_sync; + extern u_long scsi_nosync; + extern int shift_nosync; + /* * Need to check that scripts is on a long word boundary * and that DS is on a long word boundary. @@ -547,6 +552,19 @@ siopinitialize(sc) sc->sc_tcp[0] = 3000 / sc->sc_clock_freq; } + if (scsi_nosync) { + inhibit_sync = (scsi_nosync >> shift_nosync) & 0xff; + shift_nosync += 8; +#ifdef DEBUG + if (inhibit_sync) + printf("%s: Inhibiting synchronous transfer %02x\n", + sc->sc_dev.dv_xname, inhibit_sync); +#endif + for (i = 0; i < 8; ++i) + if (inhibit_sync & (1 << i)) + siop_inhibit_sync[i] = 1; + } + siopreset (sc); } diff --git a/sys/arch/amiga/stand/loadbsd/loadbsd.c b/sys/arch/amiga/stand/loadbsd/loadbsd.c index 6f08697d505..38a016d91e3 100644 --- a/sys/arch/amiga/stand/loadbsd/loadbsd.c +++ b/sys/arch/amiga/stand/loadbsd/loadbsd.c @@ -1,4 +1,4 @@ -/* $NetBSD: loadbsd.c,v 1.16.2.1 1995/10/20 11:01:16 chopps Exp $ */ +/* $NetBSD: loadbsd.c,v 1.16.2.2 1995/11/24 07:51:27 chopps Exp $ */ /* * Copyright (c) 1994 Michael L. Hitch @@ -98,15 +98,21 @@ void warnx __P((const char *, ...)); * Add -n flag & option for non-contiguous memory. * 01/28/95 - Corrected -n on usage & help messages. * 2.11 03/12/95 - Check kernel size against chip memory size. + * 2.12 11/11/95 - Add -I option to inhibit synchronous transfer + * 11/12/95 - New kernel parameter version - to support passing + * a kernel parameter data structure and support moving kernel + * image to fastmem rather than chipmem. */ -static const char _version[] = "$VER: LoadBSD 2.11 (12.3.95)"; +static const char _version[] = "$VER: LoadBSD 2.12 (12.11.95)"; /* * Kernel parameter passing version * 1: first version of loadbsd * 2: needs esym location passed in a4 + * 3: allow kernel image in fastmem rather than chipmem, and + * passing kernel parameters in a data structure */ -#define KERNEL_PARAMETER_VERSION 2 +#define KERNEL_PARAMETER_VERSION 3 #define MAXMEMSEG 16 struct boot_memlist { @@ -139,6 +145,7 @@ int p_flag; int t_flag; int reqmemsz; int S_flag; +u_long I_flag; u_long cpuid; long eclock_freq; long amiga_flags; @@ -173,7 +180,7 @@ main(argc, argv) if ((ExpansionBase=(void *)OpenLibrary(EXPANSIONNAME, 0)) == NULL) err(20, "can't open expansion library"); - while ((ch = getopt(argc, argv, "aAbc:Dhkm:n:ptSV")) != EOF) { + while ((ch = getopt(argc, argv, "aAbc:DhI:km:n:ptSV")) != EOF) { switch (ch) { case 'k': k_flag = 1; @@ -216,6 +223,9 @@ main(argc, argv) else err(20, "-n option must be 0, 1, 2, or 3"); break; + case 'I': + I_flag = strtoul(optarg, NULL, 16); + break; case 'h': verbose_usage(); default: @@ -260,8 +270,11 @@ main(argc, argv) ksize += e.a_syms + 4 + stringsz; } - if (ksize >= cmemsz) + if (ksize >= cmemsz) { + printf("Kernel size %d exceeds Chip Memory of %d\n", + ksize, cmemsz); err(20, "Insufficient Chip Memory for kernel"); + } kp = (u_char *)malloc(ksize); if (t_flag) { for (i = 0; i < memlist.m_nseg; ++i) { @@ -272,6 +285,7 @@ main(argc, argv) memlist.m_seg[i].ms_attrib, memlist.m_seg[i].ms_pri); } + printf("kernel size: %d\n", ksize); } if (kp == NULL) err(20, "failed malloc %d\n", ksize); @@ -298,6 +312,15 @@ main(argc, argv) kvers = (u_short *)(kp + e.a_entry - 2); if (*kvers > KERNEL_PARAMETER_VERSION && *kvers != 0x4e73) err(20, "newer loadbsd required: %d\n", *kvers); + if (*kvers > 2) { + printf("****************************************************\n"); + printf("*** Notice: this kernel has features which require\n"); + printf("*** a newer version of loadbsd. To allow the use of\n"); + printf("*** any newer features or capabilities, you should\n"); + printf("*** update your copy of loadbsd\n"); + printf("****************************************************\n"); + sleep(3); /* even more time to see that message */ + } if ((cpuid & AFB_68020) == 0) err(20, "cpu not supported"); /* @@ -341,7 +364,7 @@ main(argc, argv) */ LoadView(NULL); /* Don't do this if AGA active? */ startit(kp, ksize, e.a_entry, fmem, fmemsz, cmemsz, boothowto, esym, - cpuid, eclock_freq, amiga_flags); + cpuid, eclock_freq, amiga_flags, I_flag); /*NOTREACHED*/ } @@ -520,6 +543,7 @@ start_super: | d5: AttnFlags (cpuid) | d7: boothowto | a4: esym location + | a2: Inhibit sync flags | All other registers zeroed for possible future requirements. lea pc@(_startit-.+2),sp | make sure we have a good stack *** @@ -535,6 +559,7 @@ start_super: movel a3@(36),d5 | cpuid movel a3@(40),d4 | E clock frequency movel a3@(44),d3 | Amiga flags + movel a3@(48),a2 | Inhibit sync flags subl a5,a5 | target, load to 0 btst #3,(ABSEXECBASE)@(0x129) | AFB_68040,SysBase->AttnFlags @@ -579,7 +604,6 @@ L0: moveq #0,d2 | zero out unused registers moveq #0,d6 | (might make future compatibility movel d6,a1 | would have known contents) - movel d6,a2 movel d6,a3 movel d6,a5 movel d6,a6 @@ -598,7 +622,7 @@ zero: .long 0 void usage() { - fprintf(stderr, "usage: %s [-abhkptADSV] [-c machine] [-m mem] [-n mode] kernel\n", + fprintf(stderr, "usage: %s [-abhkptADSV] [-c machine] [-m mem] [-n mode] [-I sync-inhibit] kernel\n", program_name); exit(1); } @@ -614,10 +638,13 @@ SYNOPSIS \t%s [-abhkptDSV] [-c machine] [-m mem] [-n flags] kernel OPTIONS \t-a Boot up to multiuser mode. +\t-A Use AGA display mode, if available. \t-b Ask for which root device. \t Its possible to have multiple roots and choose between them. \t-c Set machine type. [e.g 3000] +\t-D Enter debugger \t-h This help message. +\t-I Inhibit sync negotiation. Option value is bit-encoded targets. \t-k Reserve the first 4M of fast mem [Some one else \t is going to have to answer what that it is used for]. \t-m Tweak amount of available memory, for finding minimum amount @@ -629,12 +656,10 @@ OPTIONS \t segment. The higher priority segment is usually faster \t (i.e. 32 bit memory), but some people have smaller amounts \t of 32 bit memory. +\t-S Include kernel symbol table. \t-t This is a *test* option. It prints out the memory \t list information being passed to the kernel and also \t exits without actually starting NetBSD. -\t-S Include kernel symbol table. -\t-D Enter debugger -\t-A Use AGA display mode, if available. \t-V Version of loadbsd program. HISTORY \tThis version supports Kernel version 720 +\n",