summaryrefslogtreecommitdiffstats
path: root/bsps/lm32/include/bsp/milkymist_pfpu.h
diff options
context:
space:
mode:
Diffstat (limited to 'bsps/lm32/include/bsp/milkymist_pfpu.h')
-rw-r--r--bsps/lm32/include/bsp/milkymist_pfpu.h72
1 files changed, 72 insertions, 0 deletions
diff --git a/bsps/lm32/include/bsp/milkymist_pfpu.h b/bsps/lm32/include/bsp/milkymist_pfpu.h
new file mode 100644
index 0000000000..73ea5fa28e
--- /dev/null
+++ b/bsps/lm32/include/bsp/milkymist_pfpu.h
@@ -0,0 +1,72 @@
+/**
+ * @file
+ * @ingroup lm32_milkymist_pfpu lm32_milkymist_shared
+ * @brief Milkymist PFPU driver
+ */
+
+/* milkymist_pfpu.h
+ *
+ * Milkymist PFPU driver for RTEMS
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ *
+ * COPYRIGHT (c) 2010 Sebastien Bourdeauducq
+ */
+
+/**
+ * @defgroup lm32_milkymist_pfpu Milkymist PFPU
+ * @ingroup lm32_milkymist_shared
+ * @brief Milkymist PFPU driver
+ * @{
+ */
+
+#ifndef __MILKYMIST_PFPU_H_
+#define __MILKYMIST_PFPU_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Ioctls */
+#define PFPU_EXECUTE 0x4600
+
+#define PFPU_PROGSIZE (2048)
+#define PFPU_REG_COUNT (128)
+
+struct pfpu_td {
+ unsigned int *output;
+ unsigned int hmeshlast;
+ unsigned int vmeshlast;
+ unsigned int *program;
+ unsigned int progsize;
+ float *registers;
+ /** @brief shall we update the "registers" array after completion */
+ bool update;
+ /** @brief shall we invalidate L1 data cache after completion */
+ bool invalidate;
+};
+
+rtems_device_driver pfpu_initialize(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver pfpu_control(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+#define PFPU_DRIVER_TABLE_ENTRY {pfpu_initialize, \
+NULL, NULL, NULL, NULL, pfpu_control}
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MILKYMIST_PFPU_H_ */