u-boot-brain/arch/riscv/include/asm
Lukas Auer fa33f08fd6 riscv: add infrastructure for calling functions on other harts
Harts on RISC-V boot independently, U-Boot is responsible for managing
them. Functions are called on other harts with smp_call_function(),
which sends inter-processor interrupts (IPIs) to all other available
harts. Available harts are those marked as available in the device tree
and present in the available_harts mask stored in global data. The
available_harts mask is used to register all harts that have entered
U-Boot. Functions are specified with their address and two function
arguments (argument 2 and 3). The first function argument is always the
hart ID of the hart calling the function. On the other harts, the IPI
interrupt handler handle_ipi() must be called on software interrupts to
handle the request and call the specified function.

Functions are stored in the ipi_data data structure. Every hart has its
own data structure in global data. While this is not required at the
moment (all harts are expected to boot Linux), this does allow future
expansion, where other harts may be used for monitoring or other tasks.

Signed-off-by: Lukas Auer <lukas.auer@aisec.fraunhofer.de>
Reviewed-by: Anup Patel <anup.patel@wdc.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Bin Meng <bmeng.cn@gmail.com>
2019-04-08 09:44:25 +08:00
..
arch-generic riscv: Add place-holder asm/arch/clk.h for driver compilation 2019-02-27 09:12:33 +08:00
barrier.h riscv: make use of the barrier functions from Linux 2018-11-26 13:57:30 +08:00
bitops.h riscv: Define PLATFORM__CLEAR_BIT for generic_clear_bit() 2018-05-15 21:44:05 -04:00
byteorder.h riscv: nx25: include: Add header files to support RISC-V 2018-01-12 08:05:12 -05:00
cache.h riscv: cache: Implement i/dcache [status, enable, disable] 2018-11-26 13:58:01 +08:00
config.h riscv: Enable CONFIG_SYS_BOOT_RAMDISK_HIGH for using initrd 2019-02-27 09:12:34 +08:00
csr.h riscv: Add indirect stringification to csr_xxx ops 2018-12-18 09:56:27 +08:00
dma-mapping.h riscv: Add asm/dma-mapping.h for DMA mappings 2019-02-27 09:12:33 +08:00
encoding.h riscv: Add exception codes for xcause register 2018-12-18 09:56:27 +08:00
global_data.h riscv: add infrastructure for calling functions on other harts 2019-04-08 09:44:25 +08:00
io.h riscv: do not reimplement generic io functions 2018-11-26 13:57:30 +08:00
linkage.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
posix_types.h riscv: fix use of incorrectly sized variables 2018-11-26 13:57:29 +08:00
processor.h riscv: nx25: include: Add header files to support RISC-V 2018-01-12 08:05:12 -05:00
ptrace.h riscv: checkpatch: Fix alignment should match open parenthesis 2018-03-30 13:13:22 +08:00
sections.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
setjmp.h SPDX: Convert single license tags to Linux Kernel style 2018-05-29 14:44:21 +08:00
smp.h riscv: add infrastructure for calling functions on other harts 2019-04-08 09:44:25 +08:00
string.h riscv: checkpatch: Fix Macro argument reuse 2018-03-30 13:13:22 +08:00
syscon.h riscv: Add a SYSCON driver for SiFive's Core Local Interruptor 2018-12-18 09:56:26 +08:00
system.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
types.h riscv: fix use of incorrectly sized variables 2018-11-26 13:57:29 +08:00
u-boot-riscv.h riscv: Add board_quiesce_devices stub 2018-05-29 14:43:12 +08:00
u-boot.h riscv: Remove mach type 2018-10-03 17:47:19 +08:00
unaligned.h riscv: nx25: include: Add header files to support RISC-V 2018-01-12 08:05:12 -05:00