param.h revision 177661
180708Sjake/*- 280708Sjake * Copyright (c) 1990 The Regents of the University of California. 380708Sjake * All rights reserved. 480708Sjake * 580708Sjake * This code is derived from software contributed to Berkeley by 680708Sjake * William Jolitz. 780708Sjake * 880708Sjake * Redistribution and use in source and binary forms, with or without 980708Sjake * modification, are permitted provided that the following conditions 1080708Sjake * are met: 1180708Sjake * 1. Redistributions of source code must retain the above copyright 1280708Sjake * notice, this list of conditions and the following disclaimer. 1380708Sjake * 2. Redistributions in binary form must reproduce the above copyright 1480708Sjake * notice, this list of conditions and the following disclaimer in the 1580708Sjake * documentation and/or other materials provided with the distribution. 1680708Sjake * 1780708Sjake * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 1880708Sjake * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1980708Sjake * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2080708Sjake * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2180708Sjake * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2280708Sjake * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2380708Sjake * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2480708Sjake * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2580708Sjake * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2680708Sjake * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2780708Sjake * SUCH DAMAGE. 2880708Sjake * 2980708Sjake * from: @(#)param.h 5.8 (Berkeley) 6/28/91 3080708Sjake * $FreeBSD: head/sys/sparc64/include/param.h 177661 2008-03-27 05:03:26Z jb $ 3180708Sjake */ 3280708Sjake 3380708Sjake/* 3480708Sjake * Machine dependent constants for sparc64. 3580708Sjake */ 3680708Sjake 3780708Sjake/* 3880708Sjake * Round p (pointer or byte index) up to a correctly-aligned value 3980708Sjake * for all data types (int, long, ...). The result is unsigned int 4080708Sjake * and must be cast to any desired pointer type. 4180708Sjake */ 4280708Sjake#ifndef _ALIGNBYTES 4380708Sjake#define _ALIGNBYTES 0xf 4480708Sjake#endif 4580708Sjake#ifndef _ALIGN 4680708Sjake#define _ALIGN(p) (((u_long)(p) + _ALIGNBYTES) & ~_ALIGNBYTES) 4780708Sjake#endif 4880708Sjake 4980708Sjake#ifndef _NO_NAMESPACE_POLLUTION 5080708Sjake 5180708Sjake#ifndef _MACHINE_PARAM_H_ 5280708Sjake#define _MACHINE_PARAM_H_ 5380708Sjake 5480708Sjake#ifndef MACHINE 5580708Sjake#define MACHINE "sparc64" 5680708Sjake#endif 5780708Sjake#ifndef MACHINE_ARCH 5880708Sjake#define MACHINE_ARCH "sparc64" 5980708Sjake#endif 6080708Sjake#define MID_MACHINE MID_SPARC64 6180708Sjake 62177661Sjb#if defined(SMP) || defined(KLD_MODULE) 6380708Sjake#define MAXCPU 16 6480708Sjake#else 6580708Sjake#define MAXCPU 1 66177661Sjb#endif /* SMP || KLD_MODULE */ 6780708Sjake 6891336Sjake#define INT_SHIFT 2 6991336Sjake#define PTR_SHIFT 3 7091336Sjake 7180708Sjake#define ALIGNBYTES _ALIGNBYTES 7280708Sjake#define ALIGN(p) _ALIGN(p) 7380708Sjake 7480709Sjake#define PAGE_SHIFT_8K 13 75120710Salc#define PAGE_SIZE_8K (1L<<PAGE_SHIFT_8K) 7680709Sjake#define PAGE_MASK_8K (PAGE_SIZE_8K-1) 7780708Sjake 7880709Sjake#define PAGE_SHIFT_64K 16 79120710Salc#define PAGE_SIZE_64K (1L<<PAGE_SHIFT_64K) 8080709Sjake#define PAGE_MASK_64K (PAGE_SIZE_64K-1) 8180708Sjake 8280709Sjake#define PAGE_SHIFT_512K 19 83120710Salc#define PAGE_SIZE_512K (1L<<PAGE_SHIFT_512K) 8480709Sjake#define PAGE_MASK_512K (PAGE_SIZE_512K-1) 8580709Sjake 8680709Sjake#define PAGE_SHIFT_4M 22 87120710Salc#define PAGE_SIZE_4M (1L<<PAGE_SHIFT_4M) 8880709Sjake#define PAGE_MASK_4M (PAGE_SIZE_4M-1) 8980709Sjake 90165324Skmacy#define PAGE_SHIFT_32M 25 91165324Skmacy#define PAGE_SIZE_32M (1L<<PAGE_SHIFT_32M) 92165324Skmacy#define PAGE_MASK_32M (PAGE_SIZE_32M-1) 93165324Skmacy 94165324Skmacy#define PAGE_SHIFT_256M 28 95165324Skmacy#define PAGE_SIZE_256M (1L<<PAGE_SHIFT_256M) 96165324Skmacy#define PAGE_MASK_256M (PAGE_SIZE_256M-1) 97165324Skmacy 9886226Stmm#define PAGE_SHIFT_MIN PAGE_SHIFT_8K 9986226Stmm#define PAGE_SIZE_MIN PAGE_SIZE_8K 10086226Stmm#define PAGE_MASK_MIN PAGE_MASK_8K 10180709Sjake#define PAGE_SHIFT PAGE_SHIFT_8K /* LOG2(PAGE_SIZE) */ 10280709Sjake#define PAGE_SIZE PAGE_SIZE_8K /* bytes/page */ 10380709Sjake#define PAGE_MASK PAGE_MASK_8K 10486226Stmm#define PAGE_SHIFT_MAX PAGE_SHIFT_4M 10586226Stmm#define PAGE_SIZE_MAX PAGE_SIZE_4M 10686226Stmm#define PAGE_MASK_MAX PAGE_MASK_4M 10780709Sjake 108118239Speter#ifndef KSTACK_PAGES 10988781Sjake#define KSTACK_PAGES 4 /* pages of kernel stack (with pcb) */ 110118239Speter#endif 111116355Salc#define KSTACK_GUARD_PAGES 1 /* pages of kstack guard; 0 disables */ 11291360Sjake#define PCPU_PAGES 1 11383366Sjulian 114151344Skris/* 115151344Skris * Ceiling on size of buffer cache (really only effects write queueing, 116151344Skris * the VM page cache is not effected), can be changed via 117151344Skris * the kern.maxbcache /boot/loader.conf variable. 118151344Skris */ 119151344Skris#ifndef VM_BCACHE_SIZE_MAX 120151344Skris#define VM_BCACHE_SIZE_MAX (400 * 1024 * 1024) 121151344Skris#endif 12283366Sjulian 12380708Sjake/* 12480708Sjake * Mach derived conversion macros 12580708Sjake */ 12680709Sjake#define round_page(x) (((unsigned long)(x) + PAGE_MASK) & ~PAGE_MASK) 12780708Sjake#define trunc_page(x) ((unsigned long)(x) & ~PAGE_MASK) 12880708Sjake 12980708Sjake#define atop(x) ((unsigned long)(x) >> PAGE_SHIFT) 13080708Sjake#define ptoa(x) ((unsigned long)(x) << PAGE_SHIFT) 13180708Sjake 13280708Sjake#define sparc64_btop(x) ((unsigned long)(x) >> PAGE_SHIFT) 13380708Sjake#define sparc64_ptob(x) ((unsigned long)(x) << PAGE_SHIFT) 13480708Sjake 13580708Sjake#define pgtok(x) ((unsigned long)(x) * (PAGE_SIZE / 1024)) 13680708Sjake 13780708Sjake#endif /* !_MACHINE_PARAM_H_ */ 13880708Sjake#endif /* !_NO_NAMESPACE_POLLUTION */ 139