Subject: port-sparc/6358: Cannot compile sun4c only kernel
To: None <gnats-bugs@gnats.netbsd.org>
From: Krister Walfridsson <cato@ulysses.df.lth.se>
List: netbsd-bugs
Date: 10/25/1998 20:54:57
>Number:         6358
>Category:       port-sparc
>Synopsis:       Cannot compile sun4c only kernel
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    gnats-admin (GNATS administrator)
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Oct 25 12:05:00 1998
>Last-Modified:
>Originator:     Krister Walfridsson
>Organization:
	
>Release:        NetBSD-current Oct 25
>Environment:
	
System: NetBSD ulysses 1.3H NetBSD 1.3H (GENERIC) #0: Sat Oct 17 20:54:20 CEST 1998 cato@ulysses:/dsk2/tmp/nbsd981017.i386/src/sys/arch/i386/compile/GENERIC i386


>Description:
Compilation of a kernel with only sun4c support fails with the messsage

cc  -O2 -Wall -Wstrict-prototypes -Wmissing-prototypes -mno-fpu -I. -I../../../../arch -I../../../.. -nostdinc -DSUN4C -DRASTERCONSOLE -DCOMPAT_43 -DMAXUSERS=32 -D_KERNEL  -c ../../../../arch/sparc/sparc/cpu.c
../../../../arch/sparc/sparc/cpu.c: In function `mp_pause_cpus':
../../../../arch/sparc/sparc/cpu.c:440: dereferencing pointer to incomplete type
../../../../arch/sparc/sparc/cpu.c:440: warning: implicit declaration of function `PINTR_SINTRLEV'
../../../../arch/sparc/sparc/cpu.c: In function `mp_resume_cpus':
../../../../arch/sparc/sparc/cpu.c:456: dereferencing pointer to incomplete type
*** Error code 1

Stop.

This is particulary bad since sun4c cannot run GENERIC kernels
(PR port-sparc/6188)

>How-To-Repeat:
Try to compile a kernel configured as in:


include "arch/sparc/conf/std.sparc"

maxusers        32

## System kernel configuration.  See options(4) for more detail.


# Options for variants of the Sun SPARC architecure.
# We currently support three architecture types; at least one is required.
#options        SUN4            # sun4/100, sun4/200, sun4/300
options         SUN4C           # sun4c - SS1, 1+, 2, ELC, SLC, IPC, IPX, etc.
#options        SUN4M           # sun4m - SS10, SS20, Classic, etc.

#options        SUN4_MMU3L      # 3-level MMU on sun4/400; (incomplete)

## System options specific to the sparc machine type

# Blink the power LED on some machines to indicate the system load.
#options        BLINK

## Use a faster console than the PROM's slow drawing routines.  Not needed
## for headless (no framebuffer) machines.
options         RASTERCONSOLE   # fast rasterop console


#### System options that are the same for all ports

## Root device configuration: change the ?'s if you are going to use a
## nonstandard root partition (other than where the kernel is booted from)
## and/or nonstandard root type (not ffs or nfs).  Normally this can be
## automagically determined at boot time.

config          netbsd  root on ? type ?

## System call tracing (see ktrace(1)).
options         KTRACE

## Collect statistics on kernel malloc's and free's.  This does have a
## significant performance hit on slower machines, so it is intended for
## diagnostic use only.
#options        KMEMSTATS

## System V compatible IPC subsystem.  (msgctl(2), semctl(2), and shmctl(2))
options         SYSVMSG         # System V message queues
options         SYSVSEM         # System V semaphores
options         SYSVSHM         # System V shared memory
#options        SHMMAXPGS=1024  # 1024 pages is the default

## Loadable kernel module support; still under development.
#options        LKM

## NFS boot options; default on sparc is the bootparam protocol
options         NFS_BOOT_BOOTPARAM
#options        NFS_BOOT_BOOTP
#options        NFS_BOOT_DHCP

#### Debugging options

## The DDB in-kernel debugger runs at panic (unless DDB_ONPANIC=0), or at
## serial console break or keyboard reset, where the PROM would normally
## intercept.  DDB_HISTORY_SIZE adds up/down arrow command history.
#options        DDB                     # kernel dynamic debugger
#options        DDB_HISTORY_SIZE=100    # enable history editing in DDB
#options        DDB_ONPANIC=1           # see also sysctl(8): `ddb.onpanic'

