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