u-boot-brain/arch/riscv/lib
Heinrich Schuchardt c48e9f310b riscv: restore global data pointer in trap handler
The gp register is used to store U-Boot's global data pointer. We should
not assume that an UEFI application leaves the gp register unchanged as
the UEFI specifications does not define who is the owner of the gp and tp
registers.

So the following sequence should be followed in the trap handler:

* save the caller's gp register
* restore the global data pointer
* serve interrupts or print crash dump and reset
* restore the caller's gp register

Cc: Abner Chang <abner.chang@hpe.com>
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Bin Meng <bin.meng@windriver.com>
Reviewed-by: Rick Chen <rick@andestech.com>
2020-09-28 12:20:19 +02:00
..
andes_plic.c riscv: remove redundant logical constraint. 2020-08-14 14:39:09 +08:00
andes_plmt.c dm: core: Require users of devres to include the header 2020-02-05 19:33:46 -07:00
asm-offsets.c riscv: Provide a mechanism to fix DT for reserved memory 2020-04-23 10:14:16 +08:00
boot.c command: Remove the cmd_tbl_t typedef 2020-05-18 18:36:55 -04:00
bootm.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
cache.c common: Move some cache and MMU functions out of common.h 2019-12-02 18:23:55 -05:00
crt0_riscv_efi.S efi_loader: use predefined constants in crt0_*_efi.S 2019-07-16 22:17:14 +00:00
elf_riscv32_efi.lds SPDX: Convert single license tags to Linux Kernel style 2018-05-29 14:44:21 +08:00
elf_riscv64_efi.lds SPDX: Convert single license tags to Linux Kernel style 2018-05-29 14:44:21 +08:00
fdt_fixup.c riscv: use log functions in fdt_fixup 2020-07-03 15:09:12 +08:00
image.c common: Drop image.h from common header 2020-05-18 17:33:33 -04:00
interrupts.c riscv: restore global data pointer in trap handler 2020-09-28 12:20:19 +02:00
Makefile riscv: Do not build reset.c if SYSRESET is on 2020-07-03 15:07:48 +08:00
mkimage_fit_opensbi.sh riscv: add a generic FIT generator script 2019-08-26 16:07:42 +08:00
rdtime.c riscv: Implement riscv_get_time() API using rdtime instruction 2018-12-18 09:56:27 +08:00
reloc_riscv_efi.c riscv: Remove unused _relocate arguments 2018-07-19 16:31:37 -04:00
reset.c Revert "riscv: Allow use of reset drivers" 2020-07-24 14:55:31 +08:00
sbi_ipi.c riscv: Clean up IPI initialization code 2020-07-01 15:01:22 +08:00
sbi.c cmd: provide command sbi 2020-08-25 09:34:47 +08:00
setjmp.S riscv: rename CPU_RISCV_32/64 to match architecture names ARCH_RV32I/64I 2018-11-26 13:57:29 +08:00
sifive_clint.c riscv: Make SiFive HiFive Unleashed board boot again 2020-07-24 14:55:04 +08:00
smp.c riscv: Clean up IPI initialization code 2020-07-01 15:01:22 +08:00
spl.c riscv: fix building with CONFIG_SPL_SMP=n 2020-08-25 09:33:45 +08:00