mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 11:18:45 +07:00
087d990b37
local_irq_enable() may expand into very different code, so it rather should stay in C. Also this keeps the assembler code size constant which keeps the rollback code simple. So it's best to split r4k_wait into two parts, one C and one assembler. Finally add the local_irq_enable() to r4k_wait to ensure the WAIT instruction in __r4k_wait() will work properly. Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
24 lines
511 B
C
24 lines
511 B
C
#ifndef __ASM_IDLE_H
|
|
#define __ASM_IDLE_H
|
|
|
|
#include <linux/linkage.h>
|
|
|
|
extern void (*cpu_wait)(void);
|
|
extern void r4k_wait(void);
|
|
extern asmlinkage void __r4k_wait(void);
|
|
extern void r4k_wait_irqoff(void);
|
|
extern void __pastwait(void);
|
|
|
|
static inline int using_rollback_handler(void)
|
|
{
|
|
return cpu_wait == r4k_wait;
|
|
}
|
|
|
|
static inline int address_is_in_r4k_wait_irqoff(unsigned long addr)
|
|
{
|
|
return addr >= (unsigned long)r4k_wait_irqoff &&
|
|
addr < (unsigned long)__pastwait;
|
|
}
|
|
|
|
#endif /* __ASM_IDLE_H */
|