98 lines
2.9 KiB
Plaintext
98 lines
2.9 KiB
Plaintext
#
|
|
# Copyright (c) 2016 Jean-Paul Etienne <fractalclone@gmail.com>
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
|
|
menu "RISCV Options"
|
|
depends on RISCV
|
|
|
|
config ARCH
|
|
string
|
|
default "riscv64" if 64BIT
|
|
default "riscv32"
|
|
|
|
menu "RISCV Processor Options"
|
|
|
|
config INCLUDE_RESET_VECTOR
|
|
bool "Include Reset vector"
|
|
help
|
|
Include the reset vector stub, which initializes the stack and
|
|
prepares for running C code.
|
|
|
|
config RISCV_SOC_CONTEXT_SAVE
|
|
bool "Enable SOC-based context saving in IRQ handlers"
|
|
select RISCV_SOC_OFFSETS
|
|
help
|
|
Enable low-level SOC-specific context management, for SOCs
|
|
with extra state that must be saved when entering an
|
|
interrupt/exception, and restored on exit. If unsure, leave
|
|
this at the default value.
|
|
|
|
Enabling this option requires that the SoC provide a
|
|
soc_context.h header which defines the following macros:
|
|
|
|
- SOC_ESF_MEMBERS: structure component declarations to
|
|
allocate space for. The last such declaration should not
|
|
end in a semicolon, for portability. The generic RISC-V
|
|
architecture code will allocate space for these members in
|
|
a "struct soc_esf" type (typedefed to soc_esf_t), which will
|
|
be available if arch.h is included.
|
|
|
|
- SOC_ESF_INIT: structure contents initializer for struct soc_esf
|
|
state. The last initialized member should not end in a comma.
|
|
|
|
The generic architecture IRQ wrapper will also call
|
|
\_\_soc_save_context and \_\_soc_restore_context routines at
|
|
ISR entry and exit, respectively. These should typically
|
|
be implemented in assembly. If they were C functions, they
|
|
would have these signatures:
|
|
|
|
``void __soc_save_context(soc_esf_t *state);``
|
|
|
|
``void __soc_restore_context(soc_esf_t *state);``
|
|
|
|
The calls obey standard calling conventions; i.e., the state
|
|
pointer address is in a0, and ra contains the return address.
|
|
|
|
config RISCV_SOC_OFFSETS
|
|
bool "Enable SOC-based offsets"
|
|
help
|
|
Enabling this option requires that the SoC provide a soc_offsets.h
|
|
header which defines the following macros:
|
|
|
|
- GEN_SOC_OFFSET_SYMS(): a macro which expands to
|
|
GEN_OFFSET_SYM(soc_esf_t, soc_specific_member) calls
|
|
to ensure offset macros for SOC_ESF_MEMBERS are defined
|
|
in offsets.h. The last one should not end in a semicolon.
|
|
See gen_offset.h for more details.
|
|
|
|
config RISCV_SOC_INTERRUPT_INIT
|
|
bool "Enable SOC-based interrupt initialization"
|
|
help
|
|
Enable SOC-based interrupt initialization
|
|
(call soc_interrupt_init, within _IntLibInit when enabled)
|
|
|
|
config RISCV_GENERIC_TOOLCHAIN
|
|
bool "Compile using generic riscv32 toolchain"
|
|
default y
|
|
help
|
|
Compile using generic riscv32 toolchain.
|
|
Allow SOCs that have custom extended riscv ISA to still
|
|
compile with generic riscv32 toolchain.
|
|
|
|
config RISCV_HAS_CPU_IDLE
|
|
bool "Does SOC has CPU IDLE instruction"
|
|
help
|
|
Does SOC has CPU IDLE instruction
|
|
|
|
config GEN_ISR_TABLES
|
|
default y
|
|
|
|
config GEN_IRQ_VECTOR_TABLE
|
|
default n
|
|
|
|
endmenu
|
|
|
|
endmenu
|