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
|
.SH SYNOPSIS
|
||||||
.B 5e
|
.B 5e
|
||||||
[
|
[
|
||||||
.B -npb
|
.B -npbF
|
||||||
]
|
]
|
||||||
.I text
|
.I text
|
||||||
[
|
[
|
||||||
|
@ -92,6 +92,9 @@ causes failing processes to call
|
||||||
instead of
|
instead of
|
||||||
.I sysfatal.
|
.I sysfatal.
|
||||||
See below.
|
See below.
|
||||||
|
.TP
|
||||||
|
.B -F
|
||||||
|
Disable emulation of VFP floating point instructions.
|
||||||
.SH SOURCE
|
.SH SOURCE
|
||||||
.B /sys/src/cmd/5e
|
.B /sys/src/cmd/5e
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
|
@ -108,13 +111,6 @@ The emulator does not post
|
||||||
notes.
|
notes.
|
||||||
|
|
||||||
Obscure opcodes, in particular uncommon operations on R15, are not implemented.
|
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.
|
Accesses spanning segment boundaries will be treated as page faults.
|
||||||
Many syscalls such as
|
Many syscalls such as
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include "dat.h"
|
#include "dat.h"
|
||||||
#include "fns.h"
|
#include "fns.h"
|
||||||
|
|
||||||
|
int vfp = 1;
|
||||||
int nflag, pflag, bflag;
|
int nflag, pflag, bflag;
|
||||||
Ref nproc;
|
Ref nproc;
|
||||||
|
|
||||||
|
@ -49,7 +50,7 @@ cleanup(void)
|
||||||
static void
|
static void
|
||||||
usage(void)
|
usage(void)
|
||||||
{
|
{
|
||||||
fprint(2, "usage: 5e [-npbf] text [...]\n");
|
fprint(2, "usage: 5e [-npbF] text [...]\n");
|
||||||
exits(nil);
|
exits(nil);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,6 +106,7 @@ main(int argc, char **argv)
|
||||||
case 'p': pflag++; break;
|
case 'p': pflag++; break;
|
||||||
case 'b': bflag++; break;
|
case 'b': bflag++; break;
|
||||||
case 'f': vfp = 1; break;
|
case 'f': vfp = 1; break;
|
||||||
|
case 'F': vfp = 0; break;
|
||||||
default: usage();
|
default: usage();
|
||||||
} ARGEND;
|
} ARGEND;
|
||||||
if(argc < 1)
|
if(argc < 1)
|
||||||
|
|
|
@ -55,7 +55,7 @@ vfprmtransfer(u32int instr)
|
||||||
sz = instr & (1<<8);
|
sz = instr & (1<<8);
|
||||||
if((instr & (1<<23)) == 0)
|
if((instr & (1<<23)) == 0)
|
||||||
off = -off;
|
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){
|
switch((instr>>20)&0x3){
|
||||||
case 0:
|
case 0:
|
||||||
if(sz)
|
if(sz)
|
||||||
|
|
Loading…
Reference in a new issue