Message ID | 1485744457-10324-3-git-send-email-joserz@linux.vnet.ibm.com |
---|---|
State | New |
Headers | show |
On 30 January 2017 at 02:47, Jose Ricardo Ziviani <joserz@linux.vnet.ibm.com> wrote: > When running FP operations, FPSCR flag must be compared to make sure > that any exception will behave consistently. > > Signed-off-by: Jose Ricardo Ziviani <joserz@linux.vnet.ibm.com> > --- > risu_reginfo_ppc64le.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/risu_reginfo_ppc64le.c b/risu_reginfo_ppc64le.c > index 4dc509c..ee0e55e 100644 > --- a/risu_reginfo_ppc64le.c > +++ b/risu_reginfo_ppc64le.c > @@ -21,6 +21,7 @@ > > #define XER 37 > #define CCR 38 > +#define FPREG 32 > > /* reginfo_init: initialize with a ucontext */ > void reginfo_init(struct reginfo *ri, ucontext_t *uc) > @@ -82,6 +83,10 @@ int reginfo_is_eq(struct reginfo *m, struct reginfo *a, ucontext_t *uc) > } > } > > + if (m->fpregs[FPREG] != a->fpregs[FPREG]) { > + return 0; > + } > + > for (i = 0; i < 32; i++) { > if (m->vrregs.vrregs[i][0] != a->vrregs.vrregs[i][0] || > m->vrregs.vrregs[i][1] != a->vrregs.vrregs[i][1] || > -- Do we also need to add something to reginfo_dump_mismatch() to print the mismatching FPSCR values ? thanks -- PMM
diff --git a/risu_reginfo_ppc64le.c b/risu_reginfo_ppc64le.c index 4dc509c..ee0e55e 100644 --- a/risu_reginfo_ppc64le.c +++ b/risu_reginfo_ppc64le.c @@ -21,6 +21,7 @@ #define XER 37 #define CCR 38 +#define FPREG 32 /* reginfo_init: initialize with a ucontext */ void reginfo_init(struct reginfo *ri, ucontext_t *uc) @@ -82,6 +83,10 @@ int reginfo_is_eq(struct reginfo *m, struct reginfo *a, ucontext_t *uc) } } + if (m->fpregs[FPREG] != a->fpregs[FPREG]) { + return 0; + } + for (i = 0; i < 32; i++) { if (m->vrregs.vrregs[i][0] != a->vrregs.vrregs[i][0] || m->vrregs.vrregs[i][1] != a->vrregs.vrregs[i][1] ||
When running FP operations, FPSCR flag must be compared to make sure that any exception will behave consistently. Signed-off-by: Jose Ricardo Ziviani <joserz@linux.vnet.ibm.com> --- risu_reginfo_ppc64le.c | 5 +++++ 1 file changed, 5 insertions(+)