## You may also use gdb, on another computer connected to this machine over
## a serial port.  Both KGDBDEV and KGDBRATE should be specified; KGDBDEV is
## a dev_t encoded device number of the serial port to use.
## (0xc01 = ttya, 0xc02 = ttyb.)
#options        KGDB            # support for kernel gdb
#options        KGDBDEV=0xc01   # kgdb device number (this sample is `ttyb')
#options        KGDBRATE=38400  # baud rate


## Compile the kernel with debugging symbols (`netbsd.gdb' is the debug file),
## such that gdb(1) can be used on a kernel coredump.

#makeoptions    DEBUG="-g"


## Adds code to the kernel that does internal consistency checks, and will
## cause the kernel to panic if corruption of internal data structures
## is detected.
#options        DIAGNOSTIC      # extra kernel sanity checking

## Enable (possibly expensive) debugging code that may also display messages
## on the system console
#options        DEBUG

## Make SCSI error messages more verbose when explaining their meanings.
options         SCSIVERBOSE

## `INSECURE' turns off the kernel security level (securelevel = 0 always).
## This allows writing to /dev/mem, loading kernel modules while multi-user,
## and other insecurities good only for development work.  Do not use this
## option on a production machine.
#options        INSECURE

## Allow non-root users to grab /dev/console with programs such as xconsole.
## `xconsole' therefore does not need setuid root with this option enabled.
#options        UCONSOLE

## `FDSCRIPTS' allows non-readable but executable scripts by providing a
## pre-opened opaque file to the script interpreter.  `SETUIDSCRIPTS',
## which implies FDSCRIPTS, allows scripts to be set-user-id using the same
## opaque file mechanism.  Perl calls this "secure setuid scripts."

#options        FDSCRIPTS
#options        SETUIDSCRIPTS

## Options for compatibility with previous releases foreign system binaries.
## In the cases of COMPAT_SUNOS and COMPAT_SVR4, you may need to set up
## additional user-level utilities or system configuration files. See
## compat_sunos(8) and compat_svr4(8).

options         COMPAT_43       # 4.3BSD system interfaces
options         COMPAT_10       # NetBSD 1.0 binary compatibility
options         COMPAT_11       # NetBSD 1.1 binary compatibility
options         COMPAT_12       # NetBSD 1.2 binary compatibility
options         COMPAT_13       # NetBSD 1.3 binary compatibility
options         COMPAT_SUNOS    # SunOS 4.x binary compatibility
options         COMPAT_SVR4     # SunOS 5.x binary compatibility
options         EXEC_ELF32      # Exec module for SunOS 5.x binaries.

## File systems.  You probably need at least one of FFS or NFS.
file-system     FFS             # Berkeley Fast Filesystem
file-system     NFS             # Sun NFS-compatible filesystem client
file-system     KERNFS          # kernel data-structure filesystem
file-system     NULLFS          # NULL layered filesystem
file-system     MFS             # memory-based filesystem
file-system     FDESC           # user file descriptor filesystem
file-system     UMAPFS          # uid/gid remapping filesystem
file-system     LFS             # Log-based filesystem (still experimental)
file-system     PORTAL          # portal filesystem (still experimental)
file-system     PROCFS          # /proc
file-system     CD9660          # ISO 9660 + Rock Ridge file system
file-system     UNION           # union file system
file-system     MSDOSFS         # MS-DOS FAT filesystem(s).

## File system options.
options         NFSSERVER       # Sun NFS-compatible filesystem server
options         QUOTA           # FFS quotas
#options        FFS_EI          # FFS Endian Independent support

## Network protocol support.  In most environments, INET is required.
options         INET            # IP (Internet Protocol) v4
options         TCP_COMPAT_42   # 4.2BSD IP implementation compatibility
#options        GATEWAY         # packet forwarding ("router switch")
#options        MROUTING        # packet forwarding of multicast packets
#options        DIRECTED_BROADCAST      # allow broadcasts through routers
options         NS              # Xerox NS networking
#options        NSIP            # Xerox NS tunneling over IP
options         ISO,TPIP        # OSI networking
options         EON             # OSI tunneling over IP
#options        CCITT,LLC,HDLC  # X.25 packet switched protocol
options         NETATALK        # AppleTalk (over Ethernet) protocol
options         NTP             # Network Time Protocol in-kernel support
#options        PPS_SYNC        # Add serial line synchronization for NTP
#options        PFIL_HOOKS      # Add pfil(9) hooks, intended for custom LKMs.
#options        IPFILTER_LOG    # Add ipmon(8) logging for ipfilter device
#options        PPP_BSDCOMP     # Add BSD compression to ppp device
#options        PPP_DEFLATE     # Add deflate (libz) compression to ppp device
#options        PPP_FILTER      # Add active filters for ppp (via bpf)



