arch:Mark key functions to prohibit instrumentation to prevent recursive calls
Signed-off-by: anjiahao <anjiahao@xiaomi.com>
This commit is contained in:
parent
d932e0af2a
commit
94d449e722
10 changed files with 27 additions and 21 deletions
|
@ -350,7 +350,7 @@ static inline irqstate_t irqstate(void)
|
|||
|
||||
/* Disable IRQs and return the previous IRQ state */
|
||||
|
||||
static inline irqstate_t up_irq_save(void)
|
||||
noinstrument_function static inline irqstate_t up_irq_save(void)
|
||||
{
|
||||
unsigned int cpsr;
|
||||
|
||||
|
@ -392,7 +392,7 @@ static inline irqstate_t up_irq_enable(void)
|
|||
|
||||
/* Restore saved IRQ & FIQ state */
|
||||
|
||||
static inline void up_irq_restore(irqstate_t flags)
|
||||
noinstrument_function static inline void up_irq_restore(irqstate_t flags)
|
||||
{
|
||||
__asm__ __volatile__
|
||||
(
|
||||
|
|
|
@ -394,7 +394,8 @@ static inline void up_irq_disable(void)
|
|||
|
||||
/* Save the current primask state & disable IRQs */
|
||||
|
||||
static inline irqstate_t up_irq_save(void) always_inline_function;
|
||||
static inline irqstate_t up_irq_save(void)
|
||||
always_inline_function noinstrument_function;
|
||||
static inline irqstate_t up_irq_save(void)
|
||||
{
|
||||
#ifdef CONFIG_ARMV7M_USEBASEPRI
|
||||
|
@ -437,7 +438,8 @@ static inline void up_irq_enable(void)
|
|||
|
||||
/* Restore saved primask state */
|
||||
|
||||
static inline void up_irq_restore(irqstate_t flags) always_inline_function;
|
||||
static inline void up_irq_restore(irqstate_t flags)
|
||||
always_inline_function noinstrument_function;
|
||||
static inline void up_irq_restore(irqstate_t flags)
|
||||
{
|
||||
#ifdef CONFIG_ARMV7M_USEBASEPRI
|
||||
|
|
|
@ -367,7 +367,8 @@ static inline void up_irq_disable(void)
|
|||
|
||||
/* Save the current primask state & disable IRQs */
|
||||
|
||||
static inline irqstate_t up_irq_save(void) always_inline_function;
|
||||
static inline irqstate_t up_irq_save(void)
|
||||
always_inline_function noinstrument_function;
|
||||
static inline irqstate_t up_irq_save(void)
|
||||
{
|
||||
#ifdef CONFIG_ARMV8M_USEBASEPRI
|
||||
|
@ -410,7 +411,8 @@ static inline void up_irq_enable(void)
|
|||
|
||||
/* Restore saved primask state */
|
||||
|
||||
static inline void up_irq_restore(irqstate_t flags) always_inline_function;
|
||||
static inline void up_irq_restore(irqstate_t flags)
|
||||
always_inline_function noinstrument_function;
|
||||
static inline void up_irq_restore(irqstate_t flags)
|
||||
{
|
||||
#ifdef CONFIG_ARMV8M_USEBASEPRI
|
||||
|
|
|
@ -116,7 +116,7 @@ EXTERN volatile uint32_t *g_current_regs[CONFIG_SMP_NCPUS];
|
|||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
int up_cpu_index(void);
|
||||
int up_cpu_index(void) noinstrument_function;
|
||||
#else
|
||||
# define up_cpu_index() (0)
|
||||
#endif
|
||||
|
@ -134,6 +134,7 @@ int up_cpu_index(void);
|
|||
*
|
||||
****************************************************************************/
|
||||
|
||||
noinstrument_function
|
||||
static inline bool up_interrupt_context(void)
|
||||
{
|
||||
#ifdef CONFIG_SMP
|
||||
|
|
|
@ -463,6 +463,7 @@ static inline unsigned int cp15_rdid(void)
|
|||
|
||||
/* Get the Multiprocessor Affinity Register (MPIDR) */
|
||||
|
||||
noinstrument_function
|
||||
static inline unsigned int cp15_rdmpidr(void)
|
||||
{
|
||||
return CP15_GET(MPIDR);
|
||||
|
|
|
@ -680,7 +680,7 @@ int up_cpu_index(void);
|
|||
*
|
||||
****************************************************************************/
|
||||
|
||||
static inline irqstate_t up_irq_save(void)
|
||||
noinstrument_function static inline irqstate_t up_irq_save(void)
|
||||
{
|
||||
irqstate_t flags;
|
||||
|
||||
|
@ -709,7 +709,7 @@ static inline irqstate_t up_irq_save(void)
|
|||
*
|
||||
****************************************************************************/
|
||||
|
||||
static inline void up_irq_restore(irqstate_t flags)
|
||||
noinstrument_function static inline void up_irq_restore(irqstate_t flags)
|
||||
{
|
||||
__asm__ __volatile__
|
||||
(
|
||||
|
@ -729,7 +729,7 @@ static inline void up_irq_restore(irqstate_t flags)
|
|||
*
|
||||
****************************************************************************/
|
||||
|
||||
static inline bool up_interrupt_context(void)
|
||||
noinstrument_function static inline bool up_interrupt_context(void)
|
||||
{
|
||||
#ifdef CONFIG_SMP
|
||||
irqstate_t flags = up_irq_save();
|
||||
|
|
|
@ -236,7 +236,7 @@ static inline uint32_t xtensa_getps(void)
|
|||
|
||||
/* Set the value of the PS register */
|
||||
|
||||
static inline void xtensa_setps(uint32_t ps)
|
||||
noinstrument_function static inline void xtensa_setps(uint32_t ps)
|
||||
{
|
||||
__asm__ __volatile__
|
||||
(
|
||||
|
@ -265,7 +265,7 @@ static inline uint32_t up_getsp(void)
|
|||
|
||||
/* Restore the value of the PS register */
|
||||
|
||||
static inline void up_irq_restore(uint32_t ps)
|
||||
noinstrument_function static inline void up_irq_restore(uint32_t ps)
|
||||
{
|
||||
__asm__ __volatile__
|
||||
(
|
||||
|
@ -279,7 +279,7 @@ static inline void up_irq_restore(uint32_t ps)
|
|||
|
||||
/* Disable interrupts and return the previous value of the PS register */
|
||||
|
||||
static inline uint32_t up_irq_save(void)
|
||||
noinstrument_function static inline uint32_t up_irq_save(void)
|
||||
{
|
||||
uint32_t ps;
|
||||
|
||||
|
@ -313,7 +313,7 @@ static inline void up_irq_enable(void)
|
|||
|
||||
/* Disable low- and medium- priority interrupts */
|
||||
|
||||
static inline void up_irq_disable(void)
|
||||
noinstrument_function static inline void up_irq_disable(void)
|
||||
{
|
||||
#ifdef __XTENSA_CALL0_ABI__
|
||||
xtensa_setps(PS_INTLEVEL(XCHAL_EXCM_LEVEL) | PS_UM);
|
||||
|
@ -440,7 +440,7 @@ int up_cpu_index(void);
|
|||
****************************************************************************/
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
static inline bool up_interrupt_context(void)
|
||||
noinstrument_function static inline bool up_interrupt_context(void)
|
||||
{
|
||||
#ifdef CONFIG_SMP
|
||||
irqstate_t flags = up_irq_save();
|
||||
|
|
|
@ -170,7 +170,7 @@ uint32_t g_idlestack[IDLETHREAD_STACKWORDS]
|
|||
*
|
||||
****************************************************************************/
|
||||
|
||||
static void IRAM_ATTR configure_cpu_caches(void)
|
||||
noinstrument_function static void IRAM_ATTR configure_cpu_caches(void)
|
||||
{
|
||||
int s_instr_flash2spiram_off = 0;
|
||||
int s_rodata_flash2spiram_off = 0;
|
||||
|
@ -272,7 +272,7 @@ static void IRAM_ATTR disable_app_cpu(void)
|
|||
*
|
||||
****************************************************************************/
|
||||
|
||||
void noreturn_function IRAM_ATTR __esp32s3_start(void)
|
||||
noinstrument_function void noreturn_function IRAM_ATTR __esp32s3_start(void)
|
||||
{
|
||||
uint32_t sp;
|
||||
|
||||
|
@ -508,7 +508,7 @@ static int map_rom_segments(void)
|
|||
*
|
||||
****************************************************************************/
|
||||
|
||||
void IRAM_ATTR __start(void)
|
||||
noinstrument_function void IRAM_ATTR __start(void)
|
||||
{
|
||||
#ifdef CONFIG_ESP32S3_APP_FORMAT_MCUBOOT
|
||||
if (map_rom_segments() != 0)
|
||||
|
|
|
@ -184,7 +184,7 @@ int irqchain_detach(int irq, xcpt_t isr, FAR void *arg);
|
|||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_IRQCOUNT
|
||||
irqstate_t enter_critical_section(void);
|
||||
irqstate_t enter_critical_section(void) noinstrument_function;
|
||||
#else
|
||||
# define enter_critical_section() up_irq_save()
|
||||
#endif
|
||||
|
@ -214,7 +214,7 @@ irqstate_t enter_critical_section(void);
|
|||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_IRQCOUNT
|
||||
void leave_critical_section(irqstate_t flags);
|
||||
void leave_critical_section(irqstate_t flags) noinstrument_function;
|
||||
#else
|
||||
# define leave_critical_section(f) up_irq_restore(f)
|
||||
#endif
|
||||
|
|
|
@ -381,7 +381,7 @@ void nxsched_suspend(FAR struct tcb_s *tcb);
|
|||
#endif
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
FAR struct tcb_s *this_task(void);
|
||||
FAR struct tcb_s *this_task(void) noinstrument_function;
|
||||
|
||||
int nxsched_select_cpu(cpu_set_t affinity);
|
||||
int nxsched_pause_cpu(FAR struct tcb_s *tcb);
|
||||
|
|
Loading…
Reference in a new issue