epoc32/include/stdapis/machine/param.h
author William Roberts <williamr@symbian.org>
Tue, 16 Mar 2010 16:12:26 +0000
branchSymbian2
changeset 2 2fe1408b6811
parent 0 061f57f2323e
permissions -rw-r--r--
Final list of Symbian^2 public API header files
williamr@2
     1
/*-
williamr@2
     2
 * Copyright (c) 1990 The Regents of the University of California.
williamr@2
     3
 * All rights reserved.
williamr@2
     4
 *
williamr@2
     5
 * This code is derived from software contributed to Berkeley by
williamr@2
     6
 * William Jolitz.
williamr@2
     7
 *
williamr@2
     8
 * Redistribution and use in source and binary forms, with or without
williamr@2
     9
 * modification, are permitted provided that the following conditions
williamr@2
    10
 * are met:
williamr@2
    11
 * 1. Redistributions of source code must retain the above copyright
williamr@2
    12
 *    notice, this list of conditions and the following disclaimer.
williamr@2
    13
 * 2. Redistributions in binary form must reproduce the above copyright
williamr@2
    14
 *    notice, this list of conditions and the following disclaimer in the
williamr@2
    15
 *    documentation and/or other materials provided with the distribution.
williamr@2
    16
 * 4. Neither the name of the University nor the names of its contributors
williamr@2
    17
 *    may be used to endorse or promote products derived from this software
williamr@2
    18
 *    without specific prior written permission.
williamr@2
    19
 *
williamr@2
    20
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
williamr@2
    21
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
williamr@2
    22
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
williamr@2
    23
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
williamr@2
    24
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
williamr@2
    25
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
williamr@2
    26
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
williamr@2
    27
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
williamr@2
    28
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
williamr@2
    29
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
williamr@2
    30
 * SUCH DAMAGE.
williamr@2
    31
 *
williamr@2
    32
 *	from: @(#)param.h	5.8 (Berkeley) 6/28/91
williamr@2
    33
 * $FreeBSD: src/sys/i386/include/param.h,v 1.79 2004/11/20 02:29:49 das Exp $
williamr@2
    34
 */
williamr@2
    35
williamr@2
    36
/*
williamr@2
    37
 * Machine dependent constants for Intel 386.
williamr@2
    38
 */
williamr@2
    39
williamr@2
    40
/*
williamr@2
    41
 * Round p (pointer or byte index) up to a correctly-aligned value
williamr@2
    42
 * for all data types (int, long, ...).   The result is unsigned int
williamr@2
    43
 * and must be cast to any desired pointer type.
williamr@2
    44
 */
williamr@2
    45
williamr@2
    46
#ifndef _ALIGNBYTES
williamr@2
    47
#define _ALIGNBYTES	(sizeof(int) - 1)
williamr@2
    48
#endif
williamr@2
    49
#ifndef _ALIGN
williamr@2
    50
#define _ALIGN(p)	(((unsigned)(p) + _ALIGNBYTES) & ~_ALIGNBYTES)
williamr@2
    51
#endif
williamr@2
    52
williamr@2
    53
#ifndef _MACHINE
williamr@2
    54
#define	_MACHINE	i386
williamr@2
    55
#endif
williamr@2
    56
#ifndef _MACHINE_ARCH
williamr@2
    57
#define	_MACHINE_ARCH	i386
williamr@2
    58
#endif
williamr@2
    59
williamr@2
    60
#ifndef _NO_NAMESPACE_POLLUTION
williamr@2
    61
williamr@2
    62
#ifndef _MACHINE_PARAM_H_
williamr@2
    63
#define	_MACHINE_PARAM_H_
williamr@2
    64
williamr@2
    65
#ifndef MACHINE
williamr@2
    66
#define MACHINE		"i386"
williamr@2
    67
#endif
williamr@2
    68
#ifndef MACHINE_ARCH
williamr@2
    69
#define	MACHINE_ARCH	"i386"
williamr@2
    70
#endif
williamr@2
    71
#define MID_MACHINE	MID_I386
williamr@2
    72
williamr@2
    73
#ifdef SMP
williamr@2
    74
#define MAXCPU		16
williamr@2
    75
#else
williamr@2
    76
#define MAXCPU		1
williamr@2
    77
#endif /* SMP */
williamr@2
    78
