let loadbsd define sync scsi operation
authorderaadt <deraadt@openbsd.org>
Tue, 28 Nov 1995 19:35:58 +0000 (19:35 +0000)
committerderaadt <deraadt@openbsd.org>
Tue, 28 Nov 1995 19:35:58 +0000 (19:35 +0000)
sys/arch/amiga/amiga/amiga_init.c
sys/arch/amiga/amiga/locore.s
sys/arch/amiga/conf/INSTALL [new file with mode: 0644]
sys/arch/amiga/dev/sbic.c
sys/arch/amiga/dev/sbicvar.h
sys/arch/amiga/dev/sfas.c
sys/arch/amiga/dev/siop.c
sys/arch/amiga/stand/loadbsd/loadbsd.c

index 336da5a..8eb391c 100644 (file)
@@ -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
index c2788ce..606d55b 100644 (file)
@@ -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 (file)
index 0000000..00f6be5
--- /dev/null
@@ -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
index 149a484..ff84f21 100644 (file)
@@ -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);
index b8e4b21..dc29ff1 100644 (file)
@@ -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;
 
index 62101bf..2c89c1e 100644 (file)
@@ -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]);
 
index 760a5d0..c30b9cf 100644 (file)
@@ -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);
 }
 
index 6f08697..38a016d 100644 (file)
@@ -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",