arm64: Add macros to manage processor debug state
Add macros to enable and disable to manage PSTATE.D for debugging. The macros local_dbg_save and local_dbg_restore are moved to irqflags.h file KGDB boot tests fail because of PSTATE.D is masked. unmask it for debugging support Signed-off-by: Vijaya Kumar K <Vijaya.Kumar@caviumnetworks.com> Acked-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
This commit is contained in:
Родитель
cfbf8d4857
Коммит
c7db4ff5d2
|
@ -43,23 +43,6 @@ enum debug_el {
|
|||
#ifndef __ASSEMBLY__
|
||||
struct task_struct;
|
||||
|
||||
#define local_dbg_save(flags) \
|
||||
do { \
|
||||
typecheck(unsigned long, flags); \
|
||||
asm volatile( \
|
||||
"mrs %0, daif // local_dbg_save\n" \
|
||||
"msr daifset, #8" \
|
||||
: "=r" (flags) : : "memory"); \
|
||||
} while (0)
|
||||
|
||||
#define local_dbg_restore(flags) \
|
||||
do { \
|
||||
typecheck(unsigned long, flags); \
|
||||
asm volatile( \
|
||||
"msr daif, %0 // local_dbg_restore\n" \
|
||||
: : "r" (flags) : "memory"); \
|
||||
} while (0)
|
||||
|
||||
#define DBG_ARCH_ID_RESERVED 0 /* In case of ptrace ABI updates. */
|
||||
|
||||
#define DBG_HOOK_HANDLED 0
|
||||
|
|
|
@ -90,5 +90,28 @@ static inline int arch_irqs_disabled_flags(unsigned long flags)
|
|||
return flags & PSR_I_BIT;
|
||||
}
|
||||
|
||||
/*
|
||||
* save and restore debug state
|
||||
*/
|
||||
#define local_dbg_save(flags) \
|
||||
do { \
|
||||
typecheck(unsigned long, flags); \
|
||||
asm volatile( \
|
||||
"mrs %0, daif // local_dbg_save\n" \
|
||||
"msr daifset, #8" \
|
||||
: "=r" (flags) : : "memory"); \
|
||||
} while (0)
|
||||
|
||||
#define local_dbg_restore(flags) \
|
||||
do { \
|
||||
typecheck(unsigned long, flags); \
|
||||
asm volatile( \
|
||||
"msr daif, %0 // local_dbg_restore\n" \
|
||||
: : "r" (flags) : "memory"); \
|
||||
} while (0)
|
||||
|
||||
#define local_dbg_enable() asm("msr daifclr, #8" : : : "memory")
|
||||
#define local_dbg_disable() asm("msr daifset, #8" : : : "memory")
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -138,6 +138,7 @@ static void clear_os_lock(void *unused)
|
|||
{
|
||||
asm volatile("msr oslar_el1, %0" : : "r" (0));
|
||||
isb();
|
||||
local_dbg_enable();
|
||||
}
|
||||
|
||||
static int os_lock_notify(struct notifier_block *self,
|
||||
|
|
Загрузка…
Ссылка в новой задаче