nuttx/arch/arm/src/nrf52
hujun5 0e1b432dd0 armv7/8m: fix regresion from https://github.com/apache/nuttx/pull/14881
reason:
svc call may trigger hardfault

Background
    The origin of this issue is our desire to eliminate the function of storing
"regs" in g_current_regs and instead utilize (*running_task)->xcp.regs for storage.
The benefits of this approach include faster storage speed and
avoiding multiple accesses to g_current_regs during context switching,
thus ensuring that whether returning from an interrupt or an exception,
we consistently use this_task()->xcp.regs

Issue Encountered
    However, when storing registers, we must ensure that (running_task)->xcp.regs is invalid
so that it can be safely overwritten.
According to the existing logic, the only scenario where (running_task)->xcp.regs
is valid is during restore_context. We must accurately identify this scenario.
Initially, we used the condition (running_task)==NULL for this purpose, but we deemed
this approach unsatisfactory as it did not align well with the actual logic.
(running_task) should not be NULL. Consequently, we adopted other arch-specific methods for judgment,
but due to special logic in some arch, the judgment was not accurate, leading to this issue.

Solution:
    For armv6-m, we haven't found a more suitable solution, so we are sticking with (*running_task)==NULL.
    For armv7-m/armv8-m, by removing support for primask, we can achieve accurate judgment.

    PRIMASK is a design in armv6-m, that's why arm introduce BASEPRI from armv7-m.
It's wrong to provide this option for armv7-m/armv8-m arch.

Signed-off-by: hujun5 <hujun5@xiaomi.com>
2024-12-09 12:20:13 +08:00
..
hardware arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
sdc arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
.gitignore arch/nrf52/.gitignore: clean up after SoftDevice update 2023-03-04 22:33:53 +08:00
chip.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
CMakeLists.txt arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
Kconfig armv7/8m: fix regresion from https://github.com/apache/nuttx/pull/14881 2024-12-09 12:20:13 +08:00
Make.defs arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_adc.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_adc.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_allocateheap.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_clockconfig.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_clockconfig.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_config.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_flash.c nrf52: add MCUboot support 2023-05-31 10:44:08 +08:00
nrf52_gpio.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_gpio.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_gpiote.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_gpiote.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_i2c.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_i2c.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_i2c_bitbang.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_i2c_bitbang.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_idle.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_ieee802154.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_ieee802154_priv.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_ieee802154_radio.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_ieee802154_radio.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_ieee802154_rtc.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_ieee802154_rtc.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_ieee802154_tim.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_ieee802154_tim.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_ieee802154_trace.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_ieee802154_trace.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_irq.c armv7/8m: fix regresion from https://github.com/apache/nuttx/pull/14881 2024-12-09 12:20:13 +08:00
nrf52_irq.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_lowputc.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_lowputc.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_nvmc.c arch/nrf52: reimplement I-Cache control operations in nrf52_start.c 2023-04-22 01:42:01 +08:00
nrf52_nvmc.h arch/nrf52: reimplement I-Cache control operations in nrf52_start.c 2023-04-22 01:42:01 +08:00
nrf52_pminitialize.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_ppi.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_ppi.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_pwm.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_pwm.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_qspi.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_qspi.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_radio.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_radio.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_radio_ieee802154.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_rng.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_rtc.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_rtc.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_sdc.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_sdc.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_serial.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_serial.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_spi.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_spi.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_start.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_start.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_systick.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_tickless_rtc.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_tim.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_tim.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_tim_lowerhalf.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_tim_lowerhalf.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_uid.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_uid.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_usbd.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_usbd.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_utils.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_wdt.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_wdt.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_wdt_lowerhalf.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52_wdt_lowerhalf.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
nrf52832_errdata.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00