param.h revision 191309
1279799Snwhitehorn/*-
2279799Snwhitehorn * Copyright (c) 1990 The Regents of the University of California.
3279799Snwhitehorn * All rights reserved.
4279799Snwhitehorn *
5279799Snwhitehorn * This code is derived from software contributed to Berkeley by
6279799Snwhitehorn * William Jolitz.
7279799Snwhitehorn *
8279799Snwhitehorn * Redistribution and use in source and binary forms, with or without
9279799Snwhitehorn * modification, are permitted provided that the following conditions
10279799Snwhitehorn * are met:
11279799Snwhitehorn * 1. Redistributions of source code must retain the above copyright
12279799Snwhitehorn *    notice, this list of conditions and the following disclaimer.
13279799Snwhitehorn * 2. Redistributions in binary form must reproduce the above copyright
14279799Snwhitehorn *    notice, this list of conditions and the following disclaimer in the
15279799Snwhitehorn *    documentation and/or other materials provided with the distribution.
16279799Snwhitehorn *
17279799Snwhitehorn * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
18279799Snwhitehorn * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19279799Snwhitehorn * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20279799Snwhitehorn * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
21279799Snwhitehorn * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22279799Snwhitehorn * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23279799Snwhitehorn * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24279799Snwhitehorn * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25279799Snwhitehorn * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26279799Snwhitehorn * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27279799Snwhitehorn * SUCH DAMAGE.
28279799Snwhitehorn *
29279799Snwhitehorn *	from: @(#)param.h	5.8 (Berkeley) 6/28/91
30279799Snwhitehorn * $FreeBSD: head/sys/sparc64/include/param.h 191309 2009-04-20 12:59:23Z rwatson $
31279799Snwhitehorn */
32279799Snwhitehorn
33279799Snwhitehorn/*
34279799Snwhitehorn * Machine dependent constants for sparc64.
35279799Snwhitehorn */
36302312Snwhitehorn
37302312Snwhitehorn/*
38279799Snwhitehorn * Round p (pointer or byte index) up to a correctly-aligned value
39279799Snwhitehorn * for all data types (int, long, ...).   The result is unsigned int
40279799Snwhitehorn * and must be cast to any desired pointer type.
41302312Snwhitehorn */
42279799Snwhitehorn#ifndef _ALIGNBYTES
43279799Snwhitehorn#define _ALIGNBYTES	0xf
44279799Snwhitehorn#endif
45279799Snwhitehorn#ifndef _ALIGN
46279799Snwhitehorn#define _ALIGN(p)	(((u_long)(p) + _ALIGNBYTES) & ~_ALIGNBYTES)
47302312Snwhitehorn#endif
48302312Snwhitehorn
49279799Snwhitehorn#ifndef _NO_NAMESPACE_POLLUTION
50302312Snwhitehorn
51279799Snwhitehorn#ifndef _MACHINE_PARAM_H_
52279799Snwhitehorn#define	_MACHINE_PARAM_H_
53279799Snwhitehorn
54279799Snwhitehorn#ifndef MACHINE
55302312Snwhitehorn#define MACHINE		"sparc64"
56302312Snwhitehorn#endif
57302312Snwhitehorn#ifndef MACHINE_ARCH
58302312Snwhitehorn#define	MACHINE_ARCH	"sparc64"
59302312Snwhitehorn#endif
60302312Snwhitehorn#define MID_MACHINE	MID_SPARC64
61302312Snwhitehorn
62279799Snwhitehorn#if defined(SMP) || defined(KLD_MODULE)
63302312Snwhitehorn#define MAXCPU		16
64302312Snwhitehorn#else
65302312Snwhitehorn#define MAXCPU		1
66302312Snwhitehorn#endif /* SMP || KLD_MODULE */
67279799Snwhitehorn
68279799Snwhitehorn#define	INT_SHIFT	2
69279799Snwhitehorn#define	PTR_SHIFT	3
70279799Snwhitehorn
71279799Snwhitehorn#define ALIGNBYTES	_ALIGNBYTES
72279799Snwhitehorn#define ALIGN(p)	_ALIGN(p)
73279799Snwhitehorn
74279799Snwhitehorn/*
75279799Snwhitehorn * CACHE_LINE_SIZE is the compile-time maximum cache line size for an
76279799Snwhitehorn * architecture.  It should be used with appropriate caution.
77279799Snwhitehorn */
78279799Snwhitehorn#define	CACHE_LINE_SHIFT	7
79279799Snwhitehorn#define	CACHE_LINE_SIZE		(1 << CACHE_LINE_SHIFT)
80302312Snwhitehorn
81279799Snwhitehorn#define	PAGE_SHIFT_8K	13
82279799Snwhitehorn#define	PAGE_SIZE_8K	(1L<<PAGE_SHIFT_8K)
83279799Snwhitehorn#define	PAGE_MASK_8K	(PAGE_SIZE_8K-1)
84279799Snwhitehorn
85279799Snwhitehorn#define	PAGE_SHIFT_64K	16
86279799Snwhitehorn#define	PAGE_SIZE_64K	(1L<<PAGE_SHIFT_64K)
87279799Snwhitehorn#define	PAGE_MASK_64K	(PAGE_SIZE_64K-1)
88279799Snwhitehorn
89279799Snwhitehorn#define	PAGE_SHIFT_512K	19
90279799Snwhitehorn#define	PAGE_SIZE_512K	(1L<<PAGE_SHIFT_512K)
91279799Snwhitehorn#define	PAGE_MASK_512K	(PAGE_SIZE_512K-1)
92302312Snwhitehorn
93279799Snwhitehorn#define	PAGE_SHIFT_4M	22
94279799Snwhitehorn#define	PAGE_SIZE_4M	(1L<<PAGE_SHIFT_4M)
95279799Snwhitehorn#define	PAGE_MASK_4M	(PAGE_SIZE_4M-1)
96279799Snwhitehorn
97279799Snwhitehorn#define	PAGE_SHIFT_32M	25
98279799Snwhitehorn#define	PAGE_SIZE_32M	(1L<<PAGE_SHIFT_32M)
99279799Snwhitehorn#define	PAGE_MASK_32M	(PAGE_SIZE_32M-1)
100279799Snwhitehorn
101279799Snwhitehorn#define	PAGE_SHIFT_256M	28
102279799Snwhitehorn#define	PAGE_SIZE_256M	(1L<<PAGE_SHIFT_256M)
103279799Snwhitehorn#define	PAGE_MASK_256M	(PAGE_SIZE_256M-1)
104279799Snwhitehorn
105279799Snwhitehorn#define PAGE_SHIFT_MIN	PAGE_SHIFT_8K
106279799Snwhitehorn#define PAGE_SIZE_MIN	PAGE_SIZE_8K
107279799Snwhitehorn#define PAGE_MASK_MIN	PAGE_MASK_8K
108279799Snwhitehorn#define PAGE_SHIFT	PAGE_SHIFT_8K	/* LOG2(PAGE_SIZE) */
109279799Snwhitehorn#define PAGE_SIZE	PAGE_SIZE_8K	/* bytes/page */
110279799Snwhitehorn#define PAGE_MASK	PAGE_MASK_8K
111279799Snwhitehorn#define PAGE_SHIFT_MAX	PAGE_SHIFT_4M
112279799Snwhitehorn#define PAGE_SIZE_MAX	PAGE_SIZE_4M
113279799Snwhitehorn#define PAGE_MASK_MAX	PAGE_MASK_4M
114279799Snwhitehorn
115279799Snwhitehorn#ifndef KSTACK_PAGES
116279799Snwhitehorn#define KSTACK_PAGES		4	/* pages of kernel stack (with pcb) */
117279799Snwhitehorn#endif
118279799Snwhitehorn#define KSTACK_GUARD_PAGES	1	/* pages of kstack guard; 0 disables */
119279799Snwhitehorn#define PCPU_PAGES		1
120279799Snwhitehorn
121279799Snwhitehorn/*
122279799Snwhitehorn * Ceiling on size of buffer cache (really only effects write queueing,
123279799Snwhitehorn * the VM page cache is not effected), can be changed via
124279799Snwhitehorn * the kern.maxbcache /boot/loader.conf variable.
125279799Snwhitehorn */
126279799Snwhitehorn#ifndef VM_BCACHE_SIZE_MAX
127279799Snwhitehorn#define VM_BCACHE_SIZE_MAX      (400 * 1024 * 1024)
128279799Snwhitehorn#endif
129279799Snwhitehorn
130279799Snwhitehorn/*
131279799Snwhitehorn * Mach derived conversion macros
132279799Snwhitehorn */
133279799Snwhitehorn#define round_page(x)		(((unsigned long)(x) + PAGE_MASK) & ~PAGE_MASK)
134279799Snwhitehorn#define trunc_page(x)		((unsigned long)(x) & ~PAGE_MASK)
135279799Snwhitehorn
136279799Snwhitehorn#define atop(x)			((unsigned long)(x) >> PAGE_SHIFT)
137279799Snwhitehorn#define ptoa(x)			((unsigned long)(x) << PAGE_SHIFT)
138279799Snwhitehorn
139302312Snwhitehorn#define sparc64_btop(x)		((unsigned long)(x) >> PAGE_SHIFT)
140302312Snwhitehorn#define sparc64_ptob(x)		((unsigned long)(x) << PAGE_SHIFT)
141302312Snwhitehorn
142279799Snwhitehorn#define	pgtok(x)		((unsigned long)(x) * (PAGE_SIZE / 1024))
143279799Snwhitehorn
144279799Snwhitehorn#endif /* !_MACHINE_PARAM_H_ */
145279799Snwhitehorn#endif /* !_NO_NAMESPACE_POLLUTION */
146279799Snwhitehorn