-/* $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
static u_long boot_flags;
+u_long scsi_nosync;
+int shift_nosync;
+
void *
chipmem_steal(amount)
long 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();
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
* 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
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
-/* $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.
| 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
/* 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
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
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
--- /dev/null
+# $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
-/* $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
* 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;
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;
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);
}
* 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);
-/* $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.
#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;
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;
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]);
-/* $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
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.
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);
}
-/* $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
* 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 {
int t_flag;
int reqmemsz;
int S_flag;
+u_long I_flag;
u_long cpuid;
long eclock_freq;
long amiga_flags;
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;
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:
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) {
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);
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");
/*
*/
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*/
}
| 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 ***
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
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
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);
}
\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
\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",