williamr@2
    79
#define ALIGNBYTES	_ALIGNBYTES
williamr@2
    80
#define ALIGN(p)	_ALIGN(p)
williamr@2
    81
williamr@2
    82
#define PAGE_SHIFT	12		/* LOG2(PAGE_SIZE) */
williamr@2
    83
#define PAGE_SIZE	(1<<PAGE_SHIFT)	/* bytes/page */
williamr@2
    84
#define PAGE_MASK	(PAGE_SIZE-1)
williamr@2
    85
#define NPTEPG		(PAGE_SIZE/(sizeof (pt_entry_t)))
williamr@2
    86
williamr@2
    87
#ifdef PAE
williamr@2
    88
#define NPGPTD		4
williamr@2
    89
#define PDRSHIFT	21		/* LOG2(NBPDR) */
williamr@2
    90
#else
williamr@2
    91
#define NPGPTD		1
williamr@2
    92
#define PDRSHIFT	22		/* LOG2(NBPDR) */
williamr@2
    93
#endif
williamr@2
    94
williamr@2
    95
#define NBPTD		(NPGPTD<<PAGE_SHIFT)
williamr@2
    96
#define NPDEPTD		(NBPTD/(sizeof (pd_entry_t)))
williamr@2
    97
#define NPDEPG		(PAGE_SIZE/(sizeof (pd_entry_t)))
williamr@2
    98
#define NBPDR		(1<<PDRSHIFT)	/* bytes/page dir */
williamr@2
    99
#define PDRMASK		(NBPDR-1)
williamr@2
   100
williamr@2
   101
#define IOPAGES	2		/* pages of i/o permission bitmap */
williamr@2
   102
williamr@2
   103
#ifndef KSTACK_PAGES
williamr@2
   104
#define KSTACK_PAGES 2		/* Includes pcb! */
williamr@2
   105
#endif
williamr@2
   106
#define KSTACK_GUARD_PAGES 1	/* pages of kstack guard; 0 disables */
williamr@2
   107
williamr@2
   108
/*
williamr@2
   109
 * Ceiling on amount of swblock kva space, can be changed via
williamr@2
   110
 * the kern.maxswzone /boot/loader.conf variable.
williamr@2
   111
 */
williamr@2
   112
#ifndef VM_SWZONE_SIZE_MAX
williamr@2
   113
#define VM_SWZONE_SIZE_MAX	(32 * 1024 * 1024)
williamr@2
   114
#endif
williamr@2
   115
williamr@2
   116
/*
williamr@2
   117
 * Ceiling on size of buffer cache (really only effects write queueing,
williamr@2
   118
 * the VM page cache is not effected), can be changed via
williamr@2
   119
 * the kern.maxbcache /boot/loader.conf variable.
williamr@2
   120
 */
williamr@2
   121
#ifndef VM_BCACHE_SIZE_MAX
williamr@2
   122
#define VM_BCACHE_SIZE_MAX	(200 * 1024 * 1024)
williamr@2
   123
#endif
williamr@2
   124
williamr@2
   125
/*
williamr@2
   126
 * Mach derived conversion macros
williamr@2
   127
 */
williamr@2
   128
#define trunc_page(x)		((x) & ~PAGE_MASK)
williamr@2
   129
#define round_page(x)		(((x) + PAGE_MASK) & ~PAGE_MASK)
williamr@2
   130
#define trunc_4mpage(x)		((x) & ~PDRMASK)
williamr@2
   131
#define round_4mpage(x)		((((x)) + PDRMASK) & ~PDRMASK)
williamr@2
   132
williamr@2
   133
#define atop(x)			((x) >> PAGE_SHIFT)
williamr@2
   134
#define ptoa(x)			((x) << PAGE_SHIFT)
williamr@2
   135
williamr@2
   136
#define i386_btop(x)		((x) >> PAGE_SHIFT)
williamr@2
   137
#define i386_ptob(x)		((x) << PAGE_SHIFT)
williamr@2
   138
williamr@2
   139
#define	pgtok(x)		((x) * (PAGE_SIZE / 1024))
williamr@2
   140
williamr@2
   141
#endif /* !_MACHINE_PARAM_H_ */
williamr@2
   142
#endif /* !_NO_NAMESPACE_POLLUTION */