1 /* $NetBSD: param.h,v 1.8 2023/05/07 12:41:48 skrll Exp $ */ 2 3 /*- 4 * Copyright (c) 2014 The NetBSD Foundation, Inc. 5 * All rights reserved. 6 * 7 * This code is derived from software contributed to The NetBSD Foundation 8 * by Matt Thomas of 3am Software Foundry. 9 * 10 * Redistribution and use in source and binary forms, with or without 11 * modification, are permitted provided that the following conditions 12 * are met: 13 * 1. Redistributions of source code must retain the above copyright 14 * notice, this list of conditions and the following disclaimer. 15 * 2. Redistributions in binary form must reproduce the above copyright 16 * notice, this list of conditions and the following disclaimer in the 17 * documentation and/or other materials provided with the distribution. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 23 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29 * POSSIBILITY OF SUCH DAMAGE. 30 */ 31 32 #ifndef _RISCV_PARAM_H_ 33 #define _RISCV_PARAM_H_ 34 35 #ifdef _KERNEL_OPT 36 #include "opt_param.h" 37 #endif 38 39 /* 40 * Machine dependent constants for all OpenRISC processors 41 */ 42 43 /* 44 * For KERNEL code: 45 * MACHINE must be defined by the individual port. This is so that 46 * uname returns the correct thing, etc. 47 * 48 * For non-KERNEL code: 49 * If ELF, MACHINE and MACHINE_ARCH are forced to "or1k/or1k". 50 */ 51 52 #ifdef _LP64 53 #define _MACHINE_ARCH riscv64 54 #define MACHINE_ARCH "riscv64" 55 #define _MACHINE_ARCH32 riscv32 56 #define MACHINE_ARCH32 "riscv32" 57 #else 58 #define _MACHINE_ARCH riscv32 59 #define MACHINE_ARCH "riscv32" 60 #endif 61 #define _MACHINE riscv 62 #define MACHINE "riscv" 63 64 #define MID_MACHINE MID_RISCV 65 66 /* RISC-V specific macro to align a stack pointer (downwards). */ 67 #define STACK_ALIGNBYTES (16UL - 1) 68 #define ALIGNBYTES32 __BIGGEST_ALIGNMENT__ 69 70 #define NKMEMPAGES_MIN_DEFAULT ((128UL * 1024 * 1024) >> PAGE_SHIFT) 71 #define NKMEMPAGES_MAX_UNLIMITED 1 72 73 #define PGSHIFT 12 74 #define NBPG (1 << PGSHIFT) 75 #define PGOFSET (NBPG - 1) 76 77 #define UPAGES 2 78 #define USPACE (UPAGES << PGSHIFT) 79 #define USPACE_ALIGN NBPG 80 81 /* 82 * Constants related to network buffer management. 83 * MCLBYTES must be no larger than NBPG (the software page size), and 84 * NBPG % MCLBYTES must be zero. 85 */ 86 #define MSIZE 512 /* size of an mbuf */ 87 88 #ifndef MCLSHIFT 89 #define MCLSHIFT 11 /* convert bytes to m_buf clusters */ 90 /* 2K cluster can hold Ether frame */ 91 #endif /* MCLSHIFT */ 92 93 #define MCLBYTES (1 << MCLSHIFT) /* size of a m_buf cluster */ 94 95 #ifndef MSGBUFSIZE 96 #define MSGBUFSIZE 65536 /* default message buffer size */ 97 #endif 98 99 #define MAXCPUS 32 100 101 #ifdef _KERNEL 102 void delay(unsigned long); 103 #define DELAY(x) delay(x) 104 #endif 105 106 #define riscv_btop(x) ((unsigned long)(x) >> PGSHIFT) 107 #define riscv_ptob(x) ((unsigned long)(x) << PGSHIFT) 108 109 110 #endif /* _RISCV_PARAM_H_ */ 111