diff --git a/include/isa/riscv64.h b/include/isa/riscv64.h index eb95f00231a69ba71e75ad8108a2ef2789148d87..4c11ce0052045edcbfc589079ae30d372d059fd5 100644 --- a/include/isa/riscv64.h +++ b/include/isa/riscv64.h @@ -18,6 +18,10 @@ typedef struct { uint64_t _64; } gpr[32]; + union { + uint64_t _64; + } fpr[32]; + uint64_t pc; uint64_t mstatus, mcause, mepc; uint64_t sstatus, scause, sepc; diff --git a/src/isa/riscv64/difftest/difftest.h b/src/isa/riscv64/difftest/difftest.h index 7218cab8065331058ba24025ea2d2acaa177d65e..6c78cae058b417277dd54feba4f4a28fa41d5202 100644 --- a/src/isa/riscv64/difftest/difftest.h +++ b/src/isa/riscv64/difftest/difftest.h @@ -1,7 +1,7 @@ #ifndef __RISCV64_DIFF_TEST_H__ #define __RISCV64_DIFF_TEST_H__ -#define DIFFTEST_REG_SIZE (sizeof(uint64_t) * (32 + 1 + 6)) // GRPs + pc + [m|s][status|cause|epc] +#define DIFFTEST_REG_SIZE (sizeof(uint64_t) * (32 + 32 + 1 + 6)) // GRPs + FPRs + pc + [m|s][status|cause|epc] void isa_difftest_getregs_hook(void); void isa_difftest_setregs_hook(void); diff --git a/tools/qemu-diff/include/isa/riscv64.h b/tools/qemu-diff/include/isa/riscv64.h index 2ddd38c40198a676b75c6f5af2a750276f81dd9d..850a2ae69f64f6353a007cf9f61865b040703ed2 100644 --- a/tools/qemu-diff/include/isa/riscv64.h +++ b/tools/qemu-diff/include/isa/riscv64.h @@ -9,10 +9,11 @@ union isa_gdb_regs { struct { uint64_t gpr[32]; + uint64_t fpr[32]; uint64_t pc; }; struct { - uint32_t array[77]; + uint32_t array[DIFFTEST_REG_SIZE/sizeof(uint32_t)]; }; };