#### Main bus and CPU .. all systems.
mainbus0 at root
cpu0    at mainbus0

#### Bus types found on SPARC systems.

sbus0   at mainbus0                             # sun4c
#obio0  at mainbus0                             # sun4 and sun4m
#vme0   at mainbus0                             # sun4
#iommu0 at mainbus0                             # sun4m
#sbus0  at iommu0                               # sun4m
#vme0   at iommu0                               # sun4m

## SBus expander box
#xbox*  at sbus? slot ? offset ?
#sbus*  at xbox?

#### Standard system devices -- all required for a given architecture

## Auxiliary system registers on sun4c and sun4m
auxreg0 at mainbus0                             # sun4c
#auxreg0        at obio0                                # sun4m

## Power status and control register on Sun4m systems
#power0 at obio0

## Mostek clock found on 4/300, sun4c, and sun4m systems.
## The Mostek clock NVRAM is the "eeprom" on sun4/300 systems.
clock0  at mainbus0                             # sun4c
#clock0 at obio0                                # sun4m
#clock0 at obio0 addr 0xf2000000                # sun4/300

## Intersil clock found on 4/100 and 4/200 systems.
#oclock0        at obio0 addr 0xf3000000                # sun4/200
#oclock0        at obio0 addr 0x03000000                # sun4/100

## Memory error registers.
memreg0 at mainbus0                             # sun4c
#memreg0        at obio0                                # sun4m
#memreg0        at obio0 addr 0xf4000000                # sun4/200 and sun4/300
#memreg0        at obio0 addr 0x04000000                # sun4/100

## Timer chip found on 4/300, sun4c, and sun4m systems.
timer0  at mainbus0                             # sun4c
#timer0 at obio0                                # sun4m
#timer0 at obio0 addr 0xef000000                # sun4/300

## EEPROM found on 4/100 and 4/200 systems.  Note that the 4/300
## doesn't use this driver; the `EEPROM' is in the NVRAM on the
## Mostek clock chip on 4/300 systems.
#eeprom0        at obio0 addr 0xf2000000                # sun4/200
#eeprom0        at obio0 addr 0x02000000                # sun4/100


#### Serial port configuration

## Zilog 8530 serial chips.  Each has two-channels.
## zs0 is ttya and ttyb.  zs1 is the keyboard and mouse.
zs0     at mainbus0                                     # sun4c
#zs0    at obio0                                        # sun4m
#zs0    at obio0 addr 0xf1000000 level 12 flags 0x103   # sun4/200 and sun4/300
#zs0    at obio0 addr 0x01000000 level 12 flags 0x103   # sun4/100
zstty0  at zs0 channel 0        # ttya
zstty1  at zs0 channel 1        # ttyb

zs1     at mainbus0                                     # sun4c
#zs1    at obio0                                        # sun4m
#zs1    at obio0 addr 0xf0000000 level 12 flags 0x103   # sun4/200 and sun4/300
#zs1    at obio0 addr 0x00000000 level 12 flags 0x103   # sun4/100
kbd0    at zs1 channel 0        # keyboard
ms0     at zs1 channel 1        # mouse

#zs2    at obio0 addr 0xe0000000 level 12 flags 0x103   # sun4/300
#zstty2 at zs2 channel 0        # ttyc
#zstty3 at zs2 channel 1        # ttyd


## Magma Serial/Parallel driver
#magma* at sbus? slot ? offset ?
#mtty*  at magma?
#mbpp*  at magma?


#### Disk controllers and disks

#

## The following flags may be set for the NCR53c94 based esp driver:
##      bits 0-7:  disable disconnect/reselect for the corresponding target
##      bits 8-15: disable synchronous negotiation for target [bit-8]

## sun4/300, sun4c, sun4m on-board SCSI, and FSBE/S SBus SCSI cards.
## Both `dma' and `esp' are needed in all cases.
## Two kinds of additional SBus SCSI interfaces are available.  One uses
## "esp at sbus" like the sun4c on-board; the other uses "esp at dma".

## sun4/300 SCSI - an NCR53c94 or equivalent behind
## an LSI Logic DMA controller

#dma0   at obio0 addr 0xfa001000 level 4                # sun4/300
#esp0   at obio0 addr 0xfa000000 level 4 flags 0x0000   # sun4/300

dma0    at sbus0 slot ? offset ?                        # sun4c/sun4m
esp0    at sbus0 slot ? offset ? flags 0x0000           # sun4c
#esp0   at dma0 flags 0x0000                            # sun4m

