Commit 8920da3b authored by Christian Dietrich's avatar Christian Dietrich

cmake: simplify build system

remove some old cruft

Change-Id: Ie94b7dd352acec017979ce76fcc6d0f7fbd197b8
parent fcd30807
......@@ -29,18 +29,6 @@ endif()
include(${CMAKE_CURRENT_BINARY_DIR}/config.cmake)
list(REMOVE_DUPLICATES GENERATOR_ARGS)
if(GENERATOR_ARGS)
message(STATUS "[${PROJECT_NAME}] Additional Generator Arguments: ${GENERATOR_ARGS}")
string (REPLACE ";" " " _TMP_STR "${GENERATOR_ARGS}")
add_definitions(-DGENERATOR_ARGS="${_TMP_STR}")
else()
add_definitions(-DGENERATOR_ARGS="")
set(GENERATOR_ARGS "" CACHE STRING "")
endif()
option(FAIL_TRACE_ALL "Trace all binaries" OFF)
if(FAIL_TRACE_ALL)
message(STATUS "[${PROJECT_NAME}] Fail Trace All: ON")
......@@ -85,11 +73,6 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -include ${PROJECT_BINARY_DIR}/dosek_config.
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -include ${PROJECT_BINARY_DIR}/dosek_config.h")
list(REMOVE_DUPLICATES GENERATOR_ARGS)
# Documentation
add_subdirectory(toolchain/doxygen)
......
include(app)
#set(DOSEK_APPS "bcc1_tasks" CACHE STRING "Application(s) to compile (semicolon seperated)")
SUBDIRLIST(SUBDIRS ${CMAKE_CURRENT_SOURCE_DIR})
FOREACH(subdir ${SUBDIRS})
......
......@@ -14,18 +14,16 @@ add_subdirectory(platforms)
dosek_include_dir(${ARCH_INCLUDE_DIRS})
# Enable emulators
OPTION(ARM_TARGET_GEM5 "gem5" ON)
if(ARM_TARGET_GEM5)
set(ADDITIONAL_TARGETS ${ADDITIONAL_TARGETS}
${CMAKE_CURRENT_SOURCE_DIR}/gem5 CACHE INTERNAL STRING)
endif()
OPTION(ARM_TARGET_QEMU "QEMU" ON)
if(ARM_TARGET_QEMU)
set(ADDITIONAL_TARGETS ${ADDITIONAL_TARGETS}
${CMAKE_CURRENT_SOURCE_DIR}/qemu CACHE INTERNAL STRING)
endif()
# GEM5 is not well tested
# OPTION(ARM_TARGET_GEM5 "gem5" ON)
# if(ARM_TARGET_GEM5)
# set(ADDITIONAL_TARGETS ${ADDITIONAL_TARGETS}
# ${CMAKE_CURRENT_SOURCE_DIR}/gem5 CACHE INTERNAL STRING)
#endif()
# Add QEMU as an additional target
set(ADDITIONAL_TARGETS ${ADDITIONAL_TARGETS}
${CMAKE_CURRENT_SOURCE_DIR}/qemu CACHE INTERNAL STRING)
# setup ARM specific sources
......
......@@ -10,10 +10,7 @@ set(DEBUGGER "/srv/scratch/siflluka/gdb/gdb-7.7.1/gdb/gdb")
# Create additional targets for all executables
foreach(ELF ${EXECUTABLES})
GET_FILENAME_COMPONENT(SUFFIX ${ELF} NAME_WE)
set(DSUFFIX "-${SUFFIX}")
get_target_property(ELF_ABS ${ELF} LOCATION)
set(ELF_ABS ${PROJECT_BINARY_DIR}/${ELF})
set(STARTUP_SCRIPTS ${PROJECT_BINARY_DIR}/startup_scripts)
file(MAKE_DIRECTORY ${STARTUP_SCRIPTS})
......@@ -29,7 +26,7 @@ foreach(ELF ${EXECUTABLES})
set(GEM5_ARGS ${GEM5_CONFIG} --kernel ${ELF_ABS} --bootloader ${BOOTLOADER}) # --mem-size=${RAM_SIZE}MB
# Start gem5
add_custom_target(run${DSUFFIX}
add_custom_target(run-gem5-${ELF}
DEPENDS ${ELF}
COMMENT "[${PROJECT_NAME}] Running ${ELF} in gem5"
COMMAND ${GEM5} ${GEM5_ARGS}
......@@ -37,7 +34,7 @@ foreach(ELF ${EXECUTABLES})
)
# Start gem5 for tests (only serial console)
add_custom_target(test${DSUFFIX}
add_custom_target(test-gem5-${ELF}
DEPENDS ${ELF}
COMMENT "[${PROJECT_NAME}] Running ${ELF} in gem5 serial mode."
COMMAND ${GEM5} ${GEM5_ARGS} &
......@@ -46,7 +43,7 @@ foreach(ELF ${EXECUTABLES})
)
# Start gem5 and attach debugger
add_custom_target(debug${DSUFFIX}
add_custom_target(debug-gem5-${ELF}
DEPENDS ${ELF}
COMMENT "[${PROJECT_NAME}] Running ${ELF} in gem5 debug mode. "
COMMAND ${GEM5} ${GEM5_ARGS} &
......@@ -55,7 +52,7 @@ foreach(ELF ${EXECUTABLES})
)
# Start debugger attach to gem5
add_custom_target(debugger${DSUFFIX}
add_custom_target(debugger-gem5-${ELF}
DEPENDS ${ELF}
COMMENT "[${PROJECT_NAME}] Starting debugger for ${ELF}."
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
......
......@@ -10,34 +10,32 @@ set(QEMU_ARGS -M xilinx-zynq-a9 -m ${RAM_SIZE} -no-reboot -nographic -serial nul
# Create additional targets for all executables
foreach(ELF ${EXECUTABLES})
GET_FILENAME_COMPONENT(SUFFIX ${ELF} NAME_WE)
get_target_property(ELF_ABS ${ELF} LOCATION)
set(ELF_ABS ${PROJECT_BINARY_DIR}/${ELF})
set(STARTUP_SCRIPTS ${PROJECT_BINARY_DIR}/startup_scripts)
file(MAKE_DIRECTORY ${STARTUP_SCRIPTS})
# GDB init file
set(GDBINITFILE ${STARTUP_SCRIPTS}/${SUFFIX}.qemu.gdbinit)
set(GDBINITFILE ${STARTUP_SCRIPTS}/${ELF}.qemu.gdbinit)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/gdbinit.in" ${GDBINITFILE})
# Start QEMU
add_custom_target(qrun-${SUFFIX}
add_custom_target(run-${ELF}
DEPENDS ${ELF}
COMMENT "[${PROJECT_NAME}] Running ${ISOFILE} in qemu-system-i386"
COMMAND ${QEMU} ${QEMU_ARGS} -kernel ${ELF_ABS}
)
# Start qemu for tests (only serial console)
add_custom_target(qtest-${SUFFIX}
add_custom_target(test-${ELF}
DEPENDS ${ELF}
COMMENT "[${PROJECT_NAME}] Running ${ELF} in qemu-system-arm no-graphic mode."
COMMAND ${QEMU} ${QEMU_ARGS} -kernel ${ELF_ABS}
)
# Start qemu and attach debugger
add_custom_target(qdebug-${SUFFIX}
add_custom_target(debug-${ELF}
DEPENDS ${ELF}
COMMENT "[${PROJECT_NAME}] Running ${ELF} in qemu-system-i386 debug mode. "
COMMAND ${QEMU} ${QEMU_ARGS} -kernel ${ELF_ABS} -gdb tcp::${DEBUG_PORT} -S &
......
# Get bochs binary
find_program(BOCHS "bochs")
if(NOT BOCHS)
message(WARNING "[${PROJECT_NAME}] No bochs found, not generating bochs targets!")
return()
endif()
# Create additional targets for all executables
foreach(ELF ${EXECUTABLES})
# Do not suffix targets for main executable
GET_FILENAME_COMPONENT(SUFFIX ${ELF} NAME_WE)
set(DSUFFIX "-${SUFFIX}")
get_target_property(ELF_ABS ${ELF} LOCATION)
set(ISOFILE "${ELF_ABS}.iso")
# Bochs
set(BOCHS_BIOS "${CMAKE_CURRENT_SOURCE_DIR}/BIOS-bochs-latest")
set(BOCHS_GUEST_RAM ${RAM_SIZE})
set(BOCHS_HOST_RAM ${RAM_SIZE})
set(BOCHS_VGA_IMAGE "${CMAKE_CURRENT_SOURCE_DIR}/vgabios.bin")
set(BOCHS_ISO_IMAGE "${ISOFILE}")
set(STARTUP_SCRIPTS ${PROJECT_BINARY_DIR}/startup_scripts)
file(MAKE_DIRECTORY ${STARTUP_SCRIPTS})
set(BOCHSRC "${STARTUP_SCRIPTS}/bochsrc${DSUFFIX}")
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/bochsrc.in" ${BOCHSRC} )
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/bochsrc-gdb.in" "${BOCHSRC}-gdb" )
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/bochsrc-term.in" "${BOCHSRC}-term" )
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/bochsrc-nogui.in" "${BOCHSRC}-nogui" )
set(STARTUP_SCRIPTS ${PROJECT_BINARY_DIR}/startup_scripts)
file(MAKE_DIRECTORY ${STARTUP_SCRIPTS})
# GDB init file
set(GDBINITFILE ${STARTUP_SCRIPTS}/${SUFFIX}.gdbinit)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/gdbinit.in" ${GDBINITFILE})
# Start bochs
add_custom_target(run${DSUFFIX}
DEPENDS iso${DSUFFIX} ${ELF}
COMMENT "[${PROJECT_NAME}] Running ${ISOFILE} in Bochs."
COMMAND ${BOCHS} -f ${BOCHSRC}
)
# Start bochs in terminal (for ssh)
add_custom_target(runterm${DSUFFIX}
DEPENDS iso${DSUFFIX} ${ELF}
COMMENT "[${PROJECT_NAME}] Running ${ISOFILE} in Bochs term mode"
COMMAND ${BOCHS} -f ${BOCHSRC}-term
)
# Start bochs with GDB stub for debugging
add_custom_target(debug${DSUFFIX}
DEPENDS iso${DSUFFIX} ${ELF}
COMMENT "[${PROJECT_NAME}] Running ${ISOFILE} in Bochs with gdb"
COMMAND ${BOCHS} -f ${BOCHSRC}-gdb
)
# Start debugger attach to bochs
add_custom_target(debugger${DSUFFIX}
DEPENDS iso${DSUFFIX} ${ELF}
COMMENT "Starting debugger for ${ISOFILE}..."
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
COMMAND ${DEBUGGER} -n -x ${GDBINITFILE} $<TARGET_FILE:${ELF}>
)
foreach(ELF ${EXECUTABLES})
set(BOCHS_BIOS "${CMAKE_CURRENT_SOURCE_DIR}/BIOS-bochs-latest")
set(BOCHS_GUEST_RAM ${RAM_SIZE})
set(BOCHS_HOST_RAM ${RAM_SIZE})
set(BOCHS_VGA_IMAGE "${CMAKE_CURRENT_SOURCE_DIR}/vgabios.bin")
set(BOCHS_ISO_IMAGE "${PROJECT_BINARY_DIR}/${ELF}.iso")
set(BOCHSRC "${STARTUP_SCRIPTS}/bochsrc-${ELF}")
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/bochsrc-nogui.in" "${BOCHSRC}-nogui" )
endforeach()
# You may now use double quotes around pathnames, in case
# your pathname includes spaces.
#=======================================================================
# CONFIG_INTERFACE
#
# The configuration interface is a series of menus or dialog boxes that
# allows you to change all the settings that control Bochs's behavior.
# Depending on the platform there are up to 3 choices of configuration
# interface: a text mode version called "textconfig" and two graphical versions
# called "win32config" and "wx". The text mode version uses stdin/stdout and
# is always compiled in, unless Bochs is compiled for wx only. The choice
# "win32config" is only available on win32 and it is the default there.
# The choice "wx" is only available when you use "--with-wx" on the configure
# command. If you do not write a config_interface line, Bochs will
# choose a default for you.
#
# NOTE: if you use the "wx" configuration interface, you must also use
# the "wx" display library.
#=======================================================================
config_interface: textconfig
#config_interface: wx
#=======================================================================
# DISPLAY_LIBRARY
#
# The display library is the code that displays the Bochs VGA screen. Bochs
# has a selection of about 10 different display library implementations for
# different platforms. If you run configure with multiple --with-* options,
# the display_library command lets you choose which one you want to run with.
# If you do not write a display_library line, Bochs will choose a default for
# you.
#
# The choices are:
# x use X windows interface, cross platform
# sdl use SDL library, cross platform
# svga use SVGALIB library for Linux, allows graphics without X11
# term text only, uses curses/ncurses library, cross platform
# wx use wxWidgets library, cross platform
# nogui no display at all
#
# NOTE: if you use the "wx" configuration interface, you must also use
# the "wx" display library.
#
# Specific options:
# Some display libraries now support specific option to control their
# behaviour. See the examples below for currently supported options.
#=======================================================================
#display_library: nogui
#display_library: sdl, options="fullscreen" # startup in fullscreen mode
display_library: term
#display_library: wx
#display_library: x
#display_library: x, options="hideIPS" # disable IPS output in status bar
#display_library: x, options="gui_debug" # use GTK debugger gui
#=======================================================================
# ROMIMAGE:
# The ROM BIOS controls what the PC does when it first powers on.
# Normally, you can use a precompiled BIOS in the source or binary
# distribution called BIOS-bochs-latest. The ROM BIOS is usually loaded
# starting at address 0xf0000, and it is exactly 64k long. Another option
# is 128k BIOS which is loaded at address 0xe0000.
# You can also use the environment variable $BXSHARE to specify the
# location of the BIOS.
# The usage of external large BIOS images (up to 512k) at memory top is
# now supported, but we still recommend to use the BIOS distributed with
# Bochs. The start address optional, since it can be calculated from image size.
#=======================================================================
romimage: file=@BOCHS_BIOS@
#romimage: file=bios/seabios-0.5.1.bin
#romimage: file=mybios.bin, address=0xfff80000 # 512k at memory top
#=======================================================================
# CPU:
# This defines cpu-related parameters inside Bochs:
#
# COUNT:
# Set the number of processors:cores per processor:threads per core
# when Bochs is compiled for SMP emulation.
# Bochs currently supports up to 8 threads running simultaniosly.
# If Bochs is compiled without SMP support, it won't accept values
# different from 1.
#
# QUANTUM:
# Maximum amount of instructions allowed to execute by processor before
# returning control to another cpu. This option exists only in Bochs
# binary compiled with SMP support.
#
# RESET_ON_TRIPLE_FAULT:
# Reset the CPU when triple fault occur (highly recommended) rather than
# PANIC. Remember that if you trying to continue after triple fault the
# simulation will be completely bogus !
#
# MSRS:
# Define path to user CPU Model Specific Registers (MSRs) specification.
# See example in msrs.def.
#
# IGNORE_BAD_MSRS:
# Ignore MSR references that Bochs does not understand; print a warning
# message instead of generating #GP exception. This option is enabled
# by default but will not be avaiable if configurable MSRs are enabled.
#
# IPS:
# Emulated Instructions Per Second. This is the number of IPS that bochs
# is capable of running on your machine. You can recompile Bochs with
# --enable-show-ips option enabled, to find your host's capability.
# Measured IPS value will then be logged into your log file or shown
# in the status bar (if supported by the gui).
#
# IPS is used to calibrate many time-dependent events within the bochs
# simulation. For example, changing IPS affects the frequency of VGA
# updates, the duration of time before a key starts to autorepeat, and
# the measurement of BogoMips and other benchmarks.
#
# Examples:
#
# Bochs Machine/Compiler Mips
# ____________________________________________________________________
# 2.3.7 3.2Ghz Intel Core 2 Q9770 with WinXP/g++ 3.4 50 to 55 Mips
# 2.3.7 2.6Ghz Intel Core 2 Duo with WinXP/g++ 3.4 38 to 43 Mips
# 2.2.6 2.6Ghz Intel Core 2 Duo with WinXP/g++ 3.4 21 to 25 Mips
# 2.2.6 2.1Ghz Athlon XP with Linux 2.6/g++ 3.4 12 to 15 Mips
# 2.0.1 1.6Ghz Intel P4 with Win2000/g++ 3.3 5 to 7 Mips
#=======================================================================
cpu: count=1, ips=50000000, reset_on_triple_fault=0, ignore_bad_msrs=1, msrs="msrs.def"
#=======================================================================
# CPUID:
#
# This defines features and functionality supported by Bochs emulated CPU:
#
# MMX:
# Select MMX instruction set support.
# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 5.
#
# SEP:
# Select SYSENTER/SYSEXIT instruction set support.
# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6.
#
# SSE:
# Select SSE instruction set support.
# Any of NONE/SSE/SSE2/SSE3/SSSE3/SSE4_1/SSE4_2 could be selected.
# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6.
#
# XAPIC:
# Select XAPIC extensions support.
# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6.
#
# AES:
# Select AES instruction set support.
# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6.
#
# MOVBE:
# Select MOVBE Intel(R) Atom instruction support.
# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6.
#
# XSAVE:
# Select XSAVE extensions support.
# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6.
#
# 1G_PAGES:
# Enable 1G page size support in long mode.
# This option exists only if Bochs compiled with x86-64 support.
#
# MWAIT_IS_NOP:
# When this option is enabled MWAIT will not put the CPU into a sleep state.
# This option exists only if Bochs compiled with --enable-monitor-mwait.
#
# VENDOR_STRING:
# Set the CPUID vendor string returned by CPUID(0x0). This should be a
# twelve-character ASCII string.
#
# BRAND_STRING:
# Set the CPUID vendor string returned by CPUID(0x80000002 .. 0x80000004).
# This should be at most a forty-eight-character ASCII string.
#
# CPUID_LIMIT_WINNT:
# Determine whether to limit maximum CPUID function to 3. This mode is
# required to workaround WinNT installation and boot issues.
#=======================================================================
cpuid: mmx=1, sep=1, sse=sse4_2, xapic=1, aes=1, movbe=1, xsave=1, cpuid_limit_winnt=0
#=======================================================================
# MEMORY
# Set the amount of physical memory you want to emulate.
#
# GUEST:
# Set amount of guest physical memory to emulate. The default is 32MB,
# the maximum amount limited only by physical address space limitations.
#
# HOST:
# Set amount of host memory you want to allocate for guest RAM emulation.
# It is possible to allocate less memory than you want to emulate in guest
# system. This will fake guest to see the non-existing memory. Once guest
# system touches new memory block it will be dynamically taken from the
# memory pool. You will be warned (by FATAL PANIC) in case guest already
# used all allocated host memory and wants more.
#
#=======================================================================
#memory: guest=512, host=256
memory: guest=@BOCHS_GUEST_RAM@, host=@BOCHS_HOST_RAM@
#=======================================================================
# OPTROMIMAGE[1-4]:
# You may now load up to 4 optional ROM images. Be sure to use a
# read-only area, typically between C8000 and EFFFF. These optional
# ROM images should not overwrite the rombios (located at
# F0000-FFFFF) and the videobios (located at C0000-C7FFF).
# Those ROM images will be initialized by the bios if they contain
# the right signature (0x55AA) and a valid checksum.
# It can also be a convenient way to upload some arbitrary code/data
# in the simulation, that can be retrieved by the boot loader
#=======================================================================
#optromimage1: file=optionalrom.bin, address=0xd0000
#optromimage2: file=optionalrom.bin, address=0xd1000
#optromimage3: file=optionalrom.bin, address=0xd2000
#optromimage4: file=optionalrom.bin, address=0xd3000
#optramimage1: file=/path/file1.img, address=0x0010000
#optramimage2: file=/path/file2.img, address=0x0020000
#optramimage3: file=/path/file3.img, address=0x0030000
#optramimage4: file=/path/file4.img, address=0x0040000
#=======================================================================
# VGAROMIMAGE
# You now need to load a VGA ROM BIOS into C0000.
#=======================================================================
vgaromimage: file=@BOCHS_VGA_IMAGE@
#vgaromimage: file=/usr/share/vgabios/vgabios.debug.bin
#=======================================================================
# VGA:
# Here you can specify the display extension to be used. With the value
# 'none' you can use standard VGA with no extension. Other supported
# values are 'vbe' for Bochs VBE and 'cirrus' for Cirrus SVGA support.
#=======================================================================
#vga: extension=cirrus
vga: extension=vbe
#=======================================================================
# FLOPPYA:
# Point this to pathname of floppy image file or device
# This should be of a bootable floppy(image/device) if you're
# booting from 'a' (or 'floppy').
#
# You can set the initial status of the media to 'ejected' or 'inserted'.
# floppya: 2_88=path, status=ejected (2.88M 3.5" media)
# floppya: 1_44=path, status=inserted (1.44M 3.5" media)
# floppya: 1_2=path, status=ejected (1.2M 5.25" media)
# floppya: 720k=path, status=inserted (720K 3.5" media)
# floppya: 360k=path, status=inserted (360K 5.25" media)
# floppya: 320k=path, status=inserted (320K 5.25" media)
# floppya: 180k=path, status=inserted (180K 5.25" media)
# floppya: 160k=path, status=inserted (160K 5.25" media)
# floppya: image=path, status=inserted (guess media type from image size)
# floppya: type=1_44 (1.44M 3.5" floppy drive, no media)
#
# The path should be the name of a disk image file. On Unix, you can use a raw
# device name such as /dev/fd0 on Linux. On win32 platforms, use drive letters
# such as a: or b: as the path. The parameter 'image' works with image files
# only. In that case the size must match one of the supported types.
# The parameter 'type' can be used to enable the floppy drive without media
# and status specified. Usually the drive type is set up based on the media type.
#=======================================================================
#floppya: 1_44=/dev/fd0, status=inserted
#floppya: image=../1.44, status=inserted
#floppya: 1_44=/dev/fd0H1440, status=inserted
#floppya: 1_2=../1_2, status=inserted
#floppya: 1_44=a:, status=inserted
#floppya: 1_44=a.img, status=inserted
#floppya: 1_44=/dev/rfd0a, status=inserted
#floppya: 1_44=bootdisk.vmi, status=inserted
#floppya: 1_44=oostubs/guarded.vmi, status=inserted
#=======================================================================
# FLOPPYB:
# See FLOPPYA above for syntax
#=======================================================================
#floppyb: 1_44=b:, status=inserted
#floppyb: 1_44=b.img, status=inserted
#=======================================================================
# ATA0, ATA1, ATA2, ATA3
# ATA controller for hard disks and cdroms
#
# ata[0-3]: enabled=[0|1], ioaddr1=addr, ioaddr2=addr, irq=number
#
# These options enables up to 4 ata channels. For each channel
# the two base io addresses and the irq must be specified.
#
# ata0 and ata1 are enabled by default with the values shown below
#
# Examples:
# ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
# ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15
# ata2: enabled=1, ioaddr1=0x1e8, ioaddr2=0x3e0, irq=11
# ata3: enabled=1, ioaddr1=0x168, ioaddr2=0x360, irq=9
#=======================================================================
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15
ata2: enabled=0, ioaddr1=0x1e8, ioaddr2=0x3e0, irq=11
ata3: enabled=0, ioaddr1=0x168, ioaddr2=0x360, irq=9
#=======================================================================
# ATA[0-3]-MASTER, ATA[0-3]-SLAVE
#
# This defines the type and characteristics of all attached ata devices:
# type= type of attached device [disk|cdrom]
# mode= only valid for disks [flat|concat|external|dll|sparse|vmware3]
# mode= only valid for disks [undoable|growing|volatile]
# path= path of the image
# cylinders= only valid for disks
# heads= only valid for disks
# spt= only valid for disks
# status= only valid for cdroms [inserted|ejected]
# biosdetect= type of biosdetection [none|auto], only for disks on ata0 [cmos]
# translation=type of translation of the bios, only for disks [none|lba|large|rechs|auto]
# model= string returned by identify device command
# journal= optional filename of the redolog for undoable and volatile disks
#
# Point this at a hard disk image file, cdrom iso file, or physical cdrom
# device. To create a hard disk image, try running bximage. It will help you
# choose the size and then suggest a line that works with it.
#
# In UNIX it may be possible to use a raw device as a Bochs hard disk,
# but WE DON'T RECOMMEND IT. In Windows there is no easy way.
#
# In windows, the drive letter + colon notation should be used for cdroms.
# Depending on versions of windows and drivers, you may only be able to
# access the "first" cdrom in the system. On MacOSX, use path="drive"
# to access the physical drive.
#
# The path is mandatory for hard disks. Disk geometry autodetection works with
# images created by bximage if CHS is set to 0/0/0 (cylinders are calculated
# using heads=16 and spt=63). For other hard disk images and modes the
# cylinders, heads, and spt are mandatory. In all cases the disk size reported
# from the image must be exactly C*H*S*512.
#
# Default values are:
# mode=flat, biosdetect=auto, translation=auto, model="Generic 1234"
#
# The biosdetect option has currently no effect on the bios
#
# Examples:
# ata0-master: type=disk, mode=flat, path=10M.sample, cylinders=306, heads=4, spt=17
# ata0-slave: type=disk, mode=flat, path=20M.sample, cylinders=615, heads=4, spt=17
# ata1-master: type=disk, mode=flat, path=30M.sample, cylinders=615, heads=6, spt=17
# ata1-slave: type=disk, mode=flat, path=46M.sample, cylinders=940, heads=6, spt=17
# ata2-master: type=disk, mode=flat, path=62M.sample, cylinders=940, heads=8, spt=17
# ata2-slave: type=disk, mode=flat, path=112M.sample, cylinders=900, heads=15, spt=17
# ata3-master: type=disk, mode=flat, path=483M.sample, cylinders=1024, heads=15, spt=63
# ata3-slave: type=cdrom, path=iso.sample, status=inserted
#=======================================================================
#ata0-master: type=disk, mode=flat, path="d.sample"
#ata0-master: type=disk, mode=flat, path="$HOME/.bochs/guest.hd0", cylinders=#cylinders#, heads=16, spt=63
#ata0-master: type=disk, mode=flat, path="c.img", cylinders=0 # autodetect
ata0-slave: type=cdrom, path=@BOCHS_ISO_IMAGE@, status=inserted
#=======================================================================
# BOOT:
# This defines the boot sequence. Now you can specify up to 3 boot drives,
# which can be 'floppy', 'disk', 'cdrom' or 'network' (boot ROM).
# Legacy 'a' and 'c' are also supported.
# Examples:
# boot: floppy
# boot: cdrom, disk
# boot: network, disk
# boot: cdrom, floppy, disk
#=======================================================================
#boot: floppy
#boot: disk
boot: cdrom
#=======================================================================
# CLOCK:
# This defines the parameters of the clock inside Bochs:
#
# SYNC:
# This defines the method how to synchronize the Bochs internal time
# with realtime. With the value 'none' the Bochs time relies on the IPS
# value and no host time synchronization is used. The 'slowdown' method
# sacrifices performance to preserve reproducibility while allowing host
# time correlation. The 'realtime' method sacrifices reproducibility to
# preserve performance and host-time correlation.
# It is possible to enable both synchronization methods.
#
# TIME0:
# Specifies the start (boot) time of the virtual machine. Use a time
# value as returned by the time(2) system call. If no time0 value is
# set or if time0 equal to 1 (special case) or if time0 equal 'local',
# the simulation will be started at the current local host time.
# If time0 equal to 2 (special case) or if time0 equal 'utc',
# the simulation will be started at the current utc time.
#
# Syntax:
# clock: sync=[none|slowdown|realtime|both], time0=[timeValue|local|utc]
#
# Example:
# clock: sync=none, time0=local # Now (localtime)
# clock: sync=slowdown, time0=315529200 # Tue Jan 1 00:00:00 1980
# clock: sync=none, time0=631148400 # Mon Jan 1 00:00:00 1990
# clock: sync=realtime, time0=938581955 # Wed Sep 29 07:12:35 1999
# clock: sync=realtime, time0=946681200 # Sat Jan 1 00:00:00 2000
# clock: sync=none, time0=1 # Now (localtime)
# clock: sync=none, time0=utc # Now (utc/gmt)
#
# Default value are sync=none, time0=local
#=======================================================================
#clock: sync=none, time0=local
#=======================================================================
# FLOPPY_BOOTSIG_CHECK: disabled=[0|1]
# Enables or disables the 0xaa55 signature check on boot floppies
# Defaults to disabled=0
# Examples:
# floppy_bootsig_check: disabled=0
# floppy_bootsig_check: disabled=1
#=======================================================================
floppy_bootsig_check: disabled=0
#=======================================================================