1*9f57fb97SMark Corbin /* 2*9f57fb97SMark Corbin * RISC-V VM parameters definitions 3*9f57fb97SMark Corbin * 4*9f57fb97SMark Corbin * Copyright (c) 2019 Mark Corbin 5*9f57fb97SMark Corbin * 6*9f57fb97SMark Corbin * This program is free software; you can redistribute it and/or modify 7*9f57fb97SMark Corbin * it under the terms of the GNU General Public License as published by 8*9f57fb97SMark Corbin * the Free Software Foundation; either version 2 of the License, or 9*9f57fb97SMark Corbin * (at your option) any later version. 10*9f57fb97SMark Corbin * 11*9f57fb97SMark Corbin * This program is distributed in the hope that it will be useful, 12*9f57fb97SMark Corbin * but WITHOUT ANY WARRANTY; without even the implied warranty of 13*9f57fb97SMark Corbin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14*9f57fb97SMark Corbin * GNU General Public License for more details. 15*9f57fb97SMark Corbin * 16*9f57fb97SMark Corbin * You should have received a copy of the GNU General Public License 17*9f57fb97SMark Corbin * along with this program; if not, see <http://www.gnu.org/licenses/>. 18*9f57fb97SMark Corbin */ 19*9f57fb97SMark Corbin 20*9f57fb97SMark Corbin #ifndef TARGET_ARCH_VMPARAM_H 21*9f57fb97SMark Corbin #define TARGET_ARCH_VMPARAM_H 22*9f57fb97SMark Corbin 23*9f57fb97SMark Corbin #include "cpu.h" 24*9f57fb97SMark Corbin 25*9f57fb97SMark Corbin /* Compare with riscv/include/vmparam.h */ 26*9f57fb97SMark Corbin #define TARGET_MAXTSIZ (1 * GiB) /* max text size */ 27*9f57fb97SMark Corbin #define TARGET_DFLDSIZ (128 * MiB) /* initial data size limit */ 28*9f57fb97SMark Corbin #define TARGET_MAXDSIZ (1 * GiB) /* max data size */ 29*9f57fb97SMark Corbin #define TARGET_DFLSSIZ (128 * MiB) /* initial stack size limit */ 30*9f57fb97SMark Corbin #define TARGET_MAXSSIZ (1 * GiB) /* max stack size */ 31*9f57fb97SMark Corbin #define TARGET_SGROWSIZ (128 * KiB) /* amount to grow stack */ 32*9f57fb97SMark Corbin 33*9f57fb97SMark Corbin #define TARGET_VM_MINUSER_ADDRESS (0x0000000000000000UL) 34*9f57fb97SMark Corbin #define TARGET_VM_MAXUSER_ADDRESS (0x0000004000000000UL) 35*9f57fb97SMark Corbin 36*9f57fb97SMark Corbin #define TARGET_USRSTACK (TARGET_VM_MAXUSER_ADDRESS - TARGET_PAGE_SIZE) 37*9f57fb97SMark Corbin get_sp_from_cpustate(CPURISCVState * state)38*9f57fb97SMark Corbinstatic inline abi_ulong get_sp_from_cpustate(CPURISCVState *state) 39*9f57fb97SMark Corbin { 40*9f57fb97SMark Corbin return state->gpr[xSP]; 41*9f57fb97SMark Corbin } 42*9f57fb97SMark Corbin set_second_rval(CPURISCVState * state,abi_ulong retval2)43*9f57fb97SMark Corbinstatic inline void set_second_rval(CPURISCVState *state, abi_ulong retval2) 44*9f57fb97SMark Corbin { 45*9f57fb97SMark Corbin state->gpr[xA1] = retval2; 46*9f57fb97SMark Corbin } 47*9f57fb97SMark Corbin get_second_rval(CPURISCVState * state)48*9f57fb97SMark Corbinstatic inline abi_ulong get_second_rval(CPURISCVState *state) 49*9f57fb97SMark Corbin { 50*9f57fb97SMark Corbin return state->gpr[xA1]; 51*9f57fb97SMark Corbin } 52*9f57fb97SMark Corbin 53*9f57fb97SMark Corbin #endif /* TARGET_ARCH_VMPARAM_H */ 54