pmap.h revision 1.4 1 1.1 glass #ifndef _PMAP_MACHINE_
2 1.1 glass #define _PMAP_MACHINE_
3 1.1 glass
4 1.1 glass /*
5 1.1 glass * Pmap stuff
6 1.1 glass * [some ideas borrowed from torek, but no code]
7 1.1 glass */
8 1.1 glass
9 1.1 glass struct context_state {
10 1.1 glass queue_chain_t context_link;
11 1.1 glass int context_num;
12 1.2 glass struct pmap *context_upmap;
13 1.1 glass };
14 1.2 glass
15 1.2 glass typedef struct context_state *context_t;
16 1.1 glass
17 1.1 glass struct pmap {
18 1.1 glass int pm_refcount; /* pmap reference count */
19 1.1 glass simple_lock_data_t pm_lock; /* lock on pmap */
20 1.1 glass struct pmap_statistics pm_stats; /* pmap statistics */
21 1.1 glass context_t pm_context; /* context if any */
22 1.1 glass int pm_version;
23 1.1 glass unsigned char *pm_segmap;
24 1.1 glass };
25 1.1 glass
26 1.1 glass typedef struct pmap *pmap_t;
27 1.1 glass
28 1.1 glass extern pmap_t kernel_pmap;
29 1.1 glass
30 1.1 glass struct pmeg_state {
31 1.1 glass queue_chain_t pmeg_link;
32 1.1 glass int pmeg_index;
33 1.1 glass pmap_t pmeg_owner;
34 1.1 glass int pmeg_owner_version;
35 1.1 glass vm_offset_t pmeg_va;
36 1.1 glass int pmeg_wired_count;
37 1.1 glass int pmeg_reserved;
38 1.1 glass int pmeg_vpages;
39 1.1 glass };
40 1.1 glass
41 1.1 glass typedef struct pmeg_state *pmeg_t;
42 1.1 glass
43 1.1 glass #define PMAP_ACTIVATE(pmap, pcbp, iscurproc) \
44 1.4 glass pmap_activate(pmap, pcbp)
45 1.1 glass #define PMAP_DEACTIVATE(pmap, pcbp) \
46 1.1 glass pmap_deactivate(pmap, pcbp)
47 1.1 glass
48 1.1 glass #define pmap_kernel() (kernel_pmap)
49 1.1 glass
50 1.1 glass /* like the sparc port, use the lower bits of a pa which must be page
51 1.1 glass * aligned anyway to pass memtype, caching information.
52 1.1 glass */
53 1.1 glass #define PMAP_MMEM 0x0
54 1.1 glass #define PMAP_OBIO 0x1
55 1.1 glass #define PMAP_VME16D 0x2
56 1.1 glass #define PMAP_VME32D 0x3
57 1.1 glass #define PMAP_MEMMASK 0x3
58 1.1 glass #define PMAP_NC 0x4
59 1.1 glass #define PMAP_SPECMASK 0x7
60 1.1 glass
61 1.3 glass extern vm_offset_t virtual_avail, virtual_end;
62 1.3 glass extern vm_offset_t avail_start, avail_end;
63 1.3 glass
64 1.1 glass #endif _PMAP_MACHINE_
65