mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 01:33:56 -06:00
target/xtensa: add DFPU registers and opcodes
DFPU may be configured with 32-bit or with 64-bit registers. Xtensa ISA does not specify how single-precision values are stored in 64-bit registers. Existing implementations store them in the low half of the registers. Add value extraction and write back to single-precision opcodes. Add new double precision opcodes. Add 64-bit register file. Add 64-bit values dumping to the xtensa_cpu_dump_state. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
This commit is contained in:
parent
de6b55cbda
commit
cfa9f05181
6 changed files with 1424 additions and 45 deletions
|
@ -31,6 +31,7 @@
|
|||
#include "qemu/osdep.h"
|
||||
#include "qapi/error.h"
|
||||
#include "cpu.h"
|
||||
#include "fpu/softfloat.h"
|
||||
#include "qemu/module.h"
|
||||
#include "migration/vmstate.h"
|
||||
|
||||
|
@ -73,6 +74,8 @@ static void xtensa_cpu_reset(DeviceState *dev)
|
|||
XtensaCPU *cpu = XTENSA_CPU(s);
|
||||
XtensaCPUClass *xcc = XTENSA_CPU_GET_CLASS(cpu);
|
||||
CPUXtensaState *env = &cpu->env;
|
||||
bool dfpu = xtensa_option_enabled(env->config,
|
||||
XTENSA_OPTION_DFP_COPROCESSOR);
|
||||
|
||||
xcc->parent_reset(dev);
|
||||
|
||||
|
@ -104,6 +107,8 @@ static void xtensa_cpu_reset(DeviceState *dev)
|
|||
reset_mmu(env);
|
||||
s->halted = env->runstall;
|
||||
#endif
|
||||
set_no_signaling_nans(!dfpu, &env->fp_status);
|
||||
set_use_first_nan(!dfpu, &env->fp_status);
|
||||
}
|
||||
|
||||
static ObjectClass *xtensa_cpu_class_by_name(const char *cpu_model)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue