NAME
ski, xski, bskinc - An IA-64 Instruction Set Simulator
SYNOPSIS
ski [-help] [-i file] [-rest file] [-nonet] [-srcroot dir]
[-forceuser] [-forcesystem] [-strace] [-palen n] [-valen n]
[-ridlen n] [-keylen n] [-grfile n]
xski [-help] [-i file] [-rest file] [-noconsole] [-nonet]
[-srcroot dir] [-forceuser] [-forcesystem] [-strace] [-palen n]
[-valen n] [-ridlen n] [-keylen n] [-grfile n]
bskinc [-help] [-i file] [-rest file] [-noconsole] [-nonet]
[-forceuser] [-forcesystem] [-icnt file] [-strace] [-palen n]
[-valen n] [-ridlen n] [-keylen n] [-grfile n]
DESCRIPTION
Ski is an IA-64 instruction set simulator from Hewlett-Packard Company.
It simulates the IA-64 architecture as defined by the architecture
manual. This is not a full platform simulator, i.e., no system chipset
or PCI bus simulation is done. However it supports the full
instruction set of the architecture, including privileged instructions
and associated semantics.
Ski can be used in two operating mode: user- and system-mode. In user
mode, you can run user level applications directly on top of the
simulator. The emulation stops at the system call boundary. The system
call is emulated by calling the host OS, such as x86 Linux. Conversions
between 64-bit and 32-bit parameters are done by Ski as needed. This
allows fast execution of user programs. Most system calls are emulated,
though the emulation is not always 100 percent accurate.
In system-mode, operating-system kernel development and execution is
possible because interrupts and virtual memory behaviors are simulated.
In this mode you can actually run the Linux kernel and, once booted,
user applications can be run on top of the simulated kernel.
The ski simulator comes with three different interfaces. The simplest
one is the batch mode, called bskinc a shell running a script.
There is also a full-text curses-based mode, where you can interact
with the simulator to inspect code, set breakpoints, etc. This version
is called ski
Finally there is a graphical version called xski which gives you
several windows where you can look at the code, inspect register
contents, etc.
All three modes provides the same core simulation, only the interface
is different.
OPTIONS
-help Prints the list of supported options for the specific interface
required. Not all options are available in every possible
interface.
-nonet When running in kernel mode, this option tells the simulator not
to probe for existing Ethernet interfaces on the host. This way
the Linux kernel won’t detect any device. This option is useful
when you don’t want to run the simulator as root (or setuid to
root). For networking support root privilege is required.
-srcroot directory
Specify the directory where the program sources can be found.
This option is only useful when combined the "mixed mode"
display (see the "pm" command inside Ski).
-noconsole
Do not use an xterm as the default output console, but use the
current tty. This option is only useful when ski is invoked in
batch mode. It allows to run in the current terminal window.
This is used mostly within the NUE(1) environment.
-forceuser
Force the simulator into user-mode. The simulator normally
auto-detects which mode to run in, but this option is available
to force user-mode in case auto-detection fails for some reason.
-forcesystem
Force the simulator into system-mode. The simulator normally
auto-detects which mode to run in, but this option is available
to force system-mode in case auto-detection fails for some
reason.
-strace
This option displays all the system calls executed by the user
level programs. It is only valid when running in user-mode. The
output looks like a highly simplified version of output from
strace(1).
-i file
Process initialization <file> at startup.
-icnt Store instruction counts in <file>.
-rest Restore simulation state from <file>.
-stats Display execution run-time and instruction rate.
-palen <n>
Implemented physical address bits. Default: n=63
-valen <n>
Implemented virtual address bits. Default: n=61
-ridlen <n>
Implemented RR.rid bits. Default: n=24
-keylen <n>
Implemented PKR.key bits. Default: n=24
-grlen <n>
General Register file size. Default: n=128
Running in user-mode
To run a simple IA-64 program in user-mode only, you can type in the
following:
$ bskinc my_ia64_prg
This will force execution is the current terminal and in batch mode.
IMPORTANT: To run dynamically linked IA-64 binaries, it is necessary to
have IA-64 versions of the necessary shared libraries installed. On
x86 Linux, this is most easily accomplished by installing the NUE(1)
environment.
Running in system-mode
To run a Linux kernel on top of the simulator, you need several
components:
- a Linux kernel compiled to use the HP-simulator. It needs to have
the CONFIG_SIMSERIAL, CONFIG_SIMSCSI, and CONFIG_SIMETH options turned
on.
- a boot loader that goes with it (compiled with "make boot" in the
kernel source tree).
- a disk image file with IA-64 binaries on it.
Please refer to extra documentation to learn in greater details how to
build those 3 components.
Once you have those components, you launch execution by simply typing:
$ ski bootloader vmlinux simscsi=/path/sd simeth=eth0
In this example, the simscsi= option informs the Linux kernel where to
find the SCSI disk images. Here /path/sd is just the prefix, the kernel
will automatically look for /path/sd{a,b,c,...}. So the disk image must
use the full name, i.e., /path/sda. The simeth= indicates which local
interface to use for the simulated Ethernet driver. The simulator must
be run with root privilege to get the networking emulation to work.
You can specify other options on the command line, just like you would
do at the LILO boot prompt for instance.
Getting help inside ski
When you run ski in interactive mode via ski or xski, you can get help
on commands by typing help.
When running in curses mode, you must make sure that you have the PAGER
environment variable set to whatever is your preferred pager command.
It is usually set to more(1) or less(1). If the variable does not exist
ski will default to using less(1). Note that less(1) usually behaves
the best when interacting with ski.
Using Xski
In this version (1.1.0) of ski, the X11 interface has not been built.
If you would like such a GUI, please feel free to contribute patches to
convert the current Motif version to something more modern.
ENVIRONMENT VARIABLES
SKI_USE_FAKE_XTERM
If this environment variable is set (the value is unimportant),
the ski-fake-xterm(1) utility will be used for output to stdout,
instead of xterm(1). This will result in a temporary file
created in the current working directory with a name of the form
"ski.XXXXXX", where "XXXXXX" can be any six characters.
SEE ALSO
qemu(1), bochs(1)
AUTHORS
Hewlett-Packard Company
Stephane Eranian <eranian@hpl.hp.com>
David Mosberger <davidm@hpl.hp.com)