5e: enable VFP emulation by default, doubles only need to be 4 byte aligned
this adds -F flag to 5e (same as 5l) to disable VFP emulation and makes VFP emulation the default.
This commit is contained in:
parent
63879193e7
commit
fcb9abccbb
12
sys/man/1/5e
12
sys/man/1/5e
|
@ -4,7 +4,7 @@
|
|||
.SH SYNOPSIS
|
||||
.B 5e
|
||||
[
|
||||
.B -npb
|
||||
.B -npbF
|
||||
]
|
||||
.I text
|
||||
[
|
||||
|
@ -92,6 +92,9 @@ causes failing processes to call
|
|||
instead of
|
||||
.I sysfatal.
|
||||
See below.
|
||||
.TP
|
||||
.B -F
|
||||
Disable emulation of VFP floating point instructions.
|
||||
.SH SOURCE
|
||||
.B /sys/src/cmd/5e
|
||||
.SH SEE ALSO
|
||||
|
@ -108,13 +111,6 @@ The emulator does not post
|
|||
notes.
|
||||
|
||||
Obscure opcodes, in particular uncommon operations on R15, are not implemented.
|
||||
Careless use of the
|
||||
.B LDREX
|
||||
and
|
||||
.B STREX
|
||||
instructions can lead to deadlock, while the
|
||||
.I ARM Architecture Reference Manual
|
||||
indicates a real processor will exhibit undefined behavior in these cases.
|
||||
|
||||
Accesses spanning segment boundaries will be treated as page faults.
|
||||
Many syscalls such as
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include "dat.h"
|
||||
#include "fns.h"
|
||||
|
||||
int vfp = 1;
|
||||
int nflag, pflag, bflag;
|
||||
Ref nproc;
|
||||
|
||||
|
@ -49,7 +50,7 @@ cleanup(void)
|
|||
static void
|
||||
usage(void)
|
||||
{
|
||||
fprint(2, "usage: 5e [-npbf] text [...]\n");
|
||||
fprint(2, "usage: 5e [-npbF] text [...]\n");
|
||||
exits(nil);
|
||||
}
|
||||
|
||||
|
@ -105,6 +106,7 @@ main(int argc, char **argv)
|
|||
case 'p': pflag++; break;
|
||||
case 'b': bflag++; break;
|
||||
case 'f': vfp = 1; break;
|
||||
case 'F': vfp = 0; break;
|
||||
default: usage();
|
||||
} ARGEND;
|
||||
if(argc < 1)
|
||||
|
|
|
@ -55,7 +55,7 @@ vfprmtransfer(u32int instr)
|
|||
sz = instr & (1<<8);
|
||||
if((instr & (1<<23)) == 0)
|
||||
off = -off;
|
||||
ea = vaddr(evenaddr(P->R[n] + off, sz ? 7 : 3), 8, &seg);
|
||||
ea = vaddr(evenaddr(P->R[n] + off, 3), sz ? 8 : 4, &seg);
|
||||
switch((instr>>20)&0x3){
|
||||
case 0:
|
||||
if(sz)
|
||||
|
|
Loading…
Reference in a new issue