param.h revision 191276
1204591Sluigi/*-
2204591Sluigi * Copyright (c) 1990 The Regents of the University of California.
3204591Sluigi * All rights reserved.
4204591Sluigi *
5204591Sluigi * This code is derived from software contributed to Berkeley by
6204591Sluigi * William Jolitz.
7204591Sluigi *
8204591Sluigi * Redistribution and use in source and binary forms, with or without
9204591Sluigi * modification, are permitted provided that the following conditions
10204591Sluigi * are met:
11204591Sluigi * 1. Redistributions of source code must retain the above copyright
12204591Sluigi *    notice, this list of conditions and the following disclaimer.
13204591Sluigi * 2. Redistributions in binary form must reproduce the above copyright
14204591Sluigi *    notice, this list of conditions and the following disclaimer in the
15204591Sluigi *    documentation and/or other materials provided with the distribution.
16204591Sluigi *
17204591Sluigi * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
18204591Sluigi * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19204591Sluigi * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20204591Sluigi * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
21204591Sluigi * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22204591Sluigi * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23204591Sluigi * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24204591Sluigi * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25204591Sluigi * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26204591Sluigi * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27204591Sluigi * SUCH DAMAGE.
28204591Sluigi *
29204591Sluigi *	from: @(#)param.h	5.8 (Berkeley) 6/28/91
30204591Sluigi * $FreeBSD: head/sys/sparc64/include/param.h 191276 2009-04-19 20:19:13Z rwatson $
31204591Sluigi */
32204591Sluigi
33204591Sluigi/*
34204591Sluigi * Machine dependent constants for sparc64.
35204591Sluigi */
36204591Sluigi
37204591Sluigi/*
38204591Sluigi * Round p (pointer or byte index) up to a correctly-aligned value
39204591Sluigi * for all data types (int, long, ...).   The result is unsigned int
40240494Sglebius * and must be cast to any desired pointer type.
41204591Sluigi */
42204591Sluigi#ifndef _ALIGNBYTES
43204591Sluigi#define _ALIGNBYTES	0xf
44204591Sluigi#endif
45204591Sluigi#ifndef _ALIGN
46204591Sluigi#define _ALIGN(p)	(((u_long)(p) + _ALIGNBYTES) & ~_ALIGNBYTES)
47204591Sluigi#endif
48204591Sluigi
49204591Sluigi#ifndef _NO_NAMESPACE_POLLUTION
50204591Sluigi
51204591Sluigi#ifndef _MACHINE_PARAM_H_
52204591Sluigi#define	_MACHINE_PARAM_H_
53204591Sluigi
54204591Sluigi#ifndef MACHINE
55204591Sluigi#define MACHINE		"sparc64"
56204591Sluigi#endif
57204591Sluigi#ifndef MACHINE_ARCH
58204591Sluigi#define	MACHINE_ARCH	"sparc64"
59204591Sluigi#endif
60204591Sluigi#define MID_MACHINE	MID_SPARC64
61204591Sluigi
62227293Sed#if defined(SMP) || defined(KLD_MODULE)
63204591Sluigi#define MAXCPU		16
64204591Sluigi#else
65204591Sluigi#define MAXCPU		1
66204591Sluigi#endif /* SMP || KLD_MODULE */
67204591Sluigi
68204591Sluigi#define	INT_SHIFT	2
69204591Sluigi#define	PTR_SHIFT	3
70204591Sluigi
71204591Sluigi#define ALIGNBYTES	_ALIGNBYTES
72204591Sluigi#define ALIGN(p)	_ALIGN(p)
73204591Sluigi
74204591Sluigi#ifndef CACHE_LINE_SHIFT
75204591Sluigi#define	CACHE_LINE_SHIFT	6
76204591Sluigi#endif
77204591Sluigi#define	CACHE_LINE_SIZE		(1 << CACHE_LINE_SHIFT)
78204591Sluigi
79204591Sluigi#define	PAGE_SHIFT_8K	13
80204591Sluigi#define	PAGE_SIZE_8K	(1L<<PAGE_SHIFT_8K)
81204591Sluigi#define	PAGE_MASK_8K	(PAGE_SIZE_8K-1)
82204591Sluigi
83204591Sluigi#define	PAGE_SHIFT_64K	16
84204591Sluigi#define	PAGE_SIZE_64K	(1L<<PAGE_SHIFT_64K)
85204591Sluigi#define	PAGE_MASK_64K	(PAGE_SIZE_64K-1)
86204591Sluigi
87204591Sluigi#define	PAGE_SHIFT_512K	19
88204591Sluigi#define	PAGE_SIZE_512K	(1L<<PAGE_SHIFT_512K)
89204591Sluigi#define	PAGE_MASK_512K	(PAGE_SIZE_512K-1)
90204591Sluigi
91204591Sluigi#define	PAGE_SHIFT_4M	22
92204591Sluigi#define	PAGE_SIZE_4M	(1L<<PAGE_SHIFT_4M)
93204591Sluigi#define	PAGE_MASK_4M	(PAGE_SIZE_4M-1)
94204591Sluigi
95204591Sluigi#define	PAGE_SHIFT_32M	25
96204591Sluigi#define	PAGE_SIZE_32M	(1L<<PAGE_SHIFT_32M)
97204591Sluigi#define	PAGE_MASK_32M	(PAGE_SIZE_32M-1)
98204591Sluigi
99204591Sluigi#define	PAGE_SHIFT_256M	28
100204591Sluigi#define	PAGE_SIZE_256M	(1L<<PAGE_SHIFT_256M)
101204591Sluigi#define	PAGE_MASK_256M	(PAGE_SIZE_256M-1)
102204591Sluigi
103204591Sluigi#define PAGE_SHIFT_MIN	PAGE_SHIFT_8K
104204591Sluigi#define PAGE_SIZE_MIN	PAGE_SIZE_8K
105204591Sluigi#define PAGE_MASK_MIN	PAGE_MASK_8K
106204591Sluigi#define PAGE_SHIFT	PAGE_SHIFT_8K	/* LOG2(PAGE_SIZE) */
107204591Sluigi#define PAGE_SIZE	PAGE_SIZE_8K	/* bytes/page */
108204591Sluigi#define PAGE_MASK	PAGE_MASK_8K
109204591Sluigi#define PAGE_SHIFT_MAX	PAGE_SHIFT_4M
110204591Sluigi#define PAGE_SIZE_MAX	PAGE_SIZE_4M
111204591Sluigi#define PAGE_MASK_MAX	PAGE_MASK_4M
112204591Sluigi
113204591Sluigi#ifndef KSTACK_PAGES
114204591Sluigi#define KSTACK_PAGES		4	/* pages of kernel stack (with pcb) */
115204591Sluigi#endif
116204591Sluigi#define KSTACK_GUARD_PAGES	1	/* pages of kstack guard; 0 disables */
117204591Sluigi#define PCPU_PAGES		1
118204591Sluigi
119204591Sluigi/*
120204591Sluigi * Ceiling on size of buffer cache (really only effects write queueing,
121204591Sluigi * the VM page cache is not effected), can be changed via
122204591Sluigi * the kern.maxbcache /boot/loader.conf variable.
123204591Sluigi */
124204591Sluigi#ifndef VM_BCACHE_SIZE_MAX
125204591Sluigi#define VM_BCACHE_SIZE_MAX      (400 * 1024 * 1024)
126204591Sluigi#endif
127204591Sluigi
128204591Sluigi/*
129204591Sluigi * Mach derived conversion macros
130204591Sluigi */
131204591Sluigi#define round_page(x)		(((unsigned long)(x) + PAGE_MASK) & ~PAGE_MASK)
132204591Sluigi#define trunc_page(x)		((unsigned long)(x) & ~PAGE_MASK)
133204591Sluigi
134204591Sluigi#define atop(x)			((unsigned long)(x) >> PAGE_SHIFT)
135204591Sluigi#define ptoa(x)			((unsigned long)(x) << PAGE_SHIFT)
136204591Sluigi
137204591Sluigi#define sparc64_btop(x)		((unsigned long)(x) >> PAGE_SHIFT)
138204591Sluigi#define sparc64_ptob(x)		((unsigned long)(x) << PAGE_SHIFT)
139204591Sluigi
140204591Sluigi#define	pgtok(x)		((unsigned long)(x) * (PAGE_SIZE / 1024))
141204591Sluigi
142204591Sluigi#endif /* !_MACHINE_PARAM_H_ */
143204591Sluigi#endif /* !_NO_NAMESPACE_POLLUTION */
144204591Sluigi