diff options
author | Laurent Vivier <laurent@vivier.eu> | 2017-02-19 21:02:31 +0100 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2017-02-20 12:12:23 +0000 |
commit | 4126c4792bad9da15673d8ee9115a71440e6412f (patch) | |
tree | e34bf7f7a879425948c3dfdd6cd976a05cd59d4f | |
parent | 3c30a51e92affed5cd9f53b2f10cee1ff41d8294 (diff) |
risu-m68k: update fpregs
f_fpregs is a 2d array, not 1d:
typedef struct fpregset
{
int f_pcr;
int f_psr;
int f_fpiaddr;
#ifdef __mcoldfire__
int f_fpregs[8][2];
#else
int f_fpregs[8][3];
#endif
} fpregset_t;
For the moment, we don't manage ColdFire case, only 680x0.
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Message-id: 20170219200231.30672-1-laurent@vivier.eu
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r-- | risu_reginfo_m68k.c | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/risu_reginfo_m68k.c b/risu_reginfo_m68k.c index c9d21cc..d0d47d9 100644 --- a/risu_reginfo_m68k.c +++ b/risu_reginfo_m68k.c @@ -31,9 +31,9 @@ void reginfo_init(struct reginfo *ri, ucontext_t *uc) ri->fpregs.f_psr = uc->uc_mcontext.fpregs.f_psr; ri->fpregs.f_fpiaddr = uc->uc_mcontext.fpregs.f_fpiaddr; for (i = 0; i < 8; i++) { - memcpy(&ri->fpregs.f_fpregs[i * 3], - &uc->uc_mcontext.fpregs.f_fpregs[i * 3], - 3 * sizeof(int)); + memcpy(ri->fpregs.f_fpregs[i], + uc->uc_mcontext.fpregs.f_fpregs[i], + sizeof(ri->fpregs.f_fpregs[0])); } } @@ -64,9 +64,9 @@ int reginfo_is_eq(struct reginfo *m, struct reginfo *a, ucontext_t *uc) } for (i = 0; i < 8; i++) { - if (m->fpregs.f_fpregs[i * 3] != a->fpregs.f_fpregs[i * 3] || - m->fpregs.f_fpregs[i * 3 + 1] != a->fpregs.f_fpregs[i * 3 + 1] || - m->fpregs.f_fpregs[i * 3 + 2] != a->fpregs.f_fpregs[i * 3 + 2]) { + if (m->fpregs.f_fpregs[i][0] != a->fpregs.f_fpregs[i][0] || + m->fpregs.f_fpregs[i][1] != a->fpregs.f_fpregs[i][1] || + m->fpregs.f_fpregs[i][2] != a->fpregs.f_fpregs[i][2]) { return 0; } } @@ -93,8 +93,8 @@ void reginfo_dump(struct reginfo *ri, int is_master) for (i = 0; i < 8; i++) { fprintf(stderr, "\tFP%d: %08x %08x %08x\n", i, - ri->fpregs.f_fpregs[i * 3], ri->fpregs.f_fpregs[i * 3 + 1], - ri->fpregs.f_fpregs[i * 3 + 2]); + ri->fpregs.f_fpregs[i][0], ri->fpregs.f_fpregs[i][1], + ri->fpregs.f_fpregs[i][2]); } fprintf(stderr, "\n"); @@ -134,15 +134,14 @@ int reginfo_dump_mismatch(struct reginfo *m, struct reginfo *a, FILE *f) } for (i = 0; i < 8; i++) { - if (m->fpregs.f_fpregs[i * 3] != a->fpregs.f_fpregs[i * 3] || - m->fpregs.f_fpregs[i * 3 + 1] != a->fpregs.f_fpregs[i * 3 + 1] || - m->fpregs.f_fpregs[i * 3 + 2] != a->fpregs.f_fpregs[i * 3 + 2]) { + if (m->fpregs.f_fpregs[i][0] != a->fpregs.f_fpregs[i][0] || + m->fpregs.f_fpregs[i][1] != a->fpregs.f_fpregs[i][1] || + m->fpregs.f_fpregs[i][2] != a->fpregs.f_fpregs[i][2]) { fprintf(f, "Mismatch: Register FP%d\n", i); fprintf(f, "m: [%08x %08x %08x] != a: [%08x %08x %08x]\n", - m->fpregs.f_fpregs[i * 3], m->fpregs.f_fpregs[i * 3 + 1], - m->fpregs.f_fpregs[i * 3 + 2], a->fpregs.f_fpregs[i * 3], - a->fpregs.f_fpregs[i * 3 + 1], - a->fpregs.f_fpregs[i * 3 + 2]); + m->fpregs.f_fpregs[i][0], m->fpregs.f_fpregs[i][1], + m->fpregs.f_fpregs[i][2], a->fpregs.f_fpregs[i][0], + a->fpregs.f_fpregs[i][1], a->fpregs.f_fpregs[i][2]); } } |