All of lore.kernel.org
 help / color / mirror / Atom feed
* [Xenomai-core] [PATCH] Add fptest for powerpc
@ 2006-06-10 16:47 Heikki Lindholm
  2006-06-10 17:53 ` Gilles Chanteperdrix
  0 siblings, 1 reply; 4+ messages in thread
From: Heikki Lindholm @ 2006-06-10 16:47 UTC (permalink / raw)
  To: xenomai

[-- Attachment #1: Type: text/plain, Size: 271 bytes --]

This adds powerpc version of fptest.h. It just stores and loads the raw 
integer into/from FPU registers without converting to proper IEEE form. 
Converting would have added unneccessary complexity. As a side note, the 
ppc barfs on the test with "1000 != 10". :I

-- hl

[-- Attachment #2: xenomai-060610-ppc-fptest.patch --]
[-- Type: text/plain, Size: 2045 bytes --]

diff -Nru xenomai.orig/include/asm-powerpc/fptest.h xenomai/include/asm-powerpc/fptest.h
--- xenomai.orig/include/asm-powerpc/fptest.h	2006-06-10 10:29:29.335736000 +0000
+++ xenomai/include/asm-powerpc/fptest.h	2006-06-10 16:12:09.395132000 +0000
@@ -10,11 +10,94 @@
 
 static inline void fp_regs_set(unsigned val)
 {
+	uint64_t fpval = val;
+	__asm__ __volatile__("lfd	0, %0\n"
+		"	fmr	1, 0\n"
+		"	fmr	2, 0\n"
+		"	fmr	3, 0\n"
+		"	fmr	4, 0\n"
+		"	fmr	5, 0\n"
+		"	fmr	6, 0\n"
+		"	fmr	7, 0\n"
+		"	fmr	8, 0\n"
+		"	fmr	9, 0\n"
+		"	fmr	10, 0\n"
+		"	fmr	11, 0\n"
+		"	fmr	12, 0\n"
+		"	fmr	13, 0\n"
+		"	fmr	14, 0\n"
+		"	fmr	15, 0\n"
+		"	fmr	16, 0\n"
+		"	fmr	17, 0\n"
+		"	fmr	18, 0\n"
+		"	fmr	19, 0\n"
+		"	fmr	20, 0\n"
+		"	fmr	21, 0\n"
+		"	fmr	22, 0\n"
+		"	fmr	23, 0\n"
+		"	fmr	24, 0\n"
+		"	fmr	25, 0\n"
+		"	fmr	26, 0\n"
+		"	fmr	27, 0\n"
+		"	fmr	28, 0\n"
+		"	fmr	29, 0\n"
+		"	fmr	30, 0\n"
+		"	fmr	31, 0\n"
+		: 
+		: "m" (fpval));
 }
 
+#define FPTEST_REGVAL(n) {						\
+	uint64_t t;							\
+	__asm__ __volatile__("	stfd	" #n ", %0" : "=m" (t));	\
+	e[n] = (unsigned)t;						\
+	}
+
 static inline int fp_regs_check(unsigned val)
 {
-    return 0;
+	unsigned i, failed = 0;
+	uint32_t e[32];
+
+	FPTEST_REGVAL(0);
+	FPTEST_REGVAL(1);
+	FPTEST_REGVAL(2);
+	FPTEST_REGVAL(3);
+	FPTEST_REGVAL(4);
+	FPTEST_REGVAL(5);
+	FPTEST_REGVAL(6);
+	FPTEST_REGVAL(7);
+	FPTEST_REGVAL(8);
+	FPTEST_REGVAL(9);
+	FPTEST_REGVAL(10);
+	FPTEST_REGVAL(11);
+	FPTEST_REGVAL(12);
+	FPTEST_REGVAL(13);
+	FPTEST_REGVAL(14);
+	FPTEST_REGVAL(15);
+	FPTEST_REGVAL(16);
+	FPTEST_REGVAL(17);
+	FPTEST_REGVAL(18);
+	FPTEST_REGVAL(19);
+	FPTEST_REGVAL(20);
+	FPTEST_REGVAL(21);
+	FPTEST_REGVAL(22);
+	FPTEST_REGVAL(23);
+	FPTEST_REGVAL(24);
+	FPTEST_REGVAL(25);
+	FPTEST_REGVAL(26);
+	FPTEST_REGVAL(27);
+	FPTEST_REGVAL(28);
+	FPTEST_REGVAL(29);
+	FPTEST_REGVAL(30);
+	FPTEST_REGVAL(31);
+
+	for (i = 0; i < 32; i++)
+		if (e[i] != val) {
+			printk("r%d: %u != %u\n", i, e[i], val);
+			failed = 1;
+		}
+
+	return failed;
 }
 
 #endif /* FPTEST_H */

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2006-06-11 12:34 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-06-10 16:47 [Xenomai-core] [PATCH] Add fptest for powerpc Heikki Lindholm
2006-06-10 17:53 ` Gilles Chanteperdrix
2006-06-10 20:48   ` Heikki Lindholm
2006-06-11 12:34     ` Gilles Chanteperdrix

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.