#       $NetBSD: files.amd64,v 1.124 2025/01/02 10:34:33 imil Exp $
#
# new style config file for amd64 architecture
#

# maxpartitions must be first item in files.${ARCH}.newconf
maxpartitions 16

maxusers 2 16 128

# delay before cpu_reset() for reboot.
defparam                CPURESET_DELAY

# The REAL{BASE,EXT}MEM options
defparam opt_realmem.h  REALBASEMEM REALEXTMEM

# The PHYSMEM_MAX_{SIZE,ADDR} options
defparam opt_physmem.h  PHYSMEM_MAX_ADDR PHYSMEM_MAX_SIZE

# Enable GCC spectre V2 mitigation options
defflag opt_spectre.h   SPECTRE_V2_GCC_MITIGATION

# Enable kernel self-relocation at bootstrap
defflag opt_selfreloc.h SELFRELOC

#
# XXX these are just here at the moment so that we can share files
# with the i386 (they include the opt_*.h for these)
#

defflag                 USER_LDT
defflag eisa.h          EISA

# Start code
file    arch/amd64/amd64/locore.S               machdep
file    arch/amd64/amd64/vector.S               machdep
file    arch/amd64/amd64/copy.S                 machdep
file    arch/amd64/amd64/spl.S                  machdep

file    arch/amd64/amd64/amd64_trap.S           machdep
file    arch/amd64/amd64/autoconf.c             machdep & !xenpv
file    arch/amd64/amd64/busfunc.S              machdep
file    arch/amd64/amd64/cpu_in_cksum.S         (inet | inet6) & cpu_in_cksum
file    arch/amd64/amd64/cpufunc.S              machdep
file    arch/amd64/amd64/db_disasm.c            ddb
file    arch/amd64/amd64/db_interface.c         ddb
file    arch/amd64/amd64/db_machdep.c           ddb
file    arch/amd64/amd64/kobj_machdep.c         modular
file    kern/subr_disk_mbr.c                    disk
file    arch/amd64/amd64/gdt.c                  machdep
file    arch/amd64/amd64/machdep.c              machdep
file    arch/amd64/amd64/prekern.c              kaslr
file    arch/amd64/amd64/process_machdep.c      machdep
file    arch/amd64/amd64/trap.c                 machdep
file    arch/x86/x86/fpu.c                      machdep
file    arch/x86/x86/dbregs.c                   machdep
file    arch/x86/x86/convert_xmm_s87.c          machdep
file    arch/x86/x86/spectre.c                  machdep & !xenpv
file    arch/amd64/amd64/lock_stubs.S           machdep
file    dev/cons.c                              machdep

file    arch/amd64/amd64/mptramp.S        multiprocessor & !xenpv

#
# Stack-less Just-In-Time compiler
#

include "external/bsd/sljit/conf/files.sljit"

#
# Machine-independent SCSI drivers
#

include "dev/scsipi/files.scsipi"

#
# Machine-independent ATA drivers
#

include "dev/ata/files.ata"

# Memory Disk for install floppy
file    dev/md_root.c                   memory_disk_hooks

#
# Machine-independent I2O drivers
#

include "dev/i2o/files.i2o"

#
# System bus types
#

# XXX BIOS32 only if something that uses it is configured!
device  mainbus: isabus, pcibus, bios32, acpibus, cpubus, ioapicbus,
       ipmibus, hypervisorbus, pvbus
attach  mainbus at root
file    arch/amd64/amd64/amd64_mainbus.c        mainbus & !xenpv
file    arch/x86/x86/mainbus.c                  mainbus

#
# PCI-only drivers
# XXX MUST BE INCLUDED BEFORE files.isa, as long as files.isa attaches
# XXX devices to 'pci'.
#

include "dev/pci/files.pci"
defparam                        PCI_CONF_MODE
include "dev/pci/files.agp"

# x86 specific PCI hardware
include "arch/x86/pci/files.pci"

#
# ISA or ISA+PCI drivers
#

include "dev/isa/files.isa"

# attribute used to represent the "keyboard controller"
# XXX should be a real device
define  pckbcport { [irq = -1], [port = -1] }

include "dev/pckbport/files.pckbport"

device  sysbeep
attach  sysbeep at pcppi

# Floppy disk controller
device  fdc {drive = -1}: isadma
file    dev/isa/fd.c                            fdc needs-flag

attach  fdc at isa with fdc_isa
file    dev/isa/fdc_isa.c                       fdc_isa

device  fd: disk
attach  fd at fdc

#
# Compatibility modules
#
# Binary compatibility with previous NetBSD releases (COMPAT_XX)
file    arch/amd64/amd64/compat_13_machdep.c    compat_13
file    arch/amd64/amd64/compat_16_machdep.c    compat_16

# NetBSD/i386 32-bit binary compatibility (COMPAT_NETBSD32)
include "compat/netbsd32/files.netbsd32"
file    arch/amd64/amd64/netbsd32_machdep.c     compat_netbsd32
file    arch/amd64/amd64/netbsd32_machdep_13.c  compat_netbsd32 & compat_13
file    arch/amd64/amd64/netbsd32_machdep_16.c  compat_netbsd32 & compat_16
file    arch/amd64/amd64/netbsd32_sigcode.S     compat_netbsd32 & compat_16
file    arch/amd64/amd64/netbsd32_syscall.c     compat_netbsd32

# Linux compatibility (COMPAT_LINUX)
include "compat/linux/files.linux"
include "compat/linux/arch/amd64/files.linux_amd64"
file    arch/amd64/amd64/linux_sigcode.S                compat_linux
file    arch/amd64/amd64/linux_syscall.c                compat_linux
file    arch/x86/x86/linux_trap.c                       compat_linux

# Linux 32 bit compatibility (COMPAT_LINUX32)
include "compat/linux32/files.linux32"
include "compat/linux32/arch/amd64/files.linux32_amd64"
file    arch/amd64/amd64/linux32_sigcode.S              compat_linux32
file    arch/amd64/amd64/linux32_syscall.c              compat_linux32

# OSS audio driver compatibility
include "compat/ossaudio/files.ossaudio"

#
# CARDBUS
#
include "dev/cardbus/files.cardbus"
file    arch/amd64/amd64/rbus_machdep.c cardbus

# this wants to be probed as late as possible.
#
# Machine-independent PCMCIA drivers
#
include "dev/pcmcia/files.pcmcia"

include "dev/usb/files.usb"

include "dev/bluetooth/files.bluetooth"

include "dev/sdmmc/files.sdmmc"

include "dev/ieee1394/files.ieee1394"
include "dev/apm/files.apm"
include "dev/acpi/files.acpi"
file    arch/amd64/acpi/acpi_wakeup_low.S       acpi & !xenpv

# Microsoft Hyper-V
include "dev/hyperv/files.hyperv"

attach  vmbus at acpinodebus with vmbus_acpi
file    dev/acpi/vmbus_acpi.c                   vmbus_acpi

# VMEbus support
include "dev/vme/files.vme"

# PVbus support
include "arch/x86/pv/files.pv"

include "arch/amd64/conf/majors.amd64"