diff options
author | Michael Shalayeff <mickey@cvs.openbsd.org> | 2004-01-28 01:39:41 +0000 |
---|---|---|
committer | Michael Shalayeff <mickey@cvs.openbsd.org> | 2004-01-28 01:39:41 +0000 |
commit | eb2015b73fc7e8f74be0338c16e873a01653fe03 (patch) | |
tree | a0a1beaa9bc6601b949ea8937d79f939833b3cd3 /sys/arch/amd64/conf | |
parent | fc744b6d0908de21ef8f71c7e15dd3b113e9aad8 (diff) |
an amd64 arch support.
hacked by art@ from netbsd sources and then later debugged
by me into the shape where it can host itself.
no bootloader yet as needs redoing from the
recent advanced i386 sources (anyone? ;)
Diffstat (limited to 'sys/arch/amd64/conf')
-rw-r--r-- | sys/arch/amd64/conf/GENERIC | 73 | ||||
-rw-r--r-- | sys/arch/amd64/conf/Makefile.amd64 | 214 | ||||
-rw-r--r-- | sys/arch/amd64/conf/files.amd64 | 145 |
3 files changed, 432 insertions, 0 deletions
diff --git a/sys/arch/amd64/conf/GENERIC b/sys/arch/amd64/conf/GENERIC new file mode 100644 index 00000000000..0cd955cdf85 --- /dev/null +++ b/sys/arch/amd64/conf/GENERIC @@ -0,0 +1,73 @@ +# $OpenBSD: GENERIC,v 1.1 2004/01/28 01:39:39 mickey Exp $ + +machine amd64 + +include "../../../conf/GENERIC" + +maxusers 32 + +config bsd swap generic +option DEBUG +option SYSCALL_DEBUG + +mainbus0 at root +cpu* at mainbus? + +isa0 at mainbus0 +pci* at mainbus0 bus ? + +option PCIVERBOSE +pchb* at pci? dev ? function ? +ppb* at pci? dev ? function ? +pci* at ppb? bus ? +pci* at pchb? bus ? + +pckbc0 at isa? +pckbd* at pckbc? + +com0 at isa? port 0x3f8 irq 4 # standard PC serial ports +com1 at isa? port 0x2f8 irq 3 + +#vga0 at isa? +vga* at pci? dev ? function ? +wsdisplay* at vga? console ? +wskbd* at pckbd? console ? + +skc* at pci? dev ? function ? +sk* at skc? +fxp* at pci? dev ? function ? +eephy* at mii? phy ? +inphy* at mii? phy ? +iophy* at mii? phy ? +nsphy* at mii? phy ? +ukphy* at mii? phy ? + +ahc* at pci? dev ? function ? # Adaptec 2940 SCSI controllers +scsibus* at ahc? + +pciide* at pci? dev ? function ? +wd* at pciide? channel ? drive ? flags 0x0000 + +# PCI USB Controllers +uhci* at pci? # Universal Host Controller (Intel) +ohci* at pci? # Open Host Controller + +# USB bus support +usb* at uhci? +usb* at ohci? + +uhub* at usb? # USB Hubs +uhub* at uhub? port ? configuration ? # USB Hubs +ums* at uhidev? reportid ? +wsmouse* at ums? mux 0 +uhidev* at uhub? port ? configuration ? interface ? +ukbd* at uhidev? reportid ? +wskbd* at ukbd? console ? mux 1 +uhid* at uhidev? reportid ? + +sd* at scsibus? target ? lun ? # SCSI disk drives +cd* at scsibus? target ? lun ? # SCSI CD-ROM drives + +# mouse & keyboard multiplexor pseudo-devices +pseudo-device wsmux 2 +pseudo-device crypto 1 diff --git a/sys/arch/amd64/conf/Makefile.amd64 b/sys/arch/amd64/conf/Makefile.amd64 new file mode 100644 index 00000000000..4909063e7dc --- /dev/null +++ b/sys/arch/amd64/conf/Makefile.amd64 @@ -0,0 +1,214 @@ +# $OpenBSD: Makefile.amd64,v 1.1 2004/01/28 01:39:39 mickey Exp $ + +# Makefile for OpenBSD +# +# This makefile is constructed from a machine description: +# config machineid +# Most changes should be made in the machine description +# /sys/arch/amd64/conf/``machineid'' +# after which you should do +# config machineid +# Machine generic makefile changes should be made in +# /sys/arch/amd64/conf/Makefile.amd64 +# after which config should be rerun for all machines of that type. +# +# N.B.: NO DEPENDENCIES ON FOLLOWING FLAGS ARE VISIBLE TO MAKEFILE +# IF YOU CHANGE THE DEFINITION OF ANY OF THESE RECOMPILE EVERYTHING +# +# -DTRACE compile in kernel tracing hooks +# -DQUOTA compile in file system quotas + +# DEBUG is set to -g if debugging. +# PROF is set to -pg if profiling. + +.include <bsd.own.mk> + +MKDEP?= mkdep +SIZE?= size +STRIP?= strip + +# source tree is located via $S relative to the compilation directory +.ifndef S +S!= cd ../../../..; pwd +.endif +AMD64= $S/arch/amd64 + +INCLUDES= -nostdinc -I. -I$S/arch -I$S +CPPFLAGS= ${INCLUDES} ${IDENT} -D_KERNEL -U__NetBSD__ -D__OpenBSD__ \ + -Damd64 -Dx86_64 +CDIAGFLAGS= -Werror -Wall -Wstrict-prototypes -Wmissing-prototypes \ + -Wno-uninitialized -Wno-format -Wno-main -Wno-sign-compare + +CMACHFLAGS+= -mcmodel=kernel -mno-red-zone -fno-strict-aliasing \ + -mno-sse2 -mno-sse -mno-3dnow -mno-mmx -msoft-float \ + -fno-builtin-printf -fno-builtin-log +# -fno-stack-protector + +COPTS?= -O2 +CFLAGS= ${DEBUG} ${CDIAGFLAGS} ${CMACHFLAGS} ${COPTS} ${PIPE} +AFLAGS= -x assembler-with-cpp -traditional-cpp -D_LOCORE +LINKFLAGS= -Ttext 0xffffffff80100000 -e start -X +STRIPFLAGS= -g -x + +HOSTCC= ${CC} +HOSTED_CPPFLAGS=${CPPFLAGS:S/^-nostdinc$//} +HOSTED_CFLAGS= ${CFLAGS} + +### find out what to use for libkern +.include "$S/lib/libkern/Makefile.inc" +.ifndef PROF +LIBKERN= ${KERNLIB} +.else +LIBKERN= ${KERNLIB_PROF} +.endif + +### find out what to use for libcompat +.include "$S/compat/common/Makefile.inc" +.ifndef PROF +LIBCOMPAT= ${COMPATLIB} +.else +LIBCOMPAT= ${COMPATLIB_PROF} +.endif + +# compile rules: rules are named ${TYPE}_${SUFFIX}${CONFIG_DEP} +# where TYPE is NORMAL, DRIVER, or PROFILE; SUFFIX is the file suffix, +# capitalized (e.g. C for a .c file), and CONFIG_DEP is _C if the file +# is marked as config-dependent. + +NORMAL_C= ${CC} ${CFLAGS} ${CPPFLAGS} ${PROF} -c $< +NORMAL_C_C= ${CC} ${CFLAGS} ${CPPFLAGS} ${PROF} ${PARAM} -c $< + +DRIVER_C= ${CC} ${CFLAGS} ${CPPFLAGS} ${PROF} -c $< +DRIVER_C_C= ${CC} ${CFLAGS} ${CPPFLAGS} ${PROF} ${PARAM} -c $< + +NORMAL_S= ${CC} ${AFLAGS} ${CPPFLAGS} -c $< +NORMAL_S_C= ${CC} ${AFLAGS} ${CPPFLAGS} ${PARAM} -c $< + +HOSTED_C= ${HOSTCC} ${HOSTED_CFLAGS} ${HOSTED_CPPFLAGS} -c $< + +%OBJS + +%CFILES + +%SFILES + +# load lines for config "xxx" will be emitted as: +# xxx: ${SYSTEM_DEP} swapxxx.o +# ${SYSTEM_LD_HEAD} +# ${SYSTEM_LD} swapxxx.o +# ${SYSTEM_LD_TAIL} +SYSTEM_OBJ= locore.o vector.o copy.o microtime.o spl.o \ + param.o ioconf.o ${OBJS} ${LIBKERN} ${LIBCOMPAT} +SYSTEM_DEP= Makefile ${SYSTEM_OBJ} +SYSTEM_LD_HEAD= rm -f $@ +SYSTEM_LD= @echo ${LD} ${LINKFLAGS} -o $@ '$${SYSTEM_OBJ}' vers.o; \ + ${LD} ${LINKFLAGS} -o $@ ${SYSTEM_OBJ} vers.o +SYSTEM_LD_TAIL= @${SIZE} $@; chmod 755 $@ + +DEBUG?= +.if ${DEBUG} == "-g" +LINKFLAGS+= -X +SYSTEM_LD_TAIL+=; \ + echo cp $@ $@.gdb; rm -f $@.gdb; cp $@ $@.gdb; \ + echo ${STRIP} ${STRIPFLAGS} $@; ${STRIP} ${STRIPFLAGS} $@ +.else +LINKFLAGS+= -x +.endif + +%LOAD + +assym.h: $S/kern/genassym.sh ${AMD64}/amd64/genassym.cf Makefile + sh $S/kern/genassym.sh ${CC} ${CFLAGS} ${CPPFLAGS} \ + ${PARAM} < ${AMD64}/amd64/genassym.cf > assym.h.tmp && \ + mv -f assym.h.tmp assym.h + +param.c: $S/conf/param.c + rm -f param.c + cp $S/conf/param.c . + +param.o: param.c Makefile + ${NORMAL_C_C} + +ioconf.o: ioconf.c + ${NORMAL_C} + +newvers: ${SYSTEM_DEP} ${SYSTEM_SWAP_DEP} + sh $S/conf/newvers.sh + ${CC} ${CFLAGS} ${CPPFLAGS} ${PROF} -c vers.c + + +clean:: + rm -f eddep *bsd bsd.gdb tags *.[io] [a-z]*.s \ + [Ee]rrs linterrs makelinks assym.h + +lint: + @lint -hbxncez -Dvolatile= ${CPPFLAGS} ${PARAM} -UKGDB \ + ${CFILES} ${AMD64}/amd64/swapgeneric.c ioconf.c param.c | \ + grep -v 'static function .* unused' + +tags: + @echo "see $S/kern/Makefile for tags" + +links: + egrep '#if' ${CFILES} | sed -f $S/conf/defines | \ + sed -e 's/:.*//' -e 's/\.c/.o/' | sort -u > dontlink + echo ${CFILES} | tr -s ' ' '\12' | sed 's/\.c/.o/' | \ + sort -u | comm -23 - dontlink | \ + sed 's,.*/\(.*.o\),rm -f \1; ln -s ../GENERIC/\1 \1,' > makelinks + sh makelinks && rm -f dontlink makelinks + +AFILES= ${AMD64}/amd64/locore.S ${AMD64}/amd64/vector.S ${AMD64}/amd64/copy.S \ + ${AMD64}/amd64/microtime.S ${AMD64}/amd64/spl.S +SRCS= param.c ioconf.c ${AFILES} ${CFILES} ${SFILES} +depend:: .depend +.depend: ${SRCS} assym.h param.c ${APMINC} + ${MKDEP} ${AFLAGS} ${CPPFLAGS} ${AFILES} + ${MKDEP} -a ${CFLAGS} ${CPPFLAGS} param.c ioconf.c ${CFILES} +# ${MKDEP} -a ${AFLAGS} ${CPPFLAGS} ${SFILES} + + +# depend on root or device configuration +autoconf.o conf.o: Makefile + +# depend on network or filesystem configuration +uipc_domain.o uipc_proto.o vfs_conf.o: Makefile +if.o if_tun.o if_loop.o if_ethersubr.o: Makefile +if_arp.o if_ether.o: Makefile +ip_input.o ip_output.o in_pcb.o in_proto.o: Makefile +tcp_subr.o tcp_timer.o tcp_output.o: Makefile + +# depend on maxusers +machdep.o: Makefile + +# depend on CPU configuration +locore.o machdep.o: Makefile + + +locore.o: ${AMD64}/amd64/locore.S assym.h + ${NORMAL_S} + +vector.o: ${AMD64}/amd64/vector.S assym.h + ${NORMAL_S} + +copy.o: ${AMD64}/amd64/copy.S assym.h + ${NORMAL_S} + +microtime.o: ${AMD64}/amd64/microtime.S assym.h + ${NORMAL_S} + +spl.o: ${AMD64}/amd64/spl.S assym.h + ${NORMAL_S} + +# The install target can be redefined by putting a +# install-kernel-${MACHINE_NAME} target into /etc/mk.conf +MACHINE_NAME!= uname -n +install: install-kernel-${MACHINE_NAME} +.if !target(install-kernel-${MACHINE_NAME}}) +install-kernel-${MACHINE_NAME}: + rm -f /obsd + ln /bsd /obsd + cp bsd /nbsd + mv /nbsd /bsd +.endif + +%RULES diff --git a/sys/arch/amd64/conf/files.amd64 b/sys/arch/amd64/conf/files.amd64 new file mode 100644 index 00000000000..608a9f4ac38 --- /dev/null +++ b/sys/arch/amd64/conf/files.amd64 @@ -0,0 +1,145 @@ +# $OpenBSD: files.amd64,v 1.1 2004/01/28 01:39:39 mickey Exp $ + +maxpartitions 16 +maxusers 2 16 128 + +file arch/amd64/amd64/autoconf.c +file arch/amd64/amd64/conf.c +file arch/amd64/amd64/disksubr.c disk +file arch/amd64/amd64/gdt.c +file arch/amd64/amd64/machdep.c +file arch/amd64/amd64/identcpu.c +file arch/amd64/amd64/mem.c +file arch/amd64/amd64/pmap.c +file arch/amd64/amd64/process_machdep.c +file arch/amd64/amd64/sys_machdep.c +file arch/amd64/amd64/syscall.c +file arch/amd64/amd64/trap.c +file arch/amd64/amd64/vm_machdep.c +file arch/amd64/amd64/fpu.c +file arch/amd64/amd64/Locore.c +file arch/amd64/amd64/softintr.c +file arch/amd64/amd64/i8259.c +file arch/amd64/amd64/cacheinfo.c + +file arch/amd64/amd64/intr.c +file arch/amd64/amd64/bus_space.c +file arch/amd64/amd64/bus_dma.c + +file arch/amd64/amd64/consinit.c +file dev/cons.c +file dev/cninit.c + +file arch/amd64/amd64/db_disasm.c ddb +file arch/amd64/amd64/db_interface.c ddb +file arch/amd64/amd64/db_memrw.c ddb +file arch/amd64/amd64/db_trace.c ddb + +file netinet/in_cksum.c inet + +# Basic clock - required +file arch/amd64/isa/clock.c +file dev/clock_subr.c + + +include "dev/mii/files.mii" + +include "scsi/files.scsi" + +include "dev/i2o/files.i2o" + +include "dev/atapiscsi/files.atapiscsi" +include "dev/ata/files.ata" + +define mainbus { } +device mainbus: isabus, pcibus, mainbus +attach mainbus at root +file arch/amd64/amd64/mainbus.c mainbus + +define cpu { [apid = -1] } +device cpu +attach cpu at mainbus +file arch/amd64/amd64/cpu.c cpu + + +define lapic +file arch/amd64/amd64/lapic.c lapic needs-flag + +device ioapic: lapic +attach ioapic at mainbus +file arch/amd64/amd64/ioapic.c ioapic needs-flag + +# +# PCI drivers +# + +include "dev/pci/files.pci" +file arch/amd64/pci/pci_machdep.c pci +file arch/amd64/pci/pciide_machdep.c pciide + +# PCI Host bridge chipsets +device pchb: pcibus +attach pchb at pci +file arch/amd64/pci/pchb.c pchb + +# PCI-ISA bridges +device pcib: isabus +attach pcib at pci +file arch/amd64/pci/pcib.c pcib + +device aapic +attach aapic at pci +file arch/amd64/pci/aapic.c aapic + +# +# ISA drivers +# + +include "dev/isa/files.isa" +include "dev/isa/files.isapnp" +file arch/amd64/isa/isa_machdep.c isa + +# attribute used to represent the "keyboard controller" +# XXX should be a real device +define pckbcport { [irq = -1], [port = -1] } + +include "dev/wscons/files.wscons" +include "dev/pckbc/files.pckbc" + +file arch/amd64/amd64/wscons_machdep.c wsdisplay + +device sysbeep +attach sysbeep at pcppi + +# Floppy disk controller +device fdc { drive = - 1 } +attach fdc at isa +file dev/isa/fdc.c fdc needs-flag + +device fd: disk, isa_dma +attach fd at fdc +file dev/isa/fd.c fd needs-flag + +# +# USB +# +include "dev/usb/files.usb" + +# +# FireWire +# +include "dev/ieee1394/files.ieee1394" + +# +# device major numbers +# + +major {ccd = 16} +major {vnd = 14} +major {sd = 4} +major {st = 5} +major {cd = 6} +major {rd = 17} +major {wd = 0} +major {wt = 3} +major {fd = 2} |