plan9fox/sys/man/1/5e

141 lines
2.8 KiB
Text
Raw Normal View History

2011-06-26 20:31:39 +00:00
.TH 5E 1
.SH NAME
5e \- user-mode ARM emulation
.SH SYNOPSIS
.B 5e
[
.B -npb
]
.I text
[
.I arguments
]
.SH DESCRIPTION
.I 5e
simulates the execution of an ARM binary in a Plan 9 environment.
Unlike its predecessor
2011-08-26 09:27:38 +00:00
.IR vi (1)
2011-06-26 20:31:39 +00:00
it supports, among others, the syscalls
rfork (see
.IR fork (2))
2011-06-26 20:31:39 +00:00
and
.IR exec (2),
2011-06-30 19:44:56 +00:00
which allows for the execution of threaded programs (e.g.,
2011-06-26 20:31:39 +00:00
.IR rio (1)
or
2011-06-30 19:44:56 +00:00
.IR catclock (1)).
2011-06-26 20:31:39 +00:00
.PP
.I 5e
executes the specified binary
.IR text ,
which is prepended by
.B /bin
if it does not begin with a slash, dot or hash sign.
Unless
.B -n
is specified,
.B /bin
is replaced by the union of
.B /arm/bin
and
.BR /rc/bin .
.PP
Unlike
2011-08-26 09:27:38 +00:00
.IR vi (1),
2011-06-26 20:31:39 +00:00
.IR 5e (1)
does not provide built-in debugging facilities.
It
.I does
provide emulation of the
.B /proc
directory, if the
.B -p
flag is specified, to attach a proper debugger like
.IR acid (1).
There is no equivalent of the profiling facilities, no caches or TLBs are simulated, either.
.PP
.IR 5e (1)
currently has three options.
.TP
.B -n
By default,
.IR 5e (1)
replaces
.B /bin
as mentioned above and also sets the variables
.B cputype
and
.B objtype
to
.BR arm.
Supplying the
.B -n
option suppresses this behaviour.
.TP
.B -p
The
.B -p
option activates emulation of a
.B /proc
file system, which is mounted at
.B /proc
and also posted as
.BR /srv/armproc ,
cf.
.IR srv (3).
.TP
.B -b
Supplying
.B -b
causes failing processes to call
.IR abort (2)
instead of
2011-08-26 09:27:38 +00:00
.I sysfatal.
2011-06-30 19:44:56 +00:00
See below.
2011-06-26 20:31:39 +00:00
.SH SOURCE
.B /sys/src/cmd/5e
.SH SEE ALSO
2011-08-26 09:27:38 +00:00
.IR vi (1)
2011-06-26 20:31:39 +00:00
.SH BUGS
The host is required to be little endian and is assumed to have a floating point implementation conforming to IEEE 754.
Broken processes are simulated in a rather unsatisfactory manner.
The
.B -b
option leaks memory.
The emulator does not post
.B sys:
notes.
Obscure opcodes, in particular uncommon operations on R15, are not implemented.
Careless use of the
.B LDREX
and
.B STREX
2011-06-30 19:51:49 +00:00
instructions can lead to deadlock, while the
.I ARM Architecture Reference Manual
indicates a real processor will exhibit undefined behavior in these cases.
2011-06-26 20:31:39 +00:00
2011-06-30 19:44:56 +00:00
Accesses spanning segment boundaries will be treated as page faults.
Many syscalls such as
2011-06-26 20:31:39 +00:00
.IR pread (2)
2011-06-30 19:44:56 +00:00
will shuffle data around (in most cases unnecessarily) if invoked on potentially shared segments of variable length, in particular the bss segment.
2011-06-26 20:31:39 +00:00
2011-06-30 19:44:56 +00:00
FPA emulation leaves much to be desired, rounding modes are ignored, all calculations are performed at extended precision.
2011-06-26 20:31:39 +00:00
Floating point exceptions crash the emulator.
Several syscalls, most notably the
.IR segattach (2)
family, are not implemented (this should not be hard to fix).
The emulator notes the value of
.IR errstr (2)
only under obvious circumstances; with most syscalls only if the return value is negative.
.B /proc
emulation is more than unsatisfactory.
The
.I text
2011-06-30 19:44:56 +00:00
argument should behave more like it would if it had been entered as an argument to
2011-06-26 20:31:39 +00:00
.IR rc (1).