aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Vivier <laurent@vivier.eu>2017-02-19 21:02:31 +0100
committerPeter Maydell <peter.maydell@linaro.org>2017-02-20 12:12:23 +0000
commit4126c4792bad9da15673d8ee9115a71440e6412f (patch)
treee34bf7f7a879425948c3dfdd6cd976a05cd59d4f
parent3c30a51e92affed5cd9f53b2f10cee1ff41d8294 (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.c29
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]);
}
}