unsigned long (*fn)(unsigned long, unsigned long),
unsigned long msr, unsigned long *regs);
+#define MSR_FP 0x2000
#define MSR_SE 0x400
#define MSR_BE 0x200
return 0;
}
+extern unsigned long test8(unsigned long, unsigned long);
+
+int trace_test_8(void)
+{
+ unsigned long ret;
+ unsigned long regs[2];
+
+ ret = callit(0, 0, test8, (mfmsr() & ~MSR_FP) | MSR_SE, regs);
+ if (ret != 0x800)
+ return ret + 1;
+ ret = callit(0, 0, test8, mfmsr() | MSR_FP | MSR_SE, regs);
+ if (ret != 0xd00)
+ return ret + 2;
+ return 0;
+}
+
int fail = 0;
void do_test(int num, int (*test)(void))
do_test(5, trace_test_5);
do_test(6, trace_test_6);
do_test(7, trace_test_7);
+ do_test(8, trace_test_8);
return fail;
}