param.h revision 120710
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 120710 2003-10-03 19:49:08Z alc $ 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 _MACHINE 5080708Sjake#define _MACHINE sparc64 5180708Sjake#endif 5280708Sjake#ifndef _MACHINE_ARCH 5380708Sjake#define _MACHINE_ARCH sparc64 5480708Sjake#endif 5580708Sjake 5680708Sjake#ifndef _NO_NAMESPACE_POLLUTION 5780708Sjake 5880708Sjake#ifndef _MACHINE_PARAM_H_ 5980708Sjake#define _MACHINE_PARAM_H_ 6080708Sjake 6180708Sjake#ifndef MACHINE 6280708Sjake#define MACHINE "sparc64" 6380708Sjake#endif 6480708Sjake#ifndef MACHINE_ARCH 6580708Sjake#define MACHINE_ARCH "sparc64" 6680708Sjake#endif 6780708Sjake#define MID_MACHINE MID_SPARC64 6880708Sjake 6980708Sjake#ifdef SMP 7080708Sjake#define MAXCPU 16 7180708Sjake#else 7280708Sjake#define MAXCPU 1 7380708Sjake#endif /* SMP */ 7480708Sjake 7591336Sjake#define INT_SHIFT 2 7691336Sjake#define PTR_SHIFT 3 7791336Sjake 7880708Sjake#define ALIGNBYTES _ALIGNBYTES 7980708Sjake#define ALIGN(p) _ALIGN(p) 8080708Sjake 8180709Sjake#define PAGE_SHIFT_8K 13 82120710Salc#define PAGE_SIZE_8K (1L<<PAGE_SHIFT_8K) 8380709Sjake#define PAGE_MASK_8K (PAGE_SIZE_8K-1) 8480708Sjake 8580709Sjake#define PAGE_SHIFT_64K 16 86120710Salc#define PAGE_SIZE_64K (1L<<PAGE_SHIFT_64K) 8780709Sjake#define PAGE_MASK_64K (PAGE_SIZE_64K-1) 8880708Sjake 8980709Sjake#define PAGE_SHIFT_512K 19 90120710Salc#define PAGE_SIZE_512K (1L<<PAGE_SHIFT_512K) 9180709Sjake#define PAGE_MASK_512K (PAGE_SIZE_512K-1) 9280709Sjake 9380709Sjake#define PAGE_SHIFT_4M 22 94120710Salc#define PAGE_SIZE_4M (1L<<PAGE_SHIFT_4M) 9580709Sjake#define PAGE_MASK_4M (PAGE_SIZE_4M-1) 9680709Sjake 9786226Stmm#define PAGE_SHIFT_MIN PAGE_SHIFT_8K 9886226Stmm#define PAGE_SIZE_MIN PAGE_SIZE_8K 9986226Stmm#define PAGE_MASK_MIN PAGE_MASK_8K 10080709Sjake#define PAGE_SHIFT PAGE_SHIFT_8K /* LOG2(PAGE_SIZE) */ 10180709Sjake#define PAGE_SIZE PAGE_SIZE_8K /* bytes/page */ 10280709Sjake#define PAGE_MASK PAGE_MASK_8K 10386226Stmm#define PAGE_SHIFT_MAX PAGE_SHIFT_4M 10486226Stmm#define PAGE_SIZE_MAX PAGE_SIZE_4M 10586226Stmm#define PAGE_MASK_MAX PAGE_MASK_4M 10680709Sjake 107118239Speter#ifndef KSTACK_PAGES 10888781Sjake#define KSTACK_PAGES 4 /* pages of kernel stack (with pcb) */ 109118239Speter#endif 110116355Salc#define KSTACK_GUARD_PAGES 1 /* pages of kstack guard; 0 disables */ 11188781Sjake#define UAREA_PAGES 1 /* pages of user area */ 11291360Sjake#define PCPU_PAGES 1 11383366Sjulian 11483366Sjulian 11580708Sjake/* 11680708Sjake * Mach derived conversion macros 11780708Sjake */ 11880709Sjake#define round_page(x) (((unsigned long)(x) + PAGE_MASK) & ~PAGE_MASK) 11980708Sjake#define trunc_page(x) ((unsigned long)(x) & ~PAGE_MASK) 12080708Sjake 12180708Sjake#define atop(x) ((unsigned long)(x) >> PAGE_SHIFT) 12280708Sjake#define ptoa(x) ((unsigned long)(x) << PAGE_SHIFT) 12380708Sjake 12480708Sjake#define sparc64_btop(x) ((unsigned long)(x) >> PAGE_SHIFT) 12580708Sjake#define sparc64_ptob(x) ((unsigned long)(x) << PAGE_SHIFT) 12680708Sjake 12780708Sjake#define pgtok(x) ((unsigned long)(x) * (PAGE_SIZE / 1024)) 12880708Sjake 12980708Sjake#endif /* !_MACHINE_PARAM_H_ */ 13080708Sjake#endif /* !_NO_NAMESPACE_POLLUTION */ 131