# FSBE/S SCSI
#dma*   at sbus? slot ? offset ?                        # SBus
#esp*   at sbus? slot ? offset ? flags 0x0000           # SBus (older proms)
#esp*   at dma? flags 0x0000                            # SBus

scsibus* at esp?

## Qlogic ISP SBus SCSI Card
#isp*   at sbus? slot ? offset ?
#scsibus* at isp?

## NCR5380-based "Sun SCSI 3" VME SCSI controller.
## This driver has several flags which may be enabled by OR'ing
## the values and using the "flags" directive.
## Valid flags are:
##
##      0x01            Use DMA (may be polled)
##      0x02            Use DMA completion interrupts
##      0x04            Allow disconnect/reselect
##
## E.g. the following would enable DMA, interrupts, and reselect:
## si0  at vme0 addr 0x200000 level 3 vect 0x40 flags 0x07
##
## By default, DMA is enabled in the driver.

#si0    at vme0 addr 0x200000 pri 2 vec 0x40
#scsibus* at si?

## NCR5380-based "SCSI Weird" on-board SCSI interface found
## on sun4/100 systems.  The flags are the same as the "si"
## controller.  Note, while DMA is enabled by default, only
## polled DMA works at this time, and reselects do not work
## on this particular controller.

#sw0    at obio0 addr 0x0a000000 level 3
#scsibus* at sw?

## These entries find devices on all SCSI busses and assign
## unit numbers dynamically.
sd*     at scsibus? target ? lun ?              # SCSI disks
#st*    at scsibus? target ? lun ?              # SCSI tapes
#cd*    at scsibus? target ? lun ?              # SCSI CD-ROMs
#ch*    at scsibus? target ? lun ?              # SCSI changer devices
#ss*    at scsibus? target ? lun ?              # SCSI scanners
#uk*    at scsibus? target ? lun ?              # unknown SCSI


## Xylogics 753 or 7053 VME SMD disk controllers and disks, found
## on sun4 systems.
#xdc0   at vme0 addr 0xee80 pri 3 vec 0x44
#xdc1   at vme0 addr 0xee90 pri 3 vec 0x45
#xdc2   at vme0 addr 0xeea0 pri 3 vec 0x46
#xdc3   at vme0 addr 0xeeb0 pri 3 vec 0x47
#xd*    at xdc? drive ?

## Xylogics 451 or 451 VME SMD disk controllers and disks, found
## on sun4 systems.
#xyc0   at vme0 addr 0xee40 pri 3 vec 0x48
#xyc1   at vme0 addr 0xee48 pri 3 vec 0x49
#xy*    at xyc? drive ?


## Floppy controller and drive found on SPARCstations.

#fdc0   at mainbus0                             # sun4c controller
#fdc0   at obio0                                # sun4m controller
#fd*    at fdc0                                 # the drive itself

## A disk-like interface to files.  Can be used to create floppy, CD,
## miniroot images, etc.

pseudo-device   vnd     4

## Concatenated and striped disks; with this, you can create a software-based
## disk array similar to a "RAID 0" setup.  See ccd(4).

#pseudo-device  ccd     4

## Memory disk device, used on boot floppies with compressed
## kernel-plus-root-disk images.

#pseudo-device  md      1


#### Network interfaces

## LANCE Ethernet - an AMD 7990 LANCE behind specialized DMA glue
## Three flavors of additional SBus ethernets are available.  One attaches
## directly like the sun4c on-board, one uses the ledma device like the
## sun4m on-board, and one uses the lebuffer device.

#le0            at obio0 addr 0xf9000000 level 6        # sun4/300
le0             at sbus0 slot ? offset ?                # sun4c on-board
#ledma0         at sbus0 slot ? offset ?                # sun4m on-board
#le0            at ledma0                               # sun4m on-board
#le*            at sbus? slot ? offset ?                # SBus
#ledma*         at sbus? slot ? offset ?                # SBus
#le*            at ledma?                               # SBus
#lebuffer0      at sbus? slot ? offset ?                # SBus
#le0            at lebuffer?                            # SBus
#lebuffer*      at sbus? slot ? offset ?                # SBus
#le*            at lebuffer?                            # SBus


