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