|  | /* sim.cfg -- Simulator configuration script file | 
|  | Copyright (C) 2001-2002, Marko Mlinar, markom@opencores.org | 
|  |  | 
|  | This file is part of OpenRISC 1000 Architectural Simulator. | 
|  | It contains the default configuration and help about configuring | 
|  | the simulator. | 
|  |  | 
|  | * SPDX-License-Identifier:	GPL-2.0+ | 
|  | */ | 
|  |  | 
|  |  | 
|  | /* INTRODUCTION | 
|  |  | 
|  | The ork1sim has various parameters, that are set in configuration files | 
|  | like this one. The user can switch between configurations at startup by | 
|  | specifying the required configuration file with the -f <filename.cfg> option. | 
|  | If no configuration file is specified or1ksim searches for the default | 
|  | configuration file sim.cfg. First it searches for './sim.cfg'. If this | 
|  | file is not found, it searches for '~/or1k/sim.cfg'. If this file is | 
|  | not found too, it reverts to the built-in default configuration. | 
|  |  | 
|  | NOTE: Users should not rely on the built-in configuration, since the | 
|  | default configuration may differ between version. | 
|  | Rather create a configuration file that sets all critical values. | 
|  |  | 
|  | This file may contain (standard C) comments only - no // support. | 
|  |  | 
|  | Configure files may be be included, using: | 
|  | include "file_name_to_include" | 
|  |  | 
|  | Like normal configuration files, the included file is divided into | 
|  | sections. Each section is described in detail also. | 
|  |  | 
|  | Some section have subsections. One example of such a subsection is: | 
|  |  | 
|  | device <index> | 
|  | instance specific parameters... | 
|  | enddevice | 
|  |  | 
|  | which creates a device instance. | 
|  | */ | 
|  |  | 
|  |  | 
|  | /* MEMORY SECTION | 
|  |  | 
|  | This section specifies how the memory is generated and the blocks | 
|  | it consists of. | 
|  |  | 
|  | type = random/unknown/pattern | 
|  | Specifies the initial memory values. | 
|  | 'random' generates random memory using seed 'random_seed'. | 
|  | 'pattern' fills memory with 'pattern'. | 
|  | 'unknown' does not specify how memory should be generated, | 
|  | leaving the memory in a undefined state. This is the fastest | 
|  | option. | 
|  |  | 
|  | random_seed = <value> | 
|  | random seed for randomizer, used if type = 'random'. | 
|  |  | 
|  | pattern = <value> | 
|  | pattern to fill memory, used if type = 'pattern'. | 
|  |  | 
|  | nmemories = <value> | 
|  | number of memory instances connected | 
|  |  | 
|  | baseaddr = <hex_value> | 
|  | memory start address | 
|  |  | 
|  | size = <hex_value> | 
|  | memory size | 
|  |  | 
|  | name = "<string>" | 
|  | memory block name | 
|  |  | 
|  | ce = <value> | 
|  | chip enable index of the memory instance | 
|  |  | 
|  | mc = <value> | 
|  | memory controller this memory is connected to | 
|  |  | 
|  | delayr = <value> | 
|  | cycles, required for read access, -1 if instance does not support reading | 
|  |  | 
|  | delayw = <value> | 
|  | cycles, required for write access, -1 if instance does not support writing | 
|  |  | 
|  | log = "<filename>" | 
|  | filename, where to log memory accesses to, no log, if log command is not specified | 
|  | */ | 
|  |  | 
|  |  | 
|  | section memory | 
|  | pattern = 0x00 | 
|  | type = unknown /* Fastest */ | 
|  |  | 
|  | name = "FLASH" | 
|  | ce = 0 | 
|  | mc = 0 | 
|  | baseaddr = 0xf0000000 | 
|  | size = 0x01000000 | 
|  | delayr =  1 | 
|  | delayw = -1 | 
|  | end | 
|  |  | 
|  | section memory | 
|  | pattern = 0x00 | 
|  | type = unknown /* Fastest */ | 
|  |  | 
|  | name = "RAM" | 
|  | ce = 1 | 
|  | mc = 0 | 
|  | baseaddr = 0x00000000 | 
|  | size = 0x02000000 | 
|  | delayr = 1 | 
|  | delayw = 1 | 
|  | end | 
|  |  | 
|  | section memory | 
|  | pattern = 0x00 | 
|  | type = unknown /* Fastest */ | 
|  |  | 
|  | name = "SRAM" | 
|  | mc = 0 | 
|  | ce = 2 | 
|  | baseaddr = 0xa4000000 | 
|  | size = 0x00100000 | 
|  | delayr = 1 | 
|  | delayw = 2 | 
|  | end | 
|  |  | 
|  |  | 
|  | /* IMMU SECTION | 
|  |  | 
|  | This section configures the Instruction Memory Manangement Unit | 
|  |  | 
|  | enabled = 0/1 | 
|  | '0': disabled | 
|  | '1': enabled | 
|  | (NOTE: UPR bit is set) | 
|  |  | 
|  | nsets = <value> | 
|  | number of ITLB sets; must be power of two | 
|  |  | 
|  | nways = <value> | 
|  | number of ITLB ways | 
|  |  | 
|  | pagesize = <value> | 
|  | instruction page size; must be power of two | 
|  |  | 
|  | entrysize = <value> | 
|  | instruction entry size in bytes | 
|  |  | 
|  | ustates = <value> | 
|  | number of ITLB usage states (2, 3, 4 etc., max is 4) | 
|  |  | 
|  | hitdelay = <value> | 
|  | number of cycles immu hit costs | 
|  |  | 
|  | missdelay = <value> | 
|  | number of cycles immu miss costs | 
|  | */ | 
|  |  | 
|  | section immu | 
|  | enabled = 1 | 
|  | nsets = 64 | 
|  | nways = 1 | 
|  | pagesize = 8192 | 
|  | hitdelay = 0 | 
|  | missdelay = 0 | 
|  | end | 
|  |  | 
|  |  | 
|  | /* DMMU SECTION | 
|  |  | 
|  | This section configures the Data Memory Manangement Unit | 
|  |  | 
|  | enabled = 0/1 | 
|  | '0': disabled | 
|  | '1': enabled | 
|  | (NOTE: UPR bit is set) | 
|  |  | 
|  | nsets = <value> | 
|  | number of DTLB sets; must be power of two | 
|  |  | 
|  | nways = <value> | 
|  | number of DTLB ways | 
|  |  | 
|  | pagesize = <value> | 
|  | data page size; must be power of two | 
|  |  | 
|  | entrysize = <value> | 
|  | data entry size in bytes | 
|  |  | 
|  | ustates = <value> | 
|  | number of DTLB usage states (2, 3, 4 etc., max is 4) | 
|  |  | 
|  | hitdelay = <value> | 
|  | number of cycles dmmu hit costs | 
|  |  | 
|  | missdelay = <value> | 
|  | number of cycles dmmu miss costs | 
|  | */ | 
|  |  | 
|  | section dmmu | 
|  | enabled = 1 | 
|  | nsets = 64 | 
|  | nways = 1 | 
|  | pagesize = 8192 | 
|  | hitdelay = 0 | 
|  | missdelay = 0 | 
|  | end | 
|  |  | 
|  |  | 
|  | /* IC SECTION | 
|  |  | 
|  | This section configures the Instruction Cache | 
|  |  | 
|  | enabled = 0/1 | 
|  | '0': disabled | 
|  | '1': enabled | 
|  | (NOTE: UPR bit is set) | 
|  |  | 
|  | nsets = <value> | 
|  | number of IC sets; must be power of two | 
|  |  | 
|  | nways = <value> | 
|  | number of IC ways | 
|  |  | 
|  | blocksize = <value> | 
|  | IC block size in bytes; must be power of two | 
|  |  | 
|  | ustates = <value> | 
|  | number of IC usage states (2, 3, 4 etc., max is 4) | 
|  |  | 
|  | hitdelay = <value> | 
|  | number of cycles ic hit costs | 
|  |  | 
|  | missdelay = <value> | 
|  | number of cycles ic miss costs | 
|  | */ | 
|  |  | 
|  | section ic | 
|  | enabled = 1 | 
|  | nsets = 512 | 
|  | nways = 1 | 
|  | blocksize = 16 | 
|  | hitdelay = 1 | 
|  | missdelay = 1 | 
|  | end | 
|  |  | 
|  |  | 
|  | /* DC SECTION | 
|  |  | 
|  | This section configures the Data Cache | 
|  |  | 
|  | enabled = 0/1 | 
|  | '0': disabled | 
|  | '1': enabled | 
|  | (NOTE: UPR bit is set) | 
|  |  | 
|  | nsets = <value> | 
|  | number of DC sets; must be power of two | 
|  |  | 
|  | nways = <value> | 
|  | number of DC ways | 
|  |  | 
|  | blocksize = <value> | 
|  | DC block size in bytes; must be power of two | 
|  |  | 
|  | ustates = <value> | 
|  | number of DC usage states (2, 3, 4 etc., max is 4) | 
|  |  | 
|  | load_hitdelay = <value> | 
|  | number of cycles dc load hit costs | 
|  |  | 
|  | load_missdelay = <value> | 
|  | number of cycles dc load miss costs | 
|  |  | 
|  | store_hitdelay = <value> | 
|  | number of cycles dc load hit costs | 
|  |  | 
|  | store_missdelay = <value> | 
|  | number of cycles dc load miss costs | 
|  | */ | 
|  |  | 
|  | section dc | 
|  | enabled = 1 | 
|  | nsets = 512 | 
|  | nways = 1 | 
|  | blocksize = 16 | 
|  | load_hitdelay = 1 | 
|  | load_missdelay = 1 | 
|  | store_hitdelay = 1 | 
|  | store_missdelay = 1 | 
|  | end | 
|  |  | 
|  |  | 
|  | /* SIM SECTION | 
|  |  | 
|  | This section specifies how or1ksim should behave. | 
|  |  | 
|  | verbose = 0/1 | 
|  | '0': don't print extra messages | 
|  | '1': print extra messages | 
|  |  | 
|  | debug = 0-9 | 
|  | 0  : no debug messages | 
|  | 1-9: debug message level. | 
|  | higher numbers produce more messages | 
|  |  | 
|  | profile = 0/1 | 
|  | '0': don't generate profiling file 'sim.profile' | 
|  | '1': don't generate profiling file 'sim.profile' | 
|  |  | 
|  | prof_fn = "<filename>" | 
|  | optional filename for the profiling file. | 
|  | valid only if 'profile' is set | 
|  |  | 
|  | mprofile = 0/1 | 
|  | '0': don't generate memory profiling file 'sim.mprofile' | 
|  | '1': generate memory profiling file 'sim.mprofile' | 
|  |  | 
|  | mprof_fn = "<filename>" | 
|  | optional filename for the memory profiling file. | 
|  | valid only if 'mprofile' is set | 
|  |  | 
|  | history = 0/1 | 
|  | '0': don't track execution flow | 
|  | '1': track execution flow | 
|  | Execution flow can be tracked for the simulator's | 
|  | 'hist' command. Useful for back-trace debugging. | 
|  |  | 
|  | iprompt = 0/1 | 
|  | '0': start in <not interactive prompt> (so what do we start in ???) | 
|  | '1': start in interactive prompt. | 
|  |  | 
|  | exe_log = 0/1 | 
|  | '0': don't generate execution log. | 
|  | '1': generate execution log. | 
|  |  | 
|  | exe_log = default/hardware/simple/software | 
|  | type of execution log, default is used when not specified | 
|  |  | 
|  | exe_log_start = <value> | 
|  | index of first instruction to start logging, default = 0 | 
|  |  | 
|  | exe_log_end = <value> | 
|  | index of last instruction to end logging; not limited, if omitted | 
|  |  | 
|  | exe_log_marker = <value> | 
|  | <value> specifies number of instructions before horizontal marker is | 
|  | printed; if zero, markers are disabled (default) | 
|  |  | 
|  | exe_log_fn = "<filename>" | 
|  | filename for the exection log file. | 
|  | valid only if 'exe_log' is set | 
|  |  | 
|  | clkcycle = <value>[ps|ns|us|ms] | 
|  | specifies time measurement for one cycle | 
|  | */ | 
|  |  | 
|  | section sim | 
|  | verbose = 1 | 
|  | debug = 0 | 
|  | profile = 0 | 
|  | history = 0 | 
|  |  | 
|  | clkcycle = 10ns | 
|  | end | 
|  |  | 
|  |  | 
|  | /* SECTION VAPI | 
|  |  | 
|  | This section configures the Verification API, used for Advanced | 
|  | Core Verification. | 
|  |  | 
|  | enabled = 0/1 | 
|  | '0': disbable VAPI server | 
|  | '1': enable/start VAPI server | 
|  |  | 
|  | server_port = <value> | 
|  | TCP/IP port to start VAPI server on | 
|  |  | 
|  | log_enabled = 0/1 | 
|  | '0': disable VAPI requests logging | 
|  | '1': enable VAPI requests logging | 
|  |  | 
|  | hide_device_id = 0/1 | 
|  | '0': don't log device id (for compatability with old version) | 
|  | '1': log device id | 
|  |  | 
|  |  | 
|  | vapi_fn = <filename> | 
|  | filename for the log file. | 
|  | valid only if log_enabled is set | 
|  | */ | 
|  |  | 
|  | section VAPI | 
|  | enabled = 0 | 
|  | server_port = 9998 | 
|  | log_enabled = 0 | 
|  | vapi_log_fn = "vapi.log" | 
|  | end | 
|  |  | 
|  |  | 
|  | /* CPU SECTION | 
|  |  | 
|  | This section specifies various CPU parameters. | 
|  |  | 
|  | ver = <value> | 
|  | rev = <value> | 
|  | specifies version and revision of the CPU used | 
|  |  | 
|  | upr = <value> | 
|  | changes the upr register | 
|  |  | 
|  | sr = <value> | 
|  | sets the initial Supervision Register value | 
|  | supervisor mode (SM) and fixed one (FO) set = 0x8001 | 
|  | exception prefix high (EPH, vectors@0xf0000000) = 0x4000 | 
|  | together, (SM | FO | EPH) = 0xc001 | 
|  | superscalar = 0/1 | 
|  | '0': CPU is scalar | 
|  | '1': CPU is superscalar | 
|  | (modify cpu/or32/execute.c to tune superscalar model) | 
|  |  | 
|  | hazards = 0/1 | 
|  | '0': don't track data hazards in superscalar CPU | 
|  | '1': track data hazards in superscalar CPU | 
|  | If tracked, data hazards can be displayed using the | 
|  | simulator's 'r' command. | 
|  |  | 
|  | dependstats = 0/1 | 
|  | '0': don't calculate inter-instruction dependencies. | 
|  | '1': calculate inter-instruction dependencies. | 
|  | If calculated, inter-instruction dependencies can be | 
|  | displayed using the simulator's 'stat' command. | 
|  |  | 
|  | sbuf_len = <value> | 
|  | length of store buffer (<= 256), 0 = disabled | 
|  | */ | 
|  |  | 
|  | section cpu | 
|  | ver = 0x12 | 
|  | cfg = 0x00 | 
|  | rev = 0x01 | 
|  | sr =  0x8001 /*SPR_SR_FO  | SPR_SR_SM | SPR_SR_EPH */ | 
|  | /* upr = */ | 
|  | superscalar = 0 | 
|  | hazards = 0 | 
|  | dependstats = 0 | 
|  | sbuf_len = 0 | 
|  | end | 
|  |  | 
|  |  | 
|  | /* PM SECTION | 
|  |  | 
|  | This section specifies Power Management parameters | 
|  |  | 
|  | enabled = 0/1 | 
|  | '0': disable power management | 
|  | '1': enable power management | 
|  | */ | 
|  |  | 
|  | section pm | 
|  | enabled = 0 | 
|  | end | 
|  |  | 
|  |  | 
|  | /* BPB SECTION | 
|  |  | 
|  | This section specifies how branch prediction should behave. | 
|  |  | 
|  | enabled = 0/1 | 
|  | '0': disable branch prediction | 
|  | '1': enable branch prediction | 
|  |  | 
|  | btic = 0/1 | 
|  | '0': disable branch target instruction cache model | 
|  | '1': enable branch target instruction cache model | 
|  |  | 
|  | sbp_bf_fwd = 0/1 | 
|  | Static branch prediction for 'l.bf' | 
|  | '0': don't use forward prediction | 
|  | '1': use forward prediction | 
|  |  | 
|  | sbp_bnf_fwd = 0/1 | 
|  | Static branch prediction for 'l.bnf' | 
|  | '0': don't use forward prediction | 
|  | '1': use forward prediction | 
|  |  | 
|  | hitdelay = <value> | 
|  | number of cycles bpb hit costs | 
|  |  | 
|  | missdelay = <value> | 
|  | number of cycles bpb miss costs | 
|  | */ | 
|  |  | 
|  | section bpb | 
|  | enabled = 0 | 
|  | btic = 0 | 
|  | sbp_bf_fwd = 0 | 
|  | sbp_bnf_fwd = 0 | 
|  | hitdelay = 0 | 
|  | missdelay = 0 | 
|  | end | 
|  |  | 
|  |  | 
|  | /* DEBUG SECTION | 
|  |  | 
|  | This sections specifies how the debug unit should behave. | 
|  |  | 
|  | enabled = 0/1 | 
|  | '0': disable debug unit | 
|  | '1': enable debug unit | 
|  |  | 
|  | gdb_enabled = 0/1 | 
|  | '0': don't start gdb server | 
|  | '1': start gdb server at port 'server_port' | 
|  |  | 
|  | server_port = <value> | 
|  | TCP/IP port to start gdb server on | 
|  | valid only if gdb_enabled is set | 
|  |  | 
|  | vapi_id = <hex_value> | 
|  | Used to create "fake" vapi log file containing the JTAG proxy messages. | 
|  | */ | 
|  | section debug | 
|  | enabled = 0 | 
|  | /*  gdb_enabled = 0 */ | 
|  | /*  server_port = 9999*/ | 
|  | rsp_enabled = 1 | 
|  | rsp_port = 50001 | 
|  | end | 
|  |  | 
|  |  | 
|  | /* MC SECTION | 
|  |  | 
|  | This section configures the memory controller | 
|  |  | 
|  | enabled = 0/1 | 
|  | '0': disable memory controller | 
|  | '1': enable memory controller | 
|  |  | 
|  | baseaddr = <hex_value> | 
|  | address of first MC register | 
|  |  | 
|  | POC = <hex_value> | 
|  | Power On Configuration register | 
|  |  | 
|  | index = <value> | 
|  | Index of this memory controller amongst all the memory controllers | 
|  | */ | 
|  |  | 
|  | section mc | 
|  | enabled = 0 | 
|  | baseaddr = 0x93000000 | 
|  | POC = 0x00000008                 /* Power on configuration register */ | 
|  | index = 0 | 
|  | end | 
|  |  | 
|  |  | 
|  | /* UART SECTION | 
|  |  | 
|  | This section configures the UARTs | 
|  |  | 
|  | enabled = <0|1> | 
|  | Enable/disable the peripheral.  By default if it is enabled. | 
|  |  | 
|  | baseaddr = <hex_value> | 
|  | address of first UART register for this device | 
|  |  | 
|  |  | 
|  | channel = <channeltype>:<args> | 
|  |  | 
|  | The channel parameter indicates the source of received UART characters | 
|  | and the sink for transmitted UART characters. | 
|  |  | 
|  | The <channeltype> can be either "file", "xterm", "tcp", "fd", or "tty" | 
|  | (without quotes). | 
|  |  | 
|  | A) To send/receive characters from a pair of files, use a file | 
|  | channel: | 
|  |  | 
|  | channel=file:<rxfile>,<txfile> | 
|  |  | 
|  | B) To create an interactive terminal window, use an xterm channel: | 
|  |  | 
|  | channel=xterm:[<xterm_arg>]* | 
|  |  | 
|  | C) To create a bidirectional tcp socket which one could, for example, | 
|  | access via telnet, use a tcp channel: | 
|  |  | 
|  | channel=tcp:<port number> | 
|  |  | 
|  | D) To cause the UART to read/write from existing numeric file | 
|  | descriptors, use an fd channel: | 
|  |  | 
|  | channel=fd:<rx file descriptor num>,<tx file descriptor num> | 
|  |  | 
|  | E) To connect the UART to a physical serial port, create a tty | 
|  | channel: | 
|  |  | 
|  | channel=tty:device=/dev/ttyS0,baud=9600 | 
|  |  | 
|  | irq = <value> | 
|  | irq number for this device | 
|  |  | 
|  | 16550 = 0/1 | 
|  | '0': this device is a UART16450 | 
|  | '1': this device is a UART16550 | 
|  |  | 
|  | jitter = <value> | 
|  | in msecs... time to block, -1 to disable it | 
|  |  | 
|  | vapi_id = <hex_value> | 
|  | VAPI id of this instance | 
|  | */ | 
|  |  | 
|  | section uart | 
|  | enabled = 1 | 
|  | baseaddr = 0x90000000 | 
|  | irq = 2 | 
|  | /* channel = "file:uart0.rx,uart0.tx" */ | 
|  | /* channel = "tcp:10084" */ | 
|  | channel = "xterm:" | 
|  | jitter = -1                     /* async behaviour */ | 
|  | 16550 = 1 | 
|  | end | 
|  |  | 
|  |  | 
|  | /* DMA SECTION | 
|  |  | 
|  | This section configures the DMAs | 
|  |  | 
|  | enabled = <0|1> | 
|  | Enable/disable the peripheral.  By default if it is enabled. | 
|  |  | 
|  | baseaddr = <hex_value> | 
|  | address of first DMA register for this device | 
|  |  | 
|  | irq = <value> | 
|  | irq number for this device | 
|  |  | 
|  | vapi_id = <hex_value> | 
|  | VAPI id of this instance | 
|  | */ | 
|  |  | 
|  | section dma | 
|  | enabled = 1 | 
|  | baseaddr = 0x9a000000 | 
|  | irq = 11 | 
|  | end | 
|  |  | 
|  |  | 
|  | /* ETHERNET SECTION | 
|  |  | 
|  | This section configures the ETHERNETs | 
|  |  | 
|  | enabled = <0|1> | 
|  | Enable/disable the peripheral.  By default if it is enabled. | 
|  |  | 
|  | baseaddr = <hex_value> | 
|  | address of first ethernet register for this device | 
|  |  | 
|  | dma = <value> | 
|  | which controller is this ethernet "connected" to | 
|  |  | 
|  | irq = <value> | 
|  | ethernet mac IRQ level | 
|  |  | 
|  | rtx_type = <value> | 
|  | use 0 - file interface, 1 - socket interface | 
|  |  | 
|  | rx_channel = <value> | 
|  | DMA channel used for RX | 
|  |  | 
|  | tx_channel = <value> | 
|  | DMA channel used for TX | 
|  |  | 
|  | rxfile = "<filename>" | 
|  | filename, where to read data from | 
|  |  | 
|  | txfile = "<filename>" | 
|  | filename, where to write data to | 
|  |  | 
|  | sockif = "<ifacename>" | 
|  | interface name of ethernet socket | 
|  |  | 
|  | vapi_id = <hex_value> | 
|  | VAPI id of this instance | 
|  | */ | 
|  |  | 
|  | section ethernet | 
|  | enabled = 1 | 
|  | baseaddr = 0x92000000 | 
|  | /* dma = 0 */ | 
|  | irq = 4 | 
|  | rtx_type = "tap" | 
|  | tap_dev = "tap0" | 
|  | /* tx_channel = 0 */ | 
|  | /* rx_channel = 1 */ | 
|  | rxfile = "eth0.rx" | 
|  | txfile = "eth0.tx" | 
|  | sockif = "eth0" | 
|  | end | 
|  |  | 
|  |  | 
|  | /* GPIO SECTION | 
|  |  | 
|  | This section configures the GPIOs | 
|  |  | 
|  | enabled = <0|1> | 
|  | Enable/disable the peripheral.  By default if it is enabled. | 
|  |  | 
|  | baseaddr = <hex_value> | 
|  | address of first GPIO register for this device | 
|  |  | 
|  | irq = <value> | 
|  | irq number for this device | 
|  |  | 
|  | base_vapi_id = <hex_value> | 
|  | first VAPI id of this instance | 
|  | GPIO uses 8 consecutive VAPI IDs | 
|  | */ | 
|  |  | 
|  | section gpio | 
|  | enabled = 0 | 
|  | baseaddr = 0x91000000 | 
|  | irq = 3 | 
|  | base_vapi_id = 0x0200 | 
|  | end | 
|  |  | 
|  | /* VGA SECTION | 
|  |  | 
|  | This section configures the VGA/LCD controller | 
|  |  | 
|  | enabled = <0|1> | 
|  | Enable/disable the peripheral.  By default if it is enabled. | 
|  |  | 
|  | baseaddr = <hex_value> | 
|  | address of first VGA register | 
|  |  | 
|  | irq = <value> | 
|  | irq number for this device | 
|  |  | 
|  | refresh_rate = <value> | 
|  | number of cycles between screen dumps | 
|  |  | 
|  | filename = "<filename>" | 
|  | template name for generated names (e.g. "primary" produces "primary0023.bmp") | 
|  | */ | 
|  |  | 
|  | section vga | 
|  | enabled = 0 | 
|  | baseaddr = 0x97100000 | 
|  | irq = 8 | 
|  | refresh_rate = 100000 | 
|  | filename = "primary" | 
|  | end | 
|  |  | 
|  |  | 
|  | /* TICK TIMER SECTION | 
|  |  | 
|  | This section configures tick timer | 
|  |  | 
|  | enabled = 0/1 | 
|  | whether tick timer is enabled | 
|  | */ | 
|  |  | 
|  | section pic | 
|  | enabled = 1 | 
|  | edge_trigger = 1 | 
|  | end | 
|  |  | 
|  | /* FB SECTION | 
|  |  | 
|  | This section configures the frame buffer | 
|  |  | 
|  | enabled = <0|1> | 
|  | Enable/disable the peripheral.  By default if it is enabled. | 
|  |  | 
|  | baseaddr = <hex_value> | 
|  | base address of frame buffer | 
|  |  | 
|  | paladdr = <hex_value> | 
|  | base address of first palette entry | 
|  |  | 
|  | refresh_rate = <value> | 
|  | number of cycles between screen dumps | 
|  |  | 
|  | filename = "<filename>" | 
|  | template name for generated names (e.g. "primary" produces "primary0023.bmp") | 
|  | */ | 
|  |  | 
|  | section fb | 
|  | enabled = 0 | 
|  | baseaddr = 0x97000000 | 
|  | refresh_rate = 1000000 | 
|  | filename = "primary" | 
|  | end | 
|  |  | 
|  |  | 
|  | /* KBD SECTION | 
|  |  | 
|  | This section configures the PS/2 compatible keyboard | 
|  |  | 
|  | baseaddr = <hex_value> | 
|  | base address of the keyboard device | 
|  |  | 
|  | rxfile = "<filename>" | 
|  | filename, where to read data from | 
|  | */ | 
|  |  | 
|  | section kbd | 
|  | enabled = 0 | 
|  | irq = 5 | 
|  | baseaddr = 0x94000000 | 
|  | rxfile = "kbd.rx" | 
|  | end | 
|  |  | 
|  |  | 
|  | /* ATA SECTION | 
|  |  | 
|  | This section configures the ATA/ATAPI host controller | 
|  |  | 
|  | baseaddr = <hex_value> | 
|  | address of first ATA register | 
|  |  | 
|  | enabled = <0|1> | 
|  | Enable/disable the peripheral.  By default if it is enabled. | 
|  |  | 
|  | irq = <value> | 
|  | irq number for this device | 
|  |  | 
|  | debug = <value> | 
|  | debug level for ata models. | 
|  | 0: no debug messages | 
|  | 1: verbose messages | 
|  | 3: normal messages (more messages than verbose) | 
|  | 5: debug messages (normal debug messages) | 
|  | 7: flow control messages (debug statemachine flows) | 
|  | 9: low priority message (display everything the code does) | 
|  |  | 
|  | dev_type0/1 = <value> | 
|  | ata device 0 type | 
|  | 0: NO_CONNeCT: none (not connected) | 
|  | 1: FILE      : simulated harddisk | 
|  | 2: LOCAL     : local system harddisk | 
|  |  | 
|  | dev_file0/1 = "<filename>" | 
|  | filename for simulated ATA device | 
|  | valid only if dev_type0 == 1 | 
|  |  | 
|  | dev_size0/1 = <value> | 
|  | size of simulated hard-disk (in MBytes) | 
|  | valid only if dev_type0 == 1 | 
|  |  | 
|  | dev_packet0/1 = <value> | 
|  | 0: simulated ATA device does NOT implement PACKET command feature set | 
|  | 1: simulated ATA device does implement PACKET command feature set | 
|  |  | 
|  | FIXME: irq number | 
|  | */ | 
|  |  | 
|  | section ata | 
|  | enabled = 0 | 
|  | baseaddr = 0x9e000000 | 
|  | irq = 15 | 
|  |  | 
|  | end |