## sun4/100 and sun4/200 Ethernet - an Intel 82586 on-board
## or on a Multibus/VME card.
#ie0    at obio0 addr 0xf6000000 level 6                # sun4/200 on-board
#ie0    at obio0 addr 0x06000000 level 6                # sun4/100 on-board
#ie1    at vme0 addr 0xe88000 pri 3 vec 0x75            # VME
#ie2    at vme0 addr 0x31ff02 pri 3 vec 0x76            # VME
#ie3    at vme0 addr 0x35ff02 pri 3 vec 0x77            # VME
#ie4    at vme0 addr 0x2dff02 pri 3 vec 0x7c            # VME

## qec/be, qec/hme
#qec*           at sbus? slot ? offset ?
#be*            at qec?
#hme*           at qec?

# midway ATM
#en0    at sbus? slot ? offset ?

## Loopback network interface; required
pseudo-device   loop

## SLIP and CSLIP interfaces, for IP over a serial line.
#pseudo-device  sl              2

## PPP, the successor to SLIP.  See pppd(8).
#pseudo-device  ppp             2

## Starmode Radio IP, a special hardware network device.
#pseudo-device  strip           1

## Network "tunnel" device, allowing protocol stacks to run in the userland.
## This is used by the third-party user-mode "ppp" program, and others.
pseudo-device   tun             4

## Berkeley Packet Filter, required to run RARPD.  A generic C-language
## interface that allows selective examining of incoming packets.
pseudo-device   bpfilter        8

## IP Filter, used in firewall and NAT applications.  See ipnat(8) for
## one example of the use of the IP Filter.
pseudo-device   ipfilter


#### Audio and video devices

## /dev/audio support (`audioamd' plus `audio')
##
audioamd0       at mainbus0                             # sun4c
#audioamd0      at obio0                                # sun4m
#audioamd0      at sbus0 slot ? offset ?                # sun4m
audio*          at audioamd0

#audiocs0       at sbus0 slot ? offset ?                # SUNW,CS4231
#audio*         at audiocs0


## Sun "bwtwo" black and white framebuffer, found on sun4, sun4c, and sun4m
## systems.  If your sun4 system has a cgfour installed in the P4 slot,
## the P4 entries for "bwtwo" will attach to the overlay plane of the
## "cgfour".

bwtwo0          at sbus0 slot ? offset ?                # sun4c and sun4m
bwtwo*          at sbus? slot ? offset ?                #
#bwtwo0         at obio0 addr 0xfd000000 level 4        # sun4/200
#bwtwo0         at obio0 addr 0xfb300000 level 4        # sun4/300 in P4 slot
#bwtwo0         at obio0 addr 0x0b300000 level 4        # sun4/100 in P4 slot

## Sun "cgtwo" VME color framebuffer
#cgtwo0         at vme0 addr 0x400000 pri ? vec 0xa8

## Sun "cgthree" Sbus color framebuffer
#cgthree0       at sbus? slot ? offset ?
#cgthree*       at sbus? slot ? offset ?
#cgthree0       at obio? slot ? offset ?                # sun4m

## Sun "cgfour" color framebuffer with overlay plane.  See above comment
## regarding overlay plane.
#cgfour0                at obio0 addr 0xfb300000 level 4        # sun4/300 P4
#cgfour0                at obio0 addr 0x0b300000 level 4        # sun4/100 P4

## Sun "cgsix" accelerated color framebuffer.
#cgsix0         at sbus? slot ? offset ?
#cgsix*         at sbus? slot ? offset ?
#cgsix0         at obio0 addr 0xfb000000 level 4        # sun4/300 P4
#cgsix0         at obio0 addr 0x0b000000 level 4        # sun4/100 P4

## Sun "cgeight" 24-bit framebuffer
#cgeight0       at obio0 addr 0xfb300000 level 4        # sun4/300 P4
#cgeight0       at obio0 addr 0x0b300000 level 4        # sun4/100 P4

## Sun "tcx" accelerated color framebuffer.
#tcx0           at sbus? slot ? offset ?
#tcx*           at sbus? slot ? offset ?

# Sun "cgfourteen" accelerated 24-bit framebuffer.
#cgfourteen0    at obio0                        # sun4m


#### Other device configuration

## Pseudo ttys, required for network logins and programs like screen.
## 32 is a good number for average systems; you may have as many as you
## like, though 256 is more or less the upper limit.  Increasing this
## number still requires you to run /dev/MAKEDEV to create the files
## for the ptys.

pseudo-device   pty             32      # pseudo-ttys (for network, etc.)

## Random device, used to implement /dev/random (a source of random noise),
## and generate randomness for some kernel formulae.
## THIS DEVICE IS EXPERIMENTAL; use at your own risk.

#pseudo-device  rnd

>Fix:
	
>Audit-Trail:
>Unformatted: