vmparam.h revision 1.16
1/* $NetBSD: vmparam.h,v 1.16 2012/02/08 17:55:21 reinoud Exp $ */
2
3/*-
4 * Copyright (c) 2007 Jared D. McNeill <jmcneill@invisible.ca>
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 *    notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 *    notice, this list of conditions and the following disclaimer in the
14 *    documentation and/or other materials provided with the distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
17 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
18 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
20 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 * POSSIBILITY OF SUCH DAMAGE.
27 */
28
29#ifndef _ARCH_USERMODE_INCLUDE_VMPARAM_H
30#define _ARCH_USERMODE_INCLUDE_VMPARAM_H
31
32#include <machine/pmap.h>
33#include "opt_memsize.h"
34
35#define __USE_TOPDOWN_VM
36
37extern paddr_t kmem_k_start, kmem_k_end;
38extern paddr_t kmem_kvm_start, kmem_kvm_end;
39extern paddr_t kmem_kvm_cur_end;
40extern paddr_t kmem_user_start, kmem_user_end;
41
42#define VM_MIN_ADDRESS		kmem_user_start
43#define VM_MAX_ADDRESS		kmem_user_end
44#define VM_MAXUSER_ADDRESS	kmem_user_end
45#define VM_MIN_KERNEL_ADDRESS	kmem_kvm_start
46#define VM_MAX_KERNEL_ADDRESS 	kmem_kvm_end
47
48#define VM_PHYSSEG_STRAT	VM_PSTRAT_BIGFIRST
49#define VM_PHYSSEG_MAX		1
50#define	VM_NFREELIST		1
51#define	VM_FREELIST_DEFAULT	0
52
53#define	USRSTACK		VM_MAXUSER_ADDRESS
54
55/*
56 * When an architecture has little KVA then override the default pager_map
57 * size in its block by limiting it like this:
58 *
59 * #define PAGER_MAP_DEFAULT_SIZE	(8 * 1024 * 1024)
60 */
61
62#if defined(__i386__)
63#define	PAGE_SHIFT		12
64#define	PAGE_SIZE		(1 << PAGE_SHIFT)
65#define	PAGE_MASK		(PAGE_SIZE - 1)
66#define	MAXSSIZ			(64 * 1024 * 1024)
67#define	MAXTSIZ			(64 * 1024 * 1024)
68#define	MAXDSIZ			(3U * 1024 * 1024 * 1024)
69#define DFLSSIZ			(2 * 1024 * 1024)
70#define	DFLDSIZ			(256 * 1024 * 1024)
71#elif defined(__x86_64__)
72#define	PAGE_SHIFT		12
73#define	PAGE_SIZE		(1 << PAGE_SHIFT)
74#define	PAGE_MASK		(PAGE_SIZE - 1)
75#define	MAXSSIZ			(128 * 1024 * 1024)
76#define	MAXTSIZ			(64 * 1024 * 1024)
77#define	MAXDSIZ			(8L * 1024 * 1024 * 1024)
78#define DFLSSIZ			(4 * 1024 * 1024)
79#define	DFLDSIZ			(256 * 1024 * 1024)
80#else
81#error "platform not supported"
82#endif
83
84#endif /* !_ARCH_USERMODE_INCLUDE_VMPARAM_H */
85