tlb.h (113453) | tlb.h (176994) |
---|---|
1/*- 2 * Copyright (c) 2001 Jake Burkholder. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 9 unchanged lines hidden (view full) --- 18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 * | 1/*- 2 * Copyright (c) 2001 Jake Burkholder. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 9 unchanged lines hidden (view full) --- 18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 * |
26 * $FreeBSD: head/sys/sparc64/include/tlb.h 113453 2003-04-13 21:54:58Z jake $ | 26 * $FreeBSD: head/sys/sparc64/include/tlb.h 176994 2008-03-09 15:53:34Z marius $ |
27 */ 28 29#ifndef _MACHINE_TLB_H_ 30#define _MACHINE_TLB_H_ 31 32#define TLB_DIRECT_ADDRESS_BITS (43) 33#define TLB_DIRECT_PAGE_BITS (PAGE_SHIFT_4M) 34 --- 19 unchanged lines hidden (view full) --- 54#define TLB_DEMAP_ID_SHIFT (4) 55#define TLB_DEMAP_ID_PRIMARY (0) 56#define TLB_DEMAP_ID_SECONDARY (1) 57#define TLB_DEMAP_ID_NUCLEUS (2) 58 59#define TLB_DEMAP_TYPE_SHIFT (6) 60#define TLB_DEMAP_TYPE_PAGE (0) 61#define TLB_DEMAP_TYPE_CONTEXT (1) | 27 */ 28 29#ifndef _MACHINE_TLB_H_ 30#define _MACHINE_TLB_H_ 31 32#define TLB_DIRECT_ADDRESS_BITS (43) 33#define TLB_DIRECT_PAGE_BITS (PAGE_SHIFT_4M) 34 --- 19 unchanged lines hidden (view full) --- 54#define TLB_DEMAP_ID_SHIFT (4) 55#define TLB_DEMAP_ID_PRIMARY (0) 56#define TLB_DEMAP_ID_SECONDARY (1) 57#define TLB_DEMAP_ID_NUCLEUS (2) 58 59#define TLB_DEMAP_TYPE_SHIFT (6) 60#define TLB_DEMAP_TYPE_PAGE (0) 61#define TLB_DEMAP_TYPE_CONTEXT (1) |
62/* US-III and greater only */ 63#define TLB_DEMAP_TYPE_ALL (2) |
|
62 63#define TLB_DEMAP_VA(va) ((va) & ~PAGE_MASK) 64#define TLB_DEMAP_ID(id) ((id) << TLB_DEMAP_ID_SHIFT) 65#define TLB_DEMAP_TYPE(type) ((type) << TLB_DEMAP_TYPE_SHIFT) 66 67#define TLB_DEMAP_PAGE (TLB_DEMAP_TYPE(TLB_DEMAP_TYPE_PAGE)) 68#define TLB_DEMAP_CONTEXT (TLB_DEMAP_TYPE(TLB_DEMAP_TYPE_CONTEXT)) | 64 65#define TLB_DEMAP_VA(va) ((va) & ~PAGE_MASK) 66#define TLB_DEMAP_ID(id) ((id) << TLB_DEMAP_ID_SHIFT) 67#define TLB_DEMAP_TYPE(type) ((type) << TLB_DEMAP_TYPE_SHIFT) 68 69#define TLB_DEMAP_PAGE (TLB_DEMAP_TYPE(TLB_DEMAP_TYPE_PAGE)) 70#define TLB_DEMAP_CONTEXT (TLB_DEMAP_TYPE(TLB_DEMAP_TYPE_CONTEXT)) |
71#define TLB_DEMAP_ALL (TLB_DEMAP_TYPE(TLB_DEMAP_TYPE_ALL)) |
|
69 70#define TLB_DEMAP_PRIMARY (TLB_DEMAP_ID(TLB_DEMAP_ID_PRIMARY)) 71#define TLB_DEMAP_SECONDARY (TLB_DEMAP_ID(TLB_DEMAP_ID_SECONDARY)) 72#define TLB_DEMAP_NUCLEUS (TLB_DEMAP_ID(TLB_DEMAP_ID_NUCLEUS)) 73 74#define TLB_CTX_KERNEL (0) 75#define TLB_CTX_USER_MIN (1) 76#define TLB_CTX_USER_MAX (8192) --- 11 unchanged lines hidden (view full) --- 88#define MMU_SFSR_FT_SIZE (6) 89#define MMU_SFSR_CT_SIZE (2) 90 91#define MMU_SFSR_GET_ASI(sfsr) \ 92 (((sfsr) >> MMU_SFSR_ASI_SHIFT) & ((1UL << MMU_SFSR_ASI_SIZE) - 1)) 93#define MMU_SFSR_W (1UL << MMU_SFSR_W_SHIFT) 94#define MMU_SFSR_FV (1UL << MMU_SFSR_FV_SHIFT) 95 | 72 73#define TLB_DEMAP_PRIMARY (TLB_DEMAP_ID(TLB_DEMAP_ID_PRIMARY)) 74#define TLB_DEMAP_SECONDARY (TLB_DEMAP_ID(TLB_DEMAP_ID_SECONDARY)) 75#define TLB_DEMAP_NUCLEUS (TLB_DEMAP_ID(TLB_DEMAP_ID_NUCLEUS)) 76 77#define TLB_CTX_KERNEL (0) 78#define TLB_CTX_USER_MIN (1) 79#define TLB_CTX_USER_MAX (8192) --- 11 unchanged lines hidden (view full) --- 91#define MMU_SFSR_FT_SIZE (6) 92#define MMU_SFSR_CT_SIZE (2) 93 94#define MMU_SFSR_GET_ASI(sfsr) \ 95 (((sfsr) >> MMU_SFSR_ASI_SHIFT) & ((1UL << MMU_SFSR_ASI_SIZE) - 1)) 96#define MMU_SFSR_W (1UL << MMU_SFSR_W_SHIFT) 97#define MMU_SFSR_FV (1UL << MMU_SFSR_FV_SHIFT) 98 |
99typedef void tlb_flush_nonlocked_t(void); |
|
96typedef void tlb_flush_user_t(void); 97 98struct pmap; 99struct tlb_entry; 100 101extern int kernel_tlb_slots; 102extern struct tlb_entry *kernel_tlbs; 103 104void tlb_context_demap(struct pmap *pm); 105void tlb_page_demap(struct pmap *pm, vm_offset_t va); 106void tlb_range_demap(struct pmap *pm, vm_offset_t start, vm_offset_t end); 107 | 100typedef void tlb_flush_user_t(void); 101 102struct pmap; 103struct tlb_entry; 104 105extern int kernel_tlb_slots; 106extern struct tlb_entry *kernel_tlbs; 107 108void tlb_context_demap(struct pmap *pm); 109void tlb_page_demap(struct pmap *pm, vm_offset_t va); 110void tlb_range_demap(struct pmap *pm, vm_offset_t start, vm_offset_t end); 111 |
112tlb_flush_nonlocked_t cheetah_tlb_flush_nonlocked; |
|
108tlb_flush_user_t cheetah_tlb_flush_user; | 113tlb_flush_user_t cheetah_tlb_flush_user; |
114 115tlb_flush_nonlocked_t spitfire_tlb_flush_nonlocked; |
|
109tlb_flush_user_t spitfire_tlb_flush_user; 110 | 116tlb_flush_user_t spitfire_tlb_flush_user; 117 |
118extern tlb_flush_nonlocked_t *tlb_flush_nonlocked; |
|
111extern tlb_flush_user_t *tlb_flush_user; 112 113#endif /* !_MACHINE_TLB_H_ */ | 119extern tlb_flush_user_t *tlb_flush_user; 120 121#endif /* !_MACHINE_TLB_H_ */ |