xref: /netbsd/sys/arch/usermode/include/vmparam.h (revision 5c221ac5)
1 /* $NetBSD: vmparam.h,v 1.20 2018/08/03 11:18:22 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 
37 extern paddr_t kmem_k_start, kmem_k_end;
38 extern paddr_t kmem_kvm_start, kmem_kvm_end;
39 extern paddr_t kmem_kvm_cur_end;
40 extern 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_k_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 #elif defined(__arm__)
81 #define	PAGE_SHIFT		12
82 #define	PAGE_SIZE		(1 << PAGE_SHIFT)
83 #define	PAGE_MASK		(PAGE_SIZE - 1)
84 #define	MAXSSIZ			(64 * 1024 * 1024)
85 #define	MAXTSIZ			(64 * 1024 * 1024)
86 #define	MAXDSIZ			(3U * 1024 * 1024 * 1024)
87 #define DFLSSIZ			(2 * 1024 * 1024)
88 #define	DFLDSIZ			(256 * 1024 * 1024)
89 #else
90 #error "platform not supported"
91 #endif
92 
93 #endif /* !_ARCH_USERMODE_INCLUDE_VMPARAM_H */
94