Sun Aug 9 04:02:41 2009 UTC ()
Beginning of large-page support.


(matt)
diff -r1.23 -r1.24 src/sys/arch/mips/include/mips_param.h
diff -r1.42 -r1.43 src/sys/arch/mips/include/vmparam.h

cvs diff -r1.23 -r1.24 src/sys/arch/mips/include/mips_param.h (expand / switch to unified diff)

--- src/sys/arch/mips/include/mips_param.h 2006/08/28 13:43:35 1.23
+++ src/sys/arch/mips/include/mips_param.h 2009/08/09 04:02:40 1.24
@@ -1,57 +1,69 @@ @@ -1,57 +1,69 @@
1/* $NetBSD: mips_param.h,v 1.23 2006/08/28 13:43:35 yamt Exp $ */ 1/* $NetBSD: mips_param.h,v 1.24 2009/08/09 04:02:40 matt Exp $ */
2 2
3#ifdef _KERNEL 3#ifdef _KERNEL
4#include <machine/cpu.h> 4#include <machine/cpu.h>
5#endif 5#endif
6 6
7/* 7/*
8 * On mips, UPAGES is fixed by sys/arch/mips/mips/locore code 8 * On mips, UPAGES is fixed by sys/arch/mips/mips/locore code
9 * to be the number of per-process-wired kernel-stack pages/PTES. 9 * to be the number of per-process-wired kernel-stack pages/PTES.
10 */ 10 */
11 11
12#define SSIZE 1 /* initial stack size/NBPG */ 12#define SSIZE 1 /* initial stack size/NBPG */
13#define SINCR 1 /* increment of stack/NBPG */ 13#define SINCR 1 /* increment of stack/NBPG */
14 14
 15#ifdef ENABLE_MIPS_16KB_PAGE
 16#define UPAGES 1 /* pages of u-area */
 17#define USPACE (UPAGES*NBPG) /* size of u-area in bytes */
 18#elif defined(ENABLE_MIPS_4KB_PAGE) || 1
15#define UPAGES 2 /* pages of u-area */ 19#define UPAGES 2 /* pages of u-area */
16#define USPACE (UPAGES*NBPG) /* size of u-area in bytes */ 20#define USPACE (UPAGES*NBPG) /* size of u-area in bytes */
 21#else
 22#error ENABLE_MIPS_xKB_PAGE not defined
 23#endif
17 24
18#ifndef MSGBUFSIZE 25#ifndef MSGBUFSIZE
19#define MSGBUFSIZE NBPG /* default message buffer size */ 26#define MSGBUFSIZE NBPG /* default message buffer size */
20#endif 27#endif
21 28
22/* 29/*
23 * Round p (pointer or byte index) up to a correctly-aligned value for all 30 * Round p (pointer or byte index) up to a correctly-aligned value for all
24 * data types (int, long, ...). The result is u_int and must be cast to 31 * data types (int, long, ...). The result is u_int and must be cast to
25 * any desired pointer type. 32 * any desired pointer type.
26 * 33 *
27 * ALIGNED_POINTER is a boolean macro that checks whether an address 34 * ALIGNED_POINTER is a boolean macro that checks whether an address
28 * is valid to fetch data elements of type t from on this architecture. 35 * is valid to fetch data elements of type t from on this architecture.
29 * This does not reflect the optimal alignment, just the possibility 36 * This does not reflect the optimal alignment, just the possibility
30 * (within reasonable limits). 37 * (within reasonable limits).
31 * 38 *
32 */ 39 */
33#define ALIGNBYTES 7 40#define ALIGNBYTES 7
34#define ALIGN(p) (((uintptr_t)(p) + ALIGNBYTES) & ~ALIGNBYTES) 41#define ALIGN(p) (((uintptr_t)(p) + ALIGNBYTES) & ~ALIGNBYTES)
35#define ALIGNED_POINTER(p,t) ((((uintptr_t)(p)) & (sizeof(t)-1)) == 0) 42#define ALIGNED_POINTER(p,t) ((((uintptr_t)(p)) & (sizeof(t)-1)) == 0)
36 43
 44#ifdef ENABLE_MIPS_16KB_PAGE
 45#define NBPG 16384 /* bytes/page */
 46#define PGSHIFT 14 /* LOG2(NBPG) */
 47#else
37#define NBPG 4096 /* bytes/page */ 48#define NBPG 4096 /* bytes/page */
38#define PGOFSET (NBPG-1) /* byte offset into page */ 
39#define PGSHIFT 12 /* LOG2(NBPG) */ 49#define PGSHIFT 12 /* LOG2(NBPG) */
 50#endif
 51#define PGOFSET (NBPG-1) /* byte offset into page */
40#define NPTEPG (NBPG/4) 52#define NPTEPG (NBPG/4)
41 53
42#define NBSEG 0x400000 /* bytes/segment */ 54#define NBSEG (NBPG*NPTEPG) /* bytes/segment */
43#define SEGOFSET (NBSEG-1) /* byte offset into segment */ 55#define SEGOFSET (NBSEG-1) /* byte offset into segment */
44#define SEGSHIFT 22 /* LOG2(NBSEG) */ 56#define SEGSHIFT (2*PGSHIFT-2) /* LOG2(NBSEG) */
45 57
46/* 58/*
47 * Minimum and maximum sizes of the kernel malloc arena in PAGE_SIZE-sized 59 * Minimum and maximum sizes of the kernel malloc arena in PAGE_SIZE-sized
48 * logical pages. 60 * logical pages.
49 */ 61 */
50#define NKMEMPAGES_MIN_DEFAULT ((8 * 1024 * 1024) >> PAGE_SHIFT) 62#define NKMEMPAGES_MIN_DEFAULT ((8 * 1024 * 1024) >> PAGE_SHIFT)
51#define NKMEMPAGES_MAX_DEFAULT ((128 * 1024 * 1024) >> PAGE_SHIFT) 63#define NKMEMPAGES_MAX_DEFAULT ((128 * 1024 * 1024) >> PAGE_SHIFT)
52 64
53/* 65/*
54 * Mach derived conversion macros 66 * Mach derived conversion macros
55 */ 67 */
56#define mips_round_page(x) ((((uintptr_t)(x)) + NBPG - 1) & ~(NBPG-1)) 68#define mips_round_page(x) ((((uintptr_t)(x)) + NBPG - 1) & ~(NBPG-1))
57#define mips_trunc_page(x) ((uintptr_t)(x) & ~(NBPG-1)) 69#define mips_trunc_page(x) ((uintptr_t)(x) & ~(NBPG-1))

cvs diff -r1.42 -r1.43 src/sys/arch/mips/include/vmparam.h (expand / switch to unified diff)

--- src/sys/arch/mips/include/vmparam.h 2009/03/06 20:31:50 1.42
+++ src/sys/arch/mips/include/vmparam.h 2009/08/09 04:02:40 1.43
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: vmparam.h,v 1.42 2009/03/06 20:31:50 joerg Exp $ */ 1/* $NetBSD: vmparam.h,v 1.43 2009/08/09 04:02:40 matt Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 1992, 1993 4 * Copyright (c) 1992, 1993
5 * The Regents of the University of California. All rights reserved. 5 * The Regents of the University of California. All rights reserved.
6 * 6 *
7 * This code is derived from software contributed to Berkeley by 7 * This code is derived from software contributed to Berkeley by
8 * the Systems Programming Group of the University of Utah Computer 8 * the Systems Programming Group of the University of Utah Computer
9 * Science Department and Ralph Campbell. 9 * Science Department and Ralph Campbell.
10 * 10 *
11 * Redistribution and use in source and binary forms, with or without 11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions 12 * modification, are permitted provided that the following conditions
13 * are met: 13 * are met:
14 * 1. Redistributions of source code must retain the above copyright 14 * 1. Redistributions of source code must retain the above copyright
@@ -74,41 +74,47 @@ @@ -74,41 +74,47 @@
74 * from: Utah Hdr: vmparam.h 1.16 91/01/18 74 * from: Utah Hdr: vmparam.h 1.16 91/01/18
75 * 75 *
76 * @(#)vmparam.h 8.2 (Berkeley) 4/22/94 76 * @(#)vmparam.h 8.2 (Berkeley) 4/22/94
77 */ 77 */
78 78
79#ifndef _MIPS_VMPARAM_H_ 79#ifndef _MIPS_VMPARAM_H_
80#define _MIPS_VMPARAM_H_ 80#define _MIPS_VMPARAM_H_
81 81
82/* 82/*
83 * Machine dependent VM constants for MIPS. 83 * Machine dependent VM constants for MIPS.
84 */ 84 */
85 85
86/* 86/*
87 * We use a 4K page on MIPS systems. Override PAGE_* definitions 87 * We normally use a 4K page but may use 16K on MIPS systems.
88 * to compile-time constants. 88 * Override PAGE_* definitions to compile-time constants.
89 */ 89 */
 90#ifdef ENABLE_MIPS_16KB_PAGE
 91#define PAGE_SHIFT 14
 92#elif defined(ENABLE_MIPS_4KB_PAGE) || 1
90#define PAGE_SHIFT 12 93#define PAGE_SHIFT 12
 94#else
 95#error ENABLE_MIPS_xKB_PAGE not defined
 96#endif
91#define PAGE_SIZE (1 << PAGE_SHIFT) 97#define PAGE_SIZE (1 << PAGE_SHIFT)
92#define PAGE_MASK (PAGE_SIZE - 1) 98#define PAGE_MASK (PAGE_SIZE - 1)
93 99
94/* 100/*
95 * USRSTACK is the top (end) of the user stack. 101 * USRSTACK is the top (end) of the user stack.
96 * 102 *
97 * USRSTACK needs to start a little below 0x8000000 because the R8000 103 * USRSTACK needs to start a little below 0x8000000 because the R8000
98 * and some QED CPUs perform some virtual address checks before the 104 * and some QED CPUs perform some virtual address checks before the
99 * offset is calculated. 105 * offset is calculated.
100 */ 106 */
101#define USRSTACK 0x7ffff000 /* Start of user stack */ 107#define USRSTACK (0x7fffffff & ~PAGE_MASK) /* Start of user stack */
102 108
103/* alignment requirement for u-area space in bytes */ 109/* alignment requirement for u-area space in bytes */
104#define USPACE_ALIGN USPACE 110#define USPACE_ALIGN USPACE
105 111
106/* 112/*
107 * Virtual memory related constants, all in bytes 113 * Virtual memory related constants, all in bytes
108 */ 114 */
109#ifndef MAXTSIZ 115#ifndef MAXTSIZ
110#define MAXTSIZ (64*1024*1024) /* max text size */ 116#define MAXTSIZ (64*1024*1024) /* max text size */
111#endif 117#endif
112#ifndef DFLDSIZ 118#ifndef DFLDSIZ
113#define DFLDSIZ (128*1024*1024) /* initial data size limit */ 119#define DFLDSIZ (128*1024*1024) /* initial data size limit */
114#endif 120#endif