aboutsummaryrefslogtreecommitdiff
path: root/sys/sparc64/include/tsb.h
diff options
context:
space:
mode:
authorMarius Strobl <marius@FreeBSD.org>2007-01-19 11:15:34 +0000
committerMarius Strobl <marius@FreeBSD.org>2007-01-19 11:15:34 +0000
commit0ca3609e30f74cad1a9787c7afaa84aca4e8aa1f (patch)
tree2081798bc33b8d901626e55700e1b4e8b3beb0dd /sys/sparc64/include/tsb.h
parent7e2ff8bbff073b8f2d10ad9d4f1929e66f16395d (diff)
downloadsrc-0ca3609e30f74cad1a9787c7afaa84aca4e8aa1f.tar.gz
src-0ca3609e30f74cad1a9787c7afaa84aca4e8aa1f.zip
Convert the remainder of the low hanging fruits regarding including
headers in .S directly rather than getting to their macros through genassym.c/assym.s so there are less headers genassym.c has to be kept in sync with. While at it fix some stytle(9) bugs (indentation, prototype format, sort headers, etc) and remove trailing whitespace.
Notes
Notes: svn path=/head/; revision=166105
Diffstat (limited to 'sys/sparc64/include/tsb.h')
-rw-r--r--sys/sparc64/include/tsb.h19
1 files changed, 14 insertions, 5 deletions
diff --git a/sys/sparc64/include/tsb.h b/sys/sparc64/include/tsb.h
index fa1feffc82fa..1fd1e8f758b4 100644
--- a/sys/sparc64/include/tsb.h
+++ b/sys/sparc64/include/tsb.h
@@ -35,14 +35,17 @@
#define TSB_PAGES_SHIFT (4)
#define TSB_PAGES (1 << TSB_PAGES_SHIFT)
#define TSB_BSHIFT (TSB_PAGES_SHIFT + PAGE_SHIFT)
-#define TSB_BSIZE (1UL << TSB_BSHIFT)
-#define TSB_SIZE (TSB_BSIZE / sizeof(struct tte))
+#define TSB_BSIZE (1 << TSB_BSHIFT)
#define TSB_BUCKET_SHIFT (2)
#define TSB_BUCKET_SIZE (1 << TSB_BUCKET_SHIFT)
#define TSB_BUCKET_ADDRESS_BITS \
(TSB_BSHIFT - TSB_BUCKET_SHIFT - TTE_SHIFT)
#define TSB_BUCKET_MASK ((1 << TSB_BUCKET_ADDRESS_BITS) - 1)
+#ifndef LOCORE
+
+#define TSB_SIZE (TSB_BSIZE / sizeof(struct tte))
+
extern struct tte *tsb_kernel;
extern vm_size_t tsb_kernel_mask;
extern vm_size_t tsb_kernel_size;
@@ -51,36 +54,42 @@ extern vm_paddr_t tsb_kernel_phys;
static __inline struct tte *
tsb_vpntobucket(pmap_t pm, vm_offset_t vpn)
{
+
return (&pm->pm_tsb[(vpn & TSB_BUCKET_MASK) << TSB_BUCKET_SHIFT]);
}
static __inline struct tte *
tsb_vtobucket(pmap_t pm, u_long sz, vm_offset_t va)
{
+
return (tsb_vpntobucket(pm, va >> TTE_PAGE_SHIFT(sz)));
}
static __inline struct tte *
tsb_kvpntotte(vm_offset_t vpn)
{
+
return (&tsb_kernel[vpn & tsb_kernel_mask]);
}
static __inline struct tte *
tsb_kvtotte(vm_offset_t va)
{
+
return (tsb_kvpntotte(va >> PAGE_SHIFT));
}
typedef int (tsb_callback_t)(struct pmap *, struct pmap *, struct tte *,
- vm_offset_t);
+ vm_offset_t);
struct tte *tsb_tte_lookup(pmap_t pm, vm_offset_t va);
void tsb_tte_remove(struct tte *stp);
struct tte *tsb_tte_enter(pmap_t pm, vm_page_t m, vm_offset_t va, u_long sz,
- u_long data);
+ u_long data);
void tsb_tte_local_remove(struct tte *tp);
void tsb_foreach(pmap_t pm1, pmap_t pm2, vm_offset_t start, vm_offset_t end,
- tsb_callback_t *callback);
+ tsb_callback_t *callback);
+
+#endif /* !LOCORE */
#endif /* !_MACHINE_TSB_H_ */