xref: /onnv-gate/usr/src/uts/sun4u/sys/zuluvm.h (revision 0:68f95e015346)
1*0Sstevel@tonic-gate /*
2*0Sstevel@tonic-gate  * CDDL HEADER START
3*0Sstevel@tonic-gate  *
4*0Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5*0Sstevel@tonic-gate  * Common Development and Distribution License, Version 1.0 only
6*0Sstevel@tonic-gate  * (the "License").  You may not use this file except in compliance
7*0Sstevel@tonic-gate  * with the License.
8*0Sstevel@tonic-gate  *
9*0Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*0Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
11*0Sstevel@tonic-gate  * See the License for the specific language governing permissions
12*0Sstevel@tonic-gate  * and limitations under the License.
13*0Sstevel@tonic-gate  *
14*0Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
15*0Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*0Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
17*0Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
18*0Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
19*0Sstevel@tonic-gate  *
20*0Sstevel@tonic-gate  * CDDL HEADER END
21*0Sstevel@tonic-gate  */
22*0Sstevel@tonic-gate /*
23*0Sstevel@tonic-gate  * Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
24*0Sstevel@tonic-gate  * Use is subject to license terms.
25*0Sstevel@tonic-gate  */
26*0Sstevel@tonic-gate 
27*0Sstevel@tonic-gate #ifndef	__ZULUVM_INCL__
28*0Sstevel@tonic-gate #define	__ZULUVM_INCL__
29*0Sstevel@tonic-gate 
30*0Sstevel@tonic-gate #pragma ident	"%Z%%M%	%I%	%E% SMI"
31*0Sstevel@tonic-gate 
32*0Sstevel@tonic-gate #ifdef	__cplusplus
33*0Sstevel@tonic-gate extern "C" {
34*0Sstevel@tonic-gate #endif
35*0Sstevel@tonic-gate 
36*0Sstevel@tonic-gate /* zulud interface */
37*0Sstevel@tonic-gate 
38*0Sstevel@tonic-gate #ifndef _ASM
39*0Sstevel@tonic-gate 
40*0Sstevel@tonic-gate #include <sys/dditypes.h>
41*0Sstevel@tonic-gate 
42*0Sstevel@tonic-gate typedef struct {
43*0Sstevel@tonic-gate 	caddr_t	addr;
44*0Sstevel@tonic-gate 	size_t  len;
45*0Sstevel@tonic-gate 	int	tlbtype;
46*0Sstevel@tonic-gate } zulud_preload_t;
47*0Sstevel@tonic-gate 
48*0Sstevel@tonic-gate typedef struct {
49*0Sstevel@tonic-gate 	int version;
50*0Sstevel@tonic-gate 	int (*set_itlb_pc)(void *handle, uint64_t mondo);
51*0Sstevel@tonic-gate 	int (*set_dtlb_pc)(void *handle, uint64_t mondo);
52*0Sstevel@tonic-gate 	int (*set_suspendAck_pc)(void *handle, uint64_t mondo);
53*0Sstevel@tonic-gate 	int (*write_tte)(void *handle, int ttesize, uint64_t tag,
54*0Sstevel@tonic-gate 	    pfn_t pfn, int permission, int tlbtype);
55*0Sstevel@tonic-gate 	int (*tlb_done)(void *handle, int tlbtype, int status);
56*0Sstevel@tonic-gate 	int (*demap_page)(void *handle, caddr_t vaddr, short ctx);
57*0Sstevel@tonic-gate 	int (*demap_ctx)(void *handle, short ctx);
58*0Sstevel@tonic-gate 	int (*dma_suspend_ack)(void *handle);
59*0Sstevel@tonic-gate 	int (*set_tsb)(void *handle, int tlbtype, uint64_t tsbreg);
60*0Sstevel@tonic-gate } zulud_ops_t;
61*0Sstevel@tonic-gate 
62*0Sstevel@tonic-gate #endif
63*0Sstevel@tonic-gate 
64*0Sstevel@tonic-gate #define	ZULUVM_SUCCESS		0
65*0Sstevel@tonic-gate #define	ZULUVM_ERROR		1
66*0Sstevel@tonic-gate #define	ZULUVM_NO_TTE		2
67*0Sstevel@tonic-gate #define	ZULUVM_INVALID_MISS	3
68*0Sstevel@tonic-gate #define	ZULUVM_NO_DEV		4
69*0Sstevel@tonic-gate #define	ZULUVM_NO_HAT		5
70*0Sstevel@tonic-gate #define	ZULUVM_NO_MAP		6
71*0Sstevel@tonic-gate #define	ZULUVM_VERSION_MISMATCH	7
72*0Sstevel@tonic-gate #define	ZULUVM_TTE_DELAY	8
73*0Sstevel@tonic-gate #define	ZULUVM_MISS_CANCELED	9
74*0Sstevel@tonic-gate #define	ZULUVM_BAD_IDX		10
75*0Sstevel@tonic-gate #define	ZULUVM_WATCH_POINT	11
76*0Sstevel@tonic-gate #define	ZULUVM_NO_SUPPORT	12
77*0Sstevel@tonic-gate #define	ZULUVM_CTX_LOCKED	13
78*0Sstevel@tonic-gate 
79*0Sstevel@tonic-gate #define	ZULUVM_ITLB_FLAG	0x1
80*0Sstevel@tonic-gate #define	ZULUVM_DMA_FLAG		0x2
81*0Sstevel@tonic-gate #define	ZULUVM_DMA_MASK		0x3
82*0Sstevel@tonic-gate 
83*0Sstevel@tonic-gate #define	ZULUVM_DMA1	0
84*0Sstevel@tonic-gate #define	ZULUVM_DMA2	ZULUVM_DMA_FLAG
85*0Sstevel@tonic-gate #define	ZULUVM_ITLB1	ZULUVM_ITLB_FLAG
86*0Sstevel@tonic-gate #define	ZULUVM_ITLB2	(ZULUVM_ITLB_FLAG | ZULUVM_DMA_FLAG)
87*0Sstevel@tonic-gate #define	ZULUVM_INVAL	0x4
88*0Sstevel@tonic-gate 
89*0Sstevel@tonic-gate #ifndef _ASM
90*0Sstevel@tonic-gate 
91*0Sstevel@tonic-gate /* zuluvm interface */
92*0Sstevel@tonic-gate 
93*0Sstevel@tonic-gate #define	ZULUVM_INTERFACE_VERSION	1 /* inc with every intf change */
94*0Sstevel@tonic-gate 
95*0Sstevel@tonic-gate typedef void * zuluvm_info_t;
96*0Sstevel@tonic-gate int zuluvm_init(zulud_ops_t *ops, int **pagesizes);
97*0Sstevel@tonic-gate int zuluvm_fini(void);
98*0Sstevel@tonic-gate int zuluvm_alloc_device(dev_info_t *devi, void *arg, zuluvm_info_t *devp,
99*0Sstevel@tonic-gate     caddr_t mmu, caddr_t imr);
100*0Sstevel@tonic-gate int zuluvm_free_device(zuluvm_info_t devp);
101*0Sstevel@tonic-gate int zuluvm_dma_add_proc(zuluvm_info_t devp, uint64_t *cookie);
102*0Sstevel@tonic-gate int zuluvm_dma_delete_proc(zuluvm_info_t devp, uint64_t cookie);
103*0Sstevel@tonic-gate int zuluvm_dma_alloc_ctx(zuluvm_info_t devp, int dma, short *ctx,
104*0Sstevel@tonic-gate     uint64_t *tsb);
105*0Sstevel@tonic-gate int zuluvm_dma_preload(zuluvm_info_t devp, int dma, int num,
106*0Sstevel@tonic-gate     zulud_preload_t *list);
107*0Sstevel@tonic-gate int zuluvm_dma_free_ctx(zuluvm_info_t devp, int dma);
108*0Sstevel@tonic-gate int zuluvm_add_intr(zuluvm_info_t devp, int ino, uint_t (*handler)(caddr_t),
109*0Sstevel@tonic-gate     caddr_t arg);
110*0Sstevel@tonic-gate int zuluvm_rem_intr(zuluvm_info_t devp, int ino);
111*0Sstevel@tonic-gate int zuluvm_enable_intr(zuluvm_info_t devp, int num);
112*0Sstevel@tonic-gate int zuluvm_disable_intr(zuluvm_info_t devp, int num);
113*0Sstevel@tonic-gate int zuluvm_park(zuluvm_info_t devp);
114*0Sstevel@tonic-gate 
115*0Sstevel@tonic-gate #endif
116*0Sstevel@tonic-gate 
117*0Sstevel@tonic-gate #ifdef	__cplusplus
118*0Sstevel@tonic-gate }
119*0Sstevel@tonic-gate #endif
120*0Sstevel@tonic-gate 
121*0Sstevel@tonic-gate #endif	/* __ZULUVM_INCL__ */
122