xref: /openbmc/qemu/bsd-user/riscv/target_arch_vmparam.h (revision 35ba77d2fcd10efd6db8318bbd4d21fa9402143b)
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 Corbin static 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 Corbin static 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 Corbin static 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