summaryrefslogtreecommitdiff
path: root/usr/src/uts/sun4u/sys/zuluvm.h
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/sun4u/sys/zuluvm.h')
-rw-r--r--usr/src/uts/sun4u/sys/zuluvm.h121
1 files changed, 121 insertions, 0 deletions
diff --git a/usr/src/uts/sun4u/sys/zuluvm.h b/usr/src/uts/sun4u/sys/zuluvm.h
new file mode 100644
index 0000000000..d36a63b9bc
--- /dev/null
+++ b/usr/src/uts/sun4u/sys/zuluvm.h
@@ -0,0 +1,121 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License"). You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+/*
+ * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifndef __ZULUVM_INCL__
+#define __ZULUVM_INCL__
+
+#pragma ident "%Z%%M% %I% %E% SMI"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* zulud interface */
+
+#ifndef _ASM
+
+#include <sys/dditypes.h>
+
+typedef struct {
+ caddr_t addr;
+ size_t len;
+ int tlbtype;
+} zulud_preload_t;
+
+typedef struct {
+ int version;
+ int (*set_itlb_pc)(void *handle, uint64_t mondo);
+ int (*set_dtlb_pc)(void *handle, uint64_t mondo);
+ int (*set_suspendAck_pc)(void *handle, uint64_t mondo);
+ int (*write_tte)(void *handle, int ttesize, uint64_t tag,
+ pfn_t pfn, int permission, int tlbtype);
+ int (*tlb_done)(void *handle, int tlbtype, int status);
+ int (*demap_page)(void *handle, caddr_t vaddr, short ctx);
+ int (*demap_ctx)(void *handle, short ctx);
+ int (*dma_suspend_ack)(void *handle);
+ int (*set_tsb)(void *handle, int tlbtype, uint64_t tsbreg);
+} zulud_ops_t;
+
+#endif
+
+#define ZULUVM_SUCCESS 0
+#define ZULUVM_ERROR 1
+#define ZULUVM_NO_TTE 2
+#define ZULUVM_INVALID_MISS 3
+#define ZULUVM_NO_DEV 4
+#define ZULUVM_NO_HAT 5
+#define ZULUVM_NO_MAP 6
+#define ZULUVM_VERSION_MISMATCH 7
+#define ZULUVM_TTE_DELAY 8
+#define ZULUVM_MISS_CANCELED 9
+#define ZULUVM_BAD_IDX 10
+#define ZULUVM_WATCH_POINT 11
+#define ZULUVM_NO_SUPPORT 12
+#define ZULUVM_CTX_LOCKED 13
+
+#define ZULUVM_ITLB_FLAG 0x1
+#define ZULUVM_DMA_FLAG 0x2
+#define ZULUVM_DMA_MASK 0x3
+
+#define ZULUVM_DMA1 0
+#define ZULUVM_DMA2 ZULUVM_DMA_FLAG
+#define ZULUVM_ITLB1 ZULUVM_ITLB_FLAG
+#define ZULUVM_ITLB2 (ZULUVM_ITLB_FLAG | ZULUVM_DMA_FLAG)
+#define ZULUVM_INVAL 0x4
+
+#ifndef _ASM
+
+/* zuluvm interface */
+
+#define ZULUVM_INTERFACE_VERSION 1 /* inc with every intf change */
+
+typedef void * zuluvm_info_t;
+int zuluvm_init(zulud_ops_t *ops, int **pagesizes);
+int zuluvm_fini(void);
+int zuluvm_alloc_device(dev_info_t *devi, void *arg, zuluvm_info_t *devp,
+ caddr_t mmu, caddr_t imr);
+int zuluvm_free_device(zuluvm_info_t devp);
+int zuluvm_dma_add_proc(zuluvm_info_t devp, uint64_t *cookie);
+int zuluvm_dma_delete_proc(zuluvm_info_t devp, uint64_t cookie);
+int zuluvm_dma_alloc_ctx(zuluvm_info_t devp, int dma, short *ctx,
+ uint64_t *tsb);
+int zuluvm_dma_preload(zuluvm_info_t devp, int dma, int num,
+ zulud_preload_t *list);
+int zuluvm_dma_free_ctx(zuluvm_info_t devp, int dma);
+int zuluvm_add_intr(zuluvm_info_t devp, int ino, uint_t (*handler)(caddr_t),
+ caddr_t arg);
+int zuluvm_rem_intr(zuluvm_info_t devp, int ino);
+int zuluvm_enable_intr(zuluvm_info_t devp, int num);
+int zuluvm_disable_intr(zuluvm_info_t devp, int num);
+int zuluvm_park(zuluvm_info_t devp);
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __ZULUVM_INCL__ */