summaryrefslogtreecommitdiff
path: root/sys/arch/hppa/include/pte.h
blob: ad7810589d6dd654d19cb642ec0eee0534e698c1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/*	$OpenBSD: pte.h,v 1.3 1998/11/23 03:28:23 mickey Exp $	*/

/*
 * Copyright 1996 1995 by Open Software Foundation, Inc.   
 *              All Rights Reserved 
 *  
 * Permission to use, copy, modify, and distribute this software and 
 * its documentation for any purpose and without fee is hereby granted, 
 * provided that the above copyright notice appears in all copies and 
 * that both the copyright notice and this permission notice appear in 
 * supporting documentation. 
 *  
 * OSF DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE 
 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
 * FOR A PARTICULAR PURPOSE. 
 *  
 * IN NO EVENT SHALL OSF BE LIABLE FOR ANY SPECIAL, INDIRECT, OR 
 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 
 * LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT, 
 * NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION 
 * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 
 */
/*
 * pmk1.1
 */

#ifndef	_MACHINE_PTE_H_
#define	_MACHINE_PTE_H_


/* TLB access/protection values */
#define TLB_REF		0x80000000	/* software only */
#define	TLB_ALIGNED	0x40000000	/* software only */
#define TLB_TRAP	0x20000000
#define TLB_DIRTY	0x10000000
#define TLB_BREAK	0x08000000
#define TLB_AR_MASK	0x07f00000
#define		TLB_AR_NA	0x07300000
#define		TLB_AR_KR	0x00000000
#define		TLB_AR_KRW	0x01000000
#define		TLB_AR_KRX	0x02000000
#define		TLB_AR_KRWX	0x03000000
#define		TLB_AR_UR	0x00f00000
#define		TLB_AR_URW	0x01f00000
#define		TLB_AR_URX	0x02f00000
#define		TLB_AR_URWX	0x03f00000
#define TLB_UNCACHEABLE	0x00080000
#define TLB_ICACHE	0x00040000	/* software only */
#define TLB_NOTUSED	0x00020000      /* software only */
#define TLB_DCACHE	0x00010000      /* software only */
#define TLB_PID_MASK	0x0000fffe
#define TLB_WIRED	0x00000001	/* software only */

#define TLB_REF_POS	0
#define TLB_ALIGNED_POS	1
#define TLB_TRAP_POS	2
#define TLB_DIRTY_POS	3
#define TLB_BREAK_POS	4
#define TLB_ITLB_POS    12
#define TLB_ICACHE_POS  13
#define TLB_DTLB_POS    14
#define TLB_DCACHE_POS  15
#define TLB_WIRED_POS	31

/* protection for a gateway page */
#define TLB_GATE_PROT	0x04c00000

/* protection for break page */
#define TLB_BREAK_PROT	0x02c00000

#if defined(TLB_STATS) && !defined(_LOCORE)
struct dtlb_stats {
	u_int	dtlb_misses;
	u_int	dtlb_io;
	u_int	dtlb_misstime;
	u_int	dtlb_missflts;
	u_int	dtlb_missinsns;
	u_int	dtlb_cached;
	u_int	dtlb_tmp[2];
};

struct itlb_stats {
	u_int	itlb_misses;
	u_int	itlb_gateway;
	u_int	itlb_misstime;
	u_int	itlb_missflts;
	u_int	itlb_missinsns;
	u_int	itlb_cached;
	u_int	itlb_dummy[2];
};

struct	tlbd_stats {
	u_int	tlbd_dirty;
	u_int	tlbd_flushes;
	u_int	tlbd_misstime;
	u_int	tlbd_missflts;
	u_int	tlbd_missinsns;
	u_int	tlbd_dummy[3];
};

#ifdef _KERNEL
extern struct dtlb_stats dtlb_stats;
extern struct itlb_stats dtlb_stats;
extern struct tlbd_stats dtlb_stats;
#endif /* _KERNEL */

#endif	/* TLB_STATS && !_LOCORE */

#endif /* _MACHINE_PTE